]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
changed mpdf with tcpdf
authortcit <tcit@tcit.fr>
Sat, 27 Sep 2014 17:34:17 +0000 (19:34 +0200)
committertcit <tcit@tcit.fr>
Sat, 27 Sep 2014 17:34:17 +0000 (19:34 +0200)
125 files changed:
inc/3rdparty/libraries/mpdf/CHANGELOG.txt [deleted file]
inc/3rdparty/libraries/mpdf/CREDITS.txt [deleted file]
inc/3rdparty/libraries/mpdf/FONT INFO.txt [deleted file]
inc/3rdparty/libraries/mpdf/LICENSE.txt [deleted file]
inc/3rdparty/libraries/mpdf/README.txt [deleted file]
inc/3rdparty/libraries/mpdf/classes/bmp.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/cssmgr.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/directw.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/form.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/gif.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/grad.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/indic.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/meter.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/svg.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/tocontents.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php [deleted file]
inc/3rdparty/libraries/mpdf/classes/wmf.php [deleted file]
inc/3rdparty/libraries/mpdf/compress.php [deleted file]
inc/3rdparty/libraries/mpdf/config.php [deleted file]
inc/3rdparty/libraries/mpdf/config_cp.php [deleted file]
inc/3rdparty/libraries/mpdf/config_fonts.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ccourier.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ccourierb.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ccourierbi.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ccourieri.php [deleted file]
inc/3rdparty/libraries/mpdf/font/chelvetica.php [deleted file]
inc/3rdparty/libraries/mpdf/font/chelveticab.php [deleted file]
inc/3rdparty/libraries/mpdf/font/chelveticabi.php [deleted file]
inc/3rdparty/libraries/mpdf/font/chelveticai.php [deleted file]
inc/3rdparty/libraries/mpdf/font/csymbol.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ctimes.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ctimesb.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ctimesbi.php [deleted file]
inc/3rdparty/libraries/mpdf/font/ctimesi.php [deleted file]
inc/3rdparty/libraries/mpdf/font/czapfdingbats.php [deleted file]
inc/3rdparty/libraries/mpdf/graph.php [deleted file]
inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt [deleted file]
inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc [deleted file]
inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc [deleted file]
inc/3rdparty/libraries/mpdf/includes/CJKdata.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/functions.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/no_image.jpg [deleted file]
inc/3rdparty/libraries/mpdf/includes/out.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/subs_core.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php [deleted file]
inc/3rdparty/libraries/mpdf/includes/upperCase.php [deleted file]
inc/3rdparty/libraries/mpdf/mpdf.css [deleted file]
inc/3rdparty/libraries/mpdf/mpdf.php [deleted file]
inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php [deleted file]
inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php [deleted file]
inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php [deleted file]
inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php [deleted file]
inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/NOTES.txt [deleted file]
inc/3rdparty/libraries/mpdf/patterns/de.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/dictionary.txt [deleted file]
inc/3rdparty/libraries/mpdf/patterns/en.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/es.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/fi.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/fr.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/it.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/nl.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/pl.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/ru.php [deleted file]
inc/3rdparty/libraries/mpdf/patterns/sv.php [deleted file]
inc/3rdparty/libraries/mpdf/progbar.css [deleted file]
inc/3rdparty/libraries/mpdf/tmp/dummy.txt [deleted file]
inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt [deleted file]
inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt [deleted file]
inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php [deleted file]
inc/3rdparty/libraries/mpdf/utils/font_collections.php [deleted file]
inc/3rdparty/libraries/mpdf/utils/font_coverage.php [deleted file]
inc/3rdparty/libraries/mpdf/utils/font_dump.php [deleted file]
inc/3rdparty/libraries/mpdf/utils/font_names.php [deleted file]
inc/3rdparty/libraries/mpdf/utils/index.php [deleted file]
inc/3rdparty/libraries/tcpdf/CHANGELOG.TXT [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/LICENSE.TXT [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/README.TXT [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/composer.json [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/config/tcpdf_config.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/courier.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/courierb.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/courierbi.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/courieri.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/helvetica.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/helveticab.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/helveticabi.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/helveticai.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/symbol.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/times.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/timesb.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/timesbi.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/timesi.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/fonts/zapfdingbats.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/sRGB.icc [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tcpdf.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tcpdf_autoconfig.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_1d.php [moved from inc/3rdparty/libraries/mpdf/classes/barcode.php with 53% similarity]
inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_2d.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tcpdf_import.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tcpdf_parser.php [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tools/.htaccess [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tools/convert_fonts_examples.txt [new file with mode: 0644]
inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php [new file with mode: 0755]
inc/poche/WallabagEBooks.class.php
inc/poche/global.inc.php

diff --git a/inc/3rdparty/libraries/mpdf/CHANGELOG.txt b/inc/3rdparty/libraries/mpdf/CHANGELOG.txt
deleted file mode 100644 (file)
index 2e6a5f8..0000000
+++ /dev/null
@@ -1,2895 +0,0 @@
-===========================
-mPDF 5.7
-14/07/2013
-===========================
-
-Files changed
--------------
-config.php
-mpdf.php
-classes/tocontents.php
-classes/cssmgr.php
-classes/svg.php
-includes/functions.php
-includes/out.php
-examples/formsubmit.php [Important - Security update]
-
-Updated Example Files in /examples/
------------------------------------
-All example files
-mpdfstyleA4.css
-
-
-config.php
-----------
-Removed:
-       $this->hyphenateTables
-       $this->hyphenate
-       $this->orphansAllowed
-Edited: 
-       "hyphens: manual" - Added to $this->defaultCSS
-       $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB'
-New: 
-       $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
-       $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
-       $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
-       $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script)
-
-
-Backwards compatability
------------------------
-Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences:
-1) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever 
-       you previously used $mpdf->hyphenate=true;
-2) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get:
-       - No indent (previous default of 5mm) - ($tocindent is ignored)
-       - Any font, font-size set ($tocfont or $tocfontsize) will not work
-       - HyperLinks will appear with your default appearance - usually blue and underlined
-       - line spacing will be narrower (can use line-height or margin-top in CSS)
-
-
-New features / Improvements
----------------------------
-Layout of Table of Content ToC now controlled using CSS styles
-Text alignment on decimal mark inside tables
-Automatically generated bookmarks and/or ToC entries from H1 - H6 tags
-Support for unit of "rem" as size e.g. font-size: 1rem;
-Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip
-Text-outline controlled by CSS (compatible with CSS3 spec.)
-Use of <dottab> enhanced by custom CSS "outdent" property
-Image HTML attributes <img> added: max-height, max-width, min-height and min-width 
-Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9);
-Lists - added support for "start" attribute in <ol> e.g. <ol start="5">
-Hyphenation controlled using CSS, consistent with CSS3 spec.
-Line breaking improved to avoid breaks within words where HTML tags are used e.g. H<sub>2<sub>0
-Line breaking in CJK scripts improved (and ability to force hanging punctuation)
-Numerals in a CJK script are kept together
-RTL improved support for phrases containing numerals and \ and /
-Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A,
-       U+202C POP DIRECTIONAL FORMATTING (PDF)
-Support for <base href=""> in HTML - uses it to SetBasePath for relative URLs.
-HTML tag - added support for <wbr> or <wbr /> - converted to a soft-hyphen
-CSS now takes precedence over HTML attribute e.g. <table bgcolor="black" style="background-color:yellow">
-
-
-
-Added CSS support
------------------
-- max-height, max-width, min-height and min-width for images <img>
-- "hyphens: none|manual|auto" as per CSS3 spec.
-- Decimal mark alignment e.g. text-align: "." center;
-- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem
-- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported)
-- background-origin, background-size, background-clip are now supported everywhere except in tables
-- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. <span>
-- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec)
-- "z-index" can be used to utilise layers in the PDF document
-- Custom CSS property added: "outdent" - opposite of indent
-
-The HTML elements <dottab> and <textcircle> can now have CSS properties applied to them.
-
-
-Bug fixes
----------
-- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E)
-- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop
-- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced
-- Tables - Warning notice now given in Table footer or header if <tfoot> placed after <tbody> and table spans page
-- Columns - block with border-width wider than the length of the border line, line overflows
-- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed
-- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border.
-- TOCpagebreakByArray() when called by function was not adding the pagebreak
-- Border around block element - dashed not showing correctly (not resetting linewidth between different edges)
-- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double
-- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed
-- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser
-       [Inadvertently improves borders in Columns because of change in LineCap]
-- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed
-- Page numbering - Page number total {nbpg} incorrect  - e.g. showing decreasing numbers through document, when ToC present
-- RTL numerals - incorrectly reversing a number followed by a comma
-- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts
-- TOCpagebreak - Not setting TOC-FOOTER
-- TOCpagebreak - toc-even-header-name etc. not working
-- Parsing some relative URLs incorrectly
-- Textcircle - when moved to next page by "page-break-inside: avoid"
-- Bookmarks will now work if jump more than one level e.g. 0,2,1  Inserts a new blank entry at level 1
-- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two /
-- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1)
-- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1)
-- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1)
-- <dottab> fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL
-- Table {colsum} summed figures in table header
-- list-style-type (custom) colour not working
-- <tocpagebreak> toc-preHTML and toc-postHTML can now contain quotes
-
-
-
-===========================
-mPDF 5.6
-20/01/2013
-===========================
-
-Files changed
--------------
-mpdf.php
-config.php
-includes/functions.php
-classes/meter.php
-classes/directw.php
-
-
-config.php changes
-------------------
-$this->allowedCSStags - added HTML5 tags + textcircle AND
-$this->outerblocktags - added HTML5 tags
-$this->defaultCSS  - added default CSS properties
-
-
-New features / Improvements
----------------------------
-CSS support added for for min-height, min-width, max-height and max-width in <img>
-
-Images embedded in CSS
-       <img src="data:image/gif;base64,...."> improved to make it more robust, and
-       background: url(data:image... now added to work
-
-HTML5 tags supported
-- as generic block elements: <article><aside><details><figure><figcaption><footer><header><hgroup><nav><section><summary>
-- as in-line elements: <mark><time><meter><progress>
-- <mark> has a default CSS set in config.php to yellow highlight
-- <meter> and <progress> support attributes as for HTML5
-- custom appearances for <meter> and <progress> can be made by editing classes/meter.php file
-- <meter> and <progress> suppress text inside the tags
-
-Textcircle/Circular
-font: "auto" added: automatically sizes text to fill semicircle (if both set) or full circle (if only one set)
-       NB for this AND ALL CSS on <textcircle>: does not inherit CSS styles
-attribute: divider="[characters including HTML entities]" added
-<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular"
-       divider="&nbsp;&bull;&nbsp;" style="font-size: auto" />
-
-&raquo; &rsquo; &sbquo; &bdquo; are now included in "orphan"-management at the end of lines
-
-Improved CJK line wrapping (if CJK character at end of line, breaks there rather than previous wordspace)
-
-NB mPDF 5.5 added support for <fieldset> and <legend> (omitted from ChangeLog)
-
-Bug fixes
----------
-- embedded fonts: Panose string incorrectly output as decimals - changed to hexadecimal
-       Only a problem in limited circumstances.
-       *****Need to delete all ttfontdata/ files in order for fix to have effect. 
-- <textCircle> background white even when set to none/transparent
-- border="0" causing mPDF to add border to table CELLS as well as table
-- iteration counter in THEAD crashed in some circumstances
-- CSS color now supports spaces in the rgb() format e.g. border: 1px solid rgb(170, 170, 170);
-- CJK not working in table following changes made in v5.4
-- images fixed to work with Google Chart API (now mPDF does not urldecode the query part of the src)
-- CSS <style> within HTML page crashed if CSS is too large  (? > 32Kb)
-- SVG image nested int eht HTML failed to show if code too large (? > 32Kb)
-- cyrillic character p &#1088; at end of table cell caused cell height to be incorrectly calculated
-
-
-===========================
-mPDF 5.5
-02/03/2012
-===========================
-
-Files changed
--------------
-mpdf.php
-classes/ttfontsuni.php
-classes/svg.php
-classes/tocontents.php
-config.php
-config_fonts.php
-utils/font_collections.php
-utils/font_coverage.php
-utils/font_dump.php
-
-Files added
------------
-classes/ttfontsuni_analysis.php
-
-config.php changes
-------------------
-To avoid just the border/background-color of the (empty) end of a block being moved on to next page (</div></div>)
-$this->margBuffer = 0;         // Allow an (empty) end of block to extend beyond the bottom margin by this amount (mm)
-
-config_fonts.php changes
-------------------------
-Added to (arabic) fonts to allow "use non-mapped Arabic Glyphs" e.g. for Pashto
-       'unAGlyphs' => true,
-
-Arabic text
------------
-Arabic text (RTL) rewritten with improved support for Pashto/Sindhi/Urdu/Kurdish
-       Presentation forms added:
-       U+0649, U+0681, U+0682, U+0685, U+069A-U+069E, U+06A0, U+06A2, U+06A3, U+06A5, U+06AB-U+06AE, 
-       U+06B0-U+06B4, U+06B5-U+06B9, U+06BB, U+06BC, U+06BE, U+06BF, U+06C0, U+06CD, U+06CE, U+06D1, U+06D3, U+0678
-       Joining improved:
-       U+0672, U+0675, U+0676, U+0677, U+0679-U+067D, U+067F, U+0680, U+0683, U+0684, U+0687, U+0687, U+0688-U+0692, 
-       U+0694, U+0695, U+0697, U+0699, U+068F, U+06A1, U+06A4, U+06A6, U+06A7, U+06A8, U+06AA, U+06BA, U+06C2-U+06CB, U+06CF
-
-Note -
-Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters.
-However, some fonts include these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).
-       'unAGlyphs' => true,
-added to the config_fonts.php file for appropriate fonts will
-
-This requires the font file to include a Format 2.0 POST table which references the glyphs as e.g. uni067C.med or uni067C.medi:
-       e.g. XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS)
-NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med"
-       - if it exists, it may work!
-Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).
-
-mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use
-       if the font already utilises these codes (unlikely).
-
-mPDF now deletes U+200C,U+200D,U+200E,U+200F zero-widthjoiner/non-joiner, LTR and RTL marks so they will not appear
-       even though some fonts contain glyphs for these characters.
-
-
-Other New features / Improvements
----------------------------------
-Avoid just the border/background-color of the (empty) end of a block being moved on to next page (</div></div>)
-       using configurable variable: $this->margBuffer;
-
-
-The TTFontsUni class contained a long function (extractcoreinfo) which is not used routinely in mPDF
-       This has been moved to a new file: classes/ttfontsuni_analysis.php
-       The 3 utility scripts have been updated to use the new extended class:
-       - utils/font_collections.php
-       - utils/font_coverage.php
-       - utils/font_dump.php
-
-
-Bug fixes
----------
-- Border & background when closing 2 blocks (e.g. </div></div>) incorrectly being moved to next page because incorrectly
-       calculating how much space required
-- Fixed/Absolute-positioned elements not inheriting letter-spacing style
-- Rotated cell - error if text-rotate set on a table cell, but no text content in cell
-- SVG images, text-anchor not working
-- Nested table - not resetting cell style (font, color etc) after nested table, if text follows immediately
-- Nested table - font-size 70% set in extenal style sheet; if repeated nested tables, sets 70% of 70% etc etc
-- SVG setting font-size as percent on successive <text> elements gives progressively smaller text
-- mPDF will check if magic_quotes_runtime set ON even >= PHP 5.3 (will now cause an error message)
-- not resetting after 2 nested tags of same type e.g. <b><b>bold</b></b> still bold
-- When using charset_in other than utf-8, HTML Footers using tags e.g. <htmlpageheader> do not decode correctly
-- ToC if nested > 3 levels, line spacing reduces and starts to overlap
-
-
-
-
-===========================
-mPDF 5.4
-14/02/2012
-===========================
-Files changed
--------------
-mpdf.php
-config.php
-compress.php
-classes/ttfontsuni.php
-classes/barcode.php
-classes/indic.php
-classes/svg.php
-examples/show_code.php -----  SECURITY RISK**
-examples/example49_changelog.php
-examples/example57_new_mPDF_v5-3_active_forms_b (replace example57_new_mPDF_v5-3_active_forms)
-includes/out.php
-mpdfi/fpdi_pdf_parser.php
-
-Files added
------------
-classes/bmp.php
-classes/directw.php
-classes/form.php
-classes/grad.php
-classes/tocontents.php
-classes/wmf.php
-examples/example58_new_mPDF_v5-4_features
-
-config.php changes
-------------------
-Edited: $this->allowedCSStags, $this->innerblocktags, $this->defaultCSS;  (CAPTION added in each case)
-Moved: Numerous $form_.. variables are now in /classes/form.php
-
-New config variables 
---------------------
-$this->bookmarkStyles = array();
-$this->cacheTables = true;
-       
-New methods
------------
-function CircularText()
-function SetVisibility()
-
-New/Extended CSS
-----------------
-box-shadow (block elements - does NOT support "inset")
-text-shadow (all text elements - does NOT support "blur")
-visibility: visible|hidden|printonly|screenonly (block-level elements and images IMG only)
-text-transform: capitalize|uppercase|lowercase (extended to support TD/TH)
-tr|td|th:nth-child(odd|even|2n+1)
-color, strikethrough, underline and background-color (extended to support rotated TD/TH)
-underline and strike-through (extended to support TD/TH)
-underline (line colour)  (extended to work correctly in watermark)
-page-break-after: left|right|always (block elements and tables)
-       NB respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
-background[-color]: extended to support rgba|cmyka|cmyk|hsla|hsl|spot
-border(extended to support inline elements)
-
-
-New HTML
---------
-<caption>
-<textcircle />
-
-
-New features / Improvements
----------------------------
-Tables - Zebra Stripes
-Tables: overlapping rowspans (partially) supported
-Tables - Disk caching
-Using progress bars (or $showStats) now reports 'real' memory usage i.e. get_memory_usage(true)
-Support for query string in the URLs for external stylesheets e.g. @import url("style.css?ltcyy7");
-Table caption partially supported
-CircularText
-BookMark styling
-Spread tables i.e. can split table (columns) across several pages width.
-Can use chelvetica, ctimes and ccourier to specify core fonts in a non-core font document
-Spread tables i.e. can split table (columns) across several pages width.
-{colsum} in <tfoot> cell will insert a column total per page.
-SVG embedded as island in HTML supported
-Active Forms
-       textarea and input (text types) now accept javascript as:
-       onKeystroke, onValidate, onCalculate and onFormat
-       onChange is depracated but works as onCalculate (for textarea and input)
-       (PS Select still accepts onChange cf. 5.3.37)
-Ledger and Tabloid added as page formats recognised. NB Ledger is same as tabloid but landscape. In mPDF, both give the same size (portrait)
-so need to add -L e.g. Ledger-L for landscape.
-
-
-Internal script changes
------------------------
-Changed this->k to _MPDFK throughout all scripts
-Changes to color (packed binary data in string rather than array) to reduce memory usage esp in tables
-Internal variables Removed
-       $usetableheader;
-       $tableheadernrows;
-       $tablefooternrows;
-vars $ChangePage, $p_bottom_border, $img_margin_top(+) $issetcolor + other similar  removed
-
-Removed a whole load of // comments
-Updates to remove some more Warning Notices (not all marked in text)
-Border set on TR - changed so set on each cell, rather than retrospectively at end of TR
-All references to table['text'] removed as not needed - uses ['textbuffer'] instead
-OpenTag(TD) changes to reduce memory usage with tables
-Includes different method to set a default timezone
-fn _smallCaps does not need (undefined) $space
-this->chrs and this->ords replaced by chr() and ord()
-Headers in out.php updated to match those used in Output()
-Change to SetFont() to improve performance time
-Change to GetStringWidth() to improve performance time
-Corrected copying of Glyphs 0,1,2, to all subset fonts (non-SMP/SIP), and only setting 32->127 in subset
-Subset fonts (non-SMP/SIP) have additionally Unicode CMap tables (0,0,4 and 0,3,4) as well as Microsoft (3,1,4)
-Subset fonts (SMP/SIP) have CMap tables (1,0,6 and 3,0,4) - rather than 1,0,6 and 3,0,6
-Subset fonts (SMP/SIP) have 'name' table changed to give 1,0 and 3,0. As it is a symbol font (not Unicode encoded) :
-       needs to have a name entry in 3,0 (e.g. symbol) - original font will have 3,1 (i.e. Unicode)
-Automatically checks for HTML code length > 100000 characters and gives error warning if
-        PHP < 5.2.0 (as not configurable) or increases pcre.backtrack_limit if PHP < 5.3.7
-
-Removed/Depracated
-------------------
-function UseTableHeader($opt=true)     fn removed / depracated
-function UsePRE($opt=true) removed
-$attr['REPEAT_HEADER'] == true         CSS removed / depracated
-$this->usepre=true; removed / depracated as never needed - always respects PRE whitespace
-
-ToC: NB Values can no longer be set directly e.g. as in example
-       $mpdf->TOCheader = array();     // array as for setting header/footer
-       $mpdf->TOCfooter = array();     // array as for setting header/footer
-       $mpdf->TOCpreHTML = '<h2>Contents - Portrait</h2>';     // HTML text to appear before table of contents
-       $mpdf->TOCpostHTML = '';        // HTML text to appear after table of contents
-       $mpdf->TOCbookmarkText = 'Content list';        // Text as it will appear in the Bookmarks (leave blank for none)
-Need to use TOCpagebreak either direct (or array version) or as HTML
-OR if absolutley necessary, could use:
-       $mpdf->tocontents->TOCheader = array(); // array as for setting header/footer
-       $mpdf->tocontents->TOCfooter = array(); // array as for setting header/footer
-       $mpdf->tocontents->TOCpreHTML = '<h2>Contents - Portrait</h2>'; // HTML text to appear before table of contents
-       $mpdf->tocontents->TOCpostHTML = '';    // HTML text to appear after table of contents
-       $mpdf->tocontents->TOCbookmarkText = 'Content list';    // Text as it will appear in the Bookmarks (leave blank for none)
-
-
-
-Further Details
-===============
-
-CSS border on inline elements
------------------------------
-Support for CSS border (and variants) on inline elements e.g. <span style="border-bottom: 1px dashed #000000;">
-Border styles solid|dotted|dashed|double only are supported. Border radius not supported.
-Nested inline elements will have repeat left|right borders on the nested content (unlike browsers)
-
-Tables - Zebra Stripes
-----------------------
-TABLE - striped rows cf. http://dev.opera.com/articles/view/zebra-striping-tables-with-css3/
-tr:nth-child(odd) { background-color: #99ff99; }
-thead tr:nth-child(3n+2) { background-color: #FFBBFF; }
-td:nth-child(2n+1) { background-color: #BBBBFF; }
-table.zebraTable td:nth-child(2n+1) { background-color: #BBBBFF; }
-table.zebraTable th:nth-child(2n+1) { background-color: #BBBBFF; }
-
-NB mPDF does NOT correctly apply specificity to all CSS
-table.zebra tbody tr:nth-child(2n+1) td { background-color: #FFFFBB; }
-table.zebra tbody td:nth-child(odd) { background-color: #BBBBFF; }
-
-should make every odd row yellow, and every odd coloumn blue, but with the row/yellow overriding the column/blue.
-In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using
-table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: #FFFFBB; }
-
-(The :nth-child(1n+0) selector just selects every td cell.)
-
-
-
-Tables - Disk caching
----------------------
-TABLES: using disk caching
-// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased 
-// executon time and disk access (read and write)
-$this->cacheTables = true;
-NB             $this->packTableData will be overridden to => true;     // required for cacheTables
-               $this->simpleTables will be overridden to => false;  // Cannot co-exist with cacheTables
-
-
-Table caption
--------------
-Must come immediately after <table...>
-CSS caption-side and HTML align attribute of top|bottom supported (not attribute left|right)
-Handled as a separate block element brought outside the table, so:
-       CSS will not cascade correctly on the table
-       width of caption block is that of page or of the block element containing the table
-       so alignment will be to the page-width not the table width
-       if table page-break-after: always, the caption will follow the pagebreak.
-This does work:
-<style>
-.tablecaption { caption-side: bottom; text-align: left; font-weight: bold; color: green; }
-</style>
-...
-<table>
-<caption class="tablecaption">Caption title here</caption>
-<tbody>
-
-CSS visibility: printonly, screenonly
--------------------------------------
-Roughly based on CSS
-
-Works on Block elements P, DIV etc, or Image
-Cannot nest / layer.
-Inner blocks/image with set visibility are ignored if already set on enclosing block element.
-(Block element) does not work inside table (image does)
-So 'visible' does nothing but is set as default
-(NB Changes output to PDF version 1.5)
-Incompatible with PDFA / PDFX
-
-'visibility'
-    Value:     visible | hidden | (collapse | inherit)
-    Initial:   visible
-    Applies to:        all elements
-    Inherited:         yes
-
-The 'visibility' property specifies whether the boxes generated by an element are rendered.
-Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether).
-Values have the following meanings:
-
-visible
-    The generated box is visible.
-hidden
-    The generated box is invisible (fully transparent, nothing is drawn), but still affects layout.
-       Furthermore, descendants of the element will be visible if they have 'visibility: visible'.
-collapse | inherit
-    NOT supported in mPDF
-
-CUSTOM:
-printonly | screenonly
-
-
-Added VISIBILITY function
-$mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden'
-(NB Changes output to PDF version 1.5)
-Incompatible with PDFA / PDFX
-
-CircularText
-------------
-function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) {
-x: abscissa of center
-y: ordinate of center
-r: radius of circle
-text: text to be printed
-align: text alignment: top or bottom. Default value: top
-kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed.
-fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed
-
-- now uses Kerning between letters if useKerning == true (set manually see example)
-
-BookMark styling
-----------------
-New configurable variable to control appearance of Bookmarks e.g.
-$this->bookmarkStyles = array(
-       0 => array('color'=> array(0,64,128), 'style'=>'B'),
-       1 => array('color'=> array(128,0,0), 'style'=>''),
-       2 => array('color'=> array(0,128,0), 'style'=>'I'),
-);
-       
-Column sums
------------
-(Also changed some preg_replace to str_replace to improve performance)
-To use: just add {colsum} to any cells of the table footer <tfoot>
-Add a number to specify a fixed number of decimal points e.g. <td>£{colsum2}</td>  will give you £123.40
-The width of the column will be calculated using the actual string {colsum} as a placeholder.
-If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____}
-
-
-Spread tables
--------------
-i.e. can split table (columns) across several pages width.
-CSS <table style="overflow: visible">
-Cannot use with: 
-$this->kwt - ignored
-$this->table_rotate - ignored
-$this->table_keep_together - ignored
-$this->ColActive  - cancels spread tables
-
-Messes up with:
-$mpdf->forcePortraitHeaders = true;
-$mpdf->forcePortraitMargins = true;
-Problems with CJK, and RTL
-
-Will do no resizing of fonts at all.
-Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page
-If table row too high for page will die with error message.
-Will override some specs for width if this creates conflicts
-Recommended to specify absolute value of width on each column.
-
-
-
-
-Bug fixes
-=========
-Dottab - if text after dottab is hyperlinked <a></a> then dots are underlined
-
-page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
-Annotation() function called directly with colorarray(r,g,b)
-
-Added urldecode to _getImage to cope with ../name%20of%20image.jpg
-Added urldecode AND htmlspecials_decode to href in <a> link e.g. https://www.google.com/search?hl=en&amp;q=mpdf&amp;filename=name%20of%20file
-[barcode.php] Allow &nbsp; in C39 codes - will be changed to spaces
-
-<table> inside a <div position:fixed, left:300px;> not calculating table width correctly
-       - leading to either upside down table or error width less than 1 character
-
-Depracated magic_quotes_runtime() in compress.php
-
-DIRECTW included twice in compress.php
-FORMS mark up for compress.php corrected
-
-double backslashes not preserved inside <pre> or <textarea>
-
-font-weight and font-style not recognised in <pageheader>
-
-Progress bars causing corrupt PDF file (out.php) changed fopen from "r" mode to "rb" (binary)
-Target around image - <a href="#internaltarget"><img ... /></a> - not working
-
-SmallCaps in <thead> error
-
-Fonts with "name" table in format 1 not recognised correctly
-Rotated table which does not fit on remaining page, forces a new page even if already at top of page
-
-Locale causing problems - all instances of sprintf() using %.3f changed to %.3F so not locale aware
-
-CSS border radius not implemented on fixed/absolute positioned block element
-
-Background color in rotated table extending way beyond bottom of table
-
-Nested table containing <thead> or <tfoot> was confused with <thead> or <tfoot> of parent table
-
-Correct handling of spaces, < or & in textarea
-
-<option> and <input ..> attributes value/title decoded with fn lesser_entity_decode instead of htmlspecialchars_decode to include &apos;
-
-line width not restored to correct value after "line-through" text in Cell()
-
-Kannada - incorrect positioning of Reph
-
-Forms - In <input> or <option> (select) not correctly handling HTML named entities e.g. &lt; in value or title
-Active forms - &nbsp; as Value or Title incorrectly showing as Euro - PDFDocEncoding fixed
-
-Unicode data in embedded fonts not encrypted when doc encrypted 
-
-Nested block elements which are empty including innermost one, top margin of innermost block was ignored
-
-font-size: xx% inside a block was setting on block's parent font-size
-
-Active forms - radio buttons (removed name from Widget - leave on Radio group)
-       causing problems accessing field for radio buttons
-
-When using simple tables and border-collapse, if table border set, but cell borders not set, should display table border (fixed)
-position:fixed block - if neither top nor bottom nor height specified, was positioned incorrectly (y)
-Leave - if top, bottom, margin-top, margiin-bottom and height are all left unspecified (or auto), will centre vertically
-on the page (specific to mPDF - not consistent with CSS2.1)
-But if any one of them are specified (including e.g. margin-top=0), follows CSS spec, so top is the current "static" position
-
-background-image-opacity=0 not working on BODY or BLOCK
-
-Lists - if LI continues after a nested List, would add as a new LI item (should continue as part of earlier LI item)
-
-fn WriteCell() converts to 'windows-1252' when required
-if multiple calls to mPDF used, cannot redefine function cmp()
-internal link targets <a name="xx" /> in ToC not moved when using: page-break-inside:avoid
-internal link targets <a name="xx" /> not moved when using: columns, page-break-inside:avoid, keep-with-table or table rotate
-
-Active Forms - onChange not working for SELECT (cf. 5.3.25) Example 57 only worked by chance as JS was carried over from Select to Text field
-Bug is fixed, but example file needed updating to onCalculate for the display field.
-
-Table cell: if height set as %, currently sets it as % of page-width; instead this now ignores it.
-
-Bengali letter Khanda Ta (U+09CE) character not recognised; was added in Unicode v4.1 and prior to this, (U+09A4 U+09CD U+200D)
-       so mPDF converts to this string and seems to work.
-
-OCR characters wrong size in barcodes if using different ocr font - fixed
-
-===========================
-mPDF v5.3   (21/07/2011)
-===========================
-
-New Features
-------------
-- Active forms (see on-line manual for details)
-- 128-bit encryption (optional) with additional user-permissions (see on-line manual)
-
-PLEASE READ - Change in Font management
----------------------------------------
-The font name imported from the font and included by mPDF in the PDF file was stripping any '-' in the name.
-This is the PostScript name which is utilised by some PostScript programmes.
-mPDF has been changed to leave the PostScript font name unchanged. In 99% cases no difference will be noted, but
-you MUST delete all the temporary font data files cached in the  /ttfontdata/ folder for this to be effective.
-
-
-Minor changes
--------------
-If @page CSS is used to select a first page with settings different from the default, mPDF did create a blank page
-       then pagebreak to the new @page settings - this has been changed so it now will start with the new page settings.
-
-New function added: DeletePages($start_page, $end_page=-1)  e.g. $mpdf->DeletePages(1);
-       Can be used just before calling Output()
-
-compress.php utility extended to exclude active forms and images-svg
-
-
-Bug fixes
----------
-- list-style-type: (custom version, user-defined bullet) colour change not working if colour is set on the list item line
-- background-image: SVG or WMF images as background-images in tables/tr/cells not working
-- font-weight: bold font not always reset after inline <b>...</b> thus miscalculating width
-- forms (inactive) in 'c' core fonts using unicode characters 127-255 incorrect display in input text and button text
-- form elements (inactive) if in-line with mixed size fonts, error in vertical positioning of text related to box
-- ToC: wrapped lines in ToC not retaining formatting e.g. bold style
-- HTMLHeaders: using setAutoTopMargin="pad"; not correctly setting top margin for first page
-- output headers changed: Content-length not used if server uses output compression
-- embedded font subsets from fonts which contain non-BMP plane 0 characters (incl. e.g. dejavusanscondensed)
-       - causing Adobe Reader to create a CJK encoded font subset internally when loading interactive Forms
-       - Changed so unsets the flag in the subset font to show no non-BMP characters.
-
-
-Configurable variables added (see config.php file):
---------------------------------------------------
-All for Active Forms:
-$this->useActiveForms
-$this->formExportType
-$this->formSubmitNoValueFields
-$this->formSelectDefaultOption
-$this->form_border_color
-$this->form_background_color
-$this->form_border_width
-$this->form_border_style
-$this->form_button_border_color
-$this->form_button_background_color
-$this->form_button_border_width
-$this->form_button_border_style
-$this->form_radio_color
-$this->form_radio_background_color
-
-PLUS: see additional values added to $this->allowedCSStags close to bottom of file - required for Active forms
-
-
-Updated files
--------------
-mpdf.php
-config.php  (NB as well as form stuff at top, 5.2.07 $this->allowedCSStags close to bottom of file)
-compress.php
-classes/ttfontsuni.php
-examples/example57...
-examples/formsubmit.php
-
-
-
-===========================
-mPDF v5.2   (18/06/2011)
-===========================
-
-New Features
-------------------
-Improvements in font handling resulting in clearer display of fonts on screen, and improved compatibility with PostScript drivers
-       (e.g. use with GSView/GhostScript, see below)
-
-CJK line-breaking implemented (roughly) according to rules. Configurable variables allow control of behaviour (except in tables).
-
-Viewer preferences: added options for initial 2 page display where you can specify whether
-       1st page is on left or right (cf. SetDisplayMode).
-
-Custom list-style-type for a list (ul,ol) or a list-item (li) in which you can determine the character and colour of the bullet:
-       list-style-type: U+263Argb(255,0,0); - where U+263A is the Unicode HEX value of the character you want for the bullet 
-       - character MUST be included in the font used for that list item. rgb() bit is optional
-
-
-Bug fixes
----------
-- Fonts: embedding a BMP TTC font (e.g. Cambria) as a full font caused error
-- Table: If cell width set by CSS as %, and page-break-inside avoid requires a new page, was losing the sizing
-- Table: table borders CSS parsing error; if border-width, border-style, border-color set, not inherited correctly
-- Table: Table background image or gradient not working in HTMLHeader/Footer
-- Table: background color set on table (anywhere) will overwrite image/gradient
-- Table Background image/gradient: If left/right margin is set on table, gradient/image set on table is too wide
-- Table: rotated table - height (after first page does not correctly allow for thead i.e. too much)
-- Table: blank <tr></tr> causes error
-- Table/Letter-spacing: If letter-spacing set inside table, not calculating table width correctly, and if oversized, freezes
-- ToC: ToC at top of page (non-mirrored or already ODD) did not reset page_number if told
-- Character subsititutions: characters missed if first element in a $html code e.g. WriteHTML('Not in a tag &#10003;');
-- Kerning: kerning info: if reading font file for first time (or if not cached in ttfontdata/) did not register kerning info
-- Textarea: multiple new lines run into only one newline
-- QRCode - colors wrong because QRcode class only accepts RGB input (hardcoded now to always give black on white)
-- QRCode always producing "Your message here"
-- Columns: if transforming height of column, not always closing transform Q
-- CakePHP compatibility
-- compress.php - error due to markup comments in mpdf.php script file
-
-Backwards compatibility
------------------------
-Changes in mPDF 5.2 are backwards compatible with version 5.1
-Your document fonts may appear slightly different in the PDF viewer because of the changes to embedded font subsets (cf.)
-The new Indic fonts may result in a change in spacing (due to the different character width of the space character from the original font)
-
-PostScript e.g. GSView/GhostScript
-----------------------------------
-A number of errors have been reported when opening mPDF-created PDF files with a PostScript programme. Some of the errors were due to mPDF, 
-but others were due to peculiarities of GSView/GhostScript.
-- Diacritic Characters were not displayed when embedding a font subset
-- Fonts containing SIP/SMP characters (supplementary Unicode planes) caused errors
-- Error with text justification (word-spacing) when embedding a full font can occur in some fonts*
-The first 2 problems should now be fixed in v5.2
-*The error with text justification can be optionally fixed by setting the configurable variable in config.php:
-       $this->repackageTTF = true;
-       When mPDF embeds a full font, it simply embeds the whole original TTF file into the PDF document. For some fonts (containing
-       a GSUB table) this was causing problems. $this->repackageTTF forces mPDF to repackage the original TTF file excluding some of
-       the tables like GSUB.
-(See ADDITIONAL INFO FONTS.txt in downloaded files)
-
-
-Font appearance in PDF viewer
------------------------------
-Font subsetting has been improved to include additional information in the embedded file. Overall the effects are of greater clarity
-when viewing the document on a screen (it will not affect print output), but the changes are dependent on:
-- the original TTF font i.e. the options that the font's author has built into the file
-- the PDF viewer i.e. whether the programme chooses to use the available information
-- the resolution (zoom) of the page you are viewing
-(See ADDITIONAL INFO FONTS.txt in downloaded files)
-
-
-Indic fonts
------------
-A new set of Indic fonts (ind_xx_1_001) is distributed with version 5.2 containing the additional font information as described above.
-In addition, some changes have been made to the ASCII characters in the font from the files previously distributed:
-The original files (Raghu font files) do not contain the characters a-z and A-Z. When the first version indic files were created for mPDF,
-ALL of the ASCII characters (32-127) were inserted/overwritten from DejaVuSansCondensed to make the font more usable.
-In the latest version, only the missing characters are taken from DejaVuSansCondensed, leaving punctuation and numerals from the original
-fonts. This also means that the space character has a different width, and this will cause slight changes to the word spacing in documents.
-(See ADDITIONAL INFO FONTS.txt in downloaded files)
-
-
-CJK line-breaking (text wrapping)
----------------------------------
-CJK (chinese-japanese-korean) text often contains no spaces. mPDF previously has wrapped text whenever a character reached the end of 
-the line. mPDF version 5.2 attempts to follow the line-breaking rules described for each of the languages. Configurable variables 
-allow some control over this behaviour, especially whether to squeeze a character into the space available at the end of a line, or
-whether to allow it to overflow the right margin.
-
-
-Configurable variables (see config.php file):
-----------------------
-Control wrapping of CJK text:
-       $this->allowCJKorphans = true;  // FALSE=always wrap to next line; TRUE=squeeze or overflow
-       $this->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only selected)
-When Embedding full TTF font files, remakes the font file using only core tables
-May improve function with PostScript printers
-       $this->repackageTTF = false; 
-
-Updated files
--------------
-mpdf.php
-compress.php
-utils/font_dump.php
-classes/ttfontsuni.php
-config.php (3 new variables - see above)
-
-All ttfonts/ind_*
-New set of Indic fonts for PostScript compatibilty - and clearer font display 
-
-
-
-===========================
-mPDF v5.1   (27/02/2011)
-===========================
-
-New Features
-------------
-- CSS background (images, colours or gradients) on <TR> and <TABLE>
-- CSS border on <TR> (only in border-collapsed mode)
-- support for Mozilla and CSS3 gradient syntax:
-       -moz-linear-gradient, linear-gradient
-       -moz-radial-gradient, radial-gradient
-       -moz-repeating-linear-gradient, linear-repeating-gradient
-       -moz-repeating-radial-gradient, radial-repeating-gradient
-- expanded support for gradients (including in SVG images):
-       - multiple colour 'stops'
-       - opacity (transparency)
-       - angle and/or position can be specified
-- gradient can be used as an image mask (custom mPDF styles: gradient-mask)
-- image-orientation supported for <IMG> (similar to existing custom mPDF attribute: rotate) [CSS3]
-- image-resolution supported for <IMG> [CSS3]
-- background-image-resolution (custom mPDF CSS-type style) to define resolution of background images
-- improved support for SVG images
-- SVG and WMF images supported in background-image
-- file attachments
-- numeric list-styles added e.g. arabic-indic, bengali, devanagari, persian, thai [CSS3]
-- font kerning supported (inter-character spacing between specific pairs)
-- letter-spacing and word-spacing supported [CSS3]
-- colors supported as rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot()
-- spot colors supported e.g PANTONE 310 EC
-- PDF/X compatible files
-- optionally force use of grayscale, RGB or CMYK colorspace
-- automatic colour conversion for most objects between grayscale, RGB and CMYK
-
-Backwards compatibility
------------------------
-Most changes in mPDF 5.1 are backwards compatible with version 5.0 i.e. your documents should 
-look the same running 5.1   However some changes may alter display from previous versions:
-- RTL (right-to-left) languages - see below
-- bleed margins when using @page CSS - see below
-- Default distance for "cross" from inner margin changed 10->5mm [hardcoded in fn. Footer()]
-- If height set on a block element, will force a new page if set-height will not fit on page
-- If table rotated, 5mm margin at bottom is now reduced to 1mm
-- If image is too big for page and automatically sixed to maximum height of page, 10mm margin at bottom reduced to 1mm
-
-Colours may appear more vibrant
--------------------------------
-Unless specifically set, Adobe Reader uses the RGB colorSpace by default when displaying documents. However
-if an image or gradient using transparency (or alpha channel) is included in the document, Adobe Reader
-automatically sets the default colorSpace to CMYK - which makes the colours look less vibrant/bright on screen.
-mPDF 5.1 now specifies by default a colorSpace RGB for each page, and this will maintain the more
-vibrant colours. This is overridden if you use on of the options to restrict the colorSpace (cf.)
-
-RTL
----
-**** IMPORTANT - PLEASE READ IF USING RTL SCRIPTS ****
-Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause 
-changes to the resulting files if you have previously been using mPDF. The changes have made mPDF
-act more like a browser, respecting the HTML/CSS rules.
-Changes include:
-- the document now has a baseline direction; this determines the 
-       - behaviour of blocks for which text-align has not been specifically set
-       - layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
-       - base direction can be set by any of:
-               - $mpdf->SetDirectionality('rtl');
-               - <html dir="rtl" or style="direction: rtl;">
-               - <body dir="rtl" or style="direction: rtl;">
-       - base direction is an inherited CSS property, so will affect all content, unless...
-- direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using
-       - CSS property < style="direction: rtl;"> 
-       - direction can only be set on the top-level element of nested lists
-       - direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
-       - nested tables CAN have different directions
-- NOTE that block/table margins/paddings are NOT reversed by direction
-       NB mPDF <5.1 reversed the margins/paddings for blocks when RTL set.
-- language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF('ar') ) 
-       no longer affects direction in any way.
-       NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
-- default text-align is now as per CSS spec: "a nameless value which is dependent on direction" 
-       NB default text-align removed in default stylesheet in config.php 
-- once text-align is specified, it is respected and inherited
-       NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
-- the configurable value $rtlcss is depracated, as it is no longer required
-- improved algorithm for dtermining text direction
-       - english word blocks are handled in text reversal as one block i.e. dir="rtl"
-       [arabic text] this will not be reversed [arabic text]
-       - arabic numerals 0-9 handled correctly
-
-Although the control of direction for block elements is now more configurable, the control of 
-text direction (RTL arabic characters) remains fully automatic and unconfigurable. 
-<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.
-       content<span>[arabic text]</span>content
-
-Justified text
---------------
-Text-align: justify - no longer uses configurable variable $jSpacing= C | W | ''
-The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar
-If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing
-for justification on that line - effectively the same as setting letter-spacing:0
-Spacing values have been removed from the config_cp.php configuration file, so the "lang" property 
-(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()).
-When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0
-whenever you use text-align:justify.
-
-
-@page media
------------
-When using @page to create a print publication with page-size less than sheet-size
-- bleed margin is now configurable (also crop- and cross-mark margins)
-- backgrounds/gradients/images now use the bleed box as their "container box"
-- odd-header-name: supports the value "_default" - allows current non-HTML header to remain unchanged
-- marks: crop cross; i.e. both together supported
-- background-image-opacity and background-image-resize now work with @page CSS
-
-
-SVG images - extended support
------------------------------
-- support for spreadMethod property for gradients (repeat and reflect)
-- support for style="font-family; font-size; font-style; font-weight" i.e. inline CSS
-- when viewPort="" and width="" height="" all specified, uses width to set SVG size of a "pixel"
-- support for opacity and multiple "stops" (and colorspace) in gradients
-
-
-
-Minor Enhancements
-------------------
-- support for colors as rgb(87%, 56%, 25%) [used especially in SVG]
-- added option of "NoPrintScaling" in SetDisplayPreferences
-- compress.php - now combines BACKGROUND-IMAGES and GRADIENTS as BACKGROUNDS, and added PROGRESS-BAR
-- table with THEAD row will force a new page if no room for the THEAD AND a row from TBODY
-- Small-Caps now works properly together with text-align justify
-- embedded font subsets restructured (minor) for greater compatibility e.g. with Postscript printers
-- PDF/A will convert everything except grayscale to RGB (by default) or CMYK (optionally)
-
-
-
-
-Bug fixes
----------
-- Display changed to CMYK colour gamut when document contained an object with transparency set.
-       Now will retain RGB colorspace (brighter colours)
-- If using dir="rtl", tables containing nested tables were not properly reversed
-- "text-rotate: 0" set in CSS stylesheet did not 'undo' any text-rotate set on the row (TR)
-- Malayalam - character re-ordering
-- If height set on a block element, was not taking account of padding top/bottom
-- embedded font subsets: error in array of Font Widths fixed
-- <style>..</style> containing /* import url() */ the comments were not ignored
-- If call mPDF class more than once, error using multiple barcodes or gif files because classes not reinstantiated
-- Floating blocks were collapsing bottom/top margins - incorrectly
-- Table: if colspan>1 contents are wider than the width of the included columns, did not increase column width(s) to accommodate
-- Resizing table - script hanging and new page forced when not required (still)
-- If a table style="page-break-inside:avoid" not fit on the page, was adding new page before resizing EVEN IF on a blank page
-- End of 2 blocks (e.g. </div></div>) at very bottom of page, forcing unwanted pagebreak
-- Corrected handling of tags inside <pre>
-- RTL left-aligned text - line ending with <br /> not correctly left-aligned
-- <input type=submit|reset etc name="xxx" e.g. Google button showed as I&039;m feeling lucky
-- Annotations all linked to Page 1 (parent object)
-- Error "division by zero" using columns
-- MultiCell() and Write() [direct writing functions] - miscalculating length of line in non-core fonts (+ other bugs)
-- error if CJK space at end or beginning of line with 0x20 spaces in as well
-
-Configurable variables (see config.php file):
-----------------------
-$this->printers_info
-$this->bleedMargin
-$this->crossMarkMargin
-$this->cropMarkMargin
-$this->cropMarkLength
-$this->nonPrintMargin
-$this->restrictColorSpace
-$this->PDFX
-$this->PDFXauto;
-$this->useKerning
-[$this->rtlcss removed]
-
-Updated files
--------------
-mpdf.php
-config.php
-config_cp.php (removed references to dir - but not essential to update - just redundant information)
-compress.php
-includes/out.php
-includes/functions.php
-classes/svg.php
-classes/ttfontsuni.php
-classes/indic.php
-/font/helvetica*.php and /times*.php
-
-Added CSS support
-=================
-All Block elements including <BODY> <TABLE> <TR>
-------------------------------------------------
-background-image-resolution: normal | [ from-image || <dpi> ] 
-direction: [ rtl | ltr ]       (HTML attribute dir also supported)
-background: [ gradients ]
-background-image: [gradients ]
-
-For [ gradients ] syntax see:
-- Mozilla linear - https://developer.mozilla.org/en/CSS/-moz-linear-gradient
-- Mozilla radial - https://developer.mozilla.org/en/CSS/-moz-radial-gradient
-- Mozilla gradients use - https://developer.mozilla.org/en/Using_gradients
-- CSS3 linear gradients - http://dev.w3.org/csswg/css3-images/#linear-gradients
-- CSS3 radial gradients - http://dev.w3.org/csswg/css3-images/#radial-gradients
-
-
-Almost all elements - block and in-line
----------------------------------------
-font-kerning: auto | normal | none     // need to set $mpdf->useKerning = true;
-letter-spacing: normal | <length>
-word-spacing: normal | <length>
-
-Colours
--------
-Anywhere that color is specified (e.g. color, background-color, borders)
-- rgb(255,255,255)
-- rgba(255,255,255,1)          // last value is transparency (alpha) - between 0-1
-- rgb(100%,100%,100%)
-- hsl(360,100%,100%)           // H: 0-360; S/L: 0-100%; a:0-1
-- hsla(360,100%,100%,1)
-- cmyk(100,100,100,100)                // or 0-100%
-- spot(COLOR NAME, 100%)       // e.g PANTONE 310 EC; use AddSpotColor() to define first
-
-<TR>
-border:
-
-<TABLE> <TR>
-background:
-background-color:
-background-image:
-
-<IMG>
-gradient-mask: [can use any of the gradient syntax]
-image-orientation: <angle>                             - supports deg, rad or grad
-image-resolution: normal | [ from-image || <dpi> ] 
-
-<OL|UL>
-list-style: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya |
-               persian | telugu | thai | urdu | tamil
-
-
-@page
-marks: [ crop || cross ]               - i.e. crop and cross can be used together
-odd-header-name: "_default"            - allows current non-HTML header to remain unchanged
-background-image-opacity: [ 0-1 ]
-background-image-resize: [ 1-6 ]       - see Manual
-
-
-===========================
-mPDF v5.0   (30/09/2010)
-===========================
-
-New Features
-------------
-- Font handling simplified, reads TrueType font files directly
-
-
-Minor Enhancements
-------------------
-- rotation of fixed-position block elements (see example 10 and manual for supported CSS)
-- support for CSS Small-Caps font-variant added
-- utility scripts in /utils/ folder to help font management
-- new simplified functions AddPageByArray() and TOCPageBreakByArray() added
-- progress bar simplified and customisable
-- improved word-wrapping for CJK langauges
-- improved recognition of CJK/Indic/Arabic characters
-- invalid UTF-8 input now outputs a meaningful error by displaying input html with errors marked
-- GIF or PNG images with transparency/interlaced/non-standard compression handled as internal data 
-       if /tmp/ folder is not present or writeable
-- support for <html dir="rtl">
-- support for "display: none" on inline elements
-- annotations supported in fixed-position block elements
-
-
-Bug fixes
----------
-- <br /> preceded by space does not correctly text-align to right
-- zero-width character in middle of line caused line-break (e.g. diacritic or U+200C = ZWNJ)
-- HTML attributes not recognised if spaces e.g. 'src = "..."'
-- Headers changed for output - problem reported on IE8 64-bit using SSL
-- using SetAutoPageBreak(false) used caused unexpected behaviour with table rows at page break
-- (from Beta) incorrect check for temporary font data folder causing errors
-- artificial Bold/Italic not working in table cell when using rotated text
-- allow <dottab> to inherit font color correctly
-- SVG now works with Adobe 7
-- background in header overwriting text
-- vertical text in table header not correctly horizontally positioned when repeated
-- compatibility with PHP >= 4.3 (htmlspecialchars_decode, stripos)
-- updated depracated script PHP 5.3.0 ($string{1} to $string[1], $var =& new Object(), set_magic_quotes_runtime)
-- index (CreateIndex) number string incorrect if arabic(rtl) text anywhere in document
-- MultiCell incorrectly calculate string length/width when using core fonts
-- page-break-inside:avoid - used with non-HTML footer had space inserted for footer height
-- page-break-inside:avoid - error if more than 1 page height but not enough to trigger second pagebreak
-- page-break-inside:avoid - incorrectly layering page backgrounds (headers and content brought forward)
-
-
-Changes from 5.0 Beta
----------------------
-If you are upgrading from the Beta version - you MUST delete all files in the  /ttfontdata/ temporary directory
-- config.php file has been changed (extra CJK characters to recognise CJK blocks)
-- $this->backupSubsFont (in config_fonts.php) optionally now takes an array
-- no need to define 'cjk'=>true or 'sip|smp'=>true in config_fonts.php (ignored; cf. $this->BMPonly)
-- Indic language fonts have been altered to add Latin and Latin-1 Supplement characters
-- progress bars now has an external progbar.css and configurable main heading
-- added initial parameter new mPDF('+aCJK') or '-aCJK' to override default useAdobeCJK at runtime
-- QRCode is not included in main download (but as an extra package)
-
-BACKWARD COMPATIBILITY
-----------------------
-If you have been using earlier versions of mPDF, most scripts should work as before. But note:
-- Arial, Helvetica, Times and Courier are now treated like any other font
-- the whole CSS font string is parsed e.g. style="font-family:'Lucida Grande';" will look for a font 'lucidagrande'
-and not 'lucida'
-
-Configurable variables (see config.php file):
-----------------------
-- $mpdf->useSubstitutionsMB is now depracated, but will work as an alias for $mpdf->useSubstitutions
-The initial parameters e.g. new mPDF('utf-8') have all changed. Old ones may be recognised, or will be ignored.
-- $mpdf->useOnlyCoreFonts is now depracated and is ignored. Use new mPDF('c')
-- $this->use_CJK_only is now depracated and is ignored. See $this->useAdobeCJK and new mPDF('+aCJK') or '-aCJK'
-Control SmallCaps appearance
-- $mpdf->smCapsScale = 0.75;   // Factor of 1 to scale capital letters
-- $mpdf->smCapsStretch = 115;  // % to stretch small caps horizontally
-Customisable Progress bar
-- $mpdf->progbar_heading = 'mPDF file progress';
-- $mpdf->progbar_altHTML = '';
-Control fonts/subsetting
-- $mpdf->maxTTFFilesize = 2000;
-- $mpdf->percentSubset = 30;
-- $mpdf->debugfonts                    // show font errors and warnings
-Replaceable alias
-- $mpdf->iterationCounter = false;     // Allow use of {iteration varname} in THEAD
-
-
-===========================
-mPDF v5.0Beta   (21/07/2010)
-===========================
-
-New features
-------------
-The main change in mPDF v5 is the handling of TTF and TTC fonts directly.
-See README.txt and FONT INFO.txt for more information
-
-
-QR-code (2-dimensional barcode) Added
--------------------------------------
-type="QR"
-Size=1 is an arbitrary 25mm widthxheight. error="L|M|H|Q"
-text="" can be numeric, alphanumeric or binary(?)
-Required whitespace is always included around it
-
-
-Enhancements
-------------
-- progress-bar is simplified (no javascript class)
-- dir="rtl" supported in <html> or <body> tag
-
-Bug fixes
----------
-- artificial Bold/Italic now working in table cells with rotated text
-- "-" is now allowed in a font name e.g. sun-exta
-- <dottab> now inherits font color correctly
-- SVG class bugs fixed (was crashing in Adobe Reader v 7)
-- background color/image in header no longer overwrites the header text
-
-Changed Config variables
-------------------------
-$this->useSubstitutionsMB is depracated
-Character substitution always occurs when using core fonts.
-Use $this->useSubstitutions for all cases.
-
-
-New Configurable variables
---------------------------
-$this->useAdobeCJK = true;             // Uses Adobe CJK fonts for CJK languages
-                       // default TRUE; only set false if you have defined some available fonts that support CJK
-                       // If true this will not stop other CJK fonts if specified by font-family:
-                       // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont()
-
-// Set maximum size of TTF font file to allow non-subsets - in kB
-// Used to avoid e.g. Arial Unicode MS (perhaps used for substituteCharsMB) to ever be fully embedded
-// NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB)
-$this->maxTTFFilesize = 2000;
-
-// If not -s (i.e. forced subset) this value determines whether to subset or not
-// 0 - 100 = percent characters
-// i.e. if ==40, mPDF will embed whole font if >40% characters in that font
-// or embed subset if <40% characters
-// 0 will force whole file to be embedded
-// 100 will force always to subset
-$this->percentSubset = 30;
-
-$this->debugfonts - show errors and warnings for font parsing
-
-Config variables removed
-------------------------
-$this->use_CJK_only
-$this->useOnlyCoreFonts
-
-================================================================================
-
-====
-4.6
-====
-
-mPDF 
-
-files changed:
-mpdf.php
-config.php
-makefonts/makefonts.php
-class/t1asm.php
-class/svg.php
-graph.php
-
-examples_04 (images)
-
-config var added:
-$this->tableMinSizePriority
-
-4.5.015
-Bug fix:
-Complex page with ToC entries ++ (example_ToC_bug4_5_015.php) caused Apache to crash
-AdjustHTML() preg_pattern for matching <hx>... </hx>  <table for keep-together - altered and fixed ? matching 
-Seemed to crash when content="Graph 12" between the <h> - 2 numbers (12) crash, 1 didn't!!!
-
-
-4.5.014
-Bug fix:
-Using TrueType fonts, unused font is not embedded in the PDF doc. This was fine except an error message appeared after printing in Adobe Reader,
-because Font reference /F1 still present in doc pointing to non-existent resource.
-Edited so that the reference is now removed from the page if font unused.
-
-
-4.5.013
-Enhancement
-TrueTypeUnicode fonts width array inserted as shortened form array (smaller file size)
-
-4.5.012
-Bug fix: Incorrect handling orphan characters in table
-(cf. http://mpdf.bpm1.com/forum/comments.php?DiscussionID=193 fixed in 4.2 - but going back to it still problems)
-If xxxxx. fits but xxxxx.. doesn't: WriteFlowingBlock wraps it to next line, TableWordWrap sqeezed it onto one line
-TableWordWrap fixed to only allow one orphan char. even if it fits with that one.
-
-
-4.5.011
-Added Windows BMP image support
-
-4.5.010
-SVG class:
-- improved recognition of lineargradients/radialgradients referenced by xlink:href
-- does not die if empty text string
-- support for many text properties as style="" as well as currently as attributes (bold, fill etc)
-- if using MB font, was respecting "Times" and "Courier" from the SVG file but using as ANSI not utf-8
-
-4.5.009
-graph.php updated to include SVG - need to define in graph.php (as well as set up TTF fonts)
-(SVG graph does not include CSIM, 3D skew.)
-
-4.5.008
-t1asm.php has an error in the error message if .dat fontfile not found (".char.dat")
-
-4.5.007
-Bug fix: Using page-break-inside:avoid, if nothing would have been printed on page 1 before next page, elements going all over the place!
-       Also problem shifting images - fixed
-       Also wasn't shifting WMF/SVG images - fixed
-
-4.5.006
-New config var
-$this->tableMinSizePriority = false;   
-If page-break-inside:avoid but cannot fit on full page without 
-exceeding autosize; setting this value to true will force respsect for
-autosize, and disable the page-break-inside:avoid
-[NB edit Manual Table>>autolayout algorithm]
-
-
-4.5.005
-Bug fix
-Table set to avoid page-break-inside: in some circumstances entered loop with recalculating size
-Fudge factor added of 0.001 in tbsqrt to calculate shrink factor 
-
-4.5.004
-Bug fix
-If table set to avoid page-break-inside and table height (resized) exactly==remaining page - was triggering page break
-Fudge factor added of 0.001 in tablewrite to query pagebreak
-
-4.5.003
-Bug fix in makefonts/makefonts.php
-Also changed the links in Step4 & 8 which move the newly created files to the font directory - will now show error message if error - 
-will NOT overwrite existing files. (Put in manual already)
-
-4.5.002
-Bug fix in class/t1asm.php
-If you have magic_quotes_runtime set On - problems using embedded subset.
-
-4.5.001
-JPG "Exif" file recognised from header, and handled much more quickly and efficiently (not using GD)
-
-
-
-===========================
-mPDF v4.5   (21/04/2010)
-===========================
-
-New Features
-------------
-The main change in 4.5 is the improved class for importing SVG images. (See details below)
-
-Font files
-----------
-Some bugs in the "makefonts" utility caused some errors in the files produced for embedding font subsets.
-Surprisingly these are not easily detectable (I have yet to find one!).
-All the font files used for embedding font subsets (the .dat and .dat.php files in /unifont/ folder)
-have been re-generated. Download them if you are having problems with any fonts - otherwise, you probably 
-don't need to bother.
-
-Minor Enhancements
-------------------
-If keepColumns = true (i.e. disable readjustment of column length), mPDF will now reproduce 
-table header/footer rows in each column [4.4.015]
-
-A number of changes to improve processing time [4.4.012]
-[Thanks to carlholmberg http://mpdf.bpm1.com/forum/comments.php?DiscussionID=274&page=1#Item_3]
-
-JPG files with header marked as "progressive DCT-based JPEG" are now supported [4.4.004]
-
-Configurable variable (config.php) $dpi can be set to vary size interpreted from "px" values in HTML/CSS
-NB Recommended that $dpi should always be set the same as $img_dpi
-
-Support added for "ex" as a size value (approximates "ex" as half of font height)
-
-Configurable variable (config.php) $watermarkImgAlphaBlend will determine how watermark images
-will blend with underlying objects. 
-
-
-Bug fixes
----------
-- Make-fonts utility : makefonts/makefonts.php [4.4.016]
-       (All font files have been updated)
-- Table header of only one column width - not printing right border [4.4.014]
-- WMF and SVG images not rotating correctly to 90 or -90 degrees [4.4.013]
-- Using templates, error if imported doc contains templates itself [4.4.001]
-
-
-Updated Files
--------------
-mpdf.php
-config.php
-classes/svg.php
-makefonts/makefonts.php
-ALL subset font files (/unifont/ .dat and .dat.php files), and all garuda and norasi files
-
-New files
----------
-None
-
-New config variables
---------------------
-$this->watermarkImgAlphaBlend
-$this->dpi
-
-BACKWARD COMPATIBILITY
-----------------------
-All but one changes in mPDF 4.5 are fully backwards compatible.
-The configurable variable $this->watermarkImgBehind was introduced in v4.4 and was unintentionally set to TRUE
-In v4.5 this is set to FALSE in the config.php file.
-
-
-SVG Images
-----------
-[svg.php CHANGED]
-- Text stroke-width default changed to 1 [4.4.011]
-- Text stroke - line-join type changed [4.4.010]
-- Default value for fill changed to "black" [4.4.008]
-- Bug fixes:
-  * to correct calculation of text-length (and therefore alignment R and C) [4.4.009]
-  * Corrected errors in path implementation esp. quadratic Bezier curves
-  * rounded corners to rectangles - error corrected
-  * Recognition of font-family improved
-  * remove \n (and other non-printable chars) from text
-  * zero length shapes are not output e.g. zero-width rectangle, zero-length line, zero-radius circle
-- Support added for:
-  * gradient stop offsets and gradientUnits="userSpaceOnUse" [4.4.007]
-       In mpdf.php enabled define inner radius for radial gradients - only used internally by SVG at present
-  * user defined <ENTITY /> cf. 'render-elems-03-t.svg' in SVG Test Suite [4.4.006]
-  * "color" attribute and "currentColor" value for fill and stroke [4.4.005]
-  * fill:url(#...) in a style as well as attribute
-  * xlink:href for gradients
-  * 1.3002e-005 in svg path
-  * text-style changes (e.g. text-anchor) set on <g> element - not just on <text>
-  * fill-rule=evenodd|nozero
-  * dashed lines / stroke-dasharray & stroke-dashoffset
-  * gradientUnits=userSpaceOnUse;
-  * units e.g. 3mm or 14pt in Rectangle, Circle, Ellipse, Line and Text position 
-  * transform on <text> element
-  * stroke as well as fill on text
-
-NB The following are still NOT supported for SVG
-- filters
-- <marker>
-- images
-- DOM
-- <pattern>
-- textlength; lengthadjust; tspan, tref, toap, textPath; 
-- <use ../>
-- gradient on stroke/text;
-- <clipPath>
-- text-underline and strikethrough
-- text opacity
-- colors as rgb(87%, 56%, 25%)
-- rect using units for dimensions
-- Only uses default spreadMethod = "pad" for gradients
-
-
-
-
-
-===========================
-mPDF v4.4   (24/03/2010)
-===========================
-
-New Features
-------------
-- Support SVG image files (partial)
-- Rotate images or graphs (by multiples of 90 degrees)
-- Set opacity (transparency) for background images
-- Control resizing of background images
-- Set whether to print watermark images behind or in front of page contents
-- Reduced memory usage when printing tables (partly configurable)
-- Option to set path to folder for temporary files
-- Improved compliance for CSS text-align justify
-- Increased support for CSS "media"
-- Improved performance when accessing local image files
-
-
-Minor Enhancements
-------------------
-- Allows space in output file name e.g. $mpdf->Output('t est.pdf','D'); [4.3.007B]
-- Header changed in Output to improve compatability with IE6 (affects 'D' and 'I') [4.3.012B]
-- background-images do not show noimage.jpg if missing [4.3.012D]
-- simpleTables (which improves performance) now also allows: background-color, -gradient and -image, padding 
-       and rotated text to be set for each cell. Only borders are not supported cell-by-cell. [4.3.006]
-
-
-Bug fixes
----------
-- Page width not correctly reset when defining default page margins (L/R) by @page [4.3.007C]
-- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.3.005]
-       NB This should have been fixed in [4.2.028] but got left out!
-- UseSubstitutionsMB causes errors inside <textarea> and <select> so now disabled in these 2 situations [4.3.004]
-- CSS background: 'none' did not cancel background-image/background-color if it comes later [4.3.002, 4.3.011]
-- Warning message 'depracated' (as of PHP 5.3) when using Templates [4.3.007]
-- AutoFont incorrectly altering multibyte characters ending in \xa0 [4.3.012C]
-- "Initial" default value for border-width changed from 1px to 'medium' e.g. border-top: solid #000000; [4.3.010]
-- WMF image sometimes inverted [4.3.016]
-
-Updated Files
--------------
-mpdf.php
-config.php
-changelog.txt
-
-
-New files
----------
-classes/svg.php
-
-
-New config variables
---------------------
-$this->justifyB4br=false;
-$this->CSSselectMedia='print';
-$this->watermarkImgBehind = false;
-
-BACKWARD COMPATIBILITY
-----------------------
-All changes are backwards compatible except the handling of some background-images - please see notes below.
-
-
-Watermark Image z-order
------------------------
-By default mPDF prints watermarks on top of the page contents to ensure that they are not hidden by backgrounds
-(especially table cells).
-You can specify watermark images to be printed behind page contents by setting a configurable variable:
-$this->watermarkImgBehind = true;  // default=false
-[4.3.018]
-
-
-Rotating Images and Graphs
---------------------------
-Images or graphs can be rotated (by multiples of 90 degrees) using a custom HTML attribute e.g.
-<img rotate="90|-90|180" ... />
-<jpgraph rotate="90" ... />
-Valid options are: 90|-90|180. 
-Positive values are clockwise.
-If width is specified e.g. width="3cm" this is applied to the rotated image i.e. will be width 3cm after rotating
-[4.3.016]
-
-
-Background Image Opacity
-------------------------
-A custom CSS property "background-image-opacity": is now supported on BODY, DIV+ (block elements) and TD
-Takes values between 0 and 1.0 
-
-
-Resizing Background Images
---------------------------
-A custom CSS property "background-image-resize": is now supported on BODY, DIV+ (block elements) and TD
-0 - No resizing (default)
-1 - Shrink-to-fit w (keep aspect ratio)
-2 - Shrink-to-fit h (keep aspect ratio)
-3 - Shrink-to-fit w and/or h (keep aspect ratio)
-4 - Resize-to-fit w (keep aspect ratio)
-5 - Resize-to-fit h (keep aspect ratio)
-6 - Resize-to-fit w and h
-
-N.B. Prior to v4.4 background-images were incorrectly constrained to maximum width of the containing block.
-The default is now to do NO resizing on background-images. Setting "background-image-resize:3" should be used
-for backwards compatibility.
-[4.3.015, 4.3.012D]
-
-
-SVG Image files
----------------
-SVG image files are now partially supported (but as for WMF - not as background-images).
-viewBox (preserveAspectRatio is not supported)  viewBox="0 0 400 200"  width="400" height="200"
-Takes viewBox in preference to width/height if present on <svg>
-If neither present, will size to width of page (square) as the containing box.
-Units are interpreted as pixels if undefined.
-Doesn't recognise internal CSS <style> elements
-Gradients only take 2 colours which are taken as stop-offset 0% and 100%
-[4.3.013 & 4.3.017]
-
-
-Reduced Memory Usage printing Tables
-------------------------------------
-mPDF uses a lot of memory when processing large tables. Parts of the script have been rewritten to 
-reduce memory consumption when writing tables which use collapsed borders (10-25% saving).
-
-Memory usage can be reduced further by setting a configurable variable:
-$this->packTableData = true;  // default=false
-but note that this causes a significant increase in processing time.
-[4.3.008, 4.3.019, 4.3.014]
-
-
-
-User-defined path to Temporary folder
--------------------------------------
-mPDF uses a folder to write and store temporary files when processing images. By default this is the
-[your_path_to_mpdf]/tmp/
-This is now user-definable by defining the constant _MPDF_TEMP_PATH before including mpdf.php script.
-
-
-Text Justification
-------------------
-In a justified text block, an inline image, textarea, input, or select causing a new line will now force 
-the previous line to be justified. HR and BR do NOT force justification (as in browsers).
-For optional compliance of MS Word behaviour, there is a new configurable variable:
-$this->justifyB4br = false;    // Change to true to force justification before a <BR> (as in MS Word)
-[4.3.003]
-
-
-CSS support for @media
-----------------------
-Now supports media-dependent CSS styles e.g.
-@media print { 
-       p { color: red; } 
-}
-as well as 
-<style media="...">...</style> and
-<link rel="stylesheet" media="print" href="..." />
-Proper matching of CSS media to select using configurable variable:
-$this->CSSselectMedia='print'; //  default="print" set in config.php : screen, print, or any other CSS @media type (not "all")
-N.B. $this->disablePrintCSS in now depracated
-[4.3.001]
-
-
-
-
-===========================
-mPDF v4.3   (28/02/2010)
-===========================
-
-NEW FEATURES
-------------
-- Page (sheet) size can be reset within document (http://mpdf1.com/manual/index.php?tid=436) [4.2.024, 4.2.025]
-- PDF/A1-b compliant files (http://mpdf1.com/manual/index.php?tid=420)
-- Improve performance using simpleTables (http://mpdf1.com/manual/index.php?tid=430)
-- mPDFI incorporated into main mPDF class (http://mpdf1.com/manual/index.php?tid=432)
-- <dottab> added as custom HTML tag: inserts dots to the following text, which is right-aligned [4.2.031]
-
-See Example files 38 and 39 for PDFA compliant file and <dottab>
-
-BACKWARD COMPATIBILITY
-----------------------
-All changes are backwards compatible except the use of mPDFI. You will need to make minor changes to your scripts.
-See the manual http://mpdf1.com/manual/index.php?tid=432 for details.
-
-BUG FIXES
----------
-- When using Table of Contents and not resetting page numbers: HTML headers/footers showed incorrect page number [4.2.020]
-- Table of Contents: last page not printing page background-color [4.2.023]
-- Image file with space " " in the file name failing [4.2.016]
-- Image file path unnecessarily resolved to full URI - changed to use relative path if possible [4.2.029] ***
-- Table - not calculating height of cell correctly [4.2.015, 4.2.012, 4.2.011, 4.2.009]
-- Table row breaking after/during cell when image in cell taller than font-height [4.2.008]
-- When Table row(cell) greater height than the page-height but requiring resizing greater than allowed by autosize - not resizing [4.2.005]
-- Table cell border not resized correctly [4.2.002]
-- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.2.028] ****
-- Background-image in HTMLFooter not correctly setting 0,0 origin [4.2.014]
-- Background-image set as an in-line style not working [4.2.013]
-- Background-image set in CSS @page or <body> was being constrained to less than page size [4.2.032]
-- Imported Templates overwriting Headers (with images or gradients) [4.2.004]
-- When using imports/templates, HTML header with background-image causing page to disappear [4.2.001]
-- block-style element breaking over more than 2 pages incorrectly adjusting L/R margins [4.2.022]
-- CSS @page property "size" set on :left :right or :first pseudo-selectors - disabled [4.2.022]
-- Annotations default colour incorrectly set in PDF as [100 100 0] corrected to [1 1 0] (seemed to work ok?) [4.2.026]
-- Overwrite() now parses input file more tolerantly recognising more source files [4.2.030]
-
-**** Bug fix 4.2.028 never got into the release of v4.3  Included in next release [4.3.005]
-**** Bug fix 4.2.029 never not fully implmented in v4.3  Included in next release [4.3.012]
-
-Changed files 
--------------
-mpdf.php
-compress.php
-config.php
-classes/t1asm.php
-includes/functions.php
-mpdfi/fpdi_pdf_parser.php
-Added files/folder: /mpdfi/filters/*.*
-Added file/folder: /iccprofiles/sRGB_IEC61966-2-1.icc
-mpdfi/mpdfi.php (no longer required)
-
-New Configuration variables
----------------------------
-[config.php]
-$this->enableImports
-$this->simpleTables
-$this->PDFA
-$this->ICCProfile
-$this->PDFAauto
-
-
-Minor changes
--------------
-Increased PDF file compatibility with spec 1.4
-- PDF version changed to 1.4
-- A binary file marker (a comment line with 4 characters > 127 ASCII) is added just after the first line
-- %%EOF no longer has line break after it [4.2.010]
-- /ID object is added to trailer object when not encrypted [4.2.010]
-
-When using progress bars, one of the JS scripts is now referenced as an external file
- to allow it to be cached by user's browser and improve performance for end-user [4.2.007]
-
-Importing external PDF files: LZW encoded PDF files are now supported
-
-When adding an annotation, the popup window can be set be either open or closed when the document is opened [4.2.027]
-- size and position of the popup can also be specified
-
-
-
-===========================
-mPDF v4.2   (27/01/2010)
-===========================
-
-NEW FEATURES
-------------
-- image handling improved
-- table layout - additional control over resizing
-- vertical-alignment of images - better support for all CSS types
-- top and bottom margins collapse between block elements
-- improved support for CSS line-height
-- display progress bar whilst generating file
-- CSS @page selector can be specified when adding a pagebreak
-- CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages
-- PNG images with alpha channel fully supported
-- ability to generate italic and bold font variants from base font file
-- CJK fonts to embed as subsets
-- "double" border on block elements
-- character substitution for missing characters in UTF-8 fonts
-- direct passing of dynamically produced image data
-- background-gradient and background-image can now co-exist
-
-
-
-Bug fixes
----------
-- empty variable (undefined var, false, null, array() etc.) sent to WriteHTML produced error message "Invalid UTF-8"
-- CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
-- parsing stylesheets: background image not recognised if containbed uppercase characters in file name
-- "double" border on table used white between the lines instead of current background colour
-- $this->shrink_tables_to_fit = 0 or false caused fatal errors
-- background color or images not printing correctly when breaking across pages
-- background not printed for List inside a block element
-- columns starting near end of page with no room for a line triggering column change (resulting in text misplaced) not page break
-- table cell not calculating cell height correctly when "orphan" characters (;:,.?! etc.) at end of line
-- table breaking page in column 2 when col 1 is rowspan'ned
-- margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
-- column break triggered by HR triggering a second column break
-- an empty 'position:fixed' element with no/auto width or height caused fatal error
-- mPDFI: template documents were overwriting HTML headers
-- mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
-
-Bug - not fixed
-- WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
-
-
-
-New or Updated Files
---------------------
-mpdf.php
-compress.php
-config.php
-config_cp.php
-config_fonts.php
-mpdf.css
-classes/gif.php
-classes/indic.php
-includes/subs_core.php
-mpdfi/mpdfi.php
-unifont/ar_k_001.uni2gn.php
-All files in new folder: /progress/*.*
-
-NEW FOLDER /tmp/ required with read/write permissions - used for temporary image files or progress bars
-
-
-
-
-===========================
-mPDF v4.1.1  (21/12/2009)
-===========================
-Error corrected in /makefont/makefonts.php file (moved completed Unicode files to font folder instead of unifont)
-
-===========================
-mPDF v4.1  (20/12/2009)
-===========================
-MySQL support for embedded font subsets abandoned, and replaced with file-based.
-
-
-Files no longer required
-------------------------
-config_db.php
-/unifont/RUNME.php
-/unifont/*.ufm and /unifont/*.t1a font files
-
-MySQL Database no longer required
-
-Files Updated
--------------
-mpdf.php
-/classes/t1asm.php
-/makefont/makefonts.php
-
-New files
----------
-/unifont/*.dat and /unifont/*.dat.php font files
-
-
-Bug-fixes
----------
-- Image - If automatically resizing to fit maximum page size incorrectly subtracted margin-header
-- Annotation and textarea in same HTML chunk causes mPDF to crash (preg_replace textarea with /u modifier in AdjustHTML)
-- set_magic_quotes_runtime error ($mgr not $mqr)
-- Table align did not reverse when using RTL document
-
-Alteration: Image - if writing Image in fixedpos div position:absolute - to allow Image to be resized to full page size
-
-
-===========================
-mPDF v4.0  (17/12/2009)
-===========================
-
-Major additions
----------------
-- Ability to embed font subsets (creating much smaller files)
-- Much improved support for Arabic languages
-- Support for Indic languages including consonant conjuncts
-- Support for Fixed position block elements
-- New utility to help create your own fonts
-- PNG alpha channel transparency supported
-- New utility to create smaller mpdf script with reduced functionality (less memory)
-- Multiple Barcode types supported
-
-**********************************************************************************************
-*  For more details see the documentation manual: http://mpdf1.com/manual/index.php?tid=410  *
-**********************************************************************************************
-
-Bug fixes (parsing CSS)
------------------------
-- <link  href="" ... was not recognised if > 1 space between words
-- #Content p em { font-style:italic; } was applied to "#Content p"
-- @import url() embedded in a stylesheet file requires path fixed relative to stylesheet file
-- background-image url() embedded in a stylesheet file requires path fixed relative to stylesheet file
-- comment tags inside CSS <style> embedded in the HTML were removed
-    Now fixed so <style><!-- ... --></style> works; <!-- <style>...</style> --> is removed
-
-Bug fixes (other)
------------------
-- clear (CSS property for floating elements) caused properties for that element to reset to defaults
-- width: auto caused collapse of border and padding on L & R of ordinary block elements
-- text-indent not inherited correctly (including em and % values)
-- named colour "steelblue" corrected RRGGBB hex code
-- table cell widths in %: if width of table cells set to >=100%, and not all columns are set
-       This was fixed in 3.2 but led to problem where 2 cols: 1) 80% and 2) not set (see Table sizing test)
-       Now fixed again to work for both(?)
-- parse PNG error fixed
-- bachground-image not correctly positioned in HTMLFooter and HTMLHeader (Not fixed properly in 3.2!)
-- fonts not supported with 0-9 in the name
-- font list in GetCodepage() in htmltoolkit.php (now config_cp.php) containing space " " not recognised
-- list number positioning
-- list font size set in CSS for UL/OL not working for first level list
-- table width (real value, not %) not working in nested table
-- GIF file failed if PDF file not compressed
-- list-style-type incorrectly inherited
-- line-height inheritance in lists
-- SetColumns added a new line - not required if at start of document/page
-- footer_line_spacing did not work
-- table cellPadding="" overwrote cell padding set on cell CSS
-- could not turn off Default non-HTML foter LINE
-- border specified as "em"
-- default values set in mpdf.css overriden by inherited properties e.g. <div><h1>Here</h1></div> lost font-size for H1
-
-
-
-===========================
-mPDF v3.2  (25/10/2009)
-===========================
-Bug fixes
----------
-- Table cell widths in %: if width of table cells set to >=100%, and not all columns are set -> froze, because tries to produce a column of no width
-- Ouput download file changed to allow compatability with IE6 (http://mpdf.bpm1.com/forum/comments.php?DiscussionID=120&page=1#Item_4)
-- Image error if relative path used on domain root (e.g. img src="image.png" and basepath is http://www.yourdomain.com) [attempted fix in 3.1 not working]
-- Table: if font changed in cell, font was not retoring properly afterwards causing errors (restoreInlineProperties())
-- Lists: list items containing <br />, font not restoring after bullet
-- Graceful support for block elements inside list items e.g. <li><p>... (not supported, but tolerated)
-- Index: Created dividing letters separately for Uppercase and lowercase
-- Incorrectly changing input character set when encountering e.g. charset=iso-8859-1 in the text of the document
-       - Changed so only detects it if within <head>...</head> 
-- If Keep-with-table (i.e. H1-6 before table and use_kwt true), if pagebreak forced anyway, borders did not print on previous page
-- Background-image used in HTML footer not appearing (correctly)
-- RTL tables: nested tables will not automatically transpose L->R
-- "Keep heading with table" - changed to allow <h1 style=".."> not just <h1>
-- "Keep heading with table" - backgrounds (bgcolor, image or gradient) incorrectly handled - now removed
-- Rotated table spread over more than 1 page caused enclosing block background colours to be be rotated along with table
-- CSS text-indent % now correctly suported (% of containing block width)
-- CSS width em on a block element e.g. DIV now correctly suported
-- calculating _tableheight, if remainingpage==0, get error (div by zero)
-- Table moved to next page with page-break-inside=avoid, produced an enlarged table (font)
-- RTL text-align override on BODY text was not working consistently
-- Arab characters: Character &#x647; (HEH) appearing in Final presentation form instead of Isolated
-- Vertical position of background-image on whole page incorrect
-- SetProtection can now be used with no permissions set (was not working unless at least one permission set)
-
-
-Developers
-----------
-Some more undefined indexes and variables declared (courtesy of DSmart http://mpdf.bpm1.com/forum/comments.php?DiscussionID=117&page=1#Item_0 )
-Comment lines removed for < v3.0 to tidy up code
-
-
-Enhancements
-------------
-CSS style height now partially supported on block elements DIV, P, H1 etc. --IF--
-       - block is all on one page
-       - will extend the block but not shorten it
-       - will not force a pagebreak (max. at bottom of page)
-       - % is interpreted as % of printable page height (inside margins)
-<TFOOT> now supported (placed at start as in HTML spec) displays at end of table, and repeats as a footer
-Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or 
-       positioned correctly if table is rotated)
-NB Background images and background-gradients do not work if Columns are being used, or if $use_kwt is TRUE (keep-with-table),
-        or if page-break-inside:avoid is active.
-
-
-Updated files
--------------
-mpdf.php
-htmltoolkit.php
-
-
-
-
-===========================
-mPDF v3.1  (30/08/2009)
-===========================
-
-Bug fixes
----------
-- Image error if relative path used on domain root (e.g. img src="image.png" and basepath is http://www.yourdomain.com
-was giving http://www.yourdomain.com//image.png) [3.1]
-- Errors in parsing background CSS (background-repeat, background-position etc) [3.1]
-- Textarea did not corectly convert width or height in units relating to font e.g. em [3.0beta_01]
-- If page margin-bottom set to zero, SetHTMLfooter() crashes with "Division by zero" error [3.0beta_01]
-- Table with header row and rowspan in tbody, not calculating maxrowheightcorrectly
-- Prevent Index breaking column just after a dividing letter
-- Select or input form field when text around it is justified had text in the form field justified
-- TocBookMarkText needs to be htmlspecialchar-ed - decoded when entered inside <tocpagebreak>
-- <img src="" /> caused crash
-- DisplayPreferences used as a variable name and a function: function renamed to SetDisplayPreferences()
-- Image with src file not including a "." incorrectly parsed (e.g. http://www.domain.com/imagegenerator?params=23)
-
-New Features
-------------
-- var $debug (true|false) default false; show or hide error reporting at output stage [3.1]
-- var $autoPageBreak (true|false) default true; allows overriding of automatic page breaks [3.0beta_02]
-- <indexinsert /> HTML equivalent of CreateIndex() [was CreateReference()]
-- 2nd attribute/parameter "xref" in IndexEntry() and <indexentry> - works like IndexEntrySee() as cross-reference entry
-- function SetWatermarkText allows null parameters to be passed i.e. SetWatermarkText() - will clear the WatermarkText
-- <watermarktext content="" alpha="" /> - HTML equivalent of SetWatermarkText()
-- <watermarkimage src="" alpha="" position="" size="" /> - HTML equivalent of SetWatermarkImage()
-
-Documentation
--------------
-See Manual at http://mpdf.bpm1.com/manual/ for more information - especially:
-- User's Guide>>What Else Can I Do?>>Backgrounds & Borders
-- User's Guide>>What Else Can I Do?>>Floating blocks
-
-Files updated:
--------------
-mpdf.php
-htmltoolkit.php
-graph.php
-
-
-Developers only
----------------
-mPDF<=3.1 generated a large number of warning "Notices" if run with full eror_reporting on, due to array indexes not being initiated e.g.
-$arr = array();
-...
-if ($arr['index'] == 5 ) {...}
-
-To prevent this, lines were added at the start of the mpdf.php script to turn error notices OFF.
-In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered 
-e.g. the line above would be changed to:
-if (isset($arr['index'] && $arr['index'] == 5 ) {...}
-
-Although I have tested this with a number of examples, it is almost certainly not complete. Therefore the error_reporting for Notices is still turned
-off in mPDF 3.1
-If you care to test it, please uncomment line 43 (//error_reporting(E_ALL);) and report any warning notices that you get.
-NB This has added about 40kB to the script size.
-
-
-
-===========================
-mPDF v3.0beta  (14/06/2009)
-===========================
-
-
-New Features
-------------
-- CSS "float" partially supported (as well as clear:left|right|both)
-- CSS "background-image" "background-position" "background-repeat" "background-color" "background" supported for block-level elements
-- CSS background-color and background-image for <body > element added: this covers the whole page i.e. not just inside the "margins"
-- CSS background-color and background-image can be defined for CSS @page{}
-- Background gradients (linear or radial) can be defined using a custom CSS style property
-- Border radius can be defined to give rounded edges to block elements (uses draft CSS3 spec.)
-- page number can be reset to any value during the document (in AddPage() <pagebreak> etc.)
-- PNG images: Interlaced and alpha-channel-set PNG images now supported
-- internal links supported in Indexes (parameter added to CreateIndex()/CreateReference(): $useLinking=true;)
-- HTML Headers and footers now support hyperlinks
-- improved handling of <br>, block elements, and text lines inside table - approximates better to browser handling
-- borders of block-level elements & table cell borders supported (partially) in columns
-- optional error reporting for problems with Images ($showImageErrors)
-- ToC will word-wrap long entries
-- internal links (Bookmarks, IndexEntry and ToCEntry) rewritten to give more accurate positioning (when used as <tag>)
-- autofont algorithm improved for CJK languages
-- define text before and after page numbers ($pagenumPrefix; $pagenumSuffix; $nbpgPrefix; $nbpgSuffix;)
-- Additional color names supported - full list from SVG1.0
-
-Bug fixes
----------
-- Column width not resetting after an automatic pagebreak, or after setting HTMLheader
-- using AutoFont unnecssarily changed htmlspecialchars to code causing errors
-- Lists inside a table - incorrectly calculating table cell height
-- CJK - 4-byte utf-8 chars not displaying properly (includes HKCS characters)
-- mailto: links incorrectly handled
-- TOCpagebreak() - usePaging default clarified: true unless specified as '', 0, '0' or false; (null ->true)
-- <tocpagebreak> (as html tag) with no "name" defined, used at start of page, added a further blank page(s)
-- Lists - inaccurate calculation of space required for numbers in certain circumstances
-- Generated images (.php) only working if cURL enabled - (fixed, but rquires allow_url_fopen if remote file)
-- flag added to turn off error reporting when buffering used ($allow_output_buffering = false;)
-- RTL text in Bookmark, Title, Author, Creator, Keywords, and Subject was reversed - Adobe Reader 9 now correctly handles RTL text ( which Reader 8 did not)
-- TOC - if not using ODD/EVEN paging, did not add extra page and messed up
-- Rotated table which did not fit on remaining page resized to bigger than default
-- HR of width less than 100% - text continued on line after it
-- HR alignment not working (fixed so both CSS text-align and margin: 0 0 0 auto etc work)
-- HR in table did not correctly re-size when necessary
-- characters in symbols/zapfdingbats which in non-utf-8 mode are represented as chr(173) incorrectly handled as soft-hyphens
-      (bug introduced 2.5 with soft-hyphens - affects symbols &#8593; arrow-up and Zapfdingbats &#9313; encircled 2)
-- Internal links (anchors) - Annotation/Bookmarks etc. incorrectly positioned when page orientation changed
-- ToC - when using multiple ToCs, internal links were not correctly adjusted
-- anchor (a name="") used inside a table was incorrectly positioned at the end of table
-- Tables: cell height calculated incorrectly when BR used
-- Table rotated with "page-break-inside:avoid" not kept on one page
-- Table rotated and split over > 1 page - vertical alignment inaccurate
-- Headers/Footers (non_html) when no style set caused errors
-- Table: breaking page when using rowspan error (line 17142)
-- ToC: If no indent defined in HTML tag <tocpagebreak> or defined as 0 gave error
-
-Note
-----
-In mPDF 3.0 the following sections of code have been significantly rewritten:
-- painting of borders and background colours for block-elements
-- table of contents
-- Index
-- vertical justification in columns (uses scaling to stretch vertically)
-
-NB changed htmltoolkit AdjustHTML - does not now remove <br> before </div>
-       Warning - may display differently in normal text as well as tables
-
-
-Files updated:
--------------
-mpdf.php
-htmltoolkit.php
-
-
-Developers only
----------------
-- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together 
-      - otherwise would overwrite background image with inherited color
-- all %.2f used in sprintf() changed to %.3f in htmltoolkit.php and mpdf.php to increase accuracy of div border lines in columns etc.
-- variable $use_embeddedfonts_1252 renamed to $useOnlyCoreFonts as more precise: depracated but still supported.
-- this version included quite abit of tidying up/future-proofing some code:
-      $var{0} changed to substr($var,0,1) etc.  (due to go in PHP6)
-      ereg_ changed to preg_   (depracated in PHP5.3) - (NB mainly in htmltoolkit.php)
-
-
-
-===========================
-mPDF v2.5  (01/05/2009)
-===========================
-
-New Features
-------------
-- Automatic Hyphenation added, and support for soft-hyphens
-- Encryption works now for CJK language documents
-- Improved text justification
-- Support for 'generated' images e.g. "../ontheflyimage.php"
-
-
-Bug fixes
----------
-- Tables: cell height did not reduce if font-size used was smaller than table default
-- Columns: if setcolumns() to the same number already active - did not print out last bit of previous columns
-- Page-break in the middle of a block caused incorrect margin and padding on next lines until end of block ($cMargin reset to 0 in AddPage)
-- <HR> in table cell was printing in incorrect position (bug introduced in mPDF 2.4)
-- Justification
-  - if only one word on line, did not respect maximum character spacing
-  - last character of line incorrectly had character spacing applied
-  - Space at the end of last line of a Right Justify block - e.g. "end. </p>" now correctly ignored
-  - &nbsp; incorrectly treated as a character when justifying text with word/char spacing
-  - CJK punctuation (.,) added as 'orphans' to keep at end of line
-- PNG files - was still buggy reading larger PNG files (due to fread)
-
-
-Files updated:
--------------
-mpdf.php
-htmltoolkit.php
-CJKdata.php
-/patterns/.. (new files)
-
-
-Developers only
----------------
-Variables renamed as more accurate or appropriate:
-- var $isunicode renamed as $is_MB
-- var $usingembeddedfonts renamed as $usingCoreFont
-CJK changed to act internally as UTF-8 encoded
-- (NB CJK Half-widths not supported from 2.5+ i.e. big5-hw gb-hw)
-
-
-
-===========================
-mPDF v2.4  (23/04/2009)
-===========================
-Files updated
--------------
-mpdf.php
-htmltoolkit.php
-mpdfi/mpdfi.php
-
-New files
----------
-graph.php
-Graphs - Requires new folder: path_to_mpdf/graph_cache/ (must be writeable)
-
-New features
-------------
-Annotations improved so they appear as a pop-up
-Re-use Document Templates (cf. RestartDocTemplate() in manual)
-Limited support for CSS float property on an IMG element allowing text wrapping e.g. <img style="float: right;"> (cf. Images in manual)
-Utility function PreparePreText() allows output of a text file which may include <pre>
-Automatic generation of graphs from data in tables (requires integration with JPGraph) (cf. Graphs in manual)
-
-Other Changes
--------------
-IMPORTANT - User rights removed as not working with newer version of Adobe Reader 9 (affects Active forms and ability for users to modify annotations)
-Corrects text alignment when using {nb} or {nbpg} in (non-HTML) headers/footers
-Sets default timezone if not already set (at top of mpdf.php) to prevent E_STRICT ERROR message
-Suppresses E_NOTICE error reporting (at top of mpdf.php)
-Error capture in Output() to avoid PDF header being sent when error messages generated
-A function str_ireplace added to htmltoolkit to allow PHP4 to function
-
-Bug fixes
----------
-WMF images incorrectly positioned when in-line
-PNG images > 8kB failed to load - (fix in 2.3 didn't work - fixed properly this time)
-Annotations containing a new line (\n) causing an error
-Evaluation of <pre> text: "<code>[TAB] " evaluated incorrect number of spaces to follow to align tabs, because < was calculated as 4 chars (&lt;)
-
-
-
-===========================
-mPDF v2.3  (22/03/2009)
-===========================
-
-New Features
-------------
-- Optionally detect language and when to use special fonts i.e. RTL (arabic), CJK (chinese), Thai (see SetAutoFont() etc.)
-- Supports HTML attribute "lang" in all tags and uses special fonts when required (see $useLang)
-- Joins Arabic and Farsi/Persian text into presentation forms
-- Import another PDF file and use as templates in your document (see UseTemplate() and mPDFI in the manual.)
-- Replace specified text strings in an existing PDF file (see OverWrite() etc.)
-- More than one Table of Contents can be used in a document (see tocpagebreak etc.)
-- Restore properties of open HTML block elements after a page break (variable $restoreBlockPagebreaks or new tag <formfeed>)
-- <annotation> <bookmark> <indexentry> <tocentry> can now accept characters <>'"& as htmlentities - htmlspecialchars(..., ENT_QUOTES)
-- <annotation> can now accept "\n" for new line
-- support for opacity (CSS3 property) for images
-- specify the number of spaces to substitute for TAB when parsing <pre> tags
-- greater control over margins and display when changing page orientation during document (see $forcePortraitMargins and $displayDefaultOrientation)
-
-
-
-Bug fixes
----------
-Fonts in CSS - Not parsing font-family: Trebuchet MS; correctly as trebuchet
-Fonts in CSS - CSS font-family: [unknown]; setting first $available_unifont rather than ignoring
-Images - not displaying on IIS platform
-Images - .wmf not displaying if (allow_url_fopen) not set
-Table borders - in defaultCSS, 'MARGIN-COLLAPSE'=> collapase not quoted therefore not working
-Line-break inside table - printing a blank background across page rather than just going down a line
-Form fields inside tables - will now resize if the table is autosized (shrunk)
-<pre> containing a '<' was changed to '&lt;'
-Tabs inside <pre> were all changed to 8 spaces, not the remainder following a string
-Header on first page was inset by 1mm left and right ($cMarginL and $cMarginR not set to zero)
-Table nested inside a cell with colspan > 1 was incorrectly handled
-PNG file crashed (?incorrectly defined PNG file) [adapted _parsepng to account for unexpected]
-Table or Cell - if font-size not recognised, mPDF set font-size to zero
-Font-sizes - [xx-small|x-small|small|medium|large|x-large|xx-large] were not recognised in tables
-
-
-===========================
-mPDF v2.2.1  (17/02/2009)
-===========================
-Bug fix - (bug introduced in 2.2)
-Table - header row did not return to top of page when repeating across pages.
-
-
-===========================
-mPDF v2.2  (15/02/2009)
-===========================
-Updated files from mPDF 2.1
-mpdf.php
-htmltoolkit.php
-mpdf.css (new)
-===========================
-New files from mPDF <2.0 (only required for EAN Barcodes)
-font/ocrb.xx (several)
-unifont/ocrb.xx (several)
-IMPORTANT - you need to make sure the ocrb font is added to the config.php file
- - add 'ocrb' to the end of 3 arrays: $this->available_fonts  $this->available_unifonts  and  $this->mono_fonts
-===========================
-
-Summary of changes
-- external stylesheet file (mpdf.css) is used to configure default values ($useDefaultCSS2 and $defaultCSS2 are no longer used)
-- special comment tags to hide mPDF tags from browsers: <!--mpdf ...  mpdf-->
-- AddColumn() function added (equivalent to <columnbreak>)
-- annotations - pop-up messages the reader can move or delete (if you set permissions)
-- support for WMF images as well as GIF, JPG, PNG
-- watermark image can be set instead of, or as well as text
-- nested tables can include other content
-- improved control over table layout
-- margin: auto now supported for table and block elements
-
-A number of methods and variables have been renamed or reCapitalised for consistency.
-Changes should be backwards comaptible.
-All user methods start with a Capital, all user-defined variables start with lowercase.
-Affected:
-Reference() -> IndexEntry()
-CreateReference() -> CreateIndex()
-$TopicIsUnvalidated -> $showWatermark
-setUnvalidatedText() -> SetWatermarkText()
-
-PHP appears at present to be case-insensitive for function/method names
-All the following functions have been renamed in the script with a capital first letter:
-setUserRights()
-setBasePath()
-setAnchor2Bookmark()
-setHeader()
-setFooter()
-defHeaderByName()
-defFooterByName()
-setHeaderByName()
-setFooterByName()
-setHTMLHeader()
-setHTMLFooter()
-defHTMLHeaderByName()
-defHTMLFooterByName()
-setHTMLHeaderByName()
-setHTMLFooterByName()
-shaded_box()
-writeBarcode()
-
-Variable names changed to lowercase first letter:
-(Variables are case-sensitive therefore aliases have been set up)
-Anchor2Bookmark
-BiDirectional
-KeepColumns
-AliasNbPg
-AliasNbPgGp
-
-=========
-Bug fixes
-=========
-Columns - $keepColumns=true was incorrectly calculating the place to continue printing after 1 and half columns (of 3)
-Table cell height - incorrectly setting table cell height when cell contained a line of text of large size which wrapped to more than one line
-HR in Table cell - if table cell contains only HR (and column otherwise empty), HR was printed outside cell
-HR in Table cell - if table cell ended with a HR, height was one line too much
-Table page-break-inside:avoid - caused mPDF into permanent loop in some circumstances
-Paging - Total Pages/Group {nb} and {nbgp} didn't work in CJK
-CSS - Border size thin, medium and thick were only recognised in lowercase
-Table-header - rowspan not correctly output in THEAD
-Default CSS - table empty-cell:hide changed to show (CSS specification)
-
-===========================
-mPDF v2.1  (24/01/2009)
-===========================
-
-New Features in Version 2.1
----------------------------
-- CSS support improved generally (especially for cascading CSS, lists)
-- TableHeader changed to allow multiple rows in THEAD
-
-
-CSS changes
------------
-- display: none (block elements only - not lists or tables, nor HR)
-- width (TD/TH)
-- list-style-type (will also recognise the list-style-type from list-style) (OL/UL)
-       recognised values: disc|circle|square|decimal|lower-roman|upper-roman|lower-latin|upper-latin|lower-alpha|upper-alpha|none
-- CSS support for <LI>: font-family, font-size, font-style, font-weight, color, background-color, text-decoration, text-transform, and list-style-type (will also recognise the list-style-type from list-style)
-- table cell borders - CSS rules have been adapted slightly - if a coloured/black line conflicts with a white line, and is the same width, coloured/black will overwrite even if Bottom or Right
-
-
-Numbered Lists
---------------
-Variables set at the top of mpdf.php can be set to change:
-- text alignment of numbers in numbered lists (default Right) 
-       var $list_align_style = 'R';
-- content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
-       var $list_number_suffix = '.';
-(These can be altered at run time, but are not changeable through stylesheets or in-line style)
-
-
-Writing broken segments of HTML
--------------------------------
-2 new parameters have been added to WriteHTML()
-function WriteHTML($html,$sub=0,$init=true,$close=true) {
-$close - Leaves buffers/variables etc. in current state, so that it can continue to write the HTML where it leaves off
-$init - Clears and resets buffers/variables
-(N.B.  You must end with a WriteHTML that calls $close=true)
-Example:
-$mpdf->WriteHTML('<p>This is the beginning...', 2, true, false);
-$mpdf->WriteHTML('...this is the middle...', 2, false, false);
-$mpdf->WriteHTML('...and this is the end</p>', 2, false, true);
-
-
-Rotated text in table cells
----------------------------
-NB This UPDATE will change expected output from previous versions******
-
-Prior to v2.1 any cell set to rotate text anticlockwise was forced to vertical align = bottom.
-This has been changed so that it only overrides when the rotate angle is between 45 and 89 degrees: text rotated exactly 90 degrees will respect the set value for vertical-align.
-
-
-=========
-Bug fixes
-=========
-- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output 
-- Tables - if cell font-size set smaller than default for the table, does not shrink the cell height
-- Columns (tables) - columns breaking across rows e.g. in the middle of a table cell
-- Tables - if table width set to e.g. 100% but cols are less, was not making up to set width
-- Watermark - was not printing if using HTMLFooter
-- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc. 
-- Lists - indent of text did not correctly allow for Maximum number in <ol> list
-- Table does not always move correctly to a new page
-- Table cell incorrectly calculated height causing text to overflow cell when printed
-- Table borders in columns not being correctly handled (bug since 2.0 introduced a buffer to save the borders and print at the end of the table - fixed so does not use buffer if in columns - potentially does not deal with conflicting borders as well, but works in columns)
-- Table cell width if set as a percent was being downsized when autosizing table
-- Table CSS was buggy - improved
-- SetBasePath (when fetching remote website) - now handles string with query string on it e.g. http://www.domain.com/index.php?tid=42
-- Table cells with Rotated text - text not positioned correctly
-- Page number totals not working in utf-8 mode
-
-
-============================
-Code efficiency improvements
-============================
-- BIG speed improvement (compared with 2.0) with tables (especially large tables)
-- considerable increase in speed if writing long HTML segments to mPDF
-- speed improvement for tables (may be very significant if some cells have a lot of text in them causing uneven column widths)
-
-NB To speed up program more, consider setting $mpdf->useSubstitutions=false; if you do not use any characters outside the codepage selected
-
-
-===============
-Keep-with-table
-===============
-(This was introduced in v2.0 but I forgot to document it)
-If you set $this->use_kwt = true;
-All H1-H6 elements will try to keep with a table that follows immediately afterwards - (this is done in htmltoolkit, by adding an attribute KEEP-WITH-TABLE)
-See Known Issues re: Using kwt inside a div with border/background (doesn't work)
-
-
-
-
-===========================
-mPDF v2.0  (07/12/2008)
-===========================
-Main New Features in Version 2.0
-- nested tables are supported
-- supports both models of table border: separate and collapsed
-- improved parsing of CSS stylesheets, and better handling of styles throughout
-- additional recognised CSS styles
-- page orientation, size, and margins can be changed within the document, using PHP script or custom HTML
-- some limited support for @page CSS to define page-box areas, with crop/cross marks for printing
-- improved control over headers and footers (including HTML headers/footers)
-- improved presentation of Form elements including image-type input fields
-- generates an EAN barcode suitable for a book/printed publication
-- active forms can be generated - EXPERIMENTAL at present
-- change document permissions to allow the user to make annotations - EXPERIMENTAL at present
-
-NB Lines are commented in mPDF script as changes for mPDF 1.4 - this became v2.0
-
-=========
-UPGRADING
-=========
-IMPORTANT - Before Upgrading: Please note that some of the changes will cause mPDF 2.0 to render the pages differently from earlier versions i.e. it is not totally backwards comaptible. Read the notes on Backward compatibility before deleting your original set-up.
-
-To upgrade from v<=1.3 to v2.0 you only need to copy and overwrite the following 2 files:
-mpdf.php
-htmltoolkit.php
-
-Plus (optionally) if you want to use the EAN Barcode function, you will also need:
-font/ocrb.xx (several)
-unifont/ocrb.xx (several)
-IMPORTANT - you need to make sure the ocrb font is added to the config.php file
- - add 'ocrb' to the end of 3 arrays: $this->available_fonts  $this->available_unifonts  and  $this->mono_fonts
-
-
-==========
-Bug Fixes
-==========
-<columns column-count="0"> did not turn off columns - Fixed
-
-Margins as % - e.g. margin-right: 50% set from CSS incorrectly applied 50% of the fontsize
-(Fixed - adding parameter to fn. ConvertSize in htmltoolkit.php and in calls to that function)
-
-DIV Width - e.g. div style="width: 50% was not working
-(Fixed - fn.SetCSS and OpenTag()'DIV')
-
-CSS values as Zero - p { margin: 0; } did not work in stylesheet unless 0 had a unit
-
-Multiple Non-breaking spaces collapsed - e.g. "1&nbsp; &nbsp; &nbsp;2"  - was contracted to "1 2"
-(Fixed - fn.adjustHTML in htmltoolkit.php)
-
-Table cell too narrow causing incorrect printing - If two characters are too wide to print (only likely within a table cf. example tables - Periodic table) the first character was not printed, just a new line
-(Fixed in fn.WriteFlowingBlock)
-
-Font size by inline style for form elements <input> <textarea> gave wrong size when using a relative size 0.9em
-(Fixed - fn.ConvertSize in htmltoolkit.php)
-
-Creation Date not correctly showing
-(Fixed - did not need to convert to UTF16)
-
-New block element started at end of page  - block borders not painted
-(Fixed - fn.AddPage)
-
-DL did not close block correctly
-(Fixed - mistype in fn. CloseTag)
-
-Transparent not recognised as color/background-color
-(Attempted a fix by setting to ignore it! - fn. convertcolor in htmltoolkit.php)
-
-Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p> 
-(Fixed - fn.WriteHTML)
-
-Page Headers/Footers - Simple Headers or Footers defined as e.g. '|{PAGENO}|' were not split into 3 components, but output |6| in the outer margin.
-(Fixed)
-
-Could not copy from a completed PDF doc to clipboard when using a TrueTypeUnicode font
-(Fixed - fn._puttruetypeunicode - added CIDToGIDMap)
-
-Creating an Index (confusing called CreateReference in mPDF) based on only 1 column (i.e. columns off) caused it to print FAIL
-(Fixed - fn. CreateReference())
-
-Table of Contents - If a ToC entry reached other side of page a warning notice was produced
-Fixed - printing is now suppressed and it is moved down a line (but not when using rtl)
-
-"Keep Block Together" (i.e. page-break-inside: avoid for a block element)
-If this property causes some text to be moved to the next page, internal link targets (i.e. <a name="xxx">) were incremented pagenumber by +1 - as this used the calculated document page number, didn't work if using e.g. roman numerals
-(Fixed)
-NB This is now ALWAYS disabled when it meets a table - can use page-break-inside:avoid for the table
-
-@import url(style.css) without quotation marks "" was not picked up, although it is valid HTML
-(Fixed - fn.ReadCSS())
-
-Reading CSS from external style sheets included all media
-Now set by default to ignore media="aural|braille"
-Allows media="print" but can exclude by: $mpdf->disablePrintCSS = true; (default = false)
-Works on both <link... and <style media="print">@import...
-See the web page example - this stops the CSS stylesheets specifically marked for "print" to be ignored
-
-Table borders (in collapsed model) incorrectly calculated which border had dominance (mPDF <=1.3 determined the overriding border by its color)
-(Fixed to follow CSS 2.1 specifications: width >> CSS dominance (cell>table) >> T & L > B & R)
-In the border-collapse=collapse mode, the following rules determine which border style "wins" in case of a conflict:
-1. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders. 
-2. narrow borders are discarded in favor of wider ones.
-3. styles are preferred in this order: 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and the lowest: 'inset'.
-4. If border styles differ only in color, then a style set on a cell wins over one on a table. 
-5. When two elements of the same type conflict, then the one further to the left or top wins out.
-
-Parsing CSS, a missed level would not be picked up i.e. CSS = div.refstr1 p {...} would not pick up:
-<div class="refstr1"> <div class="another"> <p>...
-(Fixed - fn. MergeCSS by carrying everything forwards)
-       Note: I removed -  && !$this->blk[$this->blklvl-1]['cascadeCSS']['CLASS>>'.$attr['CLASS']]['depth']
-       Not sure why I put it there in the first place!
-       In a later bit of function -  && $this->blk[$this->blklvl-1]['cascadeCSS'][$tag]['depth']>1
-       Haven't removed this, but is it needed???
-
-CSS inline style set in TD/TH (font-size, color, weight, font-family or italic) didn't turn off at the end of the cell (and also formatted the top left cell)
-(Fixed)
-
-CSS properties color, font-weight, and font-style set on a table were not inherited by the table cells
-(Fixed - var $base_table_properties)
-
-When rotating a table, the text following was positioned incorrectly
-(Fixed - fn. printtablebuffer)
-
-When rotating a table, links were not adjusted in position e.g. <a href="">...
-(Fixed - fn. printtablebuffer)
-
-If a larger border-thickness was set for a cell in the middle of a table, cells before that inaccurately calculated the cell wdith needed
-(Fixed)
-
-Text in a table cell which was not in a block and followed a list, there was no line break e.g. </ol>Text following</td>
-(Fixed - var $listjustfinished;)
-
-Setting the default font-family from the body tag using in-line CSS did not work e.g. <body style="font-family:mono"> (did work in external  stylesheets)
-(Fixed - fn.WriteHTML)
-
-<link href="..." rel="stylesheet"> was not recognised (because the href comes before the rel)
-(Fixed)
-
-Read linked CSS stylesheet OR @import stylesheet - now includes both.
-
-<tag class="class1 class2"> did not set either class1 or class2. Fixed so that it will now pick out class1 (better than nothing!)
-
-CSS line-height as % - interpreted 120% as 120 (x the font-size) - Fixed so it now accepts % and numbers
-
-Setting the basepath (used for relative links/external stylesheets etc) with $mpdf->setBasePath() was generally buggy!
-Now allows a domain e.g. $mpdf->setBasePath("http://www.domain.com"); (previously needed slash on end)
-(Fixed - hopefully!)
-
-If you were repeatedly calling mPDF in a loop to produce more than one PDF file, it would crash with error: "You have restricted the number of available fonts to 0". Fixed by editing line 751 require(_MPDF_PATH.'mpdf_config.php'); to require(...
-
-
-=============
-Improvements(?)
-=============
-Unsupported image files - mPDF died with an error message if image files didn't meet expected format e.g. an interlaced PNG file
-Changed so images are now replaced by the NOIMG image.
-
-Footer margin (HTML and normal footers) now determines the lowest point that is printed (rather than the place to start printing the footer)
-NB IMPORTANT CHANGE - not backwards comaptible
-
-Tabs in <pre> or <textarea> are now replaced by 8 spaces rather than 6 (consistent with http://www.w3.org/TR/1998/REC-html40-19980424/struct/text.html#edef-PRE)  [fn. AdjustHTML() in htmltoolkit.php]
-
-To insert the total number of pages in the document anywhere in the doc, just use '{nb}'
-The line:      $mpdf->AliasNbPages();
-has now been uncommented allowing {nb} to be used
-NB This will always give the total no. of pages in the whole document regardless of any changes you have made to page numbering.
-You can change the default placeholder '{nb}' to any string using:  $mpdf->AliasNbPages('[**my Chars**]');
-
-$mpdf->AliasNbPageGroups();    default="{nbpg}"
-Can be used to set the total number of pages in the current group i.e. between where page numbering is reset
-
-CSS border correctly fixes "solid 3mm #000000" i.e. (style width color) - (not a bug, but this is often incorrectly specified)
-
-Can now print div background behind a rotated table.
-
-You can keep columns as they are i.e. 1st column will finish page then start on second, by setting
-$mpdf->KeepColumns = true;
-
-Image constrain
-===============
-Image size is constrained to current margins and page position. Extra parameter added to end of fn. allows you to override this.
-$mpdf->Image('files/images/frontcover.jpg',0,0,210,297,'jpg','',true, false);  // e.g. the last "false" allows a full page picture
-Useful for e.g. a cover page for your document
-
-Cumulative CSS
-==============
-In version <=1.3, if you call:
-$mpdf->WriteHTML($stylesheet,1);
-$mpdf->WriteHTML($html);       // this one cleared the array $this->cascadeCSS; conatining cascaded CSS information from stylesheets
-You were meant to call:
-$mpdf->WriteHTML($html,2);     // which doesn't re-parse the CSS information
-v2.0 changed so that 
-$mpdf->WriteHTML($html); no longers clears the array $this->cascadeCSS and so can be used repeatedly;
-
-
-
-================================================
-Additional CSSstyles & HTML attributes supported
-================================================
-<BODY> - font-style, font-weight, color
-
-<IMG> - html attributes width="" and height=""
-
-<TABLE|TD|TH> - border: 'thin' 'medium' and 'thick' are now converted to 1px, 3px and 5px
-<TABLE|TD|TH> - border now respects all types - e.g. 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and 'inset'
-(NB mPDF only supports a full declaration of border e.g. "border: thin double #000000;")
-
-<TD|TH> - CSS style="white-space: nowrap" and HTML attribute nowrap="nowrap"
-<TABLE> - page-break-inside: avoid
-<TABLE> - border-collapse: separate|collapse
-<TABLE> - border-spacing: 2px 2px;     (horizontal/vertical) or just one figure (both) NB same as cellSpacing
-<TABLE> - empty-cells: hide|show  (border-collapse:separate only)
-<TABLE> - margin-left and margin-right (previously only supported top and bottom)
-<TABLE> - padding: (this was incorrectly used for TD/TH before) (border-collapse:separate only)
-<TD|TH> - padding:
-<TABLE|TD|TH> - inline style "background" works (with a color only) the same as "background-color"
-
-NB Table page-break-inside, autosize values and rotate are only respected for that set on first level table of nested tables
-
-<TABLE> - cellSpacing and cellPadding HTML attributes:
-NB cellSpacing is the same as CSS style "border-spacing"
-NB cellPadding is a <table> attribute, but sets the cell padding - not table padding
-
-<TABLE> - align="..." now works with a rotated table - but sets the alignment ignoring the rotation i.e. align=right sets the table to the right side of the page (looking as though it is bottom-aligned)
-
-<BLOCK ELEMENTS> - page-break-before: always|left|right - NB any surrounding block tags will be closed before the new page is inserted.
-
-@page - see notes on Paged Media
-
-==========================
-Unsupported HTML attribute
-==========================
-<TD border="1"> - not valid HTML - no longer supported
-
-
-=========
-Additions
-=========
-"Keep-with-table"
-$mpdf->use_kwt = true; // default=false
-If set to true, will force any H1-H6 header immediately preceding a table to be kept together with the table
-- automatically sets the table to fit on one page (i.e. page-break-inside=avoid) if it is a rotated table
-- ignored if: Columns on, Keep-block-together active (page-break-inside=avoid for surrounding BLOCK), active Forms
-
-
-=====
-Notes
-=====
-
-NB Not a change - but note you can use this to allow you to feed html code encoded in other than utf-8:
-$mpdf->allow_charset_conversion=true;
-$mpdf->charset_in='windows-1252';      (needs suitable codes for iconv i.e. windows-1252 not win-1252)
-
-Fixing Optional tags
-====================
-php.net website has illegal nesting of <dt>.. <dd> .. </dd> .. </dt>  and <p>.. <div> .. </div> .. </p>
-The example wich parses the php.net webpage will not show correctly unless you change: $mpdf->allow_html_optional_endtags=false;
-Trying to fix incorrect (X)HTML with $mpdf->allow_html_optional_endtags==true cancels the P when it meets a DIV etc.
-
-
-
-EAN barcode
-===========
-An EAN barcode can be generated
-function writeBarcode($code, $showisbn=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2) {
-It accepts 12 or 13 digits with or without - hyphens as $code e.g.
-$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y); 
-NB - IMPORTANT***
-A new font - OCR-B font/unifont is required, and needs to be added to the config.php file
-cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
-Barcode size must be between 0.8 and 2.0 (80% to 200%)
-
-CMYK Colors
-===========
-Functions - SetDrawColor, SetTextColor and SetFillColor all now take an optional 4th parameter.
-If defined this will interpret the input as CMYK color i.e.
-SetDrawColor(15,82,0,10)       // NB all values out of 100 - not 255 as for RGB
-
-htmltoolkit.php fn.ConvertColor() - now interprets custom color definition: cmyk(15,82,0,10)
-like rgb(r,g,b) except values out of 100
-Intended to be used for calling the functions separately - BUT works in a limited way with CSS - does not get reset or inherited correctly
-<p style="color:cmyk(215,31,15,10)"> does work
-
-
-DEFAULT CSS
-===========
-$defaultCSS has been updated to reflect better the standard HTML default e.g. using serif, table borders separate, cell vertical-align top
-To keep mPDF 1.3 (my favourites) I have introduced:
-$mpdf->useDefaultCSS2 = true;
-
-
-===================================
-Permissions - forms and Annotations - Experimental!
-===================================
-You can set the Permissions for the PDF file to allow the user to make Comments (annotations)
-$mpdf->setUserRights($enabled=true[default]|false, $annots="/Create/Delete/Modify/Copy/Import/Export",
-               $form="/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate", $signature="/Modify") )
-
-If you encrypt the file, make sure the permissions match e.g.:
-$mpdf->setUserRights();
-$mpdf->SetProtection(array('print','annots'),'yourPassword','myPassword');
-
-To allow this, changed the PDF-file version to %PDF1.5 (NB Probably needs PDF version > 1.5 but can't test for this...)
-
-NOTE: If you output the PDF file straight to the browser, it will only allow annotations after you save the document
-
-
-===========================
-Active Forms - Experimental!
-===========================
-At present , using active forms will prevent any internal and external links - that appear before active forms(?) - from working (why?)
-May need to save form for proper use - see example, when scroll forwards and back, the form disappears??
-Need to set Userrights (see above), and $mpdf->useActiveForms=true;
-For Output options, see separate notes.
-
-
-
-============================
-Internal Programming changes
-============================
-NB fn. tablerotate in htmltoolkit no longer used; now uses a 'transform' to shift the whole block of PDF code
-
-Graphics State
-==============
-ExtGState does not need to be redefined - e.g. if a watermark added on every page, turning on and off alpha/transparency
-Unnecessary file size.
-function AddExtGState() edited to check if graphics state already exists before adding new one
-
-ASCII-proof code
-================
-"»¤¬" used as a special identifier in the program changed to "\xbb\xa4\xac" to make the mpdf.php script file immune from someone saving it as a utf-8 encoded file
-
-Images
-======
-1) When copying remote images locally - incorrectly used "unset" now changed to "unlink"
-2) When parsing image files - was using CURL for any image src="http://... - even if this was on the local server - edited so it only uses CURL if necessary/appropriate.
-NB Handling images was updated in v1.3 because my ISP changed allow_url_fopen to false
-Fixed so mPDF tests if the file is available as a local call e.g. getimage('images/test.jpg') even if it is defined as a full URI e.g. http://www.mydomain.com/images/test.jpg as this is quicker(?), and permitted even if allow_url_fopen is false.
-If not available as a local file (and allow_url_fopen is set) mPDF tries to use fopen/file_get_contents using an http wrapper;
-Else, if CURL is available and allow_url_fopen is false: then tries using CURL.
-(Clear as mud???!!)
-
-
-===========================
-mPDF v1.3  (21/09/2008)
-===========================
---------------
-Page Numbering
---------------
-Program changes:
-fn. startPageNums() replaced with blank function
-fn. stopPageNums() - deleted
-fn. numPageNo() - deleted  (all it did was return this->page anyway).
-var $_numbering - deleted
-var $_numberingFooter - deleted
-var $_numPageNum - deleted
-
-NEW
-New: fn. AddPages() (as for AddPage but with type=NEXT-ODD or NEXT-EVEN see below)
-Edited: fn. AddPage() - new parameters added
-AddPage(orientation(NO),type="E|O", resetpagenum="1|0", pagenumstyle="I|i|A|a|1", suppress="on|off")
-New: fn. docPageNum() - returns the document page number (or '') based on...
-New : PageNumSubstitutions(array)
-New attributes:
-<pagebreak resetpagenum="1"    // resets document page numbering to 1 from the new page onwards
-<pagebreak suppress="on"       // turns on suppression of page numbering i.e. in headers and footers, {PAGENO} is replaced by blank string
-                                       // ="0" turns suppression off
-<pagebreak pagenumstyle="I|i|A|a|1"    // (re)sets page number stle/type from the new page onwards - as for lists
-                                       // 1 - decimal; A/a - alpha (uppercase/lowercase); I/i - Roman (uppercase/lowercase)
-<pagebreak type="NEXT-ODD"     // always adds a page + another if required to make odd
-<pagebreak type="NEXT-EVEN"    // always adds a page + another if required to make even
-
-Edited: fn. TOC()      // sets the marker for a Table of Contents
-New parameters allow the page-numbering details to be set
-NB the page-numbering details set are for the page which follows on after the TOC marker is inserted. The page-numbering for the actual ToC is set later, when the ToC is generated and inserted here
-new parameters as above for pagebreak  resetpagenum="1|0", pagenumstyle="I|i|A|a|1", suppress="on|off"
-
-Can also be set by attribute in the <TOC>
-<TOC resetpagenum="1" pagenumstyle="I|i|A|a|1", suppress="on|off" />
-
---------------------------------------------
-Changes to allow Rotated Text in table Cells
---------------------------------------------
-Edited:
-fn. OpenTag()
-fn. _tableColumnWidth()
-fn. _tableHeight()
-fn. _tableWrite()
-fn. tableHeader()
-
-New custom style or attribute -- "text-rotate" -- can be set for either <tr> or <th|td>
-Allowed values: 45 - 90 (written as integers) - rotates text anticlockwise, and -90 (clockwise)
-Positive values less than 90 force cell to: vertical-align:bottom
-
-Limitations:
-Only allows single line of text;
-Font, font-size, and style are determined by those set fro the cell, and cannot be changed;
-No changes in font (or any other in-line changes e.g. <sup>) are supported within the text
-
-Example: <tr style="text-rotate:90">...
-
----------
-Bug fixes
----------
-1) HTML footer containing table was triggering page break.
-Added $this->InHTMLFooter as flag to prevent page triggering in footers containing table
-Set in fn.writeHTMLFooters() -> in fn.tableWrite() stops the pageBreak being reset
-
-2) Crashing when libcurl not installed.
-Edited OpenTag() curl_init - added if (function_exists) to exclude crash when libcurl not installed
-
-3) Single cell with borders not showing the borders.
-e.g. <table><tr><td style="border:1px solid #000000?>Hi</td></tr></table>
-Problem: mPDF overrides cell border properties with table border properties for external borders. $defaultCSS had CSS defined for table as '0px solid #000000'
-Quick fix - line 273 removed. A more complete fix will require reprogramming to distinguish between "border property not set" and border property set as "none".
-
-4) Empty textarea incorrectly handled (the following HTML code being output in the textarea)
-The html code for an empty textarea was incorrectly handled in htmltoolkit fn. AdjustHTML which has been edited
-
-
-===========================
-mPDF v1.2   (2008-05-01)
-===========================
-// Added v1.2 option to continue if invalid UTF-8 chars - used in function is_utf8()
-var $ignore_invalid_utf8 = false;
-
-Reading CSS in fn. ReadCSS() and applying in fn. MergeCSS() -
-       Edited to allow Tags, class and id with the same name to be distinct i.e. h5 {...}  .h5 {...}  #h5 {...}
-* mPDF 1.2 This version supports:  .class {...} / #id { .... }
-* ADDED p {...}  h1[-h6] {...}  a {...}  table {...}   thead {...}  th {...}  td {...}  hr {...}
-* body {...} sets default font and fontsize
-* It supports some cascaded CSS e.g. div.topic table.type1 td
-* Does not support non-block level e.g. a#hover { ... }
-
-Table: font-size, weight, style, family and color should all work
-TD/TH: font-size, weight, style, family and color should all work
-
-Added to htmltoolkit - fn.array_merge_recursive_unique()
-
-memory_opt Removed in mPDF v1.2 - not working properly
-
-fn. _begindoc() - changed to %PDF1.4 (was 1.3) as PDF version
-
-Write HTML Headers and Footers
-------------------------------
-fn. Close() - calls writeHTMLHeaders/Footers() before finishing doc
-fn. WriteHTML() - added parameter
-fn. _out - writes to outputbuffer when writing HTML footers/headers
-
-New
-fn. writeHTMLHeaders()
-fn. writeHTMLFooters()
-
-
-
-
-=======================
-mPDF v1.1  (2008-05-01)
-=======================
-
-Programming changes to increase efficiency
-------------------------------------------
-fn. WriteHTML() - added lines to combine substituted characters <tta> etc
-
-Memory Optimization added (script from FPDF site) - edited fn. _putpages() and fn. _endpage()
-
-fn. SetFont() edited to return val quicker if font already set (increase efficiency)
-
-new vars chrs and ords are used to store chr() and ord() - quicker than using functions
-
-fn.setMBencoding() - only call mb_internal_encoding if need to change
-
-Bugs
-----
-fn. SetDefaultFontSize() - edited to allow to override that set in defaultCSS
-
-fn. Output() - Added temporary(?) disablement of encryption in CJK as it doesn't work!
-
-fn. OpenTag() [LI] $this->blockjustfinished=false to prevents newline after first bullet of list within table
-
-Uses of mb_ereg_replace removed, and mb_split changed - requires regex_encoding (regex_encoding only used as UTF-8)
-
-fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook " 
-
-fn. printbuffer() and fn. openTag() to ensure
- <div><div><p> outputs top margins/padding for both 1st and 2nd div
- and </p></div></div> ...
-
-fn. SetFont() added line - bug fixing in CJK fonts
-
-CSS functionality
------------------
-Added special CSS 'thead-underline' (similar to topntail)
-
-var $thead_font_weight;        added (openTag) to enable setting of font-weight for <TH> cells
-
-Fixed table border inheritance: Table border inherits border="1" to cells, but not table style="border..."
-
-"page-break-inside: avoid" added (var keep_block_together) to allow a DIV or P to be kept on one page
-       - not compatible with table autosize or table rotate
-       - only works over maximum of 2 pages
-
-Enhancements
-------------
-Orphans in line justification: R. Bracket ) added to defined list of orphans
-
-allow_url_open
---------------
-Following a change in the PHP ini config set on my website by my ISP, changes made to allow mPDF to work with allow_url_open=OFF.
-       - file_get_contents() changed to use libcurl (for CSS files)
-       - openTag('IMG') @fopen() and 3 functions _parsegif, _parseJPG, _parsePNG, edited to copy remote image files to local file to include images
-
-FlowChart
----------
-Changes to enable mPDF work with a custom script producing Flowcharts:
-       - WriteHTML() second parameter=3 will allow HTML to be parsed but not output
-       - fn. Arrow() added
-       - TableWordWrap() added parameter to force array return
diff --git a/inc/3rdparty/libraries/mpdf/CREDITS.txt b/inc/3rdparty/libraries/mpdf/CREDITS.txt
deleted file mode 100644 (file)
index 3fa5584..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-/*******************************************************************************
-* Software: FPDF                                                               *
-* Version:  1.53                                                               *
-* Date:     2004-12-31                                                         *
-* Author:   Olivier PLATHEY                                                    *
-* License:  Freeware                                                           *
-*                                                                              *
-* You may use and modify this software as you wish.                            *
-*******************************************************************************/
-
-/*******************************************************************************
-* HTML2FPDF is a php script to read a HTML text and generate a PDF file.       *
-* Copyright (C) 2004-2005 Renato Coelho                                        *
-*                                                                             *
-* html2fpdf.php, htmltoolkit.php                                               *
-*******************************************************************************/
-
-CREDITS From HTML2FPDF:
-
--Olivier Plathey for the fpdf.php class [http://www.fpdf.org]
--Damon Kohler for the Flowing Block script [mailto:damonkohler@yahoo.com]
--Clément Lavoillotte for HTML-oriented FPDF idea
--Yamasoft for the gif.php class [http://www.yamasoft.com/]
--Jérôme Fenal for the _parsegif() function
--"VIETCOM" for the PDFTable code [http://www.freepgs.com/vietcom/tool/pdftable/] [mailto:vncommando@yahoo.com]
--Yukihiro O. for the SetDash() function [mailto:yukihiro_o@infoseek.jp]
--Ron Korving for the WordWrap() function
--Michel Poulain for the DisplayPreferences() function
--Patrick Benny for the MultiCellBlt() function idea [no longer in use]
--Seb for the _SetTextRendering() and SetTextOutline() functions [mailto:captainseb@wanadoo.fr]
--MorphSoft for the colornames list idea
--W3SCHOOLS for HTML-related reference info [http://www.w3schools.com/]
-
-
-
-/****************************************************************************
-* Software: FPDF_Protection                                                 *
-* Version:  1.02                                                            *
-* Date:     2005/05/08                                                      *
-* Author:   Klemen VODOPIVEC                                                *
-* License:  Freeware                                                        *
-*                                                                           *
-* You may use and modify this software as you wish as stated in original    *
-* FPDF package.                                                             *
-****************************************************************************/
-
-/****************************************************************************
-//  FPDI - Version 1.2
-//
-//    Copyright 2004-2007 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-****************************************************************************/
-
-/****************************************************************************
-   * @copyright Khaled Al-Shamaa 2008
-   * @link http://www.ar-php.org
-   * @author Khaled Al-Shamaa <khaled@ar-php.org>
-   * @desc   Set of PHP5 / UTF-8 Classes developed to enhance Arabic web
-   *         applications by providing set of tools includes stem-based searching, 
-   *         translitiration, soundex, Hijri calendar, charset detection and
-   *         converter, spell numbers, keyboard language, Muslim prayer time, 
-   *         auto-summarization, and more...
-   * @package Arabic
-   *    
-   * @version 1.8 released in Feb 15, 2009
-   * 
-   * @license LGPL
-****************************************************************************/
-
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation;
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-[http://www.opensource.org/licenses/lgpl-license.php]
-
diff --git a/inc/3rdparty/libraries/mpdf/FONT INFO.txt b/inc/3rdparty/libraries/mpdf/FONT INFO.txt
deleted file mode 100644 (file)
index 0f7057c..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-
-=================
-Open Source Fonts
-=================
-mPDF should be able to read most TrueType Unicode font files with a .ttf extension
-Truetype fonts with .ttf or .otf extension and .ttc TrueType collections should also work OK.
-
-You will probably therefore have access to any number of fonts, but here are some useful sources for 
-open-source or free-use fonts. Many of these were included with earlier versions of mPDF:
-
-General collections
--------------------
-- DejaVu font collection from: http://dejavu-fonts.org/wiki/Main_Page (included in the release)
-- GNU FreeFont from: http://www.gnu.org/software/freefont/
-- Linux Libertine from: http://www.linuxlibertine.org (use the .ttf files - not the .otf)
-- Liberation Fonts from: https://fedorahosted.org/liberation-fonts/ or directly https://fedorahosted.org/releases/l/i/liberation-fonts/
-
-Thai fonts
-----------
-- Collection of Thai fonts from: ftp://linux.thai.net/pub/thailinux/software/thai-ttf/
-
-
-OCR-B
------
-OCRB (ocrb10) font: http://ansuz.sooke.bc.ca/software/ocrb.php
-       Useful for barcodes (included in the release)
-
-Pan-Unicode fonts (fonts containing most characters defined in Unicode)
------------------------------------------------------------------------
-- BitStream Cyberbit from: http://aol-4.vo.llnwd.net/pub/communicator/extras/fonts/windows/
-       Cyberbit.ZIP (or just Google it)
-       (NB if run with $debug_fonts gives warning of invalid table checksum - just turn it off!)
-- Code2000 (NB shareware) from: http://www.code2000.net/code2000_page.htm
-- Quivira from: http://www.quivira-font.com/ (combining diacritics are not placed correctly, but has a very full set of glyphs)
-
-
-CJK (Chinese-Japanese-Korean)
------------------------------
-HanNomA and B from: http://vietunicode.sourceforge.net/fonts/fonts_hannom.html
-unBatang_0613 from: http://people.ktug.or.kr/~nomos/mine/UnBatang_0613.ttf
-Sun-ExtA and Sun-ExtB from: http://www.alanwood.net/unicode/fonts-east-asian.html
-       (http://www.alanwood.net/downloads/index.html)
-Fonts which contain both Unicode BMP and SIP (Supplementary Ideographic Plane) 
-       characters in one file e.g. "AR PL UMing" and "AR PL UKai" 
-       from: http://www.freedesktop.org  
-       http://www.freedesktop.org/wiki/Software/CJKUnifonts/Download
-[MS Windows fonts such as MS Mincho and MingLiU also work] 
-Japanese IPA fonts: http://ossipedia.ipa.go.jp/ipafont/index.html
-
-Arabic/Eastern fonts
---------------------
-- XW Zar fonts can be downloaded from: http://www.redlers.com/downloadfont.html
-       (2 of these fonts are included in the release)
-       (original site in Farsi: http://wiki.irmug.org/index.php/XWZar)
-- See below for more details and font names of the fonts used in mPDF 4.x
-
-
-Other sources
--------------
-http://www.unifont.org/fontguide/
-http://www.alanwood.net/unicode/fonts.html
-http://cooltext.com (e.g. http://cooltext.com/Fonts-Unicode+Arabic)
-ApparatusSIL, DoulosSIL, Padauk from SIL: http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&cat_id=FontDownloads
-DaiBanna (Tai Le) 
-
-Mediaeval & Ancient Scripts
----------------------------
-Junicode: http://junicode.sourceforge.net/
-Cardo: http://scholarsfonts.net/cardofnt.html
-
-Syriac fonts
-------------
-http://www.bethmardutho.org/meltho/
-
-
-
-
-============
-ARABIC FONTS
-============
-You can use any appropriate Unicode-encoded .ttf or .ttc font file for arabic text, but
-the font file must include the Arabic Presentation Forms-B (U+FE70\96U+FEFF).
-2 of the XW Zar fonts are included in the release.
-
-
-
-===========
-INDIC FONTS
-===========
-Indic scripts e.g. Hindi, Bengali etc. use conjuct forms which have no Unicode assignment. You 
-cannot therefore use any standard .ttf font files with mPDF.
-
-A set of fonts has been adapted to use specifically with mPDF. They are based on a set of fonts from:
-
-http://www.cdacmumbai.in/projects/indix/e_introduction.shtml
-
-NB These fonts are released under GNU GPL Version 2 license
-
-You need these adapted fonts (ind_bn_1_001.ttf etc.) to work with mPDF, as the glyphs have been 
-assigned to Unicode values in the Private Use area (U+E000 ->). These are included in the 
-mPDF download.
-
-
-
-Users of mPDF v4.x
-------------------
-The original indic font files do not contain a full set of even basic ASCII
-characters. The fonts supplied have been "fixed" to include those extra
-characters. This now works whether the font is subset or not.
-
-
-
-=========
-CJK Fonts
-=========
-
-
-Supplemental Ideographic Plane
-==============================
-SIP = Supplemental Ideographic Plane ( = Plane 2) = U+20000 - U+2FFFF  (131072 - 196607)
-These characters are required for the HKSCS Hong Kong Supplementary Character Set. Fonts with 
-SIP characters are commonly divided into a second file e.g. MingLiU and MingLiU-ExtB
-
-mPDF requires 2 fonts and they should be cross-referenced in config_fonts.php e.g.
-       "sun-exta" => array(
-               'R' => "Sun-ExtA.ttf",
-               'sip-ext' => 'sun-extb',
-               ),
-       "sun-extb" => array(
-               'R' => "Sun-ExtB.ttf",
-               ),
-
---OR--
-(NB these ones also define the font number within the TTC Collection as TTCfontID)
-       'mingliu' => array (
-               'R' => 'mingliu.ttc',
-               'TTCfontID' => array (
-                       'R' => 1,
-               ),
-               'sip-ext' => 'mingliu-extb',
-       ),
-       'mingliu-extb' => array (
-               'R' => 'mingliub.ttc',
-               'TTCfontID' => array (
-                       'R' => 1,
-               ),
-       ),
-       'mingliu_hkscs' => array (
-               'R' => 'mingliu.ttc',
-               'TTCfontID' => array (
-                       'R' => 3,
-               ),
-               'sip-ext' => 'mingliu_hkscs-extb',
-       ),
-       'mingliu_hkscs-extb' => array (
-               'R' => 'mingliub.ttc',
-               'TTCfontID' => array (
-                       'R' => 3,
-               ),
-       ),
-
-
-
-
diff --git a/inc/3rdparty/libraries/mpdf/LICENSE.txt b/inc/3rdparty/libraries/mpdf/LICENSE.txt
deleted file mode 100644 (file)
index 5b6e7c6..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/inc/3rdparty/libraries/mpdf/README.txt b/inc/3rdparty/libraries/mpdf/README.txt
deleted file mode 100644 (file)
index e10cc57..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-Installation
-============
-    * Download the .zip file and unzip it
-    * Create a folder e.g. /mpdf on your server
-    * Upload all of the files to the server, maintaining the folders as they are
-    * Ensure that you have write permissions set (CHMOD 6xx or 7xx) for the following folders:
-        /ttfontdata/ - used to cache font data; improves performance a lot
-        /tmp/ - used for some images and ProgressBar
-        /graph_cache/ - if you are using JpGraph in conjunction with mPDF
-
-To test the installation, point your browser to the basic example file : [path_to_mpdf_folder]/mpdf/examples/example_basic.php
-
-If you wish to define a different folder for temporary files rather than /tmp/ see the note on 'Folder for temporary files' in 
- the section on Installation & Setup in the manual (http://mpdf1.com/manual/).
-
-If you have problems, please read the section on troubleshooting in the manual.
-
-
-Fonts
-=====
-I will refer to font names in 2 ways:
-"CSS font-family name" - mPDF is designed primarily to read HTML and CSS. This is the name used in CSS e.g.
-       <p style="font-family: 'Trebuchet MS';">
-
-"mPDF font-family name" - the name used internally to process fonts. This could be anything you like,
-       but by default mPDF will convert CSS font-family names by removing any spaces and changing
-       to lowercase. Reading the name above, mPDF will look for a "mPDF font-family name" of
-       'trebuchetms'.
-
-The configurable values referred to below are set in the config_fonts.php file
-
-When parsing HTML/CSS, mPDF will read the CSS font-family name (e.g. 'Trebuchet MS') and convert 
-by removing any spaces and changing to lowercase, to look for a mPDF font-family name (trebuchetms). 
-
-Next it will look for a translation (if set) e.g.:
-$this->fonttrans = array(
-       'trebuchetms' => 'trebuchet'
-)
-
-Now the mPDF font-family name to be used is 'trebuchet'
-
-If you wish to make this font available, you need to specify the Truetype .ttf font files for each variant.
-These should be defined in the array:
-$this->fontdata = array(
-       "trebuchet" => array(
-               'R' => "trebuc.ttf",
-               'B' => "trebucbd.ttf",
-               'I' => "trebucit.ttf",
-               'BI' => "trebucbi.ttf",
-               )
-)
-
-This is the array which determines whether a font is available to mPDF. Each font-family must have a
-Regular ['R'] file defined - the others (bold, italic, bold-italic) are optional.
-
-mPDF will try to load the font-file. If you have defined _MPDF_SYSTEM_TTFONTS at the top of the 
-config_fonts.php file, it will first look for the font-file there. This is useful if you are running 
-mPDF on a computer which already has a folder with TTF fonts in (e.g. on Windows)
-
-If the font-file is not there, or _MPDF_SYSTEM_TTFONTS is not defined, mPDF will look in the folder
-/[your_path_to_mpdf]/ttfonts/
-
-Note that the font-file names are case-sensitive and can contain capitals.
-
-If the folder /ttfontdata/ is writeable (CHMOD 644 or 755), mPDF will save files there which it can 
-re-use next time it accesses a particular font. This will significantly improve processing time
-and is strongly recommended. 
-
-mPDF should be able to read most TrueType Unicode font files with a .ttf extension
-Truetype fonts with .ttf extension that are OpenType also work OK.
-TrueType collections (.ttc) will also work if they contain TrueType Unicode fonts.
-
-
-Character substitution
-----------------------
-Most people will have access to a Pan-Unicode font with most Unicode characters in it such as 
-Arial Unicode MS. Set $this->backupSubsFont = array('arialunicodems'); at the top of the config_fonts.php file
-to use this font when substituting any characters not found in the specific font being used.
-
-Example:
-You can set $mpdf->useSubstitutions = true; at runtime
-or $this->useSubstitutions = true; in the config.php file
-
-<p style="font-family: 'Comic Sans MS'">This text contains a Thai character &#3617; which does not exist
-in the Comic Sans MS font file</p>
-
-When useSubstitutions is true, mPDF will try to find substitutions for any missing characters:
-1) firstly looks if the character is available in the inbuilt Symbols or ZapfDingbats fonts;
-2) [If defined] looks in each of the the font(s) set by $this->backupSubsFont array
-
-NB There is an increase in processing time when using substitutions, and even more so if
-a backupSubsFont is defined.
-
-Controlling mPDF mode
-=====================
-The first parameter of new mPDF('') works as follows:
-new mPDF('c') - forces mPDF to only use the built-in [c]ore Adobe fonts (Helvetica, Times etc)
-
-new mPDF('') - default - font subsetting behaviour is determined by the configurable variables
-       $this->maxTTFFilesize and $this->percentSubset (see below)
-       Default values are set so that: 1) very large font files are always subset
-       2) Fonts are embedded as subsets if < 30% of the characters are used
-
-new mPDF('..-x') - used together with a language or language/country code, this will cause
-       mPDF to use only in-built core fonts (Helvetica, Times) if the language specified is appropiate; 
-       otherwise it will force subsetting (equivalent to using "")
-       e.g. new mPDF('de-x') or new mPDF('pt-BR-x') will use in-built core fonts
-       and new mPDF('ru-x') will use subsets of any available TrueType fonts
-       The languages that use core fonts are defined in config_cp.php (using the value $coreSuitable).
-
-new mPDF('..+aCJK')  new mPDF('+aCJK')
-new mPDF('..-aCJK')  new mPDF('-aCJK')
-        - used optionally together with a language or language/country code, +aCJK will force mPDF
-       to use the Adobe non-embedded CJK fonts when a passage is marked with e.g. "lang: ja"
-       This can be used at runtime to override the value set for $mpdf->useAdobeCJK in config.php
-       Use in conjunction with settings in config_cp.php
-
-For backwards compatibility, new mPDF('-s') and new mPDF('s') will force subsetting by 
-       setting $this->percentSubset=100 (see below)
-       new mPDF('utf-8-s') and new mPDF('ar-s') are also recognised
-
-Language/Country (ll-cc)
-------------------------
-You can use a language code ('en') or language/country code ('en-GB') to control which 
-mode/fonts are used. The behaviour is set up in config_cp.php file.
-The default settings show some of the things you can do:
-new mPDF('de') - as German is a Western European langauge, it is suitable to use the Adobe core fonts.
-       Using 'de' alone will do nothing, but if you use ('de-x'), this will use core fonts.
-new mPDF('th') - many fonts do not contain the characters necessary for Thai script. The value $unifonts 
-       defines a restricted list of fonts available for mPDF to use.
-
-NB <html dir="rtl"> or <body dir="rtl"> are supported.
-
-
-
-Configuration variables changed
-===============================
-Configuration variables are documented in the on-line manual (http://mpdf1.com/manual/).
-
-
-Font folders
-============
-If you wish to define your own font file folders (perhaps to share),
-you can define the 2 constants in your script before including the mpdf.php script e.g.:
-
-define('_MPDF_TTFONTPATH','your_path/ttfonts/');               
-define('_MPDF_TTFONTDATAPATH','your_path/ttfontdata/');        // should be writeable
-
diff --git a/inc/3rdparty/libraries/mpdf/classes/bmp.php b/inc/3rdparty/libraries/mpdf/classes/bmp.php
deleted file mode 100644 (file)
index 896ced8..0000000
+++ /dev/null
@@ -1,248 +0,0 @@
-<?php
-
-class bmp {
-
-var $mpdf = null;
-
-function bmp(&$mpdf) {
-       $this->mpdf = $mpdf;
-}
-
-
-function _getBMPimage($data, $file) {
-       $info = array();
-               // Adapted from script by Valentin Schmidt
-               // http://staff.dasdeck.de/valentin/fpdf/fpdf_bmp/
-               $bfOffBits=$this->_fourbytes2int_le(substr($data,10,4));
-               $width=$this->_fourbytes2int_le(substr($data,18,4));
-               $height=$this->_fourbytes2int_le(substr($data,22,4));
-               $flip = ($height<0);
-               if ($flip) $height =-$height;
-               $biBitCount=$this->_twobytes2int_le(substr($data,28,2));
-               $biCompression=$this->_fourbytes2int_le(substr($data,30,4)); 
-               $info = array('w'=>$width, 'h'=>$height);
-               if ($biBitCount<16){
-                       $info['cs'] = 'Indexed';
-                       $info['bpc'] = $biBitCount;
-                       $palStr = substr($data,54,($bfOffBits-54));
-                       $pal = '';
-                       $cnt = strlen($palStr)/4;
-                       for ($i=0;$i<$cnt;$i++){
-                               $n = 4*$i;
-                               $pal .= $palStr[$n+2].$palStr[$n+1].$palStr[$n];
-                       }
-                       $info['pal'] = $pal;
-               }
-               else{
-                       $info['cs'] = 'DeviceRGB';
-                       $info['bpc'] = 8;
-               }
-
-               if ($this->mpdf->restrictColorSpace==1 || $this->mpdf->PDFX || $this->mpdf->restrictColorSpace==3) {
-                       if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { $this->mpdf->PDFAXwarnings[] = "Image cannot be converted to suitable colour space for PDFA or PDFX file - ".$file." - (Image replaced by 'no-image'.)"; }
-                       return array('error' => "BMP Image cannot be converted to suitable colour space - ".$file." - (Image replaced by 'no-image'.)"); 
-               }
-
-               $biXPelsPerMeter=$this->_fourbytes2int_le(substr($data,38,4));  // horizontal pixels per meter, usually set to zero
-               //$biYPelsPerMeter=$this->_fourbytes2int_le(substr($data,42,4));        // vertical pixels per meter, usually set to zero
-               $biXPelsPerMeter=round($biXPelsPerMeter/1000 *25.4);
-               //$biYPelsPerMeter=round($biYPelsPerMeter/1000 *25.4);
-               $info['set-dpi'] = $biXPelsPerMeter; 
-
-               switch ($biCompression){
-                 case 0:
-                       $str = substr($data,$bfOffBits);
-                       break;
-                 case 1: # BI_RLE8
-                       $str = $this->rle8_decode(substr($data,$bfOffBits), $width);
-                       break;
-                 case 2: # BI_RLE4
-                       $str = $this->rle4_decode(substr($data,$bfOffBits), $width);
-                       break;
-               }
-               $bmpdata = '';
-               $padCnt = (4-ceil(($width/(8/$biBitCount)))%4)%4;
-               switch ($biBitCount){
-                 case 1:
-                 case 4:
-                 case 8:
-                       $w = floor($width/(8/$biBitCount)) + ($width%(8/$biBitCount)?1:0);
-                       $w_row = $w + $padCnt;
-                       if ($flip){
-                               for ($y=0;$y<$height;$y++){
-                                       $y0 = $y*$w_row;
-                                       for ($x=0;$x<$w;$x++)
-                                               $bmpdata .= $str[$y0+$x];
-                               }
-                       }else{
-                               for ($y=$height-1;$y>=0;$y--){
-                                       $y0 = $y*$w_row;
-                                       for ($x=0;$x<$w;$x++)
-                                               $bmpdata .= $str[$y0+$x];
-                               }
-                       }
-                       break;
-
-                 case 16:
-                       $w_row = $width*2 + $padCnt;
-                       if ($flip){
-                               for ($y=0;$y<$height;$y++){
-                                       $y0 = $y*$w_row;
-                                       for ($x=0;$x<$width;$x++){
-                                               $n = (ord( $str[$y0 + 2*$x + 1])*256 +    ord( $str[$y0 + 2*$x]));
-                                               $b = ($n & 31)<<3; $g = ($n & 992)>>2; $r = ($n & 31744)>>7128;
-                                               $bmpdata .= chr($r) . chr($g) . chr($b);
-                                       }
-                               }
-                       }else{
-                               for ($y=$height-1;$y>=0;$y--){
-                                       $y0 = $y*$w_row;
-                                       for ($x=0;$x<$width;$x++){
-                                               $n = (ord( $str[$y0 + 2*$x + 1])*256 +    ord( $str[$y0 + 2*$x]));
-                                               $b = ($n & 31)<<3; $g = ($n & 992)>>2; $r = ($n & 31744)>>7;
-                                               $bmpdata .= chr($r) . chr($g) . chr($b);
-                                       }
-                               }
-                       }
-                       break;
-
-                 case 24:
-                 case 32:
-                       $byteCnt = $biBitCount/8;
-                       $w_row = $width*$byteCnt + $padCnt;
-
-                       if ($flip){
-                               for ($y=0;$y<$height;$y++){
-                                       $y0 = $y*$w_row;
-                                       for ($x=0;$x<$width;$x++){
-                                               $i = $y0 + $x*$byteCnt ; # + 1
-                                               $bmpdata .= $str[$i+2].$str[$i+1].$str[$i];
-                                       }
-                               }
-                       }else{
-                               for ($y=$height-1;$y>=0;$y--){
-                                       $y0 = $y*$w_row;
-                                       for ($x=0;$x<$width;$x++){
-                                               $i = $y0 + $x*$byteCnt ; # + 1
-                                               $bmpdata .= $str[$i+2].$str[$i+1].$str[$i];
-                                       }
-                               }
-                       }
-                       break;
-
-                 default:
-                       return array('error' => 'Error parsing BMP image - Unsupported image biBitCount'); 
-               }
-               if ($this->mpdf->compress) {
-                       $bmpdata=gzcompress($bmpdata);
-                       $info['f']='FlateDecode';
-               } 
-               $info['data']=$bmpdata;
-               $info['type']='bmp';
-               return $info;
-}
-
-function _fourbytes2int_le($s) {
-       //Read a 4-byte integer from string
-       return (ord($s[3])<<24) + (ord($s[2])<<16) + (ord($s[1])<<8) + ord($s[0]);
-}
-
-function _twobytes2int_le($s) {
-       //Read a 2-byte integer from string
-       return (ord(substr($s, 1, 1))<<8) + ord(substr($s, 0, 1));
-}
-
-
-# Decoder for RLE8 compression in windows bitmaps
-# see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp
-function rle8_decode ($str, $width){
-    $lineWidth = $width + (3 - ($width-1) % 4);
-    $out = '';
-    $cnt = strlen($str);
-    for ($i=0;$i<$cnt;$i++){
-        $o = ord($str[$i]);
-        switch ($o){
-            case 0: # ESCAPE
-                $i++;
-                switch (ord($str[$i])){
-                    case 0: # NEW LINE
-                         $padCnt = $lineWidth - strlen($out)%$lineWidth;
-                        if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line
-                        break;
-                    case 1: # END OF FILE
-                        $padCnt = $lineWidth - strlen($out)%$lineWidth;
-                        if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line
-                         break 3;
-                    case 2: # DELTA
-                        $i += 2;
-                        break;
-                    default: # ABSOLUTE MODE
-                        $num = ord($str[$i]);
-                        for ($j=0;$j<$num;$j++)
-                            $out .= $str[++$i];
-                        if ($num % 2) $i++;
-             }
-                break;
-            default:
-                $out .= str_repeat($str[++$i], $o);
-        }
-    }
-    return $out;
-}
-
-# Decoder for RLE4 compression in windows bitmaps
-# see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp
-function rle4_decode ($str, $width){
-    $w = floor($width/2) + ($width % 2);
-    $lineWidth = $w + (3 - ( ($width-1) / 2) % 4);    
-    $pixels = array();
-    $cnt = strlen($str);
-    for ($i=0;$i<$cnt;$i++){
-        $o = ord($str[$i]);
-        switch ($o){
-            case 0: # ESCAPE
-                $i++;
-                switch (ord($str[$i])){
-                    case 0: # NEW LINE                        
-                        while (count($pixels)%$lineWidth!=0)
-                            $pixels[]=0;
-                        break;
-                    case 1: # END OF FILE
-                        while (count($pixels)%$lineWidth!=0)
-                            $pixels[]=0;
-                        break 3;
-                    case 2: # DELTA
-                        $i += 2;
-                        break;
-                    default: # ABSOLUTE MODE
-                        $num = ord($str[$i]);
-                        for ($j=0;$j<$num;$j++){
-                            if ($j%2==0){
-                                $c = ord($str[++$i]);
-                              $pixels[] = ($c & 240)>>4;
-                             } else
-                              $pixels[] = $c & 15;
-                        }
-                        if ($num % 2) $i++;
-             }
-                break;
-            default:
-                $c = ord($str[++$i]);
-                for ($j=0;$j<$o;$j++)
-                    $pixels[] = ($j%2==0 ? ($c & 240)>>4 : $c & 15);
-        }
-    }
-    
-    $out = '';
-    if (count($pixels)%2) $pixels[]=0;
-    $cnt = count($pixels)/2;
-    for ($i=0;$i<$cnt;$i++)
-        $out .= chr(16*$pixels[2*$i] + $pixels[2*$i+1]);
-    return $out;
-} 
-
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/cssmgr.php b/inc/3rdparty/libraries/mpdf/classes/cssmgr.php
deleted file mode 100644 (file)
index db32503..0000000
+++ /dev/null
@@ -1,1572 +0,0 @@
-<?php
-
-class cssmgr {
-
-var $mpdf = null;
-
-var $tablecascadeCSS;
-var $listcascadeCSS;
-var $cascadeCSS;
-var $CSS;
-var $tbCSSlvl;
-var $listCSSlvl;
-
-
-function cssmgr(&$mpdf) {
-       $this->mpdf = $mpdf;
-       $this->tablecascadeCSS = array();
-       $this->listcascadeCSS = array();
-       $this->CSS=array();
-       $this->cascadeCSS = array();
-       $this->tbCSSlvl = 0;
-       $this->listCSSlvl = 0;
-}
-
-
-function ReadDefaultCSS($CSSstr) {
-       $CSS = array();
-       $CSSstr = preg_replace('|/\*.*?\*/|s',' ',$CSSstr);
-       $CSSstr = preg_replace('/[\s\n\r\t\f]/s',' ',$CSSstr);
-       $CSSstr = preg_replace('/(<\!\-\-|\-\->)/s',' ',$CSSstr);
-       if ($CSSstr ) {
-               preg_match_all('/(.*?)\{(.*?)\}/',$CSSstr,$styles);
-               for($i=0; $i < count($styles[1]) ; $i++)  {
-                       $stylestr= trim($styles[2][$i]);
-                       $stylearr = explode(';',$stylestr);
-                       foreach($stylearr AS $sta) {
-                               if (trim($sta)) {
-                                       // Changed to allow style="background: url('http://www.bpm1.com/bg.jpg')"
-                                       list($property,$value) = explode(':',$sta,2);
-                                       $property = trim($property);
-                                       $value = preg_replace('/\s*!important/i','',$value);
-                                       $value = trim($value);
-                                       if ($property && ($value || $value==='0')) {
-                                               $classproperties[strtoupper($property)] = $value;
-                                       }
-                               }
-                       }
-                       $classproperties = $this->fixCSS($classproperties);
-                       $tagstr = strtoupper(trim($styles[1][$i]));
-                       $tagarr = explode(',',$tagstr);
-                       foreach($tagarr AS $tg) {
-                               $tags = preg_split('/\s+/',trim($tg));
-                               $level = count($tags);
-                               if ($level == 1) {              // e.g. p or .class or #id or p.class or p#id
-                                       $t = trim($tags[0]);
-                                       if ($t) {
-                                               $tag = '';
-                                               if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
-                                               if ($this->CSS[$tag] && $tag) { $CSS[$tag] = $this->array_merge_recursive_unique($CSS[$tag], $classproperties); }
-                                               else if ($tag) { $CSS[$tag] = $classproperties; }
-                                       }
-                               }
-                       }
-                       $properties = array();
-                       $values = array();
-                       $classproperties = array();
-               }
-
-       } // end of if
-       return $CSS;
-}
-
-
-
-function ReadCSS($html) {
-       preg_match_all('/<style[^>]*media=["\']([^"\'>]*)["\'].*?<\/style>/is',$html,$m);
-       for($i=0; $i<count($m[0]); $i++) {
-               if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) { 
-                       $html = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$html);
-               }
-       }
-       preg_match_all('/<link[^>]*media=["\']([^"\'>]*)["\'].*?>/is',$html,$m);
-       for($i=0; $i<count($m[0]); $i++) {
-               if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) { 
-                       $html = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$html);
-               }
-       }
-
-       // mPDF 5.5.02
-       // Remove Comment tags <!-- ... --> inside CSS as <style> in HTML document
-       // Remove Comment tags /* ...  */ inside CSS as <style> in HTML document
-       // But first, we replace upper and mixed case closing style tag with lower
-       // case so we can use str_replace later.
-       preg_replace('/<\/style>/i', '</style>', $html);
-       preg_match_all('/<style.*?>(.*?)<\/style>/si',$html,$m);
-       if (count($m[1])) { 
-               for($i=0;$i<count($m[1]);$i++) {
-                       // Remove comment tags 
-                       $sub = preg_replace('/(<\!\-\-|\-\->)/s',' ',$m[1][$i]);
-                       $sub = '>'.preg_replace('|/\*.*?\*/|s',' ',$sub).'</style>';
-                       $html = str_replace('>'.$m[1][$i].'</style>', $sub, $html);
-               }
-       }
-
-
-       $html = preg_replace('/<!--mpdf/i','',$html);
-       $html = preg_replace('/mpdf-->/i','',$html);
-       $html = preg_replace('/<\!\-\-.*?\-\->/s',' ',$html);
-
-       $match = 0; // no match for instance
-       $regexp = ''; // This helps debugging: showing what is the REAL string being processed
-       $CSSext = array(); 
-
-       //CSS inside external files
-       $regexp = '/<link[^>]*rel=["\']stylesheet["\'][^>]*href=["\']([^>"\']*)["\'].*?>/si';
-       $x = preg_match_all($regexp,$html,$cxt);
-       if ($x) { 
-               $match += $x; 
-               $CSSext = $cxt[1];
-       }
-
-       $regexp = '/<link[^>]*href=["\']([^>"\']*)["\'][^>]*?rel=["\']stylesheet["\'].*?>/si';
-       $x = preg_match_all($regexp,$html,$cxt);
-       if ($x) { 
-               $match += $x; 
-               $CSSext = array_merge($CSSext,$cxt[1]);
-       }
-
-       // look for @import stylesheets
-       //$regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css)[\'\"]{0,1}\)/si';
-       $regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
-       $x = preg_match_all($regexp,$html,$cxt);
-       if ($x) { 
-               $match += $x; 
-               $CSSext = array_merge($CSSext,$cxt[1]);
-       }
-
-       // look for @import without the url()
-       //$regexp = '/@import [\'\"]{0,1}([^;]*?\.css)[\'\"]{0,1}/si';
-       $regexp = '/@import [\'\"]{0,1}([^;]*?\.css(\?\S+)?)[\'\"]{0,1}/si';
-       $x = preg_match_all($regexp,$html,$cxt);
-       if ($x) { 
-               $match += $x; 
-               $CSSext = array_merge($CSSext,$cxt[1]);
-       }
-
-       $ind = 0;
-       $CSSstr = '';
-
-       if (!is_array($this->cascadeCSS)) $this->cascadeCSS = array();
-
-       while($match){
-               $path = $CSSext[$ind];
-               $this->mpdf->GetFullPath($path); 
-               $CSSextblock = $this->mpdf->_get_file($path);
-               if ($CSSextblock) {
-                       // look for embedded @import stylesheets in other stylesheets
-                       // and fix url paths (including background-images) relative to stylesheet
-                       //$regexpem = '/@import url\([\'\"]{0,1}(.*?\.css)[\'\"]{0,1}\)/si';
-                       $regexpem = '/@import url\([\'\"]{0,1}(.*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
-                       $xem = preg_match_all($regexpem,$CSSextblock,$cxtem);
-                       $cssBasePath = preg_replace('/\/[^\/]*$/','',$path) . '/';
-                       if ($xem) { 
-                               foreach($cxtem[1] AS $cxtembedded) {
-                                       // path is relative to original stlyesheet!!
-                                       $this->mpdf->GetFullPath($cxtembedded, $cssBasePath );
-                                       $match++; 
-                                       $CSSext[] = $cxtembedded;
-                               }
-                       }
-                       $regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
-                       $xem = preg_match_all($regexpem,$CSSextblock,$cxtem);
-                       if ($xem) { 
-                               for ($i=0;$i<count($cxtem[0]);$i++) {
-                                       // path is relative to original stlyesheet!!
-                                       $embedded = $cxtem[2][$i];
-                                       if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
-                                               $this->mpdf->GetFullPath($embedded, $cssBasePath );
-                                               $CSSextblock = preg_replace('/'.preg_quote($cxtem[0][$i],'/').'/', ($cxtem[1][$i].$embedded.$cxtem[3][$i]), $CSSextblock);
-                                       }
-                               }
-                       }
-                       $CSSstr .= ' '.$CSSextblock;
-               }
-               $match--;
-               $ind++;
-       } //end of match
-
-       $match = 0; // reset value, if needed
-       // CSS as <style> in HTML document
-       $regexp = '/<style.*?>(.*?)<\/style>/si'; 
-       $match = preg_match_all($regexp,$html,$CSSblock);
-       if ($match) {
-               $tmpCSSstr = implode(' ',$CSSblock[1]);
-               $regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
-               $xem = preg_match_all($regexpem,$tmpCSSstr ,$cxtem);
-               if ($xem) { 
-                  for ($i=0;$i<count($cxtem[0]);$i++) {
-                       $embedded = $cxtem[2][$i];
-                       if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
-                               $this->mpdf->GetFullPath($embedded);
-                               $tmpCSSstr = preg_replace('/'.preg_quote($cxtem[0][$i],'/').'/', ($cxtem[1][$i].$embedded.$cxtem[3][$i]), $tmpCSSstr );
-                       }
-                  }
-               }
-               $CSSstr .= ' '.$tmpCSSstr;
-       }
-       // Remove comments
-       $CSSstr = preg_replace('|/\*.*?\*/|s',' ',$CSSstr);
-       $CSSstr = preg_replace('/[\s\n\r\t\f]/s',' ',$CSSstr);
-
-       if (preg_match('/@media/',$CSSstr)) { 
-               preg_match_all('/@media(.*?)\{(([^\{\}]*\{[^\{\}]*\})+)\s*\}/is',$CSSstr,$m);
-               for($i=0; $i<count($m[0]); $i++) {
-                       if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) { 
-                               $CSSstr = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$CSSstr);
-                       }
-                       else {
-                               $CSSstr = preg_replace('/'.preg_quote($m[0][$i],'/').'/',' '.$m[2][$i].' ',$CSSstr);
-                       }
-               }
-       }
-
-       // Replace any background: url(data:image... with temporary image file reference
-       preg_match_all("/(url\(data:image\/(jpeg|gif|png);base64,(.*?)\))/si", $CSSstr, $idata);        // mPDF 5.7.2
-       if (count($idata[0])) { 
-               for($i=0;$i<count($idata[0]);$i++) {
-                       $file = _MPDF_TEMP_PATH.'_tempCSSidata'.RAND(1,10000).'_'.$i.'.'.$idata[2][$i];
-                       //Save to local file
-                       file_put_contents($file, base64_decode($idata[3][$i]));
-                       // $this->mpdf->GetFullPath($file);     // ? is this needed - NO  mPDF 5.6.03
-                       $CSSstr = str_replace($idata[0][$i], 'url("'.$file.'")', $CSSstr);      // mPDF 5.5.17
-               }
-       }
-
-       $CSSstr = preg_replace('/(<\!\-\-|\-\->)/s',' ',$CSSstr);
-       if ($CSSstr ) {
-               preg_match_all('/(.*?)\{(.*?)\}/',$CSSstr,$styles);
-               for($i=0; $i < count($styles[1]) ; $i++)  {
-                       // SET array e.g. $classproperties['COLOR'] = '#ffffff';
-                       $stylestr= trim($styles[2][$i]);
-                       $stylearr = explode(';',$stylestr);
-                       foreach($stylearr AS $sta) {
-                               if (trim($sta)) { 
-                                       // Changed to allow style="background: url('http://www.bpm1.com/bg.jpg')"
-                                       list($property,$value) = explode(':',$sta,2);
-                                       $property = trim($property);
-                                       $value = preg_replace('/\s*!important/i','',$value);
-                                       $value = trim($value);
-                                       if ($property && ($value || $value==='0')) {
-                                       // Ignores -webkit-gradient so doesn't override -moz-
-                                               if ((strtoupper($property)=='BACKGROUND-IMAGE' || strtoupper($property)=='BACKGROUND') && preg_match('/-webkit-gradient/i',$value)) { 
-                                                       continue; 
-                                               }
-                                               $classproperties[strtoupper($property)] = $value;
-                                       }
-                               }
-                       }
-                       $classproperties = $this->fixCSS($classproperties);
-                       $tagstr = strtoupper(trim($styles[1][$i]));
-                       $tagarr = explode(',',$tagstr);
-                       $pageselectors = false; // used to turn on $this->mpdf->mirrorMargins
-                       foreach($tagarr AS $tg) {
-                               $tags = preg_split('/\s+/',trim($tg));
-                               $level = count($tags);
-                               $t = '';
-                               $t2 = '';
-                               $t3 = '';
-                               if (trim($tags[0])=='@PAGE') {
-                                       if (isset($tags[0])) { $t = trim($tags[0]); }
-                                       if (isset($tags[1])) { $t2 = trim($tags[1]); }
-                                       if (isset($tags[2])) { $t3 = trim($tags[2]); }
-                                       $tag = '';
-                                       if ($level==1) { $tag = $t; }
-                                       else if ($level==2 && preg_match('/^[:](.*)$/',$t2,$m)) { 
-                                               $tag = $t.'>>PSEUDO>>'.$m[1]; 
-                                               if ($m[1]=='LEFT' || $m[1]=='RIGHT') { $pageselectors = true; } // used to turn on $this->mpdf->mirrorMargins 
-                                       }
-                                       else if ($level==2) { $tag = $t.'>>NAMED>>'.$t2; }
-                                       else if ($level==3 && preg_match('/^[:](.*)$/',$t3,$m)) { 
-                                               $tag = $t.'>>NAMED>>'.$t2.'>>PSEUDO>>'.$m[1]; 
-                                               if ($m[1]=='LEFT' || $m[1]=='RIGHT') { $pageselectors = true; } // used to turn on $this->mpdf->mirrorMargins
-                                       }
-                                       if (isset($this->CSS[$tag]) && $tag) { $this->CSS[$tag] = $this->array_merge_recursive_unique($this->CSS[$tag], $classproperties); }
-                                       else if ($tag) { $this->CSS[$tag] = $classproperties; }
-                               }
-
-                               else if ($level == 1) {         // e.g. p or .class or #id or p.class or p#id
-                               if (isset($tags[0])) { $t = trim($tags[0]); }
-                                       if ($t) {
-                                               $tag = '';
-                                               if (preg_match('/^[.](.*)$/',$t,$m)) { $tag = 'CLASS>>'.$m[1]; }
-                                               else if (preg_match('/^[#](.*)$/',$t,$m)) { $tag = 'ID>>'.$m[1]; }
-                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[.](.*)$/',$t,$m)) { $tag = $m[1].'>>CLASS>>'.$m[2]; }
-                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')\s*:NTH-CHILD\((.*)\)$/',$t,$m)) { $tag = $m[1].'>>SELECTORNTHCHILD>>'.$m[2]; }
-                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[#](.*)$/',$t,$m)) { $tag = $m[1].'>>ID>>'.$m[2]; }
-                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
-                                               if (isset($this->CSS[$tag]) && $tag) { $this->CSS[$tag] = $this->array_merge_recursive_unique($this->CSS[$tag], $classproperties); }
-                                               else if ($tag) { $this->CSS[$tag] = $classproperties; }
-                                       }
-                               }
-                               else {
-                                       $tmp = array();
-                                       for($n=0;$n<$level;$n++) {
-                                               if (isset($tags[$n])) { $t = trim($tags[$n]); }
-                                               else { $t = ''; }
-                                               if ($t) {
-                                                       $tag = '';
-                                                       if (preg_match('/^[.](.*)$/',$t,$m)) { $tag = 'CLASS>>'.$m[1]; }
-                                                       else if (preg_match('/^[#](.*)$/',$t,$m)) { $tag = 'ID>>'.$m[1]; }
-                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[.](.*)$/',$t,$m)) { $tag = $m[1].'>>CLASS>>'.$m[2]; }
-                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')\s*:NTH-CHILD\((.*)\)$/',$t,$m)) { $tag = $m[1].'>>SELECTORNTHCHILD>>'.$m[2]; }
-                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[#](.*)$/',$t,$m)) { $tag = $m[1].'>>ID>>'.$m[2]; }
-                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
-
-                                                       if ($tag) $tmp[] = $tag;
-                                                       else { break; }
-                                               }
-                                       }
-                  
-                                       if ($tag) {
-                                               $x = &$this->cascadeCSS; 
-                                               foreach($tmp AS $tp) { $x = &$x[$tp]; }
-                                               $x = $this->array_merge_recursive_unique($x, $classproperties); 
-                                               $x['depth'] = $level;
-                                       }
-                               }
-                       }
-                       if ($pageselectors) { $this->mpdf->mirrorMargins = true; }
-                       $properties = array();
-                       $values = array();
-                       $classproperties = array();
-               }
-       } // end of if
-       //Remove CSS (tags and content), if any
-       $regexp = '/<style.*?>(.*?)<\/style>/si'; // it can be <style> or <style type="txt/css"> 
-       $html = preg_replace($regexp,'',$html);
-//print_r($this->CSS); exit;
-//print_r($this->cascadeCSS); exit;
-       return $html;
-}
-
-
-
-function readInlineCSS($html) {
-       //Fix incomplete CSS code
-       $size = strlen($html)-1;
-       if (substr($html,$size,1) != ';') $html .= ';';
-       //Make CSS[Name-of-the-class] = array(key => value)
-       $regexp = '|\\s*?(\\S+?):(.+?);|i';
-       preg_match_all( $regexp, $html, $styleinfo);
-       $properties = $styleinfo[1];
-       $values = $styleinfo[2];
-       //Array-properties and Array-values must have the SAME SIZE!
-       $classproperties = array();
-       for($i = 0; $i < count($properties) ; $i++) {
-               // Ignores -webkit-gradient so doesn't override -moz-
-               if ((strtoupper($properties[$i])=='BACKGROUND-IMAGE' || strtoupper($properties[$i])=='BACKGROUND') && preg_match('/-webkit-gradient/i',$values[$i])) { 
-                       continue; 
-               }
-               $classproperties[strtoupper($properties[$i])] = trim($values[$i]);
-       }
-       return $this->fixCSS($classproperties);
-}
-
-
-
-function _fix_borderStr($bd) {
-       preg_match_all("/\((.*?)\)/", $bd, $m);
-       if (count($m[1])) { 
-               for($i=0;$i<count($m[1]);$i++) {
-                       $sub = preg_replace("/ /", "", $m[1][$i]);
-                       $bd = preg_replace('/'.preg_quote($m[1][$i], '/').'/si', $sub, $bd); 
-               }
-       }
-
-       $prop = preg_split('/\s+/',trim($bd));
-       $w = 'medium';
-       $c = '#000000';
-       $s = 'none';
-
-       if ( count($prop) == 1 ) { 
-               // solid
-               if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $s = $prop[0]; }
-               // #000000
-               else if (is_array($this->mpdf->ConvertColor($prop[0]))) { $c = $prop[0]; }
-               // 1px 
-               else { $w = $prop[0]; }
-       }
-       else if (count($prop) == 2 ) { 
-               // 1px solid 
-               if (in_array($prop[1],$this->mpdf->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $w = $prop[0]; $s = $prop[1]; }
-               // solid #000000 
-               else if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $s = $prop[0]; $c = $prop[1]; }
-               // 1px #000000 
-               else { $w = $prop[0]; $c = $prop[1]; }
-       }
-       else if ( count($prop) == 3 ) {
-               // Change #000000 1px solid to 1px solid #000000 (proper)
-               if (substr($prop[0],0,1) == '#') { $c = $prop[0]; $w = $prop[1]; $s = $prop[2]; }
-               // Change solid #000000 1px to 1px solid #000000 (proper)
-               else if (substr($prop[0],1,1) == '#') { $s = $prop[0]; $c = $prop[1]; $w = $prop[2]; }
-               // Change solid 1px #000000 to 1px solid #000000 (proper)
-               else if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { 
-                       $s = $prop[0]; $w = $prop[1]; $c = $prop[2]; 
-               }
-               else { $w = $prop[0]; $s = $prop[1]; $c = $prop[2]; }
-       }
-       else { return ''; } 
-       $s = strtolower($s);
-       return $w.' '.$s.' '.$c;
-}
-
-
-
-function fixCSS($prop) {
-       if (!is_array($prop) || (count($prop)==0)) return array(); 
-       $newprop = array(); 
-       foreach($prop AS $k => $v) {
-               if ($k != 'BACKGROUND-IMAGE' && $k != 'BACKGROUND' && $k != 'ODD-HEADER-NAME' && $k != 'EVEN-HEADER-NAME' && $k != 'ODD-FOOTER-NAME' && $k != 'EVEN-FOOTER-NAME' && $k != 'HEADER' && $k != 'FOOTER') {
-                       $v = strtolower($v);
-               }
-
-               if ($k == 'FONT') {
-                       $s = trim($v);
-                       preg_match_all('/\"(.*?)\"/',$s,$ff);
-                       if (count($ff[1])) {
-                               foreach($ff[1] AS $ffp) { 
-                                       $w = preg_split('/\s+/',$ffp);
-                                       $s = preg_replace('/\"'.$ffp.'\"/',$w[0],$s); 
-                               }
-                       }
-                       preg_match_all('/\'(.*?)\'/',$s,$ff);
-                       if (count($ff[1])) {
-                               foreach($ff[1] AS $ffp) { 
-                                       $w = preg_split('/\s+/',$ffp);
-                                       $s = preg_replace('/\''.$ffp.'\'/',$w[0],$s); 
-                               }
-                       }
-                       $s = preg_replace('/\s*,\s*/',',',$s); 
-                       $bits = preg_split('/\s+/',$s);
-                       if (count($bits)>1) {
-                               $k = 'FONT-FAMILY'; $v = $bits[(count($bits)-1)];
-                               $fs = $bits[(count($bits)-2)];
-                               if (preg_match('/(.*?)\/(.*)/',$fs, $fsp)) { 
-                                       $newprop['FONT-SIZE'] = $fsp[1];
-                                       $newprop['LINE-HEIGHT'] = $fsp[2];
-                               }
-                               else { $newprop['FONT-SIZE'] = $fs; } 
-                               if (preg_match('/(italic|oblique)/i',$s)) { $newprop['FONT-STYLE'] = 'italic'; }
-                               else { $newprop['FONT-STYLE'] = 'normal'; }
-                               if (preg_match('/bold/i',$s)) { $newprop['FONT-WEIGHT'] = 'bold'; }
-                               else { $newprop['FONT-WEIGHT'] = 'normal'; }
-                               if (preg_match('/small-caps/i',$s)) { $newprop['TEXT-TRANSFORM'] = 'uppercase'; }
-                       }
-               }
-               if ($k == 'FONT-FAMILY') {
-                       $aux_fontlist = explode(",",$v);
-                       $found = 0;
-                       foreach($aux_fontlist AS $f) {
-                               $fonttype = trim($f);
-                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
-                               $fonttype = preg_replace('/ /','',$fonttype);
-                               $v = strtolower(trim($fonttype));
-                               if (isset($this->mpdf->fonttrans[$v]) && $this->mpdf->fonttrans[$v]) { $v = $this->mpdf->fonttrans[$v]; }
-                               if ((!$this->mpdf->onlyCoreFonts && in_array($v,$this->mpdf->available_unifonts)) || 
-                                       in_array($v,array('ccourier','ctimes','chelvetica')) ||
-                                       ($this->mpdf->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) || 
-                                       in_array($v, array('sjis','uhc','big5','gb'))) { 
-                                       $newprop[$k] = $v; 
-                                       $found = 1;
-                                       break;
-                               }
-                       }
-                       if (!$found) {
-                          foreach($aux_fontlist AS $f) {
-                               $fonttype = trim($f);
-                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
-                               $fonttype = preg_replace('/ /','',$fonttype);
-                               $v = strtolower(trim($fonttype));
-                               if (isset($this->mpdf->fonttrans[$v]) && $this->mpdf->fonttrans[$v]) { $v = $this->mpdf->fonttrans[$v]; }
-                               if (in_array($v,$this->mpdf->sans_fonts) || in_array($v,$this->mpdf->serif_fonts) || in_array($v,$this->mpdf->mono_fonts) ) { 
-                                       $newprop[$k] = $v;
-                                       break;
-                               }
-                          }
-                       }
-               }
-               else if ($k == 'MARGIN') {
-                       $tmp =  $this->expand24($v);
-                       $newprop['MARGIN-TOP'] = $tmp['T'];
-                       $newprop['MARGIN-RIGHT'] = $tmp['R'];
-                       $newprop['MARGIN-BOTTOM'] = $tmp['B'];
-                       $newprop['MARGIN-LEFT'] = $tmp['L'];
-               }
-/*-- BORDER-RADIUS --*/
-               else if ($k == 'BORDER-RADIUS' || $k == 'BORDER-TOP-LEFT-RADIUS' || $k == 'BORDER-TOP-RIGHT-RADIUS' || $k == 'BORDER-BOTTOM-LEFT-RADIUS' || $k == 'BORDER-BOTTOM-RIGHT-RADIUS') {
-                       $tmp =  $this->border_radius_expand($v,$k);
-                       if (isset($tmp['TL-H'])) $newprop['BORDER-TOP-LEFT-RADIUS-H'] = $tmp['TL-H'];
-                       if (isset($tmp['TL-V'])) $newprop['BORDER-TOP-LEFT-RADIUS-V'] = $tmp['TL-V'];
-                       if (isset($tmp['TR-H'])) $newprop['BORDER-TOP-RIGHT-RADIUS-H'] = $tmp['TR-H'];
-                       if (isset($tmp['TR-V'])) $newprop['BORDER-TOP-RIGHT-RADIUS-V'] = $tmp['TR-V'];
-                       if (isset($tmp['BL-H'])) $newprop['BORDER-BOTTOM-LEFT-RADIUS-H'] = $tmp['BL-H'];
-                       if (isset($tmp['BL-V'])) $newprop['BORDER-BOTTOM-LEFT-RADIUS-V'] = $tmp['BL-V'];
-                       if (isset($tmp['BR-H'])) $newprop['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $tmp['BR-H'];
-                       if (isset($tmp['BR-V'])) $newprop['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $tmp['BR-V'];
-               }
-/*-- END BORDER-RADIUS --*/
-               else if ($k == 'PADDING') {
-                       $tmp =  $this->expand24($v);
-                       $newprop['PADDING-TOP'] = $tmp['T'];
-                       $newprop['PADDING-RIGHT'] = $tmp['R'];
-                       $newprop['PADDING-BOTTOM'] = $tmp['B'];
-                       $newprop['PADDING-LEFT'] = $tmp['L'];
-               }
-               else if ($k == 'BORDER') {
-                       if ($v == '1') { $v = '1px solid #000000'; }
-                       else { $v = $this->_fix_borderStr($v); }
-                       $newprop['BORDER-TOP'] = $v;
-                       $newprop['BORDER-RIGHT'] = $v;
-                       $newprop['BORDER-BOTTOM'] = $v;
-                       $newprop['BORDER-LEFT'] = $v;
-               }
-               else if ($k == 'BORDER-TOP') {
-                       $newprop['BORDER-TOP'] = $this->_fix_borderStr($v);
-               }
-               else if ($k == 'BORDER-RIGHT') {
-                       $newprop['BORDER-RIGHT'] = $this->_fix_borderStr($v);
-               }
-               else if ($k == 'BORDER-BOTTOM') {
-                       $newprop['BORDER-BOTTOM'] = $this->_fix_borderStr($v);
-               }
-               else if ($k == 'BORDER-LEFT') {
-                       $newprop['BORDER-LEFT'] = $this->_fix_borderStr($v);
-               }
-               else if ($k == 'BORDER-STYLE') {
-                       $e = $this->expand24($v);
-                       $newprop['BORDER-TOP-STYLE'] = $e['T'];
-                       $newprop['BORDER-RIGHT-STYLE'] = $e['R'];
-                       $newprop['BORDER-BOTTOM-STYLE'] = $e['B'];
-                       $newprop['BORDER-LEFT-STYLE'] = $e['L'];
-               }
-               else if ($k == 'BORDER-WIDTH') {
-                       $e = $this->expand24($v);
-                       $newprop['BORDER-TOP-WIDTH'] = $e['T'];
-                       $newprop['BORDER-RIGHT-WIDTH'] = $e['R'];
-                       $newprop['BORDER-BOTTOM-WIDTH'] = $e['B'];
-                       $newprop['BORDER-LEFT-WIDTH'] = $e['L'];
-               }
-               else if ($k == 'BORDER-COLOR') {
-                       $e = $this->expand24($v);
-                       $newprop['BORDER-TOP-COLOR'] = $e['T'];
-                       $newprop['BORDER-RIGHT-COLOR'] = $e['R'];
-                       $newprop['BORDER-BOTTOM-COLOR'] = $e['B'];
-                       $newprop['BORDER-LEFT-COLOR'] = $e['L'];
-               }
-
-               else if ($k == 'BORDER-SPACING') {
-                       $prop = preg_split('/\s+/',trim($v));
-                       if (count($prop) == 1 ) { 
-                               $newprop['BORDER-SPACING-H'] = $prop[0];
-                               $newprop['BORDER-SPACING-V'] = $prop[0];
-                       }
-                       else if (count($prop) == 2 ) { 
-                               $newprop['BORDER-SPACING-H'] = $prop[0];
-                               $newprop['BORDER-SPACING-V'] = $prop[1];
-                       }
-               }
-               else if ($k == 'TEXT-OUTLINE') {        // mPDF 5.6.07
-                       $prop = preg_split('/\s+/',trim($v));
-                       if (trim(strtolower($v)) == 'none' ) { 
-                               $newprop['TEXT-OUTLINE'] = 'none';
-                       }
-                       else if (count($prop) == 2 ) { 
-                               $newprop['TEXT-OUTLINE-WIDTH'] = $prop[0];
-                               $newprop['TEXT-OUTLINE-COLOR'] = $prop[1];
-                       }
-                       else if (count($prop) == 3 ) { 
-                               $newprop['TEXT-OUTLINE-WIDTH'] = $prop[0];
-                               $newprop['TEXT-OUTLINE-COLOR'] = $prop[2];
-                       }
-               }
-               else if ($k == 'SIZE') {
-                       $prop = preg_split('/\s+/',trim($v));
-                       if (preg_match('/(auto|portrait|landscape)/',$prop[0])) {
-                               $newprop['SIZE'] = strtoupper($prop[0]);
-                       }
-                       else if (count($prop) == 1 ) {
-                               $newprop['SIZE']['W'] = $this->mpdf->ConvertSize($prop[0]);
-                               $newprop['SIZE']['H'] = $this->mpdf->ConvertSize($prop[0]);
-                       }
-                       else if (count($prop) == 2 ) {
-                               $newprop['SIZE']['W'] = $this->mpdf->ConvertSize($prop[0]);
-                               $newprop['SIZE']['H'] = $this->mpdf->ConvertSize($prop[1]);
-                       }
-               }
-               else if ($k == 'SHEET-SIZE') {
-                       $prop = preg_split('/\s+/',trim($v));
-                       if (count($prop) == 2 ) {
-                               $newprop['SHEET-SIZE'] = array($this->mpdf->ConvertSize($prop[0]), $this->mpdf->ConvertSize($prop[1]));
-                       }
-                       else {
-                               if(preg_match('/([0-9a-zA-Z]*)-L/i',$v,$m)) {   // e.g. A4-L = A$ landscape
-                                       $ft = $this->mpdf->_getPageFormat($m[1]);
-                                       $format = array($ft[1],$ft[0]);
-                               }
-                               else { $format = $this->mpdf->_getPageFormat($v); }
-                               if ($format) { $newprop['SHEET-SIZE'] = array($format[0]/_MPDFK, $format[1]/_MPDFK); }
-                       }
-               }
-               else if ($k == 'BACKGROUND') {
-                       $bg = $this->parseCSSbackground($v);
-                       if ($bg['c']) { $newprop['BACKGROUND-COLOR'] = $bg['c']; }
-                       else { $newprop['BACKGROUND-COLOR'] = 'transparent'; }
-/*-- BACKGROUNDS --*/
-                       if ($bg['i']) { 
-                               $newprop['BACKGROUND-IMAGE'] = $bg['i']; 
-                               if ($bg['r']) { $newprop['BACKGROUND-REPEAT'] = $bg['r']; }
-                               if ($bg['p']) { $newprop['BACKGROUND-POSITION'] = $bg['p']; }
-                       }
-                       else { $newprop['BACKGROUND-IMAGE'] = ''; }
-/*-- END BACKGROUNDS --*/
-               }
-/*-- BACKGROUNDS --*/
-               else if ($k == 'BACKGROUND-IMAGE') {
-                       if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient\(.*\)/i',$v,$m)) {
-                               $newprop['BACKGROUND-IMAGE'] = $m[0];
-                               continue;
-                       }
-                       if (preg_match('/url\([\'\"]{0,1}(.*?)[\'\"]{0,1}\)/i',$v,$m)) {
-                               $newprop['BACKGROUND-IMAGE'] = $m[1];
-                       }
-                
-                       else if (strtolower($v)=='none') { $newprop['BACKGROUND-IMAGE'] = ''; }
-
-               }
-               else if ($k == 'BACKGROUND-REPEAT') {
-                       if (preg_match('/(repeat-x|repeat-y|no-repeat|repeat)/i',$v,$m)) { 
-                               $newprop['BACKGROUND-REPEAT'] = strtolower($m[1]);
-                       }
-               }
-               else if ($k == 'BACKGROUND-POSITION') {
-                       $s = $v;
-                       $bits = preg_split('/\s+/',trim($s));
-                       // These should be Position x1 or x2
-                       if (count($bits)==1) {
-                               if (preg_match('/bottom/',$bits[0])) { $bg['p'] = '50% 100%'; }
-                               else if (preg_match('/top/',$bits[0])) { $bg['p'] = '50% 0%'; }
-                               else { $bg['p'] = $bits[0] . ' 50%'; }
-                       }
-                       else if (count($bits)==2) {
-                               // Can be either right center or center right
-                               if (preg_match('/(top|bottom)/',$bits[0]) || preg_match('/(left|right)/',$bits[1])) { 
-                                       $bg['p'] = $bits[1] . ' '.$bits[0]; 
-                               }
-                               else { 
-                                       $bg['p'] = $bits[0] . ' '.$bits[1]; 
-                               }
-                       }
-                       if ($bg['p']) {
-                               $bg['p'] = preg_replace('/(left|top)/','0%',$bg['p']);
-                               $bg['p'] = preg_replace('/(right|bottom)/','100%',$bg['p']);
-                               $bg['p'] = preg_replace('/(center)/','50%',$bg['p']);
-                               if (!preg_match('/[\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)* [\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)*/',$bg['p'])) {
-                                       $bg['p'] = false;
-                               }
-                       }
-                       if ($bg['p']) { $newprop['BACKGROUND-POSITION'] = $bg['p']; }
-               }
-/*-- END BACKGROUNDS --*/
-               else if ($k == 'IMAGE-ORIENTATION') {
-                       if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$v,$m)) {
-                               $angle = $m[1] + 0;
-                               if (strtolower($m[2])=='deg') { $angle = $angle; }
-                               else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
-                               else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
-                               while($angle < 0) { $angle += 360; }
-                               $angle = ($angle % 360);
-                               $angle /= 90;
-                               $angle = round($angle) * 90;
-                               $newprop['IMAGE-ORIENTATION'] = $angle; 
-                       }
-               }
-               // mPDF 5.6.13
-               else if ($k == 'TEXT-ALIGN') {
-                       if (preg_match('/["\'](.){1}["\']/i',$v,$m)) { 
-                               $d = array_search($m[1],$this->mpdf->decimal_align);
-                               if ($d !== false) { $newprop['TEXT-ALIGN'] = $d; }
-                               if (preg_match('/(center|left|right)/i',$v,$m)) { $newprop['TEXT-ALIGN'] .= strtoupper(substr($m[1],0,1)); }
-                               else { $newprop['TEXT-ALIGN'] .= 'R'; } // default = R
-                       }
-                       else if (preg_match('/["\'](\\\[a-fA-F0-9]{1,6})["\']/i',$v,$m)) { 
-                               $utf8 = codeHex2utf(substr($m[1],1,6));
-                               $d = array_search($utf8,$this->mpdf->decimal_align);
-                               if ($d !== false) { $newprop['TEXT-ALIGN'] = $d; }
-                               if (preg_match('/(center|left|right)/i',$v,$m)) { $newprop['TEXT-ALIGN'] .= strtoupper(substr($m[1],0,1)); }
-                               else { $newprop['TEXT-ALIGN'] .= 'R'; } // default = R
-                       }
-                       else { $newprop[$k] = $v; }
-               }
-               else if ($k == 'LIST-STYLE') {  // mPDF 5.7.2
-                       if (preg_match('/(lower-roman|upper-roman|lower-latin|lower-alpha|upper-latin|upper-alpha|none|decimal|disc|circle|square|arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu|cambodian|khmer|lao)/i',$v,$m)
-                       || preg_match('/U\+([a-fA-F0-9]+)/i',$v,$m)) { 
-                               $newprop['LIST-STYLE-TYPE'] = strtolower(trim($m[1]));
-                       }
-               }
-
-
-               else { 
-                       $newprop[$k] = $v; 
-               }
-       }
-
-       return $newprop;
-}
-
-function setCSSboxshadow($v) {
-       $sh = array();
-       $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/',$v,$x);  // mPDF 5.6.05
-       for($i=0; $i<$c; $i++) {
-               $col = preg_replace('/,/','*',$x[0][$i]);
-               $v = preg_replace('/'.preg_quote($x[0][$i],'/').'/',$col,$v);
-       }
-       $ss = explode(',',$v);
-       foreach ($ss AS $s) {
-               $new = array('inset'=>false, 'blur'=>0, 'spread'=>0);
-               if (preg_match('/inset/i',$s)) { $new['inset'] = true; $s = preg_replace('/\s*inset\s*/','',$s); }
-               $p = explode(' ',trim($s));
-               if (isset($p[0])) { $new['x'] = $this->mpdf->ConvertSize(trim($p[0]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
-               if (isset($p[1])) { $new['y'] = $this->mpdf->ConvertSize(trim($p[1]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
-               if (isset($p[2])) {
-                       if (preg_match('/^\s*[\.\-0-9]/',$p[2])) {
-                               $new['blur'] = $this->mpdf->ConvertSize(trim($p[2]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); 
-                       }
-                       else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[2])); }
-                       if (isset($p[3])) {
-                               if (preg_match('/^\s*[\.\-0-9]/',$p[3])) {
-                                       $new['spread'] = $this->mpdf->ConvertSize(trim($p[3]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); 
-                               }
-                               else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[3])); }
-                               if (isset($p[4])) {
-                                       $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[4]));
-                               }
-                       }
-               }
-               if (!$new['col']) { $new['col'] = $this->mpdf->ConvertColor('#888888'); }
-               if (isset($new['y'])) { array_unshift($sh, $new); }
-       }
-       return $sh;
-}
-
-function setCSStextshadow($v) {
-       $sh = array();
-       $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/',$v,$x);  // mPDF 5.6.05
-       for($i=0; $i<$c; $i++) {
-               $col = preg_replace('/,/','*',$x[0][$i]);
-               $v = preg_replace('/'.preg_quote($x[0][$i],'/').'/',$col,$v);
-       }
-       $ss = explode(',',$v);
-       foreach ($ss AS $s) {
-               $new = array('blur'=>0);
-               $p = explode(' ',trim($s));
-               if (isset($p[0])) { $new['x'] = $this->mpdf->ConvertSize(trim($p[0]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
-               if (isset($p[1])) { $new['y'] = $this->mpdf->ConvertSize(trim($p[1]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
-               if (isset($p[2])) {
-                       if (preg_match('/^\s*[\.\-0-9]/',$p[2])) {
-                               $new['blur'] = $this->mpdf->ConvertSize(trim($p[2]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); 
-                       }
-                       else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[2])); }
-                       if (isset($p[3])) {
-                               $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[3]));
-                       }
-               }
-               if (!$new['col']) { $new['col'] = $this->mpdf->ConvertColor('#888888'); }
-               if (isset($new['y'])) { array_unshift($sh, $new); }
-       }
-       return $sh;
-}
-
-function parseCSSbackground($s) {
-       $bg = array('c'=>false, 'i'=>false, 'r'=>false, 'p'=>false, );
-/*-- BACKGROUNDS --*/
-       if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient\(.*\)/i',$s,$m)) {
-               $bg['i'] = $m[0];
-       }
-       else
-/*-- END BACKGROUNDS --*/
-       if (preg_match('/url\(/i',$s)) {
-               // If color, set and strip it off
-               // mPDF 5.6.05
-               if (preg_match('/^\s*(#[0-9a-fA-F]{3,6}|(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\(.*?\)|[a-zA-Z]{3,})\s+(url\(.*)/i',$s,$m)) {
-                       $bg['c'] = strtolower($m[1]);
-                       $s = $m[3];
-               }
-/*-- BACKGROUNDS --*/
-               if (preg_match('/url\([\'\"]{0,1}(.*?)[\'\"]{0,1}\)\s*(.*)/i',$s,$m)) {
-                       $bg['i'] = $m[1];
-                       $s = strtolower($m[2]);
-                       if (preg_match('/(repeat-x|repeat-y|no-repeat|repeat)/',$s,$m)) { 
-                               $bg['r'] = $m[1];
-                       }
-                       // Remove repeat, attachment (discarded) and also any inherit
-                       $s = preg_replace('/(repeat-x|repeat-y|no-repeat|repeat|scroll|fixed|inherit)/','',$s);
-                       $bits = preg_split('/\s+/',trim($s));
-                       // These should be Position x1 or x2
-                       if (count($bits)==1) {
-                               if (preg_match('/bottom/',$bits[0])) { $bg['p'] = '50% 100%'; }
-                               else if (preg_match('/top/',$bits[0])) { $bg['p'] = '50% 0%'; }
-                               else { $bg['p'] = $bits[0] . ' 50%'; }
-                       }
-                       else if (count($bits)==2) {
-                               // Can be either right center or center right
-                               if (preg_match('/(top|bottom)/',$bits[0]) || preg_match('/(left|right)/',$bits[1])) { 
-                                       $bg['p'] = $bits[1] . ' '.$bits[0]; 
-                               }
-                               else { 
-                                       $bg['p'] = $bits[0] . ' '.$bits[1]; 
-                               }
-                       }
-                       if ($bg['p']) {
-                               $bg['p'] = preg_replace('/(left|top)/','0%',$bg['p']);
-                               $bg['p'] = preg_replace('/(right|bottom)/','100%',$bg['p']);
-                               $bg['p'] = preg_replace('/(center)/','50%',$bg['p']);
-                               if (!preg_match('/[\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)* [\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)*/',$bg['p'])) {
-                                       $bg['p'] = false;
-                               }
-                       }
-               }
-/*-- END BACKGROUNDS --*/
-       }
-       else if (preg_match('/^\s*(#[0-9a-fA-F]{3,6}|(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\(.*?\)|[a-zA-Z]{3,})/i',$s,$m)) { $bg['c'] = strtolower($m[1]); }     // mPDF 5.6.05
-       return ($bg);
-}
-
-
-function expand24($mp) {
-       $prop = preg_split('/\s+/',trim($mp));
-       if (count($prop) == 1 ) { 
-               return array('T' => $prop[0], 'R' => $prop[0], 'B' => $prop[0], 'L'=> $prop[0]);
-       }
-       if (count($prop) == 2 ) { 
-               return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[0], 'L'=> $prop[1]);
-       }
-
-       if (count($prop) == 3 ) { 
-               return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[2], 'L'=> $prop[1]);
-       }
-       if (count($prop) == 4 ) { 
-               return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[2], 'L'=> $prop[3]);
-       }
-       return array(); 
-}
-
-/*-- BORDER-RADIUS --*/
-function border_radius_expand($val,$k) {
-       $b = array();
-       if ($k == 'BORDER-RADIUS') {
-               $hv = explode('/',trim($val));
-               $prop = preg_split('/\s+/',trim($hv[0]));
-               if (count($prop)==1) {
-                       $b['TL-H'] = $b['TR-H'] = $b['BR-H'] = $b['BL-H'] = $prop[0];
-               }
-               else if (count($prop)==2) {
-                       $b['TL-H'] = $b['BR-H'] = $prop[0];
-                       $b['TR-H'] = $b['BL-H'] = $prop[1];
-               }
-               else if (count($prop)==3) {
-                       $b['TL-H'] = $prop[0];
-                       $b['TR-H'] = $b['BL-H'] = $prop[1];
-                       $b['BR-H'] = $prop[2];
-               }
-               else if (count($prop)==4) {
-                       $b['TL-H'] = $prop[0];
-                       $b['TR-H'] = $prop[1];
-                       $b['BR-H'] = $prop[2];
-                       $b['BL-H'] = $prop[3];
-               }
-               if (count($hv)==2) {
-                       $prop = preg_split('/\s+/',trim($hv[1]));
-                       if (count($prop)==1) {
-                               $b['TL-V'] = $b['TR-V'] = $b['BR-V'] = $b['BL-V'] = $prop[0];
-                       }
-                       else if (count($prop)==2) {
-                               $b['TL-V'] = $b['BR-V'] = $prop[0];
-                               $b['TR-V'] = $b['BL-V'] = $prop[1];
-                       }
-                       else if (count($prop)==3) {
-                               $b['TL-V'] = $prop[0];
-                               $b['TR-V'] = $b['BL-V'] = $prop[1];
-                               $b['BR-V'] = $prop[2];
-                       }
-                       else if (count($prop)==4) {
-                               $b['TL-V'] = $prop[0];
-                               $b['TR-V'] = $prop[1];
-                               $b['BR-V'] = $prop[2];
-                               $b['BL-V'] = $prop[3];
-                       }
-               }
-               else {
-                       $b['TL-V'] = $b['TL-H'];
-                       $b['TR-V'] = $b['TR-H'];
-                       $b['BL-V'] = $b['BL-H'];
-                       $b['BR-V'] = $b['BR-H'];
-               }
-               return $b;
-       }
-
-       // Parse 2
-       $h = 0;
-       $v = 0;
-       $prop = preg_split('/\s+/',trim($val));
-       if (count($prop)==1) { $h = $v = $val; }
-       else { $h = $prop[0]; $v = $prop[1]; }
-       if ($h==0 || $v==0) { $h = $v = 0; }
-       if ($k == 'BORDER-TOP-LEFT-RADIUS') {
-               $b['TL-H'] = $h;
-               $b['TL-V'] = $v;
-       }
-       else if ($k == 'BORDER-TOP-RIGHT-RADIUS') {
-               $b['TR-H'] = $h;
-               $b['TR-V'] = $v;
-       }
-       else if ($k == 'BORDER-BOTTOM-LEFT-RADIUS') {
-               $b['BL-H'] = $h;
-               $b['BL-V'] = $v;
-       }
-       else if ($k == 'BORDER-BOTTOM-RIGHT-RADIUS') {
-               $b['BR-H'] = $h;
-               $b['BR-V'] = $v;
-       }
-       return $b;
-
-}
-/*-- END BORDER-RADIUS --*/
-
-function _mergeCSS($p, &$t) {
-       // Save Cascading CSS e.g. "div.topic p" at this block level
-       if (isset($p) && $p) {
-               if ($t) { 
-                       $t = $this->array_merge_recursive_unique($t, $p);
-               }
-               else { $t = $p; }
-       }
-}
-
-// for CSS handling
-function array_merge_recursive_unique($array1, $array2) {
-    $arrays = func_get_args();
-    $narrays = count($arrays);
-    $ret = $arrays[0];
-    for ($i = 1; $i < $narrays; $i ++) {
-        foreach ($arrays[$i] as $key => $value) {
-            if (((string) $key) === ((string) intval($key))) { // integer or string as integer key - append
-                $ret[] = $value;
-            }
-            else { // string key - merge
-                if (is_array($value) && isset($ret[$key])) {
-                    $ret[$key] = $this->array_merge_recursive_unique($ret[$key], $value);
-                }
-                else {
-                    $ret[$key] = $value;
-                }
-            }
-        }   
-    }
-    return $ret;
-}
-
-
-
-function _mergeFullCSS($p, &$t, $tag, $classes, $id) {
-               $this->_mergeCSS($p[$tag], $t);
-               // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
-               foreach($classes AS $class) {
-                 $this->_mergeCSS($p['CLASS>>'.$class], $t);
-               }
-               // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd)  td:nth-child(2n+1)
-               if ($tag=='TR' && isset($p) && $p)  {
-                       foreach($p AS $k=>$val) {
-                               if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
-                                       $select = false;
-                                       if ($tag=='TR')  {
-                                               $row = $this->mpdf->row;
-                                               $thnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) : 0);
-                                               $tfnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) : 0);
-                                               if ($this->mpdf->tabletfoot) { $row -= $thnr; }
-                                               else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
-                                               if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
-                                               else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
-                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
-                                                       if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
-                                               }
-                                       }
-                                       else if ($tag=='TD' || $tag=='TH')  {
-                                               if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
-                                               else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
-                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
-                                                       if ((($this->mpdf->col + 1) % $a[1]) == $a[2]) { $select = true; }
-                                               }
-                                       }
-                                       if ($select) {
-                                               $this->_mergeCSS($p[$tag.'>>SELECTORNTHCHILD>>'.$m[1]], $t);
-                                       }
-                               }
-                       }
-               }
-               // STYLESHEET CLASS e.g. #smallone{}  #redletter{}
-               if (isset($id) && $id) {
-                 $this->_mergeCSS($p['ID>>'.$id], $t);
-               }
-               // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
-               foreach($classes AS $class) {
-                 $this->_mergeCSS($p[$tag.'>>CLASS>>'.$class], $t);
-               }
-               // STYLESHEET CLASS e.g. #smallone{}  #redletter{}
-               if (isset($id)) {
-                 $this->_mergeCSS($p[$tag.'>>ID>>'.$id], $t);
-               }
-}
-
-function setBorderDominance($prop, $val) {
-       if (isset($prop['BORDER-LEFT']) && $prop['BORDER-LEFT']) { $this->cell_border_dominance_L = $val; }
-       if (isset($prop['BORDER-RIGHT']) && $prop['BORDER-RIGHT']) { $this->cell_border_dominance_R = $val; }
-       if (isset($prop['BORDER-TOP']) && $prop['BORDER-TOP']) { $this->cell_border_dominance_T = $val; }
-       if (isset($prop['BORDER-BOTTOM']) && $prop['BORDER-BOTTOM']) { $this->cell_border_dominance_B = $val; }
-}
-
-function _set_mergedCSS(&$m, &$p, $d=true, $bd=false) {
-       if (isset($m)) {
-               if ((isset($m['depth']) && $m['depth']>1) || $d==false) {       // include check for 'depth'
-                       if ($bd) { $this->setBorderDominance($m, $bd); }        // *TABLES*
-                       if (is_array($m)) { 
-                               $p = array_merge($p,$m); 
-                               $this->_mergeBorders($p,$m);
-                       }
-               }
-       }
-}
-
-
-function _mergeBorders(&$b, &$a) {     // Merges $a['BORDER-TOP-STYLE'] to $b['BORDER-TOP'] etc.
-  foreach(array('TOP','RIGHT','BOTTOM','LEFT') AS $side) {
-    foreach(array('STYLE','WIDTH','COLOR') AS $el) {
-       if (isset($a['BORDER-'.$side.'-'.$el])) {       // e.g. $b['BORDER-TOP-STYLE']
-               $s = trim($a['BORDER-'.$side.'-'.$el]);
-               if (isset($b['BORDER-'.$side])) {       // e.g. $b['BORDER-TOP']
-                       $p = trim($b['BORDER-'.$side]);
-               }
-               else { $p = ''; }
-               if ($el=='STYLE') {
-                       if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', '\\1 '.$s.' \\3', $p); }
-                       else { $b['BORDER-'.$side] = '0px '.$s.' #000000'; }
-               }
-               else if ($el=='WIDTH') {
-                       if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', $s.' \\2 \\3', $p); }
-                       else { $b['BORDER-'.$side] = $s.' none #000000'; }
-               }
-               else if ($el=='COLOR') {
-                       if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', '\\1 \\2 '.$s, $p); }
-                       else { $b['BORDER-'.$side] = '0px none '.$s; }
-               }
-       }
-    }
-  }
-}
-
-
-function MergeCSS($inherit,$tag,$attr) {
-       $p = array();
-       $zp = array(); 
-
-       $classes = array();
-       if (isset($attr['CLASS'])) {
-               $classes = preg_split('/\s+/',$attr['CLASS']);
-       }
-       if (!isset($attr['ID'])) { $attr['ID']=''; }
-       //===============================================
-/*-- TABLES --*/
-       // Set Inherited properties
-       if ($inherit == 'TOPTABLE') {   // $tag = TABLE
-               //===============================================
-               // Save Cascading CSS e.g. "div.topic p" at this block level
-
-               if (isset($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'])) {
-                       $this->tablecascadeCSS[0] = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
-               }
-               else {
-                       $this->tablecascadeCSS[0] = $this->cascadeCSS;
-               }
-       }
-       //===============================================
-       // Set Inherited properties
-       if ($inherit == 'TOPTABLE' || $inherit == 'TABLE') {
-               //Cascade everything from last level that is not an actual property, or defined by current tag/attributes
-               if (isset($this->tablecascadeCSS[$this->tbCSSlvl-1]) && is_array($this->tablecascadeCSS[$this->tbCSSlvl-1])) {
-                  foreach($this->tablecascadeCSS[$this->tbCSSlvl-1] AS $k=>$v) {
-                               $this->tablecascadeCSS[$this->tbCSSlvl][$k] = $v;
-                  }
-               }
-               $this->_mergeFullCSS($this->cascadeCSS, $this->tablecascadeCSS[$this->tbCSSlvl], $tag, $classes, $attr['ID']);
-               //===============================================
-               // Cascading forward CSS e.g. "table.topic td" for this table in $this->tablecascadeCSS 
-               //===============================================
-               // STYLESHEET TAG e.g. table
-               $this->_mergeFullCSS($this->tablecascadeCSS[$this->tbCSSlvl-1], $this->tablecascadeCSS[$this->tbCSSlvl], $tag, $classes, $attr['ID']);
-               //===============================================
-       }
-/*-- END TABLES --*/
-       //===============================================
-/*-- LISTS --*/
-       // Set Inherited properties
-       if ($inherit == 'TOPLIST') {    // $tag = UL,OL
-               //===============================================
-               // Save Cascading CSS e.g. "div.topic p" at this block level
-               if (isset($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'])) {
-                       $this->listcascadeCSS[0] = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
-               }
-               else {
-                       $this->listcascadeCSS[0] = $this->cascadeCSS;
-               }
-       }
-       //===============================================
-       // Set Inherited properties
-       if ($inherit == 'TOPLIST' || $inherit == 'LIST') {
-               //Cascade everything from last level that is not an actual property, or defined by current tag/attributes
-               if (isset($this->listcascadeCSS[$this->listCSSlvl-1]) && is_array($this->listcascadeCSS[$this->listCSSlvl-1])) {
-                  foreach($this->listcascadeCSS[$this->listCSSlvl-1] AS $k=>$v) {
-                               $this->listcascadeCSS[$this->listCSSlvl][$k] = $v;
-                  }
-               }
-               $this->_mergeFullCSS($this->cascadeCSS, $this->listcascadeCSS[$this->listCSSlvl], $tag, $classes, $attr['ID']);
-               //===============================================
-               // Cascading forward CSS e.g. "table.topic td" for this list in $this->listcascadeCSS 
-               //===============================================
-               // STYLESHEET TAG e.g. table
-               $this->_mergeFullCSS($this->listcascadeCSS[$this->listCSSlvl-1], $this->listcascadeCSS[$this->listCSSlvl], $tag, $classes, $attr['ID']);
-               //===============================================
-       }
-/*-- END LISTS --*/
-       //===============================================
-       // Set Inherited properties
-       if ($inherit == 'BLOCK') {
-               if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']) && is_array($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'])) {
-                  foreach($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'] AS $k=>$v) {
-                               $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$k] = $v;
-
-                  }
-               }
-
-               //===============================================
-               // Save Cascading CSS e.g. "div.topic p" at this block level
-               $this->_mergeFullCSS($this->cascadeCSS, $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'], $tag, $classes, $attr['ID']);
-               //===============================================
-               // Cascading forward CSS
-               //===============================================
-               $this->_mergeFullCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'], $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'], $tag, $classes, $attr['ID']);
-               //===============================================
-                 // Block properties
-                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['margin_collapse']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['margin_collapse']) { $p['MARGIN-COLLAPSE'] = 'COLLAPSE'; }  // custom tag, but follows CSS principle that border-collapse is inherited
-                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['line_height']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['line_height']) { $p['LINE-HEIGHT'] = $this->mpdf->blk[$this->mpdf->blklvl-1]['line_height']; }
-
-                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['direction']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['direction']) { $p['DIRECTION'] = $this->mpdf->blk[$this->mpdf->blklvl-1]['direction']; }
-
-                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['align']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['align']) { 
-                       if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'L') { $p['TEXT-ALIGN'] = 'left'; } 
-                       else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'J') { $p['TEXT-ALIGN'] = 'justify'; } 
-                       else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'R') { $p['TEXT-ALIGN'] = 'right'; } 
-                       else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'C') { $p['TEXT-ALIGN'] = 'center'; } 
-                 }
-                 if ($this->mpdf->ColActive || $this->mpdf->keep_block_together) { 
-                       if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolor']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolor']) { // Doesn't officially inherit, but default value is transparent (?=inherited)
-                               $cor = $this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolorarray' ];
-                               $p['BACKGROUND-COLOR'] = $this->mpdf->_colAtoString($cor);
-                       }
-                 }
-
-               if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent']) && ($this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent'] || $this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent']===0)) { $p['TEXT-INDENT'] = $this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent']; }
-               if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['InlineProperties'])) {
-                       $biilp = $this->mpdf->blk[$this->mpdf->blklvl-1]['InlineProperties'];
-               }
-               else { $biilp = null; }
-               if (isset($biilp[ 'family' ]) && $biilp[ 'family' ]) { $p['FONT-FAMILY'] = $biilp[ 'family' ]; }
-               if (isset($biilp[ 'I' ]) && $biilp[ 'I' ]) { $p['FONT-STYLE'] = 'italic'; }
-               if (isset($biilp[ 'sizePt' ]) && $biilp[ 'sizePt' ]) { $p['FONT-SIZE'] = $biilp[ 'sizePt' ] . 'pt'; }
-               if (isset($biilp[ 'B' ]) && $biilp[ 'B' ]) { $p['FONT-WEIGHT'] = 'bold'; }
-               if (isset($biilp[ 'colorarray' ]) && $biilp[ 'colorarray' ]) { 
-                       $cor = $biilp[ 'colorarray' ];
-                       $p['COLOR'] = $this->mpdf->_colAtoString($cor);
-               }
-               if (isset($biilp[ 'fontkerning' ])) {
-                       if ($biilp[ 'fontkerning' ]) { $p['FONT-KERNING'] = 'normal'; }
-                       else { $p['FONT-KERNING'] = 'none'; }
-               }
-               if (isset($biilp[ 'lSpacingCSS' ]) && $biilp[ 'lSpacingCSS' ]) { $p['LETTER-SPACING'] = $biilp[ 'lSpacingCSS' ]; }
-               if (isset($biilp[ 'wSpacingCSS' ]) && $biilp[ 'wSpacingCSS' ]) { $p['WORD-SPACING'] = $biilp[ 'wSpacingCSS' ]; }        
-               if (isset($biilp[ 'toupper' ]) && $biilp[ 'toupper' ]) { $p['TEXT-TRANSFORM'] = 'uppercase'; }
-               else if (isset($biilp[ 'tolower' ]) && $biilp[ 'tolower' ]) { $p['TEXT-TRANSFORM'] = 'lowercase'; }
-               else if (isset($biilp[ 'capitalize' ]) && $biilp[ 'capitalize' ]) { $p['TEXT-TRANSFORM'] = 'capitalize'; }
-                       // CSS says text-decoration is not inherited, but IE7 does?? 
-               if (isset($biilp[ 'underline' ]) && $biilp[ 'underline' ]) { $p['TEXT-DECORATION'] = 'underline'; }
-               if (isset($biilp[ 'smCaps' ]) && $biilp[ 'smCaps' ]) { $p['FONT-VARIANT'] = 'small-caps'; }
-
-       }
-       //===============================================
-       //===============================================
-/*-- LISTS --*/
-       // Set Inherited properties
-       if ($inherit == 'TOPLIST') {
-               if ($this->listCSSlvl == 1) {
-                   $bilp = $this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties'];
-                   if (isset($bilp[ 'family' ]) && $bilp[ 'family' ]) { $p['FONT-FAMILY'] = $bilp[ 'family' ]; }
-                   if (isset($bilp[ 'I' ]) && $bilp[ 'I' ]) { $p['FONT-STYLE'] = 'italic'; }
-                   if (isset($bilp[ 'sizePt' ]) && $bilp[ 'sizePt' ]) { $p['FONT-SIZE'] = $bilp[ 'sizePt' ] . 'pt'; }
-                   if (isset($bilp[ 'B' ]) && $bilp[ 'B' ]) { $p['FONT-WEIGHT'] = 'bold'; }
-                   if (isset($bilp[ 'colorarray' ]) && $bilp[ 'colorarray' ]) { 
-                       $cor = $bilp[ 'colorarray' ];
-                       $p['COLOR'] = $this->mpdf->_colAtoString($cor);
-                   }
-                   if (isset($bilp[ 'toupper' ]) && $bilp[ 'toupper' ]) { $p['TEXT-TRANSFORM'] = 'uppercase'; }
-                   else if (isset($bilp[ 'tolower' ]) && $bilp[ 'tolower' ]) { $p['TEXT-TRANSFORM'] = 'lowercase'; }
-                   else if (isset($bilp[ 'capitalize' ]) && $bilp[ 'capitalize' ]) { $p['TEXT-TRANSFORM'] = 'capitalize'; }
-                   if (isset($bilp[ 'fontkerning' ])) {
-                       if ($bilp[ 'fontkerning' ]) { $p['FONT-KERNING'] = 'normal'; }
-                       else { $p['FONT-KERNING'] = 'none'; }
-                   }
-                   if (isset($bilp[ 'lSpacingCSS' ]) && $bilp[ 'lSpacingCSS' ]) { $p['LETTER-SPACING'] = $bilp[ 'lSpacingCSS' ]; }
-                   if (isset($bilp[ 'wSpacingCSS' ]) && $bilp[ 'wSpacingCSS' ]) { $p['WORD-SPACING'] = $bilp[ 'wSpacingCSS' ]; }
-                       // CSS says text-decoration is not inherited, but IE7 does??
-                   if (isset($bilp[ 'underline' ]) && $bilp[ 'underline' ]) { $p['TEXT-DECORATION'] = 'underline'; }
-                   if (isset($bilp[ 'smCaps' ]) && $bilp[ 'smCaps' ]) { $p['FONT-VARIANT'] = 'small-caps'; }
-                   if ($tag=='LI') {
-                       // Note to self - this should never work, as TOPLIST is not called when LI (see code removed in v5.3)
-                       $this->mpdf->Error("If you see this message, please report this as a bug to the mPDF Forum.");
-                   }
-               }
-       }
-/*-- END LISTS --*/
-       //===============================================
-       //===============================================
-       // DEFAULT for this TAG set in DefaultCSS
-       if (isset($this->mpdf->defaultCSS[$tag])) { 
-                       $zp = $this->fixCSS($this->mpdf->defaultCSS[$tag]);
-                       if (is_array($zp)) {    // Default overwrites Inherited
-                               $p = array_merge($p,$zp);       // !! Note other way round !!
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-/*-- TABLES --*/
-       // cellPadding overwrites TD/TH default but not specific CSS set on cell
-       if (($tag=='TD' || $tag=='TH') && isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding']) && ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'] || $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding']===0)) { 
-               $p['PADDING-LEFT'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
-               $p['PADDING-RIGHT'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
-               $p['PADDING-TOP'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
-               $p['PADDING-BOTTOM'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
-       }
-/*-- END TABLES --*/
-       //===============================================
-       // STYLESHEET TAG e.g. h1  p  div  table
-       if (isset($this->CSS[$tag]) && $this->CSS[$tag]) { 
-                       $zp = $this->CSS[$tag];
-                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
-                       if (is_array($zp)) { 
-                               $p = array_merge($p,$zp); 
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-       // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
-       foreach($classes AS $class) {
-                       $zp = array();
-                       if (isset($this->CSS['CLASS>>'.$class]) && $this->CSS['CLASS>>'.$class]) { $zp = $this->CSS['CLASS>>'.$class]; }
-                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
-                       if (is_array($zp)) { 
-                               $p = array_merge($p,$zp); 
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-/*-- TABLES --*/
-       // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd)  td:nth-child(2n+1)
-       if ($tag=='TR' || $tag=='TD' || $tag=='TH')  {
-               foreach($this->CSS AS $k=>$val) {
-                       if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
-                               $select = false;
-                               if ($tag=='TR')  {
-                                       $row = $this->mpdf->row;
-                                       $thnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) : 0);
-                                       $tfnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) : 0);
-                                       if ($this->mpdf->tabletfoot) { $row -= $thnr; }
-                                       else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
-                                       if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
-                                       else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
-                                       else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
-                                               if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
-                                       }
-                               }
-                               else  if ($tag=='TD' || $tag=='TH')  {
-                                       if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
-                                       else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
-                                       else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
-                                               if ((($this->mpdf->col+1) % $a[1]) == $a[2]) { $select = true; }
-                                       }
-                               }
-                               if ($select) {
-                                       $zp = $this->CSS[$tag.'>>SELECTORNTHCHILD>>'.$m[1]];
-                                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }
-                                       if (is_array($zp)) { 
-                                               $p = array_merge($p,$zp); 
-                                               $this->_mergeBorders($p,$zp);
-                                       }
-                               }
-                       }
-               }
-       }
-/*-- END TABLES --*/
-       //===============================================
-       // STYLESHEET ID e.g. #smallone{}  #redletter{}
-       if (isset($attr['ID']) && isset($this->CSS['ID>>'.$attr['ID']]) && $this->CSS['ID>>'.$attr['ID']]) {
-                       $zp = $this->CSS['ID>>'.$attr['ID']];
-                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
-                       if (is_array($zp)) { 
-                               $p = array_merge($p,$zp); 
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-       // STYLESHEET CLASS e.g. p.smallone{}  div.redletter{}
-       foreach($classes AS $class) {
-                       $zp = array();
-                       if (isset($this->CSS[$tag.'>>CLASS>>'.$class]) && $this->CSS[$tag.'>>CLASS>>'.$class]) { $zp = $this->CSS[$tag.'>>CLASS>>'.$class]; }
-                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
-                       if (is_array($zp)) { 
-                               $p = array_merge($p,$zp); 
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-       // STYLESHEET CLASS e.g. p#smallone{}  div#redletter{}
-       if (isset($attr['ID']) && isset($this->CSS[$tag.'>>ID>>'.$attr['ID']]) && $this->CSS[$tag.'>>ID>>'.$attr['ID']]) {
-                       $zp = $this->CSS[$tag.'>>ID>>'.$attr['ID']];
-                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
-                       if (is_array($zp)) { 
-                               $p = array_merge($p,$zp); 
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-       // Cascaded e.g. div.class p only works for block level
-       if ($inherit == 'BLOCK') {
-               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag], $p);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']['CLASS>>'.$class], $p);
-               }
-               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']['ID>>'.$attr['ID']], $p);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag.'>>CLASS>>'.$class], $p);
-               }
-               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag.'>>ID>>'.$attr['ID']], $p);
-       }
-       else if ($inherit == 'INLINE') {
-               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag], $p);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS']['CLASS>>'.$class], $p);
-               }
-               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS']['ID>>'.$attr['ID']], $p);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag.'>>CLASS>>'.$class], $p);
-               }
-               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag.'>>ID>>'.$attr['ID']], $p);
-       }
-/*-- TABLES --*/
-       else if ($inherit == 'TOPTABLE' || $inherit == 'TABLE') { // NB looks at $this->tablecascadeCSS-1 for cascading CSS
-               // false, 9 = don't check for 'depth' and do set border dominance
-               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag], $p, false, 9);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1]['CLASS>>'.$class], $p, false, 9);
-               }
-               // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd)  td:nth-child(2n+1)
-               if ($tag=='TR' || $tag=='TD' || $tag=='TH')  {
-                       foreach($this->tablecascadeCSS[$this->tbCSSlvl-1] AS $k=>$val) {
-                               if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
-                                       $select = false;
-                                       if ($tag=='TR')  {
-                                               $row = $this->mpdf->row;
-                                               $thnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) : 0);
-                                               $tfnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) : 0);
-                                               if ($this->mpdf->tabletfoot) { $row -= $thnr; }
-                                               else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
-                                               if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
-                                               else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
-                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
-                                                       if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
-                                               }
-                                       }
-                                       else if ($tag=='TD' || $tag=='TH')  {
-                                               if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
-                                               else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
-                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
-                                                       if ((($this->mpdf->col + 1) % $a[1]) == $a[2]) { $select = true; }
-                                               }
-                                       }
-                                       if ($select) {
-                                               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>SELECTORNTHCHILD>>'.$m[1]], $p, false, 9);
-                                       }
-                               }
-                       }
-               }
-               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1]['ID>>'.$attr['ID']], $p, false, 9);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>CLASS>>'.$class], $p, false, 9);
-               }
-               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>ID>>'.$attr['ID']], $p, false, 9);
-       }
-/*-- END TABLES --*/
-       //===============================================
-/*-- LISTS --*/
-       else if ($inherit == 'TOPLIST' || $inherit == 'LIST') { // NB looks at $this->listcascadeCSS-1 for cascading CSS
-               // false = don't check for 'depth' 
-               $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag], $p, false);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1]['CLASS>>'.$class], $p, false);
-               }
-               $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1]['ID>>'.$attr['ID']], $p, false);
-               foreach($classes AS $class) {
-                       $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag.'>>CLASS>>'.$class], $p, false);
-               }
-               $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag.'>>ID>>'.$attr['ID']], $p, false);
-       }
-/*-- END LISTS --*/
-       //===============================================
-       //===============================================
-       // INLINE STYLE e.g. style="CSS:property"
-       if (isset($attr['STYLE'])) {
-                       $zp = $this->readInlineCSS($attr['STYLE']);
-                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
-                       if (is_array($zp)) { 
-                               $p = array_merge($p,$zp); 
-                               $this->_mergeBorders($p,$zp);
-                       }
-       }
-       //===============================================
-       //===============================================
-       // INLINE ATTRIBUTES e.g. .. ALIGN="CENTER">
-       if (isset($attr['LANG']) and $attr['LANG']!='') {
-                       $p['LANG'] = $attr['LANG'];
-       }
-       if (isset($attr['COLOR']) and $attr['COLOR']!='') {
-                       $p['COLOR'] = $attr['COLOR'];
-       }
-       if ($tag != 'INPUT') {
-               if (isset($attr['WIDTH']) and $attr['WIDTH']!='') {
-                       $p['WIDTH'] = $attr['WIDTH'];
-               }
-               if (isset($attr['HEIGHT']) and $attr['HEIGHT']!='') {
-                       $p['HEIGHT'] = $attr['HEIGHT'];
-               }
-       }
-       if ($tag == 'FONT') {
-               if (isset($attr['FACE'])) {
-                       $p['FONT-FAMILY'] = $attr['FACE'];
-               }
-               if (isset($attr['SIZE']) and $attr['SIZE']!='') {
-                       $s = '';
-                       if ($attr['SIZE'] === '+1') { $s = '120%'; }
-                       else if ($attr['SIZE'] === '-1') { $s = '86%'; }
-                       else if ($attr['SIZE'] === '1') { $s = 'XX-SMALL'; }
-                       else if ($attr['SIZE'] == '2') { $s = 'X-SMALL'; }
-                       else if ($attr['SIZE'] == '3') { $s = 'SMALL'; }
-                       else if ($attr['SIZE'] == '4') { $s = 'MEDIUM'; }
-                       else if ($attr['SIZE'] == '5') { $s = 'LARGE'; }
-                       else if ($attr['SIZE'] == '6') { $s = 'X-LARGE'; }
-                       else if ($attr['SIZE'] == '7') { $s = 'XX-LARGE'; }
-                       if ($s) $p['FONT-SIZE'] = $s;
-               }
-       }
-       if (isset($attr['VALIGN']) and $attr['VALIGN']!='') {
-               $p['VERTICAL-ALIGN'] = $attr['VALIGN'];
-       }
-       if (isset($attr['VSPACE']) and $attr['VSPACE']!='') {
-               $p['MARGIN-TOP'] = $attr['VSPACE'];
-               $p['MARGIN-BOTTOM'] = $attr['VSPACE'];
-       }
-       if (isset($attr['HSPACE']) and $attr['HSPACE']!='') {
-               $p['MARGIN-LEFT'] = $attr['HSPACE'];
-               $p['MARGIN-RIGHT'] = $attr['HSPACE'];
-       }
-       //===============================================
-       return $p;
-}
-
-function PreviewBlockCSS($tag,$attr) {
-       // Looks ahead from current block level to a new level
-       $p = array();
-       $zp = array(); 
-       $oldcascadeCSS = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
-       $classes = array();
-       if (isset($attr['CLASS'])) { $classes = preg_split('/\s+/',$attr['CLASS']); }
-       //===============================================
-       // DEFAULT for this TAG set in DefaultCSS
-       if (isset($this->mpdf->defaultCSS[$tag])) { 
-               $zp = $this->fixCSS($this->mpdf->defaultCSS[$tag]);
-               if (is_array($zp)) { $p = array_merge($zp,$p); }        // Inherited overwrites default
-       }
-       // STYLESHEET TAG e.g. h1  p  div  table
-       if (isset($this->CSS[$tag])) { 
-               $zp = $this->CSS[$tag];
-               if (is_array($zp)) { $p = array_merge($p,$zp); }
-       }
-       // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
-       foreach($classes AS $class) {
-               $zp = array(); 
-               if (isset($this->CSS['CLASS>>'.$class])) { $zp = $this->CSS['CLASS>>'.$class]; }
-               if (is_array($zp)) { $p = array_merge($p,$zp); }
-       }
-       // STYLESHEET ID e.g. #smallone{}  #redletter{}
-       if (isset($attr['ID']) && isset($this->CSS['ID>>'.$attr['ID']])) {
-               $zp = $this->CSS['ID>>'.$attr['ID']];
-               if (is_array($zp)) { $p = array_merge($p,$zp); }
-       }
-       // STYLESHEET CLASS e.g. p.smallone{}  div.redletter{}
-       foreach($classes AS $class) {
-               $zp = array(); 
-               if (isset($this->CSS[$tag.'>>CLASS>>'.$class])) { $zp = $this->CSS[$tag.'>>CLASS>>'.$class]; }
-               if (is_array($zp)) { $p = array_merge($p,$zp); }
-       }
-       // STYLESHEET CLASS e.g. p#smallone{}  div#redletter{}
-       if (isset($attr['ID']) && isset($this->CSS[$tag.'>>ID>>'.$attr['ID']])) {
-               $zp = $this->CSS[$tag.'>>ID>>'.$attr['ID']];
-               if (is_array($zp)) { $p = array_merge($p,$zp); }
-       }
-       //===============================================
-       // STYLESHEET TAG e.g. div h1    div p
-
-       $this->_set_mergedCSS($oldcascadeCSS[$tag], $p);
-       // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
-       foreach($classes AS $class) {
-         
-         $this->_set_mergedCSS($oldcascadeCSS['CLASS>>'.$class], $p);
-       }
-       // STYLESHEET CLASS e.g. #smallone{}  #redletter{}
-       if (isset($attr['ID'])) {
-         
-         $this->_set_mergedCSS($oldcascadeCSS['ID>>'.$attr['ID']], $p);
-       }
-       // STYLESHEET CLASS e.g. div.smallone{}  p.redletter{}
-       foreach($classes AS $class) {
-         
-         $this->_set_mergedCSS($oldcascadeCSS[$tag.'>>CLASS>>'.$class], $p);
-       }
-       // STYLESHEET CLASS e.g. div#smallone{}  p#redletter{}
-       if (isset($attr['ID'])) {
-         
-         $this->_set_mergedCSS($oldcascadeCSS[$tag.'>>ID>>'.$attr['ID']], $p);
-       }
-       //===============================================
-       // INLINE STYLE e.g. style="CSS:property"
-       if (isset($attr['STYLE'])) {
-               $zp = $this->readInlineCSS($attr['STYLE']);
-               if (is_array($zp)) { $p = array_merge($p,$zp); }
-       }
-       //===============================================
-       return $p;
-}
-
-
-
-
-
-}      // end of class
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/directw.php b/inc/3rdparty/libraries/mpdf/classes/directw.php
deleted file mode 100644 (file)
index dc317d2..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-<?php
-
-class directw {
-
-var $mpdf = null;
-
-function directw(&$mpdf) {
-       $this->mpdf = $mpdf;
-}
-
-
-function Write($h,$txt,$currentx=0,$link='',$directionality='ltr',$align='') {
-       if (!$align) { 
-               if ($directionality=='rtl') { $align = 'R'; }
-               else { $align = 'L'; }
-       }
-       if ($h == 0) { $this->mpdf->SetLineHeight(); $h = $this->mpdf->lineheight; }
-       //Output text in flowing mode
-       $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x; 
-
-       $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
-       $s=str_replace("\r",'',$txt);
-       if ($this->mpdf->usingCoreFont)  { $nb=strlen($s); }
-       else {
-               $nb=mb_strlen($s, $this->mpdf->mb_enc );
-               // handle single space character
-               if(($nb==1) && $s == " ") {
-                       $this->mpdf->x += $this->mpdf->GetStringWidth($s);
-                       return;
-               }
-       }
-       $sep=-1;
-       $i=0;
-       $j=0;
-       $l=0;
-       $nl=1;
-       if (!$this->mpdf->usingCoreFont) {
-               if (preg_match("/([".$this->mpdf->pregRTLchars."])/u", $txt)) { $this->mpdf->biDirectional = true; }    // *RTL*
-               $checkCursive=false;
-               if ($this->mpdf->biDirectional) {  $checkCursive=true; }        // *RTL*
-               else if (isset($this->mpdf->CurrentFont['indic']) && $this->mpdf->CurrentFont['indic']) {  $checkCursive=true; }        // *INDIC*
-               while($i<$nb) {
-                       //Get next character
-                       $c = mb_substr($s,$i,1,$this->mpdf->mb_enc );
-                       if($c == "\n") {
-                               // WORD SPACING
-                               $this->mpdf->ResetSpacing();
-                               //Explicit line break
-                               $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc));
-                               if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
-                               $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
-                               $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
-                               $i++;
-                               $sep = -1;
-                               $j = $i;
-                               $l = 0;
-                               if($nl == 1) {
-                                       if ($currentx != 0) $this->mpdf->x=$currentx;
-                                       else $this->mpdf->x=$this->mpdf->lMargin;
-                                       $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
-                                       $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
-                               }
-                               $nl++;
-                               continue;
-                       }
-                       if($c == " ") { $sep= $i; }
-                       $l += $this->mpdf->GetCharWidthNonCore($c);     // mPDF 5.3.04
-                       if($l > $wmax) {
-                               //Automatic line break (word wrapping)
-                               if($sep == -1) {
-                                       // WORD SPACING
-                                       $this->mpdf->ResetSpacing();
-                                       if($this->mpdf->x > $this->mpdf->lMargin) {
-                                               //Move to next line
-                                               if ($currentx != 0) $this->mpdf->x=$currentx;
-                                               else $this->mpdf->x=$this->mpdf->lMargin;
-                                               $this->mpdf->y+=$h;
-                                               $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
-                                               $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
-                                               $i++;
-                                               $nl++;
-                                               continue;
-                                       }
-                                       if($i==$j) { $i++; }
-                                       $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc));
-                                       if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
-                                       $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
-                                       $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
-                               }
-                               else {
-                                       $tmp = rtrim(mb_substr($s,$j,$sep-$j,$this->mpdf->mb_enc));
-                                       if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
-                                       $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
-
-                                       if($align=='J') {
-                                               //////////////////////////////////////////
-                                               // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
-                                               // WORD SPACING
-                                               // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
-                                             $tmp = str_replace(chr(194).chr(160),chr(32),$tmp ); 
-                                               $len_ligne = $this->mpdf->GetStringWidth($tmp );
-                                               $nb_carac = mb_strlen( $tmp , $this->mpdf->mb_enc ) ;  
-                                               $nb_spaces = mb_substr_count( $tmp ,' ', $this->mpdf->mb_enc ) ;  
-                                               $inclCursive=false;
-                                               if ($checkCursive) {
-                                                       if (preg_match("/([".$this->mpdf->pregRTLchars."])/u", $tmp)) { $inclCursive = true; }  // *RTL*
-                                                       if (preg_match("/([".$this->mpdf->pregHIchars.$this->mpdf->pregBNchars.$this->mpdf->pregPAchars."])/u", $tmp)) { $inclCursive = true; } // *INDIC*
-                                               }
-                                               list($charspacing,$ws) = $this->mpdf->GetJspacing($nb_carac,$nb_spaces,((($w-2) - $len_ligne) * _MPDFK),$inclCursive);
-                                               $this->mpdf->SetSpacing($charspacing,$ws);
-                                               //////////////////////////////////////////
-                                       }
-                                       $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
-                                       $i=$sep+1;
-                               }
-                               $sep = -1;
-                               $j = $i;
-                               $l = 0;
-                               if($nl==1) {
-                                       if ($currentx != 0) $this->mpdf->x=$currentx;
-                                       else $this->mpdf->x=$this->mpdf->lMargin;
-                                       $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
-                                       $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
-                               }
-                               $nl++;
-                       }
-                       else { $i++; }
-               }
-               //Last chunk
-               // WORD SPACING
-               $this->mpdf->ResetSpacing();
-       }
-       else {
-               while($i<$nb) {
-                       //Get next character
-                       $c=$s[$i];
-                       if($c == "\n") {
-                               //Explicit line break
-                               // WORD SPACING
-                               $this->mpdf->ResetSpacing();
-                               $this->mpdf->Cell($w, $h, substr($s, $j, $i-$j), 0, 2, $align, $fill, $link);
-                               $i++;
-                               $sep = -1;
-                               $j = $i;
-                               $l = 0;
-                               if($nl == 1) {
-                                       if ($currentx != 0) $this->mpdf->x=$currentx;
-                                       else $this->mpdf->x=$this->mpdf->lMargin;
-                                       $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
-                                       $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
-                               }
-                               $nl++;
-                               continue;
-                       }
-                       if($c == " ") { $sep= $i; }
-                       $l += $this->mpdf->GetCharWidthCore($c);        // mPDF 5.3.04
-                       if($l > $wmax) {
-                               //Automatic line break (word wrapping)
-                               if($sep == -1) {
-                                       // WORD SPACING
-                                       $this->mpdf->ResetSpacing();
-                                       if($this->mpdf->x > $this->mpdf->lMargin) {
-                                               //Move to next line
-                                               if ($currentx != 0) $this->mpdf->x=$currentx;
-                                               else $this->mpdf->x=$this->mpdf->lMargin;
-                                               $this->mpdf->y+=$h;
-                                               $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
-                                               $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
-                                               $i++;
-                                               $nl++;
-                                               continue;
-                                       }
-                                       if($i==$j) { $i++; }
-                                       $this->mpdf->Cell($w, $h, substr($s, $j, $i-$j), 0, 2, $align, $fill, $link);
-                               }
-                               else {
-                                       $tmp = substr($s, $j, $sep-$j);
-                                       if($align=='J') {
-                                               //////////////////////////////////////////
-                                               // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
-                                               // WORD SPACING
-                                               // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
-                                             $tmp = str_replace(chr(160),chr(32),$tmp );
-                                               $len_ligne = $this->mpdf->GetStringWidth($tmp );
-                                               $nb_carac = strlen( $tmp ) ;  
-                                               $nb_spaces = substr_count( $tmp ,' ' ) ;  
-                                               list($charspacing,$ws) = $this->mpdf->GetJspacing($nb_carac,$nb_spaces,((($w-2) - $len_ligne) * _MPDFK),$false);
-                                               $this->mpdf->SetSpacing($charspacing,$ws);
-                                               //////////////////////////////////////////
-                                       }
-                                       $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
-                                       $i=$sep+1;
-                               }
-                               $sep = -1;
-                               $j = $i;
-                               $l = 0;
-                               if($nl==1) {
-                                       if ($currentx != 0) $this->mpdf->x=$currentx;
-                                       else $this->mpdf->x=$this->mpdf->lMargin;
-                                       $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
-                                       $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
-                               }
-                               $nl++;
-                       }
-                       else {
-                               $i++;
-                       }
-               }
-               // WORD SPACING
-               $this->mpdf->ResetSpacing();
-       }
-       //Last chunk
-       if($i!=$j) {
-               if ($currentx != 0) $this->mpdf->x=$currentx;
-               else $this->mpdf->x=$this->mpdf->lMargin;       
-               if ($this->mpdf->usingCoreFont) { $tmp = substr($s,$j,$i-$j); }
-               else {
-                       $tmp = mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc);
-                       if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
-                       $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
-               }
-               $this->mpdf->Cell($w,$h,$tmp,0,0,$align,$fill,$link);
-       }
-}
-
-
-function CircularText($x, $y, $r, $text, $align='top', $fontfamily='', $fontsizePt=0, $fontstyle='', $kerning=120, $fontwidth=100, $divider='') {      // mPDF 5.5.23
-       if ($font || $fontstyle || $fontsizePt) $this->mpdf->SetFont($fontfamily,$fontstyle,$fontsizePt);
-       $kerning/=100;
-       $fontwidth/=100;        
-       if($kerning==0) $this->mpdf->Error('Please use values unequal to zero for kerning (CircularText)');
-       if($fontwidth==0) $this->mpdf->Error('Please use values unequal to zero for font width (CircularText)');
-       $text=str_replace("\r",'',$text);
-       //circumference
-       $u=($r*2)*M_PI;
-       // mPDF 5.5.23
-       $checking = true;
-       $autoset = false;
-       while($checking) {
-          $t=0;
-          $w = array();
-          if ($this->mpdf->usingCoreFont)  {
-               $nb=strlen($text); 
-               for($i=0; $i<$nb; $i++){
-                       $w[$i]=$this->mpdf->GetStringWidth($text[$i]);
-                       $w[$i]*=$kerning*$fontwidth;
-                       $t+=$w[$i];
-               }
-          }
-          else { 
-               $nb=mb_strlen($text, $this->mpdf->mb_enc ); 
-               $lastchar = '';
-               $unicode = $this->mpdf->UTF8StringToArray($text);
-               for($i=0; $i<$nb; $i++){
-                       $c = mb_substr($text,$i,1,$this->mpdf->mb_enc );
-                       $w[$i]=$this->mpdf->GetStringWidth($c);
-                       $w[$i]*=$kerning*$fontwidth;
-                       $char = $unicode[$i];
-                       if ($this->mpdf->useKerning && $lastchar) {
-                               if (isset($this->mpdf->CurrentFont['kerninfo'][$lastchar][$char])) { 
-                                       $tk = $this->mpdf->CurrentFont['kerninfo'][$lastchar][$char] * ($this->mpdf->FontSize/ 1000) * $kerning * $fontwidth; 
-                                       $w[$i] += $tk/2;
-                                       $w[$i-1] += $tk/2;
-                                       $t+=$tk;
-                               }
-                       }
-                       $lastchar = $char;
-                       $t+=$w[$i];
-               }
-          }
-          if ($fontsizePt>=0 || $autoset) { $checking = false; }
-          else {
-               $t+=$this->mpdf->GetStringWidth('  ');
-               if ($divider)
-                       $t+=$this->mpdf->GetStringWidth('  ');
-               if ($fontsizePt==-2)
-                       $fontsizePt = $this->mpdf->FontSizePt * 0.5  *  $u/$t;
-               else 
-                       $fontsizePt = $this->mpdf->FontSizePt * $u/$t;
-               $this->mpdf->SetFontSize($fontsizePt);
-               $autoset = true;
-          }
-       }
-
-       //total width of string in degrees
-       $d=($t/$u)*360;
-
-       $this->mpdf->StartTransform();
-       // rotate matrix for the first letter to center the text
-       // (half of total degrees)
-       if($align=='top'){
-               $this->mpdf->transformRotate(-$d/2, $x, $y);
-       }
-       else{
-               $this->mpdf->transformRotate($d/2, $x, $y);
-       }
-       //run through the string
-       for($i=0; $i<$nb; $i++){
-               if($align=='top'){
-                       //rotate matrix half of the width of current letter + half of the width of preceding letter
-                       if($i==0){
-                               $this->mpdf->transformRotate((($w[$i]/2)/$u)*360, $x, $y);
-                       }
-                       else{
-                               $this->mpdf->transformRotate((($w[$i]/2+$w[$i-1]/2)/$u)*360, $x, $y);
-                       }
-                       if($fontwidth!=1){
-                               $this->mpdf->StartTransform();
-                               $this->mpdf->transformScale($fontwidth*100, 100, $x, $y);
-                       }
-                       $this->mpdf->SetXY($x-$w[$i]/2, $y-$r);
-               }
-               else{
-                       //rotate matrix half of the width of current letter + half of the width of preceding letter
-                       if($i==0){
-                               $this->mpdf->transformRotate(-(($w[$i]/2)/$u)*360, $x, $y);
-                       }
-                       else{
-                               $this->mpdf->transformRotate(-(($w[$i]/2+$w[$i-1]/2)/$u)*360, $x, $y);
-                       }
-                       if($fontwidth!=1){
-                               $this->mpdf->StartTransform();
-                               $this->mpdf->transformScale($fontwidth*100, 100, $x, $y);
-                       }
-                       $this->mpdf->SetXY($x-$w[$i]/2, $y+$r-($this->mpdf->FontSize));
-               }
-               if ($this->mpdf->usingCoreFont) { $c=$text[$i]; }
-               else { $c = mb_substr($text,$i,1,$this->mpdf->mb_enc ); }
-               $this->mpdf->Cell(($w[$i]),$this->mpdf->FontSize,$c,0,0,'C');   // mPDF 5.3.53
-               if($fontwidth!=1){
-                       $this->mpdf->StopTransform();
-               }
-       }
-       $this->mpdf->StopTransform();
-
-       // mPDF 5.5.23
-       if($align=='top' && $divider!=''){
-               $wc=$this->mpdf->GetStringWidth($divider);
-               $wc*=$kerning*$fontwidth;
-
-               $this->mpdf->StartTransform();
-               $this->mpdf->transformRotate(90, $x, $y);
-               $this->mpdf->SetXY($x-$wc/2, $y-$r);
-               $this->mpdf->Cell(($wc),$this->mpdf->FontSize,$divider,0,0,'C');
-               $this->mpdf->StopTransform();
-
-               $this->mpdf->StartTransform();
-               $this->mpdf->transformRotate(-90, $x, $y);
-               $this->mpdf->SetXY($x-$wc/2, $y-$r);
-               $this->mpdf->Cell(($wc),$this->mpdf->FontSize,$divider,0,0,'C');
-               $this->mpdf->StopTransform();
-       }
-}
-
-function Shaded_box( $text,$font='',$fontstyle='B',$szfont='',$width='70%',$style='DF',$radius=2.5,$fill='#FFFFFF',$color='#000000',$pad=2 )
-{
-// F (shading - no line),S (line, no shading),DF (both)
-       if (!$font) { $font= $this->mpdf->default_font; }
-       if (!$szfont) { $szfont = ($this->mpdf->default_font_size * 1.8); }
-
-       $text = $this->mpdf->purify_utf8_text($text);
-       if ($this->mpdf->text_input_as_HTML) {
-               $text = $this->mpdf->all_entities_to_utf8($text);
-       }
-       if ($this->mpdf->usingCoreFont) { $text = mb_convert_encoding($text,$this->mpdf->mb_enc,'UTF-8'); }
-       // DIRECTIONALITY
-       $this->mpdf->magic_reverse_dir($text, true, $this->mpdf->directionality);       // *RTL*
-       // Font-specific ligature substitution for Indic fonts
-       if (isset($this->mpdf->CurrentFont['indic']) && $this->mpdf->CurrentFont['indic']) $this->mpdf->ConvertIndic($text);    // *INDIC*
-       $text = ' '.$text.' ';
-       if (!$width) { $width = $this->mpdf->pgwidth; } else { $width=$this->mpdf->ConvertSize($width,$this->mpdf->pgwidth); }
-       $midpt = $this->mpdf->lMargin+($this->mpdf->pgwidth/2);
-       $r1  = $midpt-($width/2);       //($this->mpdf->w / 2) - 40;
-       $r2  = $r1 + $width;            //$r1 + 80;
-       $y1  = $this->mpdf->y;
-
-
-       $mid = ($r1 + $r2 ) / 2;
-       $loop   = 0;
-    
-       while ( $loop == 0 )
-       {
-               $this->mpdf->SetFont( $font, $fontstyle, $szfont );
-               $sz = $this->mpdf->GetStringWidth( $text );
-               if ( ($r1+$sz) > $r2 )
-                       $szfont --;
-               else
-                       $loop ++;
-       }
-
-       $y2  = $this->mpdf->FontSize+($pad*2);
-
-       $this->mpdf->SetLineWidth(0.1);
-       $fc = $this->mpdf->ConvertColor($fill);
-       $tc = $this->mpdf->ConvertColor($color);
-       $this->mpdf->SetFColor($fc);
-       $this->mpdf->SetTColor($tc);
-       $this->mpdf->RoundedRect($r1, $y1, ($r2 - $r1), $y2, $radius, $style);
-       $this->mpdf->SetX( $r1);
-       $this->mpdf->Cell($r2-$r1, $y2, $text, 0, 1, "C" );
-       $this->mpdf->SetY($y1+$y2+2);   // +2 = mm margin below shaded box
-       $this->mpdf->Reset();
-}
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/form.php b/inc/3rdparty/libraries/mpdf/classes/form.php
deleted file mode 100644 (file)
index 9367e71..0000000
+++ /dev/null
@@ -1,1498 +0,0 @@
-<?php
-
-class form {
-
-var $mpdf = null;
-
-var $forms;
-var $formn;
-
-//Active Forms
-var $formSubmitNoValueFields;
-var $formExportType;
-var $formSelectDefaultOption;
-var $formUseZapD;
-/* Form Styles */
-var $form_border_color; 
-var $form_background_color; 
-var $form_border_width;
-var $form_border_style;
-var $form_button_border_color; 
-var $form_button_background_color;
-var $form_button_border_width;
-var $form_button_border_style;
-var $form_radio_color;
-var $form_radio_background_color; 
-
-var $form_element_spacing;
-
-// Active forms
-var $formMethod;
-var $formAction;
-var $form_fonts;
-var $form_radio_groups;
-var $form_checkboxes;
-var $pdf_acro_array;
-
-var $pdf_array_co;
-var $array_form_button_js;
-var $array_form_choice_js;
-var $array_form_text_js;
-
-/* Button Text */
-var $form_button_text;
-var $form_button_text_over;
-var $form_button_text_click;
-var $form_button_icon;
-
-
-// FORMS
-var $textarea_lineheight;
-
-function form(&$mpdf) {
-       $this->mpdf = $mpdf;
-
-       // ACTIVE FORMS
-       $this->formExportType = 'xfdf'; // 'xfdf' or 'html'
-       $this->formSubmitNoValueFields = true;  // Whether to include blank fields when submitting data
-       $this->formSelectDefaultOption = true;  // for Select drop down box; if no option is explicitly maked as selected,
-                                                       // this determines whether to select 1st option (as per browser)
-                                                       // - affects whether "required" attribute is relevant
-       $this->formUseZapD = true;              // Determine whether to use ZapfDingbat icons for radio/checkboxes
-
-       // FORM STYLES
-       // These can alternatively use a 4 number string to represent CMYK colours
-       $this->form_border_color = '0.6 0.6 0.72';              // RGB
-       $this->form_background_color = '0.975 0.975 0.975';     // RGB
-       $this->form_border_width = '1';         // 0 doesn't seem to work as it should
-       $this->form_border_style = 'S';         // B - Bevelled; D - Double
-       $this->form_button_border_color = '0.2 0.2 0.55'; 
-       $this->form_button_background_color = '0.941 0.941 0.941';
-       $this->form_button_border_width = '1';
-       $this->form_button_border_style = 'S';
-       $this->form_radio_color = '0.0 0.0 0.4';        // radio and checkbox
-       $this->form_radio_background_color = '0.9 0.9 0.9'; 
-
-       // FORMS
-       $this->textarea_lineheight = 1.25;
-
-       // FORM ELEMENT SPACING
-       $this->form_element_spacing['select']['outer']['h'] = 0.5;      // Horizontal spacing around SELECT
-       $this->form_element_spacing['select']['outer']['v'] = 0.5;      // Vertical spacing around SELECT
-       $this->form_element_spacing['select']['inner']['h'] = 0.7;      // Horizontal padding around SELECT
-       $this->form_element_spacing['select']['inner']['v'] = 0.7;      // Vertical padding around SELECT
-       $this->form_element_spacing['input']['outer']['h'] = 0.5;
-       $this->form_element_spacing['input']['outer']['v'] = 0.5;
-       $this->form_element_spacing['input']['inner']['h'] = 0.7;
-       $this->form_element_spacing['input']['inner']['v'] = 0.7;
-       $this->form_element_spacing['textarea']['outer']['h'] = 0.5;
-       $this->form_element_spacing['textarea']['outer']['v'] = 0.5;
-       $this->form_element_spacing['textarea']['inner']['h'] = 1;
-       $this->form_element_spacing['textarea']['inner']['v'] = 0.5;
-       $this->form_element_spacing['button']['outer']['h'] = 0.5;
-       $this->form_element_spacing['button']['outer']['v'] = 0.5;
-       $this->form_element_spacing['button']['inner']['h'] = 2;
-       $this->form_element_spacing['button']['inner']['v'] = 1;
-
-       // INITIALISE non-configurable
-       $this->formMethod = 'POST';
-       $this->formAction = '';
-       $this->form_fonts = array();
-       $this->form_radio_groups = array();
-       $this->form_checkboxes = false;
-       $this->forms = array();
-       $this->pdf_array_co = '';
-
-
-}
-
-
-function print_ob_text($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
-               // TEXT/PASSWORD INPUT
-                       if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
-                               $flags = array();
-                               if ($objattr['disabled'] || $objattr['readonly']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled 
-                               if ($objattr['required']) { $flags[] = 2; }     // required
-                               if (!$objattr['spellcheck']) { $flags[] = 23; } // DoNotSpellCheck
-                               if ($objattr['subtype']=='PASSWORD') { $flags[] = 14; }
-                               $this->mpdf->SetTColor($objattr['color']);
-                               $fieldalign = $rtlalign;
-                               if ($objattr['text_align']) { $fieldalign = $objattr['text_align']; }
-                               if ($objattr['subtype']=='PASSWORD') { $val = $objattr['value']; }
-                               else { $val = $objattr['text']; }
-                               // mPDF 5.3.25
-                               $js = array();
-                               if ($objattr['onCalculate']) { $js[] = array('C', $objattr['onCalculate']); }
-                               if ($objattr['onValidate']) { $js[] = array('V', $objattr['onValidate']); }
-                               if ($objattr['onFormat']) { $js[] = array('F', $objattr['onFormat']); }
-                               if ($objattr['onKeystroke']) { $js[] = array('K', $objattr['onKeystroke']); }
-                               $this->SetFormText( $w, $h, $objattr['fieldname'], $val, $val, $objattr['title'], $flags, $fieldalign, false, $objattr['maxlength'], $js, $objattr['background-col'], $objattr['border-col']  );
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                       }
-                       else {
-                               $w -= $this->form_element_spacing['input']['outer']['h']*2  /$k;
-                               $h -= $this->form_element_spacing['input']['outer']['v']*2 /$k;
-                               $this->mpdf->x += $this->form_element_spacing['input']['outer']['h'] /$k;
-                               $this->mpdf->y += $this->form_element_spacing['input']['outer']['v'] /$k;
-                               // Chop texto to max length $w-inner-padding
-                               while ($this->mpdf->GetStringWidth($texto) > $w-($this->form_element_spacing['input']['inner']['h']*2)) {
-                                       $texto = mb_substr($texto,0,mb_strlen($texto,$this->mpdf->mb_enc)-1,$this->mpdf->mb_enc);
-                               }
-                               $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
-                               $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;   
-                               $this->mpdf->SetLineWidth(0.2 /$k );
-                               $this->mpdf->magic_reverse_dir($texto, false, $blockdir);       // *RTL*
-                               if (isset($objattr['disabled']) && $objattr['disabled']) { 
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
-                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
-                               }
-                               else if (isset($objattr['readonly']) && $objattr['readonly']) { 
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
-                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                               }
-                               else {
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
-                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                               }
-                               $this->mpdf->Cell($w,$h,$texto,1,0,$rtlalign,1,'',0,$this->form_element_spacing['input']['inner']['h'] /$k ,$this->form_element_spacing['input']['inner']['h'] /$k , 'M');
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                               $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
-                       }
-}
-
-function print_ob_textarea($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
-                  // TEXTAREA
-                   if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
-                               $flags = array();
-                               $flags = array(13);     // textarea
-                               if ($objattr['disabled'] || $objattr['readonly']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
-                               if ($objattr['required']) { $flags[] = 2; }     // required
-                               if (!$objattr['spellcheck']) { $flags[] = 23; } // DoNotSpellCheck
-                               if ($objattr['donotscroll']) { $flags[] = 24; } // DoNotScroll
-                               $this->mpdf->SetTColor($objattr['color']);
-                               $fieldalign = $rtlalign;
-                               if ($texto == ' ') { $texto = ''; }     // mPDF 5.3.24
-                               if ($objattr['text_align']) { $fieldalign = $objattr['text_align']; }
-                               // mPDF 5.3.25
-                               $js = array();
-                               if ($objattr['onCalculate']) { $js[] = array('C', $objattr['onCalculate']); }
-                               if ($objattr['onValidate']) { $js[] = array('V', $objattr['onValidate']); }
-                               if ($objattr['onFormat']) { $js[] = array('F', $objattr['onFormat']); }
-                               if ($objattr['onKeystroke']) { $js[] = array('K', $objattr['onKeystroke']); }
-                               $this->SetFormText( $w, $h, $objattr['fieldname'], $texto, $texto, $objattr['title'], $flags, $fieldalign , false, -1, $js, $objattr['background-col'], $objattr['border-col']  );
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                   }
-                   else {
-                       $w -= $this->form_element_spacing['textarea']['outer']['h']*2 /$k ;
-                       $h -= $this->form_element_spacing['textarea']['outer']['v']*2 /$k ;
-                       $this->mpdf->x += $this->form_element_spacing['textarea']['outer']['h'] /$k ;
-                       $this->mpdf->y += $this->form_element_spacing['textarea']['outer']['v'] /$k ;
-                       $this->mpdf->SetLineWidth(0.2 /$k );
-                       if (isset($objattr['disabled']) && $objattr['disabled']) { 
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
-                       }
-                       else if (isset($objattr['readonly']) && $objattr['readonly']) { 
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                       }
-                       else {
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                       }
-                       $this->mpdf->Rect($this->mpdf->x,$this->mpdf->y,$w,$h,'DF');
-                       $w -= $this->form_element_spacing['textarea']['inner']['h']*2 /$k ;
-                       $this->mpdf->x += $this->form_element_spacing['textarea']['inner']['h'] /$k ;
-                       $this->mpdf->y += $this->form_element_spacing['textarea']['inner']['v'] /$k ;
-                       $linesneeded = $this->mpdf->WordWrap($texto,$w);
-                       if ($linesneeded > $objattr['rows']) { //Too many words inside textarea
-                               $textoaux = explode("\n",$texto);
-                        $texto = '';
-                        for($i=0;$i<$objattr['rows'];$i++) {
-                          if ($i == ($objattr['rows']-1)) $texto .= $textoaux[$i];
-                          else $texto .= $textoaux[$i] . "\n";
-                        }
-                               $texto = mb_substr($texto,0,mb_strlen($texto,$this->mpdf->mb_enc)-4,$this->mpdf->mb_enc) . "...";
-                       }
-                       if ($texto != '') $this->mpdf->MultiCell($w,$this->mpdf->FontSize*$this->textarea_lineheight,$texto,0,'',0,'',$blockdir,true);
-                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
-                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                   }
-}
-
-function print_ob_select($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
-               // SELECT
-                       if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 19 - edit (only if combo)
-                               $flags = array();
-                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
-                               if ($objattr['required']) { $flags[] = 2; }     // required
-                               if ($objattr['multiple'] && $objattr['size']>1) { $flags[] = 22; }   //flag 22 = multiselect (listbox)
-                               if ($objattr['size']<2) { 
-                                       $flags[] = 18;    //flag 18 = combobox (else a listbox)
-                                       if ($objattr['editable']) { $flags[] = 19; }    // editable
-                               }
-                               // only spellcheck if combo and editable
-                               if (!$objattr['spellcheck'] || $objattr['size']>1 || !$objattr['editable']) { $flags[] = 23; }  // DoNotSpellCheck
-                               if ($objattr['subtype']=='PASSWORD') { $flags[] = 14; }
-                               if ($objattr['onChange']) { $js = $objattr['onChange']; }
-                               else { $js = ''; }      // mPDF 5.3.37
-                               $data = array('VAL' => array(), 'OPT' => array(), 'SEL' => array(), );
-                               for($i=0; $i<count($objattr['items']); $i++) {
-                                       $item = $objattr['items'][$i];
-                                       $data['VAL'][] = $item['exportValue'];
-                                       $data['OPT'][] = $item['content'];
-                                       if ($item['selected']) { $data['SEL'][] = $i; }
-                               }
-                               if (count($data['SEL'])==0 && $this->formSelectDefaultOption) {$data['SEL'][] = 0; }
-                               $this->mpdf->SetTColor($objattr['color']);
-                               $this->SetFormChoice( $w, $h, $objattr['fieldname'], $flags, $data, $rtlalign, $js );
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                       }
-                       else {
-                         $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
-                         $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;
-                         $this->mpdf->magic_reverse_dir($texto, false, $blockdir);     // *RTL*
-                         $this->mpdf->SetLineWidth(0.2 /$k );
-                               if (isset($objattr['disabled']) && $objattr['disabled']) { 
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
-                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
-                               }
-                               else {
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
-                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                               }
-                               $w -= $this->form_element_spacing['select']['outer']['h']*2 /$k ;
-                               $h -= $this->form_element_spacing['select']['outer']['v']*2 /$k ;
-                               $this->mpdf->x += $this->form_element_spacing['select']['outer']['h'] /$k ;
-                               $this->mpdf->y += $this->form_element_spacing['select']['outer']['v'] /$k ;
-                         $this->mpdf->Cell($w-($this->mpdf->FontSize*1.4),$h,$texto,1,0,$rtlalign,1,'',0,$this->form_element_spacing['select']['inner']['h'] /$k,$this->form_element_spacing['select']['inner']['h'] /$k , 'M') ;
-                         $this->mpdf->SetFColor($this->mpdf->ConvertColor(190));
-                         $save_font = $this->mpdf->FontFamily;
-                         $save_currentfont = $this->mpdf->currentfontfamily;
-                         if ($this->mpdf->PDFA || $this->mpdf->PDFX) {
-                               if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { $this->mpdf->PDFAXwarnings[] = "Core Adobe font Zapfdingbats cannot be embedded in mPDF - used in Form element: Select - which is required for PDFA1-b or PDFX/1-a. (Different character/font will be substituted.)"; }
-                               $this->mpdf->SetFont('sans');
-                               if ($this->mpdf->_charDefined($this->mpdf->CurrentFont['cw'], 9660)) { $down = "\xe2\x96\xbc"; }
-                               else { $down = '='; }
-                               $this->mpdf->Cell(($this->mpdf->FontSize*1.4),$h,$down,1,0,'C',1,'',0,0,0, 'M') ;
-                         }
-                         else {
-                               $this->mpdf->SetFont('czapfdingbats','',0);
-                               $this->mpdf->Cell(($this->mpdf->FontSize*1.4),$h,chr(116),1,0,'C',1,'',0,0,0, 'M') ;
-                         }
-                         $this->mpdf->SetFont($save_font,'',0);
-                         $this->mpdf->currentfontfamily = $save_currentfont;
-                         $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
-                         $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
-                         $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                       }
-}
-
-function print_ob_imageinput($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
-               // INPUT/BUTTON as IMAGE
-                    if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 3 - No export; 
-                               $flags = array();
-                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               if ($objattr['onClick']) { $js = $objattr['onClick']; }
-                               else { $js = ''; }
-                               $this->SetJSButton( $w, $h, $objattr['fieldname'],  $objattr['value'], $js, $objattr['ID'], $objattr['title'], $flags, $objattr['Indexed']);
-                    }
-                    else {
-                       $this->mpdf->y = $objattr['INNER-Y'];
-                       $this->mpdf->_out( sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q",$objattr['INNER-WIDTH'] *_MPDFK,$objattr['INNER-HEIGHT'] *_MPDFK,$objattr['INNER-X'] *_MPDFK,($this->mpdf->h-($objattr['INNER-Y'] +$objattr['INNER-HEIGHT'] ))*_MPDFK,$objattr['ID'] ) );
-                       if (isset($objattr['BORDER-WIDTH']) && $objattr['BORDER-WIDTH']) { $this->mpdf->PaintImgBorder($objattr,$is_table); }
-                    }
-}
-
-function print_ob_button($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
-               // BUTTON
-                    if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 3 - No export; 
-                               $flags = array();
-                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } 
-                               $this->mpdf->SetTColor($objattr['color']);
-                               if ($objattr['subtype'] == 'RESET') {
-                                       $this->SetFormButtonText( $objattr['value'] );
-                                       $this->SetFormReset( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $flags, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );    
-                               }
-                               else if ($objattr['subtype'] == 'SUBMIT') {
-                                       $url = $this->formAction;
-                                       $type = $this->formExportType;
-                                       $method = $this->formMethod;
-                                       $this->SetFormButtonText( $objattr['value'] );
-                                       $this->SetFormSubmit( $w, $h, $objattr['fieldname'],  $objattr['value'], $url, $objattr['title'], $type, $method, $flags, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
-                               }
-                               else if ($objattr['subtype'] == 'BUTTON') {
-                                       $this->SetFormButtonText( $objattr['value'] );
-                                       if ($objattr['onClick']) { $js = $objattr['onClick']; }
-                                       else { $js = ''; }
-                                       $this->SetJSButton( $w, $h, $objattr['fieldname'],  $objattr['value'], $js, 0, $objattr['title'], $flags, false, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
-                               }
-                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
-                    }
-                    else {
-                          $this->mpdf->SetLineWidth(0.2 /$k );
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(190));
-                               $w -= $this->form_element_spacing['button']['outer']['h']*2 /$k ;
-                               $h -= $this->form_element_spacing['button']['outer']['v']*2 /$k ;
-                               $this->mpdf->x += $this->form_element_spacing['button']['outer']['h'] /$k ;
-                               $this->mpdf->y += $this->form_element_spacing['button']['outer']['v'] /$k ;
-                          $this->mpdf->RoundedRect($this->mpdf->x, $this->mpdf->y, $w, $h, 0.5 /$k , 'DF');
-                               $w -= $this->form_element_spacing['button']['inner']['h']*2 /$k ;
-                               $h -= $this->form_element_spacing['button']['inner']['v']*2 /$k ;
-                               $this->mpdf->x += $this->form_element_spacing['button']['inner']['h'] /$k ;
-                               $this->mpdf->y += $this->form_element_spacing['button']['inner']['v'] /$k ;
-                       $save_linemaxfontsize = $this->mpdf->linemaxfontsize;   
-                       $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;   
-                          $this->mpdf->magic_reverse_dir($texto, false, $blockdir);    // *RTL*
-                          $this->mpdf->Cell($w,$h,$texto,'',0,'C',0,'',0,0,0, 'M') ;
-                          $this->mpdf->SetFColor($this->mpdf->ConvertColor(0));
-                       $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
-                    }
-}
-
-function print_ob_checkbox($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y) {
-               // CHECKBOX
-                    if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 
-                               $flags = array();
-                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               $checked = false;
-                               if ($objattr['checked']) { $checked = true; }
-                               if ($this->formUseZapD) {
-                                       $save_font = $this->mpdf->FontFamily;
-                                       $save_currentfont = $this->mpdf->currentfontfamily;
-                                       $this->mpdf->SetFont('czapfdingbats','',0);
-                               }
-                               $this->SetCheckBox( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $checked, $flags, $objattr['disabled'] );
-                               if ($this->formUseZapD) {
-                                       $this->mpdf->SetFont($save_font,'',0);
-                                       $this->mpdf->currentfontfamily = $save_currentfont;
-                               }
-                    }
-                    else {
-                       $iw = $w * 0.7;
-                       $ih = $h * 0.7;
-                       $lx = $x + (($w-$iw)/2); 
-                       $ty = $y + (($h-$ih)/2);
-                       $rx = $lx + $iw;
-                       $by = $ty + $ih;
-                       $this->mpdf->SetLineWidth(0.2 /$k );
-                       if (isset($objattr['disabled']) && $objattr['disabled']) { 
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
-                               $this->mpdf->SetDColor($this->mpdf->ConvertColor(127));
-                       }
-                       else {
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
-                               $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
-                       }
-                       $this->mpdf->Rect($lx,$ty,$iw,$ih,'DF');
-                       if (isset($objattr['checked']) && $objattr['checked']) {
-                               //Round join and cap
-                               $this->mpdf->SetLineCap(1);
-                               $this->mpdf->Line($lx,$ty,$rx,$by);
-                               $this->mpdf->Line($lx,$by,$rx,$ty);
-                               //Set line cap style back to square
-                               $this->mpdf->SetLineCap(2);
-                       }
-                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
-                       $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
-                   }
-}
-
-function print_ob_radio($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y) {
-               // RADIO
-                       if ($this->mpdf->useActiveForms) {
-                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 
-                               $flags = array();
-                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
-                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
-                               $checked = false;
-                               if ($objattr['checked']) { $checked = true; }
-                               if ($this->formUseZapD) {
-                                       $save_font = $this->mpdf->FontFamily;
-                                       $save_currentfont = $this->mpdf->currentfontfamily;
-                                       $this->mpdf->SetFont('czapfdingbats','',0);
-                               }
-                               $this->SetRadio( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $checked, $flags, $objattr['disabled'] ); 
-                               if ($this->formUseZapD) {
-                                       $this->mpdf->SetFont($save_font,'',0);
-                                       $this->mpdf->currentfontfamily = $save_currentfont;
-                               }
-                       }
-                       else {
-                               $this->mpdf->SetLineWidth(0.2 /$k );
-                               $radius = $this->mpdf->FontSize *0.35;
-                               $cx = $x + ($w/2); 
-                               $cy = $y + ($h/2);
-                               if (isset($objattr['disabled']) && $objattr['disabled']) { 
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(127));
-                                       $this->mpdf->SetDColor($this->mpdf->ConvertColor(127));
-                               }
-                               else {
-                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(0));
-                                       $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
-                               }
-                               $this->mpdf->Circle($cx,$cy,$radius,'D');
-                               if (isset($objattr['checked']) && $objattr['checked']) {
-                                       $this->mpdf->Circle($cx,$cy,$radius*0.4,'DF');
-                               }
-                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
-                               $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
-
-                       }
-}
-
-
-// In _putpages
-function countPageForms($n, &$totaladdnum) {
-                       foreach( $this->forms as $form ) {
-                               if ( $form['page'] == $n ) {
-                                       $totaladdnum++;
-                                       if ( $form['typ'] == 'Tx' ) {
-                                               if ( isset($this->array_form_text_js[$form['T']]) ) {
-                                                       if ( isset($this->array_form_text_js[$form['T']]['F']) ) { $totaladdnum++; }
-                                                       if ( isset($this->array_form_text_js[$form['T']]['K']) ) { $totaladdnum++; }
-                                                       if ( isset($this->array_form_text_js[$form['T']]['V']) ) { $totaladdnum++; }
-                                                       if ( isset($this->array_form_text_js[$form['T']]['C']) ) { $totaladdnum++; }
-                                               }
-                                       }
-                                       if ( $form['typ'] == 'Bt' ) {
-                                               if ( isset($this->array_form_button_js[$form['T']]) ) { $totaladdnum++; }
-                                               if ( isset($this->form_button_icon[$form['T']]) ) { 
-                                                       $totaladdnum++; 
-                                                       if ( $this->form_button_icon[$form['T']]['Indexed'] ) { $totaladdnum++; }
-                                               }
-                                               if ( $form['subtype'] == 'radio' ) { $totaladdnum+=2; }
-                                               else if ( $form['subtype'] == 'checkbox' && $this->formUseZapD ) { $totaladdnum++; }
-                                               else if ( $form['subtype'] == 'checkbox' && !$this->formUseZapD ) { $totaladdnum+=2; }
-                                       }
-                                       if ( $form['typ'] == 'Ch' ) {
-                                               if ( isset($this->array_form_choice_js[$form['T']]) ) { $totaladdnum++; }
-                                       }
-                               }
-                       }
-}
-
-// In _putpages
-function addFormIds($n, &$s, &$annotid) {
-                               foreach( $this->forms as $form ) {
-                                       if ( $form['page'] == $n ) {
-                                               $s .= ($annotid) . ' 0 R ';
-                                               $annotid++;
-                                               if ( $form['typ'] == 'Tx' ) {
-                                                       if ( isset($this->array_form_text_js[$form['T']]) ) {
-                                                               if ( isset($this->array_form_text_js[$form['T']]['F']) ) { $annotid++; }
-                                                               if ( isset($this->array_form_text_js[$form['T']]['K']) ) { $annotid++; }
-                                                               if ( isset($this->array_form_text_js[$form['T']]['V']) ) { $annotid++; }
-                                                               if ( isset($this->array_form_text_js[$form['T']]['C']) ) { $annotid++; }
-                                                       }
-                                               }
-                                               if ( $form['typ'] == 'Bt' ) {
-                                                       if ( isset($this->array_form_button_js[$form['T']]) ) { $annotid++; }
-                                                       if ( isset($this->form_button_icon[$form['T']]) ) { 
-                                                               $annotid++; 
-                                                               if ( $this->form_button_icon[$form['T']]['Indexed'] ) { $annotid++; }
-                                                       }
-                                                       if ( $form['subtype'] == 'radio' ) { $annotid+=2; }
-                                                       else if ( $form['subtype'] == 'checkbox' && $this->formUseZapD ) { $annotid++; }
-                                                       else if ( $form['subtype'] == 'checkbox' && !$this->formUseZapD ) { $annotid+=2; }
-                                               }
-                                               if ( $form['typ'] == 'Ch' ) {
-                                                       if ( isset($this->array_form_choice_js[$form['T']]) ) { $annotid++; }
-                                               }
-                                       }
-                               }
-}
-
-// In _putannots
-function _putFormItems($n, $hPt) {
-                               foreach( $this->forms as $val) {
-                                       if ( $val['page'] == $n ) {
-                                               if ( $val['typ'] == 'Tx' ) $this->_putform_tx( $val, $hPt );
-                                               if ( $val['typ'] == 'Ch' ) $this->_putform_ch( $val, $hPt );
-                                               if ( $val['typ'] == 'Bt' ) $this->_putform_bt( $val, $hPt );
-                                       }
-                               }
-}
-
-// In _putannots
-function _putRadioItems($n) {
-               // Output Radio Groups
-               $key = 1;
-               foreach($this->form_radio_groups AS $name=>$frg) {
-                       $this->mpdf->_newobj();
-                       $this->pdf_acro_array .= $this->mpdf->n.' 0 R ';
-                       $this->mpdf->_out('<<');
-                       $this->mpdf->_out('/Type /Annot ');
-                       $this->mpdf->_out('/Subtype /Widget');
-                       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (3000 + $key++))));
-                       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
-                       $this->mpdf->_out('/Rect [0 0 0 0] ');
-                       $this->mpdf->_out('/FT /Btn ');
-                       if ($frg['disabled']) { $flags=array(1,3,15,16); }      // NoExport and readonly
-                       else { $flags=array(15,16); }   // Flags for Radiobutton, and NoToggleToOff
-                       $this->mpdf->_out('/Ff '.$this->_setflag($flags) );
-                       $kstr = '';
-                       $optstr = '';
-                       foreach($frg['kids'] AS $kid) {
-                               $kstr .= $this->forms[$kid['n']]['obj'].' 0 R ';
-               //              $optstr .= ' '.$this->mpdf->_textstring($kid['OPT']).' ';
-                       }
-                       $this->mpdf->_out('/Kids [ '.$kstr.' ] ');      // 11 0 R 12 0 R etc.
-               //      $this->mpdf->_out('/Opt [ '.$optstr.' ] ');
-
-                       //V entry holds index corresponding to the appearance state of
-                       //whichever child field is currently in the on state = or Off
-                       if (isset($frg['on'])) { $state = $frg['on']; }
-                       else { $state = 'Off'; }
-                       $this->mpdf->_out('/V /'.$state.' ');
-                       $this->mpdf->_out('/DV /'.$state.' ');
-                       $this->mpdf->_out('/T '.$this->mpdf->_textstring($name).' ');
-                       $this->mpdf->_out('>>');
-                       $this->mpdf->_out('endobj');
-               }
-}
-
-function _putFormsCatalog() {
-               if (isset($this->pdf_acro_array) ) {
-                       $this->mpdf->_out('/AcroForm << /DA (/F1 0 Tf 0 g )');
-                       $this->mpdf->_out('/Q 0');
-                       $this->mpdf->_out('/Fields ['.$this->pdf_acro_array.']');
-                       $f = '';
-                       foreach($this->form_fonts AS $fn) {
-                               if (is_array($this->mpdf->fonts[$fn]['n'])) { $this->mpdf->Error("Cannot use fonts with SMP or SIP characters for interactive Form elements"); }
-                               $f .= '/F'.$this->mpdf->fonts[$fn]['i'].' '.$this->mpdf->fonts[$fn]['n'].' 0 R ';
-                       }
-                       $this->mpdf->_out('/DR << /Font << '.$f.' >> >>');
-                       // CO Calculation Order
-                       if ( $this->pdf_array_co ) {
-                               $this->mpdf->_out('/CO ['.$this->pdf_array_co.']'); 
-                       }
-                       $this->mpdf->_out('/NeedAppearances true');
-                       $this->mpdf->_out('>>');
-               }
-}
-
-
-
-function SetFormButtonJS( $name, $js ) {
-       $js = str_replace("\t",' ', trim($js) );
-       if ( isset($name) && isset($js) ) {
-               $this->array_form_button_js[$this->mpdf->_escape($name)] = array(
-                               'js' => $js
-                               );
-       }
-}
-
-function SetFormChoiceJS( $name, $js ) {
-       $js = str_replace("\t",' ', trim($js) );
-       if ( isset($name) && isset($js) ) {
-               $this->array_form_choice_js[$this->mpdf->_escape($name)] = array(
-                               'js' => $js
-                               );
-       }
-}
-
-function SetFormTextJS( $name, $js) {
-   for ($i=0; $i<count($js); $i++) {
-       $j = str_replace("\t",' ', trim($js[$i][1]) );
-       $format = $js[$i][0];
-       if ($name) {
-               $this->array_form_text_js[$this->mpdf->_escape($name)][$format] = array('js' => $j);
-       }
-   }
-}
-
-
-function Win1252ToPDFDocEncoding($txt) {
-       $Win1252ToPDFDocEncoding = array(
-               chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230), 
-               chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202),
-               chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206),
-               chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214),
-               chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220),
-               chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222),
-               chr(0216) => chr(0231), chr(0240) => chr(0040)
-       ); // mPDF 5.3.46
-       return strtr($txt, $Win1252ToPDFDocEncoding );
-}
-
-
-function SetFormText( $w, $h, $name, $value = '', $default = '', $title = '', $flags = array(), $align='L', $hidden = false, $maxlen=-1, $js='', $background_col=false, $border_col=false ) {
-       // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
-       $this->formn++;
-       if( $align == 'C' ) { $align = '1'; }
-       else if( $align == 'R' ) { $align = '2'; }
-       else { $align = '0'; }
-       if ($maxlen < 1) { $maxlen = false; }
-       if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
-                       $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)"); 
-       }
-       if ($this->mpdf->onlyCoreFonts) { 
-               $value = $this->Win1252ToPDFDocEncoding($value); 
-               $default = $this->Win1252ToPDFDocEncoding($default); 
-               $title = $this->Win1252ToPDFDocEncoding($title); 
-       }
-       else { 
-               if (isset($this->mpdf->CurrentFont['subset'])) {
-                       $this->mpdf->UTF8StringToArray($value, true);   // Add characters to font subset
-                       $this->mpdf->UTF8StringToArray($default, true); // Add characters to font subset
-                       $this->mpdf->UTF8StringToArray($title, true);   // Add characters to font subset
-               }
-               if ($value) $value = $this->mpdf->UTF8ToUTF16BE($value, true);
-               if ($default ) $default = $this->mpdf->UTF8ToUTF16BE($default, true);
-               $title = $this->mpdf->UTF8ToUTF16BE($title, true); 
-       }
-       if ($background_col) { $bg_c = $this->mpdf->SetColor($background_col, 'CodeOnly'); }
-       else { $bg_c = $this->form_background_color; }
-       if ($border_col) { $bc_c = $this->mpdf->SetColor($border_col, 'CodeOnly'); }
-       else { $bc_c = $this->form_border_color; }
-       $f = array(     'n'      => $this->formn,
-                       'typ'    => 'Tx',
-                       'page'   => $this->mpdf->page,
-                       'x'      => $this->mpdf->x,
-                       'y'      => $this->mpdf->y,
-                       'w'      => $w,
-                       'h'      => $h,
-                       'T'      => $name,
-                       'FF'     => $flags,
-                       'V'      => $value,
-                       'DV'     => $default,
-                       'TU'     => $title,
-                       'hidden' => $hidden,
-                       'Q'      => $align,
-                       'maxlen'         => $maxlen,
-                       'BS_W'   => $this->form_border_width,
-                       'BS_S'   => $this->form_border_style,
-                       'BC_C'   => $bc_c,
-                       'BG_C'   => $bg_c,
-                       'style' => array(
-                               'font'  => $this->mpdf->FontFamily,
-                               'fontsize'      => $this->mpdf->FontSizePt,
-                               'fontcolor'     => $this->mpdf->TextColor,
-                       )
-       );
-       if (is_array($js) && count($js)>0) { $this->SetFormTextJS( $name, $js); }       // mPDF 5.3.25
-       if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
-       else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
-       else { 
-                       if ($this->mpdf->ColActive) { 
-                               $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
-                                       'h' => $h);
-                               $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn; 
-                       }
-               $this->forms[$this->formn] = $f; 
-       }
-       if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) { 
-               $this->form_fonts[] = $this->mpdf->FontFamily; 
-               $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
-       }
-       if ( !$hidden )         $this->mpdf->x += $w;
-
-}
-
-
-       function SetFormChoice( $w, $h, $name, $flags, $array, $align='L', $js = '' ) {
-               $this->formn++;
-               if( $this->mpdf->blk[$this->mpdf->blklvl]['direction'] == 'rtl' ) { $align = '2'; }
-               else { $align = '0'; }
-               if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) { 
-                       $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)"); 
-               }
-               if ($this->mpdf->onlyCoreFonts) { 
-                       for($i=0;$i<count($array['VAL']);$i++) {
-                               $array['VAL'][$i] = $this->Win1252ToPDFDocEncoding($array['VAL'][$i]); 
-                               $array['OPT'][$i] = $this->Win1252ToPDFDocEncoding($array['OPT'][$i]); 
-                       }
-               }
-               else { 
-                       for($i=0;$i<count($array['VAL']);$i++) {
-                               if (isset($this->mpdf->CurrentFont['subset'])) {
-                                       $this->mpdf->UTF8StringToArray($array['VAL'][$i], true);        // Add characters to font subset
-                                       $this->mpdf->UTF8StringToArray($array['OPT'][$i], true);        // Add characters to font subset
-                               }
-                               if ($array['VAL'][$i] ) $array['VAL'][$i] = $this->mpdf->UTF8ToUTF16BE($array['VAL'][$i], true);
-                               if ($array['OPT'][$i] ) $array['OPT'][$i] = $this->mpdf->UTF8ToUTF16BE($array['OPT'][$i], true);
-                       }
-               }
-               $f = array(     'n'     => $this->formn,
-                       'typ'   => 'Ch',
-                       'page'  => $this->mpdf->page,
-                       'x'     => $this->mpdf->x,
-                       'y'     => $this->mpdf->y,
-                       'w'     => $w,
-                       'h'     => $h,
-                       'T'     => $name,
-                       'OPT'   => $array,
-                       'FF'    => $flags,
-                       'Q'      => $align,
-                       'BS_W'   => $this->form_border_width,
-                       'BS_S'   => $this->form_border_style,
-                       'BC_C'   => $this->form_border_color,
-                       'BG_C'   => $this->form_background_color,
-                       'style' => array(
-                               'font'  => $this->mpdf->FontFamily,
-                               'fontsize'      => $this->mpdf->FontSizePt,
-                               'fontcolor'     => $this->mpdf->TextColor,
-                       )
-               );
-               if ($js) { $this->SetFormChoiceJS( $name, $js ); }
-               if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
-               else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
-               else { 
-                       if ($this->mpdf->ColActive) { 
-                               $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
-                                       'h' => $h);
-                               $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn; 
-                       }
-                       $this->forms[$this->formn] = $f; 
-               }
-               if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) { 
-                       $this->form_fonts[] = $this->mpdf->FontFamily; 
-                       $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
-               }
-               $this->mpdf->x += $w;
-       }
-
-       // CHECKBOX
-       function SetCheckBox( $w, $h, $name, $value, $title = '', $checked = false, $flags = array(), $disabled=false  ) {
-               $this->SetFormButton( $w, $h, $name, $value, 'checkbox', $title, $flags, $checked, $disabled );
-               $this->mpdf->x += $w;
-       }
-
-
-       // RADIO
-       function SetRadio( $w, $h, $name, $value, $title = '', $checked = false, $flags = array(), $disabled=false ) {
-               $this->SetFormButton( $w, $h, $name, $value, 'radio', $title, $flags, $checked, $disabled );
-               $this->mpdf->x += $w;
-       }
-
-
-       function SetFormReset( $w, $h, $name, $value = 'Reset', $title = '', $flags = array(), $background_col=false, $border_col=false, $noprint=false ) {
-               if (!$name) { $name = 'Reset'; }
-               $this->SetFormButton( $w, $h, $name, $value, 'reset', $title, $flags, false, false, $background_col, $border_col, $noprint);
-               $this->mpdf->x += $w;
-       }
-
-
-       function SetJSButton( $w, $h, $name, $value, $js, $image_id = 0, $title = '', $flags = array(), $indexed=false , $background_col=false, $border_col=false, $noprint=false ) {
-               $this->SetFormButton( $w, $h, $name, $value, 'js_button', $title, $flags, false, false, $background_col, $border_col, $noprint);
-               // pos => 1 = no caption, icon only; 0 = caption only 
-               if ($image_id) {
-                       $this->form_button_icon[$this->mpdf->_escape($name)] = array(
-                               'pos' => 1,     
-                               'image_id' => $image_id, 
-                               'Indexed' => $indexed,
-                               );
-               }
-               if ($js) { $this->SetFormButtonJS( $name, $js ); }
-               $this->mpdf->x += $w;
-       }
-
-
-       function SetFormSubmit( $w, $h, $name, $value = 'Submit', $url, $title = '', $typ = 'html', $method = 'POST', $flags = array(), $background_col=false, $border_col=false, $noprint=false) {
-               if (!$name) { $name = 'Submit'; }
-               $this->SetFormButton( $w, $h, $name, $value, 'submit', $title, $flags, false, false, $background_col, $border_col, $noprint);
-               $this->forms[$this->formn]['URL'] = $url;
-               $this->forms[$this->formn]['method'] = $method;
-               $this->forms[$this->formn]['exporttype'] = $typ;
-               $this->mpdf->x += $w;
-       }
-
-
-       function SetFormButtonText( $ca, $rc = '', $ac = '' ) {
-               if ($this->mpdf->onlyCoreFonts) { 
-                       $ca = $this->Win1252ToPDFDocEncoding($ca); 
-                       if ($rc) $rc = $this->Win1252ToPDFDocEncoding($rc); 
-                       if ($ac) $ac = $this->Win1252ToPDFDocEncoding($ac); 
-               }
-               else { 
-                       if (isset($this->mpdf->CurrentFont['subset'])) {
-                               $this->mpdf->UTF8StringToArray($ca, true);      // Add characters to font subset
-                       }
-                       $ca = $this->mpdf->UTF8ToUTF16BE($ca, true); 
-                       if ($rc) { 
-                               if (isset($this->mpdf->CurrentFont['subset'])) { $this->mpdf->UTF8StringToArray($rc, true); }
-                               $rc = $this->mpdf->UTF8ToUTF16BE($rc, true); 
-                       }
-                       if ($ac) { 
-                               if (isset($this->mpdf->CurrentFont['subset'])) { $this->mpdf->UTF8StringToArray($ac, true); }
-                               $ac = $this->mpdf->UTF8ToUTF16BE($ac, true); 
-                       }
-               }
-               $this->form_button_text = $ca;
-               $this->form_button_text_over = $rc ? $rc : $ca;
-               $this->form_button_text_click = $ac ? $ac : $ca;
-       }
-
-
-       function SetFormButton( $bb, $hh, $name, $value, $type, $title = '', $flags = array(), $checked=false, $disabled=false, $background_col=false, $border_col=false, $noprint=false ) {
-               $this->formn++;
-               if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
-                       $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)"); 
-               }
-               if (!$this->mpdf->onlyCoreFonts) {
-                  if (isset($this->mpdf->CurrentFont['subset'])) {
-                       $this->mpdf->UTF8StringToArray($title, true);   // Add characters to font subset
-                       $this->mpdf->UTF8StringToArray($value, true);   // Add characters to font subset
-                  }
-                  $title = $this->mpdf->UTF8ToUTF16BE($title, true); 
-                  if ($type == 'checkbox') { 
-                       $uvalue = $this->mpdf->UTF8ToUTF16BE($value, true); 
-                  }
-                  else if ($type == 'radio') { 
-                       $uvalue = $this->mpdf->UTF8ToUTF16BE($value, true); 
-                       $value = mb_convert_encoding($value, 'Windows-1252', 'UTF-8'); 
-                  }
-                  else { 
-                       $value = $this->mpdf->UTF8ToUTF16BE($value, true); 
-                       $uvalue = $value;
-                  }
-               }
-               else { 
-                       $title = $this->Win1252ToPDFDocEncoding($title); 
-                       $value = $this->Win1252ToPDFDocEncoding($value);                                //// ??? not needed
-                       $uvalue = mb_convert_encoding($value, 'UTF-8', 'Windows-1252'); 
-                       $uvalue = $this->mpdf->UTF8ToUTF16BE($uvalue, true); 
-               }
-               if ($type == 'radio' || $type == 'checkbox') {
-                       if (!preg_match('/^[a-zA-Z0-9_:\-\.]+$/', $value)) {
-                               $this->mpdf->Error("Field '".$name."' must have a value, which can only contain letters, numbers, colon(:), undersore(_), hyphen(-) or period(.)"); 
-                       }
-               }
-               if ($type == 'radio') {
-                       if (!isset($this->form_radio_groups[$name])) { 
-                               $this->form_radio_groups[$name] = array(
-                                       'page' => $this->mpdf->page,
-                                       'kids' => array(),
-                               );
-                       }
-                       $this->form_radio_groups[$name]['kids'][] = array(
-                                       'n' => $this->formn, 'V'=> $value, 'OPT'=>$uvalue, 'disabled'=>$disabled
-                       );
-                       if ( $checked ) { $this->form_radio_groups[$name]['on'] = $value; }
-                       // Disable the whole radio group if one is disabled, because of inconsistency in PDF readers
-                       if ( $disabled ) { $this->form_radio_groups[$name]['disabled'] = true; }
-               }
-               if ($type == 'checkbox') {
-                       $this->form_checkboxes = true; 
-               }
-               if ( $checked ) { $activ = 1; }
-               else { $activ = 0; }
-               if ($background_col) { $bg_c = $this->mpdf->SetColor($background_col, 'CodeOnly'); }
-               else { $bg_c = $this->form_button_background_color; }
-               if ($border_col) { $bc_c = $this->mpdf->SetColor($border_col, 'CodeOnly'); }
-               else { $bc_c = $this->form_button_border_color; }
-               $f = array(     'n'     => $this->formn,
-                       'typ'   => 'Bt',
-                       'page'  => $this->mpdf->page,
-                       'subtype'       => $type,
-                       'x'     => $this->mpdf->x,
-                       'y'     => $this->mpdf->y,
-                       'w'     => $bb,
-                       'h'     => $hh,
-                       'T'     => $name,
-                       'V'     => $value,
-                       'OPT'   => $uvalue,
-                       'TU'    => $title,
-                       'FF'    => $flags,
-                       'CA'    => $this->form_button_text,
-                       'RC'    => $this->form_button_text_over,
-                       'AC'    => $this->form_button_text_click,
-                       'BS_W'   => $this->form_button_border_width,
-                       'BS_S'   => $this->form_button_border_style,
-                       'BC_C'   => $bc_c,
-                       'BG_C'   => $bg_c,
-                       'activ'  => $activ,
-                       'disabled'  => $disabled,
-                       'noprint'  => $noprint,
-                       'style'  => array(
-                               'font'  => $this->mpdf->FontFamily,
-                               'fontsize'      => $this->mpdf->FontSizePt,
-                               'fontcolor'     => $this->mpdf->TextColor,
-                       )
-               );
-               if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
-               else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
-               else { 
-                       if ($this->mpdf->ColActive) { 
-                               $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
-                                       'h' => $hh);
-                               $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn; 
-                       }
-                       $this->forms[$this->formn] = $f; 
-               }
-               if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) { 
-                       $this->form_fonts[] = $this->mpdf->FontFamily; 
-                       $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
-               }
-
-               $this->form_button_text = NULL;
-               $this->form_button_text_over = NULL;
-               $this->form_button_text_click = NULL;
-       }
-
-
-
-function SetFormBorderWidth ( $string ) {
-       switch( $string ) {
-               case 'S': $this->form_border_width = '1'; 
-                       break;
-               case 'M': $this->form_border_width = '2'; 
-                       break;
-               case 'B': $this->form_border_width = '3'; 
-                       break;
-               case '0': $this->form_border_width = '0'; 
-                       break;
-               default: $this->form_border_width = '0'; 
-                       break;
-       }
-}
-
-
-function SetFormBorderStyle ( $string ) {
-       switch( $string ) { 
-               case 'S': $this->form_border_style = 'S'; 
-                       break;
-               case 'D': $this->form_border_style = 'D /D [3]'; 
-                       break;
-               case 'B': $this->form_border_style = 'B'; 
-                       break;
-               case 'I': $this->form_border_style = 'I'; 
-                       break;
-               case 'U': $this->form_border_style = 'U'; 
-                       break;
-               default: $this->form_border_style = 'B'; 
-                       break;
-       }
-}
-
-function SetFormBorderColor ( $r, $g=-1, $b=-1 ) {
-       if ( ($r==0 and $g==0 and $b==0) || $g==-1 )
-               $this->form_border_color = sprintf('%.3F', $r/255);
-       else
-               $this->form_border_color = sprintf('%.3F %.3F %.3F', $r/255, $g/255, $b/255);
-}
-
-function SetFormBackgroundColor ( $r, $g=-1, $b=-1 ) {
-       if ( ($r==0 and $g==0 and $b==0) || $g==-1 )
-               $this->form_background_color = sprintf('%.3F', $r/255);
-       else
-               $this->form_background_color = sprintf('%.3F %.3F %.3F', $r/255, $g/255, $b/255);
-}
-
-function SetFormD ( $W, $S, $BC, $BG ) {
-       $this->SetFormBorderWidth ( $W );
-       $this->SetFormBorderStyle ( $S );
-       $this->SetFormBorderColor ( $BC );
-       $this->SetFormBackgroundColor ( $BG );
-}
-
-function _setflag( $array ) {
-       $flag = 0;
-       foreach($array as $val) { $flag += 1 << ($val-1); }
-       return $flag;
-}
-
-function _form_rect( $x, $y, $w, $h, $hPt ) {
-       $x = $x * _MPDFK;
-       $y = $hPt - ($y  * _MPDFK);
-       $x2 = $x + ($w * _MPDFK);
-       $y2 = $y - ($h * _MPDFK);
-       $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y2, $x2, $y );
-       return $rect;
-}
-
-
-function _put_button_icon( $array , $w, $h ) {
-       if (isset($array['image_id'])) {
-               $info = false;
-               foreach($this->mpdf->images AS $iid=>$img) {
-                       if ($img['i'] == $array['image_id']) { 
-                               $info = $this->mpdf->images[$iid];
-                               break; 
-                       }
-               }
-       }
-       if (!$info) { die("Cannot find Button image"); }
-       $this->mpdf->_newobj();
-       $this->mpdf->_out('<<');
-       $this->mpdf->_out('/Type /XObject');
-       $this->mpdf->_out('/Subtype /Image');
-       $this->mpdf->_out('/BBox [0 0 1 1]');
-       $this->mpdf->_out('/Length '.strlen($info['data']));
-       $this->mpdf->_out('/BitsPerComponent '.$info['bpc']);
-       if ($info['cs']=='Indexed') {
-               $this->mpdf->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->mpdf->n+1).' 0 R]');
-       }
-       else {
-               $this->mpdf->_out('/ColorSpace /'.$info['cs']);
-               if ($info['cs']=='DeviceCMYK')
-                       if($info['type']=='jpg') { $this->mpdf->_out('/Decode [1 0 1 0 1 0 1 0]'); }
-       }
-       if ( isset($info['f']) ) 
-               $this->mpdf->_out('/Filter /'.$info['f']);
-       if ( isset($info['parms']) ) 
-               $this->mpdf->_out($info['parms']);
-       $this->mpdf->_out('/Width '.$info['w']);
-       $this->mpdf->_out('/Height '.$info['h']);
-       $this->mpdf->_out('>>');
-       $this->mpdf->_putstream($info['data']);
-       $this->mpdf->_out('endobj');
-       unset($array);
-       //Palette
-       if($info['cs']=='Indexed') {
-               $filter=($this->mpdf->compress) ? '/Filter /FlateDecode ' : '';
-               $this->mpdf->_newobj();
-               $pal=($this->mpdf->compress) ? gzcompress($info['pal']) : $info['pal'];
-               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
-               $this->mpdf->_putstream($pal);
-               $this->mpdf->_out('endobj');
-       }
-
-}
-
-
-function _putform_bt( $form, $hPt ) {
-       $cc = 0;
-       $put_xobject = 0;
-       $put_js = 0;
-       $put_icon = 0;
-       $this->mpdf->_newobj();
-       $n = $this->mpdf->n;
-       if ($form['subtype'] != 'radio') $this->pdf_acro_array .= $n.' 0 R ';   // Add to /Field element
-       $this->forms[ $form['n'] ]['obj'] = $n;
-       $this->mpdf->_out('<<');
-       $this->mpdf->_out('/Type /Annot ');
-       $this->mpdf->_out('/Subtype /Widget');
-       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (7000 + $form['n']))));
-       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis'))); 
-       $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ]');
-       $form['noprint'] ? $this->mpdf->_out('/F 0 ') : $this->mpdf->_out('/F 4 ');
-       $this->mpdf->_out('/FT /Btn ');
-       $this->mpdf->_out('/H /P ');
-       if ( $form['subtype'] != 'radio' )      // mPDF 5.3.23
-               $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
-       $this->mpdf->_out('/TU '.$this->mpdf->_textstring($form['TU']) );
-       if ( isset( $this->form_button_icon[ $form['T'] ] ) ) { $form['BS_W'] = 0; }
-       if ($form['BS_W'] == 0) { $form['BC_C'] = $form['BG_C']; }
-       $bstemp = '';
-       $bstemp .= '/W '.$form['BS_W'].' ';
-       $bstemp .= '/S /'.$form['BS_S'].' ';
-       $temp = '';
-       $temp .= '/BC [ '.$form['BC_C']." ] ";
-       $temp .= '/BG [ '.$form['BG_C']." ] ";
-       if ( $form['subtype'] == 'checkbox' ) {
-               if ($form['disabled']) { 
-                       $radio_color = '0.5 0.5 0.5'; 
-                       $radio_background_color = '0.9 0.9 0.9'; 
-               }
-               else { 
-                       $radio_color = $this->form_radio_color; 
-                       $radio_background_color = $this->form_radio_background_color;
-               }
-               $temp = '';
-               $temp .= '/BC [ '.$radio_color." ] ";
-               $temp .= '/BG [ '.$radio_background_color." ] ";
-               $this->mpdf->_out("/BS << /W 1 /S /S >>");
-               $this->mpdf->_out("/MK << $temp >>");
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
-               if ( $form['activ'] ) {
-                               $this->mpdf->_out('/V /'.$this->mpdf->_escape($form['V']).' ');
-                               $this->mpdf->_out('/DV /'.$this->mpdf->_escape($form['V']).' ');
-                               $this->mpdf->_out('/AS /'.$this->mpdf->_escape($form['V']).' ');
-               } else {
-                       $this->mpdf->_out('/AS /Off ');
-               }
-               if ($this->formUseZapD) {
-                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts['czapfdingbats']['i'].' 0 Tf '.$radio_color.' rg)');
-                       $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off /Off >> >>");
-               }
-               else {
-                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$this->mpdf->CurrentFont['fontkey']]['i'].' 0 Tf '.$radio_color.' rg)'); 
-                       $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
-               }
-       $this->mpdf->_out('/Opt [ '.$this->mpdf->_textstring($form['OPT']).' '.$this->mpdf->_textstring($form['OPT']).' ]');
-       }
-
-
-       if ( $form['subtype'] == 'radio' ) {
-               if ($form['disabled'] || $this->form_radio_groups[$form['T']]['disabled']) { 
-                       $radio_color = '0.5 0.5 0.5'; 
-                       $radio_background_color = '0.9 0.9 0.9'; 
-               }
-               else { 
-                       $radio_color = $this->form_radio_color; 
-                       $radio_background_color = $this->form_radio_background_color;
-               }
-               $this->mpdf->_out('/Parent '.$this->form_radio_groups[$form['T']]['obj_id'].' 0 R ');
-               $temp = '';
-               $temp .= '/BC [ '.$radio_color." ] ";
-               $temp .= '/BG [ '.$radio_background_color." ] ";
-               $this->mpdf->_out("/BS << /W 1 /S /S >>");
-               $this->mpdf->_out('/MK << '.$temp.' >> ');
-               $form['FF'][] = 16;     // Radiobutton
-               $form['FF'][] = 15;     // NoToggleOff - must be same as radio button group setting?
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
-               if ($this->formUseZapD)
-                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts['czapfdingbats']['i'].' 0 Tf '.$radio_color.' rg)');
-               else
-                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$this->mpdf->CurrentFont['fontkey']]['i'].' 0 Tf '.$radio_color.' rg)');
-               $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
-               if ( $form['activ'] ) {
-                       $this->mpdf->_out('/V /'.$this->mpdf->_escape($form['V']).' ');
-                       $this->mpdf->_out('/DV /'.$this->mpdf->_escape($form['V']).' ');
-                       $this->mpdf->_out('/AS /'.$this->mpdf->_escape($form['V']).' ');
-               }
-               else {
-                       $this->mpdf->_out('/AS /Off ');
-               }
-               $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
-       //      $this->mpdf->_out('/Opt [ '.$this->mpdf->_textstring($form['OPT']).' '.$this->mpdf->_textstring($form['OPT']).' ]');
-       }
-
-       if ( $form['subtype'] == 'reset' ) {
-               $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
-               $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
-               $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
-               $this->mpdf->_out("/BS << $bstemp >>");
-               $this->mpdf->_out('/MK << '.$temp.' >>');
-               $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
-               $this->mpdf->_out('/AA << /D << /S /ResetForm /Flags 1 >> >>');
-               $form['FF'][] = 17;
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
-       }
-
-
-       if ( $form['subtype'] == 'submit' ) {
-               $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
-               $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
-               $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
-               $this->mpdf->_out("/BS << $bstemp >>");
-               $this->mpdf->_out("/MK << $temp >>");
-               $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
-               // Bit 4 (8) = useGETmethod else use POST
-               // Bit 3 (4) = HTML export format (charset chosen by Adobe)--- OR ---
-               // Bit 6 (32) = XFDF export format (form of XML in UTF-8)
-               if ($form['exporttype'] == 'xfdf') { $flag = 32; }      // 'xfdf' or 'html'
-               else {
-                       if ($form['method'] == 'GET') { $flag = 12; }
-                       else { $flag = 4; }
-               }
-               // Bit 2 (2) = IncludeNoValueFields
-               if ($this->formSubmitNoValueFields) $flag += 2;
-               // To submit a value, needs to be in /AP dictionary, AND this object must contain a /Fields entry
-               // listing all fields to output
-               $this->mpdf->_out('/AA << /D << /S /SubmitForm /F ('.$form['URL'].') /Flags '.$flag.' >> >>');
-               $form['FF'][] = 17;
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
-       }
-
-       if ( $form['subtype'] == 'js_button' ) {
-               // Icon / image
-               if ( isset( $this->form_button_icon[ $form['T'] ] ) ) {
-                       $cc++;
-                       $temp .= '/TP '.$this->form_button_icon[$form['T']]['pos'].' ';
-                       $temp .= '/I '.($cc + $this->mpdf->n).' 0 R ';          // Normal icon
-                       $temp .= '/RI '.($cc + $this->mpdf->n).' 0 R ';         // onMouseOver
-                       $temp .= '/IX '.($cc + $this->mpdf->n).' 0 R ';         // onClick / onMouseDown
-                       $temp .= '/IF << /SW /A /S /A /A [0.0 0.0] >> ';        // Icon fit dictionary
-                       if ($this->form_button_icon[ $form['T'] ]['Indexed']) { $cc++; }
-                       $put_icon = 1;
-               }
-               $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
-               $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
-               $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
-               $this->mpdf->_out("/BS << $bstemp >>");
-               $this->mpdf->_out("/MK << $temp >>");
-               $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
-               $form['FF'][] = 17;
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
-               // Javascript
-               if ( isset($this->array_form_button_js[$form['T']]) ) {
-                       $cc++;
-                       $this->mpdf->_out("/AA << /D ".($cc + $this->mpdf->n)." 0 R >>"); 
-                       $put_js = 1;
-               }
-       }
-
-       $this->mpdf->_out('>>');
-       $this->mpdf->_out('endobj');
-
-       // additional objects
-       // obj icon
-       if ( $put_icon == 1 ) { 
-               $this->_put_button_icon( $this->form_button_icon[ $form['T'] ], $form['w'], $form['h'] ); 
-               $put_icon = NULL; 
-       }
-       // obj + 1
-       if ( $put_js == 1 ) {
-               $this->mpdf->_set_object_javascript( $this->array_form_button_js[$form['T']]['js'] );
-               unset( $this->array_form_button_js[$form['T']] );
-               $put_js = NULL;
-       }
-
-       // RADIO and CHECK BOX appearance streams
-       $filter=($this->mpdf->compress) ? '/Filter /FlateDecode ' : '';
-       if ( $form['subtype'] == 'radio' ) {
-               // output 2 appearance streams for radio buttons on/off
-               if ($this->formUseZapD) {
-                       $fs = sprintf('%.3F', $form['style']['fontsize']*1.25);
-                       $fi = 'czapfdingbats';
-                       $r_on = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (4) Tj ET Q';
-                       $r_off = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (8) Tj ET Q';
-               }
-               else {
-                       $matrix = sprintf('%.3F 0 0 %.3F 0 %.3F', $form['style']['fontsize']*1.33/10, $form['style']['fontsize']*1.25/10, $form['style']['fontsize']);
-                       $fill = $radio_background_color.' rg 3.778 -7.410 m 2.800 -7.410 1.947 -7.047 1.225 -6.322 c 0.500 -5.600 0.138 -4.747 0.138 -3.769 c 0.138 -2.788 0.500 -1.938 1.225 -1.213 c 1.947 -0.491 2.800 -0.128 3.778 -0.128 c 4.757 -0.128 5.610 -0.491 6.334 -1.213 c 7.056 -1.938 7.419 -2.788 7.419 -3.769 c 7.419 -4.747 7.056 -5.600 6.334 -6.322 c 5.610 -7.047 4.757 -7.410 3.778 -7.410 c h f ';
-                       $circle = '3.778 -6.963 m 4.631 -6.963 5.375 -6.641 6.013 -6.004 c 6.653 -5.366 6.972 -4.619 6.972 -3.769 c 6.972 -2.916 6.653 -2.172 6.013 -1.532 c 5.375 -0.894 4.631 -0.576 3.778 -0.576 c 2.928 -0.576 2.182 -0.894 1.544 -1.532 c 0.904 -2.172 0.585 -2.916 0.585 -3.769 c 0.585 -4.619 0.904 -5.366 1.544 -6.004 c 2.182 -6.641 2.928 -6.963 3.778 -6.963 c h 3.778 -7.410 m 2.800 -7.410 1.947 -7.047 1.225 -6.322 c 0.500 -5.600 0.138 -4.747 0.138 -3.769 c 0.138 -2.788 0.500 -1.938 1.225 -1.213 c 1.947 -0.491 2.800 -0.128 3.778 -0.128 c 4.757 -0.128 5.610 -0.491 6.334 -1.213 c 7.056 -1.938 7.419 -2.788 7.419 -3.769 c 7.419 -4.747 7.056 -5.600 6.334 -6.322 c 5.610 -7.047 4.757 -7.410 3.778 -7.410 c h f ';
-                       $r_on = 'q '.$matrix.' cm '.$fill .$radio_color.' rg '.$circle.'  '.$radio_color.' rg
-5.184 -5.110 m 4.800 -5.494 4.354 -5.685 3.841 -5.685 c 3.331 -5.685 2.885 -5.494 2.501 -5.110 c 2.119 -4.725 1.925 -4.279 1.925 -3.769 c 1.925 -3.257 2.119 -2.810 2.501 -2.429 c 2.885 -2.044 3.331 -1.853 3.841 -1.853 c 4.354 -1.853 4.800 -2.044 5.184 -2.429 c 5.566 -2.810 5.760 -3.257 5.760 -3.769 c 5.760 -4.279 5.566 -4.725 5.184 -5.110 c h 
-f Q ';
-                       $r_off = 'q '.$matrix.' cm '.$fill .$radio_color.' rg '.$circle.'  Q ';
-               }
-
-               $this->mpdf->_newobj();
-               $p=($this->mpdf->compress) ? gzcompress($r_on) : $r_on;
-               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
-               $this->mpdf->_putstream($p);
-               $this->mpdf->_out('endobj');
-
-               $this->mpdf->_newobj();
-               $p=($this->mpdf->compress) ? gzcompress($r_off) : $r_off;
-               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
-               $this->mpdf->_putstream($p);
-               $this->mpdf->_out('endobj');
-       }
-       if ( $form['subtype'] == 'checkbox' ) {
-               // First output appearance stream for check box on
-               if ($this->formUseZapD) {
-                       $fs = sprintf('%.3F', $form['style']['fontsize']*1.25);
-                       $fi = 'czapfdingbats';
-                       $cb_on = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (4) Tj ET Q';
-                       $cb_off = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (8) Tj ET Q';
-               }
-               else {
-                       $matrix = sprintf('%.3F 0 0 %.3F 0 %.3F', $form['style']['fontsize']*1.33/10, $form['style']['fontsize']*1.25/10, $form['style']['fontsize']);
-                       $fill = $radio_background_color.' rg 7.395 -0.070 m 7.395 -7.344 l 0.121 -7.344 l 0.121 -0.070 l 7.395 -0.070 l h  f ';
-                       $square = '0.508 -6.880 m 6.969 -6.880 l 6.969 -0.534 l 0.508 -0.534 l 0.508 -6.880 l h 7.395 -0.070 m 7.395 -7.344 l 0.121 -7.344 l 0.121 -0.070 l 7.395 -0.070 l h ';
-                       $cb_on = 'q '.$matrix.' cm '.$fill. $radio_color.' rg '.$square.' f '.$radio_color.' rg
-6.321 -1.352 m 5.669 -2.075 5.070 -2.801 4.525 -3.532 c 3.979 -4.262 3.508 -4.967 3.112 -5.649 c 3.080 -5.706 3.039 -5.779 2.993 -5.868 c 2.858 -6.118 2.638 -6.243 2.334 -6.243 c 2.194 -6.243 2.100 -6.231 2.052 -6.205 c 2.003 -6.180 1.954 -6.118 1.904 -6.020 c 1.787 -5.788 1.688 -5.523 1.604 -5.226 c 1.521 -4.930 1.480 -4.721 1.480 -4.600 c 1.480 -4.535 1.491 -4.484 1.512 -4.447 c 1.535 -4.410 1.579 -4.367 1.647 -4.319 c 1.733 -4.259 1.828 -4.210 1.935 -4.172 c 2.040 -4.134 2.131 -4.115 2.205 -4.115 c 2.267 -4.115 2.341 -4.232 2.429 -4.469 c 2.437 -4.494 2.444 -4.511 2.448 -4.522 c 2.451 -4.531 2.456 -4.546 2.465 -4.568 c 2.546 -4.795 2.614 -4.910 2.668 -4.910 c 2.714 -4.910 2.898 -4.652 3.219 -4.136 c 3.539 -3.620 3.866 -3.136 4.197 -2.683 c 4.426 -2.367 4.633 -2.103 4.816 -1.889 c 4.998 -1.676 5.131 -1.544 5.211 -1.493 c 5.329 -1.426 5.483 -1.368 5.670 -1.319 c 5.856 -1.271 6.066 -1.238 6.296 -1.217 c 6.321 -1.352 l h  f  Q ';
-                       $cb_off = 'q '.$matrix.' cm '.$fill. $radio_color.' rg '.$square.' f Q ';
-
-               }
-               $this->mpdf->_newobj();
-               $p=($this->mpdf->compress) ? gzcompress($cb_on) : $cb_on;
-               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
-               $this->mpdf->_putstream($p);
-               $this->mpdf->_out('endobj');
-
-               // output appearance stream for check box off (only if not using ZapfDingbats)
-               if (!$this->formUseZapD) {
-                       $this->mpdf->_newobj();
-                       $p=($this->mpdf->compress) ? gzcompress($cb_off) : $cb_off;
-                       $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
-                       $this->mpdf->_putstream($p);
-                       $this->mpdf->_out('endobj');
-               }
-
-       }
-       return $n;
-}
-
-
-function _putform_ch( $form, $hPt ) {
-       $put_js = 0;
-       $this->mpdf->_newobj();
-       $n = $this->mpdf->n;
-       $this->pdf_acro_array .= $n.' 0 R ';
-       $this->forms[ $form['n'] ]['obj'] = $n;
-
-       $this->mpdf->_out('<<');
-       $this->mpdf->_out('/Type /Annot ');
-       $this->mpdf->_out('/Subtype /Widget');
-       $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ]');
-       $this->mpdf->_out('/F 4');
-       $this->mpdf->_out('/FT /Ch');
-       if ($form['Q']) $this->mpdf->_out('/Q '.$form['Q'].'');
-       $temp = '';
-       $temp .= '/W '.$form['BS_W'].' ';
-       $temp .= '/S /'.$form['BS_S'].' ';
-       $this->mpdf->_out("/BS << $temp >>");
-
-       $temp = '';
-       $temp .= '/BC [ '.$form['BC_C']." ] ";
-       $temp .= '/BG [ '.$form['BG_C']." ] ";
-       $this->mpdf->_out('/MK << '.$temp.' >>');
-
-       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (6000 + $form['n']))));
-       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
-
-       $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
-       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
-
-       $opt = '';
-       for( $i = 0; $i < count($form['OPT']['VAL']) ; $i++ ) {
-               $opt .= '[ '.$this->mpdf->_textstring($form['OPT']['VAL'][$i]).' '.$this->mpdf->_textstring($form['OPT']['OPT'][$i]).' ] ';
-       }
-       $this->mpdf->_out('/Opt [ '.$opt.']');
-
-       // selected
-       $selectItem = false;
-       $selectIndex = false;
-       foreach ( $form['OPT']['SEL'] as $selectKey => $selectVal ) {
-       $selectName = $this->mpdf->_textstring($form['OPT']['VAL'][$selectVal]);
-       $selectItem .= ' '.$selectName.' ';
-       $selectIndex .= ' '.$selectVal.' ';
-       }
-       if ( $selectItem ) {
-               if (count($form['OPT']['SEL']) < 2) {
-               $this->mpdf->_out('/V '.$selectItem.' ');
-               $this->mpdf->_out('/DV '.$selectItem.' ');
-               }
-               else {
-               $this->mpdf->_out('/V ['.$selectItem.'] ');
-               $this->mpdf->_out('/DV ['.$selectItem.'] ');
-               }
-             $this->mpdf->_out('/I ['.$selectIndex.'] ');
-       }
-    
-       if ( is_array($form['FF']) && count($form['FF'])>0 ) {
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']).' ');
-       }
-       // Javascript
-       if ( isset($this->array_form_choice_js[$form['T']]) ) {
-               $this->mpdf->_out("/AA << /V ".($this->mpdf->n+1)." 0 R >>"); 
-               $put_js = 1;
-       }
-
-       $this->mpdf->_out('>>');
-       $this->mpdf->_out('endobj');
-       // obj + 1
-       if ( $put_js == 1 ) {
-               $this->mpdf->_set_object_javascript( $this->array_form_choice_js[$form['T']]['js'] );
-               unset( $this->array_form_choice_js[$form['T']] );
-               $put_js = NULL;
-       }
-
-       return $n;
-}
-
-
-function _putform_tx( $form, $hPt ) {
-       $put_js = 0;
-       $this->mpdf->_newobj();
-       $n = $this->mpdf->n;
-       $this->pdf_acro_array .= $n.' 0 R ';
-       $this->forms[ $form['n'] ]['obj'] = $n;
-
-       $this->mpdf->_out('<<');
-       $this->mpdf->_out('/Type /Annot ');
-       $this->mpdf->_out('/Subtype /Widget ');
-
-       $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ] ');
-       $form['hidden'] ? $this->mpdf->_out('/F 2 ') : $this->mpdf->_out('/F 4 ');
-       $this->mpdf->_out('/FT /Tx ');
-
-       $this->mpdf->_out('/H /N ');
-       $this->mpdf->_out('/R 0 ');
-
-       if ( is_array($form['FF']) && count($form['FF'])>0 ) {
-               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']).' ');
-       }
-       if ( isset($form['maxlen']) && $form['maxlen']>0 ) {
-               $this->mpdf->_out('/MaxLen '.$form['maxlen']);
-       }
-
-       $temp = '';
-       $temp .= '/W '.$form['BS_W'].' ';
-       $temp .= '/S /'.$form['BS_S'].' ';
-       $this->mpdf->_out("/BS << $temp >>");
-
-       $temp = '';
-       $temp .= '/BC [ '.$form['BC_C']." ] ";
-       $temp .= '/BG [ '.$form['BG_C']." ] ";
-       $this->mpdf->_out('/MK <<'.$temp.' >>');
-
-       $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
-       $this->mpdf->_out('/TU '.$this->mpdf->_textstring($form['TU']) );
-       if ($form['V'] || $form['V']==='0')
-               $this->mpdf->_out('/V '.$this->mpdf->_textstring($form['V']) );
-       $this->mpdf->_out('/DV '.$this->mpdf->_textstring($form['DV']) );
-       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
-       if ( $form['Q'] ) $this->mpdf->_out('/Q '.$form['Q'].'');
-
-       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (5000 + $form['n']))));
-       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
-
-
-       if ( isset($this->array_form_text_js[$form['T']]) ) {
-               $put_js = 1;
-               $cc = 0;
-               $js_str = '';
-
-               if ( isset($this->array_form_text_js[$form['T']]['F']) ) { 
-                       $cc++; 
-                       $js_str .= '/F '.($cc + $this->mpdf->n).' 0 R '; 
-               }
-               if ( isset($this->array_form_text_js[$form['T']]['K']) ) { 
-                       $cc++; 
-                       $js_str .= '/K '.($cc + $this->mpdf->n).' 0 R '; 
-               }
-               if ( isset($this->array_form_text_js[$form['T']]['V']) ) { 
-                       $cc++; 
-                       $js_str .= '/V '.($cc + $this->mpdf->n).' 0 R '; 
-               }
-               if ( isset($this->array_form_text_js[$form['T']]['C']) ) { 
-                       $cc++; 
-                       $js_str .= '/C '.($cc + $this->mpdf->n).' 0 R '; 
-                       $this->pdf_array_co .= $this->mpdf->n.' 0 R ';
-               }
-               $this->mpdf->_out('/AA << '.$js_str.' >>');
-       }
-
-       $this->mpdf->_out('>>');
-       $this->mpdf->_out('endobj');
-
-       if ( $put_js == 1 ) {
-               if ( isset($this->array_form_text_js[$form['T']]['F']) ) { 
-                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['F']['js'] ); 
-                       unset( $this->array_form_text_js[$form['T']]['F'] );
-               }
-               if ( isset($this->array_form_text_js[$form['T']]['K']) ) { 
-                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['K']['js'] ); 
-                       unset( $this->array_form_text_js[$form['T']]['K'] );
-               }
-               if ( isset($this->array_form_text_js[$form['T']]['V']) ) { 
-                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['V']['js'] ); 
-                       unset( $this->array_form_text_js[$form['T']]['V'] );
-               }
-               if ( isset($this->array_form_text_js[$form['T']]['C']) ) { 
-                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['C']['js'] ); 
-                       unset( $this->array_form_text_js[$form['T']]['C'] );
-               }
-       }
-       return $n;
-}
-
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/gif.php b/inc/3rdparty/libraries/mpdf/classes/gif.php
deleted file mode 100644 (file)
index 263513e..0000000
+++ /dev/null
@@ -1,700 +0,0 @@
-<?php
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// 2009-12-22 Adapted for mPDF 4.2
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// GIF Util - (C) 2003 Yamasoft (S/C)
-// http://www.yamasoft.com
-// All Rights Reserved
-// This file can be freely copied, distributed, modified, updated by anyone under the only
-// condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// 2009-12-22 Adapted INB 
-// Functions calling functionname($x, $len = 0) were not working on PHP5.1.5 as pass by reference
-// All edited to $len = 0; then call function.
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class CGIFLZW
-{
-       var $MAX_LZW_BITS;
-       var $Fresh, $CodeSize, $SetCodeSize, $MaxCode, $MaxCodeSize, $FirstCode, $OldCode;
-       var $ClearCode, $EndCode, $Next, $Vals, $Stack, $sp, $Buf, $CurBit, $LastBit, $Done, $LastByte;
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       // CONSTRUCTOR
-       function CGIFLZW()
-       {
-               $this->MAX_LZW_BITS = 12;
-               unSet($this->Next);
-               unSet($this->Vals);
-               unSet($this->Stack);
-               unSet($this->Buf);
-
-               $this->Next  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
-               $this->Vals  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
-               $this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
-               $this->Buf   = range(0, 279);
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function deCompress($data, &$datLen)
-       {
-               $stLen  = strlen($data);
-               $datLen = 0;
-               $ret    = "";
-               $dp = 0;        // data pointer
-
-               // INITIALIZATION
-               $this->LZWCommandInit($data, $dp);
-
-               while(($iIndex = $this->LZWCommand($data, $dp)) >= 0) {
-                       $ret .= chr($iIndex);
-               }
-
-               $datLen = $dp;
-
-               if($iIndex != -2) {
-                       return false;
-               }
-
-               return $ret;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-       function LZWCommandInit(&$data, &$dp)
-       {
-                       $this->SetCodeSize = ord($data[0]);
-                       $dp += 1;
-
-                       $this->CodeSize    = $this->SetCodeSize + 1;
-                       $this->ClearCode   = 1 << $this->SetCodeSize;
-                       $this->EndCode     = $this->ClearCode + 1;
-                       $this->MaxCode     = $this->ClearCode + 2;
-                       $this->MaxCodeSize = $this->ClearCode << 1;
-
-                       $this->GetCodeInit($data, $dp);
-
-                       $this->Fresh = 1;
-                       for($i = 0; $i < $this->ClearCode; $i++) {
-                               $this->Next[$i] = 0;
-                               $this->Vals[$i] = $i;
-                       }
-
-                       for(; $i < (1 << $this->MAX_LZW_BITS); $i++) {
-                               $this->Next[$i] = 0;
-                               $this->Vals[$i] = 0;
-                       }
-
-                       $this->sp = 0;
-                       return 1;
-       }
-
-       function LZWCommand(&$data, &$dp)
-       {
-               if($this->Fresh) {
-                       $this->Fresh = 0;
-                       do {
-                               $this->FirstCode = $this->GetCode($data, $dp);
-                               $this->OldCode   = $this->FirstCode;
-                       }
-                       while($this->FirstCode == $this->ClearCode);
-
-                       return $this->FirstCode;
-               }
-
-               if($this->sp > 0) {
-                       $this->sp--;
-                       return $this->Stack[$this->sp];
-               }
-
-               while(($Code = $this->GetCode($data, $dp)) >= 0) {
-                       if($Code == $this->ClearCode) {
-                               for($i = 0; $i < $this->ClearCode; $i++) {
-                                       $this->Next[$i] = 0;
-                                       $this->Vals[$i] = $i;
-                               }
-
-                               for(; $i < (1 << $this->MAX_LZW_BITS); $i++) {
-                                       $this->Next[$i] = 0;
-                                       $this->Vals[$i] = 0;
-                               }
-
-                               $this->CodeSize    = $this->SetCodeSize + 1;
-                               $this->MaxCodeSize = $this->ClearCode << 1;
-                               $this->MaxCode     = $this->ClearCode + 2;
-                               $this->sp          = 0;
-                               $this->FirstCode   = $this->GetCode($data, $dp);
-                               $this->OldCode     = $this->FirstCode;
-
-                               return $this->FirstCode;
-                       }
-
-                       if($Code == $this->EndCode) {
-                               return -2;
-                       }
-
-                       $InCode = $Code;
-                       if($Code >= $this->MaxCode) {
-                               $this->Stack[$this->sp++] = $this->FirstCode;
-                               $Code = $this->OldCode;
-                       }
-
-                       while($Code >= $this->ClearCode) {
-                               $this->Stack[$this->sp++] = $this->Vals[$Code];
-
-                               if($Code == $this->Next[$Code]) // Circular table entry, big GIF Error!
-                                       return -1;
-
-                               $Code = $this->Next[$Code];
-                       }
-
-                       $this->FirstCode = $this->Vals[$Code];
-                       $this->Stack[$this->sp++] = $this->FirstCode;
-
-                       if(($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
-                               $this->Next[$Code] = $this->OldCode;
-                               $this->Vals[$Code] = $this->FirstCode;
-                               $this->MaxCode++;
-
-                               if(($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
-                                       $this->MaxCodeSize *= 2;
-                                       $this->CodeSize++;
-                               }
-                       }
-
-                       $this->OldCode = $InCode;
-                       if($this->sp > 0) {
-                               $this->sp--;
-                               return $this->Stack[$this->sp];
-                       }
-               }
-
-               return $Code;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function GetCodeInit(&$data, &$dp)
-       {
-                       $this->CurBit   = 0;
-                       $this->LastBit  = 0;
-                       $this->Done     = 0;
-                       $this->LastByte = 2;
-                       return 1;
-       }
-
-       function GetCode(&$data, &$dp)
-       {
-               if(($this->CurBit + $this->CodeSize) >= $this->LastBit) {
-                       if($this->Done) {
-                               if($this->CurBit >= $this->LastBit) {
-                                       // Ran off the end of my bits
-                                       return 0;
-                               }
-                               return -1;
-                       }
-
-                       $this->Buf[0] = $this->Buf[$this->LastByte - 2];
-                       $this->Buf[1] = $this->Buf[$this->LastByte - 1];
-
-                       $Count = ord($data[$dp]);
-                       $dp += 1;
-
-                       if($Count) {
-                               for($i = 0; $i < $Count; $i++) {
-                                       $this->Buf[2 + $i] = ord($data[$dp+$i]);
-                               }
-                               $dp += $Count;
-                       }
-                       else {
-                               $this->Done = 1;
-                       }
-
-                       $this->LastByte = 2 + $Count;
-                       $this->CurBit   = ($this->CurBit - $this->LastBit) + 16;
-                       $this->LastBit  = (2 + $Count) << 3;
-               }
-
-               $iRet = 0;
-               for($i = $this->CurBit, $j = 0; $j < $this->CodeSize; $i++, $j++) {
-                       $iRet |= (($this->Buf[intval($i / 8)] & (1 << ($i % 8))) != 0) << $j;
-               }
-
-               $this->CurBit += $this->CodeSize;
-               return $iRet;
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class CGIFCOLORTABLE
-{
-       var $m_nColors;
-       var $m_arColors;
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       // CONSTRUCTOR
-       function CGIFCOLORTABLE()
-       {
-               unSet($this->m_nColors);
-               unSet($this->m_arColors);
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function load($lpData, $num)
-       {
-               $this->m_nColors  = 0;
-               $this->m_arColors = array();
-
-               for($i = 0; $i < $num; $i++) {
-                       $rgb = substr($lpData, $i * 3, 3);
-                       if(strlen($rgb) < 3) {
-                               return false;
-                       }
-
-                       $this->m_arColors[] = (ord($rgb[2]) << 16) + (ord($rgb[1]) << 8) + ord($rgb[0]);
-                       $this->m_nColors++;
-               }
-
-               return true;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function toString()
-       {
-               $ret = "";
-
-               for($i = 0; $i < $this->m_nColors; $i++) {
-                       $ret .=
-                               chr(($this->m_arColors[$i] & 0x000000FF))       . // R
-                               chr(($this->m_arColors[$i] & 0x0000FF00) >>  8) . // G
-                               chr(($this->m_arColors[$i] & 0x00FF0000) >> 16);  // B
-               }
-
-               return $ret;
-       }
-
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function colorIndex($rgb)
-       {
-               $rgb  = intval($rgb) & 0xFFFFFF;
-               $r1   = ($rgb & 0x0000FF);
-               $g1   = ($rgb & 0x00FF00) >>  8;
-               $b1   = ($rgb & 0xFF0000) >> 16;
-               $idx  = -1;
-
-               for($i = 0; $i < $this->m_nColors; $i++) {
-                       $r2 = ($this->m_arColors[$i] & 0x000000FF);
-                       $g2 = ($this->m_arColors[$i] & 0x0000FF00) >>  8;
-                       $b2 = ($this->m_arColors[$i] & 0x00FF0000) >> 16;
-                       $d  = abs($r2 - $r1) + abs($g2 - $g1) + abs($b2 - $b1);
-
-                       if(($idx == -1) || ($d < $dif)) {
-                               $idx = $i;
-                               $dif = $d;
-                       }
-               }
-
-               return $idx;
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class CGIFFILEHEADER
-{
-       var $m_lpVer;
-       var $m_nWidth;
-       var $m_nHeight;
-       var $m_bGlobalClr;
-       var $m_nColorRes;
-       var $m_bSorted;
-       var $m_nTableSize;
-       var $m_nBgColor;
-       var $m_nPixelRatio;
-       var $m_colorTable;
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       // CONSTRUCTOR
-       function CGIFFILEHEADER()
-       {
-               unSet($this->m_lpVer);
-               unSet($this->m_nWidth);
-               unSet($this->m_nHeight);
-               unSet($this->m_bGlobalClr);
-               unSet($this->m_nColorRes);
-               unSet($this->m_bSorted);
-               unSet($this->m_nTableSize);
-               unSet($this->m_nBgColor);
-               unSet($this->m_nPixelRatio);
-               unSet($this->m_colorTable);
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function load($lpData, &$hdrLen)
-       {
-               $hdrLen = 0;
-
-               $this->m_lpVer = substr($lpData, 0, 6);
-               if(($this->m_lpVer <> "GIF87a") && ($this->m_lpVer <> "GIF89a")) {
-                       return false;
-               }
-
-               $this->m_nWidth  = $this->w2i(substr($lpData, 6, 2));
-               $this->m_nHeight = $this->w2i(substr($lpData, 8, 2));
-               if(!$this->m_nWidth || !$this->m_nHeight) {
-                       return false;
-               }
-
-               $b = ord(substr($lpData, 10, 1));
-               $this->m_bGlobalClr  = ($b & 0x80) ? true : false;
-               $this->m_nColorRes   = ($b & 0x70) >> 4;
-               $this->m_bSorted     = ($b & 0x08) ? true : false;
-               $this->m_nTableSize  = 2 << ($b & 0x07);
-               $this->m_nBgColor    = ord(substr($lpData, 11, 1));
-               $this->m_nPixelRatio = ord(substr($lpData, 12, 1));
-               $hdrLen = 13;
-
-               if($this->m_bGlobalClr) {
-                       $this->m_colorTable = new CGIFCOLORTABLE();
-                       if(!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
-                               return false;
-                       }
-                       $hdrLen += 3 * $this->m_nTableSize;
-               }
-
-               return true;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function w2i($str)
-       {
-               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class CGIFIMAGEHEADER
-{
-       var $m_nLeft;
-       var $m_nTop;
-       var $m_nWidth;
-       var $m_nHeight;
-       var $m_bLocalClr;
-       var $m_bInterlace;
-       var $m_bSorted;
-       var $m_nTableSize;
-       var $m_colorTable;
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       // CONSTRUCTOR
-       function CGIFIMAGEHEADER()
-       {
-               unSet($this->m_nLeft);
-               unSet($this->m_nTop);
-               unSet($this->m_nWidth);
-               unSet($this->m_nHeight);
-               unSet($this->m_bLocalClr);
-               unSet($this->m_bInterlace);
-               unSet($this->m_bSorted);
-               unSet($this->m_nTableSize);
-               unSet($this->m_colorTable);
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function load($lpData, &$hdrLen)
-       {
-               $hdrLen = 0;
-
-               $this->m_nLeft   = $this->w2i(substr($lpData, 0, 2));
-               $this->m_nTop    = $this->w2i(substr($lpData, 2, 2));
-               $this->m_nWidth  = $this->w2i(substr($lpData, 4, 2));
-               $this->m_nHeight = $this->w2i(substr($lpData, 6, 2));
-
-               if(!$this->m_nWidth || !$this->m_nHeight) {
-                       return false;
-               }
-
-               $b = ord($lpData{8});
-               $this->m_bLocalClr  = ($b & 0x80) ? true : false;
-               $this->m_bInterlace = ($b & 0x40) ? true : false;
-               $this->m_bSorted    = ($b & 0x20) ? true : false;
-               $this->m_nTableSize = 2 << ($b & 0x07);
-               $hdrLen = 9;
-
-               if($this->m_bLocalClr) {
-                       $this->m_colorTable = new CGIFCOLORTABLE();
-                       if(!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
-                               return false;
-                       }
-                       $hdrLen += 3 * $this->m_nTableSize;
-               }
-
-               return true;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function w2i($str)
-       {
-               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class CGIFIMAGE
-{
-       var $m_disp;
-       var $m_bUser;
-       var $m_bTrans;
-       var $m_nDelay;
-       var $m_nTrans;
-       var $m_lpComm;
-       var $m_gih;
-       var $m_data;
-       var $m_lzw;
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function CGIFIMAGE()
-       {
-               unSet($this->m_disp);
-               unSet($this->m_bUser);
-               unSet($this->m_bTrans);
-               unSet($this->m_nDelay);
-               unSet($this->m_nTrans);
-               unSet($this->m_lpComm);
-               unSet($this->m_data);
-               $this->m_gih = new CGIFIMAGEHEADER();
-               $this->m_lzw = new CGIFLZW();
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function load($data, &$datLen)
-       {
-               $datLen = 0;
-
-               while(true) {
-                       $b = ord($data[0]);
-                       $data = substr($data, 1);
-                       $datLen++;
-
-                       switch($b) {
-                       case 0x21: // Extension
-                               $len = 0;
-                               if(!$this->skipExt($data, $len)) {
-                                       return false;
-                               }
-                               $datLen += $len;
-                               break;
-
-                       case 0x2C: // Image
-                               // LOAD HEADER & COLOR TABLE
-                               $len = 0;
-                               if(!$this->m_gih->load($data, $len)) {
-                                       return false;
-                               }
-                               $data = substr($data, $len);
-                               $datLen += $len;
-
-                               // ALLOC BUFFER
-                               $len = 0;
-
-                               if(!($this->m_data = $this->m_lzw->deCompress($data, $len))) {
-                                       return false;
-                               }
-
-                               $data = substr($data, $len);
-                               $datLen += $len;
-
-                               if($this->m_gih->m_bInterlace) {
-                                       $this->deInterlace();
-                               }
-
-                               return true;
-
-                       case 0x3B: // EOF
-                       default:
-                               return false;
-                       }
-               }
-               return false;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function skipExt(&$data, &$extLen)
-       {
-               $extLen = 0;
-
-               $b = ord($data[0]);
-               $data = substr($data, 1);
-               $extLen++;
-
-               switch($b) {
-               case 0xF9: // Graphic Control
-                       $b = ord($data[1]);
-                       $this->m_disp   = ($b & 0x1C) >> 2;
-                       $this->m_bUser  = ($b & 0x02) ? true : false;
-                       $this->m_bTrans = ($b & 0x01) ? true : false;
-                       $this->m_nDelay = $this->w2i(substr($data, 2, 2));
-                       $this->m_nTrans = ord($data[4]);
-                       break;
-
-               case 0xFE: // Comment
-                       $this->m_lpComm = substr($data, 1, ord($data[0]));
-                       break;
-
-               case 0x01: // Plain text
-                       break;
-
-               case 0xFF: // Application
-                       break;
-               }
-
-               // SKIP DEFAULT AS DEFS MAY CHANGE
-               $b = ord($data[0]);
-               $data = substr($data, 1);
-               $extLen++;
-               while($b > 0) {
-                       $data = substr($data, $b);
-                       $extLen += $b;
-                       $b    = ord($data[0]);
-                       $data = substr($data, 1);
-                       $extLen++;
-               }
-               return true;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function w2i($str)
-       {
-               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       function deInterlace()
-       {
-               $data = $this->m_data;
-
-               for($i = 0; $i < 4; $i++) {
-                       switch($i) {
-                       case 0:
-                               $s = 8;
-                               $y = 0;
-                               break;
-
-                       case 1:
-                               $s = 8;
-                               $y = 4;
-                               break;
-
-                       case 2:
-                               $s = 4;
-                               $y = 2;
-                               break;
-
-                       case 3:
-                               $s = 2;
-                               $y = 1;
-                               break;
-                       }
-
-                       for(; $y < $this->m_gih->m_nHeight; $y += $s) {
-                               $lne = substr($this->m_data, 0, $this->m_gih->m_nWidth);
-                               $this->m_data = substr($this->m_data, $this->m_gih->m_nWidth);
-
-                               $data =
-                                       substr($data, 0, $y * $this->m_gih->m_nWidth) .
-                                       $lne .
-                                       substr($data, ($y + 1) * $this->m_gih->m_nWidth);
-                       }
-               }
-
-               $this->m_data = $data;
-       }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-class CGIF
-{
-       var $m_gfh;
-       var $m_lpData;
-       var $m_img;
-       var $m_bLoaded;
-
-       ///////////////////////////////////////////////////////////////////////////
-
-       // CONSTRUCTOR
-       function CGIF()
-       {
-               $this->m_gfh     = new CGIFFILEHEADER();
-               $this->m_img     = new CGIFIMAGE();
-               $this->m_lpData  = "";
-               $this->m_bLoaded = false;
-       }
-
-       ///////////////////////////////////////////////////////////////////////////
-       function ClearData() {
-               $this->m_lpData = '';
-               unSet($this->m_img->m_data);
-               unSet($this->m_img->m_lzw->Next);
-               unSet($this->m_img->m_lzw->Vals);
-               unSet($this->m_img->m_lzw->Stack);
-               unSet($this->m_img->m_lzw->Buf);
-       }
-
-       function loadFile(&$data, $iIndex)
-       {
-               if($iIndex < 0) {
-                       return false;
-               }
-               $this->m_lpData = $data;
-
-               // GET FILE HEADER
-               $len = 0;
-               if(!$this->m_gfh->load($this->m_lpData, $len)) {
-                       return false;
-               }
-
-               $this->m_lpData = substr($this->m_lpData, $len);
-
-               do {
-                       $imgLen = 0;
-                       if(!$this->m_img->load($this->m_lpData, $imgLen)) {
-                               return false;
-                       }
-                       $this->m_lpData = substr($this->m_lpData, $imgLen);
-               }
-               while($iIndex-- > 0);
-
-               $this->m_bLoaded = true;
-               return true;
-       }
-
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/grad.php b/inc/3rdparty/libraries/mpdf/classes/grad.php
deleted file mode 100644 (file)
index 2691bf5..0000000
+++ /dev/null
@@ -1,723 +0,0 @@
-<?php
-
-class grad {
-
-var $mpdf = null;
-
-function grad(&$mpdf) {
-       $this->mpdf = $mpdf;
-}
-
-// mPDF 5.3.A1
-function CoonsPatchMesh($x, $y, $w, $h, $patch_array=array(), $x_min=0, $x_max=1, $y_min=0, $y_max=1, $colspace='RGB', $return=false){
-       $s=' q ';
-       $s.=sprintf(' %.3F %.3F %.3F %.3F re W n ', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK);
-       $s.=sprintf(' %.3F 0 0 %.3F %.3F %.3F cm ', $w*_MPDFK, $h*_MPDFK, $x*_MPDFK, ($this->mpdf->h-($y+$h))*_MPDFK);
-       $n = count($this->mpdf->gradients)+1;
-       $this->mpdf->gradients[$n]['type'] = 6; //coons patch mesh
-       $this->mpdf->gradients[$n]['colorspace'] = $colspace; //coons patch mesh
-       $bpcd=65535; //16 BitsPerCoordinate
-       $trans = false;
-       $this->mpdf->gradients[$n]['stream']='';
-       for($i=0;$i<count($patch_array);$i++){
-               $this->mpdf->gradients[$n]['stream'].=chr($patch_array[$i]['f']); //start with the edge flag as 8 bit
-               for($j=0;$j<count($patch_array[$i]['points']);$j++){
-                       //each point as 16 bit
-                       if (($j % 2) == 1) {    // Y coordinate (adjusted as input is From top left)
-                               $patch_array[$i]['points'][$j]=(($patch_array[$i]['points'][$j]-$y_min)/($y_max-$y_min))*$bpcd;
-                               $patch_array[$i]['points'][$j]=$bpcd-$patch_array[$i]['points'][$j];
-                       }
-                       else {
-                               $patch_array[$i]['points'][$j]=(($patch_array[$i]['points'][$j]-$x_min)/($x_max-$x_min))*$bpcd;
-                       }
-                       if($patch_array[$i]['points'][$j]<0) $patch_array[$i]['points'][$j]=0;
-                       if($patch_array[$i]['points'][$j]>$bpcd) $patch_array[$i]['points'][$j]=$bpcd;
-                       $this->mpdf->gradients[$n]['stream'].=chr(floor($patch_array[$i]['points'][$j]/256));
-                       $this->mpdf->gradients[$n]['stream'].=chr(floor($patch_array[$i]['points'][$j]%256));
-               }
-               for($j=0;$j<count($patch_array[$i]['colors']);$j++){
-                       //each color component as 8 bit
-                       if ($colspace=='RGB') {
-                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][1]);
-                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][2]);
-                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][3]);
-                               if (isset($patch_array[$i]['colors'][$j][4]) && ord($patch_array[$i]['colors'][$j][4])<100) { $trans = true; }
-                       }
-                       else if ($colspace=='CMYK') {
-                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][1])*2.55);
-                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][2])*2.55);
-                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][3])*2.55);
-                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][4])*2.55);
-                               if (isset($patch_array[$i]['colors'][$j][5]) && ord($patch_array[$i]['colors'][$j][5])<100) { $trans = true; }
-                       }
-                       else if ($colspace=='Gray') {
-                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][1]);
-                               if ($patch_array[$i]['colors'][$j][2]==1) { $trans = true; }    // transparency converted from rgba or cmyka()
-                       }
-               }
-       }
-       // TRANSPARENCY
-       if ($trans) { 
-               $this->mpdf->gradients[$n]['stream_trans']='';
-               for($i=0;$i<count($patch_array);$i++){
-                       $this->mpdf->gradients[$n]['stream_trans'].=chr($patch_array[$i]['f']);
-                       for($j=0;$j<count($patch_array[$i]['points']);$j++){
-                               //each point as 16 bit
-                               $this->mpdf->gradients[$n]['stream_trans'].=chr(floor($patch_array[$i]['points'][$j]/256));
-                               $this->mpdf->gradients[$n]['stream_trans'].=chr(floor($patch_array[$i]['points'][$j]%256));
-                       }
-                       for($j=0;$j<count($patch_array[$i]['colors']);$j++){
-                               //each color component as 8 bit // OPACITY
-                               if ($colspace=='RGB') {
-                                       $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][4])*2.55));
-                               }
-                               else if ($colspace=='CMYK') {
-                                       $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][5])*2.55));
-                               }
-                               else if ($colspace=='Gray') {
-                                       $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][3])*2.55));
-                               }
-                       }
-               }
-               $this->mpdf->gradients[$n]['trans'] = true;     
-               $s .= ' /TGS'.$n.' gs ';
-       }
-       //paint the gradient
-       $s .= '/Sh'.$n.' sh'."\n";
-       //restore previous Graphic State
-       $s .= 'Q'."\n";
-       if ($return) { return $s; }
-       else { $this->mpdf->_out($s); }
-}
-
-
-// type = linear:2; radial: 3;
-// Linear: $coords - array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). 
-//    The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
-// Radial: $coords - array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, 
-//    (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). 
-//    (fx, fy) should be inside the circle, otherwise some areas will not be defined
-// $col = array(R,G,B/255); or array(G/255); or array(C,M,Y,K/100)
-// $stops = array('col'=>$col [, 'opacity'=>0-1] [, 'offset'=>0-1])
-function Gradient($x, $y, $w, $h, $type, $stops=array(), $colorspace='RGB', $coords='', $extend='', $return=false, $is_mask=false) {
-       if (strtoupper(substr($type,0,1)) == 'L') { $type = 2; }        // linear
-       else if (strtoupper(substr($type,0,1)) == 'R') { $type = 3; }   // radial
-       if ($colorspace != 'CMYK' && $colorspace != 'Gray') {
-               $colorspace = 'RGB';
-       }
-       $bboxw = $w;
-       $bboxh = $h;
-       $usex = $x;
-       $usey = $y;
-       $usew = $bboxw;
-       $useh = $bboxh;
-       if ($type < 1) { $type = 2; }
-       if ($coords[0]!==false && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$coords[0],$m)) { 
-               $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-               if ($tmp) { $coords[0] = $tmp/$w; }
-       }
-       if ($coords[1]!==false && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$coords[1],$m)) { 
-               $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-               if ($tmp) { $coords[1] = 1-($tmp/$h); }
-       }
-       // LINEAR
-       if ($type == 2) { 
-               $angle = $coords[4];
-               $repeat = $coords[5];
-               // ALL POINTS SET (default for custom mPDF linear gradient) - no -moz
-               if ($coords[0]!==false && $coords[1]!==false && $coords[2]!==false && $coords[3]!==false) {
-                       // do nothing - coords used as they are
-               }
-
-               // If both a <point> and <angle> are defined, the gradient axis starts from the point and runs along the angle. The end point is 
-               // defined as before - in this case start points may not be in corners, and axis may not correctly fall in the right quadrant.
-               // NO end points (Angle defined & Start points)
-               else if ($angle!==false && $coords[0]!==false && $coords[1]!==false && $coords[2]===false && $coords[3]===false) {
-                 if ($angle==0 || $angle==360) { $coords[3]=$coords[1]; if ($coords[0]==1) $coords[2]=2; else $coords[2]=1; }
-                 else if ($angle==90) { $coords[2]=$coords[0]; $coords[3]=1; if ($coords[1]==1) $coords[3]=2; else $coords[3]=1; }
-                 else if ($angle==180) { if ($coords[4]==0) $coords[2]=-1; else $coords[2]=0; $coords[3]=$coords[1]; }
-                 else if ($angle==270) { $coords[2]=$coords[0]; if ($coords[1]==0) $coords[3]=-1; else $coords[3]=0; }
-                 else {
-                       $endx=1; $endy=1; 
-                       if ($angle <=90) { 
-                               if ($angle <=45) { $endy=tan(deg2rad($angle)); }
-                               else { $endx=tan(deg2rad(90-$angle)); }
-                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
-                               $ny = 1 - $coords[1] - (tan($b) * (1-$coords[0]));
-                               $tx = sin($b) * cos($b) * $ny;
-                               $ty = cos($b) * cos($b) * $ny;
-                               $coords[2] = 1+$tx; $coords[3] = 1-$ty; 
-                       }
-                       else if ($angle <=180) { 
-                               if ($angle <=135) { $endx=tan(deg2rad($angle-90)); }
-                               else { $endy=tan(deg2rad(180-$angle)); }
-                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
-                               $ny = 1 - $coords[1] - (tan($b) * ($coords[0]));
-                               $tx = sin($b) * cos($b) * $ny;
-                               $ty = cos($b) * cos($b) * $ny;
-                               $coords[2] =  -$tx; $coords[3] = 1-$ty;
-                       }
-                       else if ($angle <=270) { 
-                               if ($angle <=225) { $endy=tan(deg2rad($angle-180)); }
-                               else { $endx=tan(deg2rad(270-$angle)); }
-                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
-                               $ny = $coords[1] - (tan($b) * ($coords[0]));
-                               $tx = sin($b) * cos($b) * $ny;
-                               $ty = cos($b) * cos($b) * $ny;
-                               $coords[2] = -$tx; $coords[3] = $ty; 
-                       }
-                       else { 
-                               if ($angle <=315) { $endx=tan(deg2rad($angle-270)); }
-                               else { $endy=tan(deg2rad(360-$angle));  }
-                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
-                               $ny = $coords[1] - (tan($b) * (1-$coords[0]));
-                               $tx = sin($b) * cos($b) * $ny;
-                               $ty = cos($b) * cos($b) * $ny;
-                               $coords[2] = 1+$tx; $coords[3] = $ty; 
-
-                       }
-                 }
-               }
-
-               // -moz If the first parameter is only an <angle>, the gradient axis starts from the box's corner that would ensure the 
-               // axis goes through the box. The axis runs along the specified angle. The end point of the axis is defined such that the 
-               // farthest corner of the box from the starting point is perpendicular to the gradient axis at that point.
-               // NO end points or Start points (Angle defined)
-               else if ($angle!==false && $coords[0]===false && $coords[1]===false) {
-                 if ($angle==0 || $angle==360) { $coords[0]=0; $coords[1]=0; $coords[2]=1; $coords[3]=0; }
-                 else if ($angle==90) { $coords[0]=0; $coords[1]=0; $coords[2]=0; $coords[3]=1; }
-                 else if ($angle==180) { $coords[0]=1; $coords[1]=0; $coords[2]=0; $coords[3]=0; }
-                 else if ($angle==270) { $coords[0]=0; $coords[1]=1; $coords[2]=0; $coords[3]=0; }
-                 else {
-                       if ($angle <=90) { 
-                               $coords[0]=0; $coords[1]=0; 
-                               if ($angle <=45) { $endx=1; $endy=tan(deg2rad($angle)); }
-                               else { $endx=tan(deg2rad(90-$angle)); $endy=1; }
-                       }
-                       else if ($angle <=180) { 
-                               $coords[0]=1; $coords[1]=0; 
-                               if ($angle <=135) { $endx=tan(deg2rad($angle-90)); $endy=1; }
-                               else { $endx=1; $endy=tan(deg2rad(180-$angle)); }
-                       }
-                       else if ($angle <=270) { 
-                               $coords[0]=1; $coords[1]=1; 
-                               if ($angle <=225) { $endx=1; $endy=tan(deg2rad($angle-180)); }
-                               else { $endx=tan(deg2rad(270-$angle)); $endy=1; }
-                       }
-                       else { 
-                               $coords[0]=0; $coords[1]=1; 
-                               if ($angle <=315) { $endx=tan(deg2rad($angle-270)); $endy=1; }
-                               else { $endx=1; $endy=tan(deg2rad(360-$angle));  }
-                       }
-                       $b = atan2(($endy*$bboxh), ($endx*$bboxw));
-                       $h2 = $bboxh - ($bboxh * tan($b));
-                       $px = $bboxh + ($h2 * sin($b) * cos($b));
-                       $py = ($bboxh * tan($b)) + ($h2 * sin($b) * sin($b));
-                       $x1 = $px / $bboxh;
-                       $y1 = $py / $bboxh;
-                       if ($angle <=90) { $coords[2] = $x1; $coords[3] = $y1; }
-                       else if ($angle <=180) { $coords[2] = 1-$x1; $coords[3] = $y1; }
-                       else if ($angle <=270) { $coords[2] = 1-$x1; $coords[3] = 1-$y1; }
-                       else { $coords[2] = $x1; $coords[3] = 1-$y1; }
-                 }
-               }
-               // -moz If the first parameter to the gradient function is only a <point>, the gradient axis starts from the specified point, 
-               // and ends at the point you would get if you rotated the starting point by 180 degrees about the center of the box that the 
-               // gradient is to be applied to.
-               // NO angle and NO end points (Start points defined)
-               else if ((!isset($angle) || $angle===false) && $coords[0]!==false && $coords[1]!==false) {      // should have start and end defined
-                 $coords[2] = 1-$coords[0]; $coords[3] = 1-$coords[1];
-                 $angle = rad2deg(atan2($coords[3]-$coords[1],$coords[2]-$coords[0]));
-                 if ($angle < 0) { $angle += 360; }
-                 else if ($angle > 360) { $angle -= 360; }
-                 if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) { 
-                   if ($w >= $h) {
-                       $coords[1] *= $h/$w ;
-                       $coords[3] *= $h/$w ;
-                       $usew = $useh = $bboxw;
-                       $usey -= ($w-$h);
-                   }
-                   else {
-                       $coords[0] *= $w/$h ;
-                       $coords[2] *= $w/$h ;
-                       $usew = $useh = $bboxh;
-                   }
-                 }
-               }
-
-               // -moz If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient 
-               // axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
-               else {  // default values T2B
-                       // All values are set in parseMozGradient - so won't appear here
-                       $coords = array(0,0,1,0);       // default for original linear gradient (L2R)
-               }
-               $s = ' q';
-               $s .= sprintf(' %.3F %.3F %.3F %.3F re W n', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK)."\n";
-               $s .= sprintf(' %.3F 0 0 %.3F %.3F %.3F cm', $usew*_MPDFK, $useh*_MPDFK, $usex*_MPDFK, ($this->mpdf->h-($usey+$useh))*_MPDFK)."\n";
-       }
-
-       // RADIAL
-       else if ($type == 3) { 
-               $radius = $coords[4];
-               $angle = $coords[5];    // ?? no effect
-               $shape = $coords[6];
-               $size = $coords[7];
-               $repeat = $coords[8];
-               // ALL POINTS AND RADIUS SET (default for custom mPDF radial gradient) - no -moz
-               if ($coords[0]!==false && $coords[1]!==false && $coords[2]!==false && $coords[3]!==false && $coords[4]!==false) {
-                       // do nothing - coords used as they are
-               }
-               // If a <point> is defined
-               else if ($shape!==false && $size!==false) {
-                  if ($coords[2]==false) { $coords[2] = $coords[0]; }
-                  if ($coords[3]==false) { $coords[3] = $coords[1]; }
-                  // ELLIPSE
-                  if ($shape=='ellipse') {
-                       $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
-                       $corner2 = sqrt(pow($coords[0],2) + pow((1-$coords[1]),2));
-                       $corner3 = sqrt(pow((1-$coords[0]),2) + pow($coords[1],2));
-                       $corner4 = sqrt(pow((1-$coords[0]),2) + pow((1-$coords[1]),2));
-                       if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (1-$coords[0]), (1-$coords[1])); }
-                       else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
-                       else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (1-$coords[0]), (1-$coords[1])); }
-                       else { $radius = max($corner1, $corner2, $corner3, $corner4); } // farthest corner (default)
-                  }
-                  // CIRCLE
-                  else if ($shape=='circle') {
-                   if ($w >= $h) {
-                       $coords[1] = $coords[3] = ($coords[1] * $h/$w) ;
-                       $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
-                       $corner2 = sqrt(pow($coords[0],2) + pow((($h/$w)-$coords[1]),2));
-                       $corner3 = sqrt(pow((1-$coords[0]),2) + pow($coords[1],2));
-                       $corner4 = sqrt(pow((1-$coords[0]),2) + pow((($h/$w)-$coords[1]),2));
-                       if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (1-$coords[0]), (($h/$w)-$coords[1])); }
-                       else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
-                       else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (1-$coords[0]), (($h/$w)-$coords[1])); }
-                       else if ($size=='farthest-corner') { $radius = max($corner1, $corner2, $corner3, $corner4); }   // farthest corner (default)
-                       $usew = $useh = $bboxw;
-                       $usey -= ($w-$h);
-                   }
-                   else {
-                       $coords[0] = $coords[2] = ($coords[0] * $w/$h) ;
-                       $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
-                       $corner2 = sqrt(pow($coords[0],2) + pow((1-$coords[1]),2));
-                       $corner3 = sqrt(pow((($w/$h)-$coords[0]),2) + pow($coords[1],2));
-                       $corner4 = sqrt(pow((($w/$h)-$coords[0]),2) + pow((1-$coords[1]),2));
-                       if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (($w/$h)-$coords[0]), (1-$coords[1])); }
-                       else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
-                       else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (($w/$h)-$coords[0]), (1-$coords[1])); }
-                       else if ($size=='farthest-corner') { $radius = max($corner1, $corner2, $corner3, $corner4); }   // farthest corner (default)
-                       $usew = $useh = $bboxh;
-                   }
-                  }
-                  if ($radius==0) { $radius=0.001; }   // to prevent error
-                  $coords[4] = $radius; 
-               }
-
-               // -moz If entire function consists of only <stop> values
-               else {  // default values 
-                       // All values are set in parseMozGradient - so won't appear here
-                       $coords = array(0.5,0.5,0.5,0.5);       // default for radial gradient (centred)
-               }
-               $s = ' q';
-               $s .= sprintf(' %.3F %.3F %.3F %.3F re W n', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK)."\n";
-               $s .= sprintf(' %.3F 0 0 %.3F %.3F %.3F cm', $usew*_MPDFK, $useh*_MPDFK, $usex*_MPDFK, ($this->mpdf->h-($usey+$useh))*_MPDFK)."\n";
-       }
-
-       $n = count($this->mpdf->gradients) + 1;
-       $this->mpdf->gradients[$n]['type'] = $type;
-       $this->mpdf->gradients[$n]['colorspace'] = $colorspace;
-       $trans = false;
-       $this->mpdf->gradients[$n]['is_mask'] = $is_mask;
-       if ($is_mask) { $trans = true; }
-       if (count($stops) == 1) { $stops[1] = $stops[0]; }
-       if (!isset($stops[0]['offset'])) { $stops[0]['offset'] = 0; }
-       if (!isset($stops[(count($stops)-1)]['offset'])) { $stops[(count($stops)-1)]['offset'] = 1; }
-
-       // Fix stop-offsets set as absolute lengths
-       if ($type==2) {
-               $axisx = ($coords[2]-$coords[0])*$usew;
-               $axisy = ($coords[3]-$coords[1])*$useh;
-               $axis_length = sqrt(pow($axisx,2) + pow($axisy,2));
-       }
-       else { $axis_length = $coords[4]*$usew; }       // Absolute lengths are meaningless for an ellipse - Firefox uses Width as reference
-
-       for($i=0;$i<count($stops);$i++) {
-         if (isset($stops[$i]['offset']) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$stops[$i]['offset'],$m)) { 
-               $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-               $stops[$i]['offset'] = $tmp/$axis_length;
-         }
-       }
-
-
-       if (isset($stops[0]['offset']) && $stops[0]['offset']>0) { 
-               $firststop = $stops[0]; 
-               $firststop['offset'] = 0;
-               array_unshift($stops, $firststop); 
-       }
-       if (!$repeat && isset($stops[(count($stops)-1)]['offset']) && $stops[(count($stops)-1)]['offset']<1) {
-               $endstop = $stops[(count($stops)-1)]; 
-               $endstop['offset'] = 1;
-               $stops[] = $endstop; 
-       }
-       if ($stops[0]['offset'] > $stops[(count($stops)-1)]['offset']) { 
-               $stops[0]['offset'] = 0;
-               $stops[(count($stops)-1)]['offset'] = 1;
-       }
-
-       for($i=0;$i<count($stops);$i++) {
-               // mPDF 5.3.74
-               if ($colorspace == 'CMYK') {
-                       $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F %.3F', (ord($stops[$i]['col']{1})/100), (ord($stops[$i]['col']{2})/100), (ord($stops[$i]['col']{3})/100), (ord($stops[$i]['col']{4})/100));
-               }
-               else if ($colorspace == 'Gray') {
-                       $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F', (ord($stops[$i]['col']{1})/255));
-               }
-               else {
-                       $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F', (ord($stops[$i]['col']{1})/255), (ord($stops[$i]['col']{2})/255), (ord($stops[$i]['col']{3})/255));
-               }
-               if (!isset($stops[$i]['opacity'])) { $stops[$i]['opacity'] = 1; } 
-               else if ($stops[$i]['opacity'] > 1 || $stops[$i]['opacity'] < 0) { $stops[$i]['opacity'] = 1; } 
-               else if ($stops[$i]['opacity'] < 1) { 
-                       $trans = true; 
-               }
-               $this->mpdf->gradients[$n]['stops'][$i]['opacity'] = $stops[$i]['opacity'];
-               // OFFSET
-               if ($i>0 && $i<(count($stops)-1)) {
-                 if (!isset($stops[$i]['offset']) || (isset($stops[$i+1]['offset']) && $stops[$i]['offset']>$stops[$i+1]['offset']) || $stops[$i]['offset']<$stops[$i-1]['offset']) { 
-                       if (isset($stops[$i-1]['offset']) && isset($stops[$i+1]['offset'])) { 
-                               $stops[$i]['offset'] = ($stops[$i-1]['offset']+$stops[$i+1]['offset'])/2; 
-                       }
-                       else {
-                               for($j=($i+1);$j<count($stops);$j++) {
-                                       if(isset($stops[$j]['offset'])) { break; }
-                               }
-                               $int = ($stops[$j]['offset'] - $stops[($i-1)]['offset'])/($j-$i+1);
-                               for($f=0;$f<($j-$i-1);$f++) {
-                                       $stops[($i+$f)]['offset'] = $stops[($i+$f-1)]['offset'] + ($int);
-                               }
-                       }
-                 }
-               }
-               $this->mpdf->gradients[$n]['stops'][$i]['offset'] = $stops[$i]['offset'];
-               $this->mpdf->gradients[$n]['stops'][$i]['offset'] = $stops[$i]['offset'];
-       }
-
-       if ($repeat) {
-               $ns = count($this->mpdf->gradients[$n]['stops']);
-               $offs = array();
-               for($i=0;$i<$ns;$i++) {
-                       $offs[$i] = $this->mpdf->gradients[$n]['stops'][$i]['offset'];
-               }
-               $gp = 0;
-               $inside=true;
-               while($inside) {
-                  $gp++;
-                  for($i=0;$i<$ns;$i++) {
-                       $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)] = $this->mpdf->gradients[$n]['stops'][(($ns*($gp-1))+$i)];
-                       $tmp = $this->mpdf->gradients[$n]['stops'][(($ns*($gp-1))+($ns-1))]['offset']+$offs[$i] ;
-                       if ($tmp < 1) { $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)]['offset'] = $tmp; }
-                       else {
-                               $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)]['offset'] = 1;
-                               $inside = false;
-                               break(2);
-                       }
-                  }
-               }
-       }
-
-       if ($trans) { 
-               $this->mpdf->gradients[$n]['trans'] = true;     
-               $s .= ' /TGS'.$n.' gs ';
-       }
-       if (!is_array($extend) || count($extend) <1) { 
-               $extend=array('true', 'true');  // These are supposed to be quoted - appear in PDF file as text
-       }
-       $this->mpdf->gradients[$n]['coords'] = $coords;
-       $this->mpdf->gradients[$n]['extend'] = $extend;
-       //paint the gradient
-       $s .= '/Sh'.$n.' sh '."\n";
-       //restore previous Graphic State
-       $s .= ' Q '."\n";
-       if ($return) { return $s; }
-       else { $this->mpdf->_out($s); }
-}
-
-
-function parseMozGradient($bg) {
-   //  background[-image]: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
-   //  background[-image]: linear-gradient(left, #c7Fdde 20%, #FF0000 ); // CSS3
-   if (preg_match('/repeating-/',$bg)) { $repeat = true; }
-   else { $repeat = false; }
-   if (preg_match('/linear-gradient\((.*)\)/',$bg,$m)) {
-       $g = array();
-       $g['type'] = 2;
-       $g['colorspace'] = 'RGB';
-       $g['extend'] = array('true','true');
-       $v = trim($m[1]);
-       // Change commas inside e.g. rgb(x,x,x)
-       while(preg_match('/(\([^\)]*?),/',$v)) { $v = preg_replace('/(\([^\)]*?),/','\\1@',$v); }
-       // Remove spaces inside e.g. rgb(x, x, x)
-       while(preg_match('/(\([^\)]*?)[ ]/',$v)) { $v = preg_replace('/(\([^\)]*?)[ ]/','\\1',$v); }
-       $bgr = preg_split('/\s*,\s*/',$v);
-       for($i=0;$i<count($bgr);$i++) { $bgr[$i] = preg_replace('/@/', ',', $bgr[$i]); }
-       // Is first part $bgr[0] a valid point/angle?
-       $first = preg_split('/\s+/',trim($bgr[0]));
-       if (preg_match('/(left|center|right|bottom|top|deg|grad|rad)/i',$bgr[0]) && !preg_match('/(<#|rgb|rgba|hsl|hsla)/i',$bgr[0])) {
-               $startStops = 1; 
-       }
-       else if (trim($first[(count($first)-1)]) === "0") {
-               $startStops = 1;
-       }
-       else {
-               $check = $this->mpdf->ConvertColor($first[0]);
-               if ($check) $startStops = 0; 
-               else $startStops = 1; 
-       }
-       // first part a valid point/angle?
-       if ($startStops == 1) { // default values
-               // [<point> || <angle>,] = [<% em px left center right bottom top> || <deg grad rad 0>,]
-               if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$bgr[0],$m)) {
-                       $angle = $m[1] + 0;
-                       if (strtolower($m[2])=='deg') { $angle = $angle; }
-                       else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
-                       else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
-                       while($angle < 0) { $angle += 360; }
-                       $angle = ($angle % 360);
-               }
-               else if (trim($first[(count($first)-1)]) === "0") { $angle = 0; }
-               if (preg_match('/left/i',$bgr[0])) { $startx = 0; }
-               else if (preg_match('/right/i',$bgr[0])) { $startx = 1; }
-               if (preg_match('/top/i',$bgr[0])) { $starty = 1; }
-               else if (preg_match('/bottom/i',$bgr[0])) { $starty = 0; }
-               // Check for %? ?% or %%
-               if (preg_match('/(\d+)[%]/i',$first[0],$m)) { $startx = $m[1]/100; }
-               else if (!isset($startx) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[0],$m)) { 
-                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-                       if ($tmp) { $startx = $m[1]; }
-               }
-               if (isset($first[1]) && preg_match('/(\d+)[%]/i',$first[1],$m)) { $starty = 1 - ($m[1]/100); }
-               else if (!isset($starty) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[1],$m)) { 
-                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-                       if ($tmp) { $starty = $m[1]; }
-               }
-               if (isset($startx) && !isset($starty)) { $starty = 0.5; }
-               if (!isset($startx) && isset($starty)) { $startx = 0.5; }
-
-       }
-       // If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
-       else {  // default values T2B
-               $starty = 1; $startx = 0.5;
-               $endy = 0; $endx = 0.5;
-       }
-       $coords = array();
-       if (!isset($startx)) { $startx = false; }
-       if (!isset($starty)) { $starty = false; }
-       if (!isset($endx)) { $endx = false; }
-       if (!isset($endy)) { $endy = false; }
-       if (!isset($angle)) { $angle = false; }
-       $g['coords'] = array($startx ,$starty ,$endx ,$endy, $angle, $repeat );
-       $g['stops'] = array();
-       for($i=$startStops;$i<count($bgr);$i++) {
-               $stop = array();
-               // parse stops
-               $el = preg_split('/\s+/',trim($bgr[$i]));
-               // mPDF 5.3.74
-               $col = $this->mpdf->ConvertColor($el[0]);
-               if ($col) { $stop['col'] = $col; }
-               else { $stop['col'] = $col = $this->mpdf->ConvertColor(255); }
-               if ($col{0}==1) $g['colorspace'] = 'Gray';
-               else if ($col{0}==4 || $col{0}==6) $g['colorspace'] = 'CMYK';
-               if ($col{0}==5) { $stop['opacity'] = ord($col{4})/100; }        // transparency from rgba()
-               else if ($col{0}==6) { $stop['opacity'] = ord($col{5})/100; }   // transparency from cmyka()
-               else if ($col{0}==1 && $col{2}==1) { $stop['opacity'] = ord($col{3})/100; }     // transparency converted from rgba or cmyka()
-
-               if (isset($el[1]) && preg_match('/(\d+)[%]/',$el[1],$m)) { 
-                       $stop['offset'] = $m[1]/100;
-                       if ($stop['offset']>1) { unset($stop['offset']); }
-               }
-               else if (isset($el[1]) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$el[1],$m)) { 
-                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-                       if ($tmp) { $stop['offset'] = $m[1]; }
-               }
-               $g['stops'][] = $stop;
-       }
-       if (count($g['stops'] )) { return $g; }
-   }
-   else if (preg_match('/radial-gradient\((.*)\)/',$bg,$m)) {
-       $g = array();
-       $g['type'] = 3;
-       $g['colorspace'] = 'RGB';
-       $g['extend'] = array('true','true');
-       $v = trim($m[1]);
-       // Change commas inside e.g. rgb(x,x,x)
-       while(preg_match('/(\([^\)]*?),/',$v)) { $v = preg_replace('/(\([^\)]*?),/','\\1@',$v); }
-       // Remove spaces inside e.g. rgb(x, x, x)
-       while(preg_match('/(\([^\)]*?)[ ]/',$v)) { $v = preg_replace('/(\([^\)]*?)[ ]/','\\1',$v); }
-       $bgr = preg_split('/\s*,\s*/',$v);
-       for($i=0;$i<count($bgr);$i++) { $bgr[$i] = preg_replace('/@/', ',', $bgr[$i]); }
-
-       // Is first part $bgr[0] a valid point/angle?
-       $startStops = 0; 
-       $pos_angle = false;
-       $shape_size = false;
-       $first = preg_split('/\s+/',trim($bgr[0]));
-       $checkCol = $this->mpdf->ConvertColor($first[0]);
-       if (preg_match('/(left|center|right|bottom|top|deg|grad|rad)/i',$bgr[0]) && !preg_match('/(<#|rgb|rgba|hsl|hsla)/i',$bgr[0])) {
-               $startStops=1; 
-               $pos_angle = $bgr[0];
-       }
-       else if (trim($first[(count($first)-1)]) === "0") {
-               $startStops=1;
-               $pos_angle = $bgr[0];
-       }
-       else if (preg_match('/(circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$bgr[0])) {
-               $startStops=1; 
-               $shape_size = $bgr[0];
-       }
-       else if (!$checkCol) {
-               $startStops=1;
-               $pos_angle = $bgr[0];
-       }
-       if (preg_match('/(circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$bgr[1])) {
-               $startStops=2; 
-               $shape_size = $bgr[1];
-       }
-
-       // If valid point/angle?
-       if ($pos_angle) {       // default values
-               // [<point> || <angle>,] = [<% em px left center right bottom top> || <deg grad rad 0>,]
-               if (preg_match('/left/i',$pos_angle)) { $startx = 0; }
-               else if (preg_match('/right/i',$pos_angle)) { $startx = 1; }
-               if (preg_match('/top/i',$pos_angle)) { $starty = 1; }
-               else if (preg_match('/bottom/i',$pos_angle)) { $starty = 0; }
-               // Check for %? ?% or %%
-               if (preg_match('/(\d+)[%]/i',$first[0],$m)) { $startx = $m[1]/100; }
-               else if (!isset($startx) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[0],$m)) { 
-                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-                       if ($tmp) { $startx = $m[1]; }
-               }
-               if (isset($first[1]) && preg_match('/(\d+)[%]/i',$first[1],$m)) { $starty = 1 - ($m[1]/100); }
-               else if (!isset($starty) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[1],$m)) { 
-                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-                       if ($tmp) { $starty = $m[1]; }
-               }
-
-/*
-               // ?? Angle has no effect in radial gradient (does not exist in CSS3 spec.)
-               if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$pos_angle,$m)) {
-                       $angle = $m[1] + 0;
-                       if (strtolower($m[2])=='deg') { $angle = $angle; }
-                       else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
-                       else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
-                       while($angle < 0) { $angle += 360; }
-                       $angle = ($angle % 360);
-               }
-*/
-               if (!isset($starty)) { $starty = 0.5; }
-               if (!isset($startx)) { $startx = 0.5; }
-
-       }
-       // If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
-       else {  // default values Center
-               $starty = 0.5; $startx = 0.5;
-               $endy = 0.5; $endx = 0.5;
-       }
-
-       // If valid shape/size?
-       $shape = 'ellipse';     // default
-       $size = 'farthest-corner';      // default
-       if ($shape_size) {      // default values
-               if (preg_match('/(circle|ellipse)/i',$shape_size, $m)) {
-                       $shape = $m[1];
-               }
-               if (preg_match('/(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$shape_size, $m)) {
-                       $size = $m[1];
-                       if ($size=='contain') { $size = 'closest-side'; }
-                       else if ($size=='cover') { $size = 'farthest-corner'; }
-               }
-       }
-
-       $coords = array();
-       if (!isset($startx)) { $startx = false; }
-       if (!isset($starty)) { $starty = false; }
-       if (!isset($endx)) { $endx = false; }
-       if (!isset($endy)) { $endy = false; }
-       if (!isset($radius)) { $radius = false; }
-       if (!isset($angle)) { $angle = 0; }
-       $g['coords'] = array($startx ,$starty ,$endx ,$endy, $radius, $angle, $shape, $size, $repeat );
-
-       $g['stops'] = array();
-       for($i=$startStops;$i<count($bgr);$i++) {
-               $stop = array();
-               // parse stops
-               $el = preg_split('/\s+/',trim($bgr[$i]));
-               // mPDF 5.3.74
-               $col = $this->mpdf->ConvertColor($el[0]);
-               if ($col) { $stop['col'] = $col; }
-               else { $stop['col'] = $col = $this->mpdf->ConvertColor(255); }
-               if ($col{0}==1) $g['colorspace'] = 'Gray';
-               else if ($col{0}==4 || $col{0}==6) $g['colorspace'] = 'CMYK';
-               if ($col{0}==5) { $stop['opacity'] = ord($col{4})/100; }        // transparency from rgba()
-               else if ($col{0}==6) { $stop['opacity'] = ord($col{5})/100; }   // transparency from cmyka()
-               else if ($col{0}==1 && $col{2}==1) { $stop['opacity'] = ord($col{3})/100; }     // transparency converted from rgba or cmyka()
-
-               if (isset($el[1]) && preg_match('/(\d+)[%]/',$el[1],$m)) { 
-                       $stop['offset'] = $m[1]/100;
-                       if ($stop['offset']>1) { unset($stop['offset']); }
-               }
-               else if (isset($el[1]) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$el[1],$m)) { 
-                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
-                       $stop['offset'] = $el[1];
-               }
-               $g['stops'][] = $stop;
-       }
-       if (count($g['stops'] )) { return $g; }
-   }
-   return array();
-} 
-
-function parseBackgroundGradient($bg) {
-       // background-gradient: linear #00FFFF #FFFF00 0 0.5 1 0.5;  or
-       // background-gradient: radial #00FFFF #FFFF00 0.5 0.5 1 1 1.2;
-
-       $v = trim($bg);
-       $bgr = preg_split('/\s+/',$v);
-       $g = array();
-       if (count($bgr)> 6) {  
-               if (strtoupper(substr($bgr[0],0,1)) == 'L' && count($bgr)==7) {  // linear
-                       $g['type'] = 2;
-                       //$coords = array(0,0,1,1 );    // 0 0 1 0 or 0 1 1 1 is L 2 R; 1,1,0,1 is R2L; 1,1,1,0 is T2B; 1,0,1,1 is B2T
-                       // Linear: $coords - array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). 
-                       //    The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
-                       $g['coords'] = array($bgr[3], $bgr[4], $bgr[5], $bgr[6]);
-               }
-               else if (count($bgr)==8) {      // radial
-                       $g['type'] = 3;
-                       // Radial: $coords - array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, 
-                       //    (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). 
-                       //    (fx, fy) should be inside the circle, otherwise some areas will not be defined
-                       $g['coords'] = array($bgr[3], $bgr[4], $bgr[5], $bgr[6], $bgr[7]);
-               }
-               $g['colorspace'] = 'RGB';
-               // mPDF 5.3.74
-               $cor = $this->mpdf->ConvertColor($bgr[1]);
-               if ($cor{0}==1) $g['colorspace'] = 'Gray';
-               else if ($cor{0}==4 || $cor{0}==6) $g['colorspace'] = 'CMYK';
-               if ($cor) { $g['col'] = $cor; }
-               else { $g['col'] = $this->mpdf->ConvertColor(255); }
-               $cor = $this->mpdf->ConvertColor($bgr[2]);
-               if ($cor) { $g['col2'] = $cor; }
-               else { $g['col2'] = $this->mpdf->ConvertColor(255); }
-               $g['extend'] = array('true','true');
-               $g['stops'] = array(array('col'=>$g['col'], 'opacity'=>1, 'offset'=>0), array('col'=>$g['col2'], 'opacity'=>1, 'offset'=>1));
-               return $g;
-       }
-       return false;
-}
-
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/indic.php b/inc/3rdparty/libraries/mpdf/classes/indic.php
deleted file mode 100644 (file)
index 0573053..0000000
+++ /dev/null
@@ -1,433 +0,0 @@
-<?php
-
-class indic {
-
-function indic() {
-
-}
-
-
-function substituteIndic($earr, $lang, $font) {
-       global $voltdata;
-
-       if (!isset($voltdata[$font])) {
-               include_once(_MPDF_PATH.'includes/'.$font.'.volt.php');
-               $voltdata[$font] = $volt;
-       }
-
-       foreach($earr as $eid=>$char) {
-               $earr[$eid] = sprintf("%04s", strtoupper(dechex($char))); 
-       }
-       $vstr = "0020 ".implode(" ",$earr)." 0020";
-       //============================
-       // Common Indic Punctuation marks
-       // If NOT devanagari
-       if ($lang!='hi') {
-               $vstr = str_replace('0964','007C', $vstr);      // U+0964 replace with "|"
-               $vstr = str_replace('0965','007C 007C', $vstr); // U+0964 replace with "|"
-       }
-       //============================
-       // Tamil numeral for Zero missing Added mPDF 4.2
-       if ($lang=='ta') {
-               $vstr = str_replace('0BE6','0030', $vstr);      // U+0BEB replace with "0"
-       }
-
-       //============================
-       // Re-order vowels
-
-       // DEVANAGARI vowel sign matraI[093F] before consonant
-       if ($lang=='hi') {
-               $prebasedvowels = "(093F)";
-               $nukta = "093C";
-               $halant = "094D";
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT  ==  VIRAMA
-       }
-
-       // BENGALI vowels [09BF 09C7 09C8]
-       else if ($lang=='bn') {
-
-               // Khanda Ta 09CE not in font -> replace with 09A4|09CD
-               $vstr = preg_replace('/09CE/','09A4 09CD 200D', $vstr); // mPDF 5.3.09
-
-               // BENGALI double-part vowels [09CB 09C7 09BE][09CC 09C7 09D7]
-               $vstr = str_replace('09CB','09C7 09BE', $vstr); // convert to 2 parts
-               $vstr = str_replace('09CC','09C7 09D7', $vstr); // 09C7 pre-based is then shifted below
-               $prebasedvowels = "(09BF|09C7|09C8)";
-               $nukta = "09BC";
-               $halant = "09CD";
-               // mPDF 5.0.044
-               $bnfullcons = "0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF";
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT
-               // mPDF 5.0.044
-               // .. and shifting left-based vowel further to the left in case 3 consonants together.
-               $vstr = preg_replace('/('.$bnfullcons.') '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);
-
-               // mPDF 5.0.044
-               // If left-based vowel has now been shifted to left of RA/Halant (09B0/09CD)
-               // Convert here to above-line form (E068) as it would get missed later
-               // e.g. 09B0 09CD 09AD 09C7 would be changed above => 
-               // e.g. 09C7 09B0 09CD 09AD. The 09B0 09CD should => E068
-               // ??? need to add 09BF as well (09BF|09C7|09C8)
-               $vstr = preg_replace('/(09C7|09C8) 09B0 09CD/', '\\1 E068', $vstr);
-
-       }
-
-       // GUJARATI pre-based vowel [0ABF]
-       else if ($lang=='gu') {
-               $prebasedvowels = "(0ABF)";
-               $nukta = "0ABC";
-               $halant = "0ACD";
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT
-       }
-
-       // GURMUKHI/PUNJABI pre-based vowel [0ABF]
-       else if ($lang=='pa') {
-               $prebasedvowels = "(0A3F)";
-               $nukta = "0A3C";
-               $halant = "0A4D";
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA 
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT
-       }
-
-       // TAMIL pre-based vowel [0ABF]
-       else if ($lang=='ta') {
-               // Shrii (Shree)
-               $vstr = preg_replace('/0BB6 0BCD 0BB0 0BC0/','E04B', $vstr);
-
-               // TAMIL double-part vowels [0BCA 0BC6 0BBE][0BCB 0BC7 0BBE][0BCC 0BC6 0BD7]
-               $vstr = preg_replace('/0BCA/','0BC6 0BBE', $vstr);      // convert to 2 parts
-               $vstr = preg_replace('/0BCB/','0BC7 0BBE', $vstr);      // pre-based is then shifted below
-               $vstr = preg_replace('/0BCC/','0BC6 0BD7', $vstr);
-               $prebasedvowels = "(0BC6|0BC7|0BC8)";
-               // No nukta
-               $halant = "0BCD";       // Doesn't seem to move most in front of halanted consonants
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
-               // ? Only for special case KSS (already moved to left of 0BB7)
-               $vstr = preg_replace('/0B95 '.$halant.' '.$prebasedvowels.' 0BB7/','\\1 0B95 '.$halant.' 0BB7', $vstr);
-       }
-
-       // ORIYA
-       else if ($lang=='or') {
-               // ORIYA double-part vowels []
-               $vstr = str_replace('0B48','0B47 0B56', $vstr); // 2-part Vowel
-               $vstr = str_replace('0B4B','0B47 0B3E', $vstr); // 2-part Vowel
-               $vstr = str_replace('0B4C','0B47 0B57', $vstr); // 2-part Vowel
-               $orprebasedvowels = "(0B47)";
-               // No nukta
-               $halant = "0B4D";       
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$orprebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$orprebasedvowels.'/','\\2 \\1 '.$halant, $vstr);    // before CHAR HALANT
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$orprebasedvowels.'/','\\2 \\1 '.$halant, $vstr);    // before CHAR HALANT
-       }
-
-       // MALAYALAM
-       else if ($lang=='ml') {
-               // Chillus - old forms - remove ZWNJ after
-               // This font Volt rules recognises e.g. "Na Halant(Virama)" as ChilluN 
-               $vstr = preg_replace('/(0D23 0D4D|0D28 0D4D|0D30 0D4D|0D32 0D4D|0D33 0D4D) 200D/','\\1', $vstr);
-               // See Chillus in Unicode [http://en.wikipedia.org/wiki/Malayalam_script]
-               $vstr = str_replace('0D7A','0D23 0D4D', $vstr); // [mlymChilluNn] 
-               $vstr = str_replace('0D7B','0D28 0D4D', $vstr); // [mlymChilluN] 
-               $vstr = str_replace('0D7C','0D30 0D4D', $vstr); // [mlymChilluR] 
-               $vstr = str_replace('0D7D','0D32 0D4D', $vstr); // [mlymChilluL] 
-               $vstr = str_replace('0D7E','0D33 0D4D', $vstr); // [mlymChilluLl] 
-/*
-               // Chillus - 0D7A-0D7E not in font directly, but as E005-E009
-               $vstr = preg_replace('/0D23 0D4D 200D/','0D7A', $vstr);
-               $vstr = preg_replace('/0D28 0D4D 200D/','0D7B', $vstr);
-               $vstr = preg_replace('/0D30 0D4D 200D/','0D7C', $vstr);
-               $vstr = preg_replace('/0D32 0D4D 200D/','0D7D', $vstr);
-               $vstr = preg_replace('/0D33 0D4D 200D/','0D7E', $vstr);
-
-               $vstr = preg_replace('/0D7F/','E004', $vstr);   // [mlymChilluK] 
-               $vstr = preg_replace('/0D7A/','E005', $vstr);   // [mlymChilluNn] 
-               $vstr = preg_replace('/0D7B/','E006', $vstr);   // [mlymChilluN] 
-               $vstr = preg_replace('/0D7C/','E007', $vstr);   // [mlymChilluR] 
-               $vstr = preg_replace('/0D7D/','E008', $vstr);   // [mlymChilluL] 
-               $vstr = preg_replace('/0D7E/','E009', $vstr);   // [mlymChilluLl] 
-*/
-
-               // MALAYALAM double-part vowels []
-               $vstr = str_replace('0D4A','0D46 0D3E', $vstr); // 2-part Vowel
-               $vstr = str_replace('0D4B','0D47 0D3E', $vstr); // 2-part Vowel
-               $vstr = str_replace('0D4C','0D46 0D57', $vstr); // 2-part Vowel
-               $mlprebasedvowels = "(0D46|0D47|0D48)";
-               // No nukta
-               $halant = "0D4D";       
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$mlprebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$mlprebasedvowels.'/','\\2 \\1 '.$halant, $vstr);    // before CHAR HALANT
-       }
-
-       // TELUGU 
-       else if ($lang=='te') {
-               // TELUGU double-part vowels [0C48 -> 0C46 0C56]
-               $vstr = str_replace('0C48','0C46 0C56', $vstr); // 2-part Vowel 
-               $prebasedvowels = "(0C46)";
-               $abvvowels = "(0C3E|0C3F|0C40|0C46|0C47|0C4A|0C4B|0C4C|0C55)";
-               // No nukta
-               $halant = "0C4D";       
-               $tefullforms = "0C15|0C17|0C18|0C1A|0C1B|0C1C|0C1D|0C20|0C21|0C22|0C24|0C25|0C26|0C27|0C28|0C2A|0C2B|0C2D|0C2E|0C2F|0C30|0C33|0C35|0C36|0C37|0C38|0C39|E028|E029|E02A|E02B|E078|E07A|E07B";
-               $vstr = preg_replace('/('.$tefullforms .') '.$halant.' ('.$tefullforms .') '.$abvvowels .'/','\\1 \\3 '.$halant.' \\2', $vstr); // before HALANT
-       }
-
-
-       // KANNADA
-       else if ($lang=='kn') {
-               // KANNADA double-part vowels [0CC8 -> 0CC6 0CD6]
-               $vstr = str_replace('0CC0','0CBF 0CD5', $vstr); // 2-part Vowel 
-               $vstr = str_replace('0CC7','0CC6 0CD5', $vstr); // 2-part Vowel 
-               $vstr = str_replace('0CC8','0CC6 0CD6', $vstr); // 2-part Vowel AI - no glyph for single
-               $vstr = str_replace('0CCA','0CC6 0CC2', $vstr); // 2-part Vowel 
-               $vstr = str_replace('0CCB','0CC6 0CC2 0CD5', $vstr);    // 2-part Vowel 
-               $prebasedvowels = "(0CBF|0CC6)";
-               $halant = "0CCD";       
-       }
-
-
-       //============================
-
-       // SPECIALS
-
-       // DEVANAGARI Ra Halant Ra
-       if ($lang=='hi') {
-               $vstr = str_replace('0930 094D 0930','E05D 0930', $vstr);       // Ra Halant Ra => halfRa FullRa
-       }
-
-       // GUJARATI
-       if ($lang=='gu') {
-               $vstr = str_replace('0AB0 0AC2','E02E', $vstr); // Ra VowelUu => SpecialForm RaUu
-       }
-
-       // TELUGU Ra Halant <Consonant> Halant => halfRa Halant<Consonant> Halant 
-       if ($lang=='te') {
-               $vstr = preg_replace('/0C30 0C4D ([A-F0-9]{4}) 0C4D/','E021 0C4D \\1 0C4D', $vstr);     
-       }
-
-       // KANNADA 
-       // Reph at end of word becomes E0CC instead of E00B
-       if ($lang=='kn') {
-               $vstr = str_replace('0CB0 0CCD 0020','E0CC 0020', $vstr);       // mPDF 5.3.87
-       }
-
-
-       //============================
-       // MAIN BIT FROM VOLT RULES
-       foreach($voltdata[$font] AS $rid=>$reps) {
-//echo $rid . ':  ' . $vstr.'<br />';
-               $vstr = preg_replace('/'.$reps['match'].'/',$reps['replace'], $vstr);
-       } 
-//echo $vstr.'<br />'; exit;
-
-
-       //============================
-
-       // SPECIALS
-
-       // KANNADA 
-       // <Base> <BelowBase1> [<BelowBase2> ] MatraI -> <Base/MatraI ligature> <Belowbase1> etc
-       if ($lang=='kn') {
-               $matraI = "0CBF";
-               $knbase = preg_split('/\|/', "0C95|0C96|0C97|0C98|0C9A|0C9B|0C9C|0C9D|0CA0|0CA1|0CA2|0CA3|0CA4|0CA5|0CA6|0CA7|0CA8|0CAA|0CAB|0CAC|0CAD|0CAE|0CAF|0CB0|0CB2|0CB3|0CB5|0CB6|0CB7|0CB8|0CB9|E0A3|E07D|E07E");
-               $knmatraIligature = preg_split('/\|/', "E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A4|E0A1|E0A2");
-               $belowbase1 = "E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081";
-               $belowbase2 = "E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081";
-               for ($i=0; $i<count($knbase);$i++) {
-                       $vstr = preg_replace('/'.$knbase[$i].' ('.$belowbase1.') ('.$belowbase2.') '.$matraI.'/', $knmatraIligature[$i].' \\1 \\2', $vstr);
-                       $vstr = preg_replace('/'.$knbase[$i].' ('.$belowbase1.') '.$matraI.'/', $knmatraIligature[$i].' \\1', $vstr);
-               }
-       }
-
-       // KANNADA 
-       // [KanTtaFull] [matraI] => [KanTtaPartial] [matraI] 
-       if ($lang=='kn') {
-               $vstr = preg_replace('/0C9F '.$matraI.'/', 'E015 '.$matraI, $vstr);
-       }
-
-       // ORIYA 
-       if ($lang=='or') {
-               // SpecialCase Ra[0B30] Halant still left before [oryaFullNnNna] => E00F
-               $vstr = preg_replace('/0B30 '.$halant.' E00F/','E00F E069', $vstr);     // convert to Reph
-       }
-
-       //============================
-       // SHIFT REPH
-
-       // DEVANAGARI Shift Reph [E015]
-       if ($lang=='hi') {
-               // FIRSTLY - halfRa = E05D - Change this to Reph [E015]
-               $himatchhalfforms = "E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E0D3|E0D4|E0D5|E0D6|E0D7|E0D8|E0D9|E0DA|E0DB|E0DC|E0DD|E0DE|E0DF|E0E0|E0E1|E0E2|E0E3|E0E4|E0E5|E0E6|E0E7|E0E8|E0E9|E0EA|E0EB|E0EC|E0ED|E0EE|E0EF|E0F0|E0F1|E0F2|E0F3|E0F4|E0F5|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145";
-               $himatchfullforms = "0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029|0958|0959|095A|E02A|E02B|E02C|E02D|095B|E02E|E02F|E030|E031|095C|095D|E032|E033|E034|E035|E036|0929|E037|095E|E038|E039|E03A|095F|0931|E03B|0934|E03C|E03D|E03E|E03F|E040|E041|E042|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133";
-               $vstr = preg_replace('/E05D ('.$himatchhalfforms.'|'.$himatchfullforms.')/', 'E015 \\1', $vstr);
-
-               // Reph = E015 - Shift Right to just after end of syllable
-               // FullAllForms + HalfAllForms + 093E matraA
-               while(preg_match('/E015 ('.$himatchhalfforms.')/', $vstr)) {
-                       $vstr = preg_replace('/E015 ('.$himatchhalfforms.')/', '\\1 E015', $vstr);
-               }
-               $vstr = preg_replace('/E015 ('.$himatchfullforms.')/', '\\1 E015', $vstr);
-
-               // Now shift it beyond post-based vowels  // ??? Need to add others e.g. 0949,094A,094B,094C + presentation forms like E198
-               $vstr = str_replace('E015 093E', '093E E015', $vstr);
-               $vstr = preg_replace('/E015 (0940|E194|E195|E196|E197|E198)/', '\\1 E014', $vstr);      // (Small) reph [E014] to Right of matraI
-               $vstr = str_replace('E015 0947', '0947 E014', $vstr);   // (Small) reph [E014] to Right of matraI
-       }
-
-       // BENGALI Shift Reph [E068]
-       else if ($lang=='bn') {
-               $bnfullconjuncts = "E002|E003|E004|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E0D3|E0D4|E0D5|E0D6|E0D7|E0D8|E0D9|E0DA|E0DB|E0DC|E0DD|E0DE|E0DF|E0E0|E0E1|E0E2|E0E3|E0E4|E0E5|E0E6|E0E7|E0E8|E0E9|E0EA|E0EB|E0EC|E0ED|E0EE|E0EF|E0F0|E0F1|E0F2|E0F3|E0F4|E0F5|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133|E134|E135|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E|E15F|E160|E161|E162|E163|E164|E165|E166|E167|E168|E169|E16A|E16B|E16C|E16D|E16E|E16F|E170|E171|E172|E173|E174|E175|E176|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E183|E184|E185|E186|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E18F|E190|E191|E192|E193|E194|E195|E196|E197|E198|E199|E19A";
-               // $bnfullcons - set above;
-               $vstr = preg_replace('/E068 ('.$bnfullconjuncts.'|'.$bnfullcons.')/', '\\1 E068', $vstr);
-               // ? Need to shift it beyond post-base vowels 09BE, 09C0, 09D7  haven't found so can't test??
-               $vstr = preg_replace('/E068 (09BE|09C0|09D7)/', '\\1 E068', $vstr);
-       }
-
-       // GUJARATI Shift Reph [E032]
-       else if ($lang=='gu') {
-               $gufullforms = "0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5";
-               $vstr = preg_replace('/E032 ('.$gufullforms.')/', '\\1 E032', $vstr);
-               // Now shift it beyond post-based vowels  // ??? Need to add others e.g. 0949,094A,094B,094C + presentation forms like E198
-               // ? Need to shift it beyond post-base vowels 0ABE, 0AC0 haven't found so can't test??
-               $vstr = preg_replace('/E032 (0ABE|0AC0)/', '\\1 E032', $vstr);
-       }
-
-
-       // TELUGU Shift Reph to LEFT [E046|E069|E077]    [TelRaSmallOne] => E046    [TelRaSmallTwo] => E069    [TelRaSmallThree] => E077
-       else if ($lang=='te') {
-               // tefullforms defined earlier
-               $tepartialforms = "E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E07C|E07D|E07E";
-               $matraligs = "E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF";
-               $tevowels = "0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C"
-               ."|0C41|0C42|0C43|0C44";                // post matras
-               $vstr = preg_replace('/('.$tevowels.') (E046|E069|E077)/', '\\2 \\1', $vstr);
-               while(preg_match('/('.$tepartialforms.') (E046|E069|E077)/', $vstr)) {
-                       $vstr = preg_replace('/('.$tepartialforms.') (E046|E069|E077)/', '\\2 \\1', $vstr);
-               }
-               $vstr = preg_replace('/('.$tefullforms .'|'.$matraligs.') (E046|E069|E077)/', '\\2 \\1', $vstr);
-       }
-
-
-       // KANNADA Shift Reph to  RIGHT [E00B]
-       else if ($lang=='kn') {
-               $knfullforms = "0C95|0C96|0C97|0C98|0C99|0C9A|0C9B|0C9C|0C9D|0C9E|0C9F|0CA0|0CA1|0CA2|0CA3|0CA4|0CA5|0CA6|0CA7|0CA8|0CAA|0CAB|0CAC|0CAD|0CAE|0CAF|0CB0|0CB1|0CB2|0CB3|0CB5|0CB6|0CB7|0CB8|0CB9|E07D|E07E|E0A3";
-               $knpartialforms = "E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|0C9E|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E07F";
-               while(preg_match('/E00B ('.$knpartialforms.')/', $vstr)) {
-                       $vstr = preg_replace('/E00B ('.$knpartialforms.')/', '\\1 E00B', $vstr);
-               }
-               // mPDF 5.3.47  Also move Reph to right of matraIligatures
-               $knfullforms .= "|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A4|E0A1|E0A2";
-               $vstr = preg_replace('/E00B ('.$knfullforms.')/', '\\1 E00B', $vstr);
-
-               // ? Need to shift it beyond base or below-base forms - haven't found so can't test??
-               // mPDF 5.3.87
-               // E004 added to list (which is a transformed version of 0CBE)
-               $knvowels = "0CBE|0CC0|0CC1|0CC2|0CC3|0CC4|0CC7|0CC8|0CCA|0CCB|0CD5|0CD6|E004";
-               $vstr = preg_replace('/E00B ('.$knvowels.')/', '\\1 E00B', $vstr);
-       }
-
-
-       // ORIYA Shift Reph to  RIGHT [E069|E06A|E06B|E06C]
-       else if ($lang=='or') {
-               $orrephs = "E069|E06A|E06B|E06C";
-               $orfullforms = "0B15|0B16|0B17|0B18|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B1F|0B20|0B21|0B22|0B23|0B24|0B25|0B26|0B27|0B28|0B29|0B2A|0B2B|0B2C|0B2D|0B2E|0B2F|0B30|0B31|0B32|0B33|0B34|0B35|0B36|0B37|0B38|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037";
-               // E123 - E147  FullHalant forms ? add to FullForms
-               $orpartialforms = "E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E0D3|E0D4|E0D5|E0D6|E0D7|E0D8|E0D9|E0DA|E0DB|E0DC|E0DD|E0DE|E0DF|E0E0|E0E1|E0E2|E0E3|E0E4|E0E5|E0E6|E0E7|E0E8|E0E9|E0EA|E0EB|E0EC|E0ED|E0EE|E0EF|E0F0|E0F1|E0F2|E0F3|E0F4|E0F5";
-
-               // Combined MatraIReph[E06D] split [0B3F & E069] to allow reph to be shifted forwards
-               $vstr = preg_replace('/('.$orfullforms.') E06D ('.$orfullforms.') 0B3E/', '\\1 0B3F E069 \\2 0B3E', $vstr);
-
-
-               while(preg_match('/('.$orrephs.') ('.$orpartialforms.')/', $vstr)) {
-                       $vstr = preg_replace('/('.$orrephs.') ('.$orpartialforms.')/', '\\2 \\1', $vstr);
-               }
-               $vstr = preg_replace('/('.$orrephs.') ('.$orfullforms.')/', '\\2 \\1', $vstr);
-
-
-               // Combine Reph and MatraI
-               $vstr = str_replace('E069 0B3F', 'E06D', $vstr);        // Reph and MatraI -> MatraIReph
-               $vstr = str_replace('E06A 0B3F', 'E06E', $vstr);        // Reph and MatraI -> MatraIReph
-               $vstr = str_replace('E06B 0B3F', 'E06F', $vstr);        // Reph and MatraI -> MatraIReph
-       }
-
-
-       // MALAYALAM Shift Reph to LEFT [E00E] (mlylmRaVattu)
-       else if ($lang=='ml') {
-               $halant = "0D4D";       
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' 0D30/','E00E \\1', $vstr);     // 0D30 = Ra
-               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$mlprebasedvowels .' 0D30/','\\2 E00E \\1', $vstr);  // 0D30 = Ra
-
-               $mlfullforms = "0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39"
-               ."|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D";
-               // = FullConsonants + FullConjuncts
-
-               // = Add Chillu characters      // mPDF 5.0.024
-               $mlfullforms .= "|E004|E005|E006|E007|E008|E009";
-               while(preg_match('/('.$mlfullforms.') E00E/', $vstr))
-                       $vstr = preg_replace('/('.$mlfullforms.') E00E/', 'E00E \\1', $vstr);
-       }
-
-       //============================
-
-       // SHIFT post-based vowels to Left of SmallForms (NOT to left of full forms)
-
-       // TELUGU Shift 
-       if ($lang=='te') {
-               // NB $tevowels defined above
-               // NB $tefullforms defined above
-               $tebelowbase1 = "E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E";               //'Small1KaToHa'
-               $tebelowbase2 = "E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071";       // 'Small2KaToHa'
-               $vstr = preg_replace('/('.$tebelowbase2.') ('.$tevowels.')/', '\\2 \\1', $vstr);
-               $vstr = preg_replace('/('.$tebelowbase1.') ('.$tevowels.')/', '\\2 \\1', $vstr);
-       }
-
-
-       // KANNADA Shift 
-       else if ($lang=='kn') {
-               $knvowels = "0CBE|0CC0|0CC1|0CC2|0CC3|0CC4|0CC7|0CC8|0CCA|0CCB|0CD5|0CD6"
-       // mPDF 5.3.87  Shouldn't swop E082 and E047 (belowbase1) below
-       // E082 is a matraIligature
-       //      ."|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB"
-               ."|E004|E007|E008|E009|E00A";
-
-
-               // NB $knvowels defined above
-               // NB $fullforms defined above
-               // $belowbase1/2 defined above
-               $vstr = preg_replace('/('.$belowbase2.') ('.$knvowels.')/', '\\2 \\1', $vstr);
-               // mPDF 5.3.87
-               $vstr = preg_replace('/('.$belowbase1.') ('.$knvowels.')/', '\\2 \\1', $vstr);
-
-               //$vstr = preg_replace('/('.$fullforms.') ('.$knvowels.')/', '\\2 \\1', $vstr);
-       }
-
-       //============================
-       // Clear unwanted ZWJ, ZWNJ
-       // MALAYALAM
-       if ($lang=='ml') {      
-               $vstr = preg_replace('/(200C|200D) /','', $vstr);
-       }
-
-       //============================
-       // END & PUT IT BACK TOGETHER
-       $vstr = preg_replace('/^0020 (.*) 0020$/', '\\1', $vstr);
-
-       $varr = explode(" ",$vstr);
-       $e = '';
-       foreach($varr AS $v) {
-               $e.=code2utf(hexdec($v));
-       }
-       //============================
-
-       return $e;
-}
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/meter.php b/inc/3rdparty/libraries/mpdf/classes/meter.php
deleted file mode 100644 (file)
index 46fa9d5..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-<?php
-
-class meter {
-
-
-function __construct() {
-
-}
-
-function makeSVG($tag, $type, $value, $max, $min, $optimum, $low, $high) {
-  $svg = '';
-  if ($tag == 'meter') {
-
-    if ($type=='2') {
-       /////////////////////////////////////////////////////////////////////////////////////
-       ///////// CUSTOM <meter type="2">
-       /////////////////////////////////////////////////////////////////////////////////////
-       $h = 10;
-       $w = 160;
-       $border_radius = 0.143;         // Factor of Height
-
-       $svg = '<?xml version="1.0" encoding="UTF-8"?>
-       <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-       <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
-
-
-       <defs>
-       <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(222, 222, 222)" />
-       <stop offset="20%" stop-color="rgb(232, 232, 232)" />
-       <stop offset="25%" stop-color="rgb(232, 232, 232)" />
-       <stop offset="100%" stop-color="rgb(182, 182, 182)" />
-       </linearGradient>
-
-       </defs>
-';
-       $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="#f4f4f4" stroke="none" />';
-
-       // LOW to HIGH region
-       //if ($low && $high && ($low != $min || $high != $max)) {
-       if ($low && $high) {
-         $barx = (($low-$min) / ($max-$min) ) * $w;
-         $barw = (($high-$low) / ($max-$min) ) * $w;
-         $svg .= '<rect x="'.$barx.'" y="0" width="'.$barw.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />';
-       }
-
-       // OPTIMUM Marker (? AVERAGE)
-       if ($optimum) {
-         $barx = (($optimum-$min) / ($max-$min) ) * $w;
-         $barw = $h/2;
-         $barcol = '#888888';
-         $svg .= '<rect x="'.$barx.'" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
-       }
-
-       // VALUE Marker
-       if ($value) {
-         if ($min != $low && $value < $low) { $col = 'orange'; }
-         else if ($max != $high && $value > $high) { $col = 'orange'; }
-         else { $col = '#008800'; }
-         $cx = (($value-$min) / ($max-$min) ) * $w;
-         $cy = $h/2;
-         $rx = $h/3.5;
-         $ry = $h/2.2;
-         $svg .= '<ellipse fill="'.$col.'" stroke="#000000" stroke-width="0.5px" cx="'.$cx.'" cy="'.$cy.'" rx="'.$rx.'" ry="'.$ry.'"/>';
-       }
-
-       // BoRDER
-       $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
-
-       $svg .= '</g></svg>';
-    }
-    else {
-       /////////////////////////////////////////////////////////////////////////////////////
-       ///////// DEFAULT <meter>
-       /////////////////////////////////////////////////////////////////////////////////////
-       $h = 10;
-       $w = 50;
-       $border_radius = 0.143;         // Factor of Height
-
-       $svg = '<?xml version="1.0" encoding="UTF-8"?>
-       <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-       <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
-
-       <defs>
-       <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(222, 222, 222)" />
-       <stop offset="20%" stop-color="rgb(232, 232, 232)" />
-       <stop offset="25%" stop-color="rgb(232, 232, 232)" />
-       <stop offset="100%" stop-color="rgb(182, 182, 182)" />
-       </linearGradient>
-
-       <linearGradient id="GrRED" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(255, 162, 162)" />
-       <stop offset="20%" stop-color="rgb(255, 218, 218)" />
-       <stop offset="25%" stop-color="rgb(255, 218, 218)" />
-       <stop offset="100%" stop-color="rgb(255, 0, 0)" />
-       </linearGradient>
-
-       <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(102, 230, 102)" />
-       <stop offset="20%" stop-color="rgb(218, 255, 218)" />
-       <stop offset="25%" stop-color="rgb(218, 255, 218)" />
-       <stop offset="100%" stop-color="rgb(0, 148, 0)" />
-       </linearGradient>
-
-       <linearGradient id="GrBLUE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(102, 102, 230)" />
-       <stop offset="20%" stop-color="rgb(238, 238, 238)" />
-       <stop offset="25%" stop-color="rgb(238, 238, 238)" />
-       <stop offset="100%" stop-color="rgb(0, 0, 128)" />
-       </linearGradient>
-
-       <linearGradient id="GrORANGE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(255, 186, 0)" />
-       <stop offset="20%" stop-color="rgb(255, 238, 168)" />
-       <stop offset="25%" stop-color="rgb(255, 238, 168)" />
-       <stop offset="100%" stop-color="rgb(255, 155, 0)" />
-       </linearGradient>
-       </defs>
-
-       <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="none" />
-';
-
-       if ($value) {
-         $barw = (($value-$min) / ($max-$min) ) * $w;
-         if ($optimum < $low) {
-               if ($value < $low) { $barcol = 'url(#GrGREEN)'; }
-               else if ($value > $high) { $barcol = 'url(#GrRED)'; }
-               else { $barcol = 'url(#GrORANGE)'; }
-         }
-         else if ($optimum > $high) {
-               if ($value < $low) { $barcol = 'url(#GrRED)'; }
-               else if ($value > $high) { $barcol = 'url(#GrGREEN)'; }
-               else { $barcol = 'url(#GrORANGE)'; }
-         }
-         else {
-               if ($value < $low) { $barcol = 'url(#GrORANGE)'; }
-               else if ($value > $high) { $barcol = 'url(#GrORANGE)'; }
-               else { $barcol = 'url(#GrGREEN)'; }
-         }
-         $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
-       }
-
-
-       // Borders
-       //$svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
-       if ($value) {
-       //  $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
-       }
-
-
-       $svg .= '</g></svg>';
-    }
-  }
-  else {       // $tag == 'progress'
-
-    if ($type=='2') {
-       /////////////////////////////////////////////////////////////////////////////////////
-       ///////// CUSTOM <progress type="2">
-       /////////////////////////////////////////////////////////////////////////////////////
-    }
-    else {
-       /////////////////////////////////////////////////////////////////////////////////////
-       ///////// DEFAULT <progress>
-       /////////////////////////////////////////////////////////////////////////////////////
-       $h = 10;
-       $w = 100;
-       $border_radius = 0.143;         // Factor of Height
-
-       if ($value or $value==='0') {
-               $fill = 'url(#GrGRAY)';
-       }
-       else {
-               $fill = '#f8f8f8';
-       }
-
-       $svg = '<svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'"><g>
-
-       <defs>
-       <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(222, 222, 222)" />
-       <stop offset="20%" stop-color="rgb(232, 232, 232)" />
-       <stop offset="25%" stop-color="rgb(232, 232, 232)" />
-       <stop offset="100%" stop-color="rgb(182, 182, 182)" />
-       </linearGradient>
-
-       <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
-       <stop offset="0%" stop-color="rgb(102, 230, 102)" />
-       <stop offset="20%" stop-color="rgb(218, 255, 218)" />
-       <stop offset="25%" stop-color="rgb(218, 255, 218)" />
-       <stop offset="100%" stop-color="rgb(0, 148, 0)" />
-       </linearGradient>
-
-       </defs>
-
-       <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="'.$fill.'" stroke="none" />
-';
-
-       if ($value) {
-         $barw = (($value-$min) / ($max-$min) ) * $w;
-         $barcol = 'url(#GrGREEN)';
-         $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
-       }
-
-
-       // Borders
-       $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
-       if ($value) {
-       //  $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
-       }
-
-
-       $svg .= '</g></svg>';
-
-    }
-  }
-
-  return $svg;
-}
-
-
-}      // end of class
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/svg.php b/inc/3rdparty/libraries/mpdf/classes/svg.php
deleted file mode 100644 (file)
index 571f4ed..0000000
+++ /dev/null
@@ -1,2703 +0,0 @@
-<?php
-//     svg class modified for mPDF version 4.4.003 by Ian Back: based on -
-//     svg2pdf fpdf class
-//     sylvain briand (syb@godisaduck.com), modified by rick trevino (rtrevino1@yahoo.com)
-//     http://www.godisaduck.com/svg2pdf_with_fpdf
-//     http://rhodopsin.blogspot.com
-//     
-//     cette class etendue est open source, toute modification devra cependant etre repertoriée~
-
-
-// NB UNITS - Works in pixels as main units - converting to PDF units when outputing to PDF string
-// and on returning size
-
-class SVG {
-
-       var $svg_gradient;      //      array - contient les infos sur les gradient fill du svg classé par id du svg
-       var $svg_shadinglist;   //      array - contient les ids des objet shading
-       var $svg_info;          //      array contenant les infos du svg voulue par l'utilisateur
-       var $svg_attribs;               //      array - holds all attributes of root <svg> tag
-       var $svg_style;         //      array contenant les style de groupes du svg
-       var $svg_string;                //      String contenant le tracage du svg en lui même.
-       var $txt_data;          //    array - holds string info to write txt to image
-       var $txt_style;         //      array - current text style
-       var $mpdf_ref;
-       var $xbase;             // mPDF 4.4.003
-       var $ybase;             // mPDF 4.4.003
-       var $svg_error; // mPDF 4.4.003
-       var $subPathInit;       // mPDF 4.4.003
-       var $spxstart;  // mPDF 4.4.003
-       var $spystart;  // mPDF 4.4.003
-       var $kp;                // mPDF 4.4.003  convert pixels to PDF units
-       var $pathBBox;  // mPDF 5.0.039
-
-       function SVG(&$mpdf){
-               $this->svg_gradient = array();
-               $this->svg_shadinglist = array();
-               $this->txt_data = array();
-               $this->svg_string = '';
-               $this->svg_info = array();
-               $this->svg_attribs = array();
-               $this->xbase = 0;
-               $this->ybase = 0;
-               $this->svg_error = false;
-               $this->subPathInit = false;     // mPDF 4.4.003
-               $this->dashesUsed = false;      // mPDF 5.0
-               $this->mpdf_ref =& $mpdf;
-
-               $this->kp = 72 / $mpdf->img_dpi;        // mPDF 4.4.003  constant To convert pixels to pts/PDF units
-               $this->kf = 1;                          // mPDF 5.0.039 constant To convert font size if re-mapped
-               $this->pathBBox = array(); // mPDF 5.0.039
-
-               $this->svg_style = array(
-                       array(
-                       'fill'          => 'black',                     //      mPDF 4.4.008
-                       'fill-opacity'  => 1,                           //      remplissage opaque par defaut
-                       'fill-rule'             => 'nonzero',           //      mode de remplissage par defaut
-                       'stroke'                => 'none',                      //      pas de trait par defaut
-                       'stroke-linecap'        => 'butt',                      //      style de langle par defaut
-                       'stroke-linejoin'       => 'miter',                     //
-                       'stroke-miterlimit' => 4,                       //      limite de langle par defaut
-                       'stroke-opacity'        => 1,                           //      trait opaque par defaut
-                       'stroke-width'  => 1,                           //      mPDF 4.4.011
-                       'stroke-dasharray' => 0,                        //      mPDF 4.4.003
-                       'stroke-dashoffset' => 0,                       //      mPDF 4.4.003
-                       'color' => ''                                   //      mPDF 4.4.005
-                       )
-               );
-
-               $this->txt_style = array(
-                       array(
-                       'fill'          => 'black',             //      pas de remplissage par defaut
-                       'font-family'   => $mpdf->default_font,
-                       'font-size'             => $mpdf->default_font_size,            //      ****** this is pts
-                       'font-weight'   => 'normal',    //      normal | bold
-                       'font-style'    => 'normal',    //      italic | normal
-                       'text-anchor'   => 'start',             // alignment: start, middle, end
-/* mPDF 5.0.041 */
-                       'fill-opacity'  => 1,                           //      remplissage opaque par defaut
-                       'fill-rule'             => 'nonzero',           //      mode de remplissage par defaut
-                       'stroke'                => 'none',                      //      pas de trait par defaut
-                       'stroke-opacity'        => 1,                           //      trait opaque par defaut
-                       'stroke-width'  => 1,                           //      mPDF 4.4.011
-                       'color' => ''                                   //      mPDF 4.4.005
-                       )
-               );
-
-
-
-       }
-
-       function svgGradient($gradient_info, $attribs, $element){
-               $n = count($this->mpdf_ref->gradients)+1;
-
-               // Get bounding dimensions of element
-               $w = 100;
-               $h = 100;
-               $x_offset = 0;
-               $y_offset = 0;
-               if ($element=='rect') {
-                       $w = $attribs['width'];
-                       $h = $attribs['height'];
-                       $x_offset = $attribs['x'];
-                       $y_offset = $attribs['y'];
-               }
-               else if ($element=='ellipse') {
-                       $w = $attribs['rx']*2;
-                       $h = $attribs['ry']*2;
-                       $x_offset = $attribs['cx']-$attribs['rx'];
-                       $y_offset = $attribs['cy']-$attribs['ry'];
-               }
-               else if ($element=='circle') {
-                       $w = $attribs['r']*2;
-                       $h = $attribs['r']*2;
-                       $x_offset = $attribs['cx']-$attribs['r'];
-                       $y_offset = $attribs['cy']-$attribs['r'];
-               }
-               else if ($element=='polygon') {
-                       $pts = preg_split('/[ ,]+/', trim($attribs['points']));
-                       $maxr=$maxb=0;
-                       $minl=$mint=999999;
-                       for ($i=0;$i<count($pts); $i++) {
-                               if ($i % 2 == 0) {      // x values
-                                       $minl = min($minl,$pts[$i]);
-                                       $maxr = max($maxr,$pts[$i]);
-                               }
-                               else {  // y values
-                                       $mint = min($mint,$pts[$i]);
-                                       $maxb = max($maxb,$pts[$i]);
-                               }
-                       }
-                       $w = $maxr-$minl;
-                       $h = $maxb-$mint;
-                       $x_offset = $minl;
-                       $y_offset = $mint;
-               }
-               else if ($element=='path') {
-                 // mPDF 5.0.039
-                 if (is_array($this->pathBBox) && $this->pathBBox[2]>0) {
-                       $w = $this->pathBBox[2];
-                       $h = $this->pathBBox[3];
-                       $x_offset = $this->pathBBox[0];
-                       $y_offset = $this->pathBBox[1];
-                 }
-                 else {
-                       preg_match_all('/([a-z]|[A-Z])([ ,\-.\d]+)*/', $attribs['d'], $commands, PREG_SET_ORDER);
-                       $maxr=$maxb=0;
-                       $minl=$mint=999999;
-                       foreach($commands as $c){
-                               if(count($c)==3){
-                                       list($tmp, $cmd, $arg) = $c;
-                                       if ($cmd=='M' || $cmd=='L' || $cmd=='C' || $cmd=='S' || $cmd=='Q' || $cmd=='T') {
-                                               $pts = preg_split('/[ ,]+/', trim($arg));
-                                               for ($i=0;$i<count($pts); $i++) {
-                                                       if ($i % 2 == 0) {      // x values
-                                                               $minl = min($minl,$pts[$i]);
-                                                               $maxr = max($maxr,$pts[$i]);
-                                                       }
-                                                       else {  // y values
-                                                               $mint = min($mint,$pts[$i]);
-                                                               $maxb = max($maxb,$pts[$i]);
-                                                       }
-                                               }
-                                       }
-                                       if ($cmd=='H') { // sets new x
-                                               $minl = min($minl,$arg);
-                                               $maxr = max($maxr,$arg);
-                                       }
-                                       if ($cmd=='V') { // sets new y
-                                               $mint = min($mint,$arg);
-                                               $maxb = max($maxb,$arg);
-                                       }
-                               }
-                       }
-                       $w = $maxr-$minl;
-                       $h = $maxb-$mint;
-                       $x_offset = $minl;
-                       $y_offset = $mint;
-                 }
-               }
-               if (!$w || $w==-999999) { $w = 100; }
-               if (!$h || $h==-999999) { $h = 100; }
-               if ($x_offset==999999) { $x_offset = 0; }
-               if ($y_offset==999999) { $y_offset = 0; }
-
-               // mPDF 4.5.010
-               // TRANSFORMATIONS
-               $transformations = '';
-               if (isset($gradient_info['transform'])){
-                       preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$gradient_info['transform'],$m);
-                       if (count($m[0])) {
-                               for($i=0; $i<count($m[0]); $i++) {
-                                       $c = strtolower($m[1][$i]);
-                                       $v = trim($m[2][$i]);
-                                       $vv = preg_split('/[ ,]+/',$v);
-                                       if ($c=='matrix' && count($vv)==6) {
-                                               // mPDF 5.0.039
-                                               // Note angle of rotation is reversed (from SVG to PDF), so vv[1] and vv[2] are negated
-                                               // cf svgDefineStyle()
-                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $vv[0], -$vv[1], -$vv[2], $vv[3], $vv[4]*$this->kp, -$vv[5]*$this->kp);       
-                                       }
-                                       else if ($c=='translate' && count($vv)) {
-                                               $tm[4] = $vv[0];
-                                               if (count($vv)==2) { $t_y = -$vv[1]; }
-                                               else { $t_y = 0; }
-                                               $tm[5] = $t_y;
-                                               $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
-                                       }
-                                       else if ($c=='scale' && count($vv)) {
-                                               if (count($vv)==2) { $s_y = $vv[1]; }
-                                               else { $s_y = $vv[0]; }
-                                               $tm[0] = $vv[0];
-                                               $tm[3] = $s_y;
-                                               $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
-                                       }
-                                       else if ($c=='rotate' && count($vv)) {
-                                               $tm[0] = cos(deg2rad(-$vv[0]));
-                                               $tm[1] = sin(deg2rad(-$vv[0]));
-                                               $tm[2] = -$tm[1];
-                                               $tm[3] = $tm[0];
-                                               if (count($vv)==3) {
-                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
-                                               }
-                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
-                                               if (count($vv)==3) {
-                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
-                                               }
-                                       }
-                                       else if ($c=='skewx' && count($vv)) {
-                                               $tm[2] = tan(deg2rad(-$vv[0]));
-                                               $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
-                                       }
-                                       else if ($c=='skewy' && count($vv)) {
-                                               $tm[1] = tan(deg2rad(-$vv[0]));
-                                               $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
-                                       }
-
-                               }
-                       }
-               }
-
-
-               $return = "";
-
-               // mPDF 5.0.039
-               if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
-                       if ($transformations) { $return .= $transformations; }
-               }
-               // mPDF 5.0.040
-               $spread = 'P';  // pad
-               if (isset($gradient_info['spread'])) {
-                       if (strtolower($gradient_info['spread'])=='reflect') { $spread = 'F'; } // reflect
-                       else if (strtolower($gradient_info['spread'])=='repeat') { $spread = 'R'; } // repeat
-               }       
-
-
-               for ($i=0; $i<(count($gradient_info['color'])); $i++) {
-                       if (stristr($gradient_info['color'][$i]['offset'], '%')!== false) { $gradient_info['color'][$i]['offset'] = ($gradient_info['color'][$i]['offset']+0)/100; }
-                       if (stristr($gradient_info['color'][($i+1)]['offset'], '%')!== false) { $gradient_info['color'][($i+1)]['offset'] = ($gradient_info['color'][($i+1)]['offset']+0)/100; }
-                       if ($gradient_info['color'][$i]['offset']<0) { $gradient_info['color'][$i]['offset'] = 0; }
-                       if ($gradient_info['color'][$i]['offset']>1) { $gradient_info['color'][$i]['offset'] = 1; }
-                       if ($i>0) {
-                               if ($gradient_info['color'][$i]['offset']<$gradient_info['color'][($i-1)]['offset']) { 
-                                       $gradient_info['color'][$i]['offset']=$gradient_info['color'][($i-1)]['offset']; 
-                               }
-                       }
-               }
-
-               if ($gradient_info['color'][0]['offset']>0) { 
-                       array_unshift($gradient_info['color'], $gradient_info['color'][0]);
-                       $gradient_info['color'][0]['offset'] = 0; 
-               }
-               $ns = count($gradient_info['color']);
-               if ($gradient_info['color'][($ns-1)]['offset']<1) { 
-                       $gradient_info['color'][] = $gradient_info['color'][($ns-1)];
-                       $gradient_info['color'][($ns)]['offset'] = 1; 
-               }
-               $ns = count($gradient_info['color']);
-
-
-
-
-               if ($gradient_info['type'] == 'linear'){
-                       // mPDF 4.4.003
-                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
-                               if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
-                               if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
-                               if (isset($gradient_info['info']['x2'])) { $gradient_info['info']['x2'] = ($gradient_info['info']['x2']-$x_offset) / $w; }
-                               if (isset($gradient_info['info']['y2'])) { $gradient_info['info']['y2'] = ($gradient_info['info']['y2']-$y_offset) / $h; }
-                       }
-                       if (isset($gradient_info['info']['x1'])) { $x1 = $gradient_info['info']['x1']; }
-                       else { $x1 = 0; }
-                       if (isset($gradient_info['info']['y1'])) { $y1 = $gradient_info['info']['y1']; }
-                       else { $y1 = 0; }
-                       if (isset($gradient_info['info']['x2'])) { $x2 = $gradient_info['info']['x2']; }
-                       else { $x2 = 1; }
-                       if (isset($gradient_info['info']['y2'])) { $y2 = $gradient_info['info']['y2']; }
-                       else { $y2 = 0; }
-
-                       if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
-                       if (stristr($x2, '%')!== false) { $x2 = ($x2+0)/100; }
-                       if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
-                       if (stristr($y2, '%')!== false) { $y2 = ($y2+0)/100; }
-
-                       // mPDF 5.0.042
-                       $bboxw = $w;
-                       $bboxh = $h;
-                       $usex = $x_offset;
-                       $usey = $y_offset;
-                       $usew = $bboxw;
-                       $useh = $bboxh;
-                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
-                               $angle = rad2deg(atan2(($gradient_info['info']['y2']-$gradient_info['info']['y1']), ($gradient_info['info']['x2']-$gradient_info['info']['x1'])));
-                               if ($angle < 0) { $angle += 360; }
-                               else if ($angle > 360) { $angle -= 360; }
-                               if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) { 
-                                   if ($w >= $h) {
-                                       $y1 *= $h/$w ;
-                                       $y2 *= $h/$w ;
-                                       $usew = $useh = $bboxw;
-                                   }
-                                   else {
-                                       $x1 *= $w/$h ;
-                                       $x2 *= $w/$h ;
-                                       $usew = $useh = $bboxh;
-                                   }
-                               }
-                       }
-                       $a = $usew;             // width
-                       $d = -$useh;    // height
-                       $e = $usex;             // x- offset
-                       $f = -$usey;    // -y-offset
-
-                       $return .= sprintf('%.3F 0 0 %.3F %.3F %.3F cm ', $a*$this->kp, $d*$this->kp, $e*$this->kp, $f*$this->kp);
-
-                       // mPDF 5.0.039
-                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='objectboundingbox') {
-                               if ($transformations) { $return .= $transformations; }
-                       }
-
-                       // mPDF 5.0.020
-                       $trans = false;
-
-                       // mPDF 5.0.040
-                       if ($spread=='R' || $spread=='F') {     // Repeat  /  Reflect
-                               $offs = array();
-                               for($i=0;$i<$ns;$i++) {
-                                       $offs[$i] = $gradient_info['color'][$i]['offset'];
-                               }
-                               $gp = 0;
-                               $inside=true;
-                               while($inside) {
-                                  $gp++;
-                                  for($i=0;$i<$ns;$i++) {
-                                       if ($spread=='F' && ($gp % 2) == 1) {   // Reflect
-                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][(($ns*($gp-1))+($ns-$i-1))];
-                                               $tmp = $gp+(1-$offs[($ns-$i-1)]) ;
-                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
-                                       }
-                                       else {  // Reflect
-                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][$i];
-                                               $tmp = $gp+$offs[$i] ;
-                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
-                                       }
-                                       // IF STILL INSIDE BOX OR STILL VALID 
-                                       // Point on axis to test
-                                       $px1 = $x1 + ($x2-$x1)*$tmp;
-                                       $py1 = $y1 + ($y2-$y1)*$tmp;
-                                       // Get perpendicular axis
-                                       $alpha = atan2($y2-$y1, $x2-$x1);
-                                       $alpha += M_PI/2;       // rotate 90 degrees
-                                       // Get arbitrary point to define line perpendicular to axis
-                                       $px2 = $px1+cos($alpha);
-                                       $py2 = $py1+sin($alpha);
-
-                                       $res1 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 0, 1);     // $x=0 vert axis
-                                       $res2 = _testIntersect($px1, $py1, $px2, $py2, 1, 0, 1, 1);     // $x=1 vert axis
-                                       $res3 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 1, 0);     // $y=0 horiz axis
-                                       $res4 = _testIntersect($px1, $py1, $px2, $py2, 0, 1, 1, 1);     // $y=1 horiz axis
-                                       if (!$res1 && !$res2 && !$res3 && !$res4) { $inside = false; }
-                                  }
-                               }
-
-                               $inside=true;
-                               $gp = 0;
-                               while($inside) {
-                                  $gp++;
-                                  $newarr = array();
-                                  for($i=0;$i<$ns;$i++) {
-                                       if ($spread=='F') {     // Reflect
-                                           $newarr[$i] = $gradient_info['color'][($ns-$i-1)];
-                                           if (($gp % 2) == 1) {
-                                               $tmp = -$gp+(1-$offs[($ns-$i-1)]);
-                                                       $newarr[$i]['offset'] = $tmp; 
-                                          }
-                                          else {
-                                               $tmp = -$gp+$offs[$i];
-                                               $newarr[$i]['offset'] = $tmp; 
-                                          }
-                                       }
-                                       else {  // Reflect
-                                               $newarr[$i] = $gradient_info['color'][$i];
-                                               $tmp = -$gp+$offs[$i];
-                                               $newarr[$i]['offset'] = $tmp; 
-                                       }
-
-                                       // IF STILL INSIDE BOX OR STILL VALID 
-                                       // Point on axis to test
-                                       $px1 = $x1 + ($x2-$x1)*$tmp;
-                                       $py1 = $y1 + ($y2-$y1)*$tmp;
-                                       // Get perpendicular axis
-                                       $alpha = atan2($y2-$y1, $x2-$x1);
-                                       $alpha += M_PI/2;       // rotate 90 degrees
-                                       // Get arbitrary point to define line perpendicular to axis
-                                       $px2 = $px1+cos($alpha);
-                                       $py2 = $py1+sin($alpha);
-
-                                       $res1 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 0, 1);     // $x=0 vert axis
-                                       $res2 = _testIntersect($px1, $py1, $px2, $py2, 1, 0, 1, 1);     // $x=1 vert axis
-                                       $res3 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 1, 0);     // $y=0 horiz axis
-                                       $res4 = _testIntersect($px1, $py1, $px2, $py2, 0, 1, 1, 1);     // $y=1 horiz axis
-                                       if (!$res1 && !$res2 && !$res3 && !$res4) { $inside = false; }
-                                  }
-                                  for($i=($ns-1);$i>=0;$i--) { 
-                                       if (isset($newarr[$i]['offset'])) array_unshift($gradient_info['color'], $newarr[$i]); 
-                                  }
-                               }
-                       }
-
-                       // mPDF 4.4.007   Gradient STOPs
-                       $stops = count($gradient_info['color']);
-                       if ($stops < 2) { return ''; }
-
-                       // mPDF 5.0.042
-                       $range = $gradient_info['color'][count($gradient_info['color'])-1]['offset']-$gradient_info['color'][0]['offset'];
-                       $min = $gradient_info['color'][0]['offset'];
-
-                       for ($i=0; $i<($stops); $i++) {
-                               // mPDF 5.0.051
-                               if (!$gradient_info['color'][$i]['color']) { 
-                                       if ($gradient_info['colorspace']=='RGB') $gradient_info['color'][$i]['color'] = '0 0 0'; 
-                                       else if ($gradient_info['colorspace']=='Gray') $gradient_info['color'][$i]['color'] = '0'; 
-                                       else if ($gradient_info['colorspace']=='CMYK') $gradient_info['color'][$i]['color'] = '1 1 1 1'; 
-                               }
-                               $offset = ($gradient_info['color'][$i]['offset'] - $min)/$range;
-                               $this->mpdf_ref->gradients[$n]['stops'][] = array(
-                                       'col' => $gradient_info['color'][$i]['color'],
-                                       'opacity' => $gradient_info['color'][$i]['opacity'],
-                                       'offset' => $offset);
-                               if ($gradient_info['color'][$i]['opacity']<1) { $trans = true; }
-                       }
-                       $grx1 = $x1 + ($x2-$x1)*$gradient_info['color'][0]['offset'];
-                       $gry1 = $y1 + ($y2-$y1)*$gradient_info['color'][0]['offset'];
-                       $grx2 = $x1 + ($x2-$x1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
-                       $gry2 = $y1 + ($y2-$y1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
-
-                       $this->mpdf_ref->gradients[$n]['coords']=array($grx1, $gry1, $grx2, $gry2);
-
-                       $this->mpdf_ref->gradients[$n]['colorspace'] = $gradient_info['colorspace'];    // mPDF 5.0.051
-
-                       $this->mpdf_ref->gradients[$n]['type'] = 2;
-                       $this->mpdf_ref->gradients[$n]['fo'] = true;
-
-                       $this->mpdf_ref->gradients[$n]['extend']=array('true','true');
-                       if ($trans) { 
-                               $this->mpdf_ref->gradients[$n]['trans'] = true; 
-                               $return .= ' /TGS'.($n).' gs ';
-                       }
-                       $return .= ' /Sh'.($n).' sh ';
-                       $return .= " Q\n";
-               }
-               else if ($gradient_info['type'] == 'radial'){
-                       // mPDF 4.4.003
-                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
-                               if ($w > $h) { $h = $w; }
-                               else { $w = $h; }
-                               if (isset($gradient_info['info']['x0'])) { $gradient_info['info']['x0'] = ($gradient_info['info']['x0']-$x_offset) / $w; }
-                               if (isset($gradient_info['info']['y0'])) { $gradient_info['info']['y0'] = ($gradient_info['info']['y0']-$y_offset) / $h; }
-                               if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
-                               if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
-                               if (isset($gradient_info['info']['r'])) { $gradient_info['info']['rx'] = $gradient_info['info']['r'] / $w; }
-                               if (isset($gradient_info['info']['r'])) { $gradient_info['info']['ry'] = $gradient_info['info']['r'] / $h; }
-                       }
-
-                       if ($gradient_info['info']['x0'] || $gradient_info['info']['x0']===0) { $x0 = $gradient_info['info']['x0']; }
-                       else { $x0 = 0.5; }
-                       if ($gradient_info['info']['y0'] || $gradient_info['info']['y0']===0) { $y0 = $gradient_info['info']['y0']; }
-                       else { $y0 = 0.5; }
-                       if ($gradient_info['info']['rx'] || $gradient_info['info']['rx']===0) { $rx = $gradient_info['info']['rx']; }
-                       else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $rx = $gradient_info['info']['r']; }
-                       else { $rx = 0.5; }
-                       if ($gradient_info['info']['ry'] || $gradient_info['info']['ry']===0) { $ry = $gradient_info['info']['ry']; }
-                       else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $ry = $gradient_info['info']['r']; }
-                       else { $ry = 0.5; }
-                       if ($gradient_info['info']['x1'] || $gradient_info['info']['x1']===0) { $x1 = $gradient_info['info']['x1']; }
-                       else { $x1 = $x0; }
-                       if ($gradient_info['info']['y1'] || $gradient_info['info']['y1']===0) { $y1 = $gradient_info['info']['y1']; }
-                       else { $y1 = $y0; }
-
-                       if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
-                       if (stristr($x0, '%')!== false) { $x0 = ($x0+0)/100; }
-                       if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
-                       if (stristr($y0, '%')!== false) { $y0 = ($y0+0)/100; }
-                       if (stristr($rx, '%')!== false) { $rx = ($rx+0)/100; }
-                       if (stristr($ry, '%')!== false) { $ry = ($ry+0)/100; }
-
-                       // mPDF 5.0.043
-                       $bboxw = $w;
-                       $bboxh = $h;
-                       $usex = $x_offset;
-                       $usey = $y_offset;
-                       $usew = $bboxw;
-                       $useh = $bboxh;
-                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
-                               $angle = rad2deg(atan2(($gradient_info['info']['y0']-$gradient_info['info']['y1']), ($gradient_info['info']['x0']-$gradient_info['info']['x1'])));
-                               if ($angle < 0) { $angle += 360; }
-                               else if ($angle > 360) { $angle -= 360; }
-                               if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) { 
-                                   if ($w >= $h) {
-                                       $y1 *= $h/$w ;
-                                       $y0 *= $h/$w ;
-                                       $rx *= $h/$w ;
-                                       $ry *= $h/$w ;
-                                       $usew = $useh = $bboxw;
-                                   }
-                                   else {
-                                       $x1 *= $w/$h ;
-                                       $x0 *= $w/$h ;
-                                       $rx *= $w/$h ;
-                                       $ry *= $w/$h ;
-                                       $usew = $useh = $bboxh;
-                                   }
-                               }
-                       }
-                       $a = $usew;             // width
-                       $d = -$useh;    // height
-                       $e = $usex;             // x- offset
-                       $f = -$usey;    // -y-offset
-
-                       $r = $rx;
-
-
-                       $return .= sprintf('%.3F 0 0 %.3F %.3F %.3F cm ', $a*$this->kp, $d*$this->kp, $e*$this->kp, $f*$this->kp);
-
-                       // mPDF 5.0.039
-                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='objectboundingbox') {
-                               if ($transformations) { $return .= $transformations; }
-                       }
-
-                       // x1 and y1 (fx, fy) should be inside the circle defined by x0 y0 and r else error in mPDF
-                       while (pow(($x1-$x0),2) + pow(($y1 - $y0),2) >= pow($r,2)) { $r += 0.05; }
-
-                       // mPDF 5.0.040
-                       if ($spread=='R' || $spread=='F') {     // Repeat  /  Reflect
-                               $offs = array();
-                               for($i=0;$i<$ns;$i++) {
-                                       $offs[$i] = $gradient_info['color'][$i]['offset'];
-                               }
-                               $gp = 0;
-                               $inside=true;
-                               while($inside) {
-                                  $gp++;
-                                  for($i=0;$i<$ns;$i++) {
-                                       if ($spread=='F' && ($gp % 2) == 1) {   // Reflect
-                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][(($ns*($gp-1))+($ns-$i-1))];
-                                               $tmp = $gp+(1-$offs[($ns-$i-1)]) ;
-                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
-                                       }
-                                       else {  // Reflect
-                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][$i];
-                                               $tmp = $gp+$offs[$i] ;
-                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
-                                       }
-                                       // IF STILL INSIDE BOX OR STILL VALID 
-                                       // TEST IF circle (perimeter) intersects with 
-                                       // or is enclosed
-                                       // Point on axis to test
-                                       $px = $x1 + ($x0-$x1)*$tmp;
-                                       $py = $y1 + ($y0-$y1)*$tmp;
-                                       $pr = $r*$tmp;
-                                       $res = _testIntersectCircle($px, $py, $pr);
-                                       if (!$res) { $inside = false; }
-                                  }
-                               }
-                       }
-
-                       // mPDF 4.4.007   Gradient STOPs
-                       $stops = count($gradient_info['color']);
-                       if ($stops < 2) { return ''; }
-
-                       // mPDF 5.0.043
-                       $range = $gradient_info['color'][count($gradient_info['color'])-1]['offset']-$gradient_info['color'][0]['offset'];
-                       $min = $gradient_info['color'][0]['offset'];
-
-                       for ($i=0; $i<($stops); $i++) {
-                               // mPDF 5.0.051
-                               if (!$gradient_info['color'][$i]['color']) { 
-                                       if ($gradient_info['colorspace']=='RGB') $gradient_info['color'][$i]['color'] = '0 0 0'; 
-                                       else if ($gradient_info['colorspace']=='Gray') $gradient_info['color'][$i]['color'] = '0'; 
-                                       else if ($gradient_info['colorspace']=='CMYK') $gradient_info['color'][$i]['color'] = '1 1 1 1'; 
-                               }
-                               $offset = ($gradient_info['color'][$i]['offset'] - $min)/$range;
-                               $this->mpdf_ref->gradients[$n]['stops'][] = array(
-                                       'col' => $gradient_info['color'][$i]['color'],
-                                       'opacity' => $gradient_info['color'][$i]['opacity'],
-                                       'offset' => $offset);
-                               if ($gradient_info['color'][$i]['opacity']<1) { $trans = true; }
-                       }
-                       $grx1 = $x1 + ($x0-$x1)*$gradient_info['color'][0]['offset'];
-                       $gry1 = $y1 + ($y0-$y1)*$gradient_info['color'][0]['offset'];
-                       $grx2 = $x1 + ($x0-$x1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
-                       $gry2 = $y1 + ($y0-$y1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
-                       $grir = $r*$gradient_info['color'][0]['offset'];
-                       $grr = $r*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
-
-                       $this->mpdf_ref->gradients[$n]['coords']=array($grx1, $gry1, $grx2, $gry2, abs($grr), abs($grir)  );
-
-                       $grx1 = $x1 + ($x0-$x1)*$first_stop;
-                       $gry1 = $y1 + ($y0-$y1)*$first_stop;
-                       $grx2 = $x1 + ($x0-$x1)*$last_stop;
-                       $gry2 = $y1 + ($y0-$y1)*$last_stop;
-                       $grir = $r*$first_stop;
-                       $grr = $r*$last_stop;
-                       $this->mpdf_ref->gradients[$n]['colorspace'] = $gradient_info['colorspace'];    // mPDF 5.0.051
-
-                       $this->mpdf_ref->gradients[$n]['type'] = 3;
-                       $this->mpdf_ref->gradients[$n]['fo'] = true;
-
-                       $this->mpdf_ref->gradients[$n]['extend']=array('true','true');
-                       if ($trans) { 
-                               $this->mpdf_ref->gradients[$n]['trans'] = true; 
-                               $return .= ' /TGS'.($n).' gs ';
-                       }
-                       $return .= ' /Sh'.($n).' sh ';
-                       $return .= " Q\n";
-
-
-               }
-
-               return $return;
-       }
-
-
-       function svgOffset ($attribs){
-               // save all <svg> tag attributes
-               $this->svg_attribs = $attribs;
-               if(isset($this->svg_attribs['viewBox'])) {
-                       $vb = preg_split('/\s+/is', trim($this->svg_attribs['viewBox']));
-                       if (count($vb)==4) {
-                               $this->svg_info['x'] = $vb[0];
-                               $this->svg_info['y'] = $vb[1];
-                               $this->svg_info['w'] = $vb[2];
-                               $this->svg_info['h'] = $vb[3];
-//                             return;                                         // mPDF 5.0.005
-                       }
-               }
-
-               $svg_w = $this->mpdf_ref->ConvertSize($attribs['width']);       // mm (interprets numbers as pixels)
-               $svg_h = $this->mpdf_ref->ConvertSize($attribs['height']);      // mm
-
-///*
-               // mPDF 5.0.005
-               if ($this->svg_info['w']) {     // if 'w' set by viewBox
-                       if ($svg_w) {   // if width also set, use these values to determine to set size of "pixel"
-                               $this->kp *= ($svg_w/0.2645) / $this->svg_info['w'];
-                               $this->kf = ($svg_w/0.2645) / $this->svg_info['w'];     // mPDF 5.0.039
-                       }
-                       else if ($svg_h) {
-                               $this->kp *= ($svg_h/0.2645) / $this->svg_info['h'];
-                               $this->kf = ($svg_h/0.2645) / $this->svg_info['h'];     // mPDF 5.0.039
-                       }
-                       return;
-               }
-//*/
-
-               // Added to handle file without height or width specified
-               if (!$svg_w && !$svg_h) { $svg_w = $svg_h = $this->mpdf_ref->blk[$this->mpdf_ref->blklvl]['inner_width'] ; }    // DEFAULT
-               if (!$svg_w) { $svg_w = $svg_h; }
-               if (!$svg_h) { $svg_h = $svg_w; }
-
-               $this->svg_info['x'] = 0;
-               $this->svg_info['y'] = 0;
-               $this->svg_info['w'] = $svg_w/0.2645;   // mm->pixels
-               $this->svg_info['h'] = $svg_h/0.2645;   // mm->pixels
-
-       }
-
-
-       //
-       // check if points are within svg, if not, set to max
-       function svg_overflow($x,$y)
-       {
-               $x2 = $x;
-               $y2 = $y;
-               if(isset($this->svg_attribs['overflow']))
-               {
-                       if($this->svg_attribs['overflow'] == 'hidden')
-                       {
-                               // Not sure if this is supposed to strip off units, but since I dont use any I will omlt this step
-                               $svg_w = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['width']);
-                               $svg_h = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['height']);
-                               
-                               // $xmax = floor($this->svg_attribs['width']);
-                               $xmax = floor($svg_w);
-                               $xmin = 0;
-                               // $ymax = floor(($this->svg_attribs['height'] * -1));
-                               $ymax = floor(($svg_h * -1));
-                               $ymin = 0;
-
-                               if($x > $xmax) $x2 = $xmax; // right edge
-                               if($x < $xmin) $x2 = $xmin; // left edge
-                               if($y < $ymax) $y2 = $ymax; // bottom 
-                               if($y > $ymin) $y2 = $ymin; // top 
-
-                       }
-               }
-
-
-               return array( 'x' => $x2, 'y' => $y2);
-       }
-
-
-
-       function svgDefineStyle($critere_style){
-
-               $tmp = count($this->svg_style)-1;
-               $current_style = $this->svg_style[$tmp];
-
-               unset($current_style['transformations']);
-
-               // TRANSFORM SCALE
-               $transformations = '';
-               if (isset($critere_style['transform'])){
-                       preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$critere_style['transform'],$m);
-                       if (count($m[0])) {
-                               for($i=0; $i<count($m[0]); $i++) {
-                                       $c = strtolower($m[1][$i]);
-                                       $v = trim($m[2][$i]);
-                                       $vv = preg_split('/[ ,]+/',$v);
-                                       if ($c=='matrix' && count($vv)==6) {
-                                       // mPDF 5.0.039
-                                               // Note angle of rotation is reversed (from SVG to PDF), so vv[1] and vv[2] are negated
-                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $vv[0], -$vv[1], -$vv[2], $vv[3], $vv[4]*$this->kp, -$vv[5]*$this->kp);
-
-/*
-// The long way of doing this??
-// need to reverse angle of rotation from SVG to PDF
-$sx=sqrt(pow($vv[0],2)+pow($vv[2],2));
-if ($vv[0] < 0) { $sx *= -1; } // change sign
-$sy=sqrt(pow($vv[1],2)+pow($vv[3],2));
-if ($vv[3] < 0) { $sy *= -1; } // change sign
-
-// rotation angle is 
-$t=atan2($vv[1],$vv[3]);
-$t=atan2(-$vv[2],$vv[0]);      // Should be the same value or skew has been applied
-
-// Reverse angle
-$t *= -1;
-
-// Rebuild matrix
-$ma = $sx * cos($t);
-$mb = $sy * sin($t);
-$mc = -$sx * sin($t);
-$md = $sy * cos($t);
-
-// $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $ma, $mb, $mc, $md, $vv[4]*$this->kp, -$vv[5]*$this->kp);
-*/
-
-                                       }
-                                       else if ($c=='translate' && count($vv)) {
-                                               $tm[4] = $vv[0];
-                                               if (count($vv)==2) { $t_y = -$vv[1]; }
-                                               else { $t_y = 0; }
-                                               $tm[5] = $t_y;
-                                               $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
-                                       }
-                                       else if ($c=='scale' && count($vv)) {
-                                               if (count($vv)==2) { $s_y = $vv[1]; }
-                                               else { $s_y = $vv[0]; }
-                                               $tm[0] = $vv[0];
-                                               $tm[3] = $s_y;
-                                               $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
-                                       }
-                                       else if ($c=='rotate' && count($vv)) {
-                                               $tm[0] = cos(deg2rad(-$vv[0]));
-                                               $tm[1] = sin(deg2rad(-$vv[0]));
-                                               $tm[2] = -$tm[1];
-                                               $tm[3] = $tm[0];
-                                               if (count($vv)==3) {
-                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
-                                               }
-                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
-                                               if (count($vv)==3) {
-                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
-                                               }
-                                       }
-                                       else if ($c=='skewx' && count($vv)) {
-                                               $tm[2] = tan(deg2rad(-$vv[0]));
-                                               $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
-                                       }
-                                       else if ($c=='skewy' && count($vv)) {
-                                               $tm[1] = tan(deg2rad(-$vv[0]));
-                                               $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
-                                       }
-
-                               }
-                       }
-                       $current_style['transformations'] = $transformations;
-               }
-
-               if (isset($critere_style['style'])){
-                       if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/i',$critere_style['style'], $m)) {      // mPDF 5.7.2
-                               $current_style['fill'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
-                       }
-                       else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);     // mPDF 4.4.003
-                               if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
-                       }
-
-                       // mPDF 5.7.2
-                       if (preg_match("/[^-]opacity:\s*([a-z0-9.]*|none)/i",$critere_style['style'], $m) ||
-                               preg_match("/^opacity:\s*([a-z0-9.]*|none)/i",$critere_style['style'], $m)) {
-                               $current_style['fill-opacity'] = $m[1];
-                               $current_style['stroke-opacity'] = $m[1];
-                       }
-
-                       $tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
-
-                       if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
-                               $current_style['stroke'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
-                       }
-                       else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                               if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
-                       }
-                       
-                       $tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
-                       
-                       $tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
-                       
-                       $tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
-                       
-                       $tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
-
-                       // mPDF 4.4.003
-                       $tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
-
-                       // mPDF 4.4.003
-                       $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
-
-               }
-               // mPDF 5.7.2
-               if(isset($critere_style['opacity'])){
-                       $current_style['fill-opacity'] = $critere_style['opacity'];
-                       $current_style['stroke-opacity'] = $critere_style['opacity'];
-               }
-
-               if(isset($critere_style['fill'])){
-                       $current_style['fill'] = $critere_style['fill'];
-               }
-
-               if(isset($critere_style['fill-opacity'])){
-                       $current_style['fill-opacity'] = $critere_style['fill-opacity'];
-               }
-
-               if(isset($critere_style['fill-rule'])){
-                       $current_style['fill-rule'] = $critere_style['fill-rule'];
-               }
-
-               if(isset($critere_style['stroke'])){
-                       $current_style['stroke'] = $critere_style['stroke'];
-               }
-
-               if(isset($critere_style['stroke-linecap'])){
-                       $current_style['stroke-linecap'] = $critere_style['stroke-linecap'];
-               }
-
-               if(isset($critere_style['stroke-linejoin'])){
-                       $current_style['stroke-linejoin'] = $critere_style['stroke-linejoin'];
-               }
-
-               if(isset($critere_style['stroke-miterlimit'])){
-                       $current_style['stroke-miterlimit'] = $critere_style['stroke-miterlimit'];
-               }
-
-               if(isset($critere_style['stroke-opacity'])){
-                       $current_style['stroke-opacity'] = $critere_style['stroke-opacity'];
-               }
-
-               if(isset($critere_style['stroke-width'])){
-                       $current_style['stroke-width'] = $critere_style['stroke-width'];
-               }
-
-               // mPDF 4.4.003
-               if(isset($critere_style['stroke-dasharray'])){
-                       $current_style['stroke-dasharray'] = $critere_style['stroke-dasharray'];
-               }
-               if(isset($critere_style['stroke-dashoffset'])){
-                       $current_style['stroke-dashoffset'] = $critere_style['stroke-dashoffset'];
-               }
-
-               // mPDF 4.4.005   Used as indirect setting for currentColor
-               if(isset($critere_style['color']) && $critere_style['color'] != 'inherit'){
-                       $current_style['color'] = $critere_style['color'];
-               }
-
-               return $current_style;
-
-       }
-
-       //
-       //      Cette fonction ecrit le style dans le stream svg.
-       function svgStyle($critere_style, $attribs, $element){
-               $path_style = '';
-               if (substr_count($critere_style['fill'],'url')>0 && $element != 'line'){
-                       //
-                       // couleur degradé
-                       $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['fill']);
-                       if ($id_gradient != $critere_style['fill']) {
-                          if (isset($this->svg_gradient[$id_gradient])) {
-                               $fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
-                               if ($fill_gradient) {   // mPDF 4.4.003
-                                       $path_style = "q ";
-                                       $w = "W";
-                                       $style .= 'N';
-                               }
-                          }
-                       }
-
-               }
-               // mPDF 4.4.005   Used as indirect setting for currentColor
-               else if (strtolower($critere_style['fill']) == 'currentcolor' && $element != 'line'){
-                       $col = $this->mpdf_ref->ConvertColor($critere_style['color']);
-                       if ($col) {
-                               // mPDF 5.0.051
-                               // mPDF 5.3.74
-                               if ($col{0}==5) {       $critere_style['fill-opacity'] = ord($col{4}/100); }    // RGBa
-                               if ($col{0}==6) {       $critere_style['fill-opacity'] = ord($col{5}/100); }    // CMYKa
-                               $path_style .= $this->mpdf_ref->SetFColor($col, true).' ';      // mPDF 5.0.051
-                               $style .= 'F';
-                       }
-               }
-               else if ($critere_style['fill'] != 'none' && $element != 'line'){
-                       $col = $this->mpdf_ref->ConvertColor($critere_style['fill']);
-                       if ($col) {
-                               // mPDF 5.0.051
-                               // mPDF 5.3.74
-                               if ($col{0}==5) {       $critere_style['fill-opacity'] = ord($col{4}/100); }    // RGBa
-                               if ($col{0}==6) {       $critere_style['fill-opacity'] = ord($col{5}/100); }    // CMYKa
-                               $path_style .= $this->mpdf_ref->SetFColor($col, true).' ';      // mPDF 5.0.051
-                               $style .= 'F';
-                       }
-               }
-
-               // mPDF 5.0.040
-               if (substr_count($critere_style['stroke'],'url')>0){
-/*
-                       // Cannot put a gradient on a "stroke" in PDF?
-                       $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['stroke']);
-                       if ($id_gradient != $critere_style['stroke']) {
-                          if (isset($this->svg_gradient[$id_gradient])) {
-                               $fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
-                               if ($fill_gradient) {
-                                       $path_style = "q ";
-                                       $w = "W";
-                                       $style .= 'D';
-                               }
-                          }
-                       }
-*/
-               }
-               // mPDF 4.4.005   Used as indirect setting for currentColor
-               else if (strtolower($critere_style['stroke']) == 'currentcolor'){
-                       $col = $this->mpdf_ref->ConvertColor($critere_style['color']);
-                       if ($col) {
-                               // mPDF 5.0.051
-                               // mPDF 5.3.74
-                               if ($col{0}==5) {       $critere_style['stroke-opacity'] = ord($col{4}/100); }  // RGBa
-                               if ($col{0}==6) {       $critere_style['stroke-opacity'] = ord($col{5}/100); }  // CMYKa
-                               $path_style .= $this->mpdf_ref->SetDColor($col, true).' ';      // mPDF 5.0.051
-                               $style .= 'D';
-                               $lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);
-                               $path_style .= sprintf('%.3F w ',$lw*$this->kp);
-                       }
-               }
-               else if ($critere_style['stroke'] != 'none'){
-                       $col = $this->mpdf_ref->ConvertColor($critere_style['stroke']);
-                       if ($col) {
-                               // mPDF 5.0.051
-                               // mPDF 5.3.74
-                               if ($col{0}==5) {       $critere_style['stroke-opacity'] = ord($col{4}/100); }  // RGBa
-                               if ($col{0}==6) {       $critere_style['stroke-opacity'] = ord($col{5}/100); }  // CMYKa
-                               $path_style .= $this->mpdf_ref->SetDColor($col, true).' ';      // mPDF 5.0.051
-                               $style .= 'D';
-                               $lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);      // mPDF 4.4.003 
-                               $path_style .= sprintf('%.3F w ',$lw*$this->kp);
-                       }
-               }
-
-
-       if ($critere_style['stroke'] != 'none'){
-               if ($critere_style['stroke-linejoin'] == 'miter'){
-                       $path_style .= ' 0 j ';
-               }
-               else if ($critere_style['stroke-linejoin'] == 'round'){
-                       $path_style .= ' 1 j ';
-               }
-               else if ($critere_style['stroke-linejoin'] == 'bevel'){
-                       $path_style .= ' 2 j ';
-               }
-
-               if ($critere_style['stroke-linecap'] == 'butt'){
-                       $path_style .= ' 0 J ';
-               }
-               else if ($critere_style['stroke-linecap'] == 'round'){
-                       $path_style .= ' 1 J ';
-               }
-               else if ($critere_style['stroke-linecap'] == 'square'){
-                       $path_style .= ' 2 J ';
-               }
-
-               if (isset($critere_style['stroke-miterlimit'])){
-                  if ($critere_style['stroke-miterlimit'] == 'none'){
-                  }
-                  else if (preg_match('/^[\d.]+$/',$critere_style['stroke-miterlimit'])) {
-                       $path_style .= sprintf('%.2F M ',$critere_style['stroke-miterlimit']);
-                  }
-               }
-               // mPDF 4.4.003
-               if (isset($critere_style['stroke-dasharray'])){
-                       $off = 0;
-                       $d = preg_split('/[ ,]/',$critere_style['stroke-dasharray']);
-                       if (count($d) == 1 && $d[0]==0) {
-                               $path_style .= '[] 0 d '; 
-                       }
-                       else {
-                         if (count($d) % 2 == 1) { $d = array_merge($d, $d); } // 5, 3, 1 => 5,3,1,5,3,1  OR 3 => 3,3
-                         $arr = '';
-                         for($i=0; $i<count($d); $i+=2) {
-                               $arr .= sprintf('%.3F %.3F ', $d[$i]*$this->kp, $d[$i+1]*$this->kp);
-                         }
-                         if (isset($critere_style['stroke-dashoffset'])){ $off = $critere_style['stroke-dashoffset'] + 0; }
-                         $path_style .= sprintf('[%s] %.3F d ', $arr, $off*$this->kp);
-                       }
-               }
-       }
-
-               // mPDF 4.4.003
-               if ($critere_style['fill-rule']=='evenodd') { $fr = '*'; }
-               else { $fr = ''; }
-
-               // mPDF 4.4.003
-               if (isset($critere_style['fill-opacity'])) {
-                       $opacity = 1;
-                       if ($critere_style['fill-opacity'] == 0) { $opacity = 0; }
-                       else if ($critere_style['fill-opacity'] > 1) { $opacity = 1; }
-                       else if ($critere_style['fill-opacity'] > 0) { $opacity = $critere_style['fill-opacity']; }
-                       else if ($critere_style['fill-opacity'] < 0) { $opacity = 0; }
-                       $gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
-                       $this->mpdf_ref->extgstates[$gs]['fo'] = true;  // mPDF 5.0.039
-                       $path_style .= sprintf(' /GS%d gs ', $gs);
-               }
-
-               // mPDF 4.4.003
-               if (isset($critere_style['stroke-opacity'])) {
-                       $opacity = 1;
-                       if ($critere_style['stroke-opacity'] == 0) { $opacity = 0; }
-                       else if ($critere_style['stroke-opacity'] > 1) { $opacity = 1; }
-                       else if ($critere_style['stroke-opacity'] > 0) { $opacity = $critere_style['stroke-opacity']; }
-                       else if ($critere_style['stroke-opacity'] < 0) { $opacity = 0; }
-                       $gs = $this->mpdf_ref->AddExtGState(array('CA'=>$opacity, 'BM'=>'/Normal'));
-                       $this->mpdf_ref->extgstates[$gs]['fo'] = true;  // mPDF 5.0.039
-                       $path_style .= sprintf(' /GS%d gs ', $gs);
-               }
-
-               switch ($style){
-                       case 'F':
-                               $op = 'f';
-                       break;
-                       case 'FD':
-                               $op = 'B';
-                       break;
-                       case 'ND':
-                               $op = 'S';
-                       break;
-                       case 'D':
-                               $op = 'S';
-                       break;
-                       default:
-                               $op = 'n';
-               }
-
-               // mPDF 5.0
-               $prestyle = $path_style.' ';
-               $poststyle = $w.' '. $op.$fr.' '.$fill_gradient."\n";
-               return array($prestyle,$poststyle);
-
-       }
-
-       //
-       //      fonction retracant les <path />
-       function svgPath($command, $arguments){
-               $path_cmd = '';
-               $newsubpath = false;    // mPDF 4.4.003
-               // mPDF 5.0.039
-               $minl = $this->pathBBox[0];
-               $mint = $this->pathBBox[1];
-               $maxr = $this->pathBBox[2]+$this->pathBBox[0];
-               $maxb = $this->pathBBox[3]+$this->pathBBox[1];
-               // mPDF 5.0.040
-               $start = array($this->xbase, -$this->ybase);
-
-               // mPDF 4.4.003
-               preg_match_all('/[\-^]?[\d.]+(e[\-]?[\d]+){0,1}/i', $arguments, $a, PREG_SET_ORDER);
-
-               //      if the command is a capital letter, the coords go absolute, otherwise relative
-               if(strtolower($command) == $command) $relative = true;
-               else $relative = false;
-
-
-               $ile_argumentow = count($a);
-
-               //      each command may have different needs for arguments [1 to 8]
-
-               switch(strtolower($command)){
-                       case 'm': // move
-                               for($i = 0; $i<$ile_argumentow; $i+=2){
-                                       $x = $a[$i][0]; 
-                                       $y = $a[$i+1][0]; 
-                                       if($relative){
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $pdfx = $x;
-                                               $pdfy =  -$y ;
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-                                       // mPDF 5.0.039
-                                       $minl = min($minl,$pdf_pt['x']);
-                                       $maxr = max($maxr,$pdf_pt['x']);
-                                       $mint = min($mint,-$pdf_pt['y']);
-                                       $maxb = max($maxb,-$pdf_pt['y']);
-                                       if($i == 0) $path_cmd .= sprintf('%.3F %.3F m ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                                       else $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                                       // mPDF 4.4.003  Save start points of subpath
-                                       if ($this->subPathInit) { 
-                                               $this->spxstart = $this->xbase;
-                                               $this->spystart = $this->ybase;
-                                               $this->subPathInit = false;
-                                       }
-                               }
-                       break;
-                       case 'l': // a simple line
-                               for($i = 0; $i<$ile_argumentow; $i+=2){
-                                       $x = ($a[$i][0]); 
-                                       $y = ($a[$i+1][0]); 
-                                       if($relative){
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $pdfx = $x ;
-                                               $pdfy =  -$y ;
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-                                       // mPDF 5.0.039
-                                       $minl = min($minl,$pdf_pt['x']);
-                                       $maxr = max($maxr,$pdf_pt['x']);
-                                       $mint = min($mint,-$pdf_pt['y']);
-                                       $maxb = max($maxb,-$pdf_pt['y']);
-                                       $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                               }
-                       break;
-                       case 'h': // a very simple horizontal line
-                               for($i = 0; $i<$ile_argumentow; $i++){
-                                       $x = ($a[$i][0]); 
-                                       if($relative){
-                                               $y = 0;
-                                               $pdfx = ($this->xbase + $x) ;
-                                               $pdfy = ($this->ybase - $y) ;
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $y = -$this->ybase;
-                                               $pdfx = $x;
-                                               $pdfy =  -$y;
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-                                       // mPDF 5.0.039
-                                       $minl = min($minl,$pdf_pt['x']);
-                                       $maxr = max($maxr,$pdf_pt['x']);
-                                       $mint = min($mint,-$pdf_pt['y']);
-                                       $maxb = max($maxb,-$pdf_pt['y']);
-                                       $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                               }
-                       break;
-                       case 'v': // the simplest line, vertical
-                               for($i = 0; $i<$ile_argumentow; $i++){
-                                       $y = ($a[$i][0]); 
-                                       if($relative){
-                                               $x = 0;
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $x = $this->xbase;
-                                               $pdfx = $x;
-                                               $pdfy =  -$y;
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-                                       // mPDF 5.0.039
-                                       $minl = min($minl,$pdf_pt['x']);
-                                       $maxr = max($maxr,$pdf_pt['x']);
-                                       $mint = min($mint,-$pdf_pt['y']);
-                                       $maxb = max($maxb,-$pdf_pt['y']);
-                                       $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                               }
-                       break;
-                       case 's': // bezier with first vertex equal first control
-                          // mPDF 4.4.003 
-                          if (!($this->lastcommand == 'C' || $this->lastcommand == 'c' || $this->lastcommand == 'S' || $this->lastcommand == 's')) {
-                               $this->lastcontrolpoints = array(0,0);
-                          }
-                               for($i = 0; $i<$ile_argumentow; $i += 4){
-                                       $x1 = $this->lastcontrolpoints[0];
-                                       $y1 = $this->lastcontrolpoints[1];
-                                       $x2 = ($a[$i][0]); 
-                                       $y2 = ($a[$i+1][0]); 
-                                       $x = ($a[$i+2][0]); 
-                                       $y = ($a[$i+3][0]); 
-                                       if($relative){
-                                               $pdfx1 = ($this->xbase + $x1);
-                                               $pdfy1 = ($this->ybase - $y1);
-                                               $pdfx2 = ($this->xbase + $x2);
-                                               $pdfy2 = ($this->ybase - $y2);
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $pdfx1 = $this->xbase + $x1;
-                                               $pdfy1 = $this->ybase -$y1;
-                                               $pdfx2 = $x2;
-                                               $pdfy2 = -$y2;
-                                               $pdfx = $x;
-                                               $pdfy =  -$y;
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
-
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-
-                                       // mPDF 5.0.040
-                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
-                                       $bx = calc_bezier_bbox($start, $curves);
-                                       $minl = min($minl,$bx[0]);
-                                       $maxr = max($maxr,$bx[2]);
-                                       $mint = min($mint,$bx[1]);
-                                       $maxb = max($maxb,$bx[3]);
-
-                                       if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
-                                       {
-                                               $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                                       }
-                                       else
-                                       {
-                                               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
-                                       }
-
-                          }
-                       break;
-                       case 'c': // bezier with second vertex equal second control
-                       for($i = 0; $i<$ile_argumentow; $i += 6){
-                                       $x1 = ($a[$i][0]); 
-                                       $y1 = ($a[$i+1][0]); 
-                                       $x2 = ($a[$i+2][0]); 
-                                       $y2 = ($a[$i+3][0]); 
-                                       $x = ($a[$i+4][0]); 
-                                       $y = ($a[$i+5][0]); 
-
-
-                                       if($relative){
-                                               $pdfx1 = ($this->xbase + $x1);
-                                               $pdfy1 = ($this->ybase - $y1);
-                                               $pdfx2 = ($this->xbase + $x2);
-                                               $pdfy2 = ($this->ybase - $y2);
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $pdfx1 = $x1;
-                                               $pdfy1 = -$y1;
-                                               $pdfx2 = $x2;
-                                               $pdfy2 = -$y2;
-                                               $pdfx = $x;
-                                               $pdfy =  -$y;
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
-                                       // $pdf_pt2 = $this->svg_overflow($pdfx2,$pdfy2);
-                                       // $pdf_pt1 = $this->svg_overflow($pdfx1,$pdfy1);
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-
-                                       // mPDF 5.0.040
-                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
-                                       $bx = calc_bezier_bbox($start, $curves);
-                                       $minl = min($minl,$bx[0]);
-                                       $maxr = max($maxr,$bx[2]);
-                                       $mint = min($mint,$bx[1]);
-                                       $maxb = max($maxb,$bx[3]);
-
-                                       if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
-                                       {
-                                               $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                                       }
-                                       else
-                                       {
-                                               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
-                                       }
-
-                               }
-                       break;
-
-                       case 'q': // bezier quadratic avec point de control
-                               for($i = 0; $i<$ile_argumentow; $i += 4){
-                                       $x1 = ($a[$i][0]); 
-                                       $y1 = ($a[$i+1][0]); 
-                                       $x = ($a[$i+2][0]); 
-                                       $y = ($a[$i+3][0]); 
-                                       if($relative){
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-
-                                               $pdfx1 = ($this->xbase + ($x1*2/3));
-                                               $pdfy1 = ($this->ybase - ($y1*2/3));
-                                               // mPDF 4.4.003 
-                                               $pdfx2 = $pdfx1 + 1/3 *($x); 
-                                               $pdfy2 = $pdfy1 + 1/3 *(-$y) ;
-
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $pdfx = $x;
-                                               $pdfy =  -$y;
-
-                                               $pdfx1 = ($this->xbase+(($x1-$this->xbase)*2/3));
-                                               $pdfy1 = ($this->ybase-(($y1+$this->ybase)*2/3));
-
-                                               $pdfx2 = ($x+(($x1-$x)*2/3));
-                                               $pdfy2 = (-$y-(($y1-$y)*2/3));
-
-                                               // mPDF 4.4.003 
-                                               $pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase); 
-                                               $pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
-
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
-
-                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
-
-                                       // mPDF 5.0.040
-                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
-                                       $bx = calc_bezier_bbox($start, $curves);
-                                       $minl = min($minl,$bx[0]);
-                                       $maxr = max($maxr,$bx[2]);
-                                       $mint = min($mint,$bx[1]);
-                                       $maxb = max($maxb,$bx[3]);
-
-                                       if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
-                                       {
-                                               $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
-                                       }
-                                       else
-                                       {
-                                               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
-                                       }
-                               }
-                       break;
-                       case 't': // bezier quadratic avec point de control simetrique a lancien point de control
-                          // mPDF 4.4.003 
-                          if (!($this->lastcommand == 'Q' || $this->lastcommand == 'q' || $this->lastcommand == 'T' || $this->lastcommand == 't')) {
-                               $this->lastcontrolpoints = array(0,0);
-                          }
-                               for($i = 0; $i<$ile_argumentow; $i += 2){
-                                       $x = ($a[$i][0]); 
-                                       $y = ($a[$i+1][0]); 
-
-                                       $x1 = $this->lastcontrolpoints[0];
-                                       $y1 = $this->lastcontrolpoints[1];
-
-                                       if($relative){
-                                               $pdfx = ($this->xbase + $x);
-                                               $pdfy = ($this->ybase - $y);
-
-                                               $pdfx1 = ($this->xbase + ($x1));        // mPDF 4.4.003 
-                                               $pdfy1 = ($this->ybase - ($y1));        // mPDF 4.4.003 
-                                               // mPDF 4.4.003 
-                                               $pdfx2 = $pdfx1 + 1/3 *($x); 
-                                               $pdfy2 = $pdfy1 + 1/3 *(-$y) ;
-
-                                               $this->xbase += $x;
-                                               $this->ybase += -$y;
-                                       }
-                                       else{
-                                               $pdfx = $x;
-                                               $pdfy =  -$y;
-
-                                               $pdfx1 = ($this->xbase + ($x1));        // mPDF 4.4.003 
-                                               $pdfy1 = ($this->ybase - ($y1));        // mPDF 4.4.003 
-                                               // mPDF 4.4.003 
-                                               $pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase); 
-                                               $pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
-
-                                               $this->xbase = $x;
-                                               $this->ybase = -$y;
-                                       }
-
-                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
-
-                                       // mPDF 5.0.040
-                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
-                                       $bx = calc_bezier_bbox($start, $curves);
-                                       $minl = min($minl,$bx[0]);
-                                       $maxr = max($maxr,$bx[2]);
-                                       $mint = min($mint,$bx[1]);
-                                       $maxb = max($maxb,$bx[3]);
-
-                                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
-                               }
-
-                       break;
-                       case 'a':       // Elliptical arc
-                               for($i = 0; $i<$ile_argumentow; $i += 7){
-                                       $rx = ($a[$i][0]); 
-                                       $ry = ($a[$i+1][0]); 
-                                       $angle = ($a[$i+2][0]); //x-axis-rotation 
-                                       $largeArcFlag = ($a[$i+3][0]); 
-                                       $sweepFlag = ($a[$i+4][0]); 
-                                       $x2 = ($a[$i+5][0]); 
-                                       $y2 = ($a[$i+6][0]); 
-                                       $x1 = $this->xbase;
-                                       $y1 = -$this->ybase;
-                                       if($relative){
-                                               $x2 = $this->xbase + $x2;
-                                               $y2 = -$this->ybase + $y2;
-                                               $this->xbase += ($a[$i+5][0]); 
-                                               $this->ybase += -($a[$i+6][0]); 
-                                       }
-                                       else{
-                                               $this->xbase = $x2;
-                                               $this->ybase = -$y2;
-                                       }
-                                       // mPDF 5.0.039 // mPDF 5.0.040
-                                       list($pcmd, $bounds) = $this->Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag);
-                                       $minl = min($minl,$x2,min($bounds[0]));
-                                       $maxr = max($maxr,$x2,max($bounds[0]));
-                                       $mint = min($mint,$y2,min($bounds[1]));
-                                       $maxb = max($maxb,$y2,max($bounds[1]));
-                                       $path_cmd .= $pcmd;
-
-                               }
-                       break;
-                       case'z':
-                               $path_cmd .= 'h ';
-                               // mPDF 4.4.003
-                               $this->subPathInit = true;
-                               $newsubpath = true;
-                               $this->xbase = $this->spxstart;
-                               $this->ybase = $this->spystart;
-                       break;
-                       default:
-                       break;
-                       }
-
-               if (!$newsubpath) { $this->subPathInit = false; }       // mPDF 4.4.003
-               $this->lastcommand = $command;
-               // mPDF 5.0.039
-               $this->pathBBox[0] = $minl;
-               $this->pathBBox[1] = $mint;
-               $this->pathBBox[2] = $maxr - $this->pathBBox[0];
-               $this->pathBBox[3] = $maxb - $this->pathBBox[1];
-               return $path_cmd;
-
-       }
-
-function Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag) {
-
-       // mPDF 5.0.040
-       $bounds = array(0=>array($x1,$x2),1=>array($y1,$y2));
-       // 1. Treat out-of-range parameters as described in
-       // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
-       // If the endpoints (x1, y1) and (x2, y2) are identical, then this
-       // is equivalent to omitting the elliptical arc segment entirely
-       if ($x1 == $x2 && $y1 == $y2) return array('', $bounds); // mPD 5.0.040
-
-       // If rX = 0 or rY = 0 then this arc is treated as a straight line
-       // segment (a "lineto") joining the endpoints.
-       if ($rx == 0.0 || $ry == 0.0) {
-       //   return array(Lineto(x2, y2), $bounds); // mPD 5.0.040
-       }
-
-       // If rX or rY have negative signs, these are dropped; the absolute
-       // value is used instead.
-       if ($rx<0.0) $rx = -$rx;
-       if ($ry<0.0) $ry = -$ry;
-
-       // 2. convert to center parameterization as shown in
-       // http://www.w3.org/TR/SVG/implnote.html
-       $sinPhi = sin(deg2rad($angle));
-       $cosPhi = cos(deg2rad($angle));
-
-       $x1dash =  $cosPhi * ($x1-$x2)/2.0 + $sinPhi * ($y1-$y2)/2.0;
-       $y1dash = -$sinPhi * ($x1-$x2)/2.0 + $cosPhi * ($y1-$y2)/2.0;
-
-
-       $numerator = $rx*$rx*$ry*$ry - $rx*$rx*$y1dash*$y1dash - $ry*$ry*$x1dash*$x1dash;
-
-       if ($numerator < 0.0) { 
-               //  If rX , rY and are such that there is no solution (basically,
-               //  the ellipse is not big enough to reach from (x1, y1) to (x2,
-               //  y2)) then the ellipse is scaled up uniformly until there is
-               //  exactly one solution (until the ellipse is just big enough).
-
-               // -> find factor s, such that numerator' with rx'=s*rx and
-               //    ry'=s*ry becomes 0 :
-               $s = sqrt(1.0 - $numerator/($rx*$rx*$ry*$ry));
-
-               $rx *= $s;
-               $ry *= $s;
-               $root = 0.0;
-
-       }
-       else {
-               $root = ($largeArcFlag == $sweepFlag ? -1.0 : 1.0) * sqrt( $numerator/($rx*$rx*$y1dash*$y1dash+$ry*$ry*$x1dash*$x1dash) );
-       }
-
-       $cxdash = $root*$rx*$y1dash/$ry;
-       $cydash = -$root*$ry*$x1dash/$rx;
-
-       $cx = $cosPhi * $cxdash - $sinPhi * $cydash + ($x1+$x2)/2.0;
-       $cy = $sinPhi * $cxdash + $cosPhi * $cydash + ($y1+$y2)/2.0;
-
-
-       $theta1 = $this->CalcVectorAngle(1.0, 0.0, ($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry);
-       $dtheta = $this->CalcVectorAngle(($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry, (-$x1dash-$cxdash)/$rx, (-$y1dash-$cydash)/$ry);
-       if (!$sweepFlag && $dtheta>0)
-               $dtheta -= 2.0*M_PI;
-       else if ($sweepFlag && $dtheta<0)
-               $dtheta += 2.0*M_PI;
-
-       // 3. convert into cubic bezier segments <= 90deg
-       $segments = ceil(abs($dtheta/(M_PI/2.0)));
-       $delta = $dtheta/$segments;
-       $t = 8.0/3.0 * sin($delta/4.0) * sin($delta/4.0) / sin($delta/2.0);
-       $coords = array();
-       for ($i = 0; $i < $segments; $i++) {
-               $cosTheta1 = cos($theta1);
-               $sinTheta1 = sin($theta1);
-               $theta2 = $theta1 + $delta;
-               $cosTheta2 = cos($theta2);
-               $sinTheta2 = sin($theta2);
-
-               // a) calculate endpoint of the segment:
-               $xe = $cosPhi * $rx*$cosTheta2 - $sinPhi * $ry*$sinTheta2 + $cx;
-               $ye = $sinPhi * $rx*$cosTheta2 + $cosPhi * $ry*$sinTheta2 + $cy;
-
-               // b) calculate gradients at start/end points of segment:
-               $dx1 = $t * ( - $cosPhi * $rx*$sinTheta1 - $sinPhi * $ry*$cosTheta1);
-               $dy1 = $t * ( - $sinPhi * $rx*$sinTheta1 + $cosPhi * $ry*$cosTheta1);
-
-               $dxe = $t * ( $cosPhi * $rx*$sinTheta2 + $sinPhi * $ry*$cosTheta2);
-               $dye = $t * ( $sinPhi * $rx*$sinTheta2 - $cosPhi * $ry*$cosTheta2);
-
-               // c) draw the cubic bezier:
-               $coords[$i] = array(($x1+$dx1), ($y1+$dy1), ($xe+$dxe), ($ye+$dye), $xe, $ye);
-
-               // do next segment
-               $theta1 = $theta2;
-               $x1 = $xe;
-               $y1 = $ye;
-       }
-       $path = ' ';
-       foreach($coords AS $c) {
-               $cpx1 = $c[0];
-               $cpy1 = $c[1];
-               $cpx2 = $c[2];
-               $cpy2 = $c[3];
-               $x2 = $c[4];
-               $y2 = $c[5];
-               $path .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $cpx1*$this->kp, -$cpy1*$this->kp, $cpx2*$this->kp, -$cpy2*$this->kp, $x2*$this->kp, -$y2*$this->kp)  ."\n";
-
-               // mPDF 5.0.040
-               $bounds[0][] = $c[4];
-               $bounds[1][] = $c[5];
-       }
-       return array($path, $bounds); // mPD 5.0.040
-}
-
-
-       function CalcVectorAngle($ux, $uy, $vx, $vy) {
-               $ta = atan2($uy, $ux);
-               $tb = atan2($vy, $vx);
-               if ($tb >= $ta)
-                       return ($tb-$ta);
-               return (6.28318530718 - ($ta-$tb));
-       }
-
-
-       // mPDF 4.4.003
-       function ConvertSVGSizePixels($size=5,$maxsize='x'){
-       // maxsize in pixels (user units) or 'y' or 'x'
-       // e.g. $w = $this->ConvertSVGSizePixels($arguments['w'],$this->svg_info['w']*(25.4/$this->mpdf_ref->dpi));
-       // usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
-       // Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
-       // For text $maxsize = Fontsize
-       // Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
-
-               if ($maxsize == 'y') { $maxsize = $this->svg_info['h']; }
-               else if ($maxsize == 'x') { $maxsize = $this->svg_info['w']; }
-               $maxsize *= (25.4/$this->mpdf_ref->dpi);        // convert pixels to mm
-               $fontsize=$this->mpdf_ref->FontSize;
-               //Return as pixels
-               $size = $this->mpdf_ref->ConvertSize($size,$maxsize,$fontsize,false) * 1/(25.4/$this->mpdf_ref->dpi);
-               return $size;
-       }
-
-       // mPDF 4.4.003
-       function ConvertSVGSizePts($size=5){
-       // usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
-       // Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
-       // For text $maxsize = Fontsize
-       // Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
-               $maxsize=$this->mpdf_ref->FontSize;
-               //Return as pts
-               $size = $this->mpdf_ref->ConvertSize($size,$maxsize,false,true) * 72/25.4;
-               return $size;
-       }
-
-
-       //
-       //      fonction retracant les <rect />
-       function svgRect($arguments){
-
-               if ($arguments['h']==0 || $arguments['w']==0) { return ''; }    // mPDF 4.4.003
-
-               $x = $this->ConvertSVGSizePixels($arguments['x'],'x');  // mPDF 4.4.003 
-               $y = $this->ConvertSVGSizePixels($arguments['y'],'y');  // mPDF 4.4.003 
-               $h = $this->ConvertSVGSizePixels($arguments['h'],'y');  // mPDF 4.4.003 
-               $w = $this->ConvertSVGSizePixels($arguments['w'],'x');  // mPDF 4.4.003 
-               $rx = $this->ConvertSVGSizePixels($arguments['rx'],'x');        // mPDF 4.4.003 
-               $ry = $this->ConvertSVGSizePixels($arguments['ry'],'y');        // mPDF 4.4.003 
-
-               if ($rx > $w/2) { $rx = $w/2; } // mPDF 4.4.003
-               if ($ry > $h/2) { $ry = $h/2; } // mPDF 4.4.003
-
-               if ($rx>0 and $ry == 0){$ry = $rx;}
-               if ($ry>0 and $rx == 0){$rx = $ry;}
-
-               if ($rx == 0 and $ry == 0){
-                       //      trace un rectangle sans angle arrondit
-                       $path_cmd = sprintf('%.3F %.3F m ', ($x*$this->kp), -($y*$this->kp));
-                       $path_cmd .= sprintf('%.3F %.3F l ', (($x+$w)*$this->kp), -($y*$this->kp));
-                       $path_cmd .= sprintf('%.3F %.3F l ', (($x+$w)*$this->kp), -(($y+$h)*$this->kp));
-                       $path_cmd .= sprintf('%.3F %.3F l ', ($x)*$this->kp, -(($y+$h)*$this->kp));
-                       $path_cmd .= sprintf('%.3F %.3F l h ', ($x*$this->kp), -($y*$this->kp));
-
-                       
-               }
-               else {
-                       //      trace un rectangle avec les arrondit
-                       //      les points de controle du bezier sont deduis grace a la constante kappa
-                       $kappa = 4*(sqrt(2)-1)/3;
-
-                       $kx = $kappa*$rx;
-                       $ky = $kappa*$ry;
-
-                       $path_cmd = sprintf('%.3F %.3F m ', ($x+$rx)*$this->kp, -$y*$this->kp);
-                       $path_cmd .= sprintf('%.3F %.3F l ', ($x+($w-$rx))*$this->kp, -$y*$this->kp);
-                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x+($w-$rx+$kx))*$this->kp, -$y*$this->kp, ($x+$w)*$this->kp, (-$y+(-$ry+$ky))*$this->kp, ($x+$w)*$this->kp, (-$y+(-$ry))*$this->kp );
-                       $path_cmd .= sprintf('%.3F %.3F l ', ($x+$w)*$this->kp, (-$y+(-$h+$ry))*$this->kp);
-                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x+$w)*$this->kp, (-$y+(-$h-$ky+$ry))*$this->kp, ($x+($w-$rx+$kx))*$this->kp, (-$y+(-$h))*$this->kp, ($x+($w-$rx))*$this->kp, (-$y+(-$h))*$this->kp );
-
-                       $path_cmd .= sprintf('%.3F %.3F l ', ($x+$rx)*$this->kp, (-$y+(-$h))*$this->kp);
-                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x+($rx-$kx))*$this->kp, (-$y+(-$h))*$this->kp, $x*$this->kp, (-$y+(-$h-$ky+$ry))*$this->kp, $x*$this->kp, (-$y+(-$h+$ry))*$this->kp );
-                       $path_cmd .= sprintf('%.3F %.3F l ', $x*$this->kp, (-$y+(-$ry))*$this->kp);
-                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c h ', $x*$this->kp, (-$y+(-$ry+$ky))*$this->kp, ($x+($rx-$kx))*$this->kp, -$y*$this->kp, ($x+$rx)*$this->kp, -$y*$this->kp );
-
-
-               }
-               return $path_cmd;
-       }
-
-       //
-       //      fonction retracant les <ellipse /> et <circle />
-       //       le cercle est tracé grave a 4 bezier cubic, les poitn de controles
-       //      sont deduis grace a la constante kappa * rayon
-       function svgEllipse($arguments){
-               if ($arguments['rx']==0 || $arguments['ry']==0) { return ''; }  // mPDF 4.4.003
-
-               $kappa = 4*(sqrt(2)-1)/3;
-
-               $cx = $this->ConvertSVGSizePixels($arguments['cx'],'x');        // mPDF 4.4.003 
-               $cy = $this->ConvertSVGSizePixels($arguments['cy'],'y');        // mPDF 4.4.003 
-               $rx = $this->ConvertSVGSizePixels($arguments['rx'],'x');        // mPDF 4.4.003 
-               $ry = $this->ConvertSVGSizePixels($arguments['ry'],'y');        // mPDF 4.4.003 
-
-               $x1 = $cx;
-               $y1 = -$cy+$ry;
-
-               $x2 = $cx+$rx;
-               $y2 = -$cy;
-
-               $x3 = $cx;
-               $y3 = -$cy-$ry;
-
-               $x4 = $cx-$rx;
-               $y4 = -$cy;
-
-               $path_cmd = sprintf('%.3F %.3F m ', $x1*$this->kp, $y1*$this->kp);
-               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x1+($rx*$kappa))*$this->kp, $y1*$this->kp, $x2*$this->kp, ($y2+($ry*$kappa))*$this->kp, $x2*$this->kp, $y2*$this->kp);
-               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x2*$this->kp, ($y2-($ry*$kappa))*$this->kp, ($x3+($rx*$kappa))*$this->kp, $y3*$this->kp, $x3*$this->kp, $y3*$this->kp);
-               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x3-($rx*$kappa))*$this->kp, $y3*$this->kp, $x4*$this->kp, ($y4-($ry*$kappa))*$this->kp, $x4*$this->kp, $y4*$this->kp);
-               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x4*$this->kp, ($y4+($ry*$kappa))*$this->kp, ($x1-($rx*$kappa))*$this->kp, $y1*$this->kp, $x1*$this->kp, $y1*$this->kp);
-               $path_cmd .= 'h ';
-
-               return $path_cmd;
-
-       }
-
-       //
-       //      fonction retracant les <polyline /> et les <line />
-       function svgPolyline($arguments,$ispolyline=true){
-               if ($ispolyline) {
-                       $xbase = $arguments[0] ;
-                       $ybase = - $arguments[1] ;
-               }
-               else {
-                       if ($arguments[0]==$arguments[2] && $arguments[1]==$arguments[3]) { return ''; }        // mPDF 4.4.003  Zero length line
-                       $xbase = $this->ConvertSVGSizePixels($arguments[0],'x');        // mPDF 4.4.003 
-                       $ybase = - $this->ConvertSVGSizePixels($arguments[1],'y');      // mPDF 4.4.003 
-               }
-               $path_cmd = sprintf('%.3F %.3F m ', $xbase*$this->kp, $ybase*$this->kp);
-               for ($i = 2; $i<count($arguments);$i += 2) {
-                       if ($ispolyline) {
-                               $tmp_x = $arguments[$i] ;
-                               $tmp_y = - $arguments[($i+1)] ;
-                       }
-                       else {
-                               $tmp_x = $this->ConvertSVGSizePixels($arguments[$i],'x') ;      // mPDF 4.4.003 
-                               $tmp_y = - $this->ConvertSVGSizePixels($arguments[($i+1)],'y') ;        // mPDF 4.4.003 
-                       }
-                       $path_cmd .= sprintf('%.3F %.3F l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
-               }
-
-       //      $path_cmd .= 'h '; // ?? In error - don't close subpath here
-               return $path_cmd;
-
-       }
-
-       //
-       //      fonction retracant les <polygone />
-       function svgPolygon($arguments){
-               $xbase = $arguments[0] ;
-               $ybase = - $arguments[1] ;
-               $path_cmd = sprintf('%.3F %.3F m ', $xbase*$this->kp, $ybase*$this->kp);
-               for ($i = 2; $i<count($arguments);$i += 2) {
-                       $tmp_x = $arguments[$i] ;
-                       $tmp_y = - $arguments[($i+1)] ;
-
-                       $path_cmd .= sprintf('%.3F %.3F l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
-
-               }
-               $path_cmd .= sprintf('%.3F %.3F l ', $xbase*$this->kp, $ybase*$this->kp);
-               $path_cmd .= 'h ';
-               return $path_cmd;
-
-       }
-
-       //
-       //      write string to image
-       function svgText() {
-               // $tmp = count($this->txt_style)-1;
-               $current_style = array_pop($this->txt_style);
-               $style = '';
-               $render = -1;
-               if(isset($this->txt_data[2]))
-               {
-                       // select font
-                       $style .= ($current_style['font-weight'] == 'bold')?'B':'';
-                       $style .= ($current_style['font-style'] == 'italic')?'I':'';
-                       $size = $current_style['font-size']*$this->kf;  // mPDF 5.0.039
-
-                       // mPDF 5.0
-                       $current_style['font-family'] = $this->mpdf_ref->SetFont($current_style['font-family'],$style,$size,false);
-                       $this->mpdf_ref->CurrentFont['fo'] = true;      // mPDF 5.0.039
-
-
-                       // mPDF 5.0.041
-                       $opacitystr = '';
-                       $opacity = 1;
-                       if (isset($current_style['fill-opacity'])) {
-                               if ($current_style['fill-opacity'] == 0) { $opacity = 0; }
-                               else if ($current_style['fill-opacity'] > 1) { $opacity = 1; }
-                               else if ($current_style['fill-opacity'] > 0) { $opacity = $current_style['fill-opacity']; }
-                               else if ($current_style['fill-opacity'] < 0) { $opacity = 0; }
-                       }
-                       $gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
-                       $this->mpdf_ref->extgstates[$gs]['fo'] = true;  // mPDF 5.0.039
-                       $opacitystr = sprintf(' /GS%d gs ', $gs);
-
-                       // mPDF 5.0.051
-                       $fillstr = '';
-                       if (isset($current_style['fill']) && $current_style['fill']!='none') {
-                               $col = $this->mpdf_ref->ConvertColor($current_style['fill']);
-                               // mPDF 5.0.051
-                               $fillstr = $this->mpdf_ref->SetFColor($col, true);
-                               $render = "0";  // Fill (only)
-                       }
-                       $strokestr = '';
-                       if (isset($current_style['stroke-width']) && $current_style['stroke-width']>0 && $current_style['stroke']!='none') {
-                               $scol = $this->mpdf_ref->ConvertColor($current_style['stroke']);
-                               if ($scol) { 
-                                       $strokestr .= $this->mpdf_ref->SetDColor($scol, true).' ';      // mPDF 5.0.051
-                               }
-                               $linewidth = $this->ConvertSVGSizePixels($current_style['stroke-width']);
-                               if ($linewidth > 0) { 
-                                       $strokestr .= sprintf('%.3F w 1 J 1 j ',$linewidth*$this->kp); 
-                                       if ($render == -1) { $render = "1"; }   // stroke only
-                                       else { $render = "2"; }         // fill and stroke
-                               }
-                       }
-                       if ($render == -1) { return ''; }       
-
-                       $x = $this->ConvertSVGSizePixels($this->txt_data[0],'x');       // mPDF 4.4.003 
-                       $y = $this->ConvertSVGSizePixels($this->txt_data[1],'y');       // mPDF 4.4.003
-                       $txt = $this->txt_data[2];
-
-                       // mPDF 4.4.003
-                       $txt = preg_replace('/\f/','',$txt); 
-                       $txt = preg_replace('/\r/','',$txt); 
-                       $txt = preg_replace('/\n/',' ',$txt); 
-                       $txt = preg_replace('/\t/',' ',$txt); 
-                       $txt = preg_replace("/[ ]+/u",' ',$txt);
-
-                       $txt = trim($txt);
-
-                       $txt = $this->mpdf_ref->purify_utf8_text($txt);
-                       if ($this->mpdf_ref->text_input_as_HTML) {
-                               $txt = $this->mpdf_ref->all_entities_to_utf8($txt);
-                       }
-
-                       // mPDF 5.0
-                       if ($this->mpdf_ref->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mpdf_ref->mb_enc,'UTF-8'); }
-                       if (preg_match("/([".$this->mpdf_ref->pregRTLchars."])/u", $txt)) { $this->mpdf_ref->biDirectional = true; } // mPDF 4.4.003
-
-                       $this->mpdf_ref->magic_reverse_dir($txt, true, 'ltr');  // mPDF 5.0.054
-                       $this->mpdf_ref->ConvertIndic($txt);
-
-
-                       if ($current_style['text-anchor']=='middle') {
-                               $tw = $this->mpdf_ref->GetStringWidth($txt)*_MPDFK/2;   // mPDF 4.4.003 // mPDF 5.4.09
-                       }
-                       else if ($current_style['text-anchor']=='end') {
-                               $tw = $this->mpdf_ref->GetStringWidth($txt)*_MPDFK;     // mPDF 4.4.003 // mPDF 5.4.09
-                       }
-                       else $tw = 0;
-
-                       if (!$this->mpdf_ref->usingCoreFont) {
-                               $this->mpdf_ref->UTF8StringToArray($txt);       // mPDF 5.0 adds chars to subset list
-                               $txt= $this->mpdf_ref->UTF8ToUTF16BE($txt, false);
-                       }
-                       $txt='('.$this->mpdf_ref->_escape($txt).')'; 
-                       $this->mpdf_ref->CurrentFont['used']= true;
-
-                       $pdfx = $x - $tw/$this->kp;     // mPDF 4.4.009
-                       $pdfy =  -$y  ;
-                       $xbase = $x;
-                       $ybase = -$y;
-
-                       // mPDF 5.7.2
-                       $path_cmd =  sprintf('q BT /F%d %.3F Tf %s %.3F %.3F Td %s Tr %s %s %s Tj ET Q ',$this->mpdf_ref->CurrentFont['i'], $this->mpdf_ref->FontSizePt, $opacitystr, $pdfx*$this->kp,$pdfy*$this->kp,$render,$fillstr,$strokestr,$txt)."\n";
-                       unset($this->txt_data[0], $this->txt_data[1],$this->txt_data[2]);
-
-                       if (isset($current_style['font-size-parent'])) {
-                               $this->mpdf_ref->SetFontSize($current_style['font-size-parent']);
-                       }
-               }
-               else
-               {
-                       return ' ';
-               }
-               return $path_cmd;
-       }
-
-
-function svgDefineTxtStyle($critere_style)
-{
-               // get copy of current/default txt style, and modify it with supplied attributes
-               $tmp = count($this->txt_style)-1;
-               $current_style = $this->txt_style[$tmp];
-               if (isset($critere_style['style'])){
-                       if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
-                               $current_style['fill'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
-                       }
-                       else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);
-                               if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
-                       }
-
-                       $tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
-
-                       if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
-                               $current_style['stroke'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
-                       }
-                       else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                               if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
-                       }
-                       
-                       $tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
-                       
-                       $tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
-                       
-                       $tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
-                       
-                       $tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
-
-                       // mPDF 5.7.2
-                       $tmp = preg_replace("/(.*)font-family:\s*([a-z0-9.\"' ,\-]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $critere_style['font-family'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)font-size:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $critere_style['font-size'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)font-weight:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $critere_style['font-weight'] = $tmp;}
-
-                       $tmp = preg_replace("/(.*)font-style:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
-                       if ($tmp != $critere_style['style']){ $critere_style['font-style'] = $tmp;}
-
-               }
-
-               if (isset($critere_style['font'])){
-
-                       // [ [ <'font-style'> || <'font-variant'> || <'font-weight'> ]?<'font-size'> [ / <'line-height'> ]? <'font-family'> ]
-
-                       $tmp = preg_replace("/(.*)(italic|oblique)(.*)/i","$2",$critere_style['font']);
-                       if ($tmp != $critere_style['font']){ 
-                               if($tmp == 'oblique'){
-                                       $tmp = 'italic';
-                               }
-                               $current_style['font-style'] = $tmp;
-                       }
-                       $tmp = preg_replace("/(.*)(bold|bolder)(.*)/i","$2",$critere_style['font']);
-                       if ($tmp != $critere_style['font']){ 
-                               if($tmp == 'bolder'){
-                                       $tmp = 'bold';
-                               }
-                               $current_style['font-weight'] = $tmp;
-                       }
-                       
-                       // select digits not followed by percent sign nor preceeded by forward slash
-                       $tmp = preg_replace("/(.*)\b(\d+)[\b|\/](.*)/i","$2",$critere_style['font']);
-                       if ($tmp != $critere_style['font']){ 
-                               $current_style['font-size'] = $this->ConvertSVGSizePts($tmp); 
-                               $this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
-                       }
-                       
-               }
-
-               if(isset($critere_style['fill'])){
-                       $current_style['fill'] = $critere_style['fill'];
-               }
-               if(isset($critere_style['stroke'])){
-                       $current_style['stroke'] = $critere_style['stroke'];
-               }
-               if(isset($critere_style['stroke-width'])){
-                       $current_style['stroke-width'] = $critere_style['stroke-width'];
-               }
-               
-               if(isset($critere_style['font-style'])){
-                       if(strtolower($critere_style['font-style']) == 'oblique') 
-                       {
-                               $critere_style['font-style'] = 'italic';
-                       }
-                       $current_style['font-style'] = $critere_style['font-style'];
-               }
-               
-               if(isset($critere_style['font-weight'])){
-                       if(strtolower($critere_style['font-weight']) == 'bolder')
-                       {
-                               $critere_style['font-weight'] = 'bold';
-                       }
-                       $current_style['font-weight'] = $critere_style['font-weight'];
-               }
-               
-               if(isset($critere_style['font-size'])){
-                       // mPDF 5.4.12
-                       if (strpos($critere_style['font-size'], '%')!==false) {
-                               $current_style['font-size-parent'] = $current_style['font-size'];
-                       }
-                       $current_style['font-size'] = $this->ConvertSVGSizePts($critere_style['font-size']);
-                       $this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
-               }
-
-               if(isset($critere_style['font-family'])){
-                       $v = $critere_style['font-family'];
-                       $aux_fontlist = explode(",",$v);
-                       $found = 0;
-                       foreach($aux_fontlist AS $f) {
-                               $fonttype = trim($f);
-                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
-                               $fonttype = preg_replace('/ /','',$fonttype);
-                               $v = strtolower(trim($fonttype));
-                               if (isset($this->mpdf_ref->fonttrans[$v]) && $this->mpdf_ref->fonttrans[$v]) { $v = $this->mpdf_ref->fonttrans[$v]; }
-                               if ((!$this->mpdf_ref->usingCoreFont && in_array($v,$this->mpdf_ref->available_unifonts)) || 
-                                       ($this->mpdf_ref->usingCoreFont && in_array($v,array('courier','times','helvetica','arial'))) || 
-                                       in_array($v, array('sjis','uhc','big5','gb'))) { 
-                                       $current_style['font-family'] = $v; 
-                                       $found = 1;
-                                       break;
-                               }
-                       }
-                       if (!$found) {
-                          foreach($aux_fontlist AS $f) {
-                               $fonttype = trim($f);
-                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
-                               $fonttype = preg_replace('/ /','',$fonttype);
-                               $v = strtolower(trim($fonttype));
-                               if (isset($this->mpdf_ref->fonttrans[$v]) && $this->mpdf_ref->fonttrans[$v]) { $v = $this->mpdf_ref->fonttrans[$v]; }
-                               if (in_array($v,$this->mpdf_ref->sans_fonts) || in_array($v,$this->mpdf_ref->serif_fonts) || in_array($v,$this->mpdf_ref->mono_fonts) ) { 
-                                       $current_style['font-family'] = $v; 
-                                       break;
-                               }
-                          }
-                       }
-               }
-       
-               if(isset($critere_style['text-anchor'])){
-                       $current_style['text-anchor'] = $critere_style['text-anchor'];
-               }
-       
-       // add current style to text style array (will remove it later after writing text to svg_string)
-       array_push($this->txt_style,$current_style);
-}
-
-
-
-       //
-       //      fonction ajoutant un gradient
-       function svgAddGradient($id,$array_gradient){
-
-               $this->svg_gradient[$id] = $array_gradient;
-
-       }
-       //
-       //      Ajoute une couleur dans le gradient correspondant
-
-       //
-       //      function ecrivant dans le svgstring
-       function svgWriteString($content){
-
-               $this->svg_string .= $content;
-
-       }
-
-
-
-       //      analise le svg et renvoie aux fonctions precedente our le traitement
-       function ImageSVG($data){
-               $this->svg_info = array();
-
-               // mPDF 4.4.006
-               if (preg_match('/<!ENTITY/si',$data)) {
-                       // Get User-defined entities
-                       preg_match_all('/<!ENTITY\s+([a-z]+)\s+\"(.*?)\">/si',$data, $ent);
-                       // Replace entities
-                       for ($i=0; $i<count($ent[0]); $i++) {
-                               $data = preg_replace('/&'.preg_quote($ent[1][$i],'/').';/is', $ent[2][$i], $data);
-                       }
-               }
-
-
-               if (preg_match('/xlink:href=/si',$data)) {
-                       // GRADIENTS
-                       // Get links
-                       preg_match_all('/(<(linearGradient|radialgradient)[^>]*)xlink:href=["\']#(.*?)["\'](.*?)\/>/si',$data, $links);
-                       if (count($links[0])) { $links[5] = array(); }
-                       // Delete links from data - keeping in $links
-                       for ($i=0; $i<count($links[0]); $i++) {
-                               $links[5][$i] = 'tmpLink'.RAND(100000,9999999);
-                               $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', '<MYLINKS'.$links[5][$i].'>' , $data);
-                       }
-                       // Get targets
-                       preg_match_all('/<(linearGradient|radialgradient)([^>]*)id=["\'](.*?)["\'](.*?)>(.*?)<\/(linearGradient|radialgradient)>/si',$data, $m);
-                       $targets = array();
-                       $stops = array();
-                       // keeping in $targets
-                       for ($i=0; $i<count($m[0]); $i++) {
-                               $stops[$m[3][$i]] = $m[5][$i];
-                       }
-                       // Add back links this time as targets (gradients)
-                       for ($i=0; $i<count($links[0]); $i++) {
-                               $def = $links[1][$i] .' '.$links[4][$i].'>'. $stops[$links[3][$i]].'</'.$links[2][$i] .'>' ;
-                               $data = preg_replace('/<MYLINKS'.$links[5][$i].'>/is', $def , $data);
-                       }
-
-                       // mPDF 5.7.2
-                       // <USE>
-                       preg_match_all('/<use ([^>]*)xlink:href=["\']#([^>]*?)["\']([^>]*)\/>/si',$data, $links);
-                       for ($i=0; $i<count($links[0]); $i++) {
-
-                               // Get the item to use from defs
-                               $insert = '';
-                               if (preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\'][^>]*\/>/si',$data, $m)) {
-                                       $insert = $m[0]; 
-                               }
-                               if (!$insert && preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\']/si',$data, $m)) {
-
-                                       if (preg_match('/<'.$m[1].'[^>]*id=["\']'.$links[2][$i].'["\'][^>]*>.*?<\/'.$m[1].'>/si',$data, $m)) {
-                                               $insert = $m[0]; 
-                                       }
-                               }
-
-                               if ($insert) {
-
-                                       $inners = $links[1][$i] . ' ' . $links[3][$i];
-                                       // Change x,y coords to translate()
-                                       if (preg_match('/y=["\']([^>]*?)["\']/', $inners, $m)) { $y = $m[1]; }
-                                       else { $y = 0; }
-                                       if (preg_match('/x=["\']([^>]*?)["\']/', $inners, $m)) { $x = $m[1]; }
-                                       else { $x = 0; }
-                                       if ($x || $y) {
-                                               $inners = preg_replace('/(y|x)=["\']([^>]*?)["\']/', '', $inners);
-                                               if (preg_match('/transform=["\']([^>]*?)["\']/', $inners, $m)) {
-                                                       if (preg_match('/translate\(\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*\)/', $m[1], $mm)) {
-                                                               $transform = $m[1];     // transform="...."
-                                                               $x += $mm[1];
-                                                               $y += $mm[2];
-                                                               $transform = preg_replace('/'.preg_quote($mm[0],'/').'/', '', $transform);
-                                                               $transform = 'transform="'.$transform.' translate('.$x.', '.$y.')"';
-                                                               $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', $transform, $inners);
-                                                       }
-                                                       else {
-                                                               $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', 'transform="'.$m[1].' translate('.$x.', '.$y.')"', $inners);
-                                                       }
-                                               }
-                                               else {
-                                                       $inners .= ' transform="translate('.$x.', '.$y.')"';
-                                               }
-                                       }
-                               }
-                               $replacement = '<g '.$inners.'>'.$insert.'</g>';
-                               $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', $replacement, $data);
-                       }
-                       preg_match_all('/<use ([^>]*)xlink:href=["\']#([^>]*?)["\']([^>]*)>\s*<\/use>/si',$data, $links);
-                       for ($i=0; $i<count($links[0]); $i++) {
-
-                               // Get the item to use from defs
-                               $insert = '';
-                               if (preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\'][^>]*\/>/si',$data, $m)) {
-                                       $insert = $m[0]; 
-                               }
-                               if (!$insert && preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\']/si',$data, $m)) {
-
-                                       if (preg_match('/<'.$m[1].'[^>]*id=["\']'.$links[2][$i].'["\'][^>]*>.*?<\/'.$m[1].'>/si',$data, $m)) {
-                                               $insert = $m[0]; 
-                                       }
-                               }
-
-                               if ($insert) {
-
-                                       $inners = $links[1][$i] . ' ' . $links[3][$i];
-                                       // Change x,y coords to translate()
-                                       if (preg_match('/y=["\']([^>]*?)["\']/', $inners, $m)) { $y = $m[1]; }
-                                       else { $y = 0; }
-                                       if (preg_match('/x=["\']([^>]*?)["\']/', $inners, $m)) { $x = $m[1]; }
-                                       else { $x = 0; }
-                                       if ($x || $y) {
-                                               $inners = preg_replace('/(y|x)=["\']([^>]*?)["\']/', '', $inners);
-                                               if (preg_match('/transform=["\']([^>]*?)["\']/', $inners, $m)) {
-                                                       if (preg_match('/translate\(\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*\)/', $m[1], $mm)) {
-                                                               $transform = $m[1];     // transform="...."
-                                                               $x += $mm[1];
-                                                               $y += $mm[2];
-                                                               $transform = preg_replace('/'.preg_quote($mm[0],'/').'/', '', $transform);
-                                                               $transform = 'transform="'.$transform.' translate('.$x.', '.$y.')"';
-                                                               $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', $transform, $inners);
-                                                       }
-                                                       else {
-                                                               $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', 'transform="'.$m[1].' translate('.$x.', '.$y.')"', $inners);
-                                                       }
-                                               }
-                                               else {
-                                                       $inners .= ' transform="translate('.$x.', '.$y.')"';
-                                               }
-                                       }
-                                       $replacement = '<g '.$inners.'>'.$insert.'</g>';
-                                       $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', $replacement, $data);
-
-
-                               }
-                       }
-               }
-               // Removes <pattern>
-               $data = preg_replace('/<pattern.*?<\/pattern>/is', '', $data);
-               // Removes <marker>
-               $data = preg_replace('/<marker.*?<\/marker>/is', '', $data);
-
-               $this->svg_info['data'] = $data;
-
-               $this->svg_string = '';
-               
-               //
-               //      chargement unique des fonctions
-               if(!function_exists("xml_svg2pdf_start")){
-
-                       function xml_svg2pdf_start($parser, $name, $attribs){
-                               //
-                               //      definition
-                               global $svg_class, $last_gradid;
-
-                               // mPDF 5.7.2
-                               if (strtolower($name) == 'lineargradient'){
-                                               $tmp_gradient = array(
-                                                       'type' => 'linear',
-                                                       'info' => array(
-                                                               'x1' => $attribs['x1'],
-                                                               'y1' => $attribs['y1'],
-                                                               'x2' => $attribs['x2'],
-                                                               'y2' => $attribs['y2']
-                                                       ),
-                                                       'transform' => $attribs['gradientTransform'],
-                                                       'units' => $attribs['gradientUnits'],
-                                                       'spread' => $attribs['spreadMethod'],
-                                                       'color' => array()
-                                               );
-                                               $last_gradid = $attribs['id'];
-                                               $svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
-                                       return;
-                               }
-                               else if (strtolower($name) == 'radialgradient'){
-                                               $tmp_gradient = array(
-                                                       'type' => 'radial',
-                                                       'info' => array(
-                                                               'x0' => $attribs['cx'],
-                                                               'y0' => $attribs['cy'],
-                                                               'x1' => $attribs['fx'],
-                                                               'y1' => $attribs['fy'],
-                                                               'r' => $attribs['r']
-                                                       ),
-                                                       'transform' => $attribs['gradientTransform'],
-                                                       'units' => $attribs['gradientUnits'],
-                                                       'spread' => $attribs['spreadMethod'],
-                                                       'color' => array()
-                                               );
-                                               $last_gradid = $attribs['id'];
-                                               $svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
-                                       return;
-                               }
-                               else if (strtolower($name) == 'stop'){
-                                               if (!$last_gradid) break;
-                                               if (isset($attribs['style']) AND preg_match('/stop-color:\s*([^;]*)/i',$attribs['style'],$m)) {
-                                                       $color = trim($m[1]);
-                                               } else if (isset($attribs['stop-color'])) {
-                                                       $color = $attribs['stop-color'];
-                                               }
-                                               $col = $svg_class->mpdf_ref->ConvertColor($color);
-
-                                               if ($col{0}==3 || $col{0}==5) { // RGB
-                                                       $color_final = sprintf('%.3F %.3F %.3F',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255);
-                                                       $svg_class->svg_gradient[$last_gradid]['colorspace']='RGB';
-                                               }
-                                               else if ($col{0}==4 || $col{0}==6) {    // CMYK
-                                                       $color_final = sprintf('%.3F %.3F %.3F %.3F',ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100);
-                                                       $svg_class->svg_gradient[$last_gradid]['colorspace']='CMYK';
-                                               }
-                                               else if ($col{0}==1) {  // Grayscale
-                                                       $color_final = sprintf('%.3F',ord($col{1})/255);
-                                                       $svg_class->svg_gradient[$last_gradid]['colorspace']='Gray';
-                                               }
-
-                                               $stop_opacity = 1;
-                                               if (isset($attribs['style']) AND preg_match('/stop-opacity:\s*([0-9.]*)/i',$attribs['style'],$m)) {
-                                                       $stop_opacity = $m[1];
-                                               } else if (isset($attribs['stop-opacity'])) {
-                                                       $stop_opacity = $attribs['stop-opacity'];
-                                               }
-                                               else if ($col{0}==5) {  // RGBa
-                                                       $stop_opacity = ord($col{4}/100);
-                                               }
-                                               else if ($col{0}==6) {  // CMYKa
-                                                       $stop_opacity = ord($col{5}/100);
-                                               }
-
-                                               $tmp_color = array(
-                                                       'color' => $color_final,
-                                                       'offset' => $attribs['offset'],
-                                                       'opacity' => $stop_opacity
-                                               );
-                                               array_push($svg_class->svg_gradient[$last_gradid]['color'],$tmp_color);
-                                       return;
-                               }
-                               if ($svg_class->inDefs) { return; }
-
-                               $svg_class->xbase = 0;
-                               $svg_class->ybase = 0;
-                               switch (strtolower($name)){
-
-                               // mPDF 5.0.039 - Don't output stuff inside <defs>
-                               case 'defs':
-                                       $svg_class->inDefs = true;
-                                       return;
-
-                               case 'svg':
-                                       $svg_class->svgOffset($attribs);
-                                       break;
-
-                               case 'path':
-                                       $path = $attribs['d'];
-                                       // mPDF 5.6.65
-                                       preg_match_all('/([MZLHVCSQTAmzlhvcsqta])([eE ,\-.\d]+)*/', $path, $commands, PREG_SET_ORDER);
-                                       $path_cmd = '';
-                                       $svg_class->subPathInit = true;
-                                       // mPDF 5.0.039
-                                       $svg_class->pathBBox = array(999999,999999,-999999,-999999);
-                                       foreach($commands as $c){
-                                               if(count($c)==3 || $c[2]==''){
-                                                       list($tmp, $command, $arguments) = $c;
-                                               }
-                                               else{
-                                                       list($tmp, $command) = $c;
-                                                       $arguments = '';
-                                               }
-
-                                               $path_cmd .= $svg_class->svgPath($command, $arguments);
-                                       }
-                                       // mPDF 5.0.039
-                                       if ($svg_class->pathBBox[2]==-1999998) { $svg_class->pathBBox[2] = 100; }
-                                       if ($svg_class->pathBBox[3]==-1999998) { $svg_class->pathBBox[3] = 100; }
-                                       if ($svg_class->pathBBox[0]==999999) { $svg_class->pathBBox[0] = 0; }
-                                       if ($svg_class->pathBBox[1]==999999) { $svg_class->pathBBox[1] = 0; }
-                                       $critere_style = $attribs;
-                                       unset($critere_style['d']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'rect':
-                                       if (!isset($attribs['x'])) {$attribs['x'] = 0;}
-                                       if (!isset($attribs['y'])) {$attribs['y'] = 0;}
-                                       if (!isset($attribs['rx'])) {$attribs['rx'] = 0;}
-                                       if (!isset($attribs['ry'])) {$attribs['ry'] = 0;}
-                                       $arguments = array(
-                                               'x' => $attribs['x'],
-                                               'y' => $attribs['y'],
-                                               'w' => $attribs['width'],
-                                               'h' => $attribs['height'],
-                                               'rx' => $attribs['rx'],
-                                               'ry' => $attribs['ry']
-                                       );
-                                       $path_cmd =  $svg_class->svgRect($arguments);
-                                       $critere_style = $attribs;
-                                       unset($critere_style['x'],$critere_style['y'],$critere_style['rx'],$critere_style['ry'],$critere_style['height'],$critere_style['width']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'circle':
-                                       if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
-                                       if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
-                                       $arguments = array(
-                                               'cx' => $attribs['cx'],
-                                               'cy' => $attribs['cy'],
-                                               'rx' => $attribs['r'],
-                                               'ry' => $attribs['r']
-                                       );
-                                       $path_cmd =  $svg_class->svgEllipse($arguments);
-                                       $critere_style = $attribs;
-                                       unset($critere_style['cx'],$critere_style['cy'],$critere_style['r']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'ellipse':
-                                       if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
-                                       if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
-                                       $arguments = array(
-                                               'cx' => $attribs['cx'],
-                                               'cy' => $attribs['cy'],
-                                               'rx' => $attribs['rx'],
-                                               'ry' => $attribs['ry']
-                                       );
-                                       $path_cmd =  $svg_class->svgEllipse($arguments);
-                                       $critere_style = $attribs;
-                                       unset($critere_style['cx'],$critere_style['cy'],$critere_style['rx'],$critere_style['ry']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'line':
-                                       $arguments = array($attribs['x1'],$attribs['y1'],$attribs['x2'],$attribs['y2']);
-                                       $path_cmd =  $svg_class->svgPolyline($arguments,false); //  mPDF 4.4.003
-                                       $critere_style = $attribs;
-                                       unset($critere_style['x1'],$critere_style['y1'],$critere_style['x2'],$critere_style['y2']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'polyline':
-                                       $path = $attribs['points'];
-                                       preg_match_all('/[0-9\-\.]*/',$path, $tmp, PREG_SET_ORDER);
-                                       $arguments = array();
-                                       for ($i=0;$i<count($tmp);$i++){
-                                               if ($tmp[$i][0] !=''){
-                                                       array_push($arguments, $tmp[$i][0]);
-                                               }
-                                       }
-                                       $path_cmd =  $svg_class->svgPolyline($arguments);
-                                       $critere_style = $attribs;
-                                       unset($critere_style['points']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'polygon':
-                                       $path = $attribs['points'];
-                                       preg_match_all('/([\-]*[0-9\.]+)/',$path, $tmp);
-                                       $arguments = array();
-                                       for ($i=0;$i<count($tmp[0]);$i++){
-                                               if ($tmp[0][$i] !=''){
-                                                       array_push($arguments, $tmp[0][$i]);
-                                               }
-                                       }
-                                       $path_cmd =  $svg_class->svgPolygon($arguments);
-                                       //      definition du style de la forme:
-                                       $critere_style = $attribs;
-                                       unset($critere_style['points']);
-                                       $path_style = $svg_class->svgDefineStyle($critere_style);
-                                       break;
-
-                               case 'a':
-                                               if (isset($attribs['xlink:href'])) {
-                                                       unset($attribs['xlink:href']);  // this should be a hyperlink
-                                                               // not handled like a xlink:href in other elements
-                                               }               // then continue like a <g>
-                               case 'g':
-                                               $array_style = $svg_class->svgDefineStyle($attribs);
-                                               if ($array_style['transformations']) {
-                                                       $svg_class->svgWriteString(' q '.$array_style['transformations']);
-                                               }
-                                               array_push($svg_class->svg_style,$array_style);
-
-                                               $svg_class->svgDefineTxtStyle($attribs);        // mPDF 4.4.003
-
-                                       break;
-
-                               case 'text':
-                                               $array_style = $svg_class->svgDefineStyle($attribs);
-                                               if ($array_style['transformations']) {
-                                                       $svg_class->svgWriteString(' q '.$array_style['transformations']);
-                                               }
-                                               array_push($svg_class->svg_style,$array_style);
-
-                                               $svg_class->txt_data = array();
-                                               $svg_class->txt_data[0] = $attribs['x'];
-                                               $svg_class->txt_data[1] = $attribs['y'];
-                                               $critere_style = $attribs;
-                                               unset($critere_style['x'], $critere_style['y']);
-                                               $svg_class->svgDefineTxtStyle($critere_style);
-                                       break;
-                               }
-
-                               //
-                               //insertion des path et du style dans le flux de donné general.
-                               if (isset($path_cmd) && $path_cmd) {    // mPDF 4.4.003
-                                       // mPDF 5.0
-                                       list($prestyle,$poststyle) = $svg_class->svgStyle($path_style, $attribs, strtolower($name));
-                                       if ($path_style['transformations']) {   // transformation on an element
-                                               $svg_class->svgWriteString(" q ".$path_style['transformations']. " $prestyle $path_cmd $poststyle" . " Q\n");
-                                       }
-                                       else {
-                                               $svg_class->svgWriteString("$prestyle $path_cmd $poststyle\n");
-                                       }
-                               }
-                       }
-
-                       function characterData($parser, $data)
-                       {
-                               global $svg_class;
-                               if ($svg_class->inDefs) { return; }             // mPDF 5.7.2
-                               if(isset($svg_class->txt_data[2])) {
-                                       $svg_class->txt_data[2] .= $data;
-                               }
-                               else {
-                                       $svg_class->txt_data[2] = $data;
-                               }
-                       }
-
-
-                       function xml_svg2pdf_end($parser, $name){
-                               global $svg_class;
-                               // Don't output stuff inside <defs>
-                               // mPDF 5.7.2
-                               if ($name == 'defs') {
-                                       $svg_class->inDefs = false;
-                                       return;
-                               }
-                               if ($svg_class->inDefs) { return; }
-                               switch($name){
-
-                                       case "g":
-                                       case "a":
-                                               $tmp = count($svg_class->svg_style)-1;
-                                               $current_style = $svg_class->svg_style[$tmp];
-                                               if ($current_style['transformations']) {
-                                                       $svg_class->svgWriteString(" Q\n");
-                                               }
-                                               array_pop($svg_class->svg_style);
-
-                                               array_pop($svg_class->txt_style);       // mPDF 4.4.003
-
-                                               break;
-                                       case 'radialgradient':
-                                       case 'lineargradient':
-                                               $last_gradid = '';
-                                               break;
-                                       case "text":
-                                               $path_cmd = $svg_class->svgText();
-                                               // echo 'path >> '.$path_cmd."<br><br>";
-                                               // echo "style >> ".$get_style[1]."<br><br>";
-                                               $svg_class->svgWriteString($path_cmd);
-                                               // mPDF 4.4.003
-                                               $tmp = count($svg_class->svg_style)-1;
-                                               $current_style = $svg_class->svg_style[$tmp];
-                                               if ($current_style['transformations']) {
-                                                       $svg_class->svgWriteString(" Q\n");
-                                               }
-                                               array_pop($svg_class->svg_style);
-
-                                               break;
-                               }
-                               // mPDF 5.0.039 - Don't output stuff inside <defs>
-                               if ($name == 'defs') {
-                                       $svg_class->inDefs = false;
-                               }
-
-                       }
-
-               }
-
-               $svg2pdf_xml='';
-               global $svg_class;
-               $svg_class = $this;
-               // mPDF 5.0.039 - Don't output stuff inside <defs>
-               $svg_class->inDefs = false;
-               $svg2pdf_xml_parser = xml_parser_create("utf-8");
-               xml_parser_set_option($svg2pdf_xml_parser, XML_OPTION_CASE_FOLDING, false);
-               xml_set_element_handler($svg2pdf_xml_parser, "xml_svg2pdf_start", "xml_svg2pdf_end");
-               xml_set_character_data_handler($svg2pdf_xml_parser, "characterData");
-               xml_parse($svg2pdf_xml_parser, $data);
-               // mPDF 4.4.003
-               if ($this->svg_error) { return false; }
-               else {
-                       return array('x'=>$this->svg_info['x']*$this->kp,'y'=>-$this->svg_info['y']*$this->kp,'w'=>$this->svg_info['w']*$this->kp,'h'=>-$this->svg_info['h']*$this->kp,'data'=>$svg_class->svg_string);
-               }
-
-       }
-
-}
-
-// END OF CLASS
-
-
-// mPDF 5.0.040
-function calc_bezier_bbox($start, $c) {
-       $P0 = array($start[0],$start[1]);
-       $P1 = array($c[0],$c[1]);
-       $P2 = array($c[2],$c[3]);
-       $P3 = array($c[4],$c[5]);
-       $bounds = array();
-       $bounds[0][] = $P0[0];
-       $bounds[1][] = $P0[1];
-       $bounds[0][] = $P3[0];
-       $bounds[1][] = $P3[1];
-       for ($i=0;$i<=1;$i++) {
-            $b = 6 * $P0[$i] - 12 * $P1[$i] + 6 * $P2[$i];
-            $a = -3 * $P0[$i] + 9 * $P1[$i] - 9 * $P2[$i] + 3 * $P3[$i];
-            $c = 3 * $P1[$i] - 3 * $P0[$i];
-               if ($a == 0) {
-                       if ($b == 0) { continue; }
-                       $t = -$c / $b;
-                       if ($t>0 && $t<1) {
-                               $bounds[$i][] = (pow((1-$t),3) * $P0[$i] + 3 * pow((1-$t),2) * $t * $P1[$i] + 3 * (1-$t) * pow($t,2) * $P2[$i] + pow($t,3) * $P3[$i]);
-                       }
-                       continue;
-               }
-               $b2ac = pow($b, 2) - 4 * $c * $a;
-               if ($b2ac < 0) { continue; }
-               $t1 = (-$b + sqrt($b2ac))/(2 * $a);
-               if ($t1>0 && $t1<1) { 
-                       $bounds[$i][] = (pow((1-$t1),3) * $P0[$i] + 3 * pow((1-$t1),2) * $t1 * $P1[$i] + 3 * (1-$t1) * pow($t1,2) * $P2[$i] + pow($t1,3) * $P3[$i]);
-               }
-               $t2 = (-$b - sqrt($b2ac))/(2 * $a);
-               if ($t2>0 && $t2<1) { 
-                       $bounds[$i][] = (pow((1-$t2),3) * $P0[$i] + 3 * pow((1-$t2),2) * $t2 * $P1[$i] + 3 * (1-$t2) * pow($t2,2) * $P2[$i] + pow($t2,3) * $P3[$i]);
-               }
-       }
-       $x = min($bounds[0]);
-       $x2 = max($bounds[0]);
-       $y = min($bounds[1]);
-       $y2 = max($bounds[1]);
-       return array($x, $y, $x2, $y2);
-}
-
-// mPDF 5.0.040
-function _testIntersectCircle($cx, $cy, $cr) {
-       // Tests whether a circle fully encloses a rectangle 0,0,1,1
-       // to see if any further radial gradients need adding (SVG)
-       // If centre of circle is inside 0,0,1,1 square
-       if ($cx >= 0 && $cx <= 1 && $cy >= 0 && $cy <= 1) {
-               $maxd = 1.5;
-       }
-       // distance to four corners
-       else {
-               $d1 = sqrt(pow(($cy-0),2) + pow(($cx-0),2));
-               $d2 = sqrt(pow(($cy-1),2) + pow(($cx-0),2));
-               $d3 = sqrt(pow(($cy-0),2) + pow(($cx-1),2));
-               $d4 = sqrt(pow(($cy-1),2) + pow(($cx-1),2));
-               $maxd = max($d1,$d2,$d3,$d4);
-       }
-       if ($cr < $maxd) { return true; }
-       else { return false; }
-}
-
-// mPDF 5.0.040
-function _testIntersect($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4) {
-       // Tests whether line (x1, y1) and (x2, y2) [a gradient axis (perpendicular)]
-       // intersects with a specific line segment (x3, y3) and (x4, y4)
-       $a1 = $y2-$y1;
-       $b1 = $x1-$x2;
-       $c1 = $a1*$x1+$b1*$y1;
-       $a2 = $y4-$y3;
-       $b2 = $x3-$x4;
-       $c2 = $a2*$x3+$b2*$y3;
-       $det = $a1*$b2 - $a2*$b1;
-       if($det == 0){  //Lines are parallel
-               return false;
-       }
-       else{
-               $x = ($b2*$c1 - $b1*$c2)/$det;
-               $y = ($a1*$c2 - $a2*$c1)/$det;
-               if ($x >= $x3 && $x <= $x4 && $y >= $y3 && $y <= $y4) { return true; }
-       }
-       return false;
-}
-
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/tocontents.php b/inc/3rdparty/libraries/mpdf/classes/tocontents.php
deleted file mode 100644 (file)
index b1b6144..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-<?php
-
-class tocontents {
-
-var $mpdf = null;
-var $_toc;
-var $TOCmark;
-var $TOCoutdent;       // mPDF 5.6.31
-var $TOCpreHTML;
-var $TOCpostHTML;
-var $TOCbookmarkText;
-var $TOCusePaging;
-var $TOCuseLinking;
-var $TOCorientation;
-var $TOC_margin_left;
-var $TOC_margin_right;
-var $TOC_margin_top;
-var $TOC_margin_bottom;
-var $TOC_margin_header;
-var $TOC_margin_footer;
-var $TOC_odd_header_name;
-var $TOC_even_header_name;
-var $TOC_odd_footer_name;
-var $TOC_even_footer_name;
-var $TOC_odd_header_value;
-var $TOC_even_header_value;
-var $TOC_odd_footer_value;
-var $TOC_even_footer_value;
-var $TOC_page_selector;
-var $m_TOC; 
-
-function tocontents(&$mpdf) {
-       $this->mpdf = $mpdf;
-       $this->_toc=array();
-       $this->TOCmark = 0;
-       $this->m_TOC=array();
-}
-
-function TOCpagebreak($tocfont='', $tocfontsize='', $tocindent='', $TOCusePaging=true, $TOCuseLinking='', $toc_orientation='', $toc_mgl='',$toc_mgr='',$toc_mgt='',$toc_mgb='',$toc_mgh='',$toc_mgf='',$toc_ohname='',$toc_ehname='',$toc_ofname='',$toc_efname='',$toc_ohvalue=0,$toc_ehvalue=0,$toc_ofvalue=0, $toc_efvalue=0, $toc_preHTML='', $toc_postHTML='', $toc_bookmarkText='', $resetpagenum='', $pagenumstyle='', $suppress='', $orientation='', $mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0, $toc_id=0, $pagesel='', $toc_pagesel='', $sheetsize='', $toc_sheetsize='', $tocoutdent='') {     // mPDF 5.6.19
-               if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
-               else if (!$toc_id) { $toc_id = 0; }
-               else { $toc_id = strtolower($toc_id); }
-
-               if ($TOCusePaging === false || strtolower($TOCusePaging) == "off" || $TOCusePaging === 0 || $TOCusePaging === "0" || $TOCusePaging === "") { $TOCusePaging = false; }
-               else { $TOCusePaging = true; }
-               if (!$TOCuseLinking) { $TOCuseLinking = false; }
-               if ($toc_id) {
-                       $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; 
-                       $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent;
-                       $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation;
-                       $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking;
-                       $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging;
-
-                       if ($toc_preHTML) { $this->m_TOC[$toc_id]['TOCpreHTML'] = $toc_preHTML; }
-                       if ($toc_postHTML) { $this->m_TOC[$toc_id]['TOCpostHTML'] = $toc_postHTML; }
-                       if ($toc_bookmarkText) { $this->m_TOC[$toc_id]['TOCbookmarkText'] = $toc_bookmarkText; }
-
-                       $this->m_TOC[$toc_id]['TOC_margin_left'] = $toc_mgl;
-                       $this->m_TOC[$toc_id]['TOC_margin_right'] = $toc_mgr;
-                       $this->m_TOC[$toc_id]['TOC_margin_top'] = $toc_mgt;
-                       $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $toc_mgb;
-                       $this->m_TOC[$toc_id]['TOC_margin_header'] = $toc_mgh;
-                       $this->m_TOC[$toc_id]['TOC_margin_footer'] = $toc_mgf;
-                       $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $toc_ohname;
-                       $this->m_TOC[$toc_id]['TOC_even_header_name'] = $toc_ehname;
-                       $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $toc_ofname;
-                       $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $toc_efname;
-                       $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $toc_ohvalue;
-                       $this->m_TOC[$toc_id]['TOC_even_header_value'] = $toc_ehvalue;
-                       $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $toc_ofvalue;
-                       $this->m_TOC[$toc_id]['TOC_even_footer_value'] = $toc_efvalue;
-                       $this->m_TOC[$toc_id]['TOC_page_selector'] = $toc_pagesel;
-                       $this->m_TOC[$toc_id]['TOCsheetsize'] = $toc_sheetsize;
-               }
-               else {
-                       $this->TOCmark = $this->mpdf->page; 
-                       $this->TOCoutdent = $tocoutdent;
-                       $this->TOCorientation = $toc_orientation;
-                       $this->TOCuseLinking = $TOCuseLinking;
-                       $this->TOCusePaging = $TOCusePaging;
-
-                       if ($toc_preHTML) { $this->TOCpreHTML = $toc_preHTML; }
-                       if ($toc_postHTML) { $this->TOCpostHTML = $toc_postHTML; }
-                       if ($toc_bookmarkText) { $this->TOCbookmarkText = $toc_bookmarkText; }
-
-                       $this->TOC_margin_left = $toc_mgl;
-                       $this->TOC_margin_right = $toc_mgr;
-                       $this->TOC_margin_top = $toc_mgt;
-                       $this->TOC_margin_bottom = $toc_mgb;
-                       $this->TOC_margin_header = $toc_mgh;
-                       $this->TOC_margin_footer = $toc_mgf;
-                       $this->TOC_odd_header_name = $toc_ohname;
-                       $this->TOC_even_header_name = $toc_ehname;
-                       $this->TOC_odd_footer_name = $toc_ofname;
-                       $this->TOC_even_footer_name = $toc_efname;
-                       $this->TOC_odd_header_value = $toc_ohvalue;
-                       $this->TOC_even_header_value = $toc_ehvalue;
-                       $this->TOC_odd_footer_value = $toc_ofvalue;
-                       $this->TOC_even_footer_value = $toc_efvalue;
-                       $this->TOC_page_selector = $toc_pagesel;
-                       $this->TOCsheetsize = $toc_sheetsize;
-               }
-}
-
-// Initiate, and Mark a place for the Table of Contents to be inserted
-function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') {  // mPDF 5.6.19) {
-               if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
-               else if (!$toc_id) { $toc_id = 0; }
-               else { $toc_id = strtolower($toc_id); }
-               // To use odd and even pages
-               // Cannot start table of contents on an even page
-               if (($this->mpdf->mirrorMargins) && (($this->mpdf->page)%2==0)) {       // EVEN
-                       if ($this->mpdf->ColActive) {
-                               if (count($this->mpdf->columnbuffer)) { $this->mpdf->printcolumnbuffer(); }
-                       }
-                       $this->mpdf->AddPage($this->mpdf->CurOrientation,'',$resetpagenum, $pagenumstyle, $suppress);
-               }
-               else { 
-                       $this->mpdf->PageNumSubstitutions[] = array('from'=>$this->mpdf->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
-               }
-               if ($toc_id) {
-                       $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; 
-                       $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent;
-                       $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation;
-                       $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking;
-                       $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging;
-               }
-               else {
-                       $this->TOCmark = $this->mpdf->page; 
-                       $this->TOCoutdent = $tocoutdent;
-                       $this->TOCorientation = $toc_orientation;
-                       $this->TOCuseLinking = $TOCuseLinking;
-                       $this->TOCusePaging = $TOCusePaging;
-               }
-}
-
-
-function insertTOC() {
-       $notocs = 0;
-       if ($this->TOCmark) { $notocs = 1; }
-       $notocs += count($this->m_TOC);
-
-       if ($notocs==0) { return; }
-
-       if (count($this->m_TOC)) { reset($this->m_TOC); }
-       $added_toc_pages = 0;
-
-       if ($this->mpdf->ColActive) { $this->mpdf->SetColumns(0); }
-       if (($this->mpdf->mirrorMargins) && (($this->mpdf->page)%2==1)) {       // ODD
-               $this->mpdf->AddPage($this->mpdf->CurOrientation);
-               $extrapage = true;
-       }
-       else { $extrapage = false; }
-
-       for ($toci = 0; $toci<$notocs; $toci++) {
-               if ($toci==0 && $this->TOCmark) {
-                       $toc_id = 0;
-                       $toc_page = $this->TOCmark; 
-                       $tocoutdent = $this->TOCoutdent;
-                       $toc_orientation = $this->TOCorientation;
-                       $TOCuseLinking = $this->TOCuseLinking;
-                       $TOCusePaging = $this->TOCusePaging;
-                       $toc_preHTML = $this->TOCpreHTML;
-                       $toc_postHTML = $this->TOCpostHTML;
-                       $toc_bookmarkText = $this->TOCbookmarkText;
-                       $toc_mgl = $this->TOC_margin_left;
-                       $toc_mgr = $this->TOC_margin_right;
-                       $toc_mgt = $this->TOC_margin_top;
-                       $toc_mgb = $this->TOC_margin_bottom;
-                       $toc_mgh = $this->TOC_margin_header;
-                       $toc_mgf = $this->TOC_margin_footer;
-                       $toc_ohname = $this->TOC_odd_header_name;
-                       $toc_ehname = $this->TOC_even_header_name;
-                       $toc_ofname = $this->TOC_odd_footer_name;
-                       $toc_efname = $this->TOC_even_footer_name;
-                       $toc_ohvalue = $this->TOC_odd_header_value;
-                       $toc_ehvalue = $this->TOC_even_header_value;
-                       $toc_ofvalue = $this->TOC_odd_footer_value;
-                       $toc_efvalue = $this->TOC_even_footer_value;
-                       $toc_page_selector = $this->TOC_page_selector;
-                       $toc_sheet_size = $this->TOCsheetsize;
-               }
-               else {
-                       $arr = current($this->m_TOC);
-
-                       $toc_id = key($this->m_TOC);
-                       $toc_page = $this->m_TOC[$toc_id]['TOCmark'];
-                       $tocoutdent = $this->m_TOC[$toc_id]['TOCoutdent'];
-                       $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation'];
-                       $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking'];
-                       $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging'];
-                       if (isset($this->m_TOC[$toc_id]['TOCpreHTML'])) { $toc_preHTML = $this->m_TOC[$toc_id]['TOCpreHTML']; }
-                       else { $toc_preHTML = ''; }
-                       if (isset($this->m_TOC[$toc_id]['TOCpostHTML'])) { $toc_postHTML = $this->m_TOC[$toc_id]['TOCpostHTML']; }
-                       else { $toc_postHTML = ''; }
-                       if (isset($this->m_TOC[$toc_id]['TOCbookmarkText'])) { $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText']; }
-                       else { $toc_bookmarkText = ''; }        // *BOOKMARKS*
-                       $toc_mgl = $this->m_TOC[$toc_id]['TOC_margin_left'];
-                       $toc_mgr = $this->m_TOC[$toc_id]['TOC_margin_right'];
-                       $toc_mgt = $this->m_TOC[$toc_id]['TOC_margin_top'];
-                       $toc_mgb = $this->m_TOC[$toc_id]['TOC_margin_bottom'];
-                       $toc_mgh = $this->m_TOC[$toc_id]['TOC_margin_header'];
-                       $toc_mgf = $this->m_TOC[$toc_id]['TOC_margin_footer'];
-                       $toc_ohname = $this->m_TOC[$toc_id]['TOC_odd_header_name'];
-                       $toc_ehname = $this->m_TOC[$toc_id]['TOC_even_header_name'];
-                       $toc_ofname = $this->m_TOC[$toc_id]['TOC_odd_footer_name'];
-                       $toc_efname = $this->m_TOC[$toc_id]['TOC_even_footer_name'];
-                       $toc_ohvalue = $this->m_TOC[$toc_id]['TOC_odd_header_value'];
-                       $toc_ehvalue = $this->m_TOC[$toc_id]['TOC_even_header_value'];
-                       $toc_ofvalue = $this->m_TOC[$toc_id]['TOC_odd_footer_value'];
-                       $toc_efvalue = $this->m_TOC[$toc_id]['TOC_even_footer_value'];
-                       $toc_page_selector = $this->m_TOC[$toc_id]['TOC_page_selector'];
-                       $toc_sheet_size = $this->m_TOC[$toc_id]['TOCsheetsize'];
-                       next($this->m_TOC);
-               }
-
-               // mPDF 5.6.31
-
-               if (!$toc_orientation) { $toc_orientation= $this->mpdf->DefOrientation; }
-               $this->mpdf->AddPage($toc_orientation, '', '', '', "on", $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_page_selector, $toc_sheet_size );
-
-               $this->mpdf->writingToC = true; // mPDF 5.6.38
-               // mPDF 5.6.31
-               $tocstart=count($this->mpdf->pages);
-               if ($toc_preHTML) { $this->mpdf->WriteHTML($toc_preHTML); }
-
-               // mPDF 5.6.19
-               $html ='<div class="mpdf_toc" id="mpdf_toc_'.$toc_id.'">';
-               foreach($this->_toc as $t) {
-                if ($t['toc_id']==='_mpdf_all' || $t['toc_id']===$toc_id ) {
-                       $html .= '<div class="mpdf_toc_level_'.$t['l'].'">';
-                       if ($TOCuseLinking) { $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_'.$t['link'].'">'; }
-                       $html .= '<span class="mpdf_toc_t_level_'.$t['l'].'">'.$t['t'].'</span>';
-                       if ($TOCuseLinking) { $html .= '</a>'; }
-                       if (!$tocoutdent) { $tocoutdent = '0'; }
-                       if ($TOCusePaging) { $html .= ' <dottab outdent="'.$tocoutdent.'" /> ';
-                               if ($TOCuseLinking) { $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_'.$t['link'].'">'; }
-                               $html .= '<span class="mpdf_toc_p_level_'.$t['l'].'">'.$this->mpdf->docPageNum($t['p']).'</span>';
-                               if ($TOCuseLinking) { $html .= '</a>'; }
-                       }
-                       $html .= '</div>';
-                } 
-               }
-               $html .= '</div>';
-               $this->mpdf->WriteHTML($html);
-
-               if ($toc_postHTML) { $this->mpdf->WriteHTML($toc_postHTML); }
-               $this->mpdf->writingToC = false;        // mPDF 5.6.38
-               $this->mpdf->AddPage($toc_orientation,'E');
-
-               $n_toc = $this->mpdf->page - $tocstart + 1;
-
-               if ($toci==0 && $this->TOCmark) {
-                       $TOC_start = $tocstart ;
-                       $TOC_end = $this->mpdf->page;
-                       $TOC_npages = $n_toc;
-               }
-               else {
-                       $this->m_TOC[$toc_id]['start'] = $tocstart ;
-                       $this->m_TOC[$toc_id]['end'] = $this->mpdf->page;
-                       $this->m_TOC[$toc_id]['npages'] = $n_toc;
-               }
-       }
-
-       $s = '';
-
-       $s .= $this->mpdf->PrintBodyBackgrounds();
-
-       $s .= $this->mpdf->PrintPageBackgrounds();
-       $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->mpdf->uniqstr.')/', "\n".$s."\n".'\\1', $this->mpdf->pages[$this->mpdf->page]);
-       $this->mpdf->pageBackgrounds = array();
-
-       //Page footer
-       $this->mpdf->InFooter=true;
-       $this->mpdf->Footer();
-       $this->mpdf->InFooter=false;
-
-       // 2nd time through to move pages etc.
-       $added_toc_pages = 0;
-       if (count($this->m_TOC)) { reset($this->m_TOC); }
-
-       for ($toci = 0; $toci<$notocs; $toci++) {
-               if ($toci==0 && $this->TOCmark) {
-                       $toc_id = 0;
-                       $toc_page = $this->TOCmark + $added_toc_pages; 
-                       $toc_orientation = $this->TOCorientation;
-                       $TOCuseLinking = $this->TOCuseLinking;
-                       $TOCusePaging = $this->TOCusePaging;
-                       $toc_bookmarkText = $this->TOCbookmarkText;     // *BOOKMARKS*
-
-                       $tocstart = $TOC_start ;
-                       $tocend = $n = $TOC_end;
-                       $n_toc = $TOC_npages;
-               }
-               else {
-                       $arr = current($this->m_TOC);
-
-                       $toc_id = key($this->m_TOC);
-                       $toc_page = $this->m_TOC[$toc_id]['TOCmark'] + $added_toc_pages;
-                       $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation'];
-                       $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking'];
-                       $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging'];
-                       $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText'];   // *BOOKMARKS*
-
-                       $tocstart = $this->m_TOC[$toc_id]['start'] ;
-                       $tocend = $n = $this->m_TOC[$toc_id]['end'] ;
-                       $n_toc = $this->m_TOC[$toc_id]['npages'] ;
-
-                       next($this->m_TOC);
-               }
-
-               // Now pages moved
-               $added_toc_pages += $n_toc;
-
-               $this->mpdf->MovePages($toc_page, $tocstart, $tocend) ;
-               $this->mpdf->pgsIns[$toc_page] = $tocend - $tocstart + 1;
-
-/*-- BOOKMARKS --*/
-               // Insert new Bookmark for Bookmark
-               if ($toc_bookmarkText) {
-                       $insert = -1;
-                       foreach($this->mpdf->BMoutlines as $i=>$o) {
-                               if($o['p']<$toc_page) { // i.e. before point of insertion
-                                       $insert = $i;
-                               }
-                       }
-                       $txt = $this->mpdf->purify_utf8_text($toc_bookmarkText);
-                       if ($this->mpdf->text_input_as_HTML) {
-                               $txt = $this->mpdf->all_entities_to_utf8($txt);
-                       }
-                       $newBookmark[0] = array('t'=>$txt,'l'=>0,'y'=>0,'p'=>$toc_page );
-                       array_splice($this->mpdf->BMoutlines,($insert+1),0,$newBookmark);
-               }
-/*-- END BOOKMARKS --*/
-
-       }
-
-       // Delete empty page that was inserted earlier
-       if ($extrapage) {
-               unset($this->mpdf->pages[count($this->mpdf->pages)]);
-               $this->mpdf->page--;    // Reset page pointer
-       }
-
-
-}
-
-
-function openTagTOC($attr) {
-       if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $tocoutdent = $attr['OUTDENT']; } else { $tocoutdent = ''; } // mPDF 5.6.19
-       if (isset($attr['RESETPAGENUM']) && $attr['RESETPAGENUM']) { $resetpagenum = $attr['RESETPAGENUM']; } else { $resetpagenum = ''; }
-       if (isset($attr['PAGENUMSTYLE']) && $attr['PAGENUMSTYLE']) { $pagenumstyle = $attr['PAGENUMSTYLE']; } else { $pagenumstyle= ''; }
-       if (isset($attr['SUPPRESS']) && $attr['SUPPRESS']) { $suppress = $attr['SUPPRESS']; } else { $suppress = ''; }
-       if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $toc_orientation = $attr['TOC-ORIENTATION']; } else { $toc_orientation = ''; }
-       if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $paging = false; }
-       else { $paging = true; }
-       if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; }
-       else { $links = false; }
-       if (isset($attr['NAME']) && $attr['NAME']) { $toc_id = strtolower($attr['NAME']); } else { $toc_id = 0; }
-       $this->TOC('',0,0,$resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $paging, $links, $toc_id, $tocoutdent);  // mPDF 5.6.19 5.6.31
-}
-
-
-function openTagTOCPAGEBREAK($attr) {
-       if (isset($attr['NAME']) && $attr['NAME']) { $toc_id = strtolower($attr['NAME']); } else { $toc_id = 0; }
-       if ($toc_id) {
-         if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $this->m_TOC[$toc_id]['TOCoutdent'] = $attr['OUTDENT']; } else { $this->m_TOC[$toc_id]['TOCoutdent'] = ''; }       // mPDF 5.6.19
-         if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $this->m_TOC[$toc_id]['TOCorientation'] = $attr['TOC-ORIENTATION']; } else { $this->m_TOC[$toc_id]['TOCorientation'] = ''; }
-         if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $this->m_TOC[$toc_id]['TOCusePaging'] = false; }
-         else { $this->m_TOC[$toc_id]['TOCusePaging'] = true; }
-         if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $this->m_TOC[$toc_id]['TOCuseLinking'] = true; }
-         else { $this->m_TOC[$toc_id]['TOCuseLinking'] = false; }
-
-         $this->m_TOC[$toc_id]['TOC_margin_left'] = $this->m_TOC[$toc_id]['TOC_margin_right'] = $this->m_TOC[$toc_id]['TOC_margin_top'] = $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $this->m_TOC[$toc_id]['TOC_margin_header'] = $this->m_TOC[$toc_id]['TOC_margin_footer'] = '';
-         if (isset($attr['TOC-MARGIN-RIGHT'])) { $this->m_TOC[$toc_id]['TOC_margin_right'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-RIGHT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-LEFT'])) { $this->m_TOC[$toc_id]['TOC_margin_left'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-LEFT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-TOP'])) { $this->m_TOC[$toc_id]['TOC_margin_top'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-TOP'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-BOTTOM'])) { $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-BOTTOM'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-HEADER'])) { $this->m_TOC[$toc_id]['TOC_margin_header'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-HEADER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-FOOTER'])) { $this->m_TOC[$toc_id]['TOC_margin_footer'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-FOOTER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $this->m_TOC[$toc_id]['TOC_even_header_name'] = $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $this->m_TOC[$toc_id]['TOC_even_footer_name'] = '';
-         if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $attr['TOC-ODD-HEADER-NAME']; }
-         if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { $this->m_TOC[$toc_id]['TOC_even_header_name'] = $attr['TOC-EVEN-HEADER-NAME']; }
-         if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $attr['TOC-ODD-FOOTER-NAME']; }
-         if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $attr['TOC-EVEN-FOOTER-NAME']; }
-         $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $this->m_TOC[$toc_id]['TOC_even_header_value'] = $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 0;
-         if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_odd_header_value'] = 1; }
-         else if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_odd_header_value'] = -1; }
-         if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_even_header_value'] = 1; }
-         else if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_even_header_value'] = -1; }
-         if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = 1; }
-         else if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = -1; }
-         if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 1; }
-         else if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_even_footer_value'] = -1; }
-         if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { $this->m_TOC[$toc_id]['TOC_page_selector'] = $attr['TOC-PAGE-SELECTOR']; }
-         else { $this->m_TOC[$toc_id]['TOC_page_selector'] = ''; }
-         if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { $this->m_TOC[$toc_id]['TOCsheetsize'] = $attr['TOC-SHEET-SIZE']; } else { $this->m_TOC[$toc_id]['TOCsheetsize'] = ''; }
-
-
-         if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { $this->m_TOC[$toc_id]['TOCpreHTML'] = htmlspecialchars_decode($attr['TOC-PREHTML'],ENT_QUOTES); }
-         if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { $this->m_TOC[$toc_id]['TOCpostHTML'] = htmlspecialchars_decode($attr['TOC-POSTHTML'],ENT_QUOTES); }
-         
-         if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { $this->m_TOC[$toc_id]['TOCbookmarkText'] = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'],ENT_QUOTES); }      // *BOOKMARKS*
-       }
-       else {
-         if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $this->TOCoutdent = $attr['OUTDENT']; } else { $this->TOCoutdent = ''; }   // mPDF 5.6.19
-         if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $this->TOCorientation = $attr['TOC-ORIENTATION']; } else { $this->TOCorientation = ''; }
-         if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $this->TOCusePaging = false; }
-         else { $this->TOCusePaging = true; }
-         if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $this->TOCuseLinking = true; }
-         else { $this->TOCuseLinking = false; }
-
-         $this->TOC_margin_left = $this->TOC_margin_right = $this->TOC_margin_top = $this->TOC_margin_bottom = $this->TOC_margin_header = $this->TOC_margin_footer = '';
-         if (isset($attr['TOC-MARGIN-RIGHT'])) { $this->TOC_margin_right = $this->mpdf->ConvertSize($attr['TOC-MARGIN-RIGHT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-LEFT'])) { $this->TOC_margin_left = $this->mpdf->ConvertSize($attr['TOC-MARGIN-LEFT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-TOP'])) { $this->TOC_margin_top = $this->mpdf->ConvertSize($attr['TOC-MARGIN-TOP'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-BOTTOM'])) { $this->TOC_margin_bottom = $this->mpdf->ConvertSize($attr['TOC-MARGIN-BOTTOM'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-HEADER'])) { $this->TOC_margin_header = $this->mpdf->ConvertSize($attr['TOC-MARGIN-HEADER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         if (isset($attr['TOC-MARGIN-FOOTER'])) { $this->TOC_margin_footer = $this->mpdf->ConvertSize($attr['TOC-MARGIN-FOOTER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
-         $this->TOC_odd_header_name = $this->TOC_even_header_name = $this->TOC_odd_footer_name = $this->TOC_even_footer_name = '';
-         if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { $this->TOC_odd_header_name = $attr['TOC-ODD-HEADER-NAME']; }
-         if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { $this->TOC_even_header_name = $attr['TOC-EVEN-HEADER-NAME']; }
-         if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { $this->TOC_odd_footer_name = $attr['TOC-ODD-FOOTER-NAME']; }
-         if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { $this->TOC_even_footer_name = $attr['TOC-EVEN-FOOTER-NAME']; }
-         $this->TOC_odd_header_value = $this->TOC_even_header_value = $this->TOC_odd_footer_value = $this->TOC_even_footer_value = 0;
-         if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='ON')) { $this->TOC_odd_header_value = 1; }
-         else if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='OFF')) { $this->TOC_odd_header_value = -1; }
-         if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='ON')) { $this->TOC_even_header_value = 1; }
-         else if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='OFF')) { $this->TOC_even_header_value = -1; }
-
-         if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='ON')) { $this->TOC_odd_footer_value = 1; }
-         else if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='OFF')) { $this->TOC_odd_footer_value = -1; }
-         if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='ON')) { $this->TOC_even_footer_value = 1; }
-         else if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='OFF')) { $this->TOC_even_footer_value = -1; }
-         if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { $this->TOC_page_selector = $attr['TOC-PAGE-SELECTOR']; }
-         else { $this->TOC_page_selector = ''; }
-         if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { $this->TOCsheetsize = $attr['TOC-SHEET-SIZE']; } else { $this->TOCsheetsize = ''; }
-
-         if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { $this->TOCpreHTML = htmlspecialchars_decode($attr['TOC-PREHTML'],ENT_QUOTES); }
-         if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { $this->TOCpostHTML = htmlspecialchars_decode($attr['TOC-POSTHTML'],ENT_QUOTES); }
-         if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { $this->TOCbookmarkText = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'],ENT_QUOTES); }        
-       }
-
-       if ($this->mpdf->y == $this->mpdf->tMargin && (!$this->mpdf->mirrorMargins ||($this->mpdf->mirrorMargins && $this->mpdf->page % 2==1))) { 
-               if ($toc_id) { $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; }
-               else { $this->TOCmark = $this->mpdf->page; }
-               // Don't add a page
-               if ($this->mpdf->page==1 && count($this->mpdf->PageNumSubstitutions)==0) { 
-                       $resetpagenum = '';
-                       $pagenumstyle = '';
-                       $suppress = '';
-                       if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; }
-                       if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; }
-                       if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; }
-                       if (!$suppress) { $suppress = 'off'; }
-                       if (!$resetpagenum) { $resetpagenum= 1; }
-                       $this->mpdf->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
-               }
-               return array(true, $toc_id);
-       }
-       // No break - continues as PAGEBREAK...
-       return array(false, $toc_id);
-}
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php b/inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php
deleted file mode 100644 (file)
index 1c93b60..0000000
+++ /dev/null
@@ -1,2065 +0,0 @@
-<?php
-
-/*******************************************************************************
-* TTFontFile class                                                             *
-*                                                                              *
-* Version:  2.01                                                                      *
-* Date:     2012-02-25                                                         *
-* Author:   Ian Back <ianb@bpm1.com>                                           *
-* License:  LGPL                                                               *
-* Copyright (c) Ian Back, 2010                                                 *
-* This class is based on The ReportLab Open Source PDF library                 *
-* written in Python - http://www.reportlab.com/software/opensource/            *
-* together with ideas from the OpenOffice source code and others.              * 
-* This header must be retained in any redistribution or                        *
-* modification of the file.                                                    *
-*                                                                              *
-*******************************************************************************/
-
-// Define the value used in the "head" table of a created TTF file
-// 0x74727565 "true" for Mac
-// 0x00010000 for Windows
-// Either seems to work for a font embedded in a PDF file
-// when read by Adobe Reader on a Windows PC(!)
-if (!defined('_TTF_MAC_HEADER')) define("_TTF_MAC_HEADER", false);
-
-// Recalculate correct metadata/profiles when making subset fonts (not SIP/SMP)
-// e.g. xMin, xMax, maxNContours
-if (!defined('_RECALC_PROFILE')) define("_RECALC_PROFILE", false);
-
-// TrueType Font Glyph operators
-define("GF_WORDS",(1 << 0));
-define("GF_SCALE",(1 << 3));
-define("GF_MORE",(1 << 5));
-define("GF_XYSCALE",(1 << 6));
-define("GF_TWOBYTWO",(1 << 7));
-
-
-
-class TTFontFile {
-
-var $unAGlyphs;        // mPDF 5.4.05
-var $panose;
-var $maxUni;
-var $sFamilyClass;
-var $sFamilySubClass;
-var $sipset;
-var $smpset;
-var $_pos;
-var $numTables;
-var $searchRange;
-var $entrySelector;
-var $rangeShift;
-var $tables;
-var $otables;
-var $filename;
-var $fh;
-var $glyphPos;
-var $charToGlyph;
-var $ascent;
-var $descent;
-var $name;
-var $familyName;
-var $styleName;
-var $fullName;
-var $uniqueFontID;
-var $unitsPerEm;
-var $bbox;
-var $capHeight;
-var $stemV;
-var $italicAngle;
-var $flags;
-var $underlinePosition;
-var $underlineThickness;
-var $charWidths;
-var $defaultWidth;
-var $maxStrLenRead;
-var $numTTCFonts;
-var $TTCFonts;
-var $maxUniChar;
-var $kerninfo;
-
-       function TTFontFile() {
-               $this->maxStrLenRead = 200000;  // Maximum size of glyf table to read in as string (otherwise reads each glyph from file)
-       }
-
-
-       function getMetrics($file, $TTCfontID=0, $debug=false, $BMPonly=false, $kerninfo=false, $unAGlyphs=false) {     // mPDF 5.4.05
-               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
-               $this->filename = $file;
-               $this->fh = fopen($file,'rb') or die('Can\'t open file ' . $file);
-               $this->_pos = 0;
-               $this->charWidths = '';
-               $this->glyphPos = array();
-               $this->charToGlyph = array();
-               $this->tables = array();
-               $this->otables = array();
-               $this->kerninfo = array();
-               $this->ascent = 0;
-               $this->descent = 0;
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->version = $version = $this->read_ulong();
-               $this->panose = array();
-               if ($version==0x4F54544F) 
-                       die("Postscript outlines are not supported");
-               if ($version==0x74746366 && !$TTCfontID) 
-                       die("ERROR - You must define the TTCfontID for a TrueType Collection in config_fonts.php (". $file.")");
-               if (!in_array($version, array(0x00010000,0x74727565)) && !$TTCfontID)
-                       die("Not a TrueType font: version=".$version);
-               if ($TTCfontID > 0) {
-                       $this->version = $version = $this->read_ulong();        // TTC Header version now
-                       if (!in_array($version, array(0x00010000,0x00020000)))
-                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
-                       $this->numTTCFonts = $this->read_ulong();
-                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-                       }
-                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
-                       $this->version = $version = $this->read_ulong();        // TTFont version again now
-               }
-               $this->readTableDirectory($debug);
-               $this->extractInfo($debug, $BMPonly, $kerninfo); 
-               fclose($this->fh);
-       }
-
-
-       function readTableDirectory($debug=false) {
-           $this->numTables = $this->read_ushort();
-            $this->searchRange = $this->read_ushort();
-            $this->entrySelector = $this->read_ushort();
-            $this->rangeShift = $this->read_ushort();
-            $this->tables = array();   
-            for ($i=0;$i<$this->numTables;$i++) {
-                $record = array();
-                $record['tag'] = $this->read_tag();
-                $record['checksum'] = array($this->read_ushort(),$this->read_ushort());
-                $record['offset'] = $this->read_ulong();
-                $record['length'] = $this->read_ulong();
-                $this->tables[$record['tag']] = $record;
-               }
-               if ($debug) $this->checksumTables();
-       }
-
-       function checksumTables() {
-               // Check the checksums for all tables
-               foreach($this->tables AS $t) {
-                 if ($t['length'] > 0 && $t['length'] < $this->maxStrLenRead) {        // 1.02
-               $table = $this->get_chunk($t['offset'], $t['length']);
-               $checksum = $this->calcChecksum($table);
-               if ($t['tag'] == 'head') {
-                               $up = unpack('n*', substr($table,8,4));
-                               $adjustment[0] = $up[1];
-                               $adjustment[1] = $up[2];
-                       $checksum = $this->sub32($checksum, $adjustment);
-                       }
-               $xchecksum = $t['checksum'];
-               if ($xchecksum != $checksum) 
-                   die(sprintf('TTF file "%s": invalid checksum %s table: %s (expected %s)', $this->filename,dechex($checksum[0]).dechex($checksum[1]),$t['tag'],dechex($xchecksum[0]).dechex($xchecksum[1])));
-                 }
-               }
-       }
-
-       function sub32($x, $y) {
-               $xlo = $x[1];
-               $xhi = $x[0];
-               $ylo = $y[1];
-               $yhi = $y[0];
-               if ($ylo > $xlo) { $xlo += 1 << 16; $yhi += 1; }
-               $reslo = $xlo-$ylo;
-               if ($yhi > $xhi) { $xhi += 1 << 16;  }
-               $reshi = $xhi-$yhi;
-               $reshi = $reshi & 0xFFFF;
-               return array($reshi, $reslo);
-       }
-
-       function calcChecksum($data)  {
-               if (strlen($data) % 4) { $data .= str_repeat("\0",(4-(strlen($data) % 4))); }
-               $len = strlen($data);
-               $hi=0x0000;
-               $lo=0x0000;
-               for($i=0;$i<$len;$i+=4) {
-                       $hi += (ord($data[$i])<<8) + ord($data[$i+1]);
-                       $lo += (ord($data[$i+2])<<8) + ord($data[$i+3]);
-                       $hi += ($lo >> 16) & 0xFFFF;
-                       $lo = $lo & 0xFFFF;
-               }
-               return array($hi, $lo);
-       }
-
-       function get_table_pos($tag) {
-               $offset = $this->tables[$tag]['offset'];
-               $length = $this->tables[$tag]['length'];
-               return array($offset, $length);
-       }
-
-       function seek($pos) {
-               $this->_pos = $pos;
-               fseek($this->fh,$this->_pos);
-       }
-
-       function skip($delta) {
-               $this->_pos = $this->_pos + $delta;
-               fseek($this->fh,$delta,SEEK_CUR);
-       }
-
-       function seek_table($tag, $offset_in_table = 0) {
-               $tpos = $this->get_table_pos($tag);
-               $this->_pos = $tpos[0] + $offset_in_table;
-               fseek($this->fh, $this->_pos);
-               return $this->_pos;
-       }
-
-       function read_tag() {
-               $this->_pos += 4;
-               return fread($this->fh,4);
-       }
-
-       function read_short() {
-               $this->_pos += 2;
-               $s = fread($this->fh,2);
-               $a = (ord($s[0])<<8) + ord($s[1]);
-               if ($a & (1 << 15) ) { 
-                       $a = ($a - (1 << 16)); 
-               }
-               return $a;
-       }
-
-       function unpack_short($s) {
-               $a = (ord($s[0])<<8) + ord($s[1]);
-               if ($a & (1 << 15) ) { 
-                       $a = ($a - (1 << 16)); 
-               }
-               return $a;
-       }
-
-       function read_ushort() {
-               $this->_pos += 2;
-               $s = fread($this->fh,2);
-               return (ord($s[0])<<8) + ord($s[1]);
-       }
-
-       function read_ulong() {
-               $this->_pos += 4;
-               $s = fread($this->fh,4);
-               // if large uInt32 as an integer, PHP converts it to -ve
-               return (ord($s[0])*16777216) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); //      16777216  = 1<<24
-       }
-
-       function get_ushort($pos) {
-               fseek($this->fh,$pos);
-               $s = fread($this->fh,2);
-               return (ord($s[0])<<8) + ord($s[1]);
-       }
-
-       function get_ulong($pos) {
-               fseek($this->fh,$pos);
-               $s = fread($this->fh,4);
-               // iF large uInt32 as an integer, PHP converts it to -ve
-               return (ord($s[0])*16777216) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); //      16777216  = 1<<24
-       }
-
-       function pack_short($val) {
-               if ($val<0) { 
-                       $val = abs($val);
-                       $val = ~$val;
-                       $val += 1;
-               }
-               return pack("n",$val); 
-       }
-
-       function splice($stream, $offset, $value) {
-               return substr($stream,0,$offset) . $value . substr($stream,$offset+strlen($value));
-       }
-
-       function _set_ushort($stream, $offset, $value) {
-               $up = pack("n", $value);
-               return $this->splice($stream, $offset, $up);
-       }
-
-       function _set_short($stream, $offset, $val) {
-               if ($val<0) { 
-                       $val = abs($val);
-                       $val = ~$val;
-                       $val += 1;
-               }
-               $up = pack("n",$val); 
-               return $this->splice($stream, $offset, $up);
-       }
-
-       function get_chunk($pos, $length) {
-               fseek($this->fh,$pos);
-               if ($length <1) { return ''; }
-               return (fread($this->fh,$length));
-       }
-
-       function get_table($tag) {
-               list($pos, $length) = $this->get_table_pos($tag);
-               if ($length == 0) { return ''; }
-               fseek($this->fh,$pos);
-               return (fread($this->fh,$length));
-       }
-
-       function add($tag, $data) {
-               if ($tag == 'head') {
-                       $data = $this->splice($data, 8, "\0\0\0\0");
-               }
-               $this->otables[$tag] = $data;
-       }
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////////
-       function getCTG($file, $TTCfontID=0, $debug=false, $unAGlyphs=false) {  // mPDF 5.4.05
-               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
-               $this->filename = $file;
-               $this->fh = fopen($file,'rb') or die('Can\'t open file ' . $file);
-               $this->_pos = 0;
-               $this->charWidths = '';
-               $this->glyphPos = array();
-               $this->charToGlyph = array();
-               $this->tables = array();
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->skip(4);
-               if ($TTCfontID > 0) {
-                       $this->version = $version = $this->read_ulong();        // TTC Header version now
-                       if (!in_array($version, array(0x00010000,0x00020000)))
-                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
-                       $this->numTTCFonts = $this->read_ulong();
-                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-                       }
-                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
-                       $this->version = $version = $this->read_ulong();        // TTFont version again now
-               }
-               $this->readTableDirectory($debug);
-
-
-               // cmap - Character to glyph index mapping table
-               $cmap_offset = $this->seek_table("cmap");
-               $this->skip(2);
-               $cmapTableCount = $this->read_ushort();
-               $unicode_cmap_offset = 0;
-               for ($i=0;$i<$cmapTableCount;$i++) {
-                       $platformID = $this->read_ushort();
-                       $encodingID = $this->read_ushort();
-                       $offset = $this->read_ulong();
-                       $save_pos = $this->_pos;
-                       if ($platformID == 3 && $encodingID == 1) { // Microsoft, Unicode
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 4) {
-                                       $unicode_cmap_offset = $cmap_offset + $offset;
-                                       break;
-                               }
-                       }
-                       else if ($platformID == 0) { // Unicode -- assume all encodings are compatible
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 4) {
-                                       $unicode_cmap_offset = $cmap_offset + $offset;
-                                       break;
-                               }
-                       }
-                       $this->seek($save_pos );
-               }
-
-               $glyphToChar = array();
-               $charToGlyph = array();
-               $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
-
-               fclose($this->fh);
-               return ($charToGlyph);
-       }
-
-/////////////////////////////////////////////////////////////////////////////////////////
-       function getTTCFonts($file) {
-               $this->filename = $file;
-               $this->fh = fopen($file,'rb');
-               if (!$this->fh) { return ('ERROR - Can\'t open file ' . $file); }
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->version = $version = $this->read_ulong();
-               if ($version==0x74746366) {
-                       $this->version = $version = $this->read_ulong();        // TTC Header version now
-                       if (!in_array($version, array(0x00010000,0x00020000)))
-                               return("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
-               }
-               else {
-                       return("ERROR - Not a TrueType Collection: version=".$version." - " . $file);
-               }
-               $this->numTTCFonts = $this->read_ulong();
-               for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                   $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-               }
-       }
-
-
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-       function extractInfo($debug=false, $BMPonly=false, $kerninfo=false) {
-               $this->panose = array();
-               $this->sFamilyClass = 0;
-               $this->sFamilySubClass = 0;
-               ///////////////////////////////////
-               // name - Naming table
-               ///////////////////////////////////
-                       $name_offset = $this->seek_table("name");
-                       $format = $this->read_ushort();
-                       if ($format != 0 && $format != 1)
-                               die("Unknown name table format ".$format);
-                       $numRecords = $this->read_ushort();
-                       $string_data_offset = $name_offset + $this->read_ushort();
-                       $names = array(1=>'',2=>'',3=>'',4=>'',6=>'');
-                       $K = array_keys($names);
-                       $nameCount = count($names);
-                       for ($i=0;$i<$numRecords; $i++) {
-                               $platformId = $this->read_ushort();
-                               $encodingId = $this->read_ushort();
-                               $languageId = $this->read_ushort();
-                               $nameId = $this->read_ushort();
-                               $length = $this->read_ushort();
-                               $offset = $this->read_ushort();
-                               if (!in_array($nameId,$K)) continue;
-                               $N = '';
-                               if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name
-                                       $opos = $this->_pos;
-                                       $this->seek($string_data_offset + $offset);
-                                       if ($length % 2 != 0)
-                                               die("PostScript name is UTF-16BE string of odd length");
-                                       $length /= 2;
-                                       $N = '';
-                                       while ($length > 0) {
-                                               $char = $this->read_ushort();
-                                               $N .= (chr($char));
-                                               $length -= 1;
-                                       }
-                                       $this->_pos = $opos;
-                                       $this->seek($opos);
-                               }
-                               else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
-                                       $opos = $this->_pos;
-                                       $N = $this->get_chunk($string_data_offset + $offset, $length);
-                                       $this->_pos = $opos;
-                                       $this->seek($opos);
-                               }
-                               if ($N && $names[$nameId]=='') {
-                                       $names[$nameId] = $N;
-                                       $nameCount -= 1;
-                                       if ($nameCount==0) break;
-                               }
-                       }
-                       if ($names[6])
-                               $psName = $names[6];
-                       else if ($names[4])
-                               $psName = preg_replace('/ /','-',$names[4]);
-                       else if ($names[1])
-                               $psName = preg_replace('/ /','-',$names[1]);
-                       else
-                               $psName = '';
-                       if (!$psName)
-                               die("Could not find PostScript font name: ".$this->filename);
-                       if ($debug) {
-                          for ($i=0;$i<count($psName);$i++) {
-                               $c = $psName[$i];
-                               $oc = ord($c);
-                               if ($oc>126 || strpos(' [](){}<>/%',$c)!==false)
-                                       die("psName=".$psName." contains invalid character ".$c." ie U+".ord(c));
-                          }
-                       }
-                       $this->name = $psName;
-                       if ($names[1]) { $this->familyName = $names[1]; } else { $this->familyName = $psName; }
-                       if ($names[2]) { $this->styleName = $names[2]; } else { $this->styleName = 'Regular'; }
-                       if ($names[4]) { $this->fullName = $names[4]; } else { $this->fullName = $psName; }
-                       if ($names[3]) { $this->uniqueFontID = $names[3]; } else { $this->uniqueFontID = $psName; }
-
-                       if ($names[6]) { $this->fullName = $names[6]; }
-
-               ///////////////////////////////////
-               // head - Font header table
-               ///////////////////////////////////
-               $this->seek_table("head");
-               if ($debug) { 
-                       $ver_maj = $this->read_ushort();
-                       $ver_min = $this->read_ushort();
-                       if ($ver_maj != 1)
-                               die('Unknown head table version '. $ver_maj .'.'. $ver_min);
-                       $this->fontRevision = $this->read_ushort() . $this->read_ushort();
-
-                       $this->skip(4);
-                       $magic = $this->read_ulong();
-                       if ($magic != 0x5F0F3CF5) 
-                               die('Invalid head table magic ' .$magic);
-                       $this->skip(2);
-               }
-               else {
-                       $this->skip(18); 
-               }
-               $this->unitsPerEm = $unitsPerEm = $this->read_ushort();
-               $scale = 1000 / $unitsPerEm;
-               $this->skip(16);
-               $xMin = $this->read_short();
-               $yMin = $this->read_short();
-               $xMax = $this->read_short();
-               $yMax = $this->read_short();
-               $this->bbox = array(($xMin*$scale), ($yMin*$scale), ($xMax*$scale), ($yMax*$scale));
-               $this->skip(3*2);
-               $indexToLocFormat = $this->read_ushort();
-               $glyphDataFormat = $this->read_ushort();
-               if ($glyphDataFormat != 0)
-                       die('Unknown glyph data format '.$glyphDataFormat);
-
-               ///////////////////////////////////
-               // hhea metrics table
-               ///////////////////////////////////
-               // ttf2t1 seems to use this value rather than the one in OS/2 - so put in for compatibility
-               if (isset($this->tables["hhea"])) {
-                       $this->seek_table("hhea");
-                       $this->skip(4);
-                       $hheaAscender = $this->read_short();
-                       $hheaDescender = $this->read_short();
-                       $this->ascent = ($hheaAscender *$scale);
-                       $this->descent = ($hheaDescender *$scale);
-               }
-
-               ///////////////////////////////////
-               // OS/2 - OS/2 and Windows metrics table
-               ///////////////////////////////////
-               if (isset($this->tables["OS/2"])) {
-                       $this->seek_table("OS/2");
-                       $version = $this->read_ushort();
-                       $this->skip(2);
-                       $usWeightClass = $this->read_ushort();
-                       $this->skip(2);
-                       $fsType = $this->read_ushort();
-                       if ($fsType == 0x0002 || ($fsType & 0x0300) != 0) {
-                               global $overrideTTFFontRestriction;
-                               if (!$overrideTTFFontRestriction) die('ERROR - Font file '.$this->filename.' cannot be embedded due to copyright restrictions.');
-                               $this->restrictedUse = true;
-                       }
-                       $this->skip(20);
-                       $sF = $this->read_short();
-                       $this->sFamilyClass = ($sF >> 8);
-                       $this->sFamilySubClass = ($sF & 0xFF);
-                       $this->_pos += 10;  //PANOSE = 10 byte length
-                       $panose = fread($this->fh,10);
-                       $this->panose = array();
-                       for ($p=0;$p<strlen($panose);$p++) { $this->panose[] = ord($panose[$p]); }
-                       $this->skip(26);
-                       $sTypoAscender = $this->read_short();
-                       $sTypoDescender = $this->read_short();
-                       if (!$this->ascent) $this->ascent = ($sTypoAscender*$scale);
-                       if (!$this->descent) $this->descent = ($sTypoDescender*$scale);
-                       if ($version > 1) {
-                               $this->skip(16);
-                               $sCapHeight = $this->read_short();
-                               $this->capHeight = ($sCapHeight*$scale);
-                       }
-                       else {
-                               $this->capHeight = $this->ascent;
-                       }
-               }
-               else {
-                       $usWeightClass = 500;
-                       if (!$this->ascent) $this->ascent = ($yMax*$scale);
-                       if (!$this->descent) $this->descent = ($yMin*$scale);
-                       $this->capHeight = $this->ascent;
-               }
-               $this->stemV = 50 + intval(pow(($usWeightClass / 65.0),2));
-
-               ///////////////////////////////////
-               // post - PostScript table
-               ///////////////////////////////////
-               $this->seek_table("post");
-               if ($debug) { 
-                       $ver_maj = $this->read_ushort();
-                       $ver_min = $this->read_ushort();
-                       if ($ver_maj <1 || $ver_maj >4) 
-                               die('Unknown post table version '.$ver_maj);
-               }
-               else {
-                       $this->skip(4); 
-               }
-               $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0;
-               $this->underlinePosition = $this->read_short() * $scale;
-               $this->underlineThickness = $this->read_short() * $scale;
-               $isFixedPitch = $this->read_ulong();
-
-               $this->flags = 4;
-
-               if ($this->italicAngle!= 0) 
-                       $this->flags = $this->flags | 64;
-               if ($usWeightClass >= 600)
-                       $this->flags = $this->flags | 262144;
-               if ($isFixedPitch)
-                       $this->flags = $this->flags | 1;
-
-               ///////////////////////////////////
-               // hhea - Horizontal header table
-               ///////////////////////////////////
-               $this->seek_table("hhea");
-               if ($debug) { 
-                       $ver_maj = $this->read_ushort();
-                       $ver_min = $this->read_ushort();
-                       if ($ver_maj != 1)
-                               die('Unknown hhea table version '.$ver_maj);
-                       $this->skip(28);
-               }
-               else {
-                       $this->skip(32); 
-               }
-               $metricDataFormat = $this->read_ushort();
-               if ($metricDataFormat != 0)
-                       die('Unknown horizontal metric data format '.$metricDataFormat);
-               $numberOfHMetrics = $this->read_ushort();
-               if ($numberOfHMetrics == 0) 
-                       die('Number of horizontal metrics is 0');
-
-               ///////////////////////////////////
-               // maxp - Maximum profile table
-               ///////////////////////////////////
-               $this->seek_table("maxp");
-               if ($debug) { 
-                       $ver_maj = $this->read_ushort();
-                       $ver_min = $this->read_ushort();
-                       if ($ver_maj != 1)
-                               die('Unknown maxp table version '.$ver_maj);
-               }
-               else {
-                       $this->skip(4); 
-               }
-               $numGlyphs = $this->read_ushort();
-
-
-               ///////////////////////////////////
-               // cmap - Character to glyph index mapping table
-               ///////////////////////////////////
-               $cmap_offset = $this->seek_table("cmap");
-               $this->skip(2);
-               $cmapTableCount = $this->read_ushort();
-               $unicode_cmap_offset = 0;
-               for ($i=0;$i<$cmapTableCount;$i++) {
-                       $platformID = $this->read_ushort();
-                       $encodingID = $this->read_ushort();
-                       $offset = $this->read_ulong();
-                       $save_pos = $this->_pos;
-                       if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 4) {
-                                       if (!$unicode_cmap_offset) $unicode_cmap_offset = $cmap_offset + $offset;
-                                       if ($BMPonly) break;
-                               }
-                       }
-                       // Microsoft, Unicode Format 12 table HKCS
-                       else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0) && !$BMPonly) {
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 12) {
-                                       $unicode_cmap_offset = $cmap_offset + $offset;
-                                       break;
-                               }
-                       }
-                       $this->seek($save_pos );
-               }
-               if (!$unicode_cmap_offset)
-                       die('Font ('.$this->filename .') does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)');
-
-
-               $sipset = false;
-               $smpset = false;
-               // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
-               if ($format == 12 && !$BMPonly) {
-                       $this->maxUniChar = 0;
-                       $this->seek($unicode_cmap_offset + 4);
-                       $length = $this->read_ulong();
-                       $limit = $unicode_cmap_offset + $length;
-                       $this->skip(4);
-
-                       $nGroups = $this->read_ulong();
-
-                       $glyphToChar = array();
-                       $charToGlyph = array();
-                       for($i=0; $i<$nGroups ; $i++) { 
-                               $startCharCode = $this->read_ulong(); 
-                               $endCharCode = $this->read_ulong(); 
-                               $startGlyphCode = $this->read_ulong(); 
-                               if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) {
-                                       $sipset = true; 
-                               }
-                               else if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) {
-                                       $smpset = true; 
-                               }
-                               $offset = 0;
-                               for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
-                                       $glyph = $startGlyphCode + $offset ;
-                                       $offset++;
-                                       $charToGlyph[$unichar] = $glyph;
-                                       if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
-                                       $glyphToChar[$glyph][] = $unichar;
-                               }
-                       }
-               }
-               else {
-
-                       $glyphToChar = array();
-                       $charToGlyph = array();
-                       $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
-
-               }
-               $this->sipset = $sipset ;
-               $this->smpset = $smpset ;
-
-               ///////////////////////////////////
-               // hmtx - Horizontal metrics table
-               ///////////////////////////////////
-               $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
-
-               ///////////////////////////////////
-               // kern - Kerning pair table
-               ///////////////////////////////////
-               if ($kerninfo) {
-                       // Recognises old form of Kerning table - as required by Windows - Format 0 only
-                       $kern_offset = $this->seek_table("kern");
-                       $version = $this->read_ushort();
-                       $nTables = $this->read_ushort();
-                       // subtable header
-                       $sversion = $this->read_ushort();
-                       $slength = $this->read_ushort();
-                       $scoverage = $this->read_ushort();
-                       $format = $scoverage >> 8;
-                       if ($kern_offset && $version==0 && $format==0) {
-                               // Format 0
-                               $nPairs = $this->read_ushort();
-                               $this->skip(6);
-                               for ($i=0; $i<$nPairs; $i++) {
-                                       $left = $this->read_ushort();
-                                       $right = $this->read_ushort();
-                                       $val = $this->read_short();
-                                       if (count($glyphToChar[$left])==1 && count($glyphToChar[$right])==1) {
-                                         if ($left != 32 && $right != 32) {
-                                               $this->kerninfo[$glyphToChar[$left][0]][$glyphToChar[$right][0]] = intval($val*$scale);
-                                         }
-                                       }
-                               }
-                       }
-               }
-       }
-
-
-/////////////////////////////////////////////////////////////////////////////////////////
-
-
-       function makeSubset($file, &$subset, $TTCfontID=0, $debug=false, $unAGlyphs=false) {    // mPDF 5.4.05
-               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
-               $this->filename = $file;
-               $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
-               $this->_pos = 0;
-               $this->charWidths = '';
-               $this->glyphPos = array();
-               $this->charToGlyph = array();
-               $this->tables = array();
-               $this->otables = array();
-               $this->ascent = 0;
-               $this->descent = 0;
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->skip(4);
-               $this->maxUni = 0;
-               if ($TTCfontID > 0) {
-                       $this->version = $version = $this->read_ulong();        // TTC Header version now
-                       if (!in_array($version, array(0x00010000,0x00020000)))
-                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
-                       $this->numTTCFonts = $this->read_ulong();
-                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-                       }
-                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
-                       $this->version = $version = $this->read_ulong();        // TTFont version again now
-               }
-               $this->readTableDirectory($debug);
-
-               ///////////////////////////////////
-               // head - Font header table
-               ///////////////////////////////////
-               $this->seek_table("head");
-               $this->skip(50); 
-               $indexToLocFormat = $this->read_ushort();
-               $glyphDataFormat = $this->read_ushort();
-
-               ///////////////////////////////////
-               // hhea - Horizontal header table
-               ///////////////////////////////////
-               $this->seek_table("hhea");
-               $this->skip(32); 
-               $metricDataFormat = $this->read_ushort();
-               $orignHmetrics = $numberOfHMetrics = $this->read_ushort();
-
-               ///////////////////////////////////
-               // maxp - Maximum profile table
-               ///////////////////////////////////
-               $this->seek_table("maxp");
-               $this->skip(4);
-               $numGlyphs = $this->read_ushort();
-
-
-               ///////////////////////////////////
-               // cmap - Character to glyph index mapping table
-               ///////////////////////////////////
-               $cmap_offset = $this->seek_table("cmap");
-               $this->skip(2);
-               $cmapTableCount = $this->read_ushort();
-               $unicode_cmap_offset = 0;
-               for ($i=0;$i<$cmapTableCount;$i++) {
-                       $platformID = $this->read_ushort();
-                       $encodingID = $this->read_ushort();
-                       $offset = $this->read_ulong();
-                       $save_pos = $this->_pos;
-                       if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 4) {
-                                       $unicode_cmap_offset = $cmap_offset + $offset;
-                                       break;
-                               }
-                       }
-                       $this->seek($save_pos );
-               }
-
-               if (!$unicode_cmap_offset)
-                       die('Font ('.$this->filename .') does not have Unicode cmap (platform 3, encoding 1, format 4, or platform 0 [any encoding] format 4)');
-
-
-               $glyphToChar = array();
-               $charToGlyph = array();
-               $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
-
-               $this->charToGlyph = $charToGlyph;
-
-
-               ///////////////////////////////////
-               // hmtx - Horizontal metrics table
-               ///////////////////////////////////
-               $scale = 1;     // not used
-               $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
-
-               ///////////////////////////////////
-               // loca - Index to location
-               ///////////////////////////////////
-               $this->getLOCA($indexToLocFormat, $numGlyphs);
-
-               $subsetglyphs = array(0=>0, 1=>1, 2=>2);
-               $subsetCharToGlyph = array();
-               foreach($subset AS $code) {
-                       if (isset($this->charToGlyph[$code])) {
-                               $subsetglyphs[$this->charToGlyph[$code]] = $code;       // Old Glyph ID => Unicode
-                               $subsetCharToGlyph[$code] = $this->charToGlyph[$code];  // Unicode to old GlyphID
-
-                       }
-                       $this->maxUni = max($this->maxUni, $code);
-               }
-
-               list($start,$dummy) = $this->get_table_pos('glyf');
-
-               $glyphSet = array();
-               ksort($subsetglyphs);
-               $n = 0;
-               $fsLastCharIndex = 0;   // maximum Unicode index (character code) in this font, according to the cmap subtable for platform ID 3 and platform- specific encoding ID 0 or 1.
-               foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
-                       $fsLastCharIndex = max($fsLastCharIndex , $uni); 
-                       $glyphSet[$originalGlyphIdx] = $n;      // old glyphID to new glyphID
-                       $n++;
-               }
-
-               ksort($subsetCharToGlyph);
-               foreach($subsetCharToGlyph AS $uni => $originalGlyphIdx) {
-                       $codeToGlyph[$uni] = $glyphSet[$originalGlyphIdx] ;
-               }
-               $this->codeToGlyph = $codeToGlyph;
-
-               ksort($subsetglyphs);
-               foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
-                       $this->getGlyphs($originalGlyphIdx, $start, $glyphSet, $subsetglyphs);
-               }
-
-               $numGlyphs = $numberOfHMetrics = count($subsetglyphs );
-
-               ///////////////////////////////////
-               // name - table copied from the original
-               ///////////////////////////////////
-               $this->add('name', $this->get_table('name'));
-
-               ///////////////////////////////////
-               //tables copied from the original
-               ///////////////////////////////////
-               $tags = array ('cvt ', 'fpgm', 'prep', 'gasp');
-               foreach($tags AS $tag) {
-                       if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
-               }
-
-               ///////////////////////////////////
-               // post - PostScript
-               ///////////////////////////////////
-               if (isset($this->tables['post'])) {
-                       $opost = $this->get_table('post');
-                       $post = "\x00\x03\x00\x00" . substr($opost,4,12) . "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
-                       $this->add('post', $post);
-               }
-
-               ///////////////////////////////////
-               // Sort CID2GID map into segments of contiguous codes
-               ///////////////////////////////////
-               ksort($codeToGlyph);
-               unset($codeToGlyph[0]);
-               //unset($codeToGlyph[65535]);
-               $rangeid = 0;
-               $range = array();
-               $prevcid = -2;
-               $prevglidx = -1;
-               // for each character
-               foreach ($codeToGlyph as $cid => $glidx) {
-                       if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) {
-                               $range[$rangeid][] = $glidx;
-                       } else {
-                               // new range
-                               $rangeid = $cid;
-                               $range[$rangeid] = array();
-                               $range[$rangeid][] = $glidx;
-                       }
-                       $prevcid = $cid;
-                       $prevglidx = $glidx;
-               }
-
-
-
-               ///////////////////////////////////
-               // CMap table
-               ///////////////////////////////////
-               // cmap - Character to glyph mapping 
-               $segCount = count($range) + 1;  // + 1 Last segment has missing character 0xFFFF
-               $searchRange = 1;
-               $entrySelector = 0;
-               while ($searchRange * 2 <= $segCount ) {
-                       $searchRange = $searchRange * 2;
-                       $entrySelector = $entrySelector + 1;
-               }
-               $searchRange = $searchRange * 2;
-               $rangeShift = $segCount * 2 - $searchRange;
-               $length = 16 + (8*$segCount ) + ($numGlyphs+1);
-               $cmap = array(0, 3,             // Index : version, number of encoding subtables
-                       0, 0,                           // Encoding Subtable : platform (UNI=0), encoding 0
-                       0, 28,                  // Encoding Subtable : offset (hi,lo)
-                       0, 3,                           // Encoding Subtable : platform (UNI=0), encoding 3
-                       0, 28,                  // Encoding Subtable : offset (hi,lo)
-                       3, 1,                           // Encoding Subtable : platform (MS=3), encoding 1
-                       0, 28,                  // Encoding Subtable : offset (hi,lo)
-                       4, $length, 0,          // Format 4 Mapping subtable: format, length, language
-                       $segCount*2,
-                       $searchRange,
-                       $entrySelector,
-                       $rangeShift);
-
-               // endCode(s)
-               foreach($range AS $start=>$subrange) {
-                       $endCode = $start + (count($subrange)-1);
-                       $cmap[] = $endCode;     // endCode(s)
-               }
-               $cmap[] =       0xFFFF; // endCode of last Segment
-               $cmap[] =       0;      // reservedPad
-
-               // startCode(s)
-               foreach($range AS $start=>$subrange) {
-                       $cmap[] = $start;       // startCode(s)
-               }
-               $cmap[] =       0xFFFF; // startCode of last Segment
-               // idDelta(s) 
-               foreach($range AS $start=>$subrange) {
-                       $idDelta = -($start-$subrange[0]);
-                       $n += count($subrange);
-                       $cmap[] = $idDelta;     // idDelta(s)
-               }
-               $cmap[] =       1;      // idDelta of last Segment
-               // idRangeOffset(s) 
-               foreach($range AS $subrange) {
-                       $cmap[] = 0;    // idRangeOffset[segCount]      Offset in bytes to glyph indexArray, or 0
-
-               }
-               $cmap[] =       0;      // idRangeOffset of last Segment
-               foreach($range AS $subrange) {
-                       foreach($subrange AS $glidx) {
-                               $cmap[] = $glidx;
-                       }
-               }
-               $cmap[] = 0;    // Mapping for last character
-               $cmapstr = '';
-               foreach($cmap AS $cm) { $cmapstr .= pack("n",$cm); }
-               $this->add('cmap', $cmapstr);
-
-
-               ///////////////////////////////////
-               // glyf - Glyph data
-               ///////////////////////////////////
-               list($glyfOffset,$glyfLength) = $this->get_table_pos('glyf');
-               if ($glyfLength < $this->maxStrLenRead) {
-                       $glyphData = $this->get_table('glyf');
-               }
-
-               $offsets = array();
-               $glyf = '';
-               $pos = 0;
-               $hmtxstr = '';
-               $xMinT = 0;
-               $yMinT = 0;
-               $xMaxT = 0;
-               $yMaxT = 0;
-               $advanceWidthMax = 0;
-               $minLeftSideBearing = 0;
-               $minRightSideBearing = 0;
-               $xMaxExtent = 0;
-               $maxPoints = 0;                 // points in non-compound glyph
-               $maxContours = 0;                       // contours in non-compound glyph
-               $maxComponentPoints = 0;        // points in compound glyph
-               $maxComponentContours = 0;      // contours in compound glyph
-               $maxComponentElements = 0;      // number of glyphs referenced at top level
-               $maxComponentDepth = 0;         // levels of recursion, set to 0 if font has only simple glyphs
-               $this->glyphdata = array();
-
-               foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
-                       // hmtx - Horizontal Metrics
-                       $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx);
-                       $hmtxstr .= $hm;
-
-                       $offsets[] = $pos;
-                       $glyphPos = $this->glyphPos[$originalGlyphIdx];
-                       $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
-                       if ($glyfLength < $this->maxStrLenRead) {
-                               $data = substr($glyphData,$glyphPos,$glyphLen);
-                       }
-                       else {
-                               if ($glyphLen > 0) $data = $this->get_chunk($glyfOffset+$glyphPos,$glyphLen);
-                               else $data = '';
-                       }
-
-                       if ($glyphLen > 0) {
-                         if (_RECALC_PROFILE) {
-                               $xMin = $this->unpack_short(substr($data,2,2));
-                               $yMin = $this->unpack_short(substr($data,4,2));
-                               $xMax = $this->unpack_short(substr($data,6,2));
-                               $yMax = $this->unpack_short(substr($data,8,2));
-                               $xMinT = min($xMinT,$xMin);
-                               $yMinT = min($yMinT,$yMin);
-                               $xMaxT = max($xMaxT,$xMax);
-                               $yMaxT = max($yMaxT,$yMax);
-                               $aw = $this->unpack_short(substr($hm,0,2)); 
-                               $lsb = $this->unpack_short(substr($hm,2,2));
-                               $advanceWidthMax = max($advanceWidthMax,$aw);
-                               $minLeftSideBearing = min($minLeftSideBearing,$lsb);
-                               $minRightSideBearing = min($minRightSideBearing,($aw - $lsb - ($xMax - $xMin)));
-                               $xMaxExtent = max($xMaxExtent,($lsb + ($xMax - $xMin)));
-                          }
-                               $up = unpack("n", substr($data,0,2));
-                       }
-                       if ($glyphLen > 2 && ($up[1] & (1 << 15)) ) {   // If number of contours <= -1 i.e. composiste glyph
-                               $pos_in_glyph = 10;
-                               $flags = GF_MORE;
-                               $nComponentElements = 0;
-                               while ($flags & GF_MORE) {
-                                       $nComponentElements += 1;       // number of glyphs referenced at top level
-                                       $up = unpack("n", substr($data,$pos_in_glyph,2));
-                                       $flags = $up[1];
-                                       $up = unpack("n", substr($data,$pos_in_glyph+2,2));
-                                       $glyphIdx = $up[1];
-                                       $this->glyphdata[$originalGlyphIdx]['compGlyphs'][] = $glyphIdx;
-                                       $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]);
-                                       $pos_in_glyph += 4;
-                                       if ($flags & GF_WORDS) { $pos_in_glyph += 4; }
-                                       else { $pos_in_glyph += 2; }
-                                       if ($flags & GF_SCALE) { $pos_in_glyph += 2; }
-                                       else if ($flags & GF_XYSCALE) { $pos_in_glyph += 4; }
-                                       else if ($flags & GF_TWOBYTWO) { $pos_in_glyph += 8; }
-                               }
-                               $maxComponentElements = max($maxComponentElements, $nComponentElements);
-                       }
-                       // Simple Glyph
-                       else if (_RECALC_PROFILE && $glyphLen > 2 && $up[1] < (1 << 15) && $up[1] > 0) {        // Number of contours > 0 simple glyph
-                               $nContours = $up[1];
-                               $this->glyphdata[$originalGlyphIdx]['nContours'] = $nContours;
-                               $maxContours = max($maxContours, $nContours);
-
-                               // Count number of points in simple glyph
-                               $pos_in_glyph = 10 + ($nContours  * 2) - 2;     // Last endContourPoint
-                               $up = unpack("n", substr($data,$pos_in_glyph,2));
-                               $points = $up[1]+1;
-                               $this->glyphdata[$originalGlyphIdx]['nPoints'] = $points;
-                               $maxPoints = max($maxPoints, $points);
-                       }
-
-                       $glyf .= $data;
-                       $pos += $glyphLen;
-                       if ($pos % 4 != 0) {
-                               $padding = 4 - ($pos % 4);
-                               $glyf .= str_repeat("\0",$padding);
-                               $pos += $padding;
-                       }
-               }
-
-               if (_RECALC_PROFILE) {
-                  foreach($this->glyphdata AS $originalGlyphIdx => $val) {
-                       $maxdepth = $depth = -1;
-                       $points = 0;
-                       $contours = 0;
-                       $this->getGlyphData($originalGlyphIdx, $maxdepth, $depth, $points, $contours) ;
-                       $maxComponentDepth = max($maxComponentDepth , $maxdepth);
-                       $maxComponentPoints = max($maxComponentPoints , $points);
-                       $maxComponentContours = max($maxComponentContours , $contours);
-                  }
-               }
-
-
-               $offsets[] = $pos;
-               $this->add('glyf', $glyf);
-
-               ///////////////////////////////////
-               // hmtx - Horizontal Metrics
-               ///////////////////////////////////
-               $this->add('hmtx', $hmtxstr);
-
-
-               ///////////////////////////////////
-               // loca - Index to location
-               ///////////////////////////////////
-               $locastr = '';
-               if ((($pos + 1) >> 1) > 0xFFFF) {
-                       $indexToLocFormat = 1;        // long format
-                       foreach($offsets AS $offset) { $locastr .= pack("N",$offset); }
-               }
-               else {
-                       $indexToLocFormat = 0;        // short format
-                       foreach($offsets AS $offset) { $locastr .= pack("n",($offset/2)); }
-               }
-               $this->add('loca', $locastr);
-
-               ///////////////////////////////////
-               // head - Font header
-               ///////////////////////////////////
-               $head = $this->get_table('head');
-               $head = $this->_set_ushort($head, 50, $indexToLocFormat);
-               if (_RECALC_PROFILE) {
-                       $head = $this->_set_short($head, 36, $xMinT);   // for all glyph bounding boxes
-                       $head = $this->_set_short($head, 38, $yMinT);   // for all glyph bounding boxes
-                       $head = $this->_set_short($head, 40, $xMaxT);   // for all glyph bounding boxes
-                       $head = $this->_set_short($head, 42, $yMaxT);   // for all glyph bounding boxes
-                       $head[17] = chr($head[17] & ~(1 << 4));         // Unset Bit 4 (as hdmx/LTSH tables not included)
-               }
-               $this->add('head', $head);
-
-
-               ///////////////////////////////////
-               // hhea - Horizontal Header
-               ///////////////////////////////////
-               $hhea = $this->get_table('hhea');
-               $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics);
-               if (_RECALC_PROFILE) {
-                       $hhea = $this->_set_ushort($hhea, 10, $advanceWidthMax);        
-                       $hhea = $this->_set_short($hhea, 12, $minLeftSideBearing);      
-                       $hhea = $this->_set_short($hhea, 14, $minRightSideBearing);     
-                       $hhea = $this->_set_short($hhea, 16, $xMaxExtent);      
-               }
-               $this->add('hhea', $hhea);
-
-               ///////////////////////////////////
-               // maxp - Maximum Profile
-               ///////////////////////////////////
-               $maxp = $this->get_table('maxp');
-               $maxp = $this->_set_ushort($maxp, 4, $numGlyphs);
-               if (_RECALC_PROFILE) {
-                       $maxp = $this->_set_ushort($maxp, 6, $maxPoints);       // points in non-compound glyph
-                       $maxp = $this->_set_ushort($maxp, 8, $maxContours);     // contours in non-compound glyph
-                       $maxp = $this->_set_ushort($maxp, 10, $maxComponentPoints);     // points in compound glyph
-                       $maxp = $this->_set_ushort($maxp, 12, $maxComponentContours);   // contours in compound glyph
-                       $maxp = $this->_set_ushort($maxp, 28, $maxComponentElements);   // number of glyphs referenced at top level
-                       $maxp = $this->_set_ushort($maxp, 30, $maxComponentDepth);      // levels of recursion, set to 0 if font has only simple glyphs
-               }
-               $this->add('maxp', $maxp);
-
-
-               ///////////////////////////////////
-               // OS/2 - OS/2
-               ///////////////////////////////////
-               if (isset($this->tables['OS/2'])) { 
-                       $os2_offset = $this->seek_table("OS/2");
-                       if (_RECALC_PROFILE) {
-                               $fsSelection = $this->get_ushort($os2_offset+62);
-                               $fsSelection = ($fsSelection & ~(1 << 6));      // 2-byte bit field containing information concerning the nature of the font patterns
-                                       // bit#0 = Italic; bit#5=Bold
-                                       // Match name table's font subfamily string
-                                       // Clear bit#6 used for 'Regular' and optional
-                       }
-
-                       // NB Currently this method never subsets characters above BMP
-                       // Could set nonBMP bit according to $this->maxUni 
-                       $nonBMP = $this->get_ushort($os2_offset+46);
-                       $nonBMP = ($nonBMP & ~(1 << 9));        // Unset Bit 57 (indicates non-BMP) - for interactive forms
-
-                       $os2 = $this->get_table('OS/2');
-                       if (_RECALC_PROFILE) {
-                               $os2 = $this->_set_ushort($os2, 62, $fsSelection);      
-                               $os2 = $this->_set_ushort($os2, 66, $fsLastCharIndex);
-                               $os2 = $this->_set_ushort($os2, 42, 0x0000);    // ulCharRange (ulUnicodeRange) bits 24-31 | 16-23
-                               $os2 = $this->_set_ushort($os2, 44, 0x0000);    // ulCharRange (Unicode ranges) bits  8-15 |  0-7
-                               $os2 = $this->_set_ushort($os2, 46, $nonBMP);   // ulCharRange (Unicode ranges) bits 56-63 | 48-55
-                               $os2 = $this->_set_ushort($os2, 48, 0x0000);    // ulCharRange (Unicode ranges) bits 40-47 | 32-39
-                               $os2 = $this->_set_ushort($os2, 50, 0x0000);    // ulCharRange (Unicode ranges) bits  88-95 | 80-87
-                               $os2 = $this->_set_ushort($os2, 52, 0x0000);    // ulCharRange (Unicode ranges) bits  72-79 | 64-71
-                               $os2 = $this->_set_ushort($os2, 54, 0x0000);    // ulCharRange (Unicode ranges) bits  120-127 | 112-119
-                               $os2 = $this->_set_ushort($os2, 56, 0x0000);    // ulCharRange (Unicode ranges) bits  104-111 | 96-103
-                       }
-                       $os2 = $this->_set_ushort($os2, 46, $nonBMP);   // Unset Bit 57 (indicates non-BMP) - for interactive forms
-
-                       $this->add('OS/2', $os2 );
-               }
-
-               fclose($this->fh);
-               // Put the TTF file together
-               $stm = '';
-               $this->endTTFile($stm);
-               //file_put_contents('testfont.ttf', $stm); exit;
-               return $stm ;
-       }
-
-//================================================================================
-
-       // Also does SMP
-       function makeSubsetSIP($file, &$subset, $TTCfontID=0, $debug=false) {
-               $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
-               $this->filename = $file;
-               $this->_pos = 0;
-               $this->unAGlyphs = false;       // mPDF 5.4.05
-               $this->charWidths = '';
-               $this->glyphPos = array();
-               $this->charToGlyph = array();
-               $this->tables = array();
-               $this->otables = array();
-               $this->ascent = 0;
-               $this->descent = 0;
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->skip(4);
-               if ($TTCfontID > 0) {
-                       $this->version = $version = $this->read_ulong();        // TTC Header version now
-                       if (!in_array($version, array(0x00010000,0x00020000)))
-                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
-                       $this->numTTCFonts = $this->read_ulong();
-                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-                       }
-                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
-                       $this->version = $version = $this->read_ulong();        // TTFont version again now
-               }
-               $this->readTableDirectory($debug);
-
-
-
-               ///////////////////////////////////
-               // head - Font header table
-               ///////////////////////////////////
-               $this->seek_table("head");
-               $this->skip(50); 
-               $indexToLocFormat = $this->read_ushort();
-               $glyphDataFormat = $this->read_ushort();
-
-               ///////////////////////////////////
-               // hhea - Horizontal header table
-               ///////////////////////////////////
-               $this->seek_table("hhea");
-               $this->skip(32); 
-               $metricDataFormat = $this->read_ushort();
-               $orignHmetrics = $numberOfHMetrics = $this->read_ushort();
-
-               ///////////////////////////////////
-               // maxp - Maximum profile table
-               ///////////////////////////////////
-               $this->seek_table("maxp");
-               $this->skip(4);
-               $numGlyphs = $this->read_ushort();
-
-
-               ///////////////////////////////////
-               // cmap - Character to glyph index mapping table
-               ///////////////////////////////////
-
-               $cmap_offset = $this->seek_table("cmap");
-               $this->skip(2);
-               $cmapTableCount = $this->read_ushort();
-               $unicode_cmap_offset = 0;
-               for ($i=0;$i<$cmapTableCount;$i++) {
-                       $platformID = $this->read_ushort();
-                       $encodingID = $this->read_ushort();
-                       $offset = $this->read_ulong();
-                       $save_pos = $this->_pos;
-                       if (($platformID == 3 && $encodingID == 10) || $platformID == 0) { // Microsoft, Unicode Format 12 table HKCS
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 12) {
-                                       $unicode_cmap_offset = $cmap_offset + $offset;
-                                       break;
-                               }
-                       }
-                       $this->seek($save_pos );
-               }
-
-               if (!$unicode_cmap_offset)
-                       die('Font does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)');
-               // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
-               if ($format == 12) {
-                       $this->maxUniChar = 0;
-                       $this->seek($unicode_cmap_offset + 4);
-                       $length = $this->read_ulong();
-                       $limit = $unicode_cmap_offset + $length;
-                       $this->skip(4);
-
-                       $nGroups = $this->read_ulong();
-
-                       $glyphToChar = array();
-                       $charToGlyph = array();
-                       for($i=0; $i<$nGroups ; $i++) { 
-                               $startCharCode = $this->read_ulong(); 
-                               $endCharCode = $this->read_ulong(); 
-                               $startGlyphCode = $this->read_ulong(); 
-                               $offset = 0;
-                               for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
-                                       $glyph = $startGlyphCode + $offset ;
-                                       $offset++;
-                                       $charToGlyph[$unichar] = $glyph;
-                                       if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
-                                       $glyphToChar[$glyph][] = $unichar;
-                               }
-                       }
-               }
-               else 
-                       die('Font does not have cmap for Unicode (format 12)');
-
-
-               ///////////////////////////////////
-               // hmtx - Horizontal metrics table
-               ///////////////////////////////////
-               $scale = 1; // not used here
-               $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
-
-               ///////////////////////////////////
-               // loca - Index to location
-               ///////////////////////////////////
-               $this->getLOCA($indexToLocFormat, $numGlyphs);
-
-               ///////////////////////////////////////////////////////////////////
-
-               $glyphMap = array(0=>0); 
-               $glyphSet = array(0=>0);
-               $codeToGlyph = array();
-               // Set a substitute if ASCII characters do not have glyphs
-               if (isset($charToGlyph[0x3F])) { $subs = $charToGlyph[0x3F]; }  // Question mark
-               else { $subs = $charToGlyph[32]; }
-               foreach($subset AS $code) {
-                       if (isset($charToGlyph[$code]))
-                               $originalGlyphIdx = $charToGlyph[$code];
-                       else if ($code<128) {
-                               $originalGlyphIdx = $subs;
-                       }
-                       else { $originalGlyphIdx = 0; }
-                       if (!isset($glyphSet[$originalGlyphIdx])) {
-                               $glyphSet[$originalGlyphIdx] = count($glyphMap);
-                               $glyphMap[] = $originalGlyphIdx;
-                       }
-                       $codeToGlyph[$code] = $glyphSet[$originalGlyphIdx];
-               }
-
-               list($start,$dummy) = $this->get_table_pos('glyf');
-
-               $n = 0;
-               while ($n < count($glyphMap)) {
-                       $originalGlyphIdx = $glyphMap[$n];
-                       $glyphPos = $this->glyphPos[$originalGlyphIdx];
-                       $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
-                       $n += 1;
-                       if (!$glyphLen) continue;
-                       $this->seek($start + $glyphPos);
-                       $numberOfContours = $this->read_short();
-                       if ($numberOfContours < 0) {
-                               $this->skip(8);
-                               $flags = GF_MORE;
-                               while ($flags & GF_MORE) {
-                                       $flags = $this->read_ushort();
-                                       $glyphIdx = $this->read_ushort();
-                                       if (!isset($glyphSet[$glyphIdx])) {
-                                               $glyphSet[$glyphIdx] = count($glyphMap);
-                                               $glyphMap[] = $glyphIdx;
-                                       }
-                                       if ($flags & GF_WORDS)
-                                               $this->skip(4);
-                                       else
-                                               $this->skip(2);
-                                       if ($flags & GF_SCALE)
-                                               $this->skip(2);
-                                       else if ($flags & GF_XYSCALE)
-                                               $this->skip(4);
-                                       else if ($flags & GF_TWOBYTWO)
-                                               $this->skip(8);
-                               }
-                       }
-               }
-
-               $numGlyphs = $n = count($glyphMap);
-               $numberOfHMetrics = $n;
-
-               ///////////////////////////////////
-               // name
-               ///////////////////////////////////
-               // Needs to have a name entry in 3,0 (e.g. symbol) - original font will be 3,1 (i.e. Unicode)
-               $name = $this->get_table('name'); 
-               $name_offset = $this->seek_table("name");
-               $format = $this->read_ushort();
-               $numRecords = $this->read_ushort();
-               $string_data_offset = $name_offset + $this->read_ushort();
-               for ($i=0;$i<$numRecords; $i++) {
-                       $platformId = $this->read_ushort();
-                       $encodingId = $this->read_ushort();
-                       if ($platformId == 3 && $encodingId == 1) {
-                               $pos = 6 + ($i * 12) + 2;
-                               $name = $this->_set_ushort($name, $pos, 0x00);  // Change encoding to 3,0 rather than 3,1
-                       }
-                       $this->skip(8);
-               }
-               $this->add('name', $name);
-
-               ///////////////////////////////////
-               // OS/2
-               ///////////////////////////////////
-               if (isset($this->tables['OS/2'])) { 
-                       $os2 = $this->get_table('OS/2');
-                       $os2 = $this->_set_ushort($os2, 42, 0x00);      // ulCharRange (Unicode ranges)
-                       $os2 = $this->_set_ushort($os2, 44, 0x00);      // ulCharRange (Unicode ranges)
-                       $os2 = $this->_set_ushort($os2, 46, 0x00);      // ulCharRange (Unicode ranges)
-                       $os2 = $this->_set_ushort($os2, 48, 0x00);      // ulCharRange (Unicode ranges)
-
-                       $os2 = $this->_set_ushort($os2, 50, 0x00);      // ulCharRange (Unicode ranges)
-                       $os2 = $this->_set_ushort($os2, 52, 0x00);      // ulCharRange (Unicode ranges)
-                       $os2 = $this->_set_ushort($os2, 54, 0x00);      // ulCharRange (Unicode ranges)
-                       $os2 = $this->_set_ushort($os2, 56, 0x00);      // ulCharRange (Unicode ranges)
-                       // Set Symbol character only in ulCodePageRange
-                       $os2 = $this->_set_ushort($os2, 78, 0x8000);    // ulCodePageRange = Bit #31 Symbol ****  78 = Bit 16-31
-                       $os2 = $this->_set_ushort($os2, 80, 0x0000);    // ulCodePageRange = Bit #31 Symbol ****  80 = Bit 0-15
-                       $os2 = $this->_set_ushort($os2, 82, 0x0000);    // ulCodePageRange = Bit #32- Symbol **** 82 = Bits 48-63
-                       $os2 = $this->_set_ushort($os2, 84, 0x0000);    // ulCodePageRange = Bit #32- Symbol **** 84 = Bits 32-47
-       
-                       $os2 = $this->_set_ushort($os2, 64, 0x01);              // FirstCharIndex
-                       $os2 = $this->_set_ushort($os2, 66, count($subset));            // LastCharIndex
-                       // Set PANOSE first bit to 5 for Symbol
-                       $os2 = $this->splice($os2, 32, chr(5).chr(0).chr(1).chr(0).chr(1).chr(0).chr(0).chr(0).chr(0).chr(0));
-                       $this->add('OS/2', $os2 );
-               }
-
-
-               ///////////////////////////////////
-               //tables copied from the original
-               ///////////////////////////////////
-               $tags = array ('cvt ', 'fpgm', 'prep', 'gasp'); 
-               foreach($tags AS $tag) {        // 1.02
-                       if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); } 
-               }
-
-               ///////////////////////////////////
-               // post - PostScript
-               ///////////////////////////////////
-               if (isset($this->tables['post'])) { 
-                       $opost = $this->get_table('post');
-                       $post = "\x00\x03\x00\x00" . substr($opost,4,12) . "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
-               }
-               $this->add('post', $post);
-
-               ///////////////////////////////////
-               // hhea - Horizontal Header
-               ///////////////////////////////////
-               $hhea = $this->get_table('hhea');
-               $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics);
-               $this->add('hhea', $hhea);
-
-               ///////////////////////////////////
-               // maxp - Maximum Profile
-               ///////////////////////////////////
-               $maxp = $this->get_table('maxp');
-               $maxp = $this->_set_ushort($maxp, 4, $numGlyphs);
-               $this->add('maxp', $maxp);
-
-
-               ///////////////////////////////////
-               // CMap table Formats [1,0,]6 and [3,0,]4
-               ///////////////////////////////////
-               ///////////////////////////////////
-               // Sort CID2GID map into segments of contiguous codes
-               ///////////////////////////////////
-               $rangeid = 0;
-               $range = array();
-               $prevcid = -2;
-               $prevglidx = -1;
-               // for each character
-               foreach ($subset as $cid => $code) {
-                       $glidx = $codeToGlyph[$code]; 
-                       if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) {
-                               $range[$rangeid][] = $glidx;
-                       } else {
-                               // new range
-                               $rangeid = $cid;
-                               $range[$rangeid] = array();
-                               $range[$rangeid][] = $glidx;
-                       }
-                       $prevcid = $cid;
-                       $prevglidx = $glidx;
-               }
-               // cmap - Character to glyph mapping 
-               $segCount = count($range) + 1;  // + 1 Last segment has missing character 0xFFFF
-               $searchRange = 1;
-               $entrySelector = 0;
-               while ($searchRange * 2 <= $segCount ) {
-                       $searchRange = $searchRange * 2;
-                       $entrySelector = $entrySelector + 1;
-               }
-               $searchRange = $searchRange * 2;
-               $rangeShift = $segCount * 2 - $searchRange;
-               $length = 16 + (8*$segCount ) + ($numGlyphs+1);
-               $cmap = array(
-                       4, $length, 0,          // Format 4 Mapping subtable: format, length, language
-                       $segCount*2,
-                       $searchRange,
-                       $entrySelector,
-                       $rangeShift);
-
-               // endCode(s)
-               foreach($range AS $start=>$subrange) {
-                       $endCode = $start + (count($subrange)-1);
-                       $cmap[] = $endCode;     // endCode(s)
-               }
-               $cmap[] =       0xFFFF; // endCode of last Segment
-               $cmap[] =       0;      // reservedPad
-
-               // startCode(s)
-               foreach($range AS $start=>$subrange) {
-                       $cmap[] = $start;       // startCode(s)
-               }
-               $cmap[] =       0xFFFF; // startCode of last Segment
-               // idDelta(s) 
-               foreach($range AS $start=>$subrange) {
-                       $idDelta = -($start-$subrange[0]);
-                       $n += count($subrange);
-                       $cmap[] = $idDelta;     // idDelta(s)
-               }
-               $cmap[] =       1;      // idDelta of last Segment
-               // idRangeOffset(s) 
-               foreach($range AS $subrange) {
-                       $cmap[] = 0;    // idRangeOffset[segCount]      Offset in bytes to glyph indexArray, or 0
-
-               }
-               $cmap[] =       0;      // idRangeOffset of last Segment
-               foreach($range AS $subrange) {
-                       foreach($subrange AS $glidx) {
-                               $cmap[] = $glidx;
-                       }
-               }
-               $cmap[] = 0;    // Mapping for last character
-               $cmapstr4 = '';
-               foreach($cmap AS $cm) { $cmapstr4 .= pack("n",$cm); }
-
-               ///////////////////////////////////
-               // cmap - Character to glyph mapping
-               ///////////////////////////////////
-               $entryCount = count($subset);
-               $length = 10 + $entryCount * 2;
-
-               $off = 20 + $length;
-               $hoff = $off >> 16;
-               $loff = $off & 0xFFFF;
-
-               $cmap = array(0, 2,     // Index : version, number of subtables
-                       1, 0,                   // Subtable : platform, encoding
-                       0, 20,          // offset (hi,lo)
-                       3, 0,                   // Subtable : platform, encoding
-                       $hoff, $loff,   // offset (hi,lo)
-                       6, $length,     // Format 6 Mapping table: format, length
-                       0, 1,                   // language, First char code
-                       $entryCount
-               );
-               $cmapstr = '';
-               foreach($subset AS $code) { $cmap[] = $codeToGlyph[$code]; }
-               foreach($cmap AS $cm) { $cmapstr .= pack("n",$cm); }
-               $cmapstr .= $cmapstr4;
-               $this->add('cmap', $cmapstr);
-
-               ///////////////////////////////////
-               // hmtx - Horizontal Metrics
-               ///////////////////////////////////
-               $hmtxstr = '';
-               for($n=0;$n<$numGlyphs;$n++) {
-                       $originalGlyphIdx = $glyphMap[$n];
-                       $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx);
-                       $hmtxstr .= $hm;
-               }
-               $this->add('hmtx', $hmtxstr);
-
-               ///////////////////////////////////
-               // glyf - Glyph data
-               ///////////////////////////////////
-               list($glyfOffset,$glyfLength) = $this->get_table_pos('glyf');
-               if ($glyfLength < $this->maxStrLenRead) {
-                       $glyphData = $this->get_table('glyf');
-               }
-
-               $offsets = array();
-               $glyf = '';
-               $pos = 0;
-               for ($n=0;$n<$numGlyphs;$n++) {
-                       $offsets[] = $pos;
-                       $originalGlyphIdx = $glyphMap[$n];
-                       $glyphPos = $this->glyphPos[$originalGlyphIdx];
-                       $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
-                       if ($glyfLength < $this->maxStrLenRead) {
-                               $data = substr($glyphData,$glyphPos,$glyphLen);
-                       }
-                       else {
-                               if ($glyphLen > 0) $data = $this->get_chunk($glyfOffset+$glyphPos,$glyphLen);
-                               else $data = '';
-                       }
-                       if ($glyphLen > 0) $up = unpack("n", substr($data,0,2));
-                       if ($glyphLen > 2 && ($up[1] & (1 << 15)) ) {
-                               $pos_in_glyph = 10;
-                               $flags = GF_MORE;
-                               while ($flags & GF_MORE) {
-                                       $up = unpack("n", substr($data,$pos_in_glyph,2));
-                                       $flags = $up[1];
-                                       $up = unpack("n", substr($data,$pos_in_glyph+2,2));
-                                       $glyphIdx = $up[1];
-                                       $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]);
-                                       $pos_in_glyph += 4;
-                                       if ($flags & GF_WORDS) { $pos_in_glyph += 4; }
-                                       else { $pos_in_glyph += 2; }
-                                       if ($flags & GF_SCALE) { $pos_in_glyph += 2; }
-                                       else if ($flags & GF_XYSCALE) { $pos_in_glyph += 4; }
-                                       else if ($flags & GF_TWOBYTWO) { $pos_in_glyph += 8; }
-                               }
-                       }
-                       $glyf .= $data;
-                       $pos += $glyphLen;
-                       if ($pos % 4 != 0) {
-                               $padding = 4 - ($pos % 4);
-                               $glyf .= str_repeat("\0",$padding);
-                               $pos += $padding;
-                       }
-               }
-               $offsets[] = $pos;
-               $this->add('glyf', $glyf);
-
-               ///////////////////////////////////
-               // loca - Index to location
-               ///////////////////////////////////
-               $locastr = '';
-               if ((($pos + 1) >> 1) > 0xFFFF) {
-                       $indexToLocFormat = 1;        // long format
-                       foreach($offsets AS $offset) { $locastr .= pack("N",$offset); }
-               }
-               else {
-                       $indexToLocFormat = 0;        // short format
-                       foreach($offsets AS $offset) { $locastr .= pack("n",($offset/2)); }
-               }
-               $this->add('loca', $locastr);
-
-               ///////////////////////////////////
-               // head - Font header
-               ///////////////////////////////////
-               $head = $this->get_table('head');
-               $head = $this->_set_ushort($head, 50, $indexToLocFormat);
-               $this->add('head', $head);
-
-               fclose($this->fh);
-
-               // Put the TTF file together
-               $stm = '';
-               $this->endTTFile($stm);
-               //file_put_contents('testfont.ttf', $stm); exit;
-               return $stm ;
-       }
-
-       //////////////////////////////////////////////////////////////////////////////////
-       // Recursively get composite glyph data
-       function getGlyphData($originalGlyphIdx, &$maxdepth, &$depth, &$points, &$contours) {
-               $depth++;
-               $maxdepth = max($maxdepth, $depth);
-               if (count($this->glyphdata[$originalGlyphIdx]['compGlyphs'])) {
-                       foreach($this->glyphdata[$originalGlyphIdx]['compGlyphs'] AS $glyphIdx) {
-                               $this->getGlyphData($glyphIdx, $maxdepth, $depth, $points, $contours);
-                       }
-               }
-               else if (($this->glyphdata[$originalGlyphIdx]['nContours'] > 0) && $depth > 0) {        // simple
-                       $contours += $this->glyphdata[$originalGlyphIdx]['nContours'];
-                       $points += $this->glyphdata[$originalGlyphIdx]['nPoints'];
-               }
-               $depth--;
-       }
-
-
-       //////////////////////////////////////////////////////////////////////////////////
-       // Recursively get composite glyphs
-       function getGlyphs($originalGlyphIdx, &$start, &$glyphSet, &$subsetglyphs) {
-               $glyphPos = $this->glyphPos[$originalGlyphIdx];
-               $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
-               if (!$glyphLen) { 
-                       return;
-               }
-               $this->seek($start + $glyphPos);
-               $numberOfContours = $this->read_short();
-               if ($numberOfContours < 0) {
-                       $this->skip(8);
-                       $flags = GF_MORE;
-                       while ($flags & GF_MORE) {
-                               $flags = $this->read_ushort();
-                               $glyphIdx = $this->read_ushort();
-                               if (!isset($glyphSet[$glyphIdx])) {
-                                       $glyphSet[$glyphIdx] = count($subsetglyphs);    // old glyphID to new glyphID
-                                       $subsetglyphs[$glyphIdx] = true;
-                               }
-                               $savepos = ftell($this->fh);
-                               $this->getGlyphs($glyphIdx, $start, $glyphSet, $subsetglyphs);
-                               $this->seek($savepos);
-                               if ($flags & GF_WORDS)
-                                       $this->skip(4);
-                               else
-                                       $this->skip(2);
-                               if ($flags & GF_SCALE)
-                                       $this->skip(2);
-                               else if ($flags & GF_XYSCALE)
-                                       $this->skip(4);
-                               else if ($flags & GF_TWOBYTWO)
-                                       $this->skip(8);
-                       }
-               }
-       }
-
-       //////////////////////////////////////////////////////////////////////////////////
-
-       function getHMTX($numberOfHMetrics, $numGlyphs, &$glyphToChar, $scale) {
-               $start = $this->seek_table("hmtx");
-               $aw = 0;
-               $this->charWidths = str_pad('', 256*256*2, "\x00");
-               if ($this->maxUniChar > 65536) { $this->charWidths .= str_pad('', 256*256*2, "\x00"); } // Plane 1 SMP
-               if ($this->maxUniChar > 131072) { $this->charWidths .= str_pad('', 256*256*2, "\x00"); }        // Plane 2 SMP
-               $nCharWidths = 0;
-               if (($numberOfHMetrics*4) < $this->maxStrLenRead) {
-                       $data = $this->get_chunk($start,($numberOfHMetrics*4));
-                       $arr = unpack("n*", $data);
-               }
-               else { $this->seek($start); }
-               for( $glyph=0; $glyph<$numberOfHMetrics; $glyph++) {
-                       if (($numberOfHMetrics*4) < $this->maxStrLenRead) {
-                               $aw = $arr[($glyph*2)+1];
-                       }
-                       else {
-                               $aw = $this->read_ushort();
-                               $lsb = $this->read_ushort();
-                       }
-                       if (isset($glyphToChar[$glyph]) || $glyph == 0) {
-
-                               if ($aw >= (1 << 15) ) { $aw = 0; }     // 1.03 Some (arabic) fonts have -ve values for width
-                                       // although should be unsigned value - comes out as e.g. 65108 (intended -50)
-                               if ($glyph == 0) {
-                                       $this->defaultWidth = $scale*$aw;
-                                       continue;
-                               }
-                               foreach($glyphToChar[$glyph] AS $char) {
-                                       //$this->charWidths[$char] = intval(round($scale*$aw));
-                                       if ($char != 0 && $char != 65535) {
-                                               $w = intval(round($scale*$aw));
-                                               if ($w == 0) { $w = 65535; }
-                                               if ($char < 196608) {
-                                                       $this->charWidths[$char*2] = chr($w >> 8);
-                                                       $this->charWidths[$char*2 + 1] = chr($w & 0xFF);
-                                                       $nCharWidths++;
-                                               }
-                                       }
-                               }
-                       }
-               }
-               $data = $this->get_chunk(($start+$numberOfHMetrics*4),($numGlyphs*2));
-               $arr = unpack("n*", $data);
-               $diff = $numGlyphs-$numberOfHMetrics;
-               $w = intval(round($scale*$aw));
-               if ($w == 0) { $w = 65535; }
-               for( $pos=0; $pos<$diff; $pos++) {
-                       $glyph = $pos + $numberOfHMetrics;
-                       if (isset($glyphToChar[$glyph])) {
-                               foreach($glyphToChar[$glyph] AS $char) {
-                                       if ($char != 0 && $char != 65535) {
-                                               if ($char < 196608) { 
-                                                       $this->charWidths[$char*2] = chr($w >> 8);
-                                                       $this->charWidths[$char*2 + 1] = chr($w & 0xFF);
-                                                       $nCharWidths++;
-                                               }
-                                       }
-                               }
-                       }
-               }
-               // NB 65535 is a set width of 0
-               // First bytes define number of chars in font
-               $this->charWidths[0] = chr($nCharWidths >> 8);
-               $this->charWidths[1] = chr($nCharWidths & 0xFF);
-       }
-
-       function getHMetric($numberOfHMetrics, $gid) {
-               $start = $this->seek_table("hmtx");
-               if ($gid < $numberOfHMetrics) {
-                       $this->seek($start+($gid*4));
-                       $hm = fread($this->fh,4);
-               }
-               else {
-                       $this->seek($start+(($numberOfHMetrics-1)*4));
-                       $hm = fread($this->fh,2);
-                       $this->seek($start+($numberOfHMetrics*2)+($gid*2));
-                       $hm .= fread($this->fh,2);
-               }
-               return $hm;
-       }
-
-       function getLOCA($indexToLocFormat, $numGlyphs) {
-               $start = $this->seek_table('loca');
-               $this->glyphPos = array();
-               if ($indexToLocFormat == 0) {
-                       $data = $this->get_chunk($start,($numGlyphs*2)+2);
-                       $arr = unpack("n*", $data);
-                       for ($n=0; $n<=$numGlyphs; $n++) {
-                               $this->glyphPos[] = ($arr[$n+1] * 2);
-                       }
-               }
-               else if ($indexToLocFormat == 1) {
-                       $data = $this->get_chunk($start,($numGlyphs*4)+4);
-                       $arr = unpack("N*", $data);
-                       for ($n=0; $n<=$numGlyphs; $n++) {
-                               $this->glyphPos[] = ($arr[$n+1]);
-                       }
-               }
-               else 
-                       die('Unknown location table format '.$indexToLocFormat);
-       }
-
-
-       // CMAP Format 4
-       function getCMAP4($unicode_cmap_offset, &$glyphToChar, &$charToGlyph ) {
-               $this->maxUniChar = 0;  
-               $this->seek($unicode_cmap_offset + 2);
-               $length = $this->read_ushort();
-               $limit = $unicode_cmap_offset + $length;
-               $this->skip(2);
-
-               $segCount = $this->read_ushort() / 2;
-               $this->skip(6);
-               $endCount = array();
-               for($i=0; $i<$segCount; $i++) { $endCount[] = $this->read_ushort(); }
-               $this->skip(2);
-               $startCount = array();
-               for($i=0; $i<$segCount; $i++) { $startCount[] = $this->read_ushort(); }
-               $idDelta = array();
-               for($i=0; $i<$segCount; $i++) { $idDelta[] = $this->read_short(); }             // ???? was unsigned short
-               $idRangeOffset_start = $this->_pos;
-               $idRangeOffset = array();
-               for($i=0; $i<$segCount; $i++) { $idRangeOffset[] = $this->read_ushort(); }
-
-               for ($n=0;$n<$segCount;$n++) {
-                       $endpoint = ($endCount[$n] + 1);
-                       for ($unichar=$startCount[$n];$unichar<$endpoint;$unichar++) {
-                               if ($idRangeOffset[$n] == 0)
-                                       $glyph = ($unichar + $idDelta[$n]) & 0xFFFF;
-                               else {
-                                       $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n];
-                                       $offset = $idRangeOffset_start + 2 * $n + $offset;
-                                       if ($offset >= $limit)
-                                               $glyph = 0;
-                                       else {
-                                               $glyph = $this->get_ushort($offset);
-                                               if ($glyph != 0)
-                                                  $glyph = ($glyph + $idDelta[$n]) & 0xFFFF;
-                                       }
-                               }
-                               $charToGlyph[$unichar] = $glyph;
-                               if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
-                               $glyphToChar[$glyph][] = $unichar;
-                       }
-               }
-
-               // mPDF 5.4.05
-               if ($this->unAGlyphs) {
-                 if (isset($this->tables['post'])) {
-                       $this->seek_table("post");
-                       $formata = $this->read_ushort();
-                       $formatb = $this->read_ushort();
-                       // Only works on Format 2.0
-                       if ($formata != 2 || $formatb != 0) { die("Cannot set unAGlyphs for this font (".$file."). POST table must be in Format 2."); }
-                       $this->skip(28);
-                       $nGlyfs = $this->read_ushort();
-                       $glyphNameIndex = array();
-                       for ($i=0; $i<$nGlyfs; $i++) {
-                               $glyphNameIndex[($this->read_ushort())] = $i;
-                       }
-
-                       $opost = $this->get_table('post');
-                       $ptr = 34+($nGlyfs*2);
-                       for ($i=0; $i<$nGlyfs; $i++) {
-                               $len = ord(substr($opost,$ptr,1));
-                               $ptr++;
-                               $name = substr($opost,$ptr,$len);
-                               $gid = $glyphNameIndex[$i+258];
-                               // Select uni0600.xxx(x) - uni06FF.xxx(x)
-                               if (preg_match('/^uni(06[0-9a-f]{2})\.(fina|medi|init|fin|med|ini)$/i',$name,$m)) {
-                                 if (!isset($glyphToChar[$gid]) || (isset($glyphToChar[$gid]) && is_array($glyphToChar[$gid]) && count($glyphToChar[$gid])==1 && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489)) {        // if set in PUA private use area E000-F8FF, or NOT Unicode mapped
-                                       $uni = hexdec($m[1]);
-                                       $form = strtoupper(substr($m[2],0,1));
-                                       // Assign new PUA Unicode between F500 - F7FF
-                                       $bit = $uni & 0xFF;
-                                       if ($form == 'I') { $bit += 0xF600; }
-                                       else if ($form == 'M') { $bit += 0xF700; }
-                                       else  { $bit += 0xF500; }
-                                       // ADD TO CMAP
-                                       $glyphToChar[$gid][] = $bit;
-                                       $charToGlyph[$bit] = $gid;
-                                 }
-                               }
-                               // LAM with ALEF ligatures (Mandatory ligatures)
-                               else if (preg_match('/^uni064406(22|23|25|27)(\.fina|\.fin){0,1}$/i',$name,$m)) {
-                                 if ($m[1]=='22') {
-                                       if ($m[2]) { $uni = hexdec('FEF6'); } else { $uni = hexdec('FEF5'); } 
-                                 }
-                                 else if ($m[1]=='23') {
-                                       if ($m[2]) { $uni = hexdec('FEF8'); } else { $uni = hexdec('FEF7'); } 
-                                 }
-                                 else if ($m[1]=='25') {
-                                       if ($m[2]) { $uni = hexdec('FEFA'); } else { $uni = hexdec('FEF9'); } 
-                                 }
-                                 else if ($m[1]=='27') {
-                                       if ($m[2]) { $uni = hexdec('FEFC'); } else { $uni = hexdec('FEFB'); } 
-                                 }
-                                 if (!isset($glyphToChar[$gid]) || (isset($glyphToChar[$gid]) && is_array($glyphToChar[$gid]) && count($glyphToChar[$gid])==1 && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489)) {        // if set in PUA private use area E000-F8FF, or NOT Unicode mapped
-                                       // ADD TO CMAP
-                                       $glyphToChar[$gid][] = $uni;
-                                       $charToGlyph[$uni] = $gid;
-                                 }
-                               }
-                               $ptr += $len;
-                       }
-                 }
-               }
-
-       }
-
-
-               // Put the TTF file together
-       function endTTFile(&$stm) {
-               $stm = '';
-               $numTables = count($this->otables);
-               $searchRange = 1;
-               $entrySelector = 0;
-               while ($searchRange * 2 <= $numTables) {
-                       $searchRange = $searchRange * 2;
-                       $entrySelector = $entrySelector + 1;
-               }
-               $searchRange = $searchRange * 16;
-               $rangeShift = $numTables * 16 - $searchRange;
-
-               // Header
-               if (_TTF_MAC_HEADER) {
-                       $stm .= (pack("Nnnnn", 0x74727565, $numTables, $searchRange, $entrySelector, $rangeShift));     // Mac
-               }
-               else {
-                       $stm .= (pack("Nnnnn", 0x00010000 , $numTables, $searchRange, $entrySelector, $rangeShift));    // Windows
-               }
-
-               // Table directory
-               $tables = $this->otables;
-               ksort ($tables); 
-               $offset = 12 + $numTables * 16;
-               foreach ($tables AS $tag=>$data) {
-                       if ($tag == 'head') { $head_start = $offset; }
-                       $stm .= $tag;
-                       $checksum = $this->calcChecksum($data);
-                       $stm .= pack("nn", $checksum[0],$checksum[1]);
-                       $stm .= pack("NN", $offset, strlen($data));
-                       $paddedLength = (strlen($data)+3)&~3;
-                       $offset = $offset + $paddedLength;
-               }
-
-               // Table data
-               foreach ($tables AS $tag=>$data) {
-                       $data .= "\0\0\0";
-                       $stm .= substr($data,0,(strlen($data)&~3));
-               }
-
-               $checksum = $this->calcChecksum($stm);
-               $checksum = $this->sub32(array(0xB1B0,0xAFBA), $checksum);
-               $chk = pack("nn", $checksum[0],$checksum[1]);
-               $stm = $this->splice($stm,($head_start + 8),$chk);
-               return $stm ;
-       }
-
-
-       function repackageTTF($file, $TTCfontID=0, $debug=false, $unAGlyphs=false) {    // mPDF 5.4.05
-               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
-               $this->filename = $file;
-               $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
-               $this->_pos = 0;
-               $this->charWidths = '';
-               $this->glyphPos = array();
-               $this->charToGlyph = array();
-               $this->tables = array();
-               $this->otables = array();
-               $this->ascent = 0;
-               $this->descent = 0;
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->skip(4);
-               $this->maxUni = 0;
-               if ($TTCfontID > 0) {
-                       $this->version = $version = $this->read_ulong();        // TTC Header version now
-                       if (!in_array($version, array(0x00010000,0x00020000)))
-                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
-                       $this->numTTCFonts = $this->read_ulong();
-                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-                       }
-                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
-                       $this->version = $version = $this->read_ulong();        // TTFont version again now
-               }
-               $this->readTableDirectory($debug);
-               $tags = array ('OS/2', 'cmap', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'name', 'post', 'cvt ', 'fpgm', 'gasp', 'prep');
-/*
-Tables which require glyphIndex
-hdmx
-kern
-LTSH
-
-Tables which do NOT require glyphIndex
-VDMX
-
-GDEF
-GPOS
-GSUB
-JSTF
-
-DSIG
-PCLT - not recommended
-*/
-
-               foreach($tags AS $tag) {
-                       if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
-               }
-               fclose($this->fh);
-               $stm = '';
-               $this->endTTFile($stm);
-               return $stm ;
-       }
-
-
-}
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php b/inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php
deleted file mode 100644 (file)
index 3f2ccce..0000000
+++ /dev/null
@@ -1,463 +0,0 @@
-<?php
-
-require_once(_MPDF_PATH.'classes/ttfontsuni.php');
-
-class TTFontFile_Analysis EXTENDS TTFontFile {
-
-       // Used to get font information from files in directory
-       function extractCoreInfo($file, $TTCfontID=0) {
-               $this->filename = $file;
-               $this->fh = fopen($file,'rb');
-               if (!$this->fh) { return ('ERROR - Can\'t open file ' . $file); }
-               $this->_pos = 0;
-               $this->charWidths = '';
-               $this->glyphPos = array();
-               $this->charToGlyph = array();
-               $this->tables = array();
-               $this->otables = array();
-               $this->ascent = 0;
-               $this->descent = 0;
-               $this->numTTCFonts = 0;
-               $this->TTCFonts = array();
-               $this->version = $version = $this->read_ulong();
-               $this->panose = array();        // mPDF 5.0
-               if ($version==0x4F54544F) 
-                       return("ERROR - NOT ADDED as Postscript outlines are not supported - " . $file);
-               if ($version==0x74746366) {
-                       if ($TTCfontID > 0) {
-                               $this->version = $version = $this->read_ulong();        // TTC Header version now
-                               if (!in_array($version, array(0x00010000,0x00020000)))
-                                       return("ERROR - NOT ADDED as Error parsing TrueType Collection: version=".$version." - " . $file);
-                       }
-                       else return("ERROR - Error parsing TrueType Collection - " . $file);
-                       $this->numTTCFonts = $this->read_ulong();
-                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
-                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
-                       }
-                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
-                       $this->version = $version = $this->read_ulong();        // TTFont version again now
-                       $this->readTableDirectory(false);
-               }
-               else {
-                       if (!in_array($version, array(0x00010000,0x74727565)))
-                               return("ERROR - NOT ADDED as Not a TrueType font: version=".$version." - " . $file);
-                       $this->readTableDirectory(false);
-               }
-
-/* Included for testing...
-               $cmap_offset = $this->seek_table("cmap");
-               $this->skip(2);
-               $cmapTableCount = $this->read_ushort();
-               $unicode_cmap_offset = 0;
-               for ($i=0;$i<$cmapTableCount;$i++) {
-                       $x[$i]['platformId'] = $this->read_ushort();
-                       $x[$i]['encodingId'] = $this->read_ushort();
-                       $x[$i]['offset'] = $this->read_ulong();
-                       $save_pos = $this->_pos;
-                       $x[$i]['format'] = $this->get_ushort($cmap_offset + $x[$i]['offset'] );
-                       $this->seek($save_pos );
-               }
-               print_r($x); exit;
-*/
-               ///////////////////////////////////
-               // name - Naming table
-               ///////////////////////////////////
-
-/* Test purposes - displays table of names 
-                       $name_offset = $this->seek_table("name");
-                       $format = $this->read_ushort();
-                       if ($format != 0 && $format != 1)       // mPDF 5.3.73
-                               die("Unknown name table format ".$format);
-                       $numRecords = $this->read_ushort();
-                       $string_data_offset = $name_offset + $this->read_ushort();
-                       for ($i=0;$i<$numRecords; $i++) {
-                               $x[$i]['platformId'] = $this->read_ushort();
-                               $x[$i]['encodingId'] = $this->read_ushort();
-                               $x[$i]['languageId'] = $this->read_ushort();
-                               $x[$i]['nameId'] = $this->read_ushort();
-                               $x[$i]['length'] = $this->read_ushort();
-                               $x[$i]['offset'] = $this->read_ushort();
-
-                               $N = '';
-                               if ($x[$i]['platformId'] == 1 && $x[$i]['encodingId'] == 0 && $x[$i]['languageId'] == 0) { // Roman
-                                       $opos = $this->_pos;
-                                       $N = $this->get_chunk($string_data_offset + $x[$i]['offset'] , $x[$i]['length'] );
-                                       $this->_pos = $opos;
-                                       $this->seek($opos);
-                               }
-                               else {  // Unicode
-                                       $opos = $this->_pos;
-                                       $this->seek($string_data_offset + $x[$i]['offset'] );
-                                       $length = $x[$i]['length'] ;
-                                       if ($length % 2 != 0)
-                                               $length -= 1;
-                               //              die("PostScript name is UTF-16BE string of odd length");
-                                       $length /= 2;
-                                       $N = '';
-                                       while ($length > 0) {
-                                               $char = $this->read_ushort();
-                                               $N .= (chr($char));
-                                               $length -= 1;
-                                       }
-                                       $this->_pos = $opos;
-                                       $this->seek($opos);
-                               }
-                               $x[$i]['names'][$nameId] = $N;
-                       }
-                       print_r($x); exit;
-*/
-
-                       $name_offset = $this->seek_table("name");
-                       $format = $this->read_ushort();
-                       if ($format != 0 && $format != 1)       // mPDF 5.3.73
-                               return("ERROR - NOT ADDED as Unknown name table format ".$format." - " . $file);
-                       $numRecords = $this->read_ushort();
-                       $string_data_offset = $name_offset + $this->read_ushort();
-                       $names = array(1=>'',2=>'',3=>'',4=>'',6=>'');
-                       $K = array_keys($names);
-                       $nameCount = count($names);
-                       for ($i=0;$i<$numRecords; $i++) {
-                               $platformId = $this->read_ushort();
-                               $encodingId = $this->read_ushort();
-                               $languageId = $this->read_ushort();
-                               $nameId = $this->read_ushort();
-                               $length = $this->read_ushort();
-                               $offset = $this->read_ushort();
-                               if (!in_array($nameId,$K)) continue;
-                               $N = '';
-                               if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name
-                                       $opos = $this->_pos;
-                                       $this->seek($string_data_offset + $offset);
-                                       if ($length % 2 != 0)
-                                               $length += 1;
-                                       $length /= 2;
-                                       $N = '';
-                                       while ($length > 0) {
-                                               $char = $this->read_ushort();
-                                               $N .= (chr($char));
-                                               $length -= 1;
-                                       }
-                                       $this->_pos = $opos;
-                                       $this->seek($opos);
-                               }
-                               else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
-                                       $opos = $this->_pos;
-                                       $N = $this->get_chunk($string_data_offset + $offset, $length);
-                                       $this->_pos = $opos;
-                                       $this->seek($opos);
-                               }
-                               if ($N && $names[$nameId]=='') {
-                                       $names[$nameId] = $N;
-                                       $nameCount -= 1;
-                                       if ($nameCount==0) break;
-                               }
-                       }
-                       if ($names[6])
-                               $psName = preg_replace('/ /','-',$names[6]);
-                       else if ($names[4])
-                               $psName = preg_replace('/ /','-',$names[4]);
-                       else if ($names[1])
-                               $psName = preg_replace('/ /','-',$names[1]);
-                       else
-                               $psName = '';
-                       if (!$names[1] && !$psName)
-                               return("ERROR - NOT ADDED as Could not find valid font name - " . $file);
-                       $this->name = $psName;
-                       if ($names[1]) { $this->familyName = $names[1]; } else { $this->familyName = $psName; }
-                       if ($names[2]) { $this->styleName = $names[2]; } else { $this->styleName = 'Regular'; }
-
-               ///////////////////////////////////
-               // head - Font header table
-               ///////////////////////////////////
-               $this->seek_table("head");
-               $ver_maj = $this->read_ushort();
-               $ver_min = $this->read_ushort();
-               if ($ver_maj != 1)
-                       return('ERROR - NOT ADDED as Unknown head table version '. $ver_maj .'.'. $ver_min." - " . $file);
-               $this->fontRevision = $this->read_ushort() . $this->read_ushort();
-               $this->skip(4);
-               $magic = $this->read_ulong();
-               if ($magic != 0x5F0F3CF5) 
-                       return('ERROR - NOT ADDED as Invalid head table magic ' .$magic." - " . $file);
-               $this->skip(2);
-               $this->unitsPerEm = $unitsPerEm = $this->read_ushort();
-               $scale = 1000 / $unitsPerEm;
-               $this->skip(24);
-               $macStyle = $this->read_short();
-               $this->skip(4);
-               $indexLocFormat = $this->read_short();
-
-               ///////////////////////////////////
-               // OS/2 - OS/2 and Windows metrics table
-               ///////////////////////////////////
-               $sFamily = '';
-               $panose = '';
-               $fsSelection = '';
-               if (isset($this->tables["OS/2"])) {
-                       $this->seek_table("OS/2");
-                       $this->skip(30);
-                       $sF = $this->read_short();
-                       $sFamily = ($sF >> 8);
-                       $this->_pos += 10;  //PANOSE = 10 byte length
-                       $panose = fread($this->fh,10);
-                       $this->panose = array();
-                       for ($p=0;$p<strlen($panose);$p++) { $this->panose[] = ord($panose[$p]); }
-                       $this->skip(20); 
-                       $fsSelection = $this->read_short();
-               }
-
-               ///////////////////////////////////
-               // post - PostScript table
-               ///////////////////////////////////
-               $this->seek_table("post");
-               $this->skip(4); 
-               $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0;
-               $this->skip(4);
-               $isFixedPitch = $this->read_ulong();
-
-
-
-               ///////////////////////////////////
-               // cmap - Character to glyph index mapping table
-               ///////////////////////////////////
-               $cmap_offset = $this->seek_table("cmap");
-               $this->skip(2);
-               $cmapTableCount = $this->read_ushort();
-               $unicode_cmap_offset = 0;
-               for ($i=0;$i<$cmapTableCount;$i++) {
-                       $platformID = $this->read_ushort();
-                       $encodingID = $this->read_ushort();
-                       $offset = $this->read_ulong();
-                       $save_pos = $this->_pos;
-                       if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 4) {
-                                       if (!$unicode_cmap_offset) $unicode_cmap_offset = $cmap_offset + $offset;
-                               }
-                       }
-                       else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0)) { // Microsoft, Unicode Format 12 table HKCS
-                               $format = $this->get_ushort($cmap_offset + $offset);
-                               if ($format == 12) {
-                                       $unicode_cmap_offset = $cmap_offset + $offset;
-                                       break;
-                               }
-                       }
-                       $this->seek($save_pos );
-               }
-
-               if (!$unicode_cmap_offset)
-                       return('ERROR - Font ('.$this->filename .') NOT ADDED as it is not Unicode encoded, and cannot be used by mPDF');
-
-               $rtl = false;
-               $indic = false;
-               $cjk = false;
-               $sip = false;
-               $smp = false;
-               $pua = false;
-               $puaag = false;
-               $glyphToChar = array();
-               $unAGlyphs = '';
-               // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
-               if ($format == 12) {
-                       $this->seek($unicode_cmap_offset + 4);
-                       $length = $this->read_ulong();
-                       $limit = $unicode_cmap_offset + $length;
-                       $this->skip(4);
-                       $nGroups = $this->read_ulong();
-                       for($i=0; $i<$nGroups ; $i++) { 
-                               $startCharCode = $this->read_ulong(); 
-                               $endCharCode = $this->read_ulong(); 
-                               $startGlyphCode = $this->read_ulong(); 
-                               if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) {
-                                       $sip = true; 
-                               }
-                               if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) {
-                                       $smp = true; 
-                               }
-                               if (($endCharCode > 0x0590 && $endCharCode < 0x077F) || ($endCharCode > 0xFE70 && $endCharCode < 0xFEFF) || ($endCharCode > 0xFB50 && $endCharCode < 0xFDFF)) {
-                                       $rtl = true; 
-                               }
-                               if ($endCharCode > 0x0900 && $endCharCode < 0x0DFF) {
-                                       $indic = true; 
-                               }
-                               if ($endCharCode > 0xE000 && $endCharCode < 0xF8FF) {
-                                       $pua = true; 
-                                       if ($endCharCode > 0xF500 && $endCharCode < 0xF7FF) {
-                                               $puaag = true; 
-                                       }
-                               }
-                               if (($endCharCode > 0x2E80 && $endCharCode < 0x4DC0) || ($endCharCode > 0x4E00 && $endCharCode < 0xA4CF) || ($endCharCode > 0xAC00 && $endCharCode < 0xD7AF) || ($endCharCode > 0xF900 && $endCharCode < 0xFAFF) || ($endCharCode > 0xFE30 && $endCharCode < 0xFE4F)) {
-                                       $cjk = true; 
-                               }
-
-                               $offset = 0;
-                               // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs
-                               if (isset($this->tables['post'])) {
-                                 for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
-                                       $glyph = $startGlyphCode + $offset ;
-                                       $offset++;
-                                       $glyphToChar[$glyph][] = $unichar;
-                                 }
-                               }
-
-
-                       }
-               }
-
-               else {  // Format 4 CMap
-                       $this->seek($unicode_cmap_offset + 2);
-                       $length = $this->read_ushort();
-                       $limit = $unicode_cmap_offset + $length;
-                       $this->skip(2);
-
-                       $segCount = $this->read_ushort() / 2;
-                       $this->skip(6);
-                       $endCount = array();
-                       for($i=0; $i<$segCount; $i++) { $endCount[] = $this->read_ushort(); }
-                       $this->skip(2);
-                       $startCount = array();
-                       for($i=0; $i<$segCount; $i++) { $startCount[] = $this->read_ushort(); }
-                       $idDelta = array();
-                       for($i=0; $i<$segCount; $i++) { $idDelta[] = $this->read_short(); }
-                       $idRangeOffset_start = $this->_pos;
-                       $idRangeOffset = array();
-                       for($i=0; $i<$segCount; $i++) { $idRangeOffset[] = $this->read_ushort(); }
-
-                       for ($n=0;$n<$segCount;$n++) {
-                               if (($endCount[$n] > 0x0590 && $endCount[$n] < 0x077F) || ($endCount[$n] > 0xFE70 && $endCount[$n] < 0xFEFF) || ($endCount[$n] > 0xFB50 && $endCount[$n] < 0xFDFF)) {
-                                       $rtl = true; 
-                               }
-                               if ($endCount[$n] > 0x0900 && $endCount[$n] < 0x0DFF) {
-                                       $indic = true; 
-                               }
-                               if (($endCount[$n] > 0x2E80 && $endCount[$n] < 0x4DC0) || ($endCount[$n] > 0x4E00 && $endCount[$n] < 0xA4CF) || ($endCount[$n] > 0xAC00 && $endCount[$n] < 0xD7AF) || ($endCount[$n] > 0xF900 && $endCount[$n] < 0xFAFF) || ($endCount[$n] > 0xFE30 && $endCount[$n] < 0xFE4F)) {
-                                       $cjk = true; 
-                               }
-                               if ($endCount[$n] > 0xE000 && $endCount[$n] < 0xF8FF) {
-                                       $pua = true; 
-                                       if ($endCount[$n] > 0xF500 && $endCount[$n] < 0xF7FF) {
-                                               $puaag = true; 
-                                       }
-                               }
-                               // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs
-                               if (isset($this->tables['post'])) {
-                                       $endpoint = ($endCount[$n] + 1);
-                                       for ($unichar=$startCount[$n];$unichar<$endpoint;$unichar++) {
-                                               if ($idRangeOffset[$n] == 0)
-                                                       $glyph = ($unichar + $idDelta[$n]) & 0xFFFF;
-                                               else {
-                                                       $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n];
-                                                       $offset = $idRangeOffset_start + 2 * $n + $offset;
-                                                       if ($offset >= $limit)
-                                                               $glyph = 0;
-                                                       else {
-                                                               $glyph = $this->get_ushort($offset);
-                                                               if ($glyph != 0)
-                                                                  $glyph = ($glyph + $idDelta[$n]) & 0xFFFF;
-                                                       }
-                                               }
-                                               $glyphToChar[$glyph][] = $unichar;
-                                       }
-                               }
-
-                       }
-               }
-               // 'POST' table for un-mapped arabic glyphs
-               if (isset($this->tables['post'])) {
-                         $this->seek_table("post");
-                         // Only works on Format 2.0
-                         $formata = $this->read_ushort();
-                         $formatb = $this->read_ushort();
-                         if ($formata == 2 && $formatb == 0) {
-                               $this->skip(28);
-                               $nGlyfs = $this->read_ushort();
-                               $glyphNameIndex = array();
-                               for ($i=0; $i<$nGlyfs; $i++) {
-                                       $glyphNameIndex[($this->read_ushort())] = $i;
-                               }
-       
-                               $opost = $this->get_table('post');
-                               $ptr = 34+($nGlyfs*2);
-                               for ($i=0; $i<$nGlyfs; $i++) {
-                                       $len = ord(substr($opost,$ptr,1));
-                                       $ptr++;
-                                       $name = substr($opost,$ptr,$len);
-                                       $gid = $glyphNameIndex[$i+258];
-                                       // Select uni0600.xxx(x) - uni06FF.xxx(x)
-                                       if (preg_match('/^uni(06[0-9a-f]{2})\.(fina|medi|init|fin|med|ini)$/i',$name,$m)) {
-                                         if (!isset($glyphToChar[$gid]) || (isset($glyphToChar[$gid]) && is_array($glyphToChar[$gid]) && count($glyphToChar[$gid])==1 && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489)) {        // if set in PUA private use area E000-F8FF, or NOT Unicode mapped
-                                               $uni = hexdec($m[1]);
-                                               $form = strtoupper(substr($m[2],0,1));
-                                               // Assign new PUA Unicode between F500 - F7FF
-                                               $bit = $uni & 0xFF;
-                                               if ($form == 'I') { $bit += 0xF600; }
-                                               else if ($form == 'M') { $bit += 0xF700; }
-                                               else  { $bit += 0xF500; }
-                                               $unAGlyphs .= $gid;
-                                               $name = 'uni'.strtoupper($m[1]).'.'.strtolower($m[2]);
-                                               $unAGlyphs .= ' : '.$name;
-                                               $unihexstr = $m[1];
-                                               $unAGlyphs .= ' : '.$unihexstr;
-                                               $unAGlyphs .= ' : '.$uni;
-                                               $unAGlyphs .= ' : '.$form;
-                                               // if already set in PUA private use area E000-F8FF
-                                               if (isset($glyphToChar[$gid]) && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489) {
-                                                               $unAGlyphs .= ' : '.$glyphToChar[$gid][0].' {'.dechex($glyphToChar[$gid][0]).'}';
-                                               }
-                                               //else $unAGlyphs .= ':';
-                                               $unAGlyphs .= ' : '.strtoupper(dechex($bit));
-                                               $unAGlyphs .= '<br />';
-                                         }
-                                       }
-                                       $ptr += $len;
-                               }
-                               if ($unAGlyphs) { 
-                                       $unAGlyphs = 'GID:Name:Unicode base Hex:Dec:Form:PUA Unicode<br />'.$unAGlyphs ; 
-                               }
-                         }
-               }
-
-
-
-               $bold = false; 
-               $italic = false; 
-               $ftype = '';
-               if ($macStyle & (1 << 0)) { $bold = true; }     // bit 0 bold
-               else if ($fsSelection & (1 << 5)) { $bold = true; }     // 5    BOLD    Characters are emboldened
-
-               if ($macStyle & (1 << 1)) { $italic = true; }   // bit 1 italic
-               else if ($fsSelection & (1 << 0)) { $italic = true; }   // 0    ITALIC  Font contains Italic characters, otherwise they are upright
-               else if ($this->italicAngle <> 0) { $italic = true; }
-
-               if ($isFixedPitch ) { $ftype = 'mono'; }
-               else if ($sFamily >0 && $sFamily <8) { $ftype = 'serif'; }
-               else if ($sFamily ==8) { $ftype = 'sans'; }
-               else if ($sFamily ==10) { $ftype = 'cursive'; }
-               // Use PANOSE
-               if ($panose) { 
-                       $bFamilyType=ord($panose[0]); 
-                       if ($bFamilyType==2) {
-                               $bSerifStyle=ord($panose[1]); 
-                               if (!$ftype) { 
-                                       if ($bSerifStyle>1 && $bSerifStyle<11) { $ftype = 'serif'; }
-                                       else if ($bSerifStyle>10) { $ftype = 'sans'; }
-                               }
-                               $bProportion=ord($panose[3]);
-                               if ($bProportion==9 || $bProportion==1) { $ftype = 'mono'; }    // ==1 i.e. No Fit needed for OCR-a and -b
-                       }
-                       else if ($bFamilyType==3) {
-                               $ftype = 'cursive'; 
-                       }
-               }
-
-               fclose($this->fh);
-               return array($this->familyName, $bold, $italic, $ftype, $TTCfontID, $rtl, $indic, $cjk, $sip, $smp, $puaag, $pua, $unAGlyphs);
-       }
-
-
-
-
-}
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/wmf.php b/inc/3rdparty/libraries/mpdf/classes/wmf.php
deleted file mode 100644 (file)
index 2efef00..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-<?php
-
-class wmf {
-
-var $mpdf = null;
-var $gdiObjectArray;
-
-function wmf(&$mpdf) {
-       $this->mpdf = $mpdf;
-}
-
-
-function _getWMFimage($data) {
-       $k = _MPDFK;
-
-               $this->gdiObjectArray = array();
-               $a=unpack('stest',"\1\0");
-               if ($a['test']!=1)
-               return array(0, 'Error parsing WMF image - Big-endian architecture not supported'); 
-               // check for Aldus placeable metafile header
-               $key = unpack('Lmagic', substr($data, 0, 4));
-               $p = 18;  // WMF header 
-               if ($key['magic'] == (int)0x9AC6CDD7) { $p +=22; } // Aldus header
-               // define some state variables
-               $wo=null; // window origin
-               $we=null; // window extent
-               $polyFillMode = 0;
-               $nullPen = false;
-               $nullBrush = false;
-               $endRecord = false;
-               $wmfdata = '';
-               while ($p < strlen($data) && !$endRecord) {
-                       $recordInfo = unpack('Lsize/Sfunc', substr($data, $p, 6));      $p += 6;
-                       // size of record given in WORDs (= 2 bytes)
-                       $size = $recordInfo['size'];
-                       // func is number of GDI function
-                       $func = $recordInfo['func'];
-                       if ($size > 3) {
-                               $parms = substr($data, $p, 2*($size-3));        $p += 2*($size-3);
-                       }
-                       switch ($func) {
-                               case 0x020b:  // SetWindowOrg
-                                       // do not allow window origin to be changed
-                                       // after drawing has begun
-                                       if (!$wmfdata)
-                                               $wo = array_reverse(unpack('s2', $parms));
-                                       break;
-                               case 0x020c:  // SetWindowExt
-                                       // do not allow window extent to be changed
-                                       // after drawing has begun
-                                       if (!$wmfdata)
-                                               $we = array_reverse(unpack('s2', $parms));
-                                       break;
-                               case 0x02fc:  // CreateBrushIndirect
-                                       $brush = unpack('sstyle/Cr/Cg/Cb/Ca/Shatch', $parms);
-                                       $brush['type'] = 'B';
-                                       $this->_AddGDIObject($brush);
-                                       break;
-                               case 0x02fa:  // CreatePenIndirect
-                                       $pen = unpack('Sstyle/swidth/sdummy/Cr/Cg/Cb/Ca', $parms);
-                                       // convert width from twips to user unit
-                                       $pen['width'] /= (20 * $k);
-                                       $pen['type'] = 'P';
-                                       $this->_AddGDIObject($pen);
-                                       break;
-
-                               // MUST create other GDI objects even if we don't handle them
-                               case 0x06fe: // CreateBitmap
-                               case 0x02fd: // CreateBitmapIndirect
-                               case 0x00f8: // CreateBrush
-                               case 0x02fb: // CreateFontIndirect
-                               case 0x00f7: // CreatePalette
-                               case 0x01f9: // CreatePatternBrush
-                               case 0x06ff: // CreateRegion
-                               case 0x0142: // DibCreatePatternBrush
-                                       $dummyObject = array('type'=>'D');
-                                       $this->_AddGDIObject($dummyObject);
-                                       break;
-                               case 0x0106:  // SetPolyFillMode
-                                       $polyFillMode = unpack('smode', $parms);
-                                       $polyFillMode = $polyFillMode['mode'];
-                                       break;
-                               case 0x01f0:  // DeleteObject
-                                       $idx = unpack('Sidx', $parms);
-                                       $idx = $idx['idx'];
-                                       $this->_DeleteGDIObject($idx);
-                                       break;
-                               case 0x012d:  // SelectObject
-                                       $idx = unpack('Sidx', $parms);
-                                       $idx = $idx['idx'];
-                                       $obj = $this->_GetGDIObject($idx);
-                                       switch ($obj['type']) {
-                                               case 'B':
-                                                       $nullBrush = false;
-                                                       if ($obj['style'] == 1) { $nullBrush = true; }
-                                                       else {
-                                                               $wmfdata .= $this->mpdf->SetFColor($this->mpdf->ConvertColor('rgb('.$obj['r'].','.$obj['g'].','.$obj['b'].')'), true)."\n";     
-                                                       }
-                                                       break;
-                                               case 'P':
-                                                       $nullPen = false;
-                                                       $dashArray = array(); 
-                                                       // dash parameters are custom
-                                                       switch ($obj['style']) {
-                                                               case 0: // PS_SOLID
-                                                                       break;
-                                                               case 1: // PS_DASH
-                                                                       $dashArray = array(3,1);
-                                                                       break;
-                                                               case 2: // PS_DOT
-                                                                       $dashArray = array(0.5,0.5);
-                                                                       break;
-                                                               case 3: // PS_DASHDOT
-                                                                       $dashArray = array(2,1,0.5,1);
-                                                                       break;
-                                                               case 4: // PS_DASHDOTDOT
-                                                                       $dashArray = array(2,1,0.5,1,0.5,1);
-                                                                       break;
-                                                               case 5: // PS_NULL
-                                                                       $nullPen = true;
-                                                                       break;
-                                                       }
-                                                       if (!$nullPen) {
-                                                               $wmfdata .= $this->mpdf->SetDColor($this->mpdf->ConvertColor('rgb('.$obj['r'].','.$obj['g'].','.$obj['b'].')'), true)."\n";
-                                                               $wmfdata .= sprintf("%.3F w\n",$obj['width']*$k);
-                                                       }
-                                                       if (!empty($dashArray)) {
-                                                               $s = '[';
-                                                               for ($i=0; $i<count($dashArray);$i++) {
-                                                                       $s .= $dashArray[$i] * $k;
-                                                                       if ($i != count($dashArray)-1) { $s .= ' '; }
-                                                               }
-                                                               $s .= '] 0 d';
-                                                               $wmfdata .= $s."\n";
-                                                       }
-                                                       break;
-                                       }
-                                       break;
-                               case 0x0325: // Polyline
-                               case 0x0324: // Polygon
-                                       $coords = unpack('s'.($size-3), $parms);
-                                       $numpoints = $coords[1];
-                                       for ($i = $numpoints; $i > 0; $i--) {
-                                               $px = $coords[2*$i];
-                                               $py = $coords[2*$i+1];
-
-                                               if ($i < $numpoints) { $wmfdata .= $this->_LineTo($px, $py); }
-                                          else { $wmfdata .= $this->_MoveTo($px, $py); }
-                                       }
-                                       if ($func == 0x0325) { $op = 's'; }
-                                       else if ($func == 0x0324) {
-                                               if ($nullPen) {
-                                                       if ($nullBrush) { $op = 'n'; } // no op
-                                                       else { $op = 'f'; } // fill
-                                               }
-                                               else {
-                                                       if ($nullBrush) { $op = 's'; } // stroke
-                                                       else { $op = 'b'; } // stroke and fill
-                                               }
-                                               if ($polyFillMode==1 && ($op=='b' || $op=='f')) { $op .= '*'; } // use even-odd fill rule
-                                       }
-                                       $wmfdata .= $op."\n";
-                                       break;
-                               case 0x0538: // PolyPolygon
-                                       $coords = unpack('s'.($size-3), $parms);
-                                       $numpolygons = $coords[1];
-                                       $adjustment = $numpolygons;
-                                       for ($j = 1; $j <= $numpolygons; $j++) {
-                                               $numpoints = $coords[$j + 1];
-                                               for ($i = $numpoints; $i > 0; $i--) {
-                                                       $px = $coords[2*$i   + $adjustment];
-                                                       $py = $coords[2*$i+1 + $adjustment];
-                                                       if ($i == $numpoints) { $wmfdata .= $this->_MoveTo($px, $py); }
-                                                       else { $wmfdata .= $this->_LineTo($px, $py); }
-                                               }
-                                               $adjustment += $numpoints * 2;
-                                       }
-
-                                       if ($nullPen) {
-                                               if ($nullBrush) { $op = 'n'; } // no op
-                                               else { $op = 'f'; } // fill
-                                       }
-                                       else {
-                                               if ($nullBrush) { $op = 's'; } // stroke
-                                               else { $op = 'b'; } // stroke and fill
-                                       }
-                                       if ($polyFillMode==1 && ($op=='b' || $op=='f')) { $op .= '*'; } // use even-odd fill rule
-                                       $wmfdata .= $op."\n";
-                                       break;
-                               case 0x0000:
-                                       $endRecord = true;
-                                       break;
-                       }
-               }
-
-
-       return array(1,$wmfdata,$wo,$we);
-}
-
-
-function _MoveTo($x, $y) {
-       return "$x $y m\n";
-}
-
-// a line must have been started using _MoveTo() first
-function _LineTo($x, $y) {
-       return "$x $y l\n";
-}
-
-function _AddGDIObject($obj) {
-       // find next available slot
-       $idx = 0;
-       if (!empty($this->gdiObjectArray)) {
-               $empty = false;
-               $i = 0;
-               while (!$empty) {
-                       $empty = !isset($this->gdiObjectArray[$i]);
-                       $i++;
-               }
-               $idx = $i-1;
-       }
-       $this->gdiObjectArray[$idx] = $obj;
-}
-
-function _GetGDIObject($idx) {
-       return $this->gdiObjectArray[$idx];
-}
-
-function _DeleteGDIObject($idx) {
-       unset($this->gdiObjectArray[$idx]);
-}
-
-
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/compress.php b/inc/3rdparty/libraries/mpdf/compress.php
deleted file mode 100644 (file)
index 85897cf..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-
-$excl = array( 'HTML-CSS', 'DIRECTW', 'TABLES', 'LISTS', 'IMAGES-CORE', 
-'IMAGES-BMP', 'IMAGES-WMF', 'TABLES-ADVANCED-BORDERS', 'HTMLHEADERS-FOOTERS', 'COLUMNS', 'TOC', 'INDEX', 'BOOKMARKS', 'BARCODES', 'FORMS', 'WATERMARK', 'CJK-FONTS', 'RTL', 'INDIC', 'ANNOTATIONS', 'BACKGROUNDS', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS', 'HYPHENATION', 'ENCRYPTION', 'IMPORTS', 'PROGRESS-BAR');
-
-
-       // *DIRECTW* = Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText
-       // IMAGES-CORE = [PNG, GIF, and JPG] NB background-images and watermark images
-
-       // Excluding 'HTML-CSS' will also exclude: 'TABLES', 'LISTS', 'TABLES-ADVANCED-BORDERS', 'HTMLHEADERS-FOOTERS', 'FORMS', 'BACKGROUNDS', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS'
-
-// Text is marked in mpdf_source.php with e.g. :
-/*-- TABLES-ADVANCED-BORDERS --*/
-/*-- END TABLES-ADVANCED-BORDERS --*/
-       // *TABLES-ADVANCED-BORDERS*
-
-
-if (!isset($_POST['generate']) || $_POST['generate']!='generate') {
-
-
-if (!file_exists('mpdf_source.php')) {
-       die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php"); 
-}
-
-
-
-
-echo '<html>
-<head>
-<script language=javascript>
-checked=false;
-function checkedAll (frm1) {
-       var aa= document.getElementById("frm1");
-        if (checked == false)
-          {
-           checked = true
-          }
-        else
-          {
-          checked = false
-          }
-       for (var i =0; i < aa.elements.length; i++) 
-       {
-        aa.elements[i].checked = checked;
-       }
-      }
-</script>
-</head>
-<body>
-<p><span style="color:red; font-weight: bold;">WARNING</span>: This utility will OVERWRITE mpdf.php file in the current directory.</p>
-<p>Select the functions you wish to INCLUDE in your mpdf.php program. When you click generate, a new mpdf.php file will be written to the current directory.</p>
-<div><b>Notes</b>
-<ul>
-<li>HTML-CSS is required for many of the other functions to work including: Tables, Lists, Backgrounds, Forms, Border-radius and all other CSS</li>
-<li>DIRECTW includes the functions to Write directly to the PDF file e.g. Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText</li>
-<li>You must include either HTML-CSS or DIRECTW</li>
-<li>JPG, PNG and JPG images are supported with IMAGES-CORE</li>
-<li>For WMF Images, you must include both IMAGES-CORE and IMAGES-WMF</li>
-<li>IMAGES-CORE are required for BACKGROUNDS (IMAGES) or WATERMARKS to work</li>
-</ul>
-</div>
-<input type="checkbox" name="checkall" onclick="checkedAll(frm1);"> <i>Select/Unselect All</i><br /><br />
-
-<form id="frm1" action="compress.php" method="POST">
-';
-foreach($excl AS $k=>$ex) {
-       echo '<input type="checkbox" value="1" name="inc['.$ex.']"';
-       if ($k==0 || ($k > 1 && $k < 5)) {
-               echo ' checked="checked"';
-       }
-       echo ' /> '.$ex.'<br />';
-}
-
-echo '<br />
-<input type="submit" name="generate" value="generate" />
-</form>
-</body>
-</html>';
-exit;
-}
-
-$inc = $_POST['inc'];
-if (is_array($inc) && count($inc)>0 ) { 
-       foreach($inc AS $i=>$v) {
-               $key = array_search($i, $excl);
-               unset($excl[$key]);
-       }
-}
-
-if (!defined('PHP_VERSION_ID')) {
-    $version = explode('.', PHP_VERSION);
-    define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
-}
-if (PHP_VERSION_ID < 50300) { $mqr = @get_magic_quotes_runtime(); }
-       else { $mqr=0; }
-if ($mqr) { set_magic_quotes_runtime(0); }
-
-$l = file('mpdf_source.php');
-if (!count($l)) { die("ERROR - Could not find mpdf_source.php file in current directory"); }
-$exclflags = array();
-$x = '';
-
-       // Excluding 'HTML-CSS' will also exclude: 'TABLES', 'LISTS', 'TABLES-ADVANCED-BORDERS', 'HTMLHEADERS-FOOTERS', 'FORMS', 'BACKGROUNDS', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS'
-if ($excl[0]=='HTML-CSS') {
-       $excl[] = 'TABLES';
-       $excl[] = 'LISTS';
-       $excl[] = 'TABLES-ADVANCED-BORDERS';
-       $excl[] = 'HTMLHEADERS-FOOTERS';
-       $excl[] = 'FORMS';
-       $excl[] = 'BACKGROUNDS';
-       $excl[] = 'CSS-FLOAT';
-       $excl[] = 'CSS-IMAGE-FLOAT';
-       $excl[] = 'CSS-POSITION';
-       $excl[] = 'CSS-PAGE';
-       $excl[] = 'BORDER-RADIUS';
-}
-$excl = array_unique($excl);
-
-foreach($l AS $k=>$ln) {
-       $exclude = false;
-       // *XXXXX*
-       preg_match_all("/\/\/ \*([A-Za-z\-]+)\*/", $ln, $m);
-       foreach($m[1] AS $mm) {
-               if (in_array($mm, $excl)) {
-                       $exclude = true;
-               }
-       }
-       /*-- XXXXX --*/
-       preg_match_all("/\/\*-- ([A-Za-z\-]+) --\*\//", $ln, $m);
-       foreach($m[1] AS $mm) {
-               if (in_array($mm, $excl)) {
-                       $exclflags[$mm] = true;
-               }
-               $exclude = true;
-       }
-       $exclflags = array_unique($exclflags);
-       /*-- END XXXX --*/
-       preg_match_all("/\/\*-- END ([A-Za-z\-]+) --\*\//", $ln, $m);
-       foreach($m[1] AS $mm) {
-               if (in_array($mm, $excl)) {
-                       unset($exclflags[$mm]);
-               }
-               $exclude = true;
-       }
-       if (count($exclflags)==0 && !$exclude) { 
-               $x .= $ln; 
-       }
-}
-// mPDF 5.0
-if (function_exists('file_put_contents')) {
-       $check = file_put_contents('mpdf.php', $x);
-}
-else {
-       $f=fopen('mpdf.php', 'w');
-       $check = fwrite($f, $x);
-       fclose($f);
-}
-if (!$check) { die("ERROR - Could not write to mpdf.php file. Are permissions correctly set?"); }
-echo '<p><b>mPDF file generated successfully!</b></p>';
-echo '<div>mPDF file size '.number_format((strlen($x)/1024)).' kB</div>';
-
-unset($l);
-unset($x);
-
-include('mpdf.php');
-$mpdf = new mPDF();
-
-echo '<div>Memory usage on loading mPDF class '.number_format((memory_get_usage(true)/(1024*1024)),2).' MB</div>';
-
-exit;
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/config.php b/inc/3rdparty/libraries/mpdf/config.php
deleted file mode 100644 (file)
index 2a81a6a..0000000
+++ /dev/null
@@ -1,572 +0,0 @@
-<?php
-
-// mPDF 5.7
-// Specify whether to automatically generate bookmarks or ToC entries from h1 - h6 tags
-$this->h2bookmarks = array();
-$this->h2toc = array();
-/* Define arrays with e.g. the tag=>ToC-level
-Remember bookmark and ToC levels start at 0
-(does not work inside tables)
-Only the default ToC will be used if > 1 ToCs are defined for the document
-H1 - H6 must be uppercase
-$this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
-$this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
-*/
-
-// mPDF 5.7
-// Text-align on decimal marks
-// Allowed characters for alignment on decimal marks. Additional codes must start with D
-// Non-ASCII characters should be in utf-8 encoding
-// DM - middot U+00B7
-// DA - arabic decimal mark U+066B
-$this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
-
-// PAGING
-$this->mirrorMargins = 0;
-$this->restoreBlockPagebreaks = false;
-$this->forcePortraitMargins = false;
-$this->displayDefaultOrientation = false;
-$this->printers_info = false;  // Adds date and page info for printer when using @page and "marks:crop;"
-$this->bleedMargin = 5;
-$this->crossMarkMargin = 5;            // Distance of cross mark from margin in mm
-$this->cropMarkMargin = 8;             // Distance of crop mark from margin in mm
-$this->cropMarkLength = 18;            // Default length in mm of crop line
-$this->nonPrintMargin = 8;             // Non-printable border at edge of paper sheet in mm
-//     mPDF 5.5
-// Avoid just the border/background-color of the end of a block being moved on to next page
-$this->margBuffer = 2;                 // Allows an (empty) end of block to extend beyond the bottom margin by this amount (mm)
-
-
-// PAGE NUMBERING
-$this->pagenumPrefix;
-$this->pagenumSuffix;
-$this->nbpgPrefix;
-$this->nbpgSuffix;
-
-
-// FONTS, LANGUAGES & CHARACTER SETS
-// Set maximum size of TTF font file to allow non-subsets - in kB
-// Used to avoid e.g. Arial Unicode MS (perhaps used for substitutions) to ever be fully embedded
-// NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB)
-$this->maxTTFFilesize = 2000;
-
-// this value determines whether to subset or not
-// 0 - 100 = percent characters
-// i.e. if ==40, mPDF will embed whole font if >40% characters in that font
-// or embed subset if <40% characters
-// 0 will force whole file to be embedded (NO subsetting)
-// 100 will force always to subset
-// This value is overridden if you set new mPDF('s)
-// and/or Can set at runtime
-$this->percentSubset = 30;
-
-$this->useAdobeCJK = false;            // Uses Adobe CJK fonts for CJK languages
-                       // default TRUE; only set false if you have defined some available fonts that support CJK
-                       // If true this will not stop use of other CJK fonts if specified by font-family:
-                       // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont()
-
-// When embedding full TTF font files, remakes the font file using only core tables
-// May improve function with some PostScript printers (GhostScript/GSView)
-// Does not work with TTC font collections
-// Slightly smaller file; increased processing time
-$this->repackageTTF = false; 
-
-// Allows automatic character set conversion if "charset=xxx" detected in html header (WriteHTML() )
-$this->allow_charset_conversion = true;
-$this->biDirectional=false;                    // automatically determine BIDI text in LTR page
-$this->autoFontGroupSize = 2;                  // 1: individual words are spanned; 2: words+; 3: as big chunks as possible.
-$this->useLang = true;                         // Default changed in mPDF 4.0
-
-$this->useSubstitutions = false;               // Substitute missing characters in UTF-8(multibyte) documents - from other fonts
-$this->falseBoldWeight = 5;                    // Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
-
-// CONFIGURATION
-$this->allow_output_buffering = false;
-
-$this->enableImports = false;                  // Adding mPDFI functions
-
-$this->collapseBlockMargins = true;    // Allows top and bottom margins to collapse between block elements
-$this->progressBar = 0;                                // Shows progress-bars whilst generating file 0 off, 1 simple, 2 advanced
-$this->progbar_heading = 'mPDF file progress';
-$this->progbar_altHTML = '';                   // Should include <html> and <body> but NOT end tags
-                                                       // Can incude <head> and link to stylesheet etc.
-                                                       // e.g. '<html><body><p><img src="loading.gif" /> Creating PDF file. Please wait...</p>';
-
-$this->dpi = 96;                                       // To interpret "px" pixel values in HTML/CSS (see img_dpi below)
-
-// Automatically correct for tags where HTML specifies optional end tags e.g. P,LI,DD,TD
-// If you are confident input html is valid XHTML, turning this off may make it more reliable(?)
-$this->allow_html_optional_endtags = true;
-
-$this->ignore_invalid_utf8 = false;
-$this->text_input_as_HTML = false;             // Converts all entities in Text inputs to UTF-8 before encoding
-$this->useGraphs = false;
-
-
-// When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
-// by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
-// the previous guess was. The lower the number, the quicker it will finish, but the less accurate the fit may be.
-// FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
-$this->incrementFPR1 = 10;     // i.e. will alter by 1/[10]th of width and try again until within closer limits
-$this->incrementFPR2 = 20;
-$this->incrementFPR3 = 30;
-$this->incrementFPR4 = 50;     // i.e. will alter by 1/[50]th of width and try again when it nearly fits
-
-
-// COLORSPACE
-// 1 - allow GRAYSCALE only [convert CMYK/RGB->gray]
-// 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB]
-// 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK]
-$this->restrictColorSpace = 0;
-
-// PDFX/1-a Compliant files
-$this->PDFX = false;                           // true=Forces compliance with PDFX-1a spec
-                                                       // Cannot be used with $this->restrictColorSpace (i.e. no RGB)
-$this->PDFXauto = false;                       // Overrides warnings making changes when possible to force PDFX1-a compliance
-
-
-// PDFA1-b Compliant files
-$this->PDFA = false;                           // true=Forces compliance with PDFA-1b spec
-                                                       // Can use with $this->restrictColorSpace=3 (for a CMYK file)
-                                                       // Any other settings, uses RGB profile
-$this->PDFAauto = false;                       // Overrides warnings making changes when possible to force PDFA1-b compliance
-$this->ICCProfile = '';                                // Colour profile OutputIntent
-                                                       // sRGB_IEC61966-2-1 (=default if blank and PDFA),  or other added .icc profile
-                                                       // Must be CMYK for PDFX, or appropriate type for PDFA(RGB or CMYK)
-
-
-
-// DEBUGGING & DEVELOPERS
-$this->showStats = false;
-$this->debug = false;
-$this->debugfonts = false;     // Checks and reports on errors when parsing TTF files - adds significantly to processing time
-$this->showImageErrors = false;
-$this->table_error_report = false;             // Die and report error if table is too wide to contain whole words
-$this->table_error_report_param = '';  // Parameter which can be passed to show in error report i.e. chapter number being processed//
-
-
-// ANNOTATIONS
-$this->title2annots = false;
-$this->annotSize = 0.5;                // default mm for Adobe annotations - nominal
-$this->annotMargin;            // default position for Annotations
-$this->annotOpacity = 0.5;     // default opacity for Annotations
-
-// BOOKMARKS
-$this->anchor2Bookmark = 0;    // makes <a name=""> into a bookmark as well as internal link target; 1 = just name; 2 = name (p.34)
-// Set an optional array to specify appearance of Bookmarks (by level)
-// Default values are Black and normal style
-/*
- Example:
-$this->bookmarkStyles = array(
-       0 => array('color'=> array(0,64,128), 'style'=>'B'),
-       1 => array('color'=> array(128,0,0), 'style'=>''),
-       2 => array('color'=> array(0,128,0), 'style'=>'I'),
-);
-*/
-$this->bookmarkStyles = array();
-
-
-// CSS & STYLES
-$this->CSSselectMedia='print';         // screen, print, or any other CSS @media type (not "all")
-
-
-// PAGE HEADERS & FOOTERS
-$this->forcePortraitHeaders = false;
-// Values used if simple FOOTER/HEADER given i.e. not array
-$this->defaultheaderfontsize = 8;      // pt
-$this->defaultheaderfontstyle = 'BI';  // '', or 'B' or 'I' or 'BI'
-$this->defaultheaderline = 1;          // 1 or 0 - line under the header
-$this->defaultfooterfontsize = 8;      // pt
-$this->defaultfooterfontstyle = 'BI';  // '', or 'B' or 'I' or 'BI'
-$this->defaultfooterline = 1;          // 1 or 0 - line over the footer
-$this->header_line_spacing = 0.25;     // spacing between bottom of header and line (if present) - function of fontsize
-$this->footer_line_spacing = 0.25;     // spacing between bottom of header and line (if present) - function of fontsize
-// If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text.
-// If 'stretch' margin-top sets a minimum distance in mm between top of page and top of text, which expands if header is too large to fit.
-$this->setAutoTopMargin = false;       
-$this->setAutoBottomMargin = false;    
-$this->autoMarginPadding = 2;          // distance in mm used as padding if 'stretch' mode is used
-
-
-
-// TABLES
-$this->simpleTables = false; // Forces all cells to have same border, background etc. Improves performance
-$this->packTableData = false; // Reduce memory usage processing tables (but with increased processing time)
-// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased 
-// executon time and disk access (read and write)
-$this->cacheTables = false;
-
-$this->ignore_table_percents = false;
-$this->ignore_table_widths = false;
-$this->keep_table_proportions = false; // If table width set > page width, force resizing but keep relative sizes
-                                                       // Also forces respect of cell widths set by %
-$this->shrink_tables_to_fit = 1.4;     // automatically reduce fontsize in table if words would have to split ( not in CJK)
-                                               // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
-
-$this->tableMinSizePriority = false;   // If page-break-inside:avoid but cannot fit on full page without 
-                                                       // exceeding autosize; setting this value to true will force respsect for
-                                                       // autosize, and disable the page-break-inside:avoid
-
-$this->use_kwt = false;                                // "Keep-with-table"
-$this->iterationCounter = false;               // Set to TRUE to use table Head iteration counter
-$this->splitTableBorderWidth = 0;              // Use table border (using this width in mm) when table breaks across pages
-                                                       // Recommended to use small value e.g. 0.01
-
-
-// IMAGES
-$this->img_dpi = 96;   // Default dpi to output images if size not defined
-                               // See also above "dpi"
-
-// TEXT SPACING & JUSTIFICATION
-$this->useKerning = false;     // true to use kerning
-$this->justifyB4br = false;    // In justified text, <BR> does not cause the preceding text to be justified in browsers
-                                       // Change to true to force justification (as in MS Word)
-
-$this->tabSpaces = 8;  // Number of spaces to replace for a TAB in <pre> sections
-                               // Notepad uses 6, HTML specification recommends 8
-$this->jSWord = 0.4;   // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
-$this->jSmaxChar = 2;  // Maximum spacing to allocate to character spacing. (0 = no maximum)
-
-$this->jSmaxCharLast = 1;      // Maximum character spacing allowed (carried over) when finishing a last line
-$this->jSmaxWordLast = 2;      // Maximum word spacing allowed (carried over) when finishing a last line
-$this->normalLineheight = 1.33;        // Value used for line-height when CSS specified as 'normal' (default)
-
-// Small Caps
-$this->smCapsScale = 0.75;     // Factor of 1 to scale capital letters
-$this->smCapsStretch = 110;    // % to stretch small caps horizontally (i.e. 100 = no stretch)
-
-// CJK Line-breaking
-$this->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow
-$this->allowCJKoverflow = false;       // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables)
-$this->CJKforceend = false;            // Forces overflowng punctuation to hang outside right margin mPDF 5.6.40
-
-// HYPHENATION
-$this->SHYlang = "en"; // Should be one of: 'en','de','es','fi','fr','it','nl','pl','ru','sv'
-$this->SHYleftmin = 2;
-$this->SHYrightmin = 2;
-$this->SHYcharmin = 2;
-$this->SHYcharmax = 10;
-
-// COLUMNS
-$this->keepColumns = false;    // Set to go to the second column only when the first is full of text etc.
-$this->max_colH_correction = 1.15;     // Maximum ratio to adjust column height when justifying - too large a value can give ugly results
-$this->ColGap=5;
-
-
-// LISTS
-$this->list_align_style = 'R'; // Determines alignment of numbers in numbered lists
-$this->list_indent_first_level = 0;    // 1/0 yex/no to indent first level of list
-$this->list_number_suffix = '.';       // Content to follow a numbered list marker e.g. '.' gives 1. or IV.; ')' gives 1) or a)
-
-// ACTIVE FORMS
-$this->useActiveForms = false;
-
-// WATERMARKS
-$this->watermarkImgBehind = false;
-$this->showWatermarkText = 0;
-$this->showWatermarkImage = 0;
-$this->watermarkText = '';
-$this->watermarkImage = '';
-$this->watermark_font = '';
-$this->watermarkTextAlpha = 0.2;
-$this->watermarkImageAlpha = 0.2;
-$this->watermarkImgAlphaBlend = 'Normal';
-       // Accepts any PDF spec. value: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, 
-       // HardLight, SoftLight, Difference, Exclusion
-       // "Multiply" works well for watermark image on top
-
-// BORDERS
-$this->autoPadding = false; // Automatically increases padding in block elements when border-radius set - if required
-
-
-//////////////////////////////////////////////
-
-// Default values if no style sheet offered    (cf. http://www.w3.org/TR/CSS21/sample.html)
-$this->defaultCSS = array(
-       'BODY' => array(
-               'FONT-FAMILY' => 'serif',
-               'FONT-SIZE' => '11pt',
-               'TEXT-INDENT' => '0pt',
-               'LINE-HEIGHT' => 'normal',
-               'MARGIN-COLLAPSE' => 'collapse', /* Custom property to collapse top/bottom margins at top/bottom of page - ignored in tables/lists */
-               'HYPHENS' => 'manual',  /* mPDF 5.6.08 */
-       ),
-       'P' => array(
-               'MARGIN' => '1.12em 0',
-       ),
-       'H1' => array(
-               'FONT-SIZE' => '2em',
-               'FONT-WEIGHT' => 'bold',
-               'MARGIN' => '0.67em 0',
-               'PAGE-BREAK-AFTER' => 'avoid',
-       ),
-       'H2' => array(
-               'FONT-SIZE' => '1.5em',
-               'FONT-WEIGHT' => 'bold',
-               'MARGIN' => '0.75em 0',
-               'PAGE-BREAK-AFTER' => 'avoid',
-       ),
-       'H3' => array(
-               'FONT-SIZE' => '1.17em',
-               'FONT-WEIGHT' => 'bold',
-               'MARGIN' => '0.83em 0',
-               'PAGE-BREAK-AFTER' => 'avoid',
-       ),
-       'H4' => array(
-               'FONT-WEIGHT' => 'bold',
-               'MARGIN' => '1.12em 0',
-               'PAGE-BREAK-AFTER' => 'avoid',
-       ),
-       'H5' => array(
-               'FONT-SIZE' => '0.83em',
-               'FONT-WEIGHT' => 'bold',
-               'MARGIN' => '1.5em 0',
-               'PAGE-BREAK-AFTER' => 'avoid',
-       ),
-       'H6' => array(
-               'FONT-SIZE' => '0.75em',
-               'FONT-WEIGHT' => 'bold',
-               'MARGIN' => '1.67em 0',
-               'PAGE-BREAK-AFTER' => 'avoid',
-       ),
-       'HR' => array(
-               'COLOR' => '#888888',
-               'TEXT-ALIGN' => 'center',
-               'WIDTH' => '100%',
-               'HEIGHT' => '0.2mm',
-               'MARGIN-TOP' => '0.83em',
-               'MARGIN-BOTTOM' => '0.83em',
-       ),
-       'PRE' => array(
-               'MARGIN' => '0.83em 0',
-               'FONT-FAMILY' => 'monospace',
-       ),
-       'S' => array(
-               'TEXT-DECORATION' => 'line-through',
-       ),
-       'STRIKE' => array(
-               'TEXT-DECORATION' => 'line-through',
-       ),
-       'DEL' => array(
-               'TEXT-DECORATION' => 'line-through',
-       ),
-       'SUB' => array(
-               'VERTICAL-ALIGN' => 'sub',
-               'FONT-SIZE' => '55%',   /* Recommended 0.83em */
-       ),
-       'SUP' => array(
-               'VERTICAL-ALIGN' => 'super',
-               'FONT-SIZE' => '55%',   /* Recommended 0.83em */
-       ),
-       'U' => array(
-               'TEXT-DECORATION' => 'underline',
-       ),
-       'INS' => array(
-               'TEXT-DECORATION' => 'underline',
-       ),
-       'B' => array(
-               'FONT-WEIGHT' => 'bold',
-       ),
-       'STRONG' => array(
-               'FONT-WEIGHT' => 'bold',
-       ),
-       'I' => array(
-               'FONT-STYLE' => 'italic',
-       ),
-       'CITE' => array(
-               'FONT-STYLE' => 'italic',
-       ),
-       'Q' => array(
-               'FONT-STYLE' => 'italic',
-       ),
-       'EM' => array(
-               'FONT-STYLE' => 'italic',
-       ),
-       'VAR' => array(
-               'FONT-STYLE' => 'italic',
-       ),
-       'SAMP' => array(
-               'FONT-FAMILY' => 'monospace',
-       ),
-       'CODE' => array(
-               'FONT-FAMILY' => 'monospace',
-       ),
-       'KBD' => array(
-               'FONT-FAMILY' => 'monospace',
-       ),
-       'TT' => array(
-               'FONT-FAMILY' => 'monospace',
-       ),
-       'SMALL' => array(
-               'FONT-SIZE' => '83%',
-       ),
-       'BIG' => array(
-               'FONT-SIZE' => '117%',
-       ),
-       'ACRONYM' => array(
-               'FONT-SIZE' => '77%',
-               'FONT-WEIGHT' => 'bold',
-       ),
-       'ADDRESS' => array(
-               'FONT-STYLE' => 'italic',
-       ),
-       'BLOCKQUOTE' => array(
-               'MARGIN-LEFT' => '40px',
-               'MARGIN-RIGHT' => '40px',
-               'MARGIN-TOP' => '1.12em',
-               'MARGIN-BOTTOM' => '1.12em',
-       ),
-       'A' => array(
-               'COLOR' => '#0000FF',
-               'TEXT-DECORATION' => 'underline',
-       ),
-       'UL' => array(
-               'MARGIN' => '0.83em 0',         /* only applied to top-level of nested lists */
-               'TEXT-INDENT' => '1.3em',       /* Custom effect - list indent */
-       ),
-       'OL' => array(
-               'MARGIN' => '0.83em 0',         /* only applied to top-level of nested lists */
-               'TEXT-INDENT' => '1.3em',       /* Custom effect - list indent */
-       ),
-       'DL' => array(
-               'MARGIN' => '1.67em 0',
-       ),
-       'DT' => array(
-       ),
-       'DD' => array(
-               'PADDING-LEFT' => '40px',
-       ),
-       'TABLE' => array(
-               'MARGIN' => '0',
-               'BORDER-COLLAPSE' => 'separate',
-               'BORDER-SPACING' => '2px',
-               'EMPTY-CELLS' => 'show',
-               'LINE-HEIGHT' => '1.2',
-               'VERTICAL-ALIGN' => 'middle',
-       ),
-       'THEAD' => array(
-       ),
-       'TFOOT' => array(
-       ),
-       'TH' => array(
-               'FONT-WEIGHT' => 'bold',
-               'TEXT-ALIGN' => 'center',
-               'PADDING-LEFT' => '0.1em',
-               'PADDING-RIGHT' => '0.1em',
-               'PADDING-TOP' => '0.1em',
-               'PADDING-BOTTOM' => '0.1em',
-       ),
-       'TD' => array(
-               'PADDING-LEFT' => '0.1em',
-               'PADDING-RIGHT' => '0.1em',
-               'PADDING-TOP' => '0.1em',
-               'PADDING-BOTTOM' => '0.1em',
-       ),
-       'CAPTION' => array(
-               'TEXT-ALIGN' => 'center',
-       ),
-       'IMG' => array(
-               'MARGIN' => '0',
-               'VERTICAL-ALIGN' => 'baseline',
-       ),
-       'INPUT' => array(
-               'FONT-FAMILY' => 'sans-serif',
-               'VERTICAL-ALIGN' => 'middle',
-               'FONT-SIZE' => '0.9em',
-       ),
-       'SELECT' => array(
-               'FONT-FAMILY' => 'sans-serif',
-               'FONT-SIZE' => '0.9em',
-               'VERTICAL-ALIGN' => 'middle',
-       ),
-       'TEXTAREA' => array(
-               'FONT-FAMILY' => 'monospace',
-               'FONT-SIZE' => '0.9em',
-               'VERTICAL-ALIGN' => 'text-bottom',
-       ),
-       'MARK' => array(        /* mPDF 5.5.09 */
-               'BACKGROUND-COLOR' => 'yellow',
-       ),
-);
-
-
-//////////////////////////////////////////////////
-// VALUES ONLY LIKELY TO BE CHANGED BY DEVELOPERS
-//////////////////////////////////////////////////
-$this->pdf_version = '1.4';
-
-// Hyphenation
-$this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv');        // existing defined patterns
-
-$this->default_lineheight_correction=1.2;      // Value 1 sets lineheight=fontsize height; 
-                                                       // Value used if line-height not set by CSS (usuallly is)
-
-$this->fontsizes = array('XX-SMALL'=>0.7, 'X-SMALL'=>0.77, 'SMALL'=>0.86, 'MEDIUM'=>1, 'LARGE'=>1.2, 'X-LARGE'=>1.5, 'XX-LARGE'=>2);
-
-// CHARACTER PATTERN MATCHES TO DETECT LANGUAGES
-       // pattern used to detect RTL characters -> force RTL
-       $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0700}-\x{083E}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";   
-
-       // CJK Chars which require changing and are distinctive of specific charset
-       $this->pregUHCchars = "\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";
-       $this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";  
-
-       // Chars which distinguish CJK but not between different
-       $this->pregCJKchars = "\x{1100}-\x{11FF}\x{2E80}-\x{A4CF}\x{A800}-\x{D7AF}\x{F900}-\x{FAFF}\x{FE30}-\x{FE6F}\x{FF00}-\x{FFEF}\x{20000}-\x{2FA1F}";
-
-       // For CJK Line-breaking
-       //Leading characters - Not allowed at end of line
-       $this->CJKleading = "\$\(\*\[\{\x{00a3}\x{00a5}\x{00ab}\x{00b7}\x{2018}\x{201c}\x{2035}\x{3005}\x{3007}\x{3008}\x{300a}\x{300c}\x{300e}\x{3010}\x{3014}\x{3016}\x{3018}\x{301d}\x{fe34}\x{fe57}\x{fe59}\x{fe5b}\x{ff04}\x{ff08}\x{ff0e}\x{ff3b}\x{ff5b}\x{ff5f}\x{ffe1}\x{ffe5}\x{ffe6}";
-       // Following characters - Not allowed at start
-       $this->CJKfollowing = "!%\),\.:;>\?\]\}\x{00a2}\x{00a8}\x{00b0}\x{00b7}\x{00bb}\x{02c7}\x{02c9}\x{2010}\x{2013}-\x{2016}\x{2019}\x{201d}-\x{201f}\x{2020}-\x{2022}\x{2025}\x{2027}\x{203a}\x{203c}\x{2047}-\x{2049}\x{2103}\x{2236}\x{2574}\x{3001}-\x{3003}\x{3005}\x{3006}\x{3009}\x{300b}\x{300d}\x{300f}\x{3011}\x{3015}\x{3017}\x{3019}\x{301c}\x{301e}\x{301f}\x{303b}\x{3041}\x{3043}\x{3045}\x{3047}\x{3049}\x{3063}\x{3083}\x{3085}\x{3087}\x{308e}\x{3095}\x{3096}\x{30a0}\x{30a1}\x{30a3}\x{30a5}\x{30a7}\x{30a9}\x{30c3}\x{30e3}\x{30e5}\x{30e7}\x{30ee}\x{30f5}\x{30f6}\x{30fb}-\x{30fe}\x{31f0}-\x{31ff}\x{fe30}-\x{fe33}\x{fe50}-\x{fe56}\x{fe58}\x{fe5a}\x{fe5c}\x{ff01}\x{ff02}\x{ff05}\x{ff07}\x{ff09}\x{ff0c}\x{ff0e}\x{ff1a}\x{ff1b}\x{ff1f}\x{ff3d}\x{ff40}\x{ff5c}-\x{ff5e}\x{ff60}\x{ff64}";
-       // Characters which are allowed to overflow the right margin
-       $this->CJKoverflow = "\.,\x{ff61}\x{ff64}\x{3001}\x{3002}\x{ff0c}\x{ff0e}";
-
-
-
-       // ASCII Chars which shouldn't break string
-       // Use for very specific words
-       $this->pregASCIIchars1 = "\x{0021}-\x{002E}\x{0030}-\x{003B}?"; // no [SPACE]
-       // Use for words+
-       $this->pregASCIIchars2 = "\x{0020}-\x{002E}\x{0030}-\x{003B}?"; // [SPACE] punctuation and 0-9
-       // Use for chunks > words
-       $this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}"; // all except <>
-       // Vietnamese - specific
-       $this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";     
-       // Vietnamese -  Chars which shouldn't break string 
-       $this->pregVIETPluschars = "\x{0000}-\x{003B}\x{003F}-\x{00FF}\x{0300}-\x{036F}\x{0102}\x{0103}\x{0110}\x{0111}\x{0128}\x{0129}\x{0168}\x{0169}\x{1EF1}-\x{1EF9}";      // omits < >
-
-       // Arabic
-       $this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}";
-       // Characters of Urdu, Pashto, Sindhi (but NOT arabic or persian/farsi) [not covered by DejavuSans font]
-       $this->pregNonARABICchars = "\x{0671}-\x{067D}\x{067F}-\x{0685}\x{0687}-\x{0697}\x{0699}-\x{06A8}\x{06AA}-\x{06AE}\x{06B0}-\x{06CB}\x{06CD}-\x{06D3}";
-
-       $this->pregHEBchars = "\x{0590}-\x{05FF}\x{FB00}-\x{FB49}";     // Hebrew
-
-       // INDIC
-       $this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}";      // Devanagari (Hindi) minus the common indic punctuation 0964,0965
-       $this->pregBNchars = "\x{0980}-\x{09FF}";       // Bengali 
-       $this->pregPAchars = "\x{0A00}-\x{0A7F}";       // Gurmukhi (Punjabi)
-       $this->pregGUchars = "\x{0A80}-\x{0AFF}";       // Gujarati
-       $this->pregORchars = "\x{0B00}-\x{0B7F}";       // Oriya 
-       $this->pregTAchars = "\x{0B80}-\x{0BFF}";       // Tamil 
-       $this->pregTEchars = "\x{0C00}-\x{0C7F}";       // Telugu 
-       $this->pregKNchars = "\x{0C80}-\x{0CFF}";       // Kannada 
-       $this->pregMLchars = "\x{0D00}-\x{0D7F}";       // Malayalam 
-       $this->pregSHchars = "\x{0D80}-\x{0DFF}";       // Sinhala 
-
-       $this->pregINDextra = "\x{200B}-\x{200D}\x{0964}\x{0965}\x{0020}-\x{0022}\x{0024}-\x{002E}\x{003A}-\x{003F}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{00A0}";
-       // 200B-D=Zero-width joiners; 0964,0965=Generic Indic punctuation; NBSP & general punctuation (excludes # and / so can use in autoFont() )
-
-$this->allowedCSStags = 'DIV|P|H1|H2|H3|H4|H5|H6|FORM|IMG|A|BODY|TABLE|HR|THEAD|TFOOT|TBODY|TH|TR|TD|UL|OL|LI|PRE|BLOCKQUOTE|ADDRESS|DL|DT|DD';
-$this->allowedCSStags .= '|ARTICLE|ASIDE|FIGURE|FIGCAPTION|FOOTER|HEADER|HGROUP|NAV|SECTION|MARK|DETAILS|SUMMARY|METER|PROGRESS|TIME'; // mPDF 5.5.09
-$this->allowedCSStags .= '|SPAN|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|STRIKE|S|U|DEL|INS|Q|FONT';
-$this->allowedCSStags .= '|SELECT|INPUT|TEXTAREA|CAPTION|FIELDSET|LEGEND';     // mPDF 5.4.18
-$this->allowedCSStags .= '|TEXTCIRCLE|DOTTAB'; // mPDF 5.5.23  // mPDF 5.6.33
-
-$this->outerblocktags = array('DIV','FORM','CENTER','DL','FIELDSET','ARTICLE','ASIDE','FIGURE','FIGCAPTION', 'FOOTER','HEADER','HGROUP','NAV','SECTION','DETAILS','SUMMARY');  // mPDF 5.5.09 // mPDF 5.5.22
-$this->innerblocktags = array('P','BLOCKQUOTE','ADDRESS','PRE','H1','H2','H3','H4','H5','H6','DT','DD','CAPTION');
-
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/config_cp.php b/inc/3rdparty/libraries/mpdf/config_cp.php
deleted file mode 100644 (file)
index e2e21f4..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-<?php
-
-
-function GetLangOpts($llcc, $adobeCJK) {
-       if (strlen($llcc) == 5) {
-               $lang = substr(strtolower($llcc),0,2);
-               $country = substr(strtoupper($llcc),3,2);
-       }
-       else { $lang = strtolower($llcc); $country = ''; }
-       $unifonts = "";
-       $coreSuitable = false;
-
-       switch($lang){
-         CASE "en":
-         CASE "ca":
-         CASE "cy":
-         CASE "da":
-         CASE "de":
-         CASE "es":
-         CASE "eu":
-         CASE "fr":
-         CASE "ga":
-         CASE "fi": 
-         CASE "is":
-         CASE "it":
-         CASE "nl":
-         CASE "no":
-         CASE "pt":
-         CASE "sv":
-               // Edit this value to define how mPDF behaves when using new mPDF('-x')
-               // If set to TRUE, mPDF will use Adobe core fonts only when it recognises the languages above
-               $coreSuitable = true;  break;
-
-
-
-         // RTL Languages
-         CASE "he":
-         CASE "yi":
-               $unifonts = "dejavusans,dejavusansB,dejavusansI,dejavusansBI";  break;
-
-         // Arabic
-         CASE "ar":  
-               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI";  break;
-         CASE "fa":  
-               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI";  break;
-         CASE "ps": 
-               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
-         CASE "ur":  
-               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
-
-         // Sindhi (can be Arabic or Devanagari)
-         CASE "sd":
-               if ($country == "IN") { $unifonts = "ind_hi_1_001"; }
-       //      else if ($country == "PK") { $unifonts = ""; }
-       //      else { $unifonts = ""; }
-               break;
-
-
-         // INDIC 
-         // Assamese
-         CASE "as":  $unifonts = "ind_bn_1_001"; break;
-         // Bengali
-         CASE "bn":  $unifonts = "ind_bn_1_001"; break;
-         // Gujarati
-         CASE "gu":  $unifonts = "ind_gu_1_001"; break;
-         // Hindi (Devanagari)
-         CASE "hi":  $unifonts = "ind_hi_1_001"; break;
-         // Kannada
-         CASE "kn":  $unifonts = "ind_kn_1_001"; break;
-         // Kashmiri
-         CASE "ks":  $unifonts = "ind_hi_1_001"; break;
-         // Malayalam
-         CASE "ml":  $unifonts = "ind_ml_1_001"; break;
-         // Nepali (Devanagari)
-         CASE "ne":  $unifonts = "ind_hi_1_001"; break;
-         // Oriya
-         CASE "or":  $unifonts = "ind_or_1_001"; break;
-         // Punjabi (Gurmukhi)
-         CASE "pa":  $unifonts = "ind_pa_1_001"; break;
-         // Tamil
-         CASE "ta":  $unifonts = "ind_ta_1_001"; break;
-         // Telegu
-         CASE "te":  $unifonts = "ind_te_1_001"; break;
-
-         // THAI
-         CASE "th":  $unifonts = "garuda,garudaB,garudaI,garudaBI,norasi,norasiB,norasiI,norasiBI";  break;
-
-         // VIETNAMESE
-         CASE "vi":  
-               $unifonts = "dejavusanscondensed,dejavusanscondensedB,dejavusanscondensedI,dejavusanscondensedBI,dejavusans,dejavusansB,dejavusansI,dejavusansBI"; break;
-
-         // CJK Langauges
-         CASE "ja":  
-               if ($adobeCJK) {
-                       $unifonts = "sjis,sjisB,sjisI,sjisBI";
-               }
-/* Uncomment these lines if CJK fonts available */
-//             else {
-//                     $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
-//             }
-               break;
-
-         CASE "ko":  
-               if ($adobeCJK) {
-                       $unifonts = "uhc,uhcB,uhcI,uhcBI";
-               }
-/* Uncomment these lines if CJK fonts available */
-//             else {
-//                     $unifonts = "unbatang_0613"; 
-//             }
-               break;
-
-         CASE "zh":
-               if ($country == "HK" || $country == "TW") { 
-                       if ($adobeCJK) {
-                               $unifonts = "big5,big5B,big5I,big5BI"; 
-                       }
-/* Uncomment these lines if CJK fonts available */
-//                     else {
-//                             $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
-//                     }
-               }
-               else if ($country == "CN") { 
-                       if ($adobeCJK) {
-                               $unifonts = "gb,gbB,gbI,gbBI";  
-                       }
-/* Uncomment these lines if CJK fonts available */
-//                     else {
-//                             $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
-//                     }
-               }
-               else { 
-                       if ($adobeCJK) {
-                               $unifonts = "gb,gbB,gbI,gbBI"; 
-                       }
-/* Uncomment these lines if CJK fonts available */
-//                     else {
-//                             $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
-//                     }
-               }
-               break;
-
-       }
-
-
-       $unifonts_arr = array();
-       if ($unifonts) {
-               $unifonts_arr = preg_split('/\s*,\s*/',$unifonts);
-       }
-       return array($coreSuitable ,$unifonts_arr);
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/config_fonts.php b/inc/3rdparty/libraries/mpdf/config_fonts.php
deleted file mode 100644 (file)
index 7cb990a..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-<?php
-
-
-// Optionally define a folder which contains TTF fonts
-// mPDF will look here before looking in the usual _MPDF_TTFONTPATH
-// Useful if you already have a folder for your fonts
-// e.g. on Windows: define("_MPDF_SYSTEM_TTFONTS", 'C:/Windows/Fonts/');
-// Leave undefined if not required
-
-// define("_MPDF_SYSTEM_TTFONTS", '');
-
-
-// Optionally set font(s) (names as defined below in $this->fontdata) to use for missing characters
-// when using useSubstitutions. Use a font with wide coverage - dejavusanscondensed is a good start
-// only works using subsets (otherwise would add very large file)
-// doesn't do Indic or arabic
-// More than 1 font can be specified but each will add to the processing time of the script
-
-$this->backupSubsFont = array('dejavusanscondensed');
-
-
-// Optionally set a font (name as defined below in $this->fontdata) to use for CJK characters
-// in Plane 2 Unicode (> U+20000) when using useSubstitutions. 
-// Use a font like hannomb or sun-extb if available
-// only works using subsets (otherwise would add very large file)
-// Leave undefined or blank if not not required
-
-// $this->backupSIPFont = 'sun-extb';
-
-
-/*
-This array defines translations from font-family in CSS or HTML
-to the internal font-family name used in mPDF. 
-Can include as many as want, regardless of which fonts are installed.
-By default mPDF will take a CSS/HTML font-family and remove spaces
-and change to lowercase e.g. "Arial Unicode MS" will be recognised as
-"arialunicodems"
-You only need to define additional translations.
-You can also use it to define specific substitutions e.g.
-'frutiger55roman' => 'arial'
-Generic substitutions (i.e. to a sans-serif or serif font) are set 
-by including the font-family in $this->sans_fonts below
-To aid backwards compatability some are included:
-*/
-$this->fonttrans = array(
-       'helvetica' => 'arial',
-       'times' => 'timesnewroman',
-       'courier' => 'couriernew',
-       'trebuchet' => 'trebuchetms',
-       'comic' => 'comicsansms',
-       'franklin' => 'franklingothicbook',
-       'albertus' => 'albertusmedium',
-       'arialuni' => 'arialunicodems',
-       'zn_hannom_a' => 'hannoma',
-       'ocr-b' => 'ocrb',
-       'ocr-b10bt' => 'ocrb',
-
-
-);
-
-/*
-This array lists the file names of the TrueType .ttf or .otf font files
-for each variant of the (internal mPDF) font-family name.
-['R'] = Regular (Normal), others are Bold, Italic, and Bold-Italic
-Each entry must contain an ['R'] entry, but others are optional.
-Only the font (files) entered here will be available to use in mPDF.
-Put preferred default first in order.
-This will be used if a named font cannot be found in any of 
-$this->sans_fonts, $this->serif_fonts or $this->mono_fonts
-
-['indic'] = true; for special mPDF fonts containing Indic characters
-['sip-ext'] = 'hannomb'; name a related font file containing SIP characters
-
-If a .ttc TrueType collection file is referenced, the number of the font
-within the collection is required. Fonts in the collection are numbered 
-starting at 1, as they appear in the .ttc file e.g.
-       "cambria" => array(
-               'R' => "cambria.ttc",
-               'B' => "cambriab.ttf",
-               'I' => "cambriai.ttf",
-               'BI' => "cambriaz.ttf",
-               'TTCfontID' => array(
-                       'R' => 1,       
-                       ),
-               ),
-       "cambriamath" => array(
-               'R' => "cambria.ttc",
-               'TTCfontID' => array(
-                       'R' => 2,       
-                       ),
-               ),
-*/
-
-$this->fontdata = array(
-       "dejavusanscondensed" => array(
-               'R' => "DejaVuSansCondensed.ttf",
-               'B' => "DejaVuSansCondensed-Bold.ttf",
-               'I' => "DejaVuSansCondensed-Oblique.ttf",
-               'BI' => "DejaVuSansCondensed-BoldOblique.ttf",
-               ),
-       "dejavusans" => array(
-               'R' => "DejaVuSans.ttf",
-               'B' => "DejaVuSans-Bold.ttf",
-               'I' => "DejaVuSans-Oblique.ttf",
-               'BI' => "DejaVuSans-BoldOblique.ttf",
-               ),
-       "dejavuserif" => array(
-               'R' => "DejaVuSerif.ttf",
-               'B' => "DejaVuSerif-Bold.ttf",
-               'I' => "DejaVuSerif-Italic.ttf",
-               'BI' => "DejaVuSerif-BoldItalic.ttf",
-               ),
-       "dejavuserifcondensed" => array(
-               'R' => "DejaVuSerifCondensed.ttf",
-               'B' => "DejaVuSerifCondensed-Bold.ttf",
-               'I' => "DejaVuSerifCondensed-Italic.ttf",
-               'BI' => "DejaVuSerifCondensed-BoldItalic.ttf",
-               ),
-       "dejavusansmono" => array(
-               'R' => "DejaVuSansMono.ttf",
-               'B' => "DejaVuSansMono-Bold.ttf",
-               'I' => "DejaVuSansMono-Oblique.ttf",
-               'BI' => "DejaVuSansMono-BoldOblique.ttf",
-               ),
-
-
-/* OCR-B font for Barcodes */
-       "ocrb" => array(
-               'R' => "ocrb10.ttf",
-               ),
-
-/* Thai fonts */
-       "garuda" => array(
-               'R' => "Garuda.ttf",
-               'B' => "Garuda-Bold.ttf",
-               'I' => "Garuda-Oblique.ttf",
-               'BI' => "Garuda-BoldOblique.ttf",
-               ),
-       "norasi" => array(
-               'R' => "Norasi.ttf",
-               'B' => "Norasi-Bold.ttf",
-               'I' => "Norasi-Oblique.ttf",
-               'BI' => "Norasi-BoldOblique.ttf",
-               ),
-
-
-/* Indic fonts */
-       "ind_bn_1_001" => array(
-               'R' => "ind_bn_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_hi_1_001" => array(
-               'R' => "ind_hi_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_ml_1_001" => array(
-               'R' => "ind_ml_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_kn_1_001" => array(
-               'R' => "ind_kn_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_gu_1_001" => array(
-               'R' => "ind_gu_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_or_1_001" => array(
-               'R' => "ind_or_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_ta_1_001" => array(
-               'R' => "ind_ta_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_te_1_001" => array(
-               'R' => "ind_te_1_001.ttf",
-               'indic' => true,
-               ),
-       "ind_pa_1_001" => array(
-               'R' => "ind_pa_1_001.ttf",
-               'indic' => true,
-               ),
-
-
-/* XW Zar Arabic fonts */
-       "xbriyaz" => array(
-               'R' => "XB Riyaz.ttf",
-               'B' => "XB RiyazBd.ttf",
-               'I' => "XB RiyazIt.ttf",
-               'BI' => "XB RiyazBdIt.ttf",
-               'unAGlyphs' => true,
-               ),
-       "xbzar" => array(
-               'R' => "XB Zar.ttf",
-               'B' => "XB Zar Bd.ttf",
-               'I' => "XB Zar It.ttf",
-               'BI' => "XB Zar BdIt.ttf",
-               'unAGlyphs' => true,
-               ),
-
-
-
-
-/* Examples of some CJK fonts */
-/*
-       "unbatang_0613" => array(
-               'R' => "UnBatang_0613.ttf",
-               ),
-       "sun-exta" => array(
-               'R' => "Sun-ExtA.ttf",
-               'sip-ext' => 'sun-extb',
-               ),
-       "sun-extb" => array(
-               'R' => "Sun-ExtB.ttf",
-               ),
-       "hannoma" => array(
-               'R' => "HAN NOM A.ttf",
-               'sip-ext' => 'hannomb', 
-               ),
-       "hannomb" => array(
-               'R' => "HAN NOM B.ttf",
-               ),
-
-
-       'mingliu' => array (
-               'R' => 'mingliu.ttc',
-               'TTCfontID' => array (
-                       'R' => 1,
-               ),
-               'sip-ext' => 'mingliu-extb',
-       ),
-       'pmingliu' => array (
-               'R' => 'mingliu.ttc',
-               'TTCfontID' => array (
-                       'R' => 2,
-               ),
-               'sip-ext' => 'pmingliu-extb',
-       ),
-       'mingliu_hkscs' => array (
-               'R' => 'mingliu.ttc',
-               'TTCfontID' => array (
-                       'R' => 3,
-               ),
-               'sip-ext' => 'mingliu_hkscs-extb',
-       ),
-       'mingliu-extb' => array (
-               'R' => 'mingliub.ttc',
-               'TTCfontID' => array (
-                       'R' => 1,
-               ),
-       ),
-       'pmingliu-extb' => array (
-               'R' => 'mingliub.ttc',
-               'TTCfontID' => array (
-                       'R' => 2,
-               ),
-       ),
-       'mingliu_hkscs-extb' => array (
-               'R' => 'mingliub.ttc',
-               'TTCfontID' => array (
-                       'R' => 3,
-               ),
-       ),
-*/
-
-);
-
-
-// Add fonts to this array if they contain characters in the SIP or SMP Unicode planes
-// but you do not require them. This allows a more efficient form of subsetting to be used.
-$this->BMPonly = array(
-       "dejavusanscondensed",
-       "dejavusans",
-       "dejavuserifcondensed",
-       "dejavuserif",
-       "dejavusansmono",
-       );
-
-// These next 3 arrays do two things:
-// 1. If a font referred to in HTML/CSS is not available to mPDF, these arrays will determine whether
-//    a serif/sans-serif or monospace font is substituted
-// 2. The first font in each array will be the font which is substituted in circumstances as above
-//     (Otherwise the order is irrelevant)
-// Use the mPDF font-family names i.e. lowercase and no spaces (after any translations in $fonttrans)
-// Always include "sans-serif", "serif" and "monospace" etc.
-$this->sans_fonts = array('dejavusanscondensed','dejavusans','freesans','liberationsans','sans','sans-serif','cursive','fantasy', 
-                               'arial','helvetica','verdana','geneva','lucida','arialnarrow','arialblack','arialunicodems',
-                               'franklin','franklingothicbook','tahoma','garuda','calibri','trebuchet','lucidagrande','microsoftsansserif',
-                               'trebuchetms','lucidasansunicode','franklingothicmedium','albertusmedium','xbriyaz','albasuper','quillscript'
-
-);
-
-$this->serif_fonts = array('dejavuserifcondensed','dejavuserif','freeserif','liberationserif','serif',
-                               'timesnewroman','times','centuryschoolbookl','palatinolinotype','centurygothic',
-                               'bookmanoldstyle','bookantiqua','cyberbit','cambria',
-                               'norasi','charis','palatino','constantia','georgia','albertus','xbzar','algerian','garamond',
-);
-
-$this->mono_fonts = array('dejavusansmono','freemono','liberationmono','courier', 'mono','monospace','ocrb','ocr-b','lucidaconsole',
-                               'couriernew','monotypecorsiva'
-);
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourier.php b/inc/3rdparty/libraries/mpdf/font/ccourier.php
deleted file mode 100644 (file)
index 86d7a97..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-for($i=0;$i<=255;$i++)
-       $cw[chr($i)]=600;
-
-$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-23 -250 715 805]');
-$up=-100;
-$ut=50;
-
-?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourierb.php b/inc/3rdparty/libraries/mpdf/font/ccourierb.php
deleted file mode 100644 (file)
index 71444d8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-for($i=0;$i<=255;$i++)
-       $cw[chr($i)]=600;
-$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-113 -250 749 801]');
-$up=-100;
-$ut=50;
-
-
-?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourierbi.php b/inc/3rdparty/libraries/mpdf/font/ccourierbi.php
deleted file mode 100644 (file)
index e7d215a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-for($i=0;$i<=255;$i++)
-       $cw[chr($i)]=600;
-$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-57 -250 869 801]');
-$up=-100;
-$ut=50;
-
-
-?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourieri.php b/inc/3rdparty/libraries/mpdf/font/ccourieri.php
deleted file mode 100644 (file)
index b16a133..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-for($i=0;$i<=255;$i++)
-       $cw[chr($i)]=600;
-$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-27 -250 849 805]');
-$up=-100;
-$ut=50;
-
-
-?>
diff --git a/inc/3rdparty/libraries/mpdf/font/chelvetica.php b/inc/3rdparty/libraries/mpdf/font/chelvetica.php
deleted file mode 100644 (file)
index 176146f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
-       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
-       'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-       'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
-       'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
-       chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-       chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
-       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
-       chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
-
-$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-166 -225 1000 931]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -37, chr(89)=> -74, chr(118)=> -18, chr(119)=> -18, chr(121)=> -18, chr(146)=> -74, ), chr(70)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -55, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -74, chr(89)=> -74, chr(121)=> -37, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -18, chr(86)=> -18, chr(87)=> -18, chr(89)=> -18, ), chr(84)=> array ( chr(44)=> -110, chr(46)=> -110, chr(58)=> -110, chr(65)=> -74, chr(79)=> -18, chr(97)=> -110, chr(99)=> -110, chr(101)=> -110, chr(105)=> -37, chr(111)=> -110, chr(114)=> -37, chr(115)=> -110, chr(117)=> -37, chr(119)=> -55, chr(121)=> -55, ), chr(86)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -74, chr(97)=> -74, chr(101)=> -55, chr(105)=> -18, chr(111)=> -55, chr(114)=> -37, chr(117)=> -37, chr(121)=> -37, ), chr(87)=> array ( chr(44)=> -55, chr(46)=> -55, chr(58)=> -18, chr(65)=> -37, chr(97)=> -37, chr(101)=> -18, chr(105)=> 0, chr(111)=> -18, chr(114)=> -18, chr(117)=> -18, chr(121)=> -8, ), chr(89)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -55, chr(65)=> -74, chr(97)=> -74, chr(101)=> -91, chr(105)=> -37, chr(111)=> -91, chr(112)=> -74, chr(113)=> -91, chr(117)=> -55, chr(118)=> -55, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 18, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(121)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(145)=> array ( chr(145)=> -18, ), chr(146)=> array ( chr(115)=> -18, chr(146)=> -18, ), );
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/chelveticab.php b/inc/3rdparty/libraries/mpdf/font/chelveticab.php
deleted file mode 100644 (file)
index 362034c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
-       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
-       'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-       'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
-       'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
-       chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-       chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
-       chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
-
-$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -228 1003 962]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -55, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -55, chr(89)=> -91, chr(118)=> -37, chr(119)=> -18, chr(121)=> -37, chr(146)=> -55, ), chr(70)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -55, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -55, chr(89)=> -91, chr(121)=> -37, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(86)=> -18, chr(87)=> -18, chr(89)=> -37, ), chr(84)=> array ( chr(44)=> -110, chr(46)=> -110, chr(58)=> -110, chr(65)=> -74, chr(79)=> -18, chr(97)=> -74, chr(99)=> -74, chr(101)=> -74, chr(105)=> -18, chr(111)=> -74, chr(114)=> -55, chr(115)=> -74, chr(117)=> -74, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -55, chr(65)=> -74, chr(97)=> -55, chr(101)=> -55, chr(105)=> -18, chr(111)=> -74, chr(114)=> -55, chr(117)=> -37, chr(121)=> -37, ), chr(87)=> array ( chr(44)=> -55, chr(46)=> -55, chr(58)=> -18, chr(65)=> -55, chr(97)=> -37, chr(101)=> -18, chr(105)=> -8, chr(111)=> -18, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(89)=> array ( chr(44)=> -110, chr(46)=> -110, chr(58)=> -74, chr(65)=> -91, chr(97)=> -55, chr(101)=> -55, chr(105)=> -37, chr(111)=> -74, chr(112)=> -55, chr(113)=> -74, chr(117)=> -55, chr(118)=> -55, ), chr(102)=> array ( chr(146)=> 18, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(121)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(145)=> array ( chr(145)=> -37, ), chr(146)=> array ( chr(115)=> -37, chr(146)=> -37, ), );
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/chelveticabi.php b/inc/3rdparty/libraries/mpdf/font/chelveticabi.php
deleted file mode 100644 (file)
index b71ad34..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
-       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
-       'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-       'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
-       'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
-       chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-       chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
-       chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
-
-$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-174 -228 1114 962]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -55, chr(89)=> -74, chr(146)=> -55, ), chr(70)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -55, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -55, chr(87)=> -55, chr(89)=> -74, chr(146)=> -74, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -18, chr(87)=> -18, chr(89)=> -18, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -74, chr(65)=> -74, chr(79)=> -18, chr(97)=> -37, chr(99)=> -37, chr(101)=> -37, chr(105)=> -18, chr(111)=> -37, chr(114)=> -18, chr(115)=> -37, chr(117)=> -18, chr(119)=> -37, chr(121)=> -37, ), chr(86)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -74, chr(97)=> -37, chr(101)=> -37, chr(105)=> -37, chr(111)=> -37, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(87)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -37, chr(65)=> -55, chr(97)=> -18, chr(101)=> -18, chr(105)=> -8, chr(111)=> -18, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -55, chr(65)=> -74, chr(97)=> -37, chr(101)=> -37, chr(105)=> -37, chr(111)=> -37, chr(112)=> -37, chr(113)=> -37, chr(117)=> -37, chr(118)=> -37, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 18, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(119)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(121)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(145)=> array ( chr(145)=> -37, ), chr(146)=> array ( chr(115)=> -18, chr(116)=> 18, chr(146)=> -37, ), ); 
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/chelveticai.php b/inc/3rdparty/libraries/mpdf/font/chelveticai.php
deleted file mode 100644 (file)
index 4f10f4e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
-       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
-       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
-       'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
-       'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
-       'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
-       chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-       chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
-       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
-       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
-       chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
-
-$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -225 1116 931]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -55, chr(87)=> -18, chr(89)=> -74, chr(118)=> -18, chr(119)=> -18, chr(121)=> -8, chr(146)=> -37, ), chr(70)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -55, chr(87)=> -37, chr(89)=> -91, chr(121)=> -18, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -18, chr(86)=> -18, chr(87)=> -18, chr(89)=> -37, ), chr(84)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -74, chr(65)=> -74, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -8, chr(111)=> -91, chr(114)=> -74, chr(115)=> -91, chr(117)=> -74, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -18, chr(65)=> -55, chr(97)=> -37, chr(101)=> -37, chr(105)=> -18, chr(111)=> -37, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(87)=> array ( chr(44)=> -37, chr(46)=> -37, chr(65)=> -18, chr(97)=> -18, chr(101)=> -18, chr(105)=> -8, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -55, chr(97)=> -74, chr(101)=> -55, chr(105)=> -18, chr(111)=> -55, chr(112)=> -55, chr(113)=> -55, chr(117)=> -37, chr(118)=> -37, ), chr(102)=> array ( chr(146)=> 37, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -37, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(121)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(145)=> array ( chr(145)=> -37, ), chr(146)=> array ( chr(115)=> -18, chr(146)=> -37, ), ); 
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/csymbol.php b/inc/3rdparty/libraries/mpdf/font/csymbol.php
deleted file mode 100644 (file)
index a7b1ddf..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
-       ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
-       'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
-       'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
-       'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
-       chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
-       chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
-       chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
-       chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
-       chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
-       chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
-
-$desc=array('FontBBox'=>'[-180 -293 1090 1010]');
-$up=-100;
-$ut=50;
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimes.php b/inc/3rdparty/libraries/mpdf/font/ctimes.php
deleted file mode 100644 (file)
index c0a2486..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
-       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
-       'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
-       'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
-       'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-       chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
-       chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
-       chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-       chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
-       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
-
-$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>662,'FontBBox'=>'[-168 -218 1000 898]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -37, ), chr(65)=> array ( chr(84)=> -110, chr(86)=> -128, chr(87)=> -80, chr(89)=> -91, chr(118)=> -74, chr(119)=> -91, chr(121)=> -91, chr(146)=> -110, ), chr(70)=> array ( chr(44)=> -80, chr(46)=> -80, chr(65)=> -74, ), chr(76)=> array ( chr(84)=> -91, chr(86)=> -91, chr(87)=> -74, chr(89)=> -100, chr(121)=> -55, chr(146)=> -91, ), chr(80)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -91, ), chr(82)=> array ( chr(84)=> -60, chr(86)=> -80, chr(87)=> -55, chr(89)=> -55, chr(121)=> -40, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -49, chr(65)=> -80, chr(79)=> -18, chr(97)=> -69, chr(99)=> -69, chr(101)=> -69, chr(105)=> -35, chr(111)=> -69, chr(114)=> -35, chr(115)=> -69, chr(117)=> -35, chr(119)=> -69, chr(121)=> -69, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -74, chr(65)=> -128, chr(97)=> -110, chr(101)=> -110, chr(105)=> -60, chr(111)=> -128, chr(114)=> -60, chr(117)=> -60, chr(121)=> -110, ), chr(87)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -110, chr(97)=> -80, chr(101)=> -80, chr(105)=> -40, chr(111)=> -80, chr(114)=> -40, chr(117)=> -40, chr(121)=> -60, ), chr(89)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -91, chr(65)=> -110, chr(97)=> -100, chr(101)=> -100, chr(105)=> -55, chr(111)=> -100, chr(112)=> -91, chr(113)=> -110, chr(117)=> -110, chr(118)=> -100, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 55, ), chr(114)=> array ( chr(44)=> -40, chr(46)=> -55, chr(103)=> -18, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -64, chr(46)=> -64, ), chr(119)=> array ( chr(44)=> -64, chr(46)=> -64, ), chr(121)=> array ( chr(44)=> -64, chr(46)=> -64, ), chr(145)=> array ( chr(145)=> -74, ), chr(146)=> array ( chr(115)=> -55, chr(116)=> -18, chr(146)=> -74, ), ); 
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimesb.php b/inc/3rdparty/libraries/mpdf/font/ctimesb.php
deleted file mode 100644 (file)
index bd93d22..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
-       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
-       'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
-       'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
-       'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-       chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-       chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
-       chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
-       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
-       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
-
-$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>676,'FontBBox'=>'[-168 -218 1000 935]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -55, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -128, chr(87)=> -110, chr(89)=> -91, chr(118)=> -74, chr(119)=> -74, chr(121)=> -74, chr(146)=> -74, ), chr(70)=> array ( chr(44)=> -91, chr(46)=> -91, chr(65)=> -74, ), chr(76)=> array ( chr(84)=> -91, chr(86)=> -91, chr(87)=> -91, chr(89)=> -91, chr(121)=> -55, chr(146)=> -91, ), chr(80)=> array ( chr(44)=> -91, chr(46)=> -91, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -35, chr(86)=> -35, chr(87)=> -35, chr(89)=> -35, chr(121)=> -35, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -74, chr(65)=> -74, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -18, chr(111)=> -91, chr(114)=> -74, chr(115)=> -91, chr(117)=> -91, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -91, chr(65)=> -128, chr(79)=> -20, chr(97)=> -91, chr(101)=> -91, chr(105)=> -37, chr(111)=> -91, chr(114)=> -74, chr(117)=> -91, chr(121)=> -91, ), chr(87)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -55, chr(65)=> -110, chr(97)=> -55, chr(101)=> -55, chr(105)=> -18, chr(111)=> -55, chr(114)=> -18, chr(117)=> -18, chr(121)=> -37, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -91, chr(65)=> -91, chr(97)=> -110, chr(101)=> -110, chr(105)=> -37, chr(111)=> -110, chr(112)=> -91, chr(113)=> -110, chr(117)=> -91, chr(118)=> -110, ), chr(102)=> array ( chr(102)=> 0, chr(146)=> 55, ), chr(114)=> array ( chr(44)=> -91, chr(46)=> -91, chr(99)=> -18, chr(101)=> -18, chr(104)=> 0, chr(111)=> -18, chr(113)=> -18, chr(116)=> 0, chr(119)=> 0, chr(120)=> 0, chr(121)=> 0, chr(122)=> 0, chr(146)=> 18, ), chr(118)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(119)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(121)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(145)=> array ( chr(145)=> -74, ), chr(146)=> array ( chr(115)=> -37, chr(146)=> -74, ), ); 
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimesbi.php b/inc/3rdparty/libraries/mpdf/font/ctimesbi.php
deleted file mode 100644 (file)
index b7da5f1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
-       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
-       'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
-       'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
-       'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-       chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
-       chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
-       chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
-       chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
-       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
-
-$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>669,'FontBBox'=>'[-200 -218 996 921]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -55, ), chr(65)=> array ( chr(84)=> -55, chr(86)=> -74, chr(87)=> -91, chr(89)=> -55, chr(118)=> -74, chr(119)=> -74, chr(121)=> -74, chr(146)=> -74, ), chr(70)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -91, ), chr(76)=> array ( chr(84)=> -18, chr(86)=> -37, chr(87)=> -37, chr(89)=> -37, chr(121)=> -37, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(86)=> -18, chr(87)=> -18, chr(89)=> -18, chr(121)=> -18, ), chr(84)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -74, chr(65)=> -55, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -37, chr(111)=> -91, chr(114)=> -37, chr(115)=> -91, chr(117)=> -37, chr(119)=> -37, chr(121)=> -37, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -74, chr(65)=> -74, chr(97)=> -110, chr(101)=> -110, chr(105)=> -55, chr(111)=> -110, chr(114)=> -55, chr(117)=> -55, chr(121)=> -74, ), chr(87)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -55, chr(65)=> -74, chr(97)=> -74, chr(101)=> -74, chr(105)=> -37, chr(111)=> -74, chr(114)=> -74, chr(117)=> -55, chr(121)=> -55, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -74, chr(58)=> -91, chr(65)=> -74, chr(97)=> -91, chr(101)=> -110, chr(105)=> -55, chr(111)=> -110, chr(112)=> -74, chr(113)=> -110, chr(117)=> -91, chr(118)=> -91, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 55, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(119)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(121)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(145)=> array ( chr(145)=> -74, ), chr(146)=> array ( chr(115)=> -74, chr(116)=> -37, chr(146)=> -74, ), );
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimesi.php b/inc/3rdparty/libraries/mpdf/font/ctimesi.php
deleted file mode 100644 (file)
index 0f64098..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
-       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
-       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
-       'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
-       'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
-       'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
-       chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
-       chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
-       chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
-       chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
-       chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
-       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
-
-$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>653,'FontBBox'=>'[-169 -217 1010 883]');
-$up=-100;
-$ut=50;
-$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -37, chr(86)=> -49, chr(87)=> -37, chr(89)=> -55, chr(118)=> -55, chr(119)=> -55, chr(121)=> -55, chr(146)=> -37, ), chr(70)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -128, ), chr(76)=> array ( chr(84)=> -20, chr(86)=> -37, chr(87)=> -37, chr(89)=> -20, chr(121)=> -29, chr(146)=> -37, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -128, ), chr(82)=> array ( chr(84)=> 0, chr(86)=> -18, chr(87)=> -18, chr(89)=> -18, chr(121)=> -18, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -55, chr(65)=> -74, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -55, chr(111)=> -91, chr(114)=> -55, chr(115)=> -91, chr(117)=> -55, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -64, chr(65)=> -74, chr(79)=> -29, chr(97)=> -110, chr(101)=> -110, chr(105)=> -74, chr(111)=> -110, chr(114)=> -74, chr(117)=> -74, chr(121)=> -91, ), chr(87)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -64, chr(65)=> -69, chr(97)=> -91, chr(101)=> -91, chr(105)=> -55, chr(111)=> -91, chr(114)=> -55, chr(117)=> -55, chr(121)=> -91, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -64, chr(65)=> -69, chr(97)=> -91, chr(101)=> -91, chr(105)=> -74, chr(111)=> -91, chr(112)=> -91, chr(113)=> -110, chr(117)=> -91, chr(118)=> -91, ), chr(102)=> array ( chr(146)=> 91, ), chr(114)=> array ( chr(44)=> -110, chr(46)=> -110, chr(99)=> -37, chr(100)=> -37, chr(101)=> -37, chr(103)=> -37, chr(104)=> -18, chr(111)=> -37, chr(113)=> -37, chr(114)=> 0, chr(116)=> 0, chr(117)=> 0, chr(118)=> 0, chr(119)=> 0, chr(120)=> 0, chr(121)=> 0, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(121)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(145)=> array ( chr(145)=> -110, ), chr(146)=> array ( chr(115)=> -128, chr(116)=> -110, chr(146)=> -110, ), ); 
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/czapfdingbats.php b/inc/3rdparty/libraries/mpdf/font/czapfdingbats.php
deleted file mode 100644 (file)
index 6ead8fc..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-$cw=array(
-       chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
-       chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
-       ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
-       'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
-       'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
-       'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
-       chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
-       chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
-       chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
-       chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
-       chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
-       chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
-
-$desc=array('FontBBox'=>'[-1 -143 981 820]');
-$up=-100;
-$ut=50;
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/graph.php b/inc/3rdparty/libraries/mpdf/graph.php
deleted file mode 100644 (file)
index a210ad3..0000000
+++ /dev/null
@@ -1,721 +0,0 @@
-<?php
-
-
-// mPDF 4.5.009
-define("FF_USERFONT", 15);     // See jpgraph_ttf.inc.php for font IDs
-global $JpgUseSVGFormat;
-$JpgUseSVGFormat = true;
-
-//======================================================================================================
-// DELETE OLD GRAPH FILES FIRST - Housekeeping
-// First clear any files in directory that are >1 hrs old
-       $interval = 3600;
-       if ($handle = opendir(_MPDF_PATH.'graph_cache')) {
-          while (false !== ($file = readdir($handle))) { 
-               if (((filemtime(_MPDF_PATH.'graph_cache/'.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) { 
-                       @unlink(_MPDF_PATH.'graph_cache/'.$file);       // mPDF 4.0
-               }
-          }
-          closedir($handle); 
-       }
-//==============================================================================================================
-// LOAD GRAPHS
-
-       include_once(_JPGRAPH_PATH.'jpgraph.php'); 
-       include_once(_JPGRAPH_PATH.'jpgraph_line.php' ); 
-       include_once(_JPGRAPH_PATH.'jpgraph_log.php' ); 
-       include_once(_JPGRAPH_PATH.'jpgraph_scatter.php' ); 
-       include_once(_JPGRAPH_PATH.'jpgraph_regstat.php' ); 
-       include_once(_JPGRAPH_PATH.'jpgraph_pie.php'); 
-       include_once(_JPGRAPH_PATH.'jpgraph_pie3d.php'); 
-       include_once(_JPGRAPH_PATH.'jpgraph_bar.php'); 
-       include_once(_JPGRAPH_PATH.'jpgraph_radar.php'); 
-
-
-//======================================================================================================
-//*****************************************************************************************************
-//*****************************************************************************************************
-//*****************************************************************************************************
-//*****************************************************************************************************
-//*****************************************************************************************************
-//*****************************************************************************************************
-//======================================================================================================
-//======================================================================================================
-
-//======================================================================================================
-//======================================================================================================
-
-//======================================================================================================
-function print_graph($g,$pgwidth) {
-       $splines = false;
-       $bandw = false;
-       $percent = false;
-       $show_percent = false;
-       $stacked = false;
-       $h = false;
-       $show_values = false;
-       $hide_grid = false;
-       $hide_y_axis = false;
-
-       if (isset($g['attr']['TYPE']) && $g['attr']['TYPE']) { $type = strtolower($g['attr']['TYPE']); }
-       if (!in_array($type,array('bar','horiz_bar','line','radar','pie','pie3d','xy','scatter'))) { $type = 'bar'; } // Default=bar
-
-       if (isset($g['attr']['STACKED']) && $g['attr']['STACKED']) { $stacked = true; } // stacked for bar or horiz_bar
-       if (isset($g['attr']['SPLINES']) && $g['attr']['SPLINES'] && $type=='xy') { $splines = true; }  // splines for XY line graphs
-       if (isset($g['attr']['BANDW']) && $g['attr']['BANDW']) { $bandw = true; }       // black and white
-       if (isset($g['attr']['LEGEND-OVERLAP']) && $g['attr']['LEGEND-OVERLAP']) { $overlap = true; } // avoid overlap of Legends over graph (line, bar, horiz_bar only)
-       if (isset($g['attr']['PERCENT']) && $g['attr']['PERCENT'] && $type != 'xy' && $type != 'scatter') { $percent = true; }  // Show data series as percent of total in series
-       if (isset($g['attr']['SHOW-VALUES']) && $g['attr']['SHOW-VALUES']) { $show_values = true; }     // Show the individual data values
-       if (isset($g['attr']['HIDE-GRID']) && $g['attr']['HIDE-GRID']) { $hide_grid = true; }   // Hide the y-axis gridlines
-       if (isset($g['attr']['HIDE-Y-AXIS']) && $g['attr']['HIDE-Y-AXIS']) { $hide_y_axis = true; }     // Hide the y-axis
-
-
-       // Antialias: If true - better quality curves, but graph line will only be 1px even in PDF 300dpi 
-       // default=true for most except line and radar
-       if (isset($g['attr']['ANTIALIAS']) && ($g['attr']['ANTIALIAS']=='' || $g['attr']['ANTIALIAS']==0)) { $antialias = false; }
-       else if (isset($g['attr']['ANTIALIAS']) && $g['attr']['ANTIALIAS'] > 0) { $antialias = true; }
-       else if ($type=='line' || $type=='radar') { $antialias = false; }
-       else { $antialias = true; }
-
-       if ($g['attr']['DPI']) { $dpi = intval($g['attr']['DPI']); }
-       if (!$dpi || $dpi < 50 || $dpi > 2400) { $dpi = 150; }  // Default dpi 150
-       $k = (0.2645/25.4 * $dpi); 
-
-       // mPDF 4.5.009
-       global $JpgUseSVGFormat;
-       if (isset($JpgUseSVGFormat) && $JpgUseSVGFormat) {
-               $img_type = 'svg';
-               $k = 1; // Overrides as Vector scale does not need DPI
-       }
-       else {
-               $img_type = 'png';
-       }
-
-       if (isset($g['attr']['TITLE']) && $g['attr']['TITLE']) { $title = $g['attr']['TITLE']; }
-
-       if (isset($g['attr']['LABEL-X']) && $g['attr']['LABEL-X']) { $xlabel = $g['attr']['LABEL-X']; }         // NOT IMPLEMENTED??????
-       if (isset($g['attr']['LABEL-Y']) && $g['attr']['LABEL-Y']) { $ylabel = $g['attr']['LABEL-Y']; }
-
-       if (isset($g['attr']['AXIS-X']) && $g['attr']['AXIS-X']) { $xaxis = strtolower($g['attr']['AXIS-X']); }
-       if (!in_array($xaxis,array('text','lin','linear','log'))) { $xaxis = 'text'; }  // Default=text
-       if ($xaxis == 'linear') { $xaxis = 'lin'; }
-
-       if (isset($g['attr']['AXIS-Y']) && $g['attr']['AXIS-Y']) { $yaxis = strtolower($g['attr']['AXIS-Y']); }
-       if (!in_array($yaxis,array('lin','linear','log','percent'))) { $yaxis = 'lin'; }                        // Default=lin
-       if ($yaxis == 'percent') { $show_percent = true; $yaxis = 'lin'; }      // Show percent sign on scales
-       if ($yaxis == 'linear') { $yaxis = 'lin'; }
-
-       if ($splines) { $xaxis = 'lin'; }
-       $axes = $xaxis.$yaxis;  // e.g.textlin, textlog, loglog, loglin, linlog (XY)
-
-       // mPDF 4.0
-       if (isset($g['attr']['cWIDTH']) && $g['attr']['cWIDTH']) { $w=($g['attr']['cWIDTH'] / 0.2645); }        // pixels
-       if (isset($g['attr']['cHEIGHT']) && $g['attr']['cHEIGHT']) { $h=($g['attr']['cHEIGHT'] / 0.2645); }
-
-
-       if (isset($g['attr']['SERIES']) && strtolower($g['attr']['SERIES']) == 'rows') { $dataseries = 'rows'; }
-       else { $dataseries = 'cols'; }
-
-       // Defaults - define data
-       $rowbegin = 2;
-       $colbegin = 2;
-       if($type=='scatter' || $type=='xy') { 
-               if ($dataseries == 'rows') { $rowbegin = 1; }
-               else { $colbegin = 1; }
-       }
-       $rowend = 0;
-       $colend = 0;
-
-       if (isset($g['attr']['DATA-ROW-BEGIN']) && ($g['attr']['DATA-ROW-BEGIN'] === '0' || $g['attr']['DATA-ROW-BEGIN'] > 0)) { $rowbegin = $g['attr']['DATA-ROW-BEGIN']; }
-
-       if (isset($g['attr']['DATA-COL-BEGIN']) && ($g['attr']['DATA-COL-BEGIN'] === '0' || $g['attr']['DATA-COL-BEGIN'] > 0)) { $colbegin = $g['attr']['DATA-COL-BEGIN']; }
-
-       if (isset($g['attr']['DATA-ROW-END']) && ($g['attr']['DATA-ROW-END'] === '0' || $g['attr']['DATA-ROW-END'] <> 0)) { $rowend = $g['attr']['DATA-ROW-END']; }
-       if (isset($g['attr']['DATA-COL-END']) && ($g['attr']['DATA-COL-END'] === '0' || $g['attr']['DATA-COL-END'] <> 0)) { $colend = $g['attr']['DATA-COL-END']; }
-
-       $nr = count($g['data']);
-       $nc = 0;
-       foreach($g['data'] AS $r) {
-               $cc=0;
-               foreach($r AS $c) { $cc++; }
-               $nc = max($nc,$cc);
-       }
-       if ($colend == 0) { $colend = $nc; }
-       else if ($colend < 0) { $colend = $nc+$colend; }
-
-       if ($rowend == 0) { $rowend = $nr; }
-       else if ($rowend < 0) { $rowend = $nr+$rowend; }
-
-       if ($colend < $colbegin) { $colend = $colbegin; }
-       if ($rowend < $rowbegin) { $rowend = $rowbegin; }
-
-//     if ($type == 'xy' || $type=='scatter') { $colstart=0; }
-
-       // Get Data + Totals
-       $data = array();
-       $totals = array();
-       for ($r=($rowbegin-1);$r<$rowend;$r++) {
-               for ($c=($colbegin-1);$c<$colend;$c++) {
-                   if (isset($g['data'][$r][$c])) { $g['data'][$r][$c] = floatval($g['data'][$r][$c] ); }
-                   else { $g['data'][$r][$c] = 0; }
-                   if ($dataseries=='rows') { 
-                       $data[($r+1-$rowbegin)][($c+1-$colbegin)] = $g['data'][$r][$c] ; 
-                       $totals[($r+1-$rowbegin)] += $g['data'][$r][$c] ; 
-                   }
-                   else { 
-                       $data[($c+1-$colbegin)][($r+1-$rowbegin)] = $g['data'][$r][$c] ; 
-                       if (isset($totals[($c+1-$colbegin)])) { $totals[($c+1-$colbegin)] += $g['data'][$r][$c] ; }
-                       else { $totals[($c+1-$colbegin)] = $g['data'][$r][$c] ; }
-                   }
-               }
-       }
-       // PERCENT
-       if ($percent && $type != 'pie' && $type != 'pie3d') {
-               for ($r=0;$r<count($data);$r++) {
-                       for ($c=0;$c<count($data[$r]);$c++) {
-                               $data[$r][$c] = $data[$r][$c]/$totals[$r]  * 100;
-                       }
-               }
-       }
-       // Get Legends and labels
-       $legends = array();
-       $labels = array();
-       $longestlegend = 0;
-       $longestlabel = 0;
-       if ($dataseries=='cols') { 
-               if ($colbegin>1) {
-                       for ($r=($rowbegin-1);$r<$rowend;$r++) { 
-                               $legends[($r+1-$rowbegin)] = $g['data'][$r][0] ;
-                               $longestlegend = max($longestlegend, strlen( $g['data'][$r][0] ));
-                       }
-               }
-               if ($rowbegin>1) {
-                       for ($c=($colbegin-1);$c<$colend;$c++) { 
-                               $labels[($c+1-$colbegin)] = $g['data'][0][$c] ; 
-                               $longestlabel = max($longestlabel , strlen( $g['data'][0][$c] ));
-                       }
-               }
-       }
-       else if ($dataseries=='rows') { 
-               if ($colbegin>1) {
-                       for ($r=($rowbegin-1);$r<$rowend;$r++) { 
-                               $labels[($r+1-$rowbegin)] = $g['data'][$r][0] ; 
-                               $longestlabel = max($longestlabel , strlen( $g['data'][$r][0] ));
-                       }
-               }
-               if ($rowbegin>1) {
-                       for ($c=($colbegin-1);$c<$colend;$c++) { 
-                               $legends[($c+1-$colbegin)] = $g['data'][0][$c] ; 
-                               $longestlegend = max($longestlegend, strlen( $g['data'][0][$c] ));
-                       }
-               }
-       }
-   // Default sizes
-   $defsize = array();
-   $defsize['pie'] = array('w' => 600, 'h' => 300);
-   $defsize['pie3d'] = array('w' => 600, 'h' => 300);
-   $defsize['radar'] = array('w' => 600, 'h' => 300);
-   $defsize['line'] = array('w' => 600, 'h' => 400);
-   $defsize['xy'] = array('w' => 600, 'h' => 400);
-   $defsize['scatter'] = array('w' => 600, 'h' => 400);
-   $defsize['bar'] = array('w' => 600, 'h' => 400);
-   $defsize['horiz_bar'] = array('w' => 600, 'h' => 500);
-
-
-   // Use default ratios
-   if ($w && !$h) { $h = $w*$defsize[$type]['h']/$defsize[$type]['w']; }
-   if ($h && !$w) { $w = $h*$defsize[$type]['w']/$defsize[$type]['h']; }
-   if (!$h && !$w) { $w = $defsize[$type]['w']; $h = $defsize[$type]['h']; }
-
-
-   if (count($data)>0 && $type) {
-       $figure_file = "graph_cache/".rand(11111,999999999).".".$img_type;
-       if ($bandw) { $colours = array('snow1','black','snow4','snow3','snow2','cadetblue4','cadetblue3','cadetblue1','bisque4','bisque2','beige'); }
-       else { $colours = array('cyan','darkorchid4','cadetblue3','khaki1','darkolivegreen2','cadetblue4','coral','cyan4','rosybrown3','wheat1'); }
-       $fills = array('navy','orange','red','yellow','purple','navy','orange','red','yellow','purple');
-       $patterns = array(PATTERN_DIAG1,PATTERN_CROSS1,PATTERN_STRIPE1,PATTERN_DIAG3,PATTERN_CROSS2,PATTERN_DIAG2,PATTERN_DIAG4,PATTERN_CROSS3, PATTERN_CROSS4,PATTERN_STRIPE1);
-       $markers = array(MARK_DIAMOND, MARK_SQUARE, MARK_CIRCLE, MARK_UTRIANGLE, MARK_DTRIANGLE, MARK_FILLEDCIRCLE, MARK_CROSS, MARK_STAR, MARK_X);
-
-       // LEGENDS
-       if ($type == 'pie' || $type == 'pie3d') { 
-               $graph = new PieGraph (($w*$k),($h*$k));  
-       }
-       else if ($type == 'radar') { 
-               $graph = new RadarGraph(($w*$k),($h*$k));
-       }
-       else {
-               $graph = new Graph(($w*$k),($h*$k));
-       }
-
-// mPDF 4.5.009
-//     $graph->img->SetImgFormat($img_type) ;
-//     if (strtoupper($img_type)=='JPEG') { $graph->img->SetQuality(90); }
-       if ($antialias) { $graph->img->SetAntiAliasing(); }
-       $graph->SetShadow(true, 2*$k); 
-       $graph->SetMarginColor("white");
-       // TITLE
-       $graph->title->Set($title); 
-       $graph->title->SetMargin(10*$k);        
-       $graph->title->SetFont(FF_USERFONT,FS_BOLD,11*$k);
-       $graph->title->SetColor("black");
-       $graph->legend->SetLineSpacing(3*$k); 
-       $graph->legend->SetMarkAbsSize(6*$k); 
-       $graph->legend->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-
-       // Set GRAPH IMAGE MARGINS
-       if ($type == 'pie' || $type == 'pie3d') { 
-               $psize = 0.3;
-               $pposxabs = ($w/2);
-               $pposy = 0.55;
-               if ($longestlegend) {   // if legend showing
-                       $pposxabs -= ((($longestlegend * 5) + 20) / 2);
-               }
-               $pposx = ($pposxabs / $w);
-               $graph->legend->Pos(0.02,0.5,'right','center'); 
-       }
-       else if ($type == 'radar') { 
-               $psize = 0.5;
-               $pposxabs = ($w/2);
-               $pposy = 0.55;
-               if ($longestlabel) {    // if legend showing
-                       $pposxabs -= ((($longestlabel * 5) + 20) / 2);
-               }
-               $pposx = ($pposxabs / $w);
-               $graph->legend->Pos(0.02,0.5,'right','center'); 
-       }
-       else if ($type == 'xy' || $type == 'scatter') {
-               $pml = 50;
-               $pmr = 20;
-               $pmt = 60;
-               $pmb = 50;
-               $xaxislblmargin = $pmb - 30;
-               $yaxislblmargin = $pml - 15;
-               $graph->legend->Pos(0.02,0.1,'right','top'); 
-       }
-       else if ($type == 'line' || $type == 'bar') {
-               $pml = 50;
-               $pmr = 20;
-               $pmt = 60;
-               $pmb = 50;
-               $xlangle = 0;
-               $ll = ($longestlegend * 5);     // 45 degrees 8pt fontsize
-               if ($ll > 5 || ($ll>3 && count($data)>10)) {
-                       $pmb = max($pmb, $ll + 30);
-                       $xlangle = 50;
-               }
-               $xaxislblmargin = $pmb - 30;
-               $yaxislblmargin = $pml - 15;
-               if ($longestlabel && !$overlap) {       // if legend showing
-                       $pmr = ((($longestlabel * 5) + 40));
-               }
-               $graph->legend->Pos(0.02,0.1,'right','top'); 
-       }
-       else if ($type == 'horiz_bar') {
-               $pml = 50;
-               $pmr = 20;
-               $pmt = 50;
-               $pmb = 45;
-               $ll = ($longestlegend * 6.5);   // 8pt fontsize
-               $pml = max($pml, $ll + 20);
-               $xaxislblmargin = $pml - 20;
-               $yaxislblmargin = $pmb - 15;
-               if ($longestlabel && !$overlap) {       // if legend showing
-                       $pmr = ((($longestlabel * 5) + 40));
-               }
-               $graph->legend->Pos(0.02,0.1,'right','top'); 
-       }
-
-
-       // DRAW THE GRAPHS
-       if ($type == 'pie') { 
-                       $p1 = new PiePlot($data[0]); 
-                       $p1->SetSliceColors($colours); 
-
-                       if ($show_values) {
-                               $p1->value->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               if ($percent) { $p1->SetLabelType(PIE_VALUE_PERADJ); }   //PIE_VAL_PER = default
-                               else { $p1->SetLabelType(PIE_VALUE_ABS); }
-                               if ($percent || $show_percent) { $p1->value->SetFormat("%d%%"); }
-                               else { $p1->value->SetFormat("%s"); }
-                               // Enable and set policy for guide-lines. Make labels line up vertically
-                               $p1->SetGuideLines(true);
-                               $p1->SetGuideLinesAdjust(1.5);
-                       }
-                       else { $p1->value->Show(false); }
-                       $p1->SetLegends($legends);
-                       $p1->SetSize($psize);
-                       $p1->SetCenter($pposx, $pposy);
-                       if ($labels[0]) { 
-                               $graph->subtitle->Set($labels[0]); 
-                               $graph->subtitle->SetMargin(10*$k);     
-                               $graph->subtitle->SetFont(FF_USERFONT,FS_BOLD,11*$k);
-                               $graph->subtitle->SetColor("black");
-                       }
-                       $graph->Add($p1);
-       }
-       else if ($type == 'pie3d') { 
-                       $p1 = new PiePlot3d($data[0]); 
-                       $p1->SetSliceColors($colours); 
-                       if ($show_values) {
-                               $p1->value->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               if ($percent) { $p1->SetLabelType(PIE_VALUE_PERADJ); }   //PIE_VAL_PER = default
-                               else { $p1->SetLabelType(PIE_VALUE_ABS); }
-                               if ($percent || $show_percent) { $p1->value->SetFormat("%d%%"); }
-                               else { $p1->value->SetFormat("%s"); }
-                       }
-                       else { $p1->value->Show(false); }
-                       $p1->SetLegends($legends);
-                       $p1->SetEdge();
-                       $p1->SetSize($psize);
-                       $p1->SetCenter($pposx, $pposy);
-
-                       if ($labels[0]) { 
-                               $graph->subtitle->Set($labels[0]); 
-                               $graph->subtitle->SetMargin(10*$k);     
-                               $graph->subtitle->SetFont(FF_USERFONT,FS_BOLD,11*$k);
-                               $graph->subtitle->SetColor("black");
-                       }
-
-                       $graph->Add( $p1); 
-       }
-       // RADAR
-       else if ($type == 'radar') { 
-                       $graph->SetSize($psize);
-                       $graph->SetPos($pposx, $pposy);
-
-                       $graph->SetTitles( $legends);   // labels each axis
-
-                       $graph->axis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       $graph->axis->title->SetMargin(5*$k);
-                       $graph->axis->SetWeight(1*$k);
-                       $graph->axis->HideLabels();
-                       $graph->axis->SetFont(FF_USERFONT,FS_NORMAL,6*$k);
-                       $graph->HideTickMarks(); 
-
-                       $group = array();
-                       foreach($data AS $series => $dat) { 
-                               $rdata = array();
-                               foreach($data[$series] AS $row) { $rdata[] = $row;  }
-                               if (count($rdata)<3) { die("ERROR::Graph::Cannot create a Radar Plot with less than 3 data points."); }
-                               // Create the radar plot
-                               $bplot = new RadarPlot($rdata);
-                               $bplot->mark->SetType($markers[$series]);
-                               $bplot->mark->SetFillColor($colours[$series]);
-                               $bplot->mark->SetWidth(3*$k);
-                               $bplot->SetColor($colours[$series]);
-                               if ($series == 0) { $bplot->SetFillColor('lightred'); }
-                               else { $bplot->SetFill(false); }
-                               $bplot->SetLineWeight(1*$k);
-                               $bplot->SetLegend($labels[$series]);
-                               if ($bandw) { $bplot->SetShadow("gray5"); }
-                               $graph->Add($bplot);
-                       }
-       }
-       // LINE
-       else if ($type == 'line') {
-                       // Setup the graph. 
-                       $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
-                       $graph->SetScale($axes);
-                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-
-                       if ($ylabel) {
-                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->yaxis->SetTitle($ylabel,'middle');
-                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
-                       }
-
-                       $graph->yaxis->SetLabelMargin(4*$k); 
-                       if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }       // Percent
-
-                       // Show 0 label on Y-axis (default is not to show)
-                       $graph->yscale->ticks->SupressZeroLabel(true);
-                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
-                       if ($hide_grid) { $graph->ygrid->Show(false); }
-
-                       // Setup X-axis labels
-                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       $graph->xaxis->SetTickLabels($legends);
-                       $graph->xaxis->SetLabelAngle($xlangle);
-                       $graph->xaxis->SetLabelMargin(4*$k); 
-                       // X-axis title
-                       if ($xlabel) {
-                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->xaxis->SetTitle($xlabel,'middle');
-                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
-                       }
-                       foreach($data AS $series => $rdata) { 
-                               $bplot = new LinePlot($rdata);
-                               $bplot->mark->SetType($markers[$series]);
-                               $bplot->mark->SetFillColor($colours[$series]);
-                               $bplot->mark->SetWidth(4*$k);
-                               if ($show_values) {
-                                       $bplot->value-> Show(); // Not if scatter
-                                       $bplot->value->SetMargin(6*$k); 
-                                       $bplot->value->SetColor("darkred");
-                                       $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
-                                       if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
-                                       else { $bplot->value->SetFormat("%s"); }
-                               }
-                               // Set color for each line
-                               $bplot->SetColor($colours[$series]);
-                               $bplot->SetWeight(2*$k);
-                               $bplot->SetLegend($labels[$series]);
-                               if ($bandw) { $bplot->SetShadow("gray5"); }
-                               // Indent the X-scale so the first and last point doesn't fall on the edges
-                               $bplot->SetCenter();
-                               $graph->Add($bplot);
-                       }
-
-       }
-       // XY or SCATTER
-       else if ($type == 'xy' || $type == 'scatter') {
-                       // Setup the graph. 
-                       $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
-                       $graph->SetScale($axes);
-                       // Setup font for axis
-                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       // Y-axis title
-                       if ($labels[1]) {
-                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
-                               $graph->yaxis->SetTitle($labels[1],'middle');
-                       }
-
-
-                       $graph->yaxis->SetLabelMargin(4*$k); 
-                       if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }       // Percent
-
-                       // Show 0 label on Y-axis (default is not to show)
-                       $graph->yscale->ticks->SupressZeroLabel(true);
-                       // Just let the maximum be autoscaled
-                       $graph->yaxis->scale->SetAutoMin(0); 
-                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
-                       if ($hide_grid) { $graph->ygrid->Show(false); }
-
-                       // Setup X-axis labels
-                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-// mPDF 2.5 Corrects labelling of x-axis
-//                     $graph->xaxis->SetTickLabels($legends);
-                       $graph->xaxis->SetLabelAngle(50);
-                       $graph->xaxis->SetLabelMargin(4*$k); 
-                       // X-axis title
-                       if ($labels[0]) {
-                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
-                               $graph->xaxis->SetTitle($labels[0],'middle');
-                       }
-
-                       // Create the bar plot
-                       // SPLINES
-                       if ($splines && $type=='xy') {
-                               $spline = new Spline($data[0],$data[1]);
-                               list($newx,$newy) = $spline->Get(100);
-                       }
-                       else {
-                               $newx = $data[0];
-                               $newy = $data[1];
-                       }
-
-                       if ($type=='xy') {
-                               // LINE PLOT
-                               $bplot = new LinePlot($newy, $newx);
-                               // Set color for each line
-                               $bplot->SetColor($fills[0]);
-                               $bplot->SetWeight(4*$k);
-                               if ($bandw) { $bplot->SetShadow("gray5"); }
-                               $graph->Add($bplot);
-                       }
-
-                       // SCATTER PLOT
-                       $cplot = new ScatterPlot($data[1], $data[0]);
-
-                       $cplot->mark->SetType($markers[0]);
-                       $cplot->mark->SetFillColor($fills[0]);
-                       $cplot->mark->SetWidth(8*$k);
-                       if ($show_values) {
-// mPDF 2.5 
-                               if ($type=='xy') { $cplot->value->Show(); }     // Not if scatter
-                               $cplot->value->SetMargin(8*$k); 
-                               $cplot->value->SetColor("darkred");
-                               $cplot->value->SetFont( FF_USERFONT, FS_NORMAL, 6*$k);
-
-                               if ($percent || $show_percent) { $cplot->value->SetFormat( '%d%%'); }
-                               else { $cplot->value->SetFormat("%s"); }
-                       }
-
-                       // Set color for each line
-                       $cplot->SetColor($fills[0]);
-                       $cplot->SetWeight(4*$k);
-                       if ($bandw) { $cplot->SetShadow("gray5"); }
-                       $graph->Add($cplot);
-
-       }
-       // BAR
-       else if ($type == 'bar') {
-                       // Setup the graph. 
-                       $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
-                       $graph->SetScale($axes);
-                       // Setup y-axis
-                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
-                       if ($hide_grid) { $graph->ygrid->Show(false); }
-                       $graph->yaxis->SetLabelMargin(4*$k); 
-                       if ($ylabel) {
-                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->yaxis->SetTitle($ylabel,'middle');
-                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
-                       }
-                       // Show 0 label on Y-axis (default is not to show)
-                       $graph->yscale->ticks->SupressZeroLabel(false);
-                       // Setup X-axis labels
-                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       $graph->xaxis->SetTickLabels($legends);
-                       $graph->xaxis->SetLabelAngle($xlangle);
-                       $graph->xaxis->SetLabelMargin(4*$k); 
-                       // X-axis title
-                       if ($xlabel) {
-                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->xaxis->SetTitle($xlabel,'middle');
-                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
-                       }
-
-                       $group = array();
-                       foreach($data AS $series => $dat) { 
-                               $rdata = array();
-                               foreach($data[$series] AS $row) { $rdata[] = $row;  }
-
-                               // Create the bar plot
-                               $bplot = new BarPlot($rdata);
-                               $bplot->SetWidth(0.6);  // for SINGLE??
-                               // Setup color for gradient fill style 
-                               if ($bandw) { $bplot->SetPattern( $patterns[$series]); }
-                               else { $bplot->SetFillGradient($fills[$series],"#EEEEEE",GRAD_LEFT_REFLECTION); }
-
-                               // Set color for the frame of each bar
-                               $bplot->SetColor("darkgray");
-                               $bplot->SetLegend($labels[$series]);
-                               if ($bandw) { $bplot->SetShadow("gray5"); }
-                               if ($show_values) {
-                                       $bplot->value->Show();
-                                       $bplot->value->SetMargin(6*$k); 
-                                       $bplot->value->SetColor("darkred");
-                                       $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
-                                       if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
-                                       else { $bplot->value->SetFormat("%s"); }
-                               }
-
-                               $group[] = $bplot;
-                       }
-                       if (count($data)==1) {
-                               $graph->Add($group[0]);
-                       }
-                       else {
-                               // Create the grouped bar plot 
-                               if ($stacked) {
-                                       $gbplot = new AccBarPlot ($group); 
-                               }
-                               else {
-                                       $gbplot = new GroupBarPlot ($group); 
-                               }
-                               $graph->Add($gbplot);
-                       }
-       }
-       else if ($type == 'horiz_bar') {
-                       $graph->SetScale($axes);
-                       $graph->Set90AndMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
-
-                       // Setup y-axis
-                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       $graph->yaxis->SetLabelMargin(4*$k); 
-
-                       $graph->yaxis->SetPos('max');   // Intersect at top of x-axis i.e. y axis is at bottom
-                       // First make the labels look right
-                       $graph->yaxis->SetLabelAlign('center','top');
-                       if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }
-                       $graph->yaxis->SetLabelSide(SIDE_RIGHT);
-                       $graph->yaxis->scale->SetGrace(10);     // sets 10% headroom
-                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
-                       if ($hide_grid) { $graph->ygrid->Show(false); }
-
-                       // The fix the tick marks
-                       $graph->yaxis->SetTickSide(SIDE_LEFT);
-                       if ($ylabel) {
-                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->yaxis->SetTitle($ylabel,'middle');
-                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
-                               // Finally setup the title
-                               $graph->yaxis->SetTitleSide(SIDE_RIGHT);
-                               // To align the title to the right use :
-                               $graph->yaxis->title->Align('right');
-                               $graph->yaxis->title->SetAngle(0);
-
-                       }
-
-                       // Show 0 label on Y-axis (default is not to show)
-                       $graph->yscale->ticks->SupressZeroLabel(false);
-                       // Setup X-axis labels
-                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                       $graph->xaxis->title->SetAngle(90);
-                       $graph->xaxis->SetTickLabels($legends);
-                       $graph->xaxis->SetLabelMargin(4*$k); 
-                       // X-axis title
-                       if ($xlabel) {
-                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
-                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
-                               $graph->xaxis->SetTitle($xlabel,'middle');
-                       }
-                       $group = array();
-                       foreach($data AS $series => $dat) { 
-                               $rdata = array();
-                               foreach($data[$series] AS $row) { $rdata[] = $row;  }
-                               // Create the bar pot
-                               $bplot = new BarPlot($rdata);
-                               $bplot->SetWidth(0.6);  // for SINGLE??
-                               // Setup color for gradient fill style 
-                               if ($bandw) { $bplot->SetPattern( $patterns[$series]); }
-                               else { $bplot->SetFillGradient($fills[$series],"#EEEEEE",GRAD_LEFT_REFLECTION); }
-
-                               // Set color for the frame of each bar
-                               $bplot->SetColor("darkgray");
-                               $bplot->SetLegend($labels[$series]);
-                               if ($bandw) { $bplot->SetShadow("gray5"); }
-                               if ($show_values) {
-                                       $bplot->value-> Show();
-                                       $bplot->value->SetMargin(6*$k); 
-                                       $bplot->value->SetColor("darkred");
-                                       $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
-                                       if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
-                                       else { $bplot->value->SetFormat("%s"); }
-                               }
-
-                               $group[] = $bplot;
-                       }
-                       if (count($data)==1) {
-                               $graph->Add($group[0]);
-                       }
-                       else {
-                               // Create the grouped bar plot 
-                               if ($stacked) {
-                                       $gbplot = new AccBarPlot ($group); 
-                               }
-                               else {
-                                       $gbplot = new GroupBarPlot ($group); 
-                               }
-                               $graph->Add($gbplot);
-                       }
-       }
-       if ($graph) {
-               $graph->Stroke( _MPDF_PATH.$figure_file);
-               $srcpath = str_replace("\\","/",dirname(__FILE__)) . "/";
-               $srcpath .= $figure_file;
-               return array('file'=>$srcpath, 'w'=>$w, 'h'=>$h);
-       }
-   }
-   return false;
-}
-//======================================================================================================
-//======================================================================================================
-//======================================================================================================
-//======================================================================================================
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt b/inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt
deleted file mode 100644 (file)
index 4123496..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-This is just a placeholder file so that the folder is created on install.
-It can be deleted once installed.
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc b/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc
deleted file mode 100644 (file)
index 0d06cd5..0000000
Binary files a/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc and /dev/null differ
diff --git a/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc b/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc
deleted file mode 100644 (file)
index d0ef573..0000000
Binary files a/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc and /dev/null differ
diff --git a/inc/3rdparty/libraries/mpdf/includes/CJKdata.php b/inc/3rdparty/libraries/mpdf/includes/CJKdata.php
deleted file mode 100644 (file)
index 8423052..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-// mPDF 2.5
-
-// BIG 5
-$cw = array(
-       32 => 250, 33 => 250, 34 => 408, 35 => 668, 36 => 490, 37 => 875, 38 => 698, 39 => 250, 40 => 240, 41 => 240,
-       42 => 417, 43 => 667, 44 => 250, 45 => 313, 46 => 250, 47 => 520, 48 => 500, 49 => 500, 50 => 500, 51 => 500,
-       52 => 500, 53 => 500, 54 => 500, 55 => 500, 56 => 500, 57 => 500, 58 => 250, 59 => 250, 60 => 667, 61 => 667,
-       62 => 667, 63 => 396, 64 => 921, 65 => 677, 66 => 615, 67 => 719, 68 => 760, 69 => 625, 70 => 552, 71 => 771,
-       72 => 802, 73 => 354, 74 => 354, 75 => 781, 76 => 604, 77 => 927, 78 => 750, 79 => 823, 80 => 563, 81 => 823,
-       82 => 729, 83 => 542, 84 => 698, 85 => 771, 86 => 729, 87 => 948, 88 => 771, 89 => 677, 90 => 635, 91 => 344,
-       92 => 520, 93 => 344, 94 => 469, 95 => 500, 96 => 250, 97 => 469, 98 => 521, 99 => 427, 100 => 521, 101 => 438,
-       102 => 271, 103 => 469, 104 => 531, 105 => 250, 106 => 250, 107 => 458, 108 => 240, 109 => 802, 110 => 531, 111 => 500,
-       112 => 521, 113 => 521, 114 => 365, 115 => 333, 116 => 292, 117 => 521, 118 => 458, 119 => 677, 120 => 479, 121 => 458,
-       122 => 427, 123 => 480, 124 => 496, 125 => 480, 126 => 667,
-       17601 => 500,
-);
-$this->Big5_widths=$cw;
-
-
-// GB
-$cw = array(
-       32 => 207, 33 => 270, 34 => 342, 35 => 467, 36 => 462, 37 => 797, 38 => 710, 39 => 239, 40 => 374, 41 => 374,
-       42 => 423, 43 => 605, 44 => 238, 45 => 375, 46 => 238, 47 => 334, 48 => 462, 49 => 462, 50 => 462, 51 => 462,
-       52 => 462, 53 => 462, 54 => 462, 55 => 462, 56 => 462, 57 => 462, 58 => 238, 59 => 238, 60 => 605, 61 => 605,
-       62 => 605, 63 => 344, 64 => 748, 65 => 684, 66 => 560, 67 => 695, 68 => 739, 69 => 563, 70 => 511, 71 => 729,
-       72 => 793, 73 => 318, 74 => 312, 75 => 666, 76 => 526, 77 => 896, 78 => 758, 79 => 772, 80 => 544, 81 => 772,
-       82 => 628, 83 => 465, 84 => 607, 85 => 753, 86 => 711, 87 => 972, 88 => 647, 89 => 620, 90 => 607, 91 => 374,
-       92 => 333, 93 => 374, 94 => 606, 95 => 500, 96 => 239, 97 => 417, 98 => 503, 99 => 427, 100 => 529, 101 => 415,
-       102 => 264, 103 => 444, 104 => 518, 105 => 241, 106 => 230, 107 => 495, 108 => 228, 109 => 793, 110 => 527, 111 => 524,
-       112 => 524, 113 => 504, 114 => 338, 115 => 336, 116 => 277, 117 => 517, 118 => 450, 119 => 652, 120 => 466, 121 => 452,
-       122 => 407, 123 => 370, 124 => 258, 125 => 370, 126 => 605,
-);
-$this->GB_widths=$cw;
-
-// Japanese
-$cw = array(
-       32 => 278, 33 => 299, 34 => 353, 35 => 614, 36 => 614, 37 => 721, 38 => 735, 39 => 216, 40 => 323, 41 => 323,
-       42 => 449, 43 => 529, 44 => 219, 45 => 306, 46 => 219, 47 => 453, 48 => 614, 49 => 614, 50 => 614, 51 => 614,
-       52 => 614, 53 => 614, 54 => 614, 55 => 614, 56 => 614, 57 => 614, 58 => 219, 59 => 219, 60 => 529, 61 => 529,
-       62 => 529, 63 => 486, 64 => 744, 65 => 646, 66 => 604, 67 => 617, 68 => 681, 69 => 567, 70 => 537, 71 => 647,
-       72 => 738, 73 => 320, 74 => 433, 75 => 637, 76 => 566, 77 => 904, 78 => 710, 79 => 716, 80 => 605, 81 => 716,
-       82 => 623, 83 => 517, 84 => 601, 85 => 690, 86 => 668, 87 => 990, 88 => 681, 89 => 634, 90 => 578, 91 => 316,
-       92 => 614, 93 => 316, 94 => 529, 95 => 500, 96 => 387, 97 => 509, 98 => 566, 99 => 478, 100 => 565, 101 => 503,
-       102 => 337, 103 => 549, 104 => 580, 105 => 275, 106 => 266, 107 => 544, 108 => 276, 109 => 854, 110 => 579, 111 => 550,
-       112 => 578, 113 => 566, 114 => 410, 115 => 444, 116 => 340, 117 => 575, 118 => 512, 119 => 760, 120 => 503, 121 => 529,
-       122 => 453, 123 => 326, 124 => 380, 125 => 326, 126 => 387, 127 => 216, 128 => 453, 129 => 216, 130 => 380, 131 => 529,
-       132 => 299, 133 => 614, 134 => 614, 135 => 265, 136 => 614, 137 => 475, 138 => 614, 139 => 353, 140 => 451, 141 => 291,
-       142 => 291, 143 => 588, 144 => 589, 145 => 500, 146 => 476, 147 => 476, 148 => 219, 149 => 494, 150 => 452, 151 => 216,
-       152 => 353, 153 => 353, 154 => 451, 156 => 1075, 157 => 486, 158 => 387, 159 => 387, 160 => 387, 161 => 387,
-       162 => 387,     163 => 387, 164 => 387, 165 => 387, 166 => 387, 167 => 387, 168 => 387, 170 => 880, 171 => 448,
-       172 => 566, 173 => 716, 174 => 903, 175 => 460, 176 => 805, 177 => 275, 178 => 276, 179 => 550, 180 => 886, 181 => 582,
-       182 => 529, 183 => 738, 184 => 529, 185 => 738, 186 => 357, 187 => 529, 188 => 406, 189 => 406, 190 => 575, 191 => 406,
-       192 => 934, 193 => 934, 194 => 934, 195 => 646, 196 => 646, 197 => 646, 198 => 646, 199 => 646, 200 => 646, 201 => 617,
-       202 => 567, 203 => 567, 204 => 567, 205 => 567, 206 => 320, 207 => 320, 208 => 320, 209 => 320, 210 => 681, 211 => 710,
-       212 => 716, 213 => 716, 214 => 716, 215 => 716, 216 => 716, 217 => 529, 218 => 690, 219 => 690, 220 => 690, 221 => 690,
-       222 => 634, 223 => 605, 224 => 509, 225 => 509, 226 => 509, 227 => 509, 228 => 509, 229 => 509, 230 => 478, 231 => 503,
-       232 => 503, 233 => 503, 234 => 503, 235 => 275, 236 => 275, 237 => 275, 238 => 275, 239 => 550, 240 => 579, 241 => 550,
-       242 => 550, 243 => 550, 244 => 550, 245 => 550, 246 => 529, 247 => 575, 248 => 575, 249 => 575, 250 => 575, 251 => 529,
-       252 => 578, 253 => 529, 254 => 517, 255 => 634, 256 => 578, 257 => 445, 258 => 444, 259 => 842, 260 => 453, 261 => 614,
-);
-
-
-$_cr = array(
-       array(231, 632, 500), // half-width
-       array(8718, 8718, 500),
-       array(9738, 9757, 250), // quarter-width
-       array(9758, 9778, 333), // third-width
-       array(12063, 12087, 500),
-);
-foreach($_cr as $_r) {
-       for($i = $_r[0]; $i <= $_r[1]; $i++) {
-               $cw[$i+31] = $_r[2];
-       }
-}
-$this->SJIS_widths=$cw;
-
-// Korean
-$cw = array(
-       32 => 333, 33 => 416, 34 => 416, 35 => 833, 36 => 625, 37 => 916, 38 => 833, 39 => 250, 40 => 500, 41 => 500,
-       42 => 500, 43 => 833, 44 => 291, 45 => 450, 46 => 291, 47 => 375, 48 => 625, 49 => 625, 50 => 625, 51 => 625,
-       52 => 625, 53 => 625, 54 => 625, 55 => 625, 56 => 625, 57 => 625, 58 => 333, 59 => 333, 60 => 833, 61 => 833,
-       62 => 916, 63 => 500, 64 => 1000, 65 => 791, 66 => 708, 67 => 708, 68 => 750, 69 => 708, 70 => 666, 71 => 750,
-       72 => 791, 73 => 375, 74 => 500, 75 => 791, 76 => 666, 77 => 916, 78 => 791, 79 => 750, 80 => 666, 81 => 750,
-       82 => 708, 83 => 666, 84 => 791, 85 => 791, 86 => 750, 87 => 1000, 88 => 708, 89 => 708, 90 => 666, 91 => 500,
-       92 => 375, 93 => 500, 94 => 500, 95 => 500, 96 => 333, 97 => 541, 98 => 583, 99 => 541, 100 => 583, 101 => 583,
-       102 => 375, 103 => 583, 104 => 583, 105 => 291, 106 => 333, 107 => 583, 108 => 291, 109 => 875, 110 => 583, 111 => 583,
-       112 => 583, 113 => 583, 114 => 458, 115 => 541, 116 => 375, 117 => 583, 118 => 583, 119 => 833, 120 => 625, 121 => 625,
-       122 => 500, 123 => 583, 124 => 583, 125 => 583, 126 => 750,
-);
-$_cr = array(
-       array(8094, 8190, 500)
-);
-foreach($_cr as $_r) {
-       for($i = $_r[0]; $i <= $_r[1]; $i++) {
-               $cw[$i+31] = $_r[2];
-       }
-}
-$this->UHC_widths=$cw;
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/functions.php b/inc/3rdparty/libraries/mpdf/includes/functions.php
deleted file mode 100644 (file)
index 78683af..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<?php
-
-// mPDF 5.7
-// Replace a section of an array with the elements in reverse
-function array_splice_reverse(&$arr, $offset, $length) {
-       $tmp = (array_reverse(array_slice($arr, $offset, $length)));
-       array_splice($arr, $offset, $length, $tmp);
-}
-
-
-// mPDF 5.6.23
-function array_insert(&$array, $value, $offset) {
-       if (is_array($array)) {
-               $array  = array_values($array);
-               $offset = intval($offset);
-               if ($offset < 0 || $offset >= count($array)) { array_push($array, $value); }
-               else if ($offset == 0) { array_unshift($array, $value); }
-               else { 
-                       $temp  = array_slice($array, 0, $offset);
-                       array_push($temp, $value);
-                       $array = array_slice($array, $offset);
-                       $array = array_merge($temp, $array);
-               }
-       }
-       else { $array = array($value); }
-       return count($array);
-}
-
-function urlencode_part($url) {        // mPDF 5.6.02
-       if (!preg_match('/^[a-z]+:\/\//i',$url)) { return $url; }
-       $file=$url;
-       $query='';
-       if (preg_match('/[?]/',$url)) {
-               $bits = preg_split('/[?]/',$url,2);
-               $file=$bits[0];
-               $query='?'.$bits[1];
-       }
-       $file = str_replace(array(" ","!","$","&","'","(",")","*","+",",",";","="),array("%20","%21","%24","%26","%27","%28","%29","%2A","%2B","%2C","%3B","%3D"),$file);
-       return $file.$query;
-}
-
-
-function _strspn($str1, $str2, $start=null, $length=null) {
-       $numargs = func_num_args();
-       if ($numargs == 2) {
-               return strspn($str1, $str2);
-       }
-       else if ($numargs == 3) {
-               return strspn($str1, $str2, $start);
-       }
-       else {
-               return strspn($str1, $str2, $start, $length);
-       }
-}
-
-
-function _strcspn($str1, $str2, $start=null, $length=null) {
-       $numargs = func_num_args();
-       if ($numargs == 2) {
-               return strcspn($str1, $str2);
-       } 
-       else if ($numargs == 3) {
-               return strcspn($str1, $str2, $start);
-       } 
-       else {
-               return strcspn($str1, $str2, $start, $length);
-       }
-}
-
-function _fgets (&$h, $force=false) {
-       $startpos = ftell($h);
-       $s = fgets($h, 1024);
-       if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
-               $s = $ns[1];
-               fseek($h,$startpos+strlen($s));
-       }
-       return $s;
-}
-
-
-// For PHP4 compatability
-if(!function_exists('str_ireplace')) {
-  function str_ireplace($search,$replace,$subject) {
-       $search = preg_quote($search, "/");
-       return preg_replace("/".$search."/i", $replace, $subject); 
-  }
-}
-if(!function_exists('htmlspecialchars_decode')) {
-       function htmlspecialchars_decode ($str) {
-               return strtr($str, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
-       }
-}
-
-function PreparePreText($text,$ff='//FF//') {
-       $text = htmlspecialchars($text);
-       if ($ff) { $text = str_replace($ff,'</pre><formfeed /><pre>',$text); }
-       return ('<pre>'.$text.'</pre>');
-}
-
-if(!function_exists('strcode2utf')){ 
-  function strcode2utf($str,$lo=true) {
-       //converts all the &#nnn; and &#xhhh; in a string to Unicode
-       // mPDF 5.7
-       if ($lo) {
-               $str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_lo_callback', $str);
-               $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_lo_callback', $str);
-       }
-       else {
-               $str = preg_replace_callback('/\&\#([0-9]+)\;/m', 'code2utf_callback', $str);
-               $str = preg_replace_callback('/\&\#x([0-9a-fA-F]+)\;/m', 'codeHex2utf_callback', $str);
-       }
-       return $str;
-  }
-}
-function code2utf_callback($matches) {
-       return code2utf($matches[1], 0);
-}
-function code2utf_lo_callback($matches) {
-       return code2utf($matches[1], 1);
-}
-function codeHex2utf_callback($matches) {
-       return codeHex2utf($matches[1], 0);
-}
-function codeHex2utf_lo_callback($matches) {
-       return codeHex2utf($matches[1], 1);
-}
-
-if(!function_exists('code2utf')){ 
-  function code2utf($num,$lo=true){
-       //Returns the utf string corresponding to the unicode value
-       if ($num<128) {
-               if ($lo) return chr($num);
-               else return '&#'.$num.';';
-       }
-       if ($num<2048) return chr(($num>>6)+192).chr(($num&63)+128);
-       if ($num<65536) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
-       if ($num<2097152) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
-       return '?';
-  }
-}
-
-
-if(!function_exists('codeHex2utf')){ 
-  function codeHex2utf($hex,$lo=true){
-       $num = hexdec($hex);
-       if (($num<128) && !$lo) return '&#x'.$hex.';';
-       return code2utf($num,$lo);
-  }
-}
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php
deleted file mode 100644 (file)
index f745de0..0000000
+++ /dev/null
@@ -1,3164 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0995 09CD 09B7',
-    'replace' => 'E002',
-  ),
-  1 => 
-  array (
-    'match' => '099C 09CD 099E',
-    'replace' => 'E003',
-  ),
-  2 => 
-  array (
-    'match' => '09CD 200D',
-    'replace' => '007E',
-  ),
-  3 => 
-  array (
-    'match' => '09CD 200C',
-    'replace' => '200C',
-  ),
-  4 => 
-  array (
-    'match' => '200D 09CD',
-    'replace' => '00D0',
-  ),
-  5 => 
-  array (
-    'match' => '((0995|0996|0997|0998|0999|099A|099B|099C|099D|099E|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9)) 09CD 09B0',
-    'replace' => '\\1 E1CD',
-  ),
-  6 => 
-  array (
-    'match' => '((0995|0996|0997|0998|0999|099A|099B|099C|099D|099E|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9)) 09B0 09CD',
-    'replace' => '\\1 E068',
-  ),
-  7 => 
-  array (
-    'match' => '((09BE|09C0|09C1|09C2|09C3|09C4|09CB|09CC|09D7|09BC)) 09CD 09B0',
-    'replace' => '\\1 E1CD',
-  ),
-  8 => 
-  array (
-    'match' => '((09BE|09C0|09C1|09C2|09C3|09C4|09CB|09CC|09D7|09BC)) 09B0 09CD',
-    'replace' => '\\1 E068',
-  ),
-  9 => 
-  array (
-    'match' => '(0020) 09CD 09B0',
-    'replace' => '\\1 E1CD',
-  ),
-  10 => 
-  array (
-    'match' => '(0020) 09B0 09CD',
-    'replace' => '\\1 E068',
-  ),
-  11 => 
-  array (
-    'match' => '(25CC) 09CD 09B0',
-    'replace' => '\\1 E1CD',
-  ),
-  12 => 
-  array (
-    'match' => '(25CC) 09B0 09CD',
-    'replace' => '\\1 E068',
-  ),
-  13 => 
-  array (
-    'match' => '((09B0|E042|E043|E044|E048|E049|E04E|E04F|E050|E051|E052|E053|E054|E056|E057|E058|E059|E05B|E05C|E05D|E05E|E062|E063|E064|E065|E0A8|E0BC|E0EF|E0FD|E101|E11C|E11E|E14F|E151|E152|E164|E17D|E18E|E190)) 09C1',
-    'replace' => '\\1 E03C',
-  ),
-  14 => 
-  array (
-    'match' => '((09B0|E042|E043|E044|E048|E049|E04E|E04F|E050|E051|E052|E053|E054|E056|E057|E058|E059|E05B|E05C|E05D|E05E|E062|E063|E064|E065|E0A8|E0BC|E0EF|E0FD|E101|E11C|E11E|E14F|E151|E152|E164|E17D|E18E|E190)) 09C2',
-    'replace' => '\\1 E03E',
-  ),
-  15 => 
-  array (
-    'match' => '((E045|E046|E047|E04A|E04B|E04C|E04D|E05F|E060|E061|E07C|E07D|E0B1|E0E8|E0E9|E11A|E11B|E163|E17B|E18D)) 09C1',
-    'replace' => '\\1 E03D',
-  ),
-  16 => 
-  array (
-    'match' => 'E068 0981',
-    'replace' => 'E069',
-  ),
-  17 => 
-  array (
-    'match' => '0995 09CD 0995',
-    'replace' => 'E06A',
-  ),
-  18 => 
-  array (
-    'match' => '0995 09CD 0996',
-    'replace' => 'E06B',
-  ),
-  19 => 
-  array (
-    'match' => '0995 09CD 099A',
-    'replace' => 'E06C',
-  ),
-  20 => 
-  array (
-    'match' => '0995 09CD 099B',
-    'replace' => 'E06D',
-  ),
-  21 => 
-  array (
-    'match' => '0995 09CD 099F',
-    'replace' => 'E06E',
-  ),
-  22 => 
-  array (
-    'match' => '0995 09CD 09A0',
-    'replace' => 'E06F',
-  ),
-  23 => 
-  array (
-    'match' => '0995 09CD 09A3',
-    'replace' => 'E070',
-  ),
-  24 => 
-  array (
-    'match' => '0995 09CD 09A4',
-    'replace' => 'E071',
-  ),
-  25 => 
-  array (
-    'match' => '0995 09CD 09A5',
-    'replace' => 'E072',
-  ),
-  26 => 
-  array (
-    'match' => '0995 09CD 09A8',
-    'replace' => 'E073',
-  ),
-  27 => 
-  array (
-    'match' => '0995 09CD 09AA',
-    'replace' => 'E074',
-  ),
-  28 => 
-  array (
-    'match' => '0995 09CD 09AB',
-    'replace' => 'E075',
-  ),
-  29 => 
-  array (
-    'match' => '0995 09CD 09AE',
-    'replace' => 'E076',
-  ),
-  30 => 
-  array (
-    'match' => '0995 09CD 09B2',
-    'replace' => 'E077',
-  ),
-  31 => 
-  array (
-    'match' => '0995 09CD 09AC',
-    'replace' => 'E078',
-  ),
-  32 => 
-  array (
-    'match' => '0995 09CD 09B6',
-    'replace' => 'E079',
-  ),
-  33 => 
-  array (
-    'match' => '0995 09CD 09B8',
-    'replace' => 'E07A',
-  ),
-  34 => 
-  array (
-    'match' => '0996 09CD 0996',
-    'replace' => 'E083',
-  ),
-  35 => 
-  array (
-    'match' => '0996 09CD 09A4',
-    'replace' => 'E084',
-  ),
-  36 => 
-  array (
-    'match' => '0996 09CD 09A8',
-    'replace' => 'E085',
-  ),
-  37 => 
-  array (
-    'match' => '0996 09CD 09AE',
-    'replace' => 'E086',
-  ),
-  38 => 
-  array (
-    'match' => '0996 09CD 09AC',
-    'replace' => 'E087',
-  ),
-  39 => 
-  array (
-    'match' => '0997 09CD 0997',
-    'replace' => 'E088',
-  ),
-  40 => 
-  array (
-    'match' => '0997 09CD 0998',
-    'replace' => 'E089',
-  ),
-  41 => 
-  array (
-    'match' => '0997 09CD 099C',
-    'replace' => 'E08A',
-  ),
-  42 => 
-  array (
-    'match' => '0997 09CD 099D',
-    'replace' => 'E08B',
-  ),
-  43 => 
-  array (
-    'match' => '0997 09CD 09A1',
-    'replace' => 'E08C',
-  ),
-  44 => 
-  array (
-    'match' => '0997 09CD 09A2',
-    'replace' => 'E08D',
-  ),
-  45 => 
-  array (
-    'match' => '0997 09CD 09A3',
-    'replace' => 'E08E',
-  ),
-  46 => 
-  array (
-    'match' => '0997 09CD 09A6',
-    'replace' => 'E08F',
-  ),
-  47 => 
-  array (
-    'match' => '0997 09CD 09A7',
-    'replace' => 'E090',
-  ),
-  48 => 
-  array (
-    'match' => '0997 09CD 09A8',
-    'replace' => 'E091',
-  ),
-  49 => 
-  array (
-    'match' => '0997 09CD 09AB',
-    'replace' => 'E092',
-  ),
-  50 => 
-  array (
-    'match' => '0997 09CD 09AC',
-    'replace' => 'E093',
-  ),
-  51 => 
-  array (
-    'match' => '0997 09CD 09AD',
-    'replace' => 'E094',
-  ),
-  52 => 
-  array (
-    'match' => '0997 09CD 09AE',
-    'replace' => 'E095',
-  ),
-  53 => 
-  array (
-    'match' => '0997 09CD 09B2',
-    'replace' => 'E096',
-  ),
-  54 => 
-  array (
-    'match' => '0998 09CD 09A8',
-    'replace' => 'E099',
-  ),
-  55 => 
-  array (
-    'match' => '0998 09CD 09AE',
-    'replace' => 'E09A',
-  ),
-  56 => 
-  array (
-    'match' => '0998 09CD 09AC',
-    'replace' => 'E09B',
-  ),
-  57 => 
-  array (
-    'match' => '0999 09CD 0995',
-    'replace' => 'E09C',
-  ),
-  58 => 
-  array (
-    'match' => '0999 09CD 0996',
-    'replace' => 'E09D',
-  ),
-  59 => 
-  array (
-    'match' => '0999 09CD 0997',
-    'replace' => 'E09E',
-  ),
-  60 => 
-  array (
-    'match' => '0999 09CD 0998',
-    'replace' => 'E09F',
-  ),
-  61 => 
-  array (
-    'match' => '0999 09CD 09A8',
-    'replace' => 'E0A0',
-  ),
-  62 => 
-  array (
-    'match' => '0999 09CD 09AD',
-    'replace' => 'E0A1',
-  ),
-  63 => 
-  array (
-    'match' => '0999 09CD 09AE',
-    'replace' => 'E0A2',
-  ),
-  64 => 
-  array (
-    'match' => '0999 09CD 09AC',
-    'replace' => 'E0A3',
-  ),
-  65 => 
-  array (
-    'match' => '0999 09CD 09B6',
-    'replace' => 'E0A4',
-  ),
-  66 => 
-  array (
-    'match' => '0999 09CD 09B7',
-    'replace' => 'E0A5',
-  ),
-  67 => 
-  array (
-    'match' => '0999 09CD 09B9',
-    'replace' => 'E0A6',
-  ),
-  68 => 
-  array (
-    'match' => '099A 09CD 099A',
-    'replace' => 'E0AC',
-  ),
-  69 => 
-  array (
-    'match' => '099A 09CD 099B',
-    'replace' => 'E0AD',
-  ),
-  70 => 
-  array (
-    'match' => '099A 09CD 099E',
-    'replace' => 'E0AE',
-  ),
-  71 => 
-  array (
-    'match' => '099A 09CD 09AE',
-    'replace' => 'E0AF',
-  ),
-  72 => 
-  array (
-    'match' => '099A 09CD 09AC',
-    'replace' => 'E0B0',
-  ),
-  73 => 
-  array (
-    'match' => '099B 09CD 099B',
-    'replace' => 'E0B4',
-  ),
-  74 => 
-  array (
-    'match' => '099B 09CD 09B2',
-    'replace' => 'E0B5',
-  ),
-  75 => 
-  array (
-    'match' => '099B 09CD 09AC',
-    'replace' => 'E0B6',
-  ),
-  76 => 
-  array (
-    'match' => '099C 09CD 099C',
-    'replace' => 'E0B7',
-  ),
-  77 => 
-  array (
-    'match' => '099C 09CD 099D',
-    'replace' => 'E0B8',
-  ),
-  78 => 
-  array (
-    'match' => '099C 09CD 09A6',
-    'replace' => 'E0B9',
-  ),
-  79 => 
-  array (
-    'match' => '099C 09CD 09AC',
-    'replace' => 'E0BA',
-  ),
-  80 => 
-  array (
-    'match' => '099C 09CD 09AE',
-    'replace' => 'E0BB',
-  ),
-  81 => 
-  array (
-    'match' => '099D 09CD 099D',
-    'replace' => 'E0BE',
-  ),
-  82 => 
-  array (
-    'match' => '099D 09CD 09AE',
-    'replace' => 'E0BF',
-  ),
-  83 => 
-  array (
-    'match' => '099D 09CD 09AC',
-    'replace' => 'E0C0',
-  ),
-  84 => 
-  array (
-    'match' => '099E 09CD 099A',
-    'replace' => 'E0C1',
-  ),
-  85 => 
-  array (
-    'match' => '099E 09CD 099B',
-    'replace' => 'E0C2',
-  ),
-  86 => 
-  array (
-    'match' => '099E 09CD 099C',
-    'replace' => 'E0C3',
-  ),
-  87 => 
-  array (
-    'match' => '099E 09CD 099D',
-    'replace' => 'E0C4',
-  ),
-  88 => 
-  array (
-    'match' => '099E 09CD 09B6',
-    'replace' => 'E0C5',
-  ),
-  89 => 
-  array (
-    'match' => '099F 09CD 0995',
-    'replace' => 'E0C6',
-  ),
-  90 => 
-  array (
-    'match' => '099F 09CD 0996',
-    'replace' => 'E0C7',
-  ),
-  91 => 
-  array (
-    'match' => '099F 09CD 099A',
-    'replace' => 'E0C8',
-  ),
-  92 => 
-  array (
-    'match' => '099F 09CD 099B',
-    'replace' => 'E0C9',
-  ),
-  93 => 
-  array (
-    'match' => '099F 09CD 099F',
-    'replace' => 'E0CA',
-  ),
-  94 => 
-  array (
-    'match' => '099F 09CD 09A0',
-    'replace' => 'E0CB',
-  ),
-  95 => 
-  array (
-    'match' => '099F 09CD 09A4',
-    'replace' => 'E0CC',
-  ),
-  96 => 
-  array (
-    'match' => '099F 09CD 09A5',
-    'replace' => 'E0CD',
-  ),
-  97 => 
-  array (
-    'match' => '099F 09CD 09AA',
-    'replace' => 'E0CE',
-  ),
-  98 => 
-  array (
-    'match' => '099F 09CD 09AB',
-    'replace' => 'E0CF',
-  ),
-  99 => 
-  array (
-    'match' => '099F 09CD 09AC',
-    'replace' => 'E0D0',
-  ),
-  100 => 
-  array (
-    'match' => '099F 09CD 09AE',
-    'replace' => 'E0D1',
-  ),
-  101 => 
-  array (
-    'match' => '099F 09CD 09B6',
-    'replace' => 'E0D2',
-  ),
-  102 => 
-  array (
-    'match' => '099F 09CD 09B7',
-    'replace' => 'E0D3',
-  ),
-  103 => 
-  array (
-    'match' => '099F 09CD 09B8',
-    'replace' => 'E0D4',
-  ),
-  104 => 
-  array (
-    'match' => '09A0 09CD 09A0',
-    'replace' => 'E0D5',
-  ),
-  105 => 
-  array (
-    'match' => '09A0 09CD 09A3',
-    'replace' => 'E0D6',
-  ),
-  106 => 
-  array (
-    'match' => '09A0 09CD 09AC',
-    'replace' => 'E0D7',
-  ),
-  107 => 
-  array (
-    'match' => '09A1 09CD 0997',
-    'replace' => 'E0D8',
-  ),
-  108 => 
-  array (
-    'match' => '09A1 09CD 09A1',
-    'replace' => 'E0D9',
-  ),
-  109 => 
-  array (
-    'match' => '09A1 09CD 09A2',
-    'replace' => 'E0DA',
-  ),
-  110 => 
-  array (
-    'match' => '09A1 09CD 09AE',
-    'replace' => 'E0DB',
-  ),
-  111 => 
-  array (
-    'match' => '09A1 09CD 09AC',
-    'replace' => 'E0DC',
-  ),
-  112 => 
-  array (
-    'match' => '09A2 09CD 09A2',
-    'replace' => 'E0DD',
-  ),
-  113 => 
-  array (
-    'match' => '09A2 09CD 09A3',
-    'replace' => 'E0DE',
-  ),
-  114 => 
-  array (
-    'match' => '09A2 09CD 09AC',
-    'replace' => 'E0DF',
-  ),
-  115 => 
-  array (
-    'match' => '09A3 09CD 099F',
-    'replace' => 'E0E0',
-  ),
-  116 => 
-  array (
-    'match' => '09A3 09CD 09A0',
-    'replace' => 'E0E1',
-  ),
-  117 => 
-  array (
-    'match' => '09A3 09CD 09A1',
-    'replace' => 'E0E2',
-  ),
-  118 => 
-  array (
-    'match' => '09A3 09CD 09A2',
-    'replace' => 'E0E3',
-  ),
-  119 => 
-  array (
-    'match' => '09A3 09CD 09A3',
-    'replace' => 'E0E4',
-  ),
-  120 => 
-  array (
-    'match' => '09A3 09CD 09AE',
-    'replace' => 'E0E5',
-  ),
-  121 => 
-  array (
-    'match' => '09A3 09CD 09AC',
-    'replace' => 'E0E6',
-  ),
-  122 => 
-  array (
-    'match' => '09A3 09CD 09B8',
-    'replace' => 'E0E7',
-  ),
-  123 => 
-  array (
-    'match' => '09A4 09CD 09A4',
-    'replace' => 'E0EA',
-  ),
-  124 => 
-  array (
-    'match' => '09A4 09CD 09A5',
-    'replace' => 'E0EB',
-  ),
-  125 => 
-  array (
-    'match' => '09A4 09CD 09A8',
-    'replace' => 'E0EC',
-  ),
-  126 => 
-  array (
-    'match' => '09A4 09CD 09AE',
-    'replace' => 'E0ED',
-  ),
-  127 => 
-  array (
-    'match' => '09A4 09CD 09AC',
-    'replace' => 'E0EE',
-  ),
-  128 => 
-  array (
-    'match' => '09A5 09CD 09A5',
-    'replace' => 'E0F1',
-  ),
-  129 => 
-  array (
-    'match' => '09A5 09CD 09A8',
-    'replace' => 'E0F2',
-  ),
-  130 => 
-  array (
-    'match' => '09A5 09CD 09AC',
-    'replace' => 'E0F3',
-  ),
-  131 => 
-  array (
-    'match' => '09A6 09CD 0997',
-    'replace' => 'E0F4',
-  ),
-  132 => 
-  array (
-    'match' => '09A6 09CD 0998',
-    'replace' => 'E0F5',
-  ),
-  133 => 
-  array (
-    'match' => '09A6 09CD 09A6',
-    'replace' => 'E0F6',
-  ),
-  134 => 
-  array (
-    'match' => '09A6 09CD 09A7',
-    'replace' => 'E0F7',
-  ),
-  135 => 
-  array (
-    'match' => '09A6 09CD 09A8',
-    'replace' => 'E0F8',
-  ),
-  136 => 
-  array (
-    'match' => '09A6 09CD 09AC',
-    'replace' => 'E0F9',
-  ),
-  137 => 
-  array (
-    'match' => '09A6 09CD 09AE',
-    'replace' => 'E0FB',
-  ),
-  138 => 
-  array (
-    'match' => '09A6 09CD 09AF',
-    'replace' => 'E0FC',
-  ),
-  139 => 
-  array (
-    'match' => '09A7 09CD 09A7',
-    'replace' => 'E102',
-  ),
-  140 => 
-  array (
-    'match' => '09A7 09CD 09A8',
-    'replace' => 'E103',
-  ),
-  141 => 
-  array (
-    'match' => '09A7 09CD 09AE',
-    'replace' => 'E104',
-  ),
-  142 => 
-  array (
-    'match' => '09A7 09CD 09AC',
-    'replace' => 'E105',
-  ),
-  143 => 
-  array (
-    'match' => '09A8 09CD 0995',
-    'replace' => 'E106',
-  ),
-  144 => 
-  array (
-    'match' => '09A8 09CD 0997',
-    'replace' => 'E107',
-  ),
-  145 => 
-  array (
-    'match' => '09A8 09CD 099A',
-    'replace' => 'E108',
-  ),
-  146 => 
-  array (
-    'match' => '09A8 09CD 099C',
-    'replace' => 'E109',
-  ),
-  147 => 
-  array (
-    'match' => '09A8 09CD 099F',
-    'replace' => 'E10A',
-  ),
-  148 => 
-  array (
-    'match' => '09A8 09CD 09A0',
-    'replace' => 'E10B',
-  ),
-  149 => 
-  array (
-    'match' => '09A8 09CD 09A1',
-    'replace' => 'E10C',
-  ),
-  150 => 
-  array (
-    'match' => '09A8 09CD 09A4',
-    'replace' => 'E10D',
-  ),
-  151 => 
-  array (
-    'match' => '09A8 09CD 09A5',
-    'replace' => 'E10E',
-  ),
-  152 => 
-  array (
-    'match' => '09A8 09CD 09A6',
-    'replace' => 'E10F',
-  ),
-  153 => 
-  array (
-    'match' => '09A8 09CD 09A7',
-    'replace' => 'E110',
-  ),
-  154 => 
-  array (
-    'match' => '09A8 09CD 09A8',
-    'replace' => 'E111',
-  ),
-  155 => 
-  array (
-    'match' => '09A8 09CD 09AB',
-    'replace' => 'E112',
-  ),
-  156 => 
-  array (
-    'match' => '09A8 09CD 09AD',
-    'replace' => 'E113',
-  ),
-  157 => 
-  array (
-    'match' => '09A8 09CD 09AE',
-    'replace' => 'E114',
-  ),
-  158 => 
-  array (
-    'match' => '09A8 09CD 09AF',
-    'replace' => 'E115',
-  ),
-  159 => 
-  array (
-    'match' => '09A8 09CD 09AC',
-    'replace' => 'E116',
-  ),
-  160 => 
-  array (
-    'match' => '09A8 09CD 09B6',
-    'replace' => 'E117',
-  ),
-  161 => 
-  array (
-    'match' => '09A8 09CD 09B7',
-    'replace' => 'E118',
-  ),
-  162 => 
-  array (
-    'match' => '09A8 09CD 09B8',
-    'replace' => 'E119',
-  ),
-  163 => 
-  array (
-    'match' => '09AA 09CD 0995',
-    'replace' => 'E122',
-  ),
-  164 => 
-  array (
-    'match' => '09AA 09CD 0996',
-    'replace' => 'E123',
-  ),
-  165 => 
-  array (
-    'match' => '09AA 09CD 099A',
-    'replace' => 'E124',
-  ),
-  166 => 
-  array (
-    'match' => '09AA 09CD 099B',
-    'replace' => 'E125',
-  ),
-  167 => 
-  array (
-    'match' => '09AA 09CD 099F',
-    'replace' => 'E126',
-  ),
-  168 => 
-  array (
-    'match' => '09AA 09CD 09A0',
-    'replace' => 'E127',
-  ),
-  169 => 
-  array (
-    'match' => '09AA 09CD 09A4',
-    'replace' => 'E128',
-  ),
-  170 => 
-  array (
-    'match' => '09AA 09CD 09A8',
-    'replace' => 'E129',
-  ),
-  171 => 
-  array (
-    'match' => '09AA 09CD 09AA',
-    'replace' => 'E12A',
-  ),
-  172 => 
-  array (
-    'match' => '09AA 09CD 09AB',
-    'replace' => 'E12B',
-  ),
-  173 => 
-  array (
-    'match' => '09AA 09CD 09AE',
-    'replace' => 'E12C',
-  ),
-  174 => 
-  array (
-    'match' => '09AA 09CD 09B2',
-    'replace' => 'E12D',
-  ),
-  175 => 
-  array (
-    'match' => '09AA 09CD 09AC',
-    'replace' => 'E12E',
-  ),
-  176 => 
-  array (
-    'match' => '09AA 09CD 09B6',
-    'replace' => 'E12F',
-  ),
-  177 => 
-  array (
-    'match' => '09AA 09CD 09B7',
-    'replace' => 'E130',
-  ),
-  178 => 
-  array (
-    'match' => '09AA 09CD 09B8',
-    'replace' => 'E131',
-  ),
-  179 => 
-  array (
-    'match' => '09AB 09CD 099F',
-    'replace' => 'E132',
-  ),
-  180 => 
-  array (
-    'match' => '09AB 09CD 09A4',
-    'replace' => 'E133',
-  ),
-  181 => 
-  array (
-    'match' => '09AB 09CD 09AA',
-    'replace' => 'E134',
-  ),
-  182 => 
-  array (
-    'match' => '09AB 09CD 09AB',
-    'replace' => 'E135',
-  ),
-  183 => 
-  array (
-    'match' => '09AB 09CD 09B2',
-    'replace' => 'E136',
-  ),
-  184 => 
-  array (
-    'match' => '09AC 09CD 099C',
-    'replace' => 'E137',
-  ),
-  185 => 
-  array (
-    'match' => '09AC 09CD 099D',
-    'replace' => 'E138',
-  ),
-  186 => 
-  array (
-    'match' => '09AC 09CD 09A1',
-    'replace' => 'E139',
-  ),
-  187 => 
-  array (
-    'match' => '09AC 09CD 09A2',
-    'replace' => 'E13A',
-  ),
-  188 => 
-  array (
-    'match' => '09AC 09CD 09A6',
-    'replace' => 'E13B',
-  ),
-  189 => 
-  array (
-    'match' => '09AC 09CD 09A7',
-    'replace' => 'E13C',
-  ),
-  190 => 
-  array (
-    'match' => '09AC 09CD 09A8',
-    'replace' => 'E13D',
-  ),
-  191 => 
-  array (
-    'match' => '09AC 09CD 09B2',
-    'replace' => 'E13E',
-  ),
-  192 => 
-  array (
-    'match' => '09AC 09CD 09AC',
-    'replace' => 'E13F',
-  ),
-  193 => 
-  array (
-    'match' => '09AD 09CD 09A3',
-    'replace' => 'E141',
-  ),
-  194 => 
-  array (
-    'match' => '09AD 09CD 09A8',
-    'replace' => 'E142',
-  ),
-  195 => 
-  array (
-    'match' => '09AD 09CD 09AD',
-    'replace' => 'E143',
-  ),
-  196 => 
-  array (
-    'match' => '09AD 09CD 09AE',
-    'replace' => 'E144',
-  ),
-  197 => 
-  array (
-    'match' => '09AD 09CD 09B2',
-    'replace' => 'E145',
-  ),
-  198 => 
-  array (
-    'match' => '09AD 09CD 09AC',
-    'replace' => 'E146',
-  ),
-  199 => 
-  array (
-    'match' => '09AE 09CD 09A3',
-    'replace' => 'E147',
-  ),
-  200 => 
-  array (
-    'match' => '09AE 09CD 09A8',
-    'replace' => 'E148',
-  ),
-  201 => 
-  array (
-    'match' => '09AE 09CD 09AA',
-    'replace' => 'E149',
-  ),
-  202 => 
-  array (
-    'match' => '09AE 09CD 09AB',
-    'replace' => 'E14A',
-  ),
-  203 => 
-  array (
-    'match' => '09AE 09CD 09AC',
-    'replace' => 'E14B',
-  ),
-  204 => 
-  array (
-    'match' => '09AE 09CD 09AD',
-    'replace' => 'E14C',
-  ),
-  205 => 
-  array (
-    'match' => '09AE 09CD 09AE',
-    'replace' => 'E14D',
-  ),
-  206 => 
-  array (
-    'match' => '09AE 09CD 09B2',
-    'replace' => 'E14E',
-  ),
-  207 => 
-  array (
-    'match' => '09B2 09CD 0995',
-    'replace' => 'E153',
-  ),
-  208 => 
-  array (
-    'match' => '09B2 09CD 0996',
-    'replace' => 'E154',
-  ),
-  209 => 
-  array (
-    'match' => '09B2 09CD 0997',
-    'replace' => 'E155',
-  ),
-  210 => 
-  array (
-    'match' => '09B2 09CD 099A',
-    'replace' => 'E156',
-  ),
-  211 => 
-  array (
-    'match' => '09B2 09CD 099C',
-    'replace' => 'E157',
-  ),
-  212 => 
-  array (
-    'match' => '09B2 09CD 099F',
-    'replace' => 'E158',
-  ),
-  213 => 
-  array (
-    'match' => '09B2 09CD 09A1',
-    'replace' => 'E159',
-  ),
-  214 => 
-  array (
-    'match' => '09B2 09CD 09A6',
-    'replace' => 'E15A',
-  ),
-  215 => 
-  array (
-    'match' => '09B2 09CD 09AA',
-    'replace' => 'E15B',
-  ),
-  216 => 
-  array (
-    'match' => '09B2 09CD 09AB',
-    'replace' => 'E15C',
-  ),
-  217 => 
-  array (
-    'match' => '09B2 09CD 09AC',
-    'replace' => 'E15D',
-  ),
-  218 => 
-  array (
-    'match' => '09B2 09CD 09AE',
-    'replace' => 'E15E',
-  ),
-  219 => 
-  array (
-    'match' => '09B2 09CD 09B2',
-    'replace' => 'E15F',
-  ),
-  220 => 
-  array (
-    'match' => '09B2 09CD 09B6',
-    'replace' => 'E160',
-  ),
-  221 => 
-  array (
-    'match' => '09B2 09CD 09B8',
-    'replace' => 'E161',
-  ),
-  222 => 
-  array (
-    'match' => '09B2 09CD 09B9',
-    'replace' => 'E162',
-  ),
-  223 => 
-  array (
-    'match' => '09B6 09CD 0995',
-    'replace' => 'E166',
-  ),
-  224 => 
-  array (
-    'match' => '09B6 09CD 099A',
-    'replace' => 'E167',
-  ),
-  225 => 
-  array (
-    'match' => '09B6 09CD 099B',
-    'replace' => 'E168',
-  ),
-  226 => 
-  array (
-    'match' => '09B6 09CD 09A4',
-    'replace' => 'E169',
-  ),
-  227 => 
-  array (
-    'match' => '09B6 09CD 09A8',
-    'replace' => 'E16A',
-  ),
-  228 => 
-  array (
-    'match' => '09B6 09CD 09AA',
-    'replace' => 'E16B',
-  ),
-  229 => 
-  array (
-    'match' => '09B6 09CD 09AE',
-    'replace' => 'E16C',
-  ),
-  230 => 
-  array (
-    'match' => '09B6 09CD 09AF',
-    'replace' => 'E16D',
-  ),
-  231 => 
-  array (
-    'match' => '09B6 09CD 09B2',
-    'replace' => 'E16E',
-  ),
-  232 => 
-  array (
-    'match' => '09B6 09CD 09AC',
-    'replace' => 'E16F',
-  ),
-  233 => 
-  array (
-    'match' => '09B6 09CD 09B6',
-    'replace' => 'E170',
-  ),
-  234 => 
-  array (
-    'match' => '09B7 09CD 0995',
-    'replace' => 'E171',
-  ),
-  235 => 
-  array (
-    'match' => '09B7 09CD 099F',
-    'replace' => 'E172',
-  ),
-  236 => 
-  array (
-    'match' => '09B7 09CD 09A0',
-    'replace' => 'E173',
-  ),
-  237 => 
-  array (
-    'match' => '09B7 09CD 09A3',
-    'replace' => 'E174',
-  ),
-  238 => 
-  array (
-    'match' => '09B7 09CD 09AA',
-    'replace' => 'E175',
-  ),
-  239 => 
-  array (
-    'match' => '09B7 09CD 09AB',
-    'replace' => 'E176',
-  ),
-  240 => 
-  array (
-    'match' => '09B7 09CD 09AE',
-    'replace' => 'E177',
-  ),
-  241 => 
-  array (
-    'match' => '09B7 09CD 09AF',
-    'replace' => 'E178',
-  ),
-  242 => 
-  array (
-    'match' => '09B7 09CD 09AC',
-    'replace' => 'E179',
-  ),
-  243 => 
-  array (
-    'match' => '09B8 09CD 0995',
-    'replace' => 'E17E',
-  ),
-  244 => 
-  array (
-    'match' => '09B8 09CD 0996',
-    'replace' => 'E17F',
-  ),
-  245 => 
-  array (
-    'match' => '09B8 09CD 099C',
-    'replace' => 'E180',
-  ),
-  246 => 
-  array (
-    'match' => '09B8 09CD 099F',
-    'replace' => 'E181',
-  ),
-  247 => 
-  array (
-    'match' => '09B8 09CD 09A4',
-    'replace' => 'E182',
-  ),
-  248 => 
-  array (
-    'match' => '09B8 09CD 09A5',
-    'replace' => 'E183',
-  ),
-  249 => 
-  array (
-    'match' => '09B8 09CD 09A8',
-    'replace' => 'E184',
-  ),
-  250 => 
-  array (
-    'match' => '09B8 09CD 09AA',
-    'replace' => 'E185',
-  ),
-  251 => 
-  array (
-    'match' => '09B8 09CD 09AB',
-    'replace' => 'E186',
-  ),
-  252 => 
-  array (
-    'match' => '09B8 09CD 09AE',
-    'replace' => 'E187',
-  ),
-  253 => 
-  array (
-    'match' => '09B8 09CD 09AF',
-    'replace' => 'E188',
-  ),
-  254 => 
-  array (
-    'match' => '09B8 09CD 09B2',
-    'replace' => 'E189',
-  ),
-  255 => 
-  array (
-    'match' => '09B8 09CD 09AC',
-    'replace' => 'E18A',
-  ),
-  256 => 
-  array (
-    'match' => '09B8 09CD 09B8',
-    'replace' => 'E18B',
-  ),
-  257 => 
-  array (
-    'match' => '09B9 09CD 09A3',
-    'replace' => 'E192',
-  ),
-  258 => 
-  array (
-    'match' => '09B9 09CD 09A8',
-    'replace' => 'E193',
-  ),
-  259 => 
-  array (
-    'match' => '09B9 09CD 09AE',
-    'replace' => 'E194',
-  ),
-  260 => 
-  array (
-    'match' => '09B9 09CD 09AF',
-    'replace' => 'E195',
-  ),
-  261 => 
-  array (
-    'match' => '09B9 09CD 09B2',
-    'replace' => 'E196',
-  ),
-  262 => 
-  array (
-    'match' => '09B9 09CD 09AC',
-    'replace' => 'E197',
-  ),
-  263 => 
-  array (
-    'match' => '09DC 09CD 0997',
-    'replace' => 'E198',
-  ),
-  264 => 
-  array (
-    'match' => '09DC 09CD 099C',
-    'replace' => 'E199',
-  ),
-  265 => 
-  array (
-    'match' => '09DC 09CD 09A7',
-    'replace' => 'E19A',
-  ),
-  266 => 
-  array (
-    'match' => '0995 E1CD',
-    'replace' => 'E041',
-  ),
-  267 => 
-  array (
-    'match' => '0996 E1CD',
-    'replace' => 'E042',
-  ),
-  268 => 
-  array (
-    'match' => '0997 E1CD',
-    'replace' => 'E043',
-  ),
-  269 => 
-  array (
-    'match' => '0998 E1CD',
-    'replace' => 'E044',
-  ),
-  270 => 
-  array (
-    'match' => '0999 E1CD',
-    'replace' => 'E045',
-  ),
-  271 => 
-  array (
-    'match' => '099A E1CD',
-    'replace' => 'E046',
-  ),
-  272 => 
-  array (
-    'match' => '099B E1CD',
-    'replace' => 'E047',
-  ),
-  273 => 
-  array (
-    'match' => '099C E1CD',
-    'replace' => 'E048',
-  ),
-  274 => 
-  array (
-    'match' => '099D E1CD',
-    'replace' => 'E049',
-  ),
-  275 => 
-  array (
-    'match' => '099F E1CD',
-    'replace' => 'E04A',
-  ),
-  276 => 
-  array (
-    'match' => '09A0 E1CD',
-    'replace' => 'E04B',
-  ),
-  277 => 
-  array (
-    'match' => '09A1 E1CD',
-    'replace' => 'E04C',
-  ),
-  278 => 
-  array (
-    'match' => '09A2 E1CD',
-    'replace' => 'E04D',
-  ),
-  279 => 
-  array (
-    'match' => '09A3 E1CD',
-    'replace' => 'E04E',
-  ),
-  280 => 
-  array (
-    'match' => '09A4 E1CD',
-    'replace' => 'E04F',
-  ),
-  281 => 
-  array (
-    'match' => '09A5 E1CD',
-    'replace' => 'E050',
-  ),
-  282 => 
-  array (
-    'match' => '09A6 E1CD',
-    'replace' => 'E051',
-  ),
-  283 => 
-  array (
-    'match' => '09A7 E1CD',
-    'replace' => 'E052',
-  ),
-  284 => 
-  array (
-    'match' => '09A8 E1CD',
-    'replace' => 'E053',
-  ),
-  285 => 
-  array (
-    'match' => '09AA E1CD',
-    'replace' => 'E054',
-  ),
-  286 => 
-  array (
-    'match' => '09AB E1CD',
-    'replace' => 'E055',
-  ),
-  287 => 
-  array (
-    'match' => '09AC E1CD',
-    'replace' => 'E056',
-  ),
-  288 => 
-  array (
-    'match' => '09AD E1CD',
-    'replace' => 'E057',
-  ),
-  289 => 
-  array (
-    'match' => '09AE E1CD',
-    'replace' => 'E058',
-  ),
-  290 => 
-  array (
-    'match' => '09AF E1CD',
-    'replace' => 'E059',
-  ),
-  291 => 
-  array (
-    'match' => '09B0 E1CD',
-    'replace' => 'E05A',
-  ),
-  292 => 
-  array (
-    'match' => '09B2 E1CD',
-    'replace' => 'E05B',
-  ),
-  293 => 
-  array (
-    'match' => '09B6 E1CD',
-    'replace' => 'E05C',
-  ),
-  294 => 
-  array (
-    'match' => '09B7 E1CD',
-    'replace' => 'E05D',
-  ),
-  295 => 
-  array (
-    'match' => '09B8 E1CD',
-    'replace' => 'E05E',
-  ),
-  296 => 
-  array (
-    'match' => '09B9 E1CD',
-    'replace' => 'E05F',
-  ),
-  297 => 
-  array (
-    'match' => '09DC E1CD',
-    'replace' => 'E060',
-  ),
-  298 => 
-  array (
-    'match' => '09DD E1CD',
-    'replace' => 'E061',
-  ),
-  299 => 
-  array (
-    'match' => '09DF E1CD',
-    'replace' => 'E062',
-  ),
-  300 => 
-  array (
-    'match' => '00D0 09B0',
-    'replace' => 'E1CD',
-  ),
-  301 => 
-  array (
-    'match' => 'E06A E1CD',
-    'replace' => 'E07B',
-  ),
-  302 => 
-  array (
-    'match' => 'E06E E1CD',
-    'replace' => 'E07C',
-  ),
-  303 => 
-  array (
-    'match' => 'E071 E1CD',
-    'replace' => 'E07D',
-  ),
-  304 => 
-  array (
-    'match' => 'E071 09CD 09AC',
-    'replace' => 'E07E',
-  ),
-  305 => 
-  array (
-    'match' => 'E002 09CD 09A3',
-    'replace' => 'E07F',
-  ),
-  306 => 
-  array (
-    'match' => 'E002 09CD 09AE',
-    'replace' => 'E080',
-  ),
-  307 => 
-  array (
-    'match' => 'E002 E1CD',
-    'replace' => 'E081',
-  ),
-  308 => 
-  array (
-    'match' => 'E002 09CD 09AC',
-    'replace' => 'E082',
-  ),
-  309 => 
-  array (
-    'match' => 'E090 E1CD',
-    'replace' => 'E097',
-  ),
-  310 => 
-  array (
-    'match' => 'E090 09CD 09AC',
-    'replace' => 'E098',
-  ),
-  311 => 
-  array (
-    'match' => 'E09C E1CD',
-    'replace' => 'E0A7',
-  ),
-  312 => 
-  array (
-    'match' => 'E09F E1CD',
-    'replace' => 'E0A8',
-  ),
-  313 => 
-  array (
-    'match' => '0999 09CD E002',
-    'replace' => 'E0A9',
-  ),
-  314 => 
-  array (
-    'match' => 'E0AD E1CD',
-    'replace' => 'E0B1',
-  ),
-  315 => 
-  array (
-    'match' => 'E0AD 09CD 09B2',
-    'replace' => 'E0B2',
-  ),
-  316 => 
-  array (
-    'match' => 'E0AD 09CD 09AC',
-    'replace' => 'E0B3',
-  ),
-  317 => 
-  array (
-    'match' => 'E0B7 E1CD',
-    'replace' => 'E0BC',
-  ),
-  318 => 
-  array (
-    'match' => 'E0B7 09CD 09AC',
-    'replace' => 'E0BD',
-  ),
-  319 => 
-  array (
-    'match' => 'E0E0 E1CD',
-    'replace' => 'E0E8',
-  ),
-  320 => 
-  array (
-    'match' => 'E0E2 E1CD',
-    'replace' => 'E0E9',
-  ),
-  321 => 
-  array (
-    'match' => 'E0EA E1CD',
-    'replace' => 'E0EF',
-  ),
-  322 => 
-  array (
-    'match' => 'E0EA 09CD 09AC',
-    'replace' => 'E0F0',
-  ),
-  323 => 
-  array (
-    'match' => 'E0F6 E1CD',
-    'replace' => 'E0FD',
-  ),
-  324 => 
-  array (
-    'match' => 'E0F6 09CD 09AC',
-    'replace' => 'E0FE',
-  ),
-  325 => 
-  array (
-    'match' => 'E0F7 E1CD',
-    'replace' => 'E0FF',
-  ),
-  326 => 
-  array (
-    'match' => 'E0F7 09CD 09AC',
-    'replace' => 'E100',
-  ),
-  327 => 
-  array (
-    'match' => 'E0FA E1CD',
-    'replace' => 'E101',
-  ),
-  328 => 
-  array (
-    'match' => 'E10A E1CD',
-    'replace' => 'E11A',
-  ),
-  329 => 
-  array (
-    'match' => 'E10C E1CD',
-    'replace' => 'E11B',
-  ),
-  330 => 
-  array (
-    'match' => 'E10D E1CD',
-    'replace' => 'E11C',
-  ),
-  331 => 
-  array (
-    'match' => 'E10D 09CD 09AC',
-    'replace' => 'E11D',
-  ),
-  332 => 
-  array (
-    'match' => 'E10F E1CD',
-    'replace' => 'E11E',
-  ),
-  333 => 
-  array (
-    'match' => 'E10F 09CD 09AC',
-    'replace' => 'E11F',
-  ),
-  334 => 
-  array (
-    'match' => 'E110 E1CD',
-    'replace' => 'E120',
-  ),
-  335 => 
-  array (
-    'match' => 'E110 09CD 09AC',
-    'replace' => 'E121',
-  ),
-  336 => 
-  array (
-    'match' => 'E13C 09CD 09AC',
-    'replace' => 'E140',
-  ),
-  337 => 
-  array (
-    'match' => 'E149 E1CD',
-    'replace' => 'E14F',
-  ),
-  338 => 
-  array (
-    'match' => 'E14A E1CD',
-    'replace' => 'E150',
-  ),
-  339 => 
-  array (
-    'match' => 'E14B E1CD',
-    'replace' => 'E151',
-  ),
-  340 => 
-  array (
-    'match' => 'E14C E1CD',
-    'replace' => 'E152',
-  ),
-  341 => 
-  array (
-    'match' => 'E158 E1CD',
-    'replace' => 'E163',
-  ),
-  342 => 
-  array (
-    'match' => 'E15B E1CD',
-    'replace' => 'E164',
-  ),
-  343 => 
-  array (
-    'match' => 'E161 09CD 099F',
-    'replace' => 'E165',
-  ),
-  344 => 
-  array (
-    'match' => 'E171 E1CD',
-    'replace' => 'E17A',
-  ),
-  345 => 
-  array (
-    'match' => 'E172 E1CD',
-    'replace' => 'E17B',
-  ),
-  346 => 
-  array (
-    'match' => 'E172 09CD 09AC',
-    'replace' => 'E17C',
-  ),
-  347 => 
-  array (
-    'match' => 'E175 E1CD',
-    'replace' => 'E17D',
-  ),
-  348 => 
-  array (
-    'match' => 'E17E E1CD',
-    'replace' => 'E18C',
-  ),
-  349 => 
-  array (
-    'match' => 'E181 E1CD',
-    'replace' => 'E18D',
-  ),
-  350 => 
-  array (
-    'match' => 'E182 E1CD',
-    'replace' => 'E18E',
-  ),
-  351 => 
-  array (
-    'match' => 'E182 09CD 09AC',
-    'replace' => 'E18F',
-  ),
-  352 => 
-  array (
-    'match' => 'E185 E1CD',
-    'replace' => 'E190',
-  ),
-  353 => 
-  array (
-    'match' => 'E185 09CD 09B2',
-    'replace' => 'E191',
-  ),
-  354 => 
-  array (
-    'match' => '((0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD 09AF',
-    'replace' => '\\1 E067',
-  ),
-  355 => 
-  array (
-    'match' => '((E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062)) 09CD 09AF',
-    'replace' => '\\1 E067',
-  ),
-  356 => 
-  array (
-    'match' => '((E002|E003|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E079|E07A|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E086|E089|E08A|E08B|E08C|E08D|E08F|E090|E092|E095|E097|E098|E09A|E09B|E09D|E09F|E0A2|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B1|E0B2|E0B3|E0B4|E0B7|E0B8|E0B9|E0BB|E0BC|E0BD|E0BE|E0BF|E0C5|E0C6|E0C7|E0C8|E0C9|E0CB|E0CC|E0CD|E0CE|E0CF|E0D2|E0D3|E0D5|E0D6|E0D8|E0D9|E0DA|E0DB|E0E0|E0E1|E0E3|E0E5|E0E7|E0E8|E0ED|E0F1|E0F5|E0F6|E0FB|E0FC|E0FD|E0FE|E102|E104|E105|E106|E108|E109|E10A|E10B|E10C|E10F|E110|E112|E114|E115|E117|E118|E119|E11A|E11B|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E12B|E12C|E130|E131|E132|E133|E134|E135|E136|E137|E139|E13A|E13B|E13F|E144|E149|E14A|E14D|E14F|E150|E153|E154|E156|E157|E158|E159|E15A|E15C|E161|E162|E163|E165|E166|E167|E168|E16C|E16D|E174|E175|E176|E177|E178|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E185|E186|E187|E188|E18B|E18C|E18D|E190|E191|E193|E194|E195|E198|E199|E19A|0995|0999|099A|099B|099E|09A1|09A2|09A4|09AB|09AD|09B9|E002|E003|E06A|E073|E074|E077|E078|E07B|E07D|E07E|E07F|E081|E082|E084|E08A|E08C|E08D|E090|E092|E094|E097|E098|E09C|E0A0|E0A1|E0A6|E0A7|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0C1|E0C2|E0C3|E0C4|E0C6|E0C8|E0C9|E0CC|E0CF|E0D9|E0DA|E0DC|E0DD|E0DF|E0E2|E0E3|E0E9|E0EA|E0F0|E108|E109|E10C|E10D|E10E|E110|E112|E113|E11B|E120|E121|E122|E124|E125|E128|E12B|E133|E134|E135|E136|E137|E139|E13A|E13C|E140|E143|E14A|E14C|E153|E156|E157|E159|E15C|E162|E166|E167|E168|E169|E171|E174|E176|E17A|E17E|E180|E182|E183|E18C|E192|E193|E194|E195|E196|E197|09A6|E08F|E0B9|E0F4|E0F6|E0F7|E0F8|E0F9|E0FA|E0FD|E0DC|E0FF|E100|E101|E10F|E11E|E11F|E13B|E15A|099F|09A0|E06E|E06F|E07C|E0CA|E0CB|E0D0|E0D1|E0D4|E0D5|E0D7|E0E0|E0E1|E0E8|E10A|E10B|E11A|E126|E127|E132|E158|E163|E165|E172|E173|E17B|E17C|E181|E18D)) 09CD 09AF',
-    'replace' => '\\1 E067',
-  ),
-  357 => 
-  array (
-    'match' => '(200C) 09CD 09AF',
-    'replace' => '\\1 E067',
-  ),
-  358 => 
-  array (
-    'match' => 'E0A9 E1CD',
-    'replace' => 'E0AA',
-  ),
-  359 => 
-  array (
-    'match' => 'E0A9 E1CD',
-    'replace' => 'E0AB',
-  ),
-  360 => 
-  array (
-    'match' => '(09BF (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD',
-    'replace' => '\\1 09CD 09BF',
-  ),
-  361 => 
-  array (
-    'match' => '(09BF (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 007E',
-    'replace' => '\\1 007E 09BF',
-  ),
-  362 => 
-  array (
-    'match' => '(09C7 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD',
-    'replace' => '\\1 09CD 09C7',
-  ),
-  363 => 
-  array (
-    'match' => '(09C7 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 007E',
-    'replace' => '\\1 007E 09C7',
-  ),
-  364 => 
-  array (
-    'match' => '(09C8 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD',
-    'replace' => '\\1 09CD 09C8',
-  ),
-  365 => 
-  array (
-    'match' => '(09C8 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 007E',
-    'replace' => '\\1 007E 09C8',
-  ),
-  366 => 
-  array (
-    'match' => '09BF 0995 (09CD (09BF|09C7|09C8))',
-    'replace' => '0995 \\1',
-  ),
-  367 => 
-  array (
-    'match' => '09BF 0996 (09CD (09BF|09C7|09C8))',
-    'replace' => '0996 \\1',
-  ),
-  368 => 
-  array (
-    'match' => '09BF 0997 (09CD (09BF|09C7|09C8))',
-    'replace' => '0997 \\1',
-  ),
-  369 => 
-  array (
-    'match' => '09BF 0998 (09CD (09BF|09C7|09C8))',
-    'replace' => '0998 \\1',
-  ),
-  370 => 
-  array (
-    'match' => '09BF 0999 (09CD (09BF|09C7|09C8))',
-    'replace' => '0999 \\1',
-  ),
-  371 => 
-  array (
-    'match' => '09BF 099A (09CD (09BF|09C7|09C8))',
-    'replace' => '099A \\1',
-  ),
-  372 => 
-  array (
-    'match' => '09BF 099B (09CD (09BF|09C7|09C8))',
-    'replace' => '099B \\1',
-  ),
-  373 => 
-  array (
-    'match' => '09BF 099C (09CD (09BF|09C7|09C8))',
-    'replace' => '099C \\1',
-  ),
-  374 => 
-  array (
-    'match' => '09BF 099D (09CD (09BF|09C7|09C8))',
-    'replace' => '099D \\1',
-  ),
-  375 => 
-  array (
-    'match' => '09BF 099F (09CD (09BF|09C7|09C8))',
-    'replace' => '099F \\1',
-  ),
-  376 => 
-  array (
-    'match' => '09BF 09A0 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A0 \\1',
-  ),
-  377 => 
-  array (
-    'match' => '09BF 09A1 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A1 \\1',
-  ),
-  378 => 
-  array (
-    'match' => '09BF 09A2 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A2 \\1',
-  ),
-  379 => 
-  array (
-    'match' => '09BF 09A3 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A3 \\1',
-  ),
-  380 => 
-  array (
-    'match' => '09BF 09A4 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A4 \\1',
-  ),
-  381 => 
-  array (
-    'match' => '09BF 09A5 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A5 \\1',
-  ),
-  382 => 
-  array (
-    'match' => '09BF 09A6 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A6 \\1',
-  ),
-  383 => 
-  array (
-    'match' => '09BF 09A7 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A7 \\1',
-  ),
-  384 => 
-  array (
-    'match' => '09BF 09A8 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A8 \\1',
-  ),
-  385 => 
-  array (
-    'match' => '09BF 09AA (09CD (09BF|09C7|09C8))',
-    'replace' => '09AA \\1',
-  ),
-  386 => 
-  array (
-    'match' => '09BF 09AB (09CD (09BF|09C7|09C8))',
-    'replace' => '09AB \\1',
-  ),
-  387 => 
-  array (
-    'match' => '09BF 09AC (09CD (09BF|09C7|09C8))',
-    'replace' => '09AC \\1',
-  ),
-  388 => 
-  array (
-    'match' => '09BF 09AD (09CD (09BF|09C7|09C8))',
-    'replace' => '09AD \\1',
-  ),
-  389 => 
-  array (
-    'match' => '09BF 09AE (09CD (09BF|09C7|09C8))',
-    'replace' => '09AE \\1',
-  ),
-  390 => 
-  array (
-    'match' => '09BF 09AF (09CD (09BF|09C7|09C8))',
-    'replace' => '09AF \\1',
-  ),
-  391 => 
-  array (
-    'match' => '09BF 09B0 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B0 \\1',
-  ),
-  392 => 
-  array (
-    'match' => '09BF 09B2 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B2 \\1',
-  ),
-  393 => 
-  array (
-    'match' => '09BF 09B6 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B6 \\1',
-  ),
-  394 => 
-  array (
-    'match' => '09BF 09B7 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B7 \\1',
-  ),
-  395 => 
-  array (
-    'match' => '09BF 09B8 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B8 \\1',
-  ),
-  396 => 
-  array (
-    'match' => '09BF 09B9 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B9 \\1',
-  ),
-  397 => 
-  array (
-    'match' => '09BF 09DC (09CD (09BF|09C7|09C8))',
-    'replace' => '09DC \\1',
-  ),
-  398 => 
-  array (
-    'match' => '09BF 09DD (09CD (09BF|09C7|09C8))',
-    'replace' => '09DD \\1',
-  ),
-  399 => 
-  array (
-    'match' => '09BF 09DF (09CD (09BF|09C7|09C8))',
-    'replace' => '09DF \\1',
-  ),
-  400 => 
-  array (
-    'match' => '09C7 0995 (09CD (09BF|09C7|09C8))',
-    'replace' => '0995 \\1',
-  ),
-  401 => 
-  array (
-    'match' => '09C7 0996 (09CD (09BF|09C7|09C8))',
-    'replace' => '0996 \\1',
-  ),
-  402 => 
-  array (
-    'match' => '09C7 0997 (09CD (09BF|09C7|09C8))',
-    'replace' => '0997 \\1',
-  ),
-  403 => 
-  array (
-    'match' => '09C7 0998 (09CD (09BF|09C7|09C8))',
-    'replace' => '0998 \\1',
-  ),
-  404 => 
-  array (
-    'match' => '09C7 0999 (09CD (09BF|09C7|09C8))',
-    'replace' => '0999 \\1',
-  ),
-  405 => 
-  array (
-    'match' => '09C7 099A (09CD (09BF|09C7|09C8))',
-    'replace' => '099A \\1',
-  ),
-  406 => 
-  array (
-    'match' => '09C7 099B (09CD (09BF|09C7|09C8))',
-    'replace' => '099B \\1',
-  ),
-  407 => 
-  array (
-    'match' => '09C7 099C (09CD (09BF|09C7|09C8))',
-    'replace' => '099C \\1',
-  ),
-  408 => 
-  array (
-    'match' => '09C7 099D (09CD (09BF|09C7|09C8))',
-    'replace' => '099D \\1',
-  ),
-  409 => 
-  array (
-    'match' => '09C7 099F (09CD (09BF|09C7|09C8))',
-    'replace' => '099F \\1',
-  ),
-  410 => 
-  array (
-    'match' => '09C7 09A0 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A0 \\1',
-  ),
-  411 => 
-  array (
-    'match' => '09C7 09A1 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A1 \\1',
-  ),
-  412 => 
-  array (
-    'match' => '09C7 09A2 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A2 \\1',
-  ),
-  413 => 
-  array (
-    'match' => '09C7 09A3 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A3 \\1',
-  ),
-  414 => 
-  array (
-    'match' => '09C7 09A4 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A4 \\1',
-  ),
-  415 => 
-  array (
-    'match' => '09C7 09A5 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A5 \\1',
-  ),
-  416 => 
-  array (
-    'match' => '09C7 09A6 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A6 \\1',
-  ),
-  417 => 
-  array (
-    'match' => '09C7 09A7 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A7 \\1',
-  ),
-  418 => 
-  array (
-    'match' => '09C7 09A8 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A8 \\1',
-  ),
-  419 => 
-  array (
-    'match' => '09C7 09AA (09CD (09BF|09C7|09C8))',
-    'replace' => '09AA \\1',
-  ),
-  420 => 
-  array (
-    'match' => '09C7 09AB (09CD (09BF|09C7|09C8))',
-    'replace' => '09AB \\1',
-  ),
-  421 => 
-  array (
-    'match' => '09C7 09AC (09CD (09BF|09C7|09C8))',
-    'replace' => '09AC \\1',
-  ),
-  422 => 
-  array (
-    'match' => '09C7 09AD (09CD (09BF|09C7|09C8))',
-    'replace' => '09AD \\1',
-  ),
-  423 => 
-  array (
-    'match' => '09C7 09AE (09CD (09BF|09C7|09C8))',
-    'replace' => '09AE \\1',
-  ),
-  424 => 
-  array (
-    'match' => '09C7 09AF (09CD (09BF|09C7|09C8))',
-    'replace' => '09AF \\1',
-  ),
-  425 => 
-  array (
-    'match' => '09C7 09B0 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B0 \\1',
-  ),
-  426 => 
-  array (
-    'match' => '09C7 09B2 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B2 \\1',
-  ),
-  427 => 
-  array (
-    'match' => '09C7 09B6 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B6 \\1',
-  ),
-  428 => 
-  array (
-    'match' => '09C7 09B7 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B7 \\1',
-  ),
-  429 => 
-  array (
-    'match' => '09C7 09B8 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B8 \\1',
-  ),
-  430 => 
-  array (
-    'match' => '09C7 09B9 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B9 \\1',
-  ),
-  431 => 
-  array (
-    'match' => '09C7 09DC (09CD (09BF|09C7|09C8))',
-    'replace' => '09DC \\1',
-  ),
-  432 => 
-  array (
-    'match' => '09C7 09DD (09CD (09BF|09C7|09C8))',
-    'replace' => '09DD \\1',
-  ),
-  433 => 
-  array (
-    'match' => '09C7 09DF (09CD (09BF|09C7|09C8))',
-    'replace' => '09DF \\1',
-  ),
-  434 => 
-  array (
-    'match' => '09C8 0995 (09CD (09BF|09C7|09C8))',
-    'replace' => '0995 \\1',
-  ),
-  435 => 
-  array (
-    'match' => '09C8 0996 (09CD (09BF|09C7|09C8))',
-    'replace' => '0996 \\1',
-  ),
-  436 => 
-  array (
-    'match' => '09C8 0997 (09CD (09BF|09C7|09C8))',
-    'replace' => '0997 \\1',
-  ),
-  437 => 
-  array (
-    'match' => '09C8 0998 (09CD (09BF|09C7|09C8))',
-    'replace' => '0998 \\1',
-  ),
-  438 => 
-  array (
-    'match' => '09C8 0999 (09CD (09BF|09C7|09C8))',
-    'replace' => '0999 \\1',
-  ),
-  439 => 
-  array (
-    'match' => '09C8 099A (09CD (09BF|09C7|09C8))',
-    'replace' => '099A \\1',
-  ),
-  440 => 
-  array (
-    'match' => '09C8 099B (09CD (09BF|09C7|09C8))',
-    'replace' => '099B \\1',
-  ),
-  441 => 
-  array (
-    'match' => '09C8 099C (09CD (09BF|09C7|09C8))',
-    'replace' => '099C \\1',
-  ),
-  442 => 
-  array (
-    'match' => '09C8 099D (09CD (09BF|09C7|09C8))',
-    'replace' => '099D \\1',
-  ),
-  443 => 
-  array (
-    'match' => '09C8 099F (09CD (09BF|09C7|09C8))',
-    'replace' => '099F \\1',
-  ),
-  444 => 
-  array (
-    'match' => '09C8 09A0 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A0 \\1',
-  ),
-  445 => 
-  array (
-    'match' => '09C8 09A1 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A1 \\1',
-  ),
-  446 => 
-  array (
-    'match' => '09C8 09A2 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A2 \\1',
-  ),
-  447 => 
-  array (
-    'match' => '09C8 09A3 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A3 \\1',
-  ),
-  448 => 
-  array (
-    'match' => '09C8 09A4 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A4 \\1',
-  ),
-  449 => 
-  array (
-    'match' => '09C8 09A5 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A5 \\1',
-  ),
-  450 => 
-  array (
-    'match' => '09C8 09A6 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A6 \\1',
-  ),
-  451 => 
-  array (
-    'match' => '09C8 09A7 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A7 \\1',
-  ),
-  452 => 
-  array (
-    'match' => '09C8 09A8 (09CD (09BF|09C7|09C8))',
-    'replace' => '09A8 \\1',
-  ),
-  453 => 
-  array (
-    'match' => '09C8 09AA (09CD (09BF|09C7|09C8))',
-    'replace' => '09AA \\1',
-  ),
-  454 => 
-  array (
-    'match' => '09C8 09AB (09CD (09BF|09C7|09C8))',
-    'replace' => '09AB \\1',
-  ),
-  455 => 
-  array (
-    'match' => '09C8 09AC (09CD (09BF|09C7|09C8))',
-    'replace' => '09AC \\1',
-  ),
-  456 => 
-  array (
-    'match' => '09C8 09AD (09CD (09BF|09C7|09C8))',
-    'replace' => '09AD \\1',
-  ),
-  457 => 
-  array (
-    'match' => '09C8 09AE (09CD (09BF|09C7|09C8))',
-    'replace' => '09AE \\1',
-  ),
-  458 => 
-  array (
-    'match' => '09C8 09AF (09CD (09BF|09C7|09C8))',
-    'replace' => '09AF \\1',
-  ),
-  459 => 
-  array (
-    'match' => '09C8 09B0 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B0 \\1',
-  ),
-  460 => 
-  array (
-    'match' => '09C8 09B2 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B2 \\1',
-  ),
-  461 => 
-  array (
-    'match' => '09C8 09B6 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B6 \\1',
-  ),
-  462 => 
-  array (
-    'match' => '09C8 09B7 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B7 \\1',
-  ),
-  463 => 
-  array (
-    'match' => '09C8 09B8 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B8 \\1',
-  ),
-  464 => 
-  array (
-    'match' => '09C8 09B9 (09CD (09BF|09C7|09C8))',
-    'replace' => '09B9 \\1',
-  ),
-  465 => 
-  array (
-    'match' => '09C8 09DC (09CD (09BF|09C7|09C8))',
-    'replace' => '09DC \\1',
-  ),
-  466 => 
-  array (
-    'match' => '09C8 09DD (09CD (09BF|09C7|09C8))',
-    'replace' => '09DD \\1',
-  ),
-  467 => 
-  array (
-    'match' => '09C8 09DF (09CD (09BF|09C7|09C8))',
-    'replace' => '09DF \\1',
-  ),
-  468 => 
-  array (
-    'match' => '09BF 0995 (007E (09BF|09C7|09C8))',
-    'replace' => '0995 \\1',
-  ),
-  469 => 
-  array (
-    'match' => '09BF 0996 (007E (09BF|09C7|09C8))',
-    'replace' => '0996 \\1',
-  ),
-  470 => 
-  array (
-    'match' => '09BF 0997 (007E (09BF|09C7|09C8))',
-    'replace' => '0997 \\1',
-  ),
-  471 => 
-  array (
-    'match' => '09BF 0998 (007E (09BF|09C7|09C8))',
-    'replace' => '0998 \\1',
-  ),
-  472 => 
-  array (
-    'match' => '09BF 0999 (007E (09BF|09C7|09C8))',
-    'replace' => '0999 \\1',
-  ),
-  473 => 
-  array (
-    'match' => '09BF 099A (007E (09BF|09C7|09C8))',
-    'replace' => '099A \\1',
-  ),
-  474 => 
-  array (
-    'match' => '09BF 099B (007E (09BF|09C7|09C8))',
-    'replace' => '099B \\1',
-  ),
-  475 => 
-  array (
-    'match' => '09BF 099C (007E (09BF|09C7|09C8))',
-    'replace' => '099C \\1',
-  ),
-  476 => 
-  array (
-    'match' => '09BF 099D (007E (09BF|09C7|09C8))',
-    'replace' => '099D \\1',
-  ),
-  477 => 
-  array (
-    'match' => '09BF 099F (007E (09BF|09C7|09C8))',
-    'replace' => '099F \\1',
-  ),
-  478 => 
-  array (
-    'match' => '09BF 09A0 (007E (09BF|09C7|09C8))',
-    'replace' => '09A0 \\1',
-  ),
-  479 => 
-  array (
-    'match' => '09BF 09A1 (007E (09BF|09C7|09C8))',
-    'replace' => '09A1 \\1',
-  ),
-  480 => 
-  array (
-    'match' => '09BF 09A2 (007E (09BF|09C7|09C8))',
-    'replace' => '09A2 \\1',
-  ),
-  481 => 
-  array (
-    'match' => '09BF 09A3 (007E (09BF|09C7|09C8))',
-    'replace' => '09A3 \\1',
-  ),
-  482 => 
-  array (
-    'match' => '09BF 09A4 (007E (09BF|09C7|09C8))',
-    'replace' => '09A4 \\1',
-  ),
-  483 => 
-  array (
-    'match' => '09BF 09A5 (007E (09BF|09C7|09C8))',
-    'replace' => '09A5 \\1',
-  ),
-  484 => 
-  array (
-    'match' => '09BF 09A6 (007E (09BF|09C7|09C8))',
-    'replace' => '09A6 \\1',
-  ),
-  485 => 
-  array (
-    'match' => '09BF 09A7 (007E (09BF|09C7|09C8))',
-    'replace' => '09A7 \\1',
-  ),
-  486 => 
-  array (
-    'match' => '09BF 09A8 (007E (09BF|09C7|09C8))',
-    'replace' => '09A8 \\1',
-  ),
-  487 => 
-  array (
-    'match' => '09BF 09AA (007E (09BF|09C7|09C8))',
-    'replace' => '09AA \\1',
-  ),
-  488 => 
-  array (
-    'match' => '09BF 09AB (007E (09BF|09C7|09C8))',
-    'replace' => '09AB \\1',
-  ),
-  489 => 
-  array (
-    'match' => '09BF 09AC (007E (09BF|09C7|09C8))',
-    'replace' => '09AC \\1',
-  ),
-  490 => 
-  array (
-    'match' => '09BF 09AD (007E (09BF|09C7|09C8))',
-    'replace' => '09AD \\1',
-  ),
-  491 => 
-  array (
-    'match' => '09BF 09AE (007E (09BF|09C7|09C8))',
-    'replace' => '09AE \\1',
-  ),
-  492 => 
-  array (
-    'match' => '09BF 09AF (007E (09BF|09C7|09C8))',
-    'replace' => '09AF \\1',
-  ),
-  493 => 
-  array (
-    'match' => '09BF 09B0 (007E (09BF|09C7|09C8))',
-    'replace' => '09B0 \\1',
-  ),
-  494 => 
-  array (
-    'match' => '09BF 09B2 (007E (09BF|09C7|09C8))',
-    'replace' => '09B2 \\1',
-  ),
-  495 => 
-  array (
-    'match' => '09BF 09B6 (007E (09BF|09C7|09C8))',
-    'replace' => '09B6 \\1',
-  ),
-  496 => 
-  array (
-    'match' => '09BF 09B7 (007E (09BF|09C7|09C8))',
-    'replace' => '09B7 \\1',
-  ),
-  497 => 
-  array (
-    'match' => '09BF 09B8 (007E (09BF|09C7|09C8))',
-    'replace' => '09B8 \\1',
-  ),
-  498 => 
-  array (
-    'match' => '09BF 09B9 (007E (09BF|09C7|09C8))',
-    'replace' => '09B9 \\1',
-  ),
-  499 => 
-  array (
-    'match' => '09BF 09DC (007E (09BF|09C7|09C8))',
-    'replace' => '09DC \\1',
-  ),
-  500 => 
-  array (
-    'match' => '09BF 09DD (007E (09BF|09C7|09C8))',
-    'replace' => '09DD \\1',
-  ),
-  501 => 
-  array (
-    'match' => '09BF 09DF (007E (09BF|09C7|09C8))',
-    'replace' => '09DF \\1',
-  ),
-  502 => 
-  array (
-    'match' => '09C7 0995 (007E (09BF|09C7|09C8))',
-    'replace' => '0995 \\1',
-  ),
-  503 => 
-  array (
-    'match' => '09C7 0996 (007E (09BF|09C7|09C8))',
-    'replace' => '0996 \\1',
-  ),
-  504 => 
-  array (
-    'match' => '09C7 0997 (007E (09BF|09C7|09C8))',
-    'replace' => '0997 \\1',
-  ),
-  505 => 
-  array (
-    'match' => '09C7 0998 (007E (09BF|09C7|09C8))',
-    'replace' => '0998 \\1',
-  ),
-  506 => 
-  array (
-    'match' => '09C7 0999 (007E (09BF|09C7|09C8))',
-    'replace' => '0999 \\1',
-  ),
-  507 => 
-  array (
-    'match' => '09C7 099A (007E (09BF|09C7|09C8))',
-    'replace' => '099A \\1',
-  ),
-  508 => 
-  array (
-    'match' => '09C7 099B (007E (09BF|09C7|09C8))',
-    'replace' => '099B \\1',
-  ),
-  509 => 
-  array (
-    'match' => '09C7 099C (007E (09BF|09C7|09C8))',
-    'replace' => '099C \\1',
-  ),
-  510 => 
-  array (
-    'match' => '09C7 099D (007E (09BF|09C7|09C8))',
-    'replace' => '099D \\1',
-  ),
-  511 => 
-  array (
-    'match' => '09C7 099F (007E (09BF|09C7|09C8))',
-    'replace' => '099F \\1',
-  ),
-  512 => 
-  array (
-    'match' => '09C7 09A0 (007E (09BF|09C7|09C8))',
-    'replace' => '09A0 \\1',
-  ),
-  513 => 
-  array (
-    'match' => '09C7 09A1 (007E (09BF|09C7|09C8))',
-    'replace' => '09A1 \\1',
-  ),
-  514 => 
-  array (
-    'match' => '09C7 09A2 (007E (09BF|09C7|09C8))',
-    'replace' => '09A2 \\1',
-  ),
-  515 => 
-  array (
-    'match' => '09C7 09A3 (007E (09BF|09C7|09C8))',
-    'replace' => '09A3 \\1',
-  ),
-  516 => 
-  array (
-    'match' => '09C7 09A4 (007E (09BF|09C7|09C8))',
-    'replace' => '09A4 \\1',
-  ),
-  517 => 
-  array (
-    'match' => '09C7 09A5 (007E (09BF|09C7|09C8))',
-    'replace' => '09A5 \\1',
-  ),
-  518 => 
-  array (
-    'match' => '09C7 09A6 (007E (09BF|09C7|09C8))',
-    'replace' => '09A6 \\1',
-  ),
-  519 => 
-  array (
-    'match' => '09C7 09A7 (007E (09BF|09C7|09C8))',
-    'replace' => '09A7 \\1',
-  ),
-  520 => 
-  array (
-    'match' => '09C7 09A8 (007E (09BF|09C7|09C8))',
-    'replace' => '09A8 \\1',
-  ),
-  521 => 
-  array (
-    'match' => '09C7 09AA (007E (09BF|09C7|09C8))',
-    'replace' => '09AA \\1',
-  ),
-  522 => 
-  array (
-    'match' => '09C7 09AB (007E (09BF|09C7|09C8))',
-    'replace' => '09AB \\1',
-  ),
-  523 => 
-  array (
-    'match' => '09C7 09AC (007E (09BF|09C7|09C8))',
-    'replace' => '09AC \\1',
-  ),
-  524 => 
-  array (
-    'match' => '09C7 09AD (007E (09BF|09C7|09C8))',
-    'replace' => '09AD \\1',
-  ),
-  525 => 
-  array (
-    'match' => '09C7 09AE (007E (09BF|09C7|09C8))',
-    'replace' => '09AE \\1',
-  ),
-  526 => 
-  array (
-    'match' => '09C7 09AF (007E (09BF|09C7|09C8))',
-    'replace' => '09AF \\1',
-  ),
-  527 => 
-  array (
-    'match' => '09C7 09B0 (007E (09BF|09C7|09C8))',
-    'replace' => '09B0 \\1',
-  ),
-  528 => 
-  array (
-    'match' => '09C7 09B2 (007E (09BF|09C7|09C8))',
-    'replace' => '09B2 \\1',
-  ),
-  529 => 
-  array (
-    'match' => '09C7 09B6 (007E (09BF|09C7|09C8))',
-    'replace' => '09B6 \\1',
-  ),
-  530 => 
-  array (
-    'match' => '09C7 09B7 (007E (09BF|09C7|09C8))',
-    'replace' => '09B7 \\1',
-  ),
-  531 => 
-  array (
-    'match' => '09C7 09B8 (007E (09BF|09C7|09C8))',
-    'replace' => '09B8 \\1',
-  ),
-  532 => 
-  array (
-    'match' => '09C7 09B9 (007E (09BF|09C7|09C8))',
-    'replace' => '09B9 \\1',
-  ),
-  533 => 
-  array (
-    'match' => '09C7 09DC (007E (09BF|09C7|09C8))',
-    'replace' => '09DC \\1',
-  ),
-  534 => 
-  array (
-    'match' => '09C7 09DD (007E (09BF|09C7|09C8))',
-    'replace' => '09DD \\1',
-  ),
-  535 => 
-  array (
-    'match' => '09C7 09DF (007E (09BF|09C7|09C8))',
-    'replace' => '09DF \\1',
-  ),
-  536 => 
-  array (
-    'match' => '09C8 0995 (007E (09BF|09C7|09C8))',
-    'replace' => '0995 \\1',
-  ),
-  537 => 
-  array (
-    'match' => '09C8 0996 (007E (09BF|09C7|09C8))',
-    'replace' => '0996 \\1',
-  ),
-  538 => 
-  array (
-    'match' => '09C8 0997 (007E (09BF|09C7|09C8))',
-    'replace' => '0997 \\1',
-  ),
-  539 => 
-  array (
-    'match' => '09C8 0998 (007E (09BF|09C7|09C8))',
-    'replace' => '0998 \\1',
-  ),
-  540 => 
-  array (
-    'match' => '09C8 0999 (007E (09BF|09C7|09C8))',
-    'replace' => '0999 \\1',
-  ),
-  541 => 
-  array (
-    'match' => '09C8 099A (007E (09BF|09C7|09C8))',
-    'replace' => '099A \\1',
-  ),
-  542 => 
-  array (
-    'match' => '09C8 099B (007E (09BF|09C7|09C8))',
-    'replace' => '099B \\1',
-  ),
-  543 => 
-  array (
-    'match' => '09C8 099C (007E (09BF|09C7|09C8))',
-    'replace' => '099C \\1',
-  ),
-  544 => 
-  array (
-    'match' => '09C8 099D (007E (09BF|09C7|09C8))',
-    'replace' => '099D \\1',
-  ),
-  545 => 
-  array (
-    'match' => '09C8 099F (007E (09BF|09C7|09C8))',
-    'replace' => '099F \\1',
-  ),
-  546 => 
-  array (
-    'match' => '09C8 09A0 (007E (09BF|09C7|09C8))',
-    'replace' => '09A0 \\1',
-  ),
-  547 => 
-  array (
-    'match' => '09C8 09A1 (007E (09BF|09C7|09C8))',
-    'replace' => '09A1 \\1',
-  ),
-  548 => 
-  array (
-    'match' => '09C8 09A2 (007E (09BF|09C7|09C8))',
-    'replace' => '09A2 \\1',
-  ),
-  549 => 
-  array (
-    'match' => '09C8 09A3 (007E (09BF|09C7|09C8))',
-    'replace' => '09A3 \\1',
-  ),
-  550 => 
-  array (
-    'match' => '09C8 09A4 (007E (09BF|09C7|09C8))',
-    'replace' => '09A4 \\1',
-  ),
-  551 => 
-  array (
-    'match' => '09C8 09A5 (007E (09BF|09C7|09C8))',
-    'replace' => '09A5 \\1',
-  ),
-  552 => 
-  array (
-    'match' => '09C8 09A6 (007E (09BF|09C7|09C8))',
-    'replace' => '09A6 \\1',
-  ),
-  553 => 
-  array (
-    'match' => '09C8 09A7 (007E (09BF|09C7|09C8))',
-    'replace' => '09A7 \\1',
-  ),
-  554 => 
-  array (
-    'match' => '09C8 09A8 (007E (09BF|09C7|09C8))',
-    'replace' => '09A8 \\1',
-  ),
-  555 => 
-  array (
-    'match' => '09C8 09AA (007E (09BF|09C7|09C8))',
-    'replace' => '09AA \\1',
-  ),
-  556 => 
-  array (
-    'match' => '09C8 09AB (007E (09BF|09C7|09C8))',
-    'replace' => '09AB \\1',
-  ),
-  557 => 
-  array (
-    'match' => '09C8 09AC (007E (09BF|09C7|09C8))',
-    'replace' => '09AC \\1',
-  ),
-  558 => 
-  array (
-    'match' => '09C8 09AD (007E (09BF|09C7|09C8))',
-    'replace' => '09AD \\1',
-  ),
-  559 => 
-  array (
-    'match' => '09C8 09AE (007E (09BF|09C7|09C8))',
-    'replace' => '09AE \\1',
-  ),
-  560 => 
-  array (
-    'match' => '09C8 09AF (007E (09BF|09C7|09C8))',
-    'replace' => '09AF \\1',
-  ),
-  561 => 
-  array (
-    'match' => '09C8 09B0 (007E (09BF|09C7|09C8))',
-    'replace' => '09B0 \\1',
-  ),
-  562 => 
-  array (
-    'match' => '09C8 09B2 (007E (09BF|09C7|09C8))',
-    'replace' => '09B2 \\1',
-  ),
-  563 => 
-  array (
-    'match' => '09C8 09B6 (007E (09BF|09C7|09C8))',
-    'replace' => '09B6 \\1',
-  ),
-  564 => 
-  array (
-    'match' => '09C8 09B7 (007E (09BF|09C7|09C8))',
-    'replace' => '09B7 \\1',
-  ),
-  565 => 
-  array (
-    'match' => '09C8 09B8 (007E (09BF|09C7|09C8))',
-    'replace' => '09B8 \\1',
-  ),
-  566 => 
-  array (
-    'match' => '09C8 09B9 (007E (09BF|09C7|09C8))',
-    'replace' => '09B9 \\1',
-  ),
-  567 => 
-  array (
-    'match' => '09C8 09DC (007E (09BF|09C7|09C8))',
-    'replace' => '09DC \\1',
-  ),
-  568 => 
-  array (
-    'match' => '09C8 09DD (007E (09BF|09C7|09C8))',
-    'replace' => '09DD \\1',
-  ),
-  569 => 
-  array (
-    'match' => '09C8 09DF (007E (09BF|09C7|09C8))',
-    'replace' => '09DF \\1',
-  ),
-  570 => 
-  array (
-    'match' => '09A4 09CD',
-    'replace' => 'E066',
-  ),
-  571 => 
-  array (
-    'match' => '09A4 007E',
-    'replace' => 'E066',
-  ),
-  572 => 
-  array (
-    'match' => 'E066 200D',
-    'replace' => 'E066',
-  ),
-  573 => 
-  array (
-    'match' => '09BF 200D',
-    'replace' => '09BF',
-  ),
-  574 => 
-  array (
-    'match' => '09C7 200D',
-    'replace' => '09C7',
-  ),
-  575 => 
-  array (
-    'match' => '09C8 200D',
-    'replace' => '09C8',
-  ),
-  576 => 
-  array (
-    'match' => '007E',
-    'replace' => '09CD',
-  ),
-  577 => 
-  array (
-    'match' => '200C',
-    'replace' => '09CD',
-  ),
-  578 => 
-  array (
-    'match' => '00D0',
-    'replace' => '09CD',
-  ),
-  579 => 
-  array (
-    'match' => '0997 09C1',
-    'replace' => 'E00A',
-  ),
-  580 => 
-  array (
-    'match' => '09DC 09C1',
-    'replace' => 'E012',
-  ),
-  581 => 
-  array (
-    'match' => '09DC 09C2',
-    'replace' => 'E013',
-  ),
-  582 => 
-  array (
-    'match' => '09DC 09C3',
-    'replace' => 'E014',
-  ),
-  583 => 
-  array (
-    'match' => '09DC 09C4',
-    'replace' => 'E015',
-  ),
-  584 => 
-  array (
-    'match' => '09DD 09C1',
-    'replace' => 'E016',
-  ),
-  585 => 
-  array (
-    'match' => '09DD 09C2',
-    'replace' => 'E017',
-  ),
-  586 => 
-  array (
-    'match' => '09DD 09C3',
-    'replace' => 'E018',
-  ),
-  587 => 
-  array (
-    'match' => '09DD 09C4',
-    'replace' => 'E019',
-  ),
-  588 => 
-  array (
-    'match' => '09B6 09C1',
-    'replace' => 'E00F',
-  ),
-  589 => 
-  array (
-    'match' => '09B9 09C1',
-    'replace' => 'E010',
-  ),
-  590 => 
-  array (
-    'match' => '09B9 09C3',
-    'replace' => 'E011',
-  ),
-  591 => 
-  array (
-    'match' => 'E084 09C1',
-    'replace' => 'E19B',
-  ),
-  592 => 
-  array (
-    'match' => 'E0F4 09C1',
-    'replace' => 'E19C',
-  ),
-  593 => 
-  array (
-    'match' => 'E10D 09C1',
-    'replace' => 'E19D',
-  ),
-  594 => 
-  array (
-    'match' => 'E128 09C1',
-    'replace' => 'E19E',
-  ),
-  595 => 
-  array (
-    'match' => 'E133 09C1',
-    'replace' => 'E19F',
-  ),
-  596 => 
-  array (
-    'match' => 'E155 09C1',
-    'replace' => 'E1A0',
-  ),
-  597 => 
-  array (
-    'match' => 'E169 09C1',
-    'replace' => 'E1A1',
-  ),
-  598 => 
-  array (
-    'match' => 'E182 09C1',
-    'replace' => 'E1A2',
-  ),
-  599 => 
-  array (
-    'match' => '09BF ((E002|E003|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E079|E07A|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E086|E089|E08A|E08B|E08C|E08D|E08F|E090|E092|E095|E097|E098|E09A|E09B|E09D|E09F|E0A2|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B1|E0B2|E0B3|E0B4|E0B7|E0B8|E0B9|E0BB|E0BC|E0BD|E0BE|E0BF|E0C5|E0C6|E0C7|E0C8|E0C9|E0CB|E0CC|E0CD|E0CE|E0CF|E0D2|E0D3|E0D5|E0D6|E0D8|E0D9|E0DA|E0DB|E0E0|E0E1|E0E3|E0E5|E0E7|E0E8|E0ED|E0F1|E0F5|E0F6|E0FB|E0FC|E0FD|E0FE|E102|E104|E105|E106|E108|E109|E10A|E10B|E10C|E10F|E110|E112|E114|E115|E117|E118|E119|E11A|E11B|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E12B|E12C|E130|E131|E132|E133|E134|E135|E136|E137|E139|E13A|E13B|E13F|E144|E149|E14A|E14D|E14F|E150|E153|E154|E156|E157|E158|E159|E15A|E15C|E161|E162|E163|E165|E166|E167|E168|E16C|E16D|E174|E175|E176|E177|E178|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E185|E186|E187|E188|E18B|E18C|E18D|E190|E191|E193|E194|E195|E198|E199|E19A))',
-    'replace' => 'E01C \\1',
-  ),
-  600 => 
-  array (
-    'match' => '((0995|0999|099A|099B|099F|09A0|09A1|09A2|09A4|09AB|09AD|09B9)) 09BE',
-    'replace' => '\\1 E01A',
-  ),
-  601 => 
-  array (
-    'match' => '((0995|0999|099A|099B|099F|09A0|09A1|09A2|09A4|09AB|09AD|09B9)) 09D7',
-    'replace' => '\\1 E03F',
-  ),
-  602 => 
-  array (
-    'match' => '((09A6)) 09BE',
-    'replace' => '\\1 E01B',
-  ),
-  603 => 
-  array (
-    'match' => '((09A6)) 09D7',
-    'replace' => '\\1 E040',
-  ),
-  604 => 
-  array (
-    'match' => '09C0 0981',
-    'replace' => 'E1B4',
-  ),
-  605 => 
-  array (
-    'match' => '09D7 0981',
-    'replace' => 'E1B5',
-  ),
-  606 => 
-  array (
-    'match' => 'E01D 0981',
-    'replace' => 'E1B6',
-  ),
-  607 => 
-  array (
-    'match' => 'E01E 0981',
-    'replace' => 'E1B7',
-  ),
-  608 => 
-  array (
-    'match' => 'E01F 0981',
-    'replace' => 'E1B8',
-  ),
-  609 => 
-  array (
-    'match' => 'E03F 0981',
-    'replace' => 'E1B9',
-  ),
-  610 => 
-  array (
-    'match' => 'E040 0981',
-    'replace' => 'E1BA',
-  ),
-  611 => 
-  array (
-    'match' => '09C0 E069',
-    'replace' => 'E1BB',
-  ),
-  612 => 
-  array (
-    'match' => '09D7 E069',
-    'replace' => 'E1BC',
-  ),
-  613 => 
-  array (
-    'match' => 'E01D E069',
-    'replace' => 'E1BD',
-  ),
-  614 => 
-  array (
-    'match' => 'E01E E069',
-    'replace' => 'E1BE',
-  ),
-  615 => 
-  array (
-    'match' => 'E01F E069',
-    'replace' => 'E1BF',
-  ),
-  616 => 
-  array (
-    'match' => 'E03F E069',
-    'replace' => 'E1C0',
-  ),
-  617 => 
-  array (
-    'match' => 'E040 E069',
-    'replace' => 'E1C1',
-  ),
-  618 => 
-  array (
-    'match' => '0987 0981',
-    'replace' => 'E1C2',
-  ),
-  619 => 
-  array (
-    'match' => '0988 0981',
-    'replace' => 'E1C3',
-  ),
-  620 => 
-  array (
-    'match' => '098A 0981',
-    'replace' => 'E1C4',
-  ),
-  621 => 
-  array (
-    'match' => '0990 0981',
-    'replace' => 'E1C5',
-  ),
-  622 => 
-  array (
-    'match' => '0994 0981',
-    'replace' => 'E1C6',
-  ),
-  623 => 
-  array (
-    'match' => '099F 0981',
-    'replace' => 'E1C7',
-  ),
-  624 => 
-  array (
-    'match' => '09A0 0981',
-    'replace' => 'E1C8',
-  ),
-  625 => 
-  array (
-    'match' => '099F E068',
-    'replace' => 'E1C9',
-  ),
-  626 => 
-  array (
-    'match' => '09A0 E068',
-    'replace' => 'E1CA',
-  ),
-  627 => 
-  array (
-    'match' => '099F E069',
-    'replace' => 'E1CB',
-  ),
-  628 => 
-  array (
-    'match' => '09A0 E069',
-    'replace' => 'E1CC',
-  ),
-  629 => 
-  array (
-    'match' => '((0995|0999|099A|099B|099E|09A1|09A2|09A4|09AB|09AD|09B9|E002|E003|E06A|E073|E074|E077|E078|E07B|E07D|E07E|E07F|E081|E082|E084|E08A|E08C|E08D|E090|E092|E094|E097|E098|E09C|E0A0|E0A1|E0A6|E0A7|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0C1|E0C2|E0C3|E0C4|E0C6|E0C8|E0C9|E0CC|E0CF|E0D9|E0DA|E0DC|E0DD|E0DF|E0E2|E0E3|E0E9|E0EA|E0F0|E108|E109|E10C|E10D|E10E|E110|E112|E113|E11B|E120|E121|E122|E124|E125|E128|E12B|E133|E134|E135|E136|E137|E139|E13A|E13C|E140|E143|E14A|E14C|E153|E156|E157|E159|E15C|E162|E166|E167|E168|E169|E171|E174|E176|E17A|E17E|E180|E182|E183|E18C|E192|E193|E194|E195|E196|E197)) 09C0',
-    'replace' => '\\1 E01D',
-  ),
-  630 => 
-  array (
-    'match' => '((09A6|E08F|E0B9|E0F4|E0F6|E0F7|E0F8|E0F9|E0FA|E0FD|E0DC|E0FF|E100|E101|E10F|E11E|E11F|E13B|E15A)) 09C0',
-    'replace' => '\\1 E01E',
-  ),
-  631 => 
-  array (
-    'match' => '((099F|09A0|E06E|E06F|E07C|E0CA|E0CB|E0D0|E0D1|E0D4|E0D5|E0D7|E0E0|E0E1|E0E8|E10A|E10B|E11A|E126|E127|E132|E158|E163|E165|E172|E173|E17B|E17C|E181|E18D)) 09C0',
-    'replace' => '\\1 E01F',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php
deleted file mode 100644 (file)
index a3e6c03..0000000
+++ /dev/null
@@ -1,3314 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0A95 0ACD 0AB7',
-    'replace' => 'E002',
-  ),
-  1 => 
-  array (
-    'match' => '0A9C 0ACD 0A9E',
-    'replace' => 'E003',
-  ),
-  2 => 
-  array (
-    'match' => '0ACD 200C',
-    'replace' => 'E163',
-  ),
-  3 => 
-  array (
-    'match' => '0A95 0ABC',
-    'replace' => 'E004',
-  ),
-  4 => 
-  array (
-    'match' => '0A96 0ABC',
-    'replace' => 'E005',
-  ),
-  5 => 
-  array (
-    'match' => '0A97 0ABC',
-    'replace' => 'E006',
-  ),
-  6 => 
-  array (
-    'match' => '0A98 0ABC',
-    'replace' => 'E007',
-  ),
-  7 => 
-  array (
-    'match' => '0A99 0ABC',
-    'replace' => 'E008',
-  ),
-  8 => 
-  array (
-    'match' => '0A9A 0ABC',
-    'replace' => 'E009',
-  ),
-  9 => 
-  array (
-    'match' => '0A9B 0ABC',
-    'replace' => 'E00A',
-  ),
-  10 => 
-  array (
-    'match' => '0A9C 0ABC',
-    'replace' => 'E00B',
-  ),
-  11 => 
-  array (
-    'match' => '0A9D 0ABC',
-    'replace' => 'E00C',
-  ),
-  12 => 
-  array (
-    'match' => '0A9E 0ABC',
-    'replace' => 'E00D',
-  ),
-  13 => 
-  array (
-    'match' => '0A9F 0ABC',
-    'replace' => 'E00E',
-  ),
-  14 => 
-  array (
-    'match' => '0AA0 0ABC',
-    'replace' => 'E00F',
-  ),
-  15 => 
-  array (
-    'match' => '0AA1 0ABC',
-    'replace' => 'E010',
-  ),
-  16 => 
-  array (
-    'match' => '0AA2 0ABC',
-    'replace' => 'E011',
-  ),
-  17 => 
-  array (
-    'match' => '0AA3 0ABC',
-    'replace' => 'E012',
-  ),
-  18 => 
-  array (
-    'match' => '0AA4 0ABC',
-    'replace' => 'E013',
-  ),
-  19 => 
-  array (
-    'match' => '0AA5 0ABC',
-    'replace' => 'E014',
-  ),
-  20 => 
-  array (
-    'match' => '0AA6 0ABC',
-    'replace' => 'E015',
-  ),
-  21 => 
-  array (
-    'match' => '0AA7 0ABC',
-    'replace' => 'E016',
-  ),
-  22 => 
-  array (
-    'match' => '0AA8 0ABC',
-    'replace' => 'E017',
-  ),
-  23 => 
-  array (
-    'match' => '0AAA 0ABC',
-    'replace' => 'E018',
-  ),
-  24 => 
-  array (
-    'match' => '0AAB 0ABC',
-    'replace' => 'E019',
-  ),
-  25 => 
-  array (
-    'match' => '0AAC 0ABC',
-    'replace' => 'E01A',
-  ),
-  26 => 
-  array (
-    'match' => '0AAD 0ABC',
-    'replace' => 'E01B',
-  ),
-  27 => 
-  array (
-    'match' => '0AAE 0ABC',
-    'replace' => 'E01C',
-  ),
-  28 => 
-  array (
-    'match' => '0AAF 0ABC',
-    'replace' => 'E01D',
-  ),
-  29 => 
-  array (
-    'match' => '0AB0 0ABC',
-    'replace' => 'E01E',
-  ),
-  30 => 
-  array (
-    'match' => '0AB2 0ABC',
-    'replace' => 'E01F',
-  ),
-  31 => 
-  array (
-    'match' => '0AB3 0ABC',
-    'replace' => 'E020',
-  ),
-  32 => 
-  array (
-    'match' => '0AB5 0ABC',
-    'replace' => 'E021',
-  ),
-  33 => 
-  array (
-    'match' => '0AB6 0ABC',
-    'replace' => 'E022',
-  ),
-  34 => 
-  array (
-    'match' => '0AB7 0ABC',
-    'replace' => 'E023',
-  ),
-  35 => 
-  array (
-    'match' => '0AB8 0ABC',
-    'replace' => 'E024',
-  ),
-  36 => 
-  array (
-    'match' => '0AB9 0ABC',
-    'replace' => 'E025',
-  ),
-  37 => 
-  array (
-    'match' => 'E002 0ABC',
-    'replace' => 'E026',
-  ),
-  38 => 
-  array (
-    'match' => 'E003 0ABC',
-    'replace' => 'E027',
-  ),
-  39 => 
-  array (
-    'match' => '((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E)) 0ACD 0AB0',
-    'replace' => '\\1 E05D',
-  ),
-  40 => 
-  array (
-    'match' => '(25CC) 0ACD 0AB0',
-    'replace' => '\\1 E05D',
-  ),
-  41 => 
-  array (
-    'match' => '(200D) 0ACD 0AB0',
-    'replace' => '\\1 E05D',
-  ),
-  42 => 
-  array (
-    'match' => '(0020) 0ACD 0AB0',
-    'replace' => '\\1 E05D',
-  ),
-  43 => 
-  array (
-    'match' => '((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E)) 0AB0 0ACD',
-    'replace' => '\\1 E032',
-  ),
-  44 => 
-  array (
-    'match' => '((0ABE|0AC0|0AC1|0AC2|0AC3|0AC4|0AC5|0AC7|0AC8|0AC9|0ACB|0ACC)) 0AB0 0ACD',
-    'replace' => '\\1 E032',
-  ),
-  45 => 
-  array (
-    'match' => '(E05D) 0AB0 0ACD',
-    'replace' => '\\1 E032',
-  ),
-  46 => 
-  array (
-    'match' => '(25CC) 0AB0 0ACD',
-    'replace' => '\\1 E032',
-  ),
-  47 => 
-  array (
-    'match' => '0A95 E05D',
-    'replace' => 'E05E',
-  ),
-  48 => 
-  array (
-    'match' => '0A96 E05D',
-    'replace' => 'E05F',
-  ),
-  49 => 
-  array (
-    'match' => '0A97 E05D',
-    'replace' => 'E060',
-  ),
-  50 => 
-  array (
-    'match' => '0A98 E05D',
-    'replace' => 'E061',
-  ),
-  51 => 
-  array (
-    'match' => '0A99 E05D',
-    'replace' => 'E062',
-  ),
-  52 => 
-  array (
-    'match' => '0A9A E05D',
-    'replace' => 'E063',
-  ),
-  53 => 
-  array (
-    'match' => '0A9B E05D',
-    'replace' => 'E064',
-  ),
-  54 => 
-  array (
-    'match' => '0A9C E05D',
-    'replace' => 'E065',
-  ),
-  55 => 
-  array (
-    'match' => '0A9D E05D',
-    'replace' => 'E066',
-  ),
-  56 => 
-  array (
-    'match' => '0A9E E05D',
-    'replace' => 'E067',
-  ),
-  57 => 
-  array (
-    'match' => '0A9F E05D',
-    'replace' => 'E068',
-  ),
-  58 => 
-  array (
-    'match' => '0AA0 E05D',
-    'replace' => 'E069',
-  ),
-  59 => 
-  array (
-    'match' => '0AA1 E05D',
-    'replace' => 'E06A',
-  ),
-  60 => 
-  array (
-    'match' => '0AA2 E05D',
-    'replace' => 'E06B',
-  ),
-  61 => 
-  array (
-    'match' => '0AA3 E05D',
-    'replace' => 'E06C',
-  ),
-  62 => 
-  array (
-    'match' => '0AA4 E05D',
-    'replace' => 'E06D',
-  ),
-  63 => 
-  array (
-    'match' => '0AA5 E05D',
-    'replace' => 'E06E',
-  ),
-  64 => 
-  array (
-    'match' => '0AA6 E05D',
-    'replace' => 'E06F',
-  ),
-  65 => 
-  array (
-    'match' => '0AA7 E05D',
-    'replace' => 'E070',
-  ),
-  66 => 
-  array (
-    'match' => '0AA8 E05D',
-    'replace' => 'E071',
-  ),
-  67 => 
-  array (
-    'match' => '0AAA E05D',
-    'replace' => 'E072',
-  ),
-  68 => 
-  array (
-    'match' => '0AAB E05D',
-    'replace' => 'E073',
-  ),
-  69 => 
-  array (
-    'match' => '0AAC E05D',
-    'replace' => 'E074',
-  ),
-  70 => 
-  array (
-    'match' => '0AAD E05D',
-    'replace' => 'E075',
-  ),
-  71 => 
-  array (
-    'match' => '0AAE E05D',
-    'replace' => 'E076',
-  ),
-  72 => 
-  array (
-    'match' => '0AAF E05D',
-    'replace' => 'E077',
-  ),
-  73 => 
-  array (
-    'match' => '0AB0 E05D',
-    'replace' => 'E078',
-  ),
-  74 => 
-  array (
-    'match' => '0AB2 E05D',
-    'replace' => 'E079',
-  ),
-  75 => 
-  array (
-    'match' => '0AB3 E05D',
-    'replace' => 'E07A',
-  ),
-  76 => 
-  array (
-    'match' => '0AB5 E05D',
-    'replace' => 'E07B',
-  ),
-  77 => 
-  array (
-    'match' => '0AB6 E05D',
-    'replace' => 'E07C',
-  ),
-  78 => 
-  array (
-    'match' => '0AB7 E05D',
-    'replace' => 'E07D',
-  ),
-  79 => 
-  array (
-    'match' => '0AB8 E05D',
-    'replace' => 'E07E',
-  ),
-  80 => 
-  array (
-    'match' => '0AB9 E05D',
-    'replace' => 'E07F',
-  ),
-  81 => 
-  array (
-    'match' => 'E002 E05D',
-    'replace' => 'E080',
-  ),
-  82 => 
-  array (
-    'match' => 'E003 E05D',
-    'replace' => 'E081',
-  ),
-  83 => 
-  array (
-    'match' => 'E004 E05D',
-    'replace' => 'E082',
-  ),
-  84 => 
-  array (
-    'match' => 'E005 E05D',
-    'replace' => 'E083',
-  ),
-  85 => 
-  array (
-    'match' => 'E006 E05D',
-    'replace' => 'E084',
-  ),
-  86 => 
-  array (
-    'match' => 'E007 E05D',
-    'replace' => 'E085',
-  ),
-  87 => 
-  array (
-    'match' => 'E008 E05D',
-    'replace' => 'E086',
-  ),
-  88 => 
-  array (
-    'match' => 'E009 E05D',
-    'replace' => 'E087',
-  ),
-  89 => 
-  array (
-    'match' => 'E00A E05D',
-    'replace' => 'E088',
-  ),
-  90 => 
-  array (
-    'match' => 'E00B E05D',
-    'replace' => 'E089',
-  ),
-  91 => 
-  array (
-    'match' => 'E00C E05D',
-    'replace' => 'E08A',
-  ),
-  92 => 
-  array (
-    'match' => 'E00D E05D',
-    'replace' => 'E08B',
-  ),
-  93 => 
-  array (
-    'match' => 'E00E E05D',
-    'replace' => 'E08C',
-  ),
-  94 => 
-  array (
-    'match' => 'E00F E05D',
-    'replace' => 'E08D',
-  ),
-  95 => 
-  array (
-    'match' => 'E010 E05D',
-    'replace' => 'E08E',
-  ),
-  96 => 
-  array (
-    'match' => 'E011 E05D',
-    'replace' => 'E08F',
-  ),
-  97 => 
-  array (
-    'match' => 'E012 E05D',
-    'replace' => 'E090',
-  ),
-  98 => 
-  array (
-    'match' => 'E013 E05D',
-    'replace' => 'E091',
-  ),
-  99 => 
-  array (
-    'match' => 'E014 E05D',
-    'replace' => 'E092',
-  ),
-  100 => 
-  array (
-    'match' => 'E015 E05D',
-    'replace' => 'E093',
-  ),
-  101 => 
-  array (
-    'match' => 'E016 E05D',
-    'replace' => 'E094',
-  ),
-  102 => 
-  array (
-    'match' => 'E017 E05D',
-    'replace' => 'E095',
-  ),
-  103 => 
-  array (
-    'match' => 'E018 E05D',
-    'replace' => 'E096',
-  ),
-  104 => 
-  array (
-    'match' => 'E019 E05D',
-    'replace' => 'E097',
-  ),
-  105 => 
-  array (
-    'match' => 'E01A E05D',
-    'replace' => 'E098',
-  ),
-  106 => 
-  array (
-    'match' => 'E01B E05D',
-    'replace' => 'E099',
-  ),
-  107 => 
-  array (
-    'match' => 'E01C E05D',
-    'replace' => 'E09A',
-  ),
-  108 => 
-  array (
-    'match' => 'E01D E05D',
-    'replace' => 'E09B',
-  ),
-  109 => 
-  array (
-    'match' => 'E01E E05D',
-    'replace' => 'E09C',
-  ),
-  110 => 
-  array (
-    'match' => 'E01F E05D',
-    'replace' => 'E09D',
-  ),
-  111 => 
-  array (
-    'match' => 'E020 E05D',
-    'replace' => 'E09E',
-  ),
-  112 => 
-  array (
-    'match' => 'E021 E05D',
-    'replace' => 'E09F',
-  ),
-  113 => 
-  array (
-    'match' => 'E022 E05D',
-    'replace' => 'E0A0',
-  ),
-  114 => 
-  array (
-    'match' => 'E023 E05D',
-    'replace' => 'E0A1',
-  ),
-  115 => 
-  array (
-    'match' => 'E024 E05D',
-    'replace' => 'E0A2',
-  ),
-  116 => 
-  array (
-    'match' => 'E025 E05D',
-    'replace' => 'E0A3',
-  ),
-  117 => 
-  array (
-    'match' => 'E026 E05D',
-    'replace' => 'E0A4',
-  ),
-  118 => 
-  array (
-    'match' => 'E027 E05D',
-    'replace' => 'E0A5',
-  ),
-  119 => 
-  array (
-    'match' => '0A95 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0A6 \\1',
-  ),
-  120 => 
-  array (
-    'match' => '0A96 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0A7 \\1',
-  ),
-  121 => 
-  array (
-    'match' => '0A97 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0A8 \\1',
-  ),
-  122 => 
-  array (
-    'match' => '0A98 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0A9 \\1',
-  ),
-  123 => 
-  array (
-    'match' => '0A99 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0AA \\1',
-  ),
-  124 => 
-  array (
-    'match' => '0A9A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0AB \\1',
-  ),
-  125 => 
-  array (
-    'match' => '0A9B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0AC \\1',
-  ),
-  126 => 
-  array (
-    'match' => '0A9C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0AD \\1',
-  ),
-  127 => 
-  array (
-    'match' => '0A9D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0AE \\1',
-  ),
-  128 => 
-  array (
-    'match' => '0A9E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0AF \\1',
-  ),
-  129 => 
-  array (
-    'match' => '0A9F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B0 \\1',
-  ),
-  130 => 
-  array (
-    'match' => '0AA0 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B1 \\1',
-  ),
-  131 => 
-  array (
-    'match' => '0AA1 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B2 \\1',
-  ),
-  132 => 
-  array (
-    'match' => '0AA2 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B3 \\1',
-  ),
-  133 => 
-  array (
-    'match' => '0AA3 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B4 \\1',
-  ),
-  134 => 
-  array (
-    'match' => '0AA4 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B5 \\1',
-  ),
-  135 => 
-  array (
-    'match' => '0AA5 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B6 \\1',
-  ),
-  136 => 
-  array (
-    'match' => '0AA6 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B7 \\1',
-  ),
-  137 => 
-  array (
-    'match' => '0AA7 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B8 \\1',
-  ),
-  138 => 
-  array (
-    'match' => '0AA8 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0B9 \\1',
-  ),
-  139 => 
-  array (
-    'match' => '0AAA 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0BA \\1',
-  ),
-  140 => 
-  array (
-    'match' => '0AAB 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0BB \\1',
-  ),
-  141 => 
-  array (
-    'match' => '0AAC 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0BC \\1',
-  ),
-  142 => 
-  array (
-    'match' => '0AAD 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0BD \\1',
-  ),
-  143 => 
-  array (
-    'match' => '0AAE 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0BE \\1',
-  ),
-  144 => 
-  array (
-    'match' => '0AAF 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0BF \\1',
-  ),
-  145 => 
-  array (
-    'match' => '0AB0 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C0 \\1',
-  ),
-  146 => 
-  array (
-    'match' => '0AB2 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C1 \\1',
-  ),
-  147 => 
-  array (
-    'match' => '0AB3 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C2 \\1',
-  ),
-  148 => 
-  array (
-    'match' => '0AB5 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C3 \\1',
-  ),
-  149 => 
-  array (
-    'match' => '0AB6 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C4 \\1',
-  ),
-  150 => 
-  array (
-    'match' => '0AB7 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C5 \\1',
-  ),
-  151 => 
-  array (
-    'match' => '0AB8 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C6 \\1',
-  ),
-  152 => 
-  array (
-    'match' => '0AB9 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C7 \\1',
-  ),
-  153 => 
-  array (
-    'match' => 'E002 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C8 \\1',
-  ),
-  154 => 
-  array (
-    'match' => 'E003 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0C9 \\1',
-  ),
-  155 => 
-  array (
-    'match' => 'E004 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0CA \\1',
-  ),
-  156 => 
-  array (
-    'match' => 'E005 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0CB \\1',
-  ),
-  157 => 
-  array (
-    'match' => 'E006 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0CC \\1',
-  ),
-  158 => 
-  array (
-    'match' => 'E007 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0CD \\1',
-  ),
-  159 => 
-  array (
-    'match' => 'E008 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0CE \\1',
-  ),
-  160 => 
-  array (
-    'match' => 'E009 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0CF \\1',
-  ),
-  161 => 
-  array (
-    'match' => 'E00A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D0 \\1',
-  ),
-  162 => 
-  array (
-    'match' => 'E00B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D1 \\1',
-  ),
-  163 => 
-  array (
-    'match' => 'E00C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D2 \\1',
-  ),
-  164 => 
-  array (
-    'match' => 'E00D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D3 \\1',
-  ),
-  165 => 
-  array (
-    'match' => 'E00E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D4 \\1',
-  ),
-  166 => 
-  array (
-    'match' => 'E00F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D5 \\1',
-  ),
-  167 => 
-  array (
-    'match' => 'E010 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D6 \\1',
-  ),
-  168 => 
-  array (
-    'match' => 'E011 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D7 \\1',
-  ),
-  169 => 
-  array (
-    'match' => 'E012 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D8 \\1',
-  ),
-  170 => 
-  array (
-    'match' => 'E013 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0D9 \\1',
-  ),
-  171 => 
-  array (
-    'match' => 'E014 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0DA \\1',
-  ),
-  172 => 
-  array (
-    'match' => 'E015 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0DB \\1',
-  ),
-  173 => 
-  array (
-    'match' => 'E016 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0DC \\1',
-  ),
-  174 => 
-  array (
-    'match' => 'E017 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0DD \\1',
-  ),
-  175 => 
-  array (
-    'match' => 'E018 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0DE \\1',
-  ),
-  176 => 
-  array (
-    'match' => 'E019 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0DF \\1',
-  ),
-  177 => 
-  array (
-    'match' => 'E01A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E0 \\1',
-  ),
-  178 => 
-  array (
-    'match' => 'E01B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E1 \\1',
-  ),
-  179 => 
-  array (
-    'match' => 'E01C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E2 \\1',
-  ),
-  180 => 
-  array (
-    'match' => 'E01D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E3 \\1',
-  ),
-  181 => 
-  array (
-    'match' => 'E01E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E4 \\1',
-  ),
-  182 => 
-  array (
-    'match' => 'E01F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E5 \\1',
-  ),
-  183 => 
-  array (
-    'match' => 'E020 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E6 \\1',
-  ),
-  184 => 
-  array (
-    'match' => 'E021 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E7 \\1',
-  ),
-  185 => 
-  array (
-    'match' => 'E022 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E8 \\1',
-  ),
-  186 => 
-  array (
-    'match' => 'E023 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0E9 \\1',
-  ),
-  187 => 
-  array (
-    'match' => 'E024 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0EA \\1',
-  ),
-  188 => 
-  array (
-    'match' => 'E025 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0EB \\1',
-  ),
-  189 => 
-  array (
-    'match' => 'E026 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0EC \\1',
-  ),
-  190 => 
-  array (
-    'match' => 'E027 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0ED \\1',
-  ),
-  191 => 
-  array (
-    'match' => 'E05E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0EE \\1',
-  ),
-  192 => 
-  array (
-    'match' => 'E05F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0EF \\1',
-  ),
-  193 => 
-  array (
-    'match' => 'E060 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F0 \\1',
-  ),
-  194 => 
-  array (
-    'match' => 'E061 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F1 \\1',
-  ),
-  195 => 
-  array (
-    'match' => 'E062 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F2 \\1',
-  ),
-  196 => 
-  array (
-    'match' => 'E063 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F3 \\1',
-  ),
-  197 => 
-  array (
-    'match' => 'E064 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F4 \\1',
-  ),
-  198 => 
-  array (
-    'match' => 'E065 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F5 \\1',
-  ),
-  199 => 
-  array (
-    'match' => 'E066 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F6 \\1',
-  ),
-  200 => 
-  array (
-    'match' => 'E067 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F7 \\1',
-  ),
-  201 => 
-  array (
-    'match' => 'E068 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F8 \\1',
-  ),
-  202 => 
-  array (
-    'match' => 'E069 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0F9 \\1',
-  ),
-  203 => 
-  array (
-    'match' => 'E06A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0FA \\1',
-  ),
-  204 => 
-  array (
-    'match' => 'E06B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0FB \\1',
-  ),
-  205 => 
-  array (
-    'match' => 'E06C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0FC \\1',
-  ),
-  206 => 
-  array (
-    'match' => 'E06D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0FD \\1',
-  ),
-  207 => 
-  array (
-    'match' => 'E06E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0FE \\1',
-  ),
-  208 => 
-  array (
-    'match' => 'E06F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E0FF \\1',
-  ),
-  209 => 
-  array (
-    'match' => 'E070 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E100 \\1',
-  ),
-  210 => 
-  array (
-    'match' => 'E071 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E101 \\1',
-  ),
-  211 => 
-  array (
-    'match' => 'E072 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E102 \\1',
-  ),
-  212 => 
-  array (
-    'match' => 'E073 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E103 \\1',
-  ),
-  213 => 
-  array (
-    'match' => 'E074 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E104 \\1',
-  ),
-  214 => 
-  array (
-    'match' => 'E075 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E105 \\1',
-  ),
-  215 => 
-  array (
-    'match' => 'E076 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E106 \\1',
-  ),
-  216 => 
-  array (
-    'match' => 'E077 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E107 \\1',
-  ),
-  217 => 
-  array (
-    'match' => 'E078 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E108 \\1',
-  ),
-  218 => 
-  array (
-    'match' => 'E079 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E109 \\1',
-  ),
-  219 => 
-  array (
-    'match' => 'E07A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E10A \\1',
-  ),
-  220 => 
-  array (
-    'match' => 'E07B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E10B \\1',
-  ),
-  221 => 
-  array (
-    'match' => 'E07C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E10C \\1',
-  ),
-  222 => 
-  array (
-    'match' => 'E07D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E10D \\1',
-  ),
-  223 => 
-  array (
-    'match' => 'E07E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E10E \\1',
-  ),
-  224 => 
-  array (
-    'match' => 'E07F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E10F \\1',
-  ),
-  225 => 
-  array (
-    'match' => 'E080 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E110 \\1',
-  ),
-  226 => 
-  array (
-    'match' => 'E081 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E111 \\1',
-  ),
-  227 => 
-  array (
-    'match' => 'E082 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E112 \\1',
-  ),
-  228 => 
-  array (
-    'match' => 'E083 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E113 \\1',
-  ),
-  229 => 
-  array (
-    'match' => 'E084 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E114 \\1',
-  ),
-  230 => 
-  array (
-    'match' => 'E085 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E115 \\1',
-  ),
-  231 => 
-  array (
-    'match' => 'E086 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E116 \\1',
-  ),
-  232 => 
-  array (
-    'match' => 'E087 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E117 \\1',
-  ),
-  233 => 
-  array (
-    'match' => 'E088 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E118 \\1',
-  ),
-  234 => 
-  array (
-    'match' => 'E089 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E119 \\1',
-  ),
-  235 => 
-  array (
-    'match' => 'E08A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E11A \\1',
-  ),
-  236 => 
-  array (
-    'match' => 'E08B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E11B \\1',
-  ),
-  237 => 
-  array (
-    'match' => 'E08C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E11C \\1',
-  ),
-  238 => 
-  array (
-    'match' => 'E08D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E11D \\1',
-  ),
-  239 => 
-  array (
-    'match' => 'E08E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E11E \\1',
-  ),
-  240 => 
-  array (
-    'match' => 'E08F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E11F \\1',
-  ),
-  241 => 
-  array (
-    'match' => 'E090 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E120 \\1',
-  ),
-  242 => 
-  array (
-    'match' => 'E091 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E121 \\1',
-  ),
-  243 => 
-  array (
-    'match' => 'E092 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E122 \\1',
-  ),
-  244 => 
-  array (
-    'match' => 'E093 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E123 \\1',
-  ),
-  245 => 
-  array (
-    'match' => 'E094 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E124 \\1',
-  ),
-  246 => 
-  array (
-    'match' => 'E095 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E125 \\1',
-  ),
-  247 => 
-  array (
-    'match' => 'E096 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E126 \\1',
-  ),
-  248 => 
-  array (
-    'match' => 'E097 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E127 \\1',
-  ),
-  249 => 
-  array (
-    'match' => 'E098 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E128 \\1',
-  ),
-  250 => 
-  array (
-    'match' => 'E099 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E129 \\1',
-  ),
-  251 => 
-  array (
-    'match' => 'E09A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E12A \\1',
-  ),
-  252 => 
-  array (
-    'match' => 'E09B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E12B \\1',
-  ),
-  253 => 
-  array (
-    'match' => 'E09C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E12C \\1',
-  ),
-  254 => 
-  array (
-    'match' => 'E09D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E12D \\1',
-  ),
-  255 => 
-  array (
-    'match' => 'E09E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E12E \\1',
-  ),
-  256 => 
-  array (
-    'match' => 'E09F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E12F \\1',
-  ),
-  257 => 
-  array (
-    'match' => 'E0A0 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E130 \\1',
-  ),
-  258 => 
-  array (
-    'match' => 'E0A1 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E131 \\1',
-  ),
-  259 => 
-  array (
-    'match' => 'E0A2 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E132 \\1',
-  ),
-  260 => 
-  array (
-    'match' => 'E0A3 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E133 \\1',
-  ),
-  261 => 
-  array (
-    'match' => 'E0A4 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E134 \\1',
-  ),
-  262 => 
-  array (
-    'match' => 'E0A5 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
-    'replace' => 'E135 \\1',
-  ),
-  263 => 
-  array (
-    'match' => '0A95 0ACD (200D)',
-    'replace' => 'E0A6 \\1',
-  ),
-  264 => 
-  array (
-    'match' => '0A96 0ACD (200D)',
-    'replace' => 'E0A7 \\1',
-  ),
-  265 => 
-  array (
-    'match' => '0A97 0ACD (200D)',
-    'replace' => 'E0A8 \\1',
-  ),
-  266 => 
-  array (
-    'match' => '0A98 0ACD (200D)',
-    'replace' => 'E0A9 \\1',
-  ),
-  267 => 
-  array (
-    'match' => '0A99 0ACD (200D)',
-    'replace' => 'E0AA \\1',
-  ),
-  268 => 
-  array (
-    'match' => '0A9A 0ACD (200D)',
-    'replace' => 'E0AB \\1',
-  ),
-  269 => 
-  array (
-    'match' => '0A9B 0ACD (200D)',
-    'replace' => 'E0AC \\1',
-  ),
-  270 => 
-  array (
-    'match' => '0A9C 0ACD (200D)',
-    'replace' => 'E0AD \\1',
-  ),
-  271 => 
-  array (
-    'match' => '0A9D 0ACD (200D)',
-    'replace' => 'E0AE \\1',
-  ),
-  272 => 
-  array (
-    'match' => '0A9E 0ACD (200D)',
-    'replace' => 'E0AF \\1',
-  ),
-  273 => 
-  array (
-    'match' => '0A9F 0ACD (200D)',
-    'replace' => 'E0B0 \\1',
-  ),
-  274 => 
-  array (
-    'match' => '0AA0 0ACD (200D)',
-    'replace' => 'E0B1 \\1',
-  ),
-  275 => 
-  array (
-    'match' => '0AA1 0ACD (200D)',
-    'replace' => 'E0B2 \\1',
-  ),
-  276 => 
-  array (
-    'match' => '0AA2 0ACD (200D)',
-    'replace' => 'E0B3 \\1',
-  ),
-  277 => 
-  array (
-    'match' => '0AA3 0ACD (200D)',
-    'replace' => 'E0B4 \\1',
-  ),
-  278 => 
-  array (
-    'match' => '0AA4 0ACD (200D)',
-    'replace' => 'E0B5 \\1',
-  ),
-  279 => 
-  array (
-    'match' => '0AA5 0ACD (200D)',
-    'replace' => 'E0B6 \\1',
-  ),
-  280 => 
-  array (
-    'match' => '0AA6 0ACD (200D)',
-    'replace' => 'E0B7 \\1',
-  ),
-  281 => 
-  array (
-    'match' => '0AA7 0ACD (200D)',
-    'replace' => 'E0B8 \\1',
-  ),
-  282 => 
-  array (
-    'match' => '0AA8 0ACD (200D)',
-    'replace' => 'E0B9 \\1',
-  ),
-  283 => 
-  array (
-    'match' => '0AAA 0ACD (200D)',
-    'replace' => 'E0BA \\1',
-  ),
-  284 => 
-  array (
-    'match' => '0AAB 0ACD (200D)',
-    'replace' => 'E0BB \\1',
-  ),
-  285 => 
-  array (
-    'match' => '0AAC 0ACD (200D)',
-    'replace' => 'E0BC \\1',
-  ),
-  286 => 
-  array (
-    'match' => '0AAD 0ACD (200D)',
-    'replace' => 'E0BD \\1',
-  ),
-  287 => 
-  array (
-    'match' => '0AAE 0ACD (200D)',
-    'replace' => 'E0BE \\1',
-  ),
-  288 => 
-  array (
-    'match' => '0AAF 0ACD (200D)',
-    'replace' => 'E0BF \\1',
-  ),
-  289 => 
-  array (
-    'match' => '0AB0 0ACD (200D)',
-    'replace' => 'E0C0 \\1',
-  ),
-  290 => 
-  array (
-    'match' => '0AB2 0ACD (200D)',
-    'replace' => 'E0C1 \\1',
-  ),
-  291 => 
-  array (
-    'match' => '0AB3 0ACD (200D)',
-    'replace' => 'E0C2 \\1',
-  ),
-  292 => 
-  array (
-    'match' => '0AB5 0ACD (200D)',
-    'replace' => 'E0C3 \\1',
-  ),
-  293 => 
-  array (
-    'match' => '0AB6 0ACD (200D)',
-    'replace' => 'E0C4 \\1',
-  ),
-  294 => 
-  array (
-    'match' => '0AB7 0ACD (200D)',
-    'replace' => 'E0C5 \\1',
-  ),
-  295 => 
-  array (
-    'match' => '0AB8 0ACD (200D)',
-    'replace' => 'E0C6 \\1',
-  ),
-  296 => 
-  array (
-    'match' => '0AB9 0ACD (200D)',
-    'replace' => 'E0C7 \\1',
-  ),
-  297 => 
-  array (
-    'match' => 'E002 0ACD (200D)',
-    'replace' => 'E0C8 \\1',
-  ),
-  298 => 
-  array (
-    'match' => 'E003 0ACD (200D)',
-    'replace' => 'E0C9 \\1',
-  ),
-  299 => 
-  array (
-    'match' => 'E004 0ACD (200D)',
-    'replace' => 'E0CA \\1',
-  ),
-  300 => 
-  array (
-    'match' => 'E005 0ACD (200D)',
-    'replace' => 'E0CB \\1',
-  ),
-  301 => 
-  array (
-    'match' => 'E006 0ACD (200D)',
-    'replace' => 'E0CC \\1',
-  ),
-  302 => 
-  array (
-    'match' => 'E007 0ACD (200D)',
-    'replace' => 'E0CD \\1',
-  ),
-  303 => 
-  array (
-    'match' => 'E008 0ACD (200D)',
-    'replace' => 'E0CE \\1',
-  ),
-  304 => 
-  array (
-    'match' => 'E009 0ACD (200D)',
-    'replace' => 'E0CF \\1',
-  ),
-  305 => 
-  array (
-    'match' => 'E00A 0ACD (200D)',
-    'replace' => 'E0D0 \\1',
-  ),
-  306 => 
-  array (
-    'match' => 'E00B 0ACD (200D)',
-    'replace' => 'E0D1 \\1',
-  ),
-  307 => 
-  array (
-    'match' => 'E00C 0ACD (200D)',
-    'replace' => 'E0D2 \\1',
-  ),
-  308 => 
-  array (
-    'match' => 'E00D 0ACD (200D)',
-    'replace' => 'E0D3 \\1',
-  ),
-  309 => 
-  array (
-    'match' => 'E00E 0ACD (200D)',
-    'replace' => 'E0D4 \\1',
-  ),
-  310 => 
-  array (
-    'match' => 'E00F 0ACD (200D)',
-    'replace' => 'E0D5 \\1',
-  ),
-  311 => 
-  array (
-    'match' => 'E010 0ACD (200D)',
-    'replace' => 'E0D6 \\1',
-  ),
-  312 => 
-  array (
-    'match' => 'E011 0ACD (200D)',
-    'replace' => 'E0D7 \\1',
-  ),
-  313 => 
-  array (
-    'match' => 'E012 0ACD (200D)',
-    'replace' => 'E0D8 \\1',
-  ),
-  314 => 
-  array (
-    'match' => 'E013 0ACD (200D)',
-    'replace' => 'E0D9 \\1',
-  ),
-  315 => 
-  array (
-    'match' => 'E014 0ACD (200D)',
-    'replace' => 'E0DA \\1',
-  ),
-  316 => 
-  array (
-    'match' => 'E015 0ACD (200D)',
-    'replace' => 'E0DB \\1',
-  ),
-  317 => 
-  array (
-    'match' => 'E016 0ACD (200D)',
-    'replace' => 'E0DC \\1',
-  ),
-  318 => 
-  array (
-    'match' => 'E017 0ACD (200D)',
-    'replace' => 'E0DD \\1',
-  ),
-  319 => 
-  array (
-    'match' => 'E018 0ACD (200D)',
-    'replace' => 'E0DE \\1',
-  ),
-  320 => 
-  array (
-    'match' => 'E019 0ACD (200D)',
-    'replace' => 'E0DF \\1',
-  ),
-  321 => 
-  array (
-    'match' => 'E01A 0ACD (200D)',
-    'replace' => 'E0E0 \\1',
-  ),
-  322 => 
-  array (
-    'match' => 'E01B 0ACD (200D)',
-    'replace' => 'E0E1 \\1',
-  ),
-  323 => 
-  array (
-    'match' => 'E01C 0ACD (200D)',
-    'replace' => 'E0E2 \\1',
-  ),
-  324 => 
-  array (
-    'match' => 'E01D 0ACD (200D)',
-    'replace' => 'E0E3 \\1',
-  ),
-  325 => 
-  array (
-    'match' => 'E01E 0ACD (200D)',
-    'replace' => 'E0E4 \\1',
-  ),
-  326 => 
-  array (
-    'match' => 'E01F 0ACD (200D)',
-    'replace' => 'E0E5 \\1',
-  ),
-  327 => 
-  array (
-    'match' => 'E020 0ACD (200D)',
-    'replace' => 'E0E6 \\1',
-  ),
-  328 => 
-  array (
-    'match' => 'E021 0ACD (200D)',
-    'replace' => 'E0E7 \\1',
-  ),
-  329 => 
-  array (
-    'match' => 'E022 0ACD (200D)',
-    'replace' => 'E0E8 \\1',
-  ),
-  330 => 
-  array (
-    'match' => 'E023 0ACD (200D)',
-    'replace' => 'E0E9 \\1',
-  ),
-  331 => 
-  array (
-    'match' => 'E024 0ACD (200D)',
-    'replace' => 'E0EA \\1',
-  ),
-  332 => 
-  array (
-    'match' => 'E025 0ACD (200D)',
-    'replace' => 'E0EB \\1',
-  ),
-  333 => 
-  array (
-    'match' => 'E026 0ACD (200D)',
-    'replace' => 'E0EC \\1',
-  ),
-  334 => 
-  array (
-    'match' => 'E027 0ACD (200D)',
-    'replace' => 'E0ED \\1',
-  ),
-  335 => 
-  array (
-    'match' => 'E05E 0ACD (200D)',
-    'replace' => 'E0EE \\1',
-  ),
-  336 => 
-  array (
-    'match' => 'E05F 0ACD (200D)',
-    'replace' => 'E0EF \\1',
-  ),
-  337 => 
-  array (
-    'match' => 'E060 0ACD (200D)',
-    'replace' => 'E0F0 \\1',
-  ),
-  338 => 
-  array (
-    'match' => 'E061 0ACD (200D)',
-    'replace' => 'E0F1 \\1',
-  ),
-  339 => 
-  array (
-    'match' => 'E062 0ACD (200D)',
-    'replace' => 'E0F2 \\1',
-  ),
-  340 => 
-  array (
-    'match' => 'E063 0ACD (200D)',
-    'replace' => 'E0F3 \\1',
-  ),
-  341 => 
-  array (
-    'match' => 'E064 0ACD (200D)',
-    'replace' => 'E0F4 \\1',
-  ),
-  342 => 
-  array (
-    'match' => 'E065 0ACD (200D)',
-    'replace' => 'E0F5 \\1',
-  ),
-  343 => 
-  array (
-    'match' => 'E066 0ACD (200D)',
-    'replace' => 'E0F6 \\1',
-  ),
-  344 => 
-  array (
-    'match' => 'E067 0ACD (200D)',
-    'replace' => 'E0F7 \\1',
-  ),
-  345 => 
-  array (
-    'match' => 'E068 0ACD (200D)',
-    'replace' => 'E0F8 \\1',
-  ),
-  346 => 
-  array (
-    'match' => 'E069 0ACD (200D)',
-    'replace' => 'E0F9 \\1',
-  ),
-  347 => 
-  array (
-    'match' => 'E06A 0ACD (200D)',
-    'replace' => 'E0FA \\1',
-  ),
-  348 => 
-  array (
-    'match' => 'E06B 0ACD (200D)',
-    'replace' => 'E0FB \\1',
-  ),
-  349 => 
-  array (
-    'match' => 'E06C 0ACD (200D)',
-    'replace' => 'E0FC \\1',
-  ),
-  350 => 
-  array (
-    'match' => 'E06D 0ACD (200D)',
-    'replace' => 'E0FD \\1',
-  ),
-  351 => 
-  array (
-    'match' => 'E06E 0ACD (200D)',
-    'replace' => 'E0FE \\1',
-  ),
-  352 => 
-  array (
-    'match' => 'E06F 0ACD (200D)',
-    'replace' => 'E0FF \\1',
-  ),
-  353 => 
-  array (
-    'match' => 'E070 0ACD (200D)',
-    'replace' => 'E100 \\1',
-  ),
-  354 => 
-  array (
-    'match' => 'E071 0ACD (200D)',
-    'replace' => 'E101 \\1',
-  ),
-  355 => 
-  array (
-    'match' => 'E072 0ACD (200D)',
-    'replace' => 'E102 \\1',
-  ),
-  356 => 
-  array (
-    'match' => 'E073 0ACD (200D)',
-    'replace' => 'E103 \\1',
-  ),
-  357 => 
-  array (
-    'match' => 'E074 0ACD (200D)',
-    'replace' => 'E104 \\1',
-  ),
-  358 => 
-  array (
-    'match' => 'E075 0ACD (200D)',
-    'replace' => 'E105 \\1',
-  ),
-  359 => 
-  array (
-    'match' => 'E076 0ACD (200D)',
-    'replace' => 'E106 \\1',
-  ),
-  360 => 
-  array (
-    'match' => 'E077 0ACD (200D)',
-    'replace' => 'E107 \\1',
-  ),
-  361 => 
-  array (
-    'match' => 'E078 0ACD (200D)',
-    'replace' => 'E108 \\1',
-  ),
-  362 => 
-  array (
-    'match' => 'E079 0ACD (200D)',
-    'replace' => 'E109 \\1',
-  ),
-  363 => 
-  array (
-    'match' => 'E07A 0ACD (200D)',
-    'replace' => 'E10A \\1',
-  ),
-  364 => 
-  array (
-    'match' => 'E07B 0ACD (200D)',
-    'replace' => 'E10B \\1',
-  ),
-  365 => 
-  array (
-    'match' => 'E07C 0ACD (200D)',
-    'replace' => 'E10C \\1',
-  ),
-  366 => 
-  array (
-    'match' => 'E07D 0ACD (200D)',
-    'replace' => 'E10D \\1',
-  ),
-  367 => 
-  array (
-    'match' => 'E07E 0ACD (200D)',
-    'replace' => 'E10E \\1',
-  ),
-  368 => 
-  array (
-    'match' => 'E07F 0ACD (200D)',
-    'replace' => 'E10F \\1',
-  ),
-  369 => 
-  array (
-    'match' => 'E080 0ACD (200D)',
-    'replace' => 'E110 \\1',
-  ),
-  370 => 
-  array (
-    'match' => 'E081 0ACD (200D)',
-    'replace' => 'E111 \\1',
-  ),
-  371 => 
-  array (
-    'match' => 'E082 0ACD (200D)',
-    'replace' => 'E112 \\1',
-  ),
-  372 => 
-  array (
-    'match' => 'E083 0ACD (200D)',
-    'replace' => 'E113 \\1',
-  ),
-  373 => 
-  array (
-    'match' => 'E084 0ACD (200D)',
-    'replace' => 'E114 \\1',
-  ),
-  374 => 
-  array (
-    'match' => 'E085 0ACD (200D)',
-    'replace' => 'E115 \\1',
-  ),
-  375 => 
-  array (
-    'match' => 'E086 0ACD (200D)',
-    'replace' => 'E116 \\1',
-  ),
-  376 => 
-  array (
-    'match' => 'E087 0ACD (200D)',
-    'replace' => 'E117 \\1',
-  ),
-  377 => 
-  array (
-    'match' => 'E088 0ACD (200D)',
-    'replace' => 'E118 \\1',
-  ),
-  378 => 
-  array (
-    'match' => 'E089 0ACD (200D)',
-    'replace' => 'E119 \\1',
-  ),
-  379 => 
-  array (
-    'match' => 'E08A 0ACD (200D)',
-    'replace' => 'E11A \\1',
-  ),
-  380 => 
-  array (
-    'match' => 'E08B 0ACD (200D)',
-    'replace' => 'E11B \\1',
-  ),
-  381 => 
-  array (
-    'match' => 'E08C 0ACD (200D)',
-    'replace' => 'E11C \\1',
-  ),
-  382 => 
-  array (
-    'match' => 'E08D 0ACD (200D)',
-    'replace' => 'E11D \\1',
-  ),
-  383 => 
-  array (
-    'match' => 'E08E 0ACD (200D)',
-    'replace' => 'E11E \\1',
-  ),
-  384 => 
-  array (
-    'match' => 'E08F 0ACD (200D)',
-    'replace' => 'E11F \\1',
-  ),
-  385 => 
-  array (
-    'match' => 'E090 0ACD (200D)',
-    'replace' => 'E120 \\1',
-  ),
-  386 => 
-  array (
-    'match' => 'E091 0ACD (200D)',
-    'replace' => 'E121 \\1',
-  ),
-  387 => 
-  array (
-    'match' => 'E092 0ACD (200D)',
-    'replace' => 'E122 \\1',
-  ),
-  388 => 
-  array (
-    'match' => 'E093 0ACD (200D)',
-    'replace' => 'E123 \\1',
-  ),
-  389 => 
-  array (
-    'match' => 'E094 0ACD (200D)',
-    'replace' => 'E124 \\1',
-  ),
-  390 => 
-  array (
-    'match' => 'E095 0ACD (200D)',
-    'replace' => 'E125 \\1',
-  ),
-  391 => 
-  array (
-    'match' => 'E096 0ACD (200D)',
-    'replace' => 'E126 \\1',
-  ),
-  392 => 
-  array (
-    'match' => 'E097 0ACD (200D)',
-    'replace' => 'E127 \\1',
-  ),
-  393 => 
-  array (
-    'match' => 'E098 0ACD (200D)',
-    'replace' => 'E128 \\1',
-  ),
-  394 => 
-  array (
-    'match' => 'E099 0ACD (200D)',
-    'replace' => 'E129 \\1',
-  ),
-  395 => 
-  array (
-    'match' => 'E09A 0ACD (200D)',
-    'replace' => 'E12A \\1',
-  ),
-  396 => 
-  array (
-    'match' => 'E09B 0ACD (200D)',
-    'replace' => 'E12B \\1',
-  ),
-  397 => 
-  array (
-    'match' => 'E09C 0ACD (200D)',
-    'replace' => 'E12C \\1',
-  ),
-  398 => 
-  array (
-    'match' => 'E09D 0ACD (200D)',
-    'replace' => 'E12D \\1',
-  ),
-  399 => 
-  array (
-    'match' => 'E09E 0ACD (200D)',
-    'replace' => 'E12E \\1',
-  ),
-  400 => 
-  array (
-    'match' => 'E09F 0ACD (200D)',
-    'replace' => 'E12F \\1',
-  ),
-  401 => 
-  array (
-    'match' => 'E0A0 0ACD (200D)',
-    'replace' => 'E130 \\1',
-  ),
-  402 => 
-  array (
-    'match' => 'E0A1 0ACD (200D)',
-    'replace' => 'E131 \\1',
-  ),
-  403 => 
-  array (
-    'match' => 'E0A2 0ACD (200D)',
-    'replace' => 'E132 \\1',
-  ),
-  404 => 
-  array (
-    'match' => 'E0A3 0ACD (200D)',
-    'replace' => 'E133 \\1',
-  ),
-  405 => 
-  array (
-    'match' => 'E0A4 0ACD (200D)',
-    'replace' => 'E134 \\1',
-  ),
-  406 => 
-  array (
-    'match' => 'E0A5 0ACD (200D)',
-    'replace' => 'E135 \\1',
-  ),
-  407 => 
-  array (
-    'match' => 'E0A6 E0A6',
-    'replace' => 'E221',
-  ),
-  408 => 
-  array (
-    'match' => 'E0B7 E0A8',
-    'replace' => 'E223',
-  ),
-  409 => 
-  array (
-    'match' => 'E0C6 E0B5',
-    'replace' => 'E222',
-  ),
-  410 => 
-  array (
-    'match' => 'E0AA 0A95',
-    'replace' => 'E136',
-  ),
-  411 => 
-  array (
-    'match' => 'E0AA 0A96',
-    'replace' => 'E137',
-  ),
-  412 => 
-  array (
-    'match' => 'E0AA 0A97',
-    'replace' => 'E138',
-  ),
-  413 => 
-  array (
-    'match' => 'E0AA 0A98',
-    'replace' => 'E139',
-  ),
-  414 => 
-  array (
-    'match' => 'E0AA 0AAE',
-    'replace' => 'E13A',
-  ),
-  415 => 
-  array (
-    'match' => 'E0AA 0AB5',
-    'replace' => 'E13B',
-  ),
-  416 => 
-  array (
-    'match' => 'E0AA E002',
-    'replace' => 'E13C',
-  ),
-  417 => 
-  array (
-    'match' => 'E0AC 0AB5',
-    'replace' => 'E13D',
-  ),
-  418 => 
-  array (
-    'match' => 'E0B0 0A9F',
-    'replace' => 'E13E',
-  ),
-  419 => 
-  array (
-    'match' => 'E0B0 0AA0',
-    'replace' => 'E13F',
-  ),
-  420 => 
-  array (
-    'match' => 'E0B1 0AA0',
-    'replace' => 'E140',
-  ),
-  421 => 
-  array (
-    'match' => 'E0B2 0AA1',
-    'replace' => 'E141',
-  ),
-  422 => 
-  array (
-    'match' => 'E0B2 0AA2',
-    'replace' => 'E142',
-  ),
-  423 => 
-  array (
-    'match' => 'E0B3 0AA2',
-    'replace' => 'E143',
-  ),
-  424 => 
-  array (
-    'match' => 'E0B7 0A97',
-    'replace' => 'E145',
-  ),
-  425 => 
-  array (
-    'match' => 'E0B7 E060',
-    'replace' => 'E146',
-  ),
-  426 => 
-  array (
-    'match' => 'E0B7 0A98',
-    'replace' => 'E147',
-  ),
-  427 => 
-  array (
-    'match' => 'E0B7 0AA8',
-    'replace' => 'E148',
-  ),
-  428 => 
-  array (
-    'match' => 'E0B7 0AA7',
-    'replace' => 'E149',
-  ),
-  429 => 
-  array (
-    'match' => 'E0B7 0AB5',
-    'replace' => 'E14A',
-  ),
-  430 => 
-  array (
-    'match' => 'E0B7 0AAC',
-    'replace' => 'E14B',
-  ),
-  431 => 
-  array (
-    'match' => 'E0B7 0AAE',
-    'replace' => 'E14C',
-  ),
-  432 => 
-  array (
-    'match' => 'E0B7 0AB2',
-    'replace' => 'E14D',
-  ),
-  433 => 
-  array (
-    'match' => 'E0B7 0AA6',
-    'replace' => 'E14E',
-  ),
-  434 => 
-  array (
-    'match' => 'E0C7 0AA8',
-    'replace' => 'E14F',
-  ),
-  435 => 
-  array (
-    'match' => 'E0C7 0AA3',
-    'replace' => 'E150',
-  ),
-  436 => 
-  array (
-    'match' => 'E0C7 0AAF',
-    'replace' => 'E151',
-  ),
-  437 => 
-  array (
-    'match' => 'E0C7 0AB2',
-    'replace' => 'E152',
-  ),
-  438 => 
-  array (
-    'match' => 'E0C7 0AB5',
-    'replace' => 'E153',
-  ),
-  439 => 
-  array (
-    'match' => 'E0C7 0AAE',
-    'replace' => 'E154',
-  ),
-  440 => 
-  array (
-    'match' => 'E0AF 0A9A',
-    'replace' => 'E155',
-  ),
-  441 => 
-  array (
-    'match' => 'E0AF 0A9C',
-    'replace' => 'E156',
-  ),
-  442 => 
-  array (
-    'match' => 'E0B9 0AA8',
-    'replace' => 'E157',
-  ),
-  443 => 
-  array (
-    'match' => 'E0C4 0AA8',
-    'replace' => 'E158',
-  ),
-  444 => 
-  array (
-    'match' => 'E0C4 0AB5',
-    'replace' => 'E159',
-  ),
-  445 => 
-  array (
-    'match' => 'E0C4 0A9A',
-    'replace' => 'E15A',
-  ),
-  446 => 
-  array (
-    'match' => 'E0B5 0AA4',
-    'replace' => 'E15B',
-  ),
-  447 => 
-  array (
-    'match' => 'E0C6 E06D',
-    'replace' => 'E15C',
-  ),
-  448 => 
-  array (
-    'match' => 'E0B7 0AAF',
-    'replace' => 'E15D',
-  ),
-  449 => 
-  array (
-    'match' => 'E0FF 0AAF',
-    'replace' => 'E15E',
-  ),
-  450 => 
-  array (
-    'match' => 'E0A6 0A95',
-    'replace' => 'E21F',
-  ),
-  451 => 
-  array (
-    'match' => 'E0A6 E05E',
-    'replace' => 'E220',
-  ),
-  452 => 
-  array (
-    'match' => 'E163',
-    'replace' => '0ACD',
-  ),
-  453 => 
-  array (
-    'match' => 'E0A6 200D',
-    'replace' => 'E0A6',
-  ),
-  454 => 
-  array (
-    'match' => 'E0A7 200D',
-    'replace' => 'E0A7',
-  ),
-  455 => 
-  array (
-    'match' => 'E0A8 200D',
-    'replace' => 'E0A8',
-  ),
-  456 => 
-  array (
-    'match' => 'E0A9 200D',
-    'replace' => 'E0A9',
-  ),
-  457 => 
-  array (
-    'match' => 'E0AA 200D',
-    'replace' => 'E0AA',
-  ),
-  458 => 
-  array (
-    'match' => 'E0AB 200D',
-    'replace' => 'E0AB',
-  ),
-  459 => 
-  array (
-    'match' => 'E0AC 200D',
-    'replace' => 'E0AC',
-  ),
-  460 => 
-  array (
-    'match' => 'E0AD 200D',
-    'replace' => 'E0AD',
-  ),
-  461 => 
-  array (
-    'match' => 'E0AE 200D',
-    'replace' => 'E0AE',
-  ),
-  462 => 
-  array (
-    'match' => 'E0AF 200D',
-    'replace' => 'E0AF',
-  ),
-  463 => 
-  array (
-    'match' => 'E0B0 200D',
-    'replace' => 'E0B0',
-  ),
-  464 => 
-  array (
-    'match' => 'E0B1 200D',
-    'replace' => 'E0B1',
-  ),
-  465 => 
-  array (
-    'match' => 'E0B2 200D',
-    'replace' => 'E0B2',
-  ),
-  466 => 
-  array (
-    'match' => 'E0B3 200D',
-    'replace' => 'E0B3',
-  ),
-  467 => 
-  array (
-    'match' => 'E0B4 200D',
-    'replace' => 'E0B4',
-  ),
-  468 => 
-  array (
-    'match' => 'E0B5 200D',
-    'replace' => 'E0B5',
-  ),
-  469 => 
-  array (
-    'match' => 'E0B6 200D',
-    'replace' => 'E0B6',
-  ),
-  470 => 
-  array (
-    'match' => 'E0B7 200D',
-    'replace' => 'E0B7',
-  ),
-  471 => 
-  array (
-    'match' => 'E0B8 200D',
-    'replace' => 'E0B8',
-  ),
-  472 => 
-  array (
-    'match' => 'E0B9 200D',
-    'replace' => 'E0B9',
-  ),
-  473 => 
-  array (
-    'match' => 'E0BA 200D',
-    'replace' => 'E0BA',
-  ),
-  474 => 
-  array (
-    'match' => 'E0BB 200D',
-    'replace' => 'E0BB',
-  ),
-  475 => 
-  array (
-    'match' => 'E0BC 200D',
-    'replace' => 'E0BC',
-  ),
-  476 => 
-  array (
-    'match' => 'E0BD 200D',
-    'replace' => 'E0BD',
-  ),
-  477 => 
-  array (
-    'match' => 'E0BE 200D',
-    'replace' => 'E0BE',
-  ),
-  478 => 
-  array (
-    'match' => 'E0BF 200D',
-    'replace' => 'E0BF',
-  ),
-  479 => 
-  array (
-    'match' => 'E0C0 200D',
-    'replace' => 'E0C0',
-  ),
-  480 => 
-  array (
-    'match' => 'E0C1 200D',
-    'replace' => 'E0C1',
-  ),
-  481 => 
-  array (
-    'match' => 'E0C2 200D',
-    'replace' => 'E0C2',
-  ),
-  482 => 
-  array (
-    'match' => 'E0C3 200D',
-    'replace' => 'E0C3',
-  ),
-  483 => 
-  array (
-    'match' => 'E0C4 200D',
-    'replace' => 'E0C4',
-  ),
-  484 => 
-  array (
-    'match' => 'E0C5 200D',
-    'replace' => 'E0C5',
-  ),
-  485 => 
-  array (
-    'match' => 'E0C6 200D',
-    'replace' => 'E0C6',
-  ),
-  486 => 
-  array (
-    'match' => 'E0C7 200D',
-    'replace' => 'E0C7',
-  ),
-  487 => 
-  array (
-    'match' => 'E0C8 200D',
-    'replace' => 'E0C8',
-  ),
-  488 => 
-  array (
-    'match' => 'E0C9 200D',
-    'replace' => 'E0C9',
-  ),
-  489 => 
-  array (
-    'match' => 'E0CA 200D',
-    'replace' => 'E0CA',
-  ),
-  490 => 
-  array (
-    'match' => 'E0CB 200D',
-    'replace' => 'E0CB',
-  ),
-  491 => 
-  array (
-    'match' => 'E0CC 200D',
-    'replace' => 'E0CC',
-  ),
-  492 => 
-  array (
-    'match' => 'E0CD 200D',
-    'replace' => 'E0CD',
-  ),
-  493 => 
-  array (
-    'match' => 'E0CE 200D',
-    'replace' => 'E0CE',
-  ),
-  494 => 
-  array (
-    'match' => 'E0CF 200D',
-    'replace' => 'E0CF',
-  ),
-  495 => 
-  array (
-    'match' => 'E0D0 200D',
-    'replace' => 'E0D0',
-  ),
-  496 => 
-  array (
-    'match' => 'E0D1 200D',
-    'replace' => 'E0D1',
-  ),
-  497 => 
-  array (
-    'match' => 'E0D2 200D',
-    'replace' => 'E0D2',
-  ),
-  498 => 
-  array (
-    'match' => 'E0D3 200D',
-    'replace' => 'E0D3',
-  ),
-  499 => 
-  array (
-    'match' => 'E0D4 200D',
-    'replace' => 'E0D4',
-  ),
-  500 => 
-  array (
-    'match' => 'E0D5 200D',
-    'replace' => 'E0D5',
-  ),
-  501 => 
-  array (
-    'match' => 'E0D6 200D',
-    'replace' => 'E0D6',
-  ),
-  502 => 
-  array (
-    'match' => 'E0D7 200D',
-    'replace' => 'E0D7',
-  ),
-  503 => 
-  array (
-    'match' => 'E0D8 200D',
-    'replace' => 'E0D8',
-  ),
-  504 => 
-  array (
-    'match' => 'E0D9 200D',
-    'replace' => 'E0D9',
-  ),
-  505 => 
-  array (
-    'match' => 'E0DA 200D',
-    'replace' => 'E0DA',
-  ),
-  506 => 
-  array (
-    'match' => 'E0DB 200D',
-    'replace' => 'E0DB',
-  ),
-  507 => 
-  array (
-    'match' => 'E0DC 200D',
-    'replace' => 'E0DC',
-  ),
-  508 => 
-  array (
-    'match' => 'E0DD 200D',
-    'replace' => 'E0DD',
-  ),
-  509 => 
-  array (
-    'match' => 'E0DE 200D',
-    'replace' => 'E0DE',
-  ),
-  510 => 
-  array (
-    'match' => 'E0DF 200D',
-    'replace' => 'E0DF',
-  ),
-  511 => 
-  array (
-    'match' => 'E0E0 200D',
-    'replace' => 'E0E0',
-  ),
-  512 => 
-  array (
-    'match' => 'E0E1 200D',
-    'replace' => 'E0E1',
-  ),
-  513 => 
-  array (
-    'match' => 'E0E2 200D',
-    'replace' => 'E0E2',
-  ),
-  514 => 
-  array (
-    'match' => 'E0E3 200D',
-    'replace' => 'E0E3',
-  ),
-  515 => 
-  array (
-    'match' => 'E0E4 200D',
-    'replace' => 'E0E4',
-  ),
-  516 => 
-  array (
-    'match' => 'E0E5 200D',
-    'replace' => 'E0E5',
-  ),
-  517 => 
-  array (
-    'match' => 'E0E6 200D',
-    'replace' => 'E0E6',
-  ),
-  518 => 
-  array (
-    'match' => 'E0E7 200D',
-    'replace' => 'E0E7',
-  ),
-  519 => 
-  array (
-    'match' => 'E0E8 200D',
-    'replace' => 'E0E8',
-  ),
-  520 => 
-  array (
-    'match' => 'E0E9 200D',
-    'replace' => 'E0E9',
-  ),
-  521 => 
-  array (
-    'match' => 'E0EA 200D',
-    'replace' => 'E0EA',
-  ),
-  522 => 
-  array (
-    'match' => 'E0EB 200D',
-    'replace' => 'E0EB',
-  ),
-  523 => 
-  array (
-    'match' => 'E0EC 200D',
-    'replace' => 'E0EC',
-  ),
-  524 => 
-  array (
-    'match' => 'E0ED 200D',
-    'replace' => 'E0ED',
-  ),
-  525 => 
-  array (
-    'match' => 'E0EE 200D',
-    'replace' => 'E0EE',
-  ),
-  526 => 
-  array (
-    'match' => 'E0EF 200D',
-    'replace' => 'E0EF',
-  ),
-  527 => 
-  array (
-    'match' => 'E0F0 200D',
-    'replace' => 'E0F0',
-  ),
-  528 => 
-  array (
-    'match' => 'E0F1 200D',
-    'replace' => 'E0F1',
-  ),
-  529 => 
-  array (
-    'match' => 'E0F2 200D',
-    'replace' => 'E0F2',
-  ),
-  530 => 
-  array (
-    'match' => 'E0F3 200D',
-    'replace' => 'E0F3',
-  ),
-  531 => 
-  array (
-    'match' => 'E0F4 200D',
-    'replace' => 'E0F4',
-  ),
-  532 => 
-  array (
-    'match' => 'E0F5 200D',
-    'replace' => 'E0F5',
-  ),
-  533 => 
-  array (
-    'match' => 'E0F6 200D',
-    'replace' => 'E0F6',
-  ),
-  534 => 
-  array (
-    'match' => 'E0F7 200D',
-    'replace' => 'E0F7',
-  ),
-  535 => 
-  array (
-    'match' => 'E0F8 200D',
-    'replace' => 'E0F8',
-  ),
-  536 => 
-  array (
-    'match' => 'E0F9 200D',
-    'replace' => 'E0F9',
-  ),
-  537 => 
-  array (
-    'match' => 'E0FA 200D',
-    'replace' => 'E0FA',
-  ),
-  538 => 
-  array (
-    'match' => 'E0FB 200D',
-    'replace' => 'E0FB',
-  ),
-  539 => 
-  array (
-    'match' => 'E0FC 200D',
-    'replace' => 'E0FC',
-  ),
-  540 => 
-  array (
-    'match' => 'E0FD 200D',
-    'replace' => 'E0FD',
-  ),
-  541 => 
-  array (
-    'match' => 'E0FE 200D',
-    'replace' => 'E0FE',
-  ),
-  542 => 
-  array (
-    'match' => 'E0FF 200D',
-    'replace' => 'E0FF',
-  ),
-  543 => 
-  array (
-    'match' => 'E100 200D',
-    'replace' => 'E100',
-  ),
-  544 => 
-  array (
-    'match' => 'E101 200D',
-    'replace' => 'E101',
-  ),
-  545 => 
-  array (
-    'match' => 'E102 200D',
-    'replace' => 'E102',
-  ),
-  546 => 
-  array (
-    'match' => 'E103 200D',
-    'replace' => 'E103',
-  ),
-  547 => 
-  array (
-    'match' => 'E104 200D',
-    'replace' => 'E104',
-  ),
-  548 => 
-  array (
-    'match' => 'E105 200D',
-    'replace' => 'E105',
-  ),
-  549 => 
-  array (
-    'match' => 'E106 200D',
-    'replace' => 'E106',
-  ),
-  550 => 
-  array (
-    'match' => 'E107 200D',
-    'replace' => 'E107',
-  ),
-  551 => 
-  array (
-    'match' => 'E108 200D',
-    'replace' => 'E108',
-  ),
-  552 => 
-  array (
-    'match' => 'E109 200D',
-    'replace' => 'E109',
-  ),
-  553 => 
-  array (
-    'match' => 'E10A 200D',
-    'replace' => 'E10A',
-  ),
-  554 => 
-  array (
-    'match' => 'E10B 200D',
-    'replace' => 'E10B',
-  ),
-  555 => 
-  array (
-    'match' => 'E10C 200D',
-    'replace' => 'E10C',
-  ),
-  556 => 
-  array (
-    'match' => 'E10D 200D',
-    'replace' => 'E10D',
-  ),
-  557 => 
-  array (
-    'match' => 'E10E 200D',
-    'replace' => 'E10E',
-  ),
-  558 => 
-  array (
-    'match' => 'E10F 200D',
-    'replace' => 'E10F',
-  ),
-  559 => 
-  array (
-    'match' => 'E110 200D',
-    'replace' => 'E110',
-  ),
-  560 => 
-  array (
-    'match' => 'E111 200D',
-    'replace' => 'E111',
-  ),
-  561 => 
-  array (
-    'match' => 'E112 200D',
-    'replace' => 'E112',
-  ),
-  562 => 
-  array (
-    'match' => 'E113 200D',
-    'replace' => 'E113',
-  ),
-  563 => 
-  array (
-    'match' => 'E114 200D',
-    'replace' => 'E114',
-  ),
-  564 => 
-  array (
-    'match' => 'E115 200D',
-    'replace' => 'E115',
-  ),
-  565 => 
-  array (
-    'match' => 'E116 200D',
-    'replace' => 'E116',
-  ),
-  566 => 
-  array (
-    'match' => 'E117 200D',
-    'replace' => 'E117',
-  ),
-  567 => 
-  array (
-    'match' => 'E118 200D',
-    'replace' => 'E118',
-  ),
-  568 => 
-  array (
-    'match' => 'E119 200D',
-    'replace' => 'E119',
-  ),
-  569 => 
-  array (
-    'match' => 'E11A 200D',
-    'replace' => 'E11A',
-  ),
-  570 => 
-  array (
-    'match' => 'E11B 200D',
-    'replace' => 'E11B',
-  ),
-  571 => 
-  array (
-    'match' => 'E11C 200D',
-    'replace' => 'E11C',
-  ),
-  572 => 
-  array (
-    'match' => 'E11D 200D',
-    'replace' => 'E11D',
-  ),
-  573 => 
-  array (
-    'match' => 'E11E 200D',
-    'replace' => 'E11E',
-  ),
-  574 => 
-  array (
-    'match' => 'E11F 200D',
-    'replace' => 'E11F',
-  ),
-  575 => 
-  array (
-    'match' => 'E120 200D',
-    'replace' => 'E120',
-  ),
-  576 => 
-  array (
-    'match' => 'E121 200D',
-    'replace' => 'E121',
-  ),
-  577 => 
-  array (
-    'match' => 'E122 200D',
-    'replace' => 'E122',
-  ),
-  578 => 
-  array (
-    'match' => 'E123 200D',
-    'replace' => 'E123',
-  ),
-  579 => 
-  array (
-    'match' => 'E124 200D',
-    'replace' => 'E124',
-  ),
-  580 => 
-  array (
-    'match' => 'E125 200D',
-    'replace' => 'E125',
-  ),
-  581 => 
-  array (
-    'match' => 'E126 200D',
-    'replace' => 'E126',
-  ),
-  582 => 
-  array (
-    'match' => 'E127 200D',
-    'replace' => 'E127',
-  ),
-  583 => 
-  array (
-    'match' => 'E128 200D',
-    'replace' => 'E128',
-  ),
-  584 => 
-  array (
-    'match' => 'E129 200D',
-    'replace' => 'E129',
-  ),
-  585 => 
-  array (
-    'match' => 'E12A 200D',
-    'replace' => 'E12A',
-  ),
-  586 => 
-  array (
-    'match' => 'E12B 200D',
-    'replace' => 'E12B',
-  ),
-  587 => 
-  array (
-    'match' => 'E12C 200D',
-    'replace' => 'E12C',
-  ),
-  588 => 
-  array (
-    'match' => 'E12D 200D',
-    'replace' => 'E12D',
-  ),
-  589 => 
-  array (
-    'match' => 'E12E 200D',
-    'replace' => 'E12E',
-  ),
-  590 => 
-  array (
-    'match' => 'E12F 200D',
-    'replace' => 'E12F',
-  ),
-  591 => 
-  array (
-    'match' => 'E130 200D',
-    'replace' => 'E130',
-  ),
-  592 => 
-  array (
-    'match' => 'E131 200D',
-    'replace' => 'E131',
-  ),
-  593 => 
-  array (
-    'match' => 'E132 200D',
-    'replace' => 'E132',
-  ),
-  594 => 
-  array (
-    'match' => 'E133 200D',
-    'replace' => 'E133',
-  ),
-  595 => 
-  array (
-    'match' => 'E134 200D',
-    'replace' => 'E134',
-  ),
-  596 => 
-  array (
-    'match' => 'E135 200D',
-    'replace' => 'E135',
-  ),
-  597 => 
-  array (
-    'match' => '200D 0ACD',
-    'replace' => '0ACD',
-  ),
-  598 => 
-  array (
-    'match' => '200D E05D',
-    'replace' => 'E05D',
-  ),
-  599 => 
-  array (
-    'match' => '0A9C 0ABE',
-    'replace' => 'E21B',
-  ),
-  600 => 
-  array (
-    'match' => '0A9C 0AC9',
-    'replace' => 'E21C',
-  ),
-  601 => 
-  array (
-    'match' => '0A9C 0ACB',
-    'replace' => 'E21D',
-  ),
-  602 => 
-  array (
-    'match' => '0A9C 0ACC',
-    'replace' => 'E21E',
-  ),
-  603 => 
-  array (
-    'match' => '0ABF ((0A95|0A99|0AA1|0AA6|0AAB|0AB0|0AB9|E004|E008|E010|E015|E019|E01E|E025|E05E|E062|E06A|E06F|E073|E078|E07F|E082|E086|E08E|E093|E097|E09C|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142|E144|E145|E146|E148|E14A|E14B|E14E))',
-    'replace' => 'E038 \\1',
-  ),
-  604 => 
-  array (
-    'match' => '0ABF ((0A9F|0AA0|0AA2|0A9C|E00E|E00F|E011|E00B|E068|E069|E06B|E065|E08C|E08D|E08F|E089|E14F|E150|E151|E152|E153|E154))',
-    'replace' => 'E03A \\1',
-  ),
-  605 => 
-  array (
-    'match' => '0ABF ((0A96|0AA3|0AAC|0AAD|0AB3|E002|E003|E005|E012|E01A|E01B|E020|E026|E027|E05F|E06C|E074|E075|E07A|E080|E081|E083|E090|E098|E099|E09E|E0A4|E0A5|E15E))',
-    'replace' => 'E039 \\1',
-  ),
-  606 => 
-  array (
-    'match' => '0ABF ((E13D))',
-    'replace' => 'E03B \\1',
-  ),
-  607 => 
-  array (
-    'match' => '0ABF ((E13E|E13F|E140|E143))',
-    'replace' => 'E03C \\1',
-  ),
-  608 => 
-  array (
-    'match' => '0ABF ((E15C))',
-    'replace' => 'E03D \\1',
-  ),
-  609 => 
-  array (
-    'match' => '0ABF ((E0A7|E0BC|E0BD|E0C8|E0C9|E0C2) (0A97|0A98|0AAF|0A9B|0A9D|0A9E|0AA4|0AA5|0AA7|0AA8|0AAA|0AAE|0AAF|0AB2|0AB5|0AB6|0AB7|0AB8))',
-    'replace' => 'E25C \\1',
-  ),
-  610 => 
-  array (
-    'match' => '0ABF ((E0A7|E0BC|E0BD|E0C8|E0C9|E0C2) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
-    'replace' => 'E25C \\1',
-  ),
-  611 => 
-  array (
-    'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
-    'replace' => 'E25C \\1',
-  ),
-  612 => 
-  array (
-    'match' => '0ABF ((E0AC|E0AE) (0A97|0A98|0AAF|0A9B|0A9D|0A9E|0AA4|0AA5|0AA7|0AA8|0AAA|0AAE|0AAF|0AB2|0AB5|0AB6|0AB7|0AB8))',
-    'replace' => 'E25C \\1',
-  ),
-  613 => 
-  array (
-    'match' => '0ABF ((E0AC|E0AE) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
-    'replace' => 'E25C \\1',
-  ),
-  614 => 
-  array (
-    'match' => '0ABF ((E0B4|E0B5|E0B9) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
-    'replace' => 'E25C \\1',
-  ),
-  615 => 
-  array (
-    'match' => '0ABF ((E0B1) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
-    'replace' => 'E25C \\1',
-  ),
-  616 => 
-  array (
-    'match' => '0ABF ((E0A6|E0A8|E0AA|E0B2|E0B7|E0BB|E0C4|E0C7) (0A9C|0A9F|0AA0|0AA2))',
-    'replace' => 'E25D \\1',
-  ),
-  617 => 
-  array (
-    'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
-    'replace' => 'E25D \\1',
-  ),
-  618 => 
-  array (
-    'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A9C|0A9F|0AA0|0AA2))',
-    'replace' => 'E25D \\1',
-  ),
-  619 => 
-  array (
-    'match' => '0ABF ((E0B4|E0B5|E0B9) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
-    'replace' => 'E25D \\1',
-  ),
-  620 => 
-  array (
-    'match' => '0ABF ((E0B1) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
-    'replace' => 'E25D \\1',
-  ),
-  621 => 
-  array (
-    'match' => '0AB9 0AC3',
-    'replace' => 'E02F',
-  ),
-  622 => 
-  array (
-    'match' => '0AB0 0AC1',
-    'replace' => 'E15F',
-  ),
-  623 => 
-  array (
-    'match' => '0AC0 E032',
-    'replace' => 'E043',
-  ),
-  624 => 
-  array (
-    'match' => '0AC7 E032',
-    'replace' => 'E04D',
-  ),
-  625 => 
-  array (
-    'match' => '0AC8 E032',
-    'replace' => 'E051',
-  ),
-  626 => 
-  array (
-    'match' => '0ACB E032',
-    'replace' => 'E055',
-  ),
-  627 => 
-  array (
-    'match' => '0ACC E032',
-    'replace' => 'E059',
-  ),
-  628 => 
-  array (
-    'match' => '0A87 0A82',
-    'replace' => 'E160',
-  ),
-  629 => 
-  array (
-    'match' => '0A89 0A82',
-    'replace' => 'E161',
-  ),
-  630 => 
-  array (
-    'match' => '0A8A 0A82',
-    'replace' => 'E162',
-  ),
-  631 => 
-  array (
-    'match' => 'E032 0A81',
-    'replace' => 'E034',
-  ),
-  632 => 
-  array (
-    'match' => 'E032 0A82',
-    'replace' => 'E033',
-  ),
-  633 => 
-  array (
-    'match' => '0AC7 0A82',
-    'replace' => 'E04C',
-  ),
-  634 => 
-  array (
-    'match' => '0AC8 0A82',
-    'replace' => 'E050',
-  ),
-  635 => 
-  array (
-    'match' => '0AC0 0A82',
-    'replace' => 'E040',
-  ),
-  636 => 
-  array (
-    'match' => '0ACB 0A82',
-    'replace' => 'E054',
-  ),
-  637 => 
-  array (
-    'match' => '0ACC 0A82',
-    'replace' => 'E058',
-  ),
-  638 => 
-  array (
-    'match' => 'E04D 0A82',
-    'replace' => 'E04E',
-  ),
-  639 => 
-  array (
-    'match' => 'E051 0A82',
-    'replace' => 'E052',
-  ),
-  640 => 
-  array (
-    'match' => 'E043 0A82',
-    'replace' => 'E046',
-  ),
-  641 => 
-  array (
-    'match' => 'E055 0A82',
-    'replace' => 'E056',
-  ),
-  642 => 
-  array (
-    'match' => 'E059 0A82',
-    'replace' => 'E05A',
-  ),
-  643 => 
-  array (
-    'match' => 'E04D 0A81',
-    'replace' => 'E04F',
-  ),
-  644 => 
-  array (
-    'match' => 'E051 0A81',
-    'replace' => 'E053',
-  ),
-  645 => 
-  array (
-    'match' => 'E043 0A81',
-    'replace' => 'E049',
-  ),
-  646 => 
-  array (
-    'match' => 'E055 0A81',
-    'replace' => 'E057',
-  ),
-  647 => 
-  array (
-    'match' => 'E059 0A81',
-    'replace' => 'E05B',
-  ),
-  648 => 
-  array (
-    'match' => '((0A8D|0A8F|0A90|0A91|0A93|0A94|0AC0|E03E|E03F|0AC5|0AC7|0AC8|0AC9|0ACB|0ACC)) 0A81',
-    'replace' => '\\1 E031',
-  ),
-  649 => 
-  array (
-    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) 0AC0',
-    'replace' => '\\1 E03E',
-  ),
-  650 => 
-  array (
-    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) E040',
-    'replace' => '\\1 E041',
-  ),
-  651 => 
-  array (
-    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) E046',
-    'replace' => '\\1 E047',
-  ),
-  652 => 
-  array (
-    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) E049',
-    'replace' => '\\1 E04A',
-  ),
-  653 => 
-  array (
-    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) 0AC0',
-    'replace' => '\\1 E03F',
-  ),
-  654 => 
-  array (
-    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E040',
-    'replace' => '\\1 E042',
-  ),
-  655 => 
-  array (
-    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E046',
-    'replace' => '\\1 E048',
-  ),
-  656 => 
-  array (
-    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E049',
-    'replace' => '\\1 E04B',
-  ),
-  657 => 
-  array (
-    'match' => '0A9C 0AC0',
-    'replace' => 'E028',
-  ),
-  658 => 
-  array (
-    'match' => '0AB3 0AC0',
-    'replace' => 'E02A',
-  ),
-  659 => 
-  array (
-    'match' => '0AB3 E043',
-    'replace' => 'E02B',
-  ),
-  660 => 
-  array (
-    'match' => '0AB3 E046',
-    'replace' => 'E02C',
-  ),
-  661 => 
-  array (
-    'match' => '0AB3 E049',
-    'replace' => 'E02D',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php
deleted file mode 100644 (file)
index 637d70f..0000000
+++ /dev/null
@@ -1,4169 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0915 094D 0937',
-    'replace' => 'E028',
-  ),
-  1 => 
-  array (
-    'match' => '091C 094D 091E',
-    'replace' => 'E029',
-  ),
-  2 => 
-  array (
-    'match' => '0926 094D 092F',
-    'replace' => 'E128',
-  ),
-  3 => 
-  array (
-    'match' => '094D (200D)',
-    'replace' => 'E00E \\1',
-  ),
-  4 => 
-  array (
-    'match' => '094D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029))',
-    'replace' => 'E00E \\1',
-  ),
-  5 => 
-  array (
-    'match' => '094D (25CC)',
-    'replace' => 'E00E \\1',
-  ),
-  6 => 
-  array (
-    'match' => '094D 200C',
-    'replace' => 'E00C',
-  ),
-  7 => 
-  array (
-    'match' => '((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029|0958|0959|095A|E02A|E02B|E02C|E02D|095B|E02E|E02F|E030|E031|095C|095D|E032|E033|E034|E035|E036|0929|E037|095E|E038|E039|E03A|095F|0931|E03B|0934|E03C|E03D|E03E|E03F|E040|E041|E042|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133)) E00E 0930',
-    'replace' => '\\1 E013',
-  ),
-  8 => 
-  array (
-    'match' => '(093C) E00E 0930',
-    'replace' => '\\1 E013',
-  ),
-  9 => 
-  array (
-    'match' => '(200D) E00E 0930',
-    'replace' => '\\1 E013',
-  ),
-  10 => 
-  array (
-    'match' => '(25CC) E00E 0930',
-    'replace' => '\\1 E013',
-  ),
-  11 => 
-  array (
-    'match' => '(0020) E00E 0930',
-    'replace' => '\\1 E013',
-  ),
-  12 => 
-  array (
-    'match' => '((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029|0958|0959|095A|E02A|E02B|E02C|E02D|095B|E02E|E02F|E030|E031|095C|095D|E032|E033|E034|E035|E036|0929|E037|095E|E038|E039|E03A|095F|0931|E03B|0934|E03C|E03D|E03E|E03F|E040|E041|E042|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133)) 0930 094D',
-    'replace' => '\\1 E015',
-  ),
-  13 => 
-  array (
-    'match' => '((E013|E015|0941|0942|0943|0962|093E|0940|0949|094A|094B|094C|0945|0946|0947|0948|0901)) 0930 094D',
-    'replace' => '\\1 E015',
-  ),
-  14 => 
-  array (
-    'match' => '(093C) 0930 094D',
-    'replace' => '\\1 E015',
-  ),
-  15 => 
-  array (
-    'match' => '(25CC) 0930 094D',
-    'replace' => '\\1 E015',
-  ),
-  16 => 
-  array (
-    'match' => '(E128) 0930 094D',
-    'replace' => '\\1 E015',
-  ),
-  17 => 
-  array (
-    'match' => '0915 093C',
-    'replace' => '0958',
-  ),
-  18 => 
-  array (
-    'match' => '0916 093C',
-    'replace' => '0959',
-  ),
-  19 => 
-  array (
-    'match' => '0917 093C',
-    'replace' => '095A',
-  ),
-  20 => 
-  array (
-    'match' => '0918 093C',
-    'replace' => 'E02A',
-  ),
-  21 => 
-  array (
-    'match' => '0919 093C',
-    'replace' => 'E02B',
-  ),
-  22 => 
-  array (
-    'match' => '091A 093C',
-    'replace' => 'E02C',
-  ),
-  23 => 
-  array (
-    'match' => '091B 093C',
-    'replace' => 'E02D',
-  ),
-  24 => 
-  array (
-    'match' => '091C 093C',
-    'replace' => '095B',
-  ),
-  25 => 
-  array (
-    'match' => '091D 093C',
-    'replace' => 'E02E',
-  ),
-  26 => 
-  array (
-    'match' => '091E 093C',
-    'replace' => 'E02F',
-  ),
-  27 => 
-  array (
-    'match' => '091F 093C',
-    'replace' => 'E030',
-  ),
-  28 => 
-  array (
-    'match' => '0920 093C',
-    'replace' => 'E031',
-  ),
-  29 => 
-  array (
-    'match' => '0921 093C',
-    'replace' => '095C',
-  ),
-  30 => 
-  array (
-    'match' => '0922 093C',
-    'replace' => '095D',
-  ),
-  31 => 
-  array (
-    'match' => '0923 093C',
-    'replace' => 'E032',
-  ),
-  32 => 
-  array (
-    'match' => '0924 093C',
-    'replace' => 'E033',
-  ),
-  33 => 
-  array (
-    'match' => '0925 093C',
-    'replace' => 'E034',
-  ),
-  34 => 
-  array (
-    'match' => '0926 093C',
-    'replace' => 'E035',
-  ),
-  35 => 
-  array (
-    'match' => '0927 093C',
-    'replace' => 'E036',
-  ),
-  36 => 
-  array (
-    'match' => '0928 093C',
-    'replace' => '0929',
-  ),
-  37 => 
-  array (
-    'match' => '092A 093C',
-    'replace' => 'E037',
-  ),
-  38 => 
-  array (
-    'match' => '092B 093C',
-    'replace' => '095E',
-  ),
-  39 => 
-  array (
-    'match' => '092C 093C',
-    'replace' => 'E038',
-  ),
-  40 => 
-  array (
-    'match' => '092D 093C',
-    'replace' => 'E039',
-  ),
-  41 => 
-  array (
-    'match' => '092E 093C',
-    'replace' => 'E03A',
-  ),
-  42 => 
-  array (
-    'match' => '092F 093C',
-    'replace' => '095F',
-  ),
-  43 => 
-  array (
-    'match' => '0930 093C',
-    'replace' => '0931',
-  ),
-  44 => 
-  array (
-    'match' => '0932 093C',
-    'replace' => 'E03B',
-  ),
-  45 => 
-  array (
-    'match' => '0933 093C',
-    'replace' => '0934',
-  ),
-  46 => 
-  array (
-    'match' => '0935 093C',
-    'replace' => 'E03C',
-  ),
-  47 => 
-  array (
-    'match' => '0936 093C',
-    'replace' => 'E03D',
-  ),
-  48 => 
-  array (
-    'match' => '0937 093C',
-    'replace' => 'E03E',
-  ),
-  49 => 
-  array (
-    'match' => '0938 093C',
-    'replace' => 'E03F',
-  ),
-  50 => 
-  array (
-    'match' => '0939 093C',
-    'replace' => 'E040',
-  ),
-  51 => 
-  array (
-    'match' => 'E028 093C',
-    'replace' => 'E041',
-  ),
-  52 => 
-  array (
-    'match' => 'E029 093C',
-    'replace' => 'E042',
-  ),
-  53 => 
-  array (
-    'match' => '0915 E013',
-    'replace' => 'E08B',
-  ),
-  54 => 
-  array (
-    'match' => '0916 E013',
-    'replace' => 'E08C',
-  ),
-  55 => 
-  array (
-    'match' => '0917 E013',
-    'replace' => 'E08D',
-  ),
-  56 => 
-  array (
-    'match' => '0918 E013',
-    'replace' => 'E08E',
-  ),
-  57 => 
-  array (
-    'match' => '0919 E013',
-    'replace' => 'E08F',
-  ),
-  58 => 
-  array (
-    'match' => '091A E013',
-    'replace' => 'E090',
-  ),
-  59 => 
-  array (
-    'match' => '091B E013',
-    'replace' => 'E091',
-  ),
-  60 => 
-  array (
-    'match' => '091C E013',
-    'replace' => 'E092',
-  ),
-  61 => 
-  array (
-    'match' => '091D E013',
-    'replace' => 'E093',
-  ),
-  62 => 
-  array (
-    'match' => '091E E013',
-    'replace' => 'E094',
-  ),
-  63 => 
-  array (
-    'match' => '091F E013',
-    'replace' => 'E095',
-  ),
-  64 => 
-  array (
-    'match' => '0920 E013',
-    'replace' => 'E096',
-  ),
-  65 => 
-  array (
-    'match' => '0921 E013',
-    'replace' => 'E097',
-  ),
-  66 => 
-  array (
-    'match' => '0922 E013',
-    'replace' => 'E098',
-  ),
-  67 => 
-  array (
-    'match' => '0923 E013',
-    'replace' => 'E099',
-  ),
-  68 => 
-  array (
-    'match' => '0924 E013',
-    'replace' => 'E09A',
-  ),
-  69 => 
-  array (
-    'match' => '0925 E013',
-    'replace' => 'E09B',
-  ),
-  70 => 
-  array (
-    'match' => '0926 E013',
-    'replace' => 'E09C',
-  ),
-  71 => 
-  array (
-    'match' => '0927 E013',
-    'replace' => 'E09D',
-  ),
-  72 => 
-  array (
-    'match' => '0928 E013',
-    'replace' => 'E09E',
-  ),
-  73 => 
-  array (
-    'match' => '092A E013',
-    'replace' => 'E09F',
-  ),
-  74 => 
-  array (
-    'match' => '092B E013',
-    'replace' => 'E0A0',
-  ),
-  75 => 
-  array (
-    'match' => '092C E013',
-    'replace' => 'E0A1',
-  ),
-  76 => 
-  array (
-    'match' => '092D E013',
-    'replace' => 'E0A2',
-  ),
-  77 => 
-  array (
-    'match' => '092E E013',
-    'replace' => 'E0A3',
-  ),
-  78 => 
-  array (
-    'match' => '092F E013',
-    'replace' => 'E0A4',
-  ),
-  79 => 
-  array (
-    'match' => '0930 E013',
-    'replace' => 'E0A5',
-  ),
-  80 => 
-  array (
-    'match' => '0932 E013',
-    'replace' => 'E0A6',
-  ),
-  81 => 
-  array (
-    'match' => '0933 E013',
-    'replace' => 'E0A7',
-  ),
-  82 => 
-  array (
-    'match' => '0935 E013',
-    'replace' => 'E0A8',
-  ),
-  83 => 
-  array (
-    'match' => '0936 E013',
-    'replace' => 'E0A9',
-  ),
-  84 => 
-  array (
-    'match' => '0937 E013',
-    'replace' => 'E0AA',
-  ),
-  85 => 
-  array (
-    'match' => '0938 E013',
-    'replace' => 'E0AB',
-  ),
-  86 => 
-  array (
-    'match' => '0939 E013',
-    'replace' => 'E0AC',
-  ),
-  87 => 
-  array (
-    'match' => 'E028 E013',
-    'replace' => 'E0AD',
-  ),
-  88 => 
-  array (
-    'match' => 'E029 E013',
-    'replace' => 'E0AE',
-  ),
-  89 => 
-  array (
-    'match' => '0958 E013',
-    'replace' => 'E0AF',
-  ),
-  90 => 
-  array (
-    'match' => '0959 E013',
-    'replace' => 'E0B0',
-  ),
-  91 => 
-  array (
-    'match' => '095A E013',
-    'replace' => 'E0B1',
-  ),
-  92 => 
-  array (
-    'match' => 'E02A E013',
-    'replace' => 'E0B2',
-  ),
-  93 => 
-  array (
-    'match' => 'E02B E013',
-    'replace' => 'E0B3',
-  ),
-  94 => 
-  array (
-    'match' => 'E02C E013',
-    'replace' => 'E0B4',
-  ),
-  95 => 
-  array (
-    'match' => 'E02D E013',
-    'replace' => 'E0B5',
-  ),
-  96 => 
-  array (
-    'match' => '095B E013',
-    'replace' => 'E0B6',
-  ),
-  97 => 
-  array (
-    'match' => 'E02E E013',
-    'replace' => 'E0B7',
-  ),
-  98 => 
-  array (
-    'match' => 'E02F E013',
-    'replace' => 'E0B8',
-  ),
-  99 => 
-  array (
-    'match' => 'E030 E013',
-    'replace' => 'E0B9',
-  ),
-  100 => 
-  array (
-    'match' => 'E031 E013',
-    'replace' => 'E0BA',
-  ),
-  101 => 
-  array (
-    'match' => '095C E013',
-    'replace' => 'E0BB',
-  ),
-  102 => 
-  array (
-    'match' => '095D E013',
-    'replace' => 'E0BC',
-  ),
-  103 => 
-  array (
-    'match' => 'E032 E013',
-    'replace' => 'E0BD',
-  ),
-  104 => 
-  array (
-    'match' => 'E033 E013',
-    'replace' => 'E0BE',
-  ),
-  105 => 
-  array (
-    'match' => 'E034 E013',
-    'replace' => 'E0BF',
-  ),
-  106 => 
-  array (
-    'match' => 'E035 E013',
-    'replace' => 'E0C0',
-  ),
-  107 => 
-  array (
-    'match' => 'E036 E013',
-    'replace' => 'E0C1',
-  ),
-  108 => 
-  array (
-    'match' => '0929 E013',
-    'replace' => 'E0C2',
-  ),
-  109 => 
-  array (
-    'match' => 'E037 E013',
-    'replace' => 'E0C3',
-  ),
-  110 => 
-  array (
-    'match' => '095E E013',
-    'replace' => 'E0C4',
-  ),
-  111 => 
-  array (
-    'match' => 'E038 E013',
-    'replace' => 'E0C5',
-  ),
-  112 => 
-  array (
-    'match' => 'E039 E013',
-    'replace' => 'E0C6',
-  ),
-  113 => 
-  array (
-    'match' => 'E03A E013',
-    'replace' => 'E0C7',
-  ),
-  114 => 
-  array (
-    'match' => '095F E013',
-    'replace' => 'E0C8',
-  ),
-  115 => 
-  array (
-    'match' => '0931 E013',
-    'replace' => 'E0C9',
-  ),
-  116 => 
-  array (
-    'match' => 'E03B E013',
-    'replace' => 'E0CA',
-  ),
-  117 => 
-  array (
-    'match' => '0934 E013',
-    'replace' => 'E0CB',
-  ),
-  118 => 
-  array (
-    'match' => 'E03C E013',
-    'replace' => 'E0CC',
-  ),
-  119 => 
-  array (
-    'match' => 'E03D E013',
-    'replace' => 'E0CD',
-  ),
-  120 => 
-  array (
-    'match' => 'E03E E013',
-    'replace' => 'E0CE',
-  ),
-  121 => 
-  array (
-    'match' => 'E03F E013',
-    'replace' => 'E0CF',
-  ),
-  122 => 
-  array (
-    'match' => 'E040 E013',
-    'replace' => 'E0D0',
-  ),
-  123 => 
-  array (
-    'match' => 'E041 E013',
-    'replace' => 'E0D1',
-  ),
-  124 => 
-  array (
-    'match' => 'E042 E013',
-    'replace' => 'E0D2',
-  ),
-  125 => 
-  array (
-    'match' => 'E028 E013',
-    'replace' => 'E0AD',
-  ),
-  126 => 
-  array (
-    'match' => 'E029 E013',
-    'replace' => 'E0AE',
-  ),
-  127 => 
-  array (
-    'match' => '0915 E00E',
-    'replace' => 'E043',
-  ),
-  128 => 
-  array (
-    'match' => '0916 E00E',
-    'replace' => 'E044',
-  ),
-  129 => 
-  array (
-    'match' => '0917 E00E',
-    'replace' => 'E045',
-  ),
-  130 => 
-  array (
-    'match' => '0918 E00E',
-    'replace' => 'E046',
-  ),
-  131 => 
-  array (
-    'match' => '0919 E00E',
-    'replace' => 'E047',
-  ),
-  132 => 
-  array (
-    'match' => '091A E00E',
-    'replace' => 'E048',
-  ),
-  133 => 
-  array (
-    'match' => '091B E00E',
-    'replace' => 'E049',
-  ),
-  134 => 
-  array (
-    'match' => '091C E00E',
-    'replace' => 'E04A',
-  ),
-  135 => 
-  array (
-    'match' => '091D E00E',
-    'replace' => 'E04B',
-  ),
-  136 => 
-  array (
-    'match' => '091E E00E',
-    'replace' => 'E04C',
-  ),
-  137 => 
-  array (
-    'match' => '091F E00E',
-    'replace' => 'E04D',
-  ),
-  138 => 
-  array (
-    'match' => '0920 E00E',
-    'replace' => 'E04E',
-  ),
-  139 => 
-  array (
-    'match' => '0921 E00E',
-    'replace' => 'E04F',
-  ),
-  140 => 
-  array (
-    'match' => '0922 E00E',
-    'replace' => 'E050',
-  ),
-  141 => 
-  array (
-    'match' => '0923 E00E',
-    'replace' => 'E051',
-  ),
-  142 => 
-  array (
-    'match' => '0924 E00E',
-    'replace' => 'E052',
-  ),
-  143 => 
-  array (
-    'match' => '0925 E00E',
-    'replace' => 'E053',
-  ),
-  144 => 
-  array (
-    'match' => '0926 E00E',
-    'replace' => 'E054',
-  ),
-  145 => 
-  array (
-    'match' => '0927 E00E',
-    'replace' => 'E055',
-  ),
-  146 => 
-  array (
-    'match' => '0928 E00E',
-    'replace' => 'E056',
-  ),
-  147 => 
-  array (
-    'match' => '092A E00E',
-    'replace' => 'E057',
-  ),
-  148 => 
-  array (
-    'match' => '092B E00E',
-    'replace' => 'E058',
-  ),
-  149 => 
-  array (
-    'match' => '092C E00E',
-    'replace' => 'E059',
-  ),
-  150 => 
-  array (
-    'match' => '092D E00E',
-    'replace' => 'E05A',
-  ),
-  151 => 
-  array (
-    'match' => '092E E00E',
-    'replace' => 'E05B',
-  ),
-  152 => 
-  array (
-    'match' => '092F E00E',
-    'replace' => 'E05C',
-  ),
-  153 => 
-  array (
-    'match' => '0930 E00E',
-    'replace' => 'E05D',
-  ),
-  154 => 
-  array (
-    'match' => '0932 E00E',
-    'replace' => 'E05E',
-  ),
-  155 => 
-  array (
-    'match' => '0933 E00E',
-    'replace' => 'E05F',
-  ),
-  156 => 
-  array (
-    'match' => '0935 E00E',
-    'replace' => 'E060',
-  ),
-  157 => 
-  array (
-    'match' => '0936 E00E',
-    'replace' => 'E061',
-  ),
-  158 => 
-  array (
-    'match' => '0937 E00E',
-    'replace' => 'E062',
-  ),
-  159 => 
-  array (
-    'match' => '0938 E00E',
-    'replace' => 'E063',
-  ),
-  160 => 
-  array (
-    'match' => '0939 E00E',
-    'replace' => 'E064',
-  ),
-  161 => 
-  array (
-    'match' => 'E028 E00E',
-    'replace' => 'E065',
-  ),
-  162 => 
-  array (
-    'match' => 'E029 E00E',
-    'replace' => 'E066',
-  ),
-  163 => 
-  array (
-    'match' => 'E08B E00E',
-    'replace' => 'E0D3',
-  ),
-  164 => 
-  array (
-    'match' => 'E08C E00E',
-    'replace' => 'E0D4',
-  ),
-  165 => 
-  array (
-    'match' => 'E08D E00E',
-    'replace' => 'E0D5',
-  ),
-  166 => 
-  array (
-    'match' => 'E08E E00E',
-    'replace' => 'E0D6',
-  ),
-  167 => 
-  array (
-    'match' => 'E08F E00E',
-    'replace' => 'E0D7',
-  ),
-  168 => 
-  array (
-    'match' => 'E090 E00E',
-    'replace' => 'E0D8',
-  ),
-  169 => 
-  array (
-    'match' => 'E091 E00E',
-    'replace' => 'E0D9',
-  ),
-  170 => 
-  array (
-    'match' => 'E092 E00E',
-    'replace' => 'E0DA',
-  ),
-  171 => 
-  array (
-    'match' => 'E093 E00E',
-    'replace' => 'E0DB',
-  ),
-  172 => 
-  array (
-    'match' => 'E094 E00E',
-    'replace' => 'E0DC',
-  ),
-  173 => 
-  array (
-    'match' => 'E095 E00E',
-    'replace' => 'E0DD',
-  ),
-  174 => 
-  array (
-    'match' => 'E096 E00E',
-    'replace' => 'E0DE',
-  ),
-  175 => 
-  array (
-    'match' => 'E097 E00E',
-    'replace' => 'E0DF',
-  ),
-  176 => 
-  array (
-    'match' => 'E098 E00E',
-    'replace' => 'E0E0',
-  ),
-  177 => 
-  array (
-    'match' => 'E099 E00E',
-    'replace' => 'E0E1',
-  ),
-  178 => 
-  array (
-    'match' => 'E09A E00E',
-    'replace' => 'E0E2',
-  ),
-  179 => 
-  array (
-    'match' => 'E09B E00E',
-    'replace' => 'E0E3',
-  ),
-  180 => 
-  array (
-    'match' => 'E09C E00E',
-    'replace' => 'E0E4',
-  ),
-  181 => 
-  array (
-    'match' => 'E09D E00E',
-    'replace' => 'E0E5',
-  ),
-  182 => 
-  array (
-    'match' => 'E09E E00E',
-    'replace' => 'E0E6',
-  ),
-  183 => 
-  array (
-    'match' => 'E09F E00E',
-    'replace' => 'E0E7',
-  ),
-  184 => 
-  array (
-    'match' => 'E0A0 E00E',
-    'replace' => 'E0E8',
-  ),
-  185 => 
-  array (
-    'match' => 'E0A1 E00E',
-    'replace' => 'E0E9',
-  ),
-  186 => 
-  array (
-    'match' => 'E0A2 E00E',
-    'replace' => 'E0EA',
-  ),
-  187 => 
-  array (
-    'match' => 'E0A3 E00E',
-    'replace' => 'E0EB',
-  ),
-  188 => 
-  array (
-    'match' => 'E0A4 E00E',
-    'replace' => 'E0EC',
-  ),
-  189 => 
-  array (
-    'match' => 'E0A5 E00E',
-    'replace' => 'E0ED',
-  ),
-  190 => 
-  array (
-    'match' => 'E0A6 E00E',
-    'replace' => 'E0EE',
-  ),
-  191 => 
-  array (
-    'match' => 'E0A7 E00E',
-    'replace' => 'E0EF',
-  ),
-  192 => 
-  array (
-    'match' => 'E0A8 E00E',
-    'replace' => 'E0F0',
-  ),
-  193 => 
-  array (
-    'match' => 'E0A9 E00E',
-    'replace' => 'E0F1',
-  ),
-  194 => 
-  array (
-    'match' => 'E0AA E00E',
-    'replace' => 'E0F2',
-  ),
-  195 => 
-  array (
-    'match' => 'E0AB E00E',
-    'replace' => 'E0F3',
-  ),
-  196 => 
-  array (
-    'match' => 'E0AC E00E',
-    'replace' => 'E0F4',
-  ),
-  197 => 
-  array (
-    'match' => 'E0AD E00E',
-    'replace' => 'E0F5',
-  ),
-  198 => 
-  array (
-    'match' => 'E0AE E00E',
-    'replace' => 'E0F6',
-  ),
-  199 => 
-  array (
-    'match' => 'E0AF E00E',
-    'replace' => 'E0F7',
-  ),
-  200 => 
-  array (
-    'match' => 'E0B0 E00E',
-    'replace' => 'E0F8',
-  ),
-  201 => 
-  array (
-    'match' => 'E0B1 E00E',
-    'replace' => 'E0F9',
-  ),
-  202 => 
-  array (
-    'match' => 'E0B2 E00E',
-    'replace' => 'E0FA',
-  ),
-  203 => 
-  array (
-    'match' => 'E0B3 E00E',
-    'replace' => 'E0FB',
-  ),
-  204 => 
-  array (
-    'match' => 'E0B4 E00E',
-    'replace' => 'E0FC',
-  ),
-  205 => 
-  array (
-    'match' => 'E0B5 E00E',
-    'replace' => 'E0FD',
-  ),
-  206 => 
-  array (
-    'match' => 'E0B6 E00E',
-    'replace' => 'E0FE',
-  ),
-  207 => 
-  array (
-    'match' => 'E0B7 E00E',
-    'replace' => 'E0FF',
-  ),
-  208 => 
-  array (
-    'match' => 'E0B8 E00E',
-    'replace' => 'E100',
-  ),
-  209 => 
-  array (
-    'match' => 'E0B9 E00E',
-    'replace' => 'E101',
-  ),
-  210 => 
-  array (
-    'match' => 'E0BA E00E',
-    'replace' => 'E102',
-  ),
-  211 => 
-  array (
-    'match' => 'E0BB E00E',
-    'replace' => 'E103',
-  ),
-  212 => 
-  array (
-    'match' => 'E0BC E00E',
-    'replace' => 'E104',
-  ),
-  213 => 
-  array (
-    'match' => 'E0BD E00E',
-    'replace' => 'E105',
-  ),
-  214 => 
-  array (
-    'match' => 'E0BE E00E',
-    'replace' => 'E106',
-  ),
-  215 => 
-  array (
-    'match' => 'E0BF E00E',
-    'replace' => 'E107',
-  ),
-  216 => 
-  array (
-    'match' => 'E0C0 E00E',
-    'replace' => 'E108',
-  ),
-  217 => 
-  array (
-    'match' => 'E0C1 E00E',
-    'replace' => 'E109',
-  ),
-  218 => 
-  array (
-    'match' => 'E0C2 E00E',
-    'replace' => 'E10A',
-  ),
-  219 => 
-  array (
-    'match' => 'E0C3 E00E',
-    'replace' => 'E10B',
-  ),
-  220 => 
-  array (
-    'match' => 'E0C4 E00E',
-    'replace' => 'E10C',
-  ),
-  221 => 
-  array (
-    'match' => 'E0C5 E00E',
-    'replace' => 'E10D',
-  ),
-  222 => 
-  array (
-    'match' => 'E0C6 E00E',
-    'replace' => 'E10E',
-  ),
-  223 => 
-  array (
-    'match' => 'E0C7 E00E',
-    'replace' => 'E10F',
-  ),
-  224 => 
-  array (
-    'match' => 'E0C8 E00E',
-    'replace' => 'E110',
-  ),
-  225 => 
-  array (
-    'match' => 'E0C9 E00E',
-    'replace' => 'E111',
-  ),
-  226 => 
-  array (
-    'match' => 'E0CA E00E',
-    'replace' => 'E112',
-  ),
-  227 => 
-  array (
-    'match' => 'E0CB E00E',
-    'replace' => 'E113',
-  ),
-  228 => 
-  array (
-    'match' => 'E0CC E00E',
-    'replace' => 'E114',
-  ),
-  229 => 
-  array (
-    'match' => 'E0CD E00E',
-    'replace' => 'E115',
-  ),
-  230 => 
-  array (
-    'match' => 'E0CE E00E',
-    'replace' => 'E116',
-  ),
-  231 => 
-  array (
-    'match' => 'E0CF E00E',
-    'replace' => 'E117',
-  ),
-  232 => 
-  array (
-    'match' => 'E0D0 E00E',
-    'replace' => 'E118',
-  ),
-  233 => 
-  array (
-    'match' => 'E0D1 E00E',
-    'replace' => 'E119',
-  ),
-  234 => 
-  array (
-    'match' => 'E0D2 E00E',
-    'replace' => 'E11A',
-  ),
-  235 => 
-  array (
-    'match' => '0958 E00E',
-    'replace' => 'E067',
-  ),
-  236 => 
-  array (
-    'match' => '0959 E00E',
-    'replace' => 'E068',
-  ),
-  237 => 
-  array (
-    'match' => '095A E00E',
-    'replace' => 'E069',
-  ),
-  238 => 
-  array (
-    'match' => 'E02A E00E',
-    'replace' => 'E06A',
-  ),
-  239 => 
-  array (
-    'match' => 'E02B E00E',
-    'replace' => 'E06B',
-  ),
-  240 => 
-  array (
-    'match' => 'E02C E00E',
-    'replace' => 'E06C',
-  ),
-  241 => 
-  array (
-    'match' => 'E02D E00E',
-    'replace' => 'E06D',
-  ),
-  242 => 
-  array (
-    'match' => '095B E00E',
-    'replace' => 'E06E',
-  ),
-  243 => 
-  array (
-    'match' => 'E02E E00E',
-    'replace' => 'E06F',
-  ),
-  244 => 
-  array (
-    'match' => 'E02F E00E',
-    'replace' => 'E070',
-  ),
-  245 => 
-  array (
-    'match' => 'E030 E00E',
-    'replace' => 'E071',
-  ),
-  246 => 
-  array (
-    'match' => 'E031 E00E',
-    'replace' => 'E072',
-  ),
-  247 => 
-  array (
-    'match' => '095C E00E',
-    'replace' => 'E073',
-  ),
-  248 => 
-  array (
-    'match' => '095D E00E',
-    'replace' => 'E074',
-  ),
-  249 => 
-  array (
-    'match' => 'E032 E00E',
-    'replace' => 'E075',
-  ),
-  250 => 
-  array (
-    'match' => 'E033 E00E',
-    'replace' => 'E076',
-  ),
-  251 => 
-  array (
-    'match' => 'E034 E00E',
-    'replace' => 'E077',
-  ),
-  252 => 
-  array (
-    'match' => 'E035 E00E',
-    'replace' => 'E078',
-  ),
-  253 => 
-  array (
-    'match' => 'E036 E00E',
-    'replace' => 'E079',
-  ),
-  254 => 
-  array (
-    'match' => '0929 E00E',
-    'replace' => 'E07A',
-  ),
-  255 => 
-  array (
-    'match' => 'E037 E00E',
-    'replace' => 'E07B',
-  ),
-  256 => 
-  array (
-    'match' => '095E E00E',
-    'replace' => 'E07C',
-  ),
-  257 => 
-  array (
-    'match' => 'E038 E00E',
-    'replace' => 'E07D',
-  ),
-  258 => 
-  array (
-    'match' => 'E039 E00E',
-    'replace' => 'E07E',
-  ),
-  259 => 
-  array (
-    'match' => 'E03A E00E',
-    'replace' => 'E07F',
-  ),
-  260 => 
-  array (
-    'match' => '095F E00E',
-    'replace' => 'E080',
-  ),
-  261 => 
-  array (
-    'match' => '0931 E00E',
-    'replace' => 'E081',
-  ),
-  262 => 
-  array (
-    'match' => 'E03B E00E',
-    'replace' => 'E082',
-  ),
-  263 => 
-  array (
-    'match' => '0934 E00E',
-    'replace' => 'E083',
-  ),
-  264 => 
-  array (
-    'match' => 'E03C E00E',
-    'replace' => 'E084',
-  ),
-  265 => 
-  array (
-    'match' => 'E03D E00E',
-    'replace' => 'E085',
-  ),
-  266 => 
-  array (
-    'match' => 'E03E E00E',
-    'replace' => 'E086',
-  ),
-  267 => 
-  array (
-    'match' => 'E03F E00E',
-    'replace' => 'E087',
-  ),
-  268 => 
-  array (
-    'match' => 'E040 E00E',
-    'replace' => 'E088',
-  ),
-  269 => 
-  array (
-    'match' => 'E041 E00E',
-    'replace' => 'E089',
-  ),
-  270 => 
-  array (
-    'match' => 'E042 E00E',
-    'replace' => 'E08A',
-  ),
-  271 => 
-  array (
-    'match' => 'E043 0924',
-    'replace' => 'E11B',
-  ),
-  272 => 
-  array (
-    'match' => 'E044 0928',
-    'replace' => 'E11C',
-  ),
-  273 => 
-  array (
-    'match' => 'E047 092E',
-    'replace' => 'E11D',
-  ),
-  274 => 
-  array (
-    'match' => 'E052 0924',
-    'replace' => 'E11E',
-  ),
-  275 => 
-  array (
-    'match' => 'E052 0928',
-    'replace' => 'E11F',
-  ),
-  276 => 
-  array (
-    'match' => 'E054 0917',
-    'replace' => 'E120',
-  ),
-  277 => 
-  array (
-    'match' => 'E054 0918',
-    'replace' => 'E121',
-  ),
-  278 => 
-  array (
-    'match' => 'E054 0926',
-    'replace' => 'E122',
-  ),
-  279 => 
-  array (
-    'match' => 'E054 0927',
-    'replace' => 'E123',
-  ),
-  280 => 
-  array (
-    'match' => 'E054 0928',
-    'replace' => 'E124',
-  ),
-  281 => 
-  array (
-    'match' => 'E054 092C',
-    'replace' => 'E125',
-  ),
-  282 => 
-  array (
-    'match' => 'E054 092D',
-    'replace' => 'E126',
-  ),
-  283 => 
-  array (
-    'match' => 'E054 E05C 092D',
-    'replace' => 'E127',
-  ),
-  284 => 
-  array (
-    'match' => 'E054 092F',
-    'replace' => 'E128',
-  ),
-  285 => 
-  array (
-    'match' => 'E054 0935',
-    'replace' => 'E129',
-  ),
-  286 => 
-  array (
-    'match' => 'E057 0924',
-    'replace' => 'E12A',
-  ),
-  287 => 
-  array (
-    'match' => 'E061 0928',
-    'replace' => 'E12B',
-  ),
-  288 => 
-  array (
-    'match' => 'E061 091A',
-    'replace' => 'E12C',
-  ),
-  289 => 
-  array (
-    'match' => 'E061 0932',
-    'replace' => 'E12D',
-  ),
-  290 => 
-  array (
-    'match' => 'E061 0935',
-    'replace' => 'E12E',
-  ),
-  291 => 
-  array (
-    'match' => 'E062 091F',
-    'replace' => 'E12F',
-  ),
-  292 => 
-  array (
-    'match' => 'E062 0920',
-    'replace' => 'E130',
-  ),
-  293 => 
-  array (
-    'match' => 'E062 E095',
-    'replace' => 'E131',
-  ),
-  294 => 
-  array (
-    'match' => 'E062 E096',
-    'replace' => 'E132',
-  ),
-  295 => 
-  array (
-    'match' => 'E063 E09A',
-    'replace' => 'E133',
-  ),
-  296 => 
-  array (
-    'match' => 'E064 0928',
-    'replace' => 'E134',
-  ),
-  297 => 
-  array (
-    'match' => 'E064 092E',
-    'replace' => 'E135',
-  ),
-  298 => 
-  array (
-    'match' => 'E064 092F',
-    'replace' => 'E136',
-  ),
-  299 => 
-  array (
-    'match' => 'E064 0923',
-    'replace' => 'E137',
-  ),
-  300 => 
-  array (
-    'match' => 'E064 0932',
-    'replace' => 'E138',
-  ),
-  301 => 
-  array (
-    'match' => 'E064 0935',
-    'replace' => 'E139',
-  ),
-  302 => 
-  array (
-    'match' => 'E044 E056',
-    'replace' => 'E13B',
-  ),
-  303 => 
-  array (
-    'match' => 'E052 E052',
-    'replace' => 'E13D',
-  ),
-  304 => 
-  array (
-    'match' => 'E052 E056',
-    'replace' => 'E13E',
-  ),
-  305 => 
-  array (
-    'match' => 'E054 E05B',
-    'replace' => 'E13F',
-  ),
-  306 => 
-  array (
-    'match' => 'E057 E052',
-    'replace' => 'E140',
-  ),
-  307 => 
-  array (
-    'match' => 'E061 E056',
-    'replace' => 'E141',
-  ),
-  308 => 
-  array (
-    'match' => 'E061 E048',
-    'replace' => 'E142',
-  ),
-  309 => 
-  array (
-    'match' => 'E061 E05E',
-    'replace' => 'E143',
-  ),
-  310 => 
-  array (
-    'match' => 'E061 E060',
-    'replace' => 'E144',
-  ),
-  311 => 
-  array (
-    'match' => 'E063 E0E2',
-    'replace' => 'E145',
-  ),
-  312 => 
-  array (
-    'match' => 'E047 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E047 E015 \\1',
-  ),
-  313 => 
-  array (
-    'match' => 'E04D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E04D E015 \\1',
-  ),
-  314 => 
-  array (
-    'match' => 'E04E ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E04E E015 \\1',
-  ),
-  315 => 
-  array (
-    'match' => 'E04F ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E04F E015 \\1',
-  ),
-  316 => 
-  array (
-    'match' => 'E050 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E050 E015 \\1',
-  ),
-  317 => 
-  array (
-    'match' => 'E054 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E054 E015 \\1',
-  ),
-  318 => 
-  array (
-    'match' => 'E06B ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E06B E015 \\1',
-  ),
-  319 => 
-  array (
-    'match' => 'E071 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E071 E015 \\1',
-  ),
-  320 => 
-  array (
-    'match' => 'E072 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E072 E015 \\1',
-  ),
-  321 => 
-  array (
-    'match' => 'E073 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E073 E015 \\1',
-  ),
-  322 => 
-  array (
-    'match' => 'E074 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E074 E015 \\1',
-  ),
-  323 => 
-  array (
-    'match' => 'E078 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E078 E015 \\1',
-  ),
-  324 => 
-  array (
-    'match' => 'E0FB ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E0FB E015 \\1',
-  ),
-  325 => 
-  array (
-    'match' => 'E101 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E101 E015 \\1',
-  ),
-  326 => 
-  array (
-    'match' => 'E102 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E102 E015 \\1',
-  ),
-  327 => 
-  array (
-    'match' => 'E103 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E103 E015 \\1',
-  ),
-  328 => 
-  array (
-    'match' => 'E104 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E104 E015 \\1',
-  ),
-  329 => 
-  array (
-    'match' => 'E108 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
-    'replace' => 'E108 E015 \\1',
-  ),
-  330 => 
-  array (
-    'match' => 'E047 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E047 E015 \\1',
-  ),
-  331 => 
-  array (
-    'match' => 'E04D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E04D E015 \\1',
-  ),
-  332 => 
-  array (
-    'match' => 'E04E ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E04E E015 \\1',
-  ),
-  333 => 
-  array (
-    'match' => 'E04F ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E04F E015 \\1',
-  ),
-  334 => 
-  array (
-    'match' => 'E050 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E050 E015 \\1',
-  ),
-  335 => 
-  array (
-    'match' => 'E054 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E054 E015 \\1',
-  ),
-  336 => 
-  array (
-    'match' => 'E06B ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E06B E015 \\1',
-  ),
-  337 => 
-  array (
-    'match' => 'E071 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E071 E015 \\1',
-  ),
-  338 => 
-  array (
-    'match' => 'E072 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E072 E015 \\1',
-  ),
-  339 => 
-  array (
-    'match' => 'E073 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E073 E015 \\1',
-  ),
-  340 => 
-  array (
-    'match' => 'E074 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E074 E015 \\1',
-  ),
-  341 => 
-  array (
-    'match' => 'E078 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E078 E015 \\1',
-  ),
-  342 => 
-  array (
-    'match' => 'E0FB ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E0FB E015 \\1',
-  ),
-  343 => 
-  array (
-    'match' => 'E101 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E101 E015 \\1',
-  ),
-  344 => 
-  array (
-    'match' => 'E102 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E102 E015 \\1',
-  ),
-  345 => 
-  array (
-    'match' => 'E103 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E103 E015 \\1',
-  ),
-  346 => 
-  array (
-    'match' => 'E104 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E104 E015 \\1',
-  ),
-  347 => 
-  array (
-    'match' => 'E108 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
-    'replace' => 'E108 E015 \\1',
-  ),
-  348 => 
-  array (
-    'match' => 'E047 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E047 E015 \\1',
-  ),
-  349 => 
-  array (
-    'match' => 'E04D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E04D E015 \\1',
-  ),
-  350 => 
-  array (
-    'match' => 'E04E ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E04E E015 \\1',
-  ),
-  351 => 
-  array (
-    'match' => 'E04F ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E04F E015 \\1',
-  ),
-  352 => 
-  array (
-    'match' => 'E050 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E050 E015 \\1',
-  ),
-  353 => 
-  array (
-    'match' => 'E054 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E054 E015 \\1',
-  ),
-  354 => 
-  array (
-    'match' => 'E06B ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E06B E015 \\1',
-  ),
-  355 => 
-  array (
-    'match' => 'E071 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E071 E015 \\1',
-  ),
-  356 => 
-  array (
-    'match' => 'E072 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E072 E015 \\1',
-  ),
-  357 => 
-  array (
-    'match' => 'E073 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E073 E015 \\1',
-  ),
-  358 => 
-  array (
-    'match' => 'E074 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E074 E015 \\1',
-  ),
-  359 => 
-  array (
-    'match' => 'E078 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E078 E015 \\1',
-  ),
-  360 => 
-  array (
-    'match' => 'E0FB ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E0FB E015 \\1',
-  ),
-  361 => 
-  array (
-    'match' => 'E101 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E101 E015 \\1',
-  ),
-  362 => 
-  array (
-    'match' => 'E102 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E102 E015 \\1',
-  ),
-  363 => 
-  array (
-    'match' => 'E103 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E103 E015 \\1',
-  ),
-  364 => 
-  array (
-    'match' => 'E104 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E104 E015 \\1',
-  ),
-  365 => 
-  array (
-    'match' => 'E108 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
-    'replace' => 'E108 E015 \\1',
-  ),
-  366 => 
-  array (
-    'match' => '200D E00E',
-    'replace' => '094D',
-  ),
-  367 => 
-  array (
-    'match' => 'E00C',
-    'replace' => '094D',
-  ),
-  368 => 
-  array (
-    'match' => 'E00E',
-    'replace' => '094D',
-  ),
-  369 => 
-  array (
-    'match' => 'E043 200D',
-    'replace' => 'E043',
-  ),
-  370 => 
-  array (
-    'match' => 'E044 200D',
-    'replace' => 'E044',
-  ),
-  371 => 
-  array (
-    'match' => 'E045 200D',
-    'replace' => 'E045',
-  ),
-  372 => 
-  array (
-    'match' => 'E046 200D',
-    'replace' => 'E046',
-  ),
-  373 => 
-  array (
-    'match' => 'E047 200D',
-    'replace' => 'E047',
-  ),
-  374 => 
-  array (
-    'match' => 'E048 200D',
-    'replace' => 'E048',
-  ),
-  375 => 
-  array (
-    'match' => 'E049 200D',
-    'replace' => 'E049',
-  ),
-  376 => 
-  array (
-    'match' => 'E04A 200D',
-    'replace' => 'E04A',
-  ),
-  377 => 
-  array (
-    'match' => 'E04B 200D',
-    'replace' => 'E04B',
-  ),
-  378 => 
-  array (
-    'match' => 'E04C 200D',
-    'replace' => 'E04C',
-  ),
-  379 => 
-  array (
-    'match' => 'E04D 200D',
-    'replace' => 'E04D',
-  ),
-  380 => 
-  array (
-    'match' => 'E04E 200D',
-    'replace' => 'E04E',
-  ),
-  381 => 
-  array (
-    'match' => 'E04F 200D',
-    'replace' => 'E04F',
-  ),
-  382 => 
-  array (
-    'match' => 'E050 200D',
-    'replace' => 'E050',
-  ),
-  383 => 
-  array (
-    'match' => 'E051 200D',
-    'replace' => 'E051',
-  ),
-  384 => 
-  array (
-    'match' => 'E052 200D',
-    'replace' => 'E052',
-  ),
-  385 => 
-  array (
-    'match' => 'E053 200D',
-    'replace' => 'E053',
-  ),
-  386 => 
-  array (
-    'match' => 'E054 200D',
-    'replace' => 'E054',
-  ),
-  387 => 
-  array (
-    'match' => 'E055 200D',
-    'replace' => 'E055',
-  ),
-  388 => 
-  array (
-    'match' => 'E056 200D',
-    'replace' => 'E056',
-  ),
-  389 => 
-  array (
-    'match' => 'E057 200D',
-    'replace' => 'E057',
-  ),
-  390 => 
-  array (
-    'match' => 'E058 200D',
-    'replace' => 'E058',
-  ),
-  391 => 
-  array (
-    'match' => 'E059 200D',
-    'replace' => 'E059',
-  ),
-  392 => 
-  array (
-    'match' => 'E05A 200D',
-    'replace' => 'E05A',
-  ),
-  393 => 
-  array (
-    'match' => 'E05B 200D',
-    'replace' => 'E05B',
-  ),
-  394 => 
-  array (
-    'match' => 'E05C 200D',
-    'replace' => 'E05C',
-  ),
-  395 => 
-  array (
-    'match' => 'E05D 200D',
-    'replace' => 'E05D',
-  ),
-  396 => 
-  array (
-    'match' => 'E05E 200D',
-    'replace' => 'E05E',
-  ),
-  397 => 
-  array (
-    'match' => 'E05F 200D',
-    'replace' => 'E05F',
-  ),
-  398 => 
-  array (
-    'match' => 'E060 200D',
-    'replace' => 'E060',
-  ),
-  399 => 
-  array (
-    'match' => 'E061 200D',
-    'replace' => 'E061',
-  ),
-  400 => 
-  array (
-    'match' => 'E062 200D',
-    'replace' => 'E062',
-  ),
-  401 => 
-  array (
-    'match' => 'E063 200D',
-    'replace' => 'E063',
-  ),
-  402 => 
-  array (
-    'match' => 'E064 200D',
-    'replace' => 'E064',
-  ),
-  403 => 
-  array (
-    'match' => 'E065 200D',
-    'replace' => 'E065',
-  ),
-  404 => 
-  array (
-    'match' => 'E066 200D',
-    'replace' => 'E066',
-  ),
-  405 => 
-  array (
-    'match' => 'E067 200D',
-    'replace' => 'E067',
-  ),
-  406 => 
-  array (
-    'match' => 'E068 200D',
-    'replace' => 'E068',
-  ),
-  407 => 
-  array (
-    'match' => 'E069 200D',
-    'replace' => 'E069',
-  ),
-  408 => 
-  array (
-    'match' => 'E06A 200D',
-    'replace' => 'E06A',
-  ),
-  409 => 
-  array (
-    'match' => 'E06B 200D',
-    'replace' => 'E06B',
-  ),
-  410 => 
-  array (
-    'match' => 'E06C 200D',
-    'replace' => 'E06C',
-  ),
-  411 => 
-  array (
-    'match' => 'E06D 200D',
-    'replace' => 'E06D',
-  ),
-  412 => 
-  array (
-    'match' => 'E06E 200D',
-    'replace' => 'E06E',
-  ),
-  413 => 
-  array (
-    'match' => 'E06F 200D',
-    'replace' => 'E06F',
-  ),
-  414 => 
-  array (
-    'match' => 'E070 200D',
-    'replace' => 'E070',
-  ),
-  415 => 
-  array (
-    'match' => 'E071 200D',
-    'replace' => 'E071',
-  ),
-  416 => 
-  array (
-    'match' => 'E072 200D',
-    'replace' => 'E072',
-  ),
-  417 => 
-  array (
-    'match' => 'E073 200D',
-    'replace' => 'E073',
-  ),
-  418 => 
-  array (
-    'match' => 'E074 200D',
-    'replace' => 'E074',
-  ),
-  419 => 
-  array (
-    'match' => 'E075 200D',
-    'replace' => 'E075',
-  ),
-  420 => 
-  array (
-    'match' => 'E076 200D',
-    'replace' => 'E076',
-  ),
-  421 => 
-  array (
-    'match' => 'E077 200D',
-    'replace' => 'E077',
-  ),
-  422 => 
-  array (
-    'match' => 'E078 200D',
-    'replace' => 'E078',
-  ),
-  423 => 
-  array (
-    'match' => 'E079 200D',
-    'replace' => 'E079',
-  ),
-  424 => 
-  array (
-    'match' => 'E07A 200D',
-    'replace' => 'E07A',
-  ),
-  425 => 
-  array (
-    'match' => 'E07B 200D',
-    'replace' => 'E07B',
-  ),
-  426 => 
-  array (
-    'match' => 'E07C 200D',
-    'replace' => 'E07C',
-  ),
-  427 => 
-  array (
-    'match' => 'E07D 200D',
-    'replace' => 'E07D',
-  ),
-  428 => 
-  array (
-    'match' => 'E07E 200D',
-    'replace' => 'E07E',
-  ),
-  429 => 
-  array (
-    'match' => 'E07F 200D',
-    'replace' => 'E07F',
-  ),
-  430 => 
-  array (
-    'match' => 'E080 200D',
-    'replace' => 'E080',
-  ),
-  431 => 
-  array (
-    'match' => 'E081 200D',
-    'replace' => 'E081',
-  ),
-  432 => 
-  array (
-    'match' => 'E082 200D',
-    'replace' => 'E082',
-  ),
-  433 => 
-  array (
-    'match' => 'E083 200D',
-    'replace' => 'E083',
-  ),
-  434 => 
-  array (
-    'match' => 'E084 200D',
-    'replace' => 'E084',
-  ),
-  435 => 
-  array (
-    'match' => 'E085 200D',
-    'replace' => 'E085',
-  ),
-  436 => 
-  array (
-    'match' => 'E086 200D',
-    'replace' => 'E086',
-  ),
-  437 => 
-  array (
-    'match' => 'E087 200D',
-    'replace' => 'E087',
-  ),
-  438 => 
-  array (
-    'match' => 'E088 200D',
-    'replace' => 'E088',
-  ),
-  439 => 
-  array (
-    'match' => 'E089 200D',
-    'replace' => 'E089',
-  ),
-  440 => 
-  array (
-    'match' => 'E08A 200D',
-    'replace' => 'E08A',
-  ),
-  441 => 
-  array (
-    'match' => 'E0D3 200D',
-    'replace' => 'E0D3',
-  ),
-  442 => 
-  array (
-    'match' => 'E0D4 200D',
-    'replace' => 'E0D4',
-  ),
-  443 => 
-  array (
-    'match' => 'E0D5 200D',
-    'replace' => 'E0D5',
-  ),
-  444 => 
-  array (
-    'match' => 'E0D6 200D',
-    'replace' => 'E0D6',
-  ),
-  445 => 
-  array (
-    'match' => 'E0D7 200D',
-    'replace' => 'E0D7',
-  ),
-  446 => 
-  array (
-    'match' => 'E0D8 200D',
-    'replace' => 'E0D8',
-  ),
-  447 => 
-  array (
-    'match' => 'E0D9 200D',
-    'replace' => 'E0D9',
-  ),
-  448 => 
-  array (
-    'match' => 'E0DA 200D',
-    'replace' => 'E0DA',
-  ),
-  449 => 
-  array (
-    'match' => 'E0DB 200D',
-    'replace' => 'E0DB',
-  ),
-  450 => 
-  array (
-    'match' => 'E0DC 200D',
-    'replace' => 'E0DC',
-  ),
-  451 => 
-  array (
-    'match' => 'E0DD 200D',
-    'replace' => 'E0DD',
-  ),
-  452 => 
-  array (
-    'match' => 'E0DE 200D',
-    'replace' => 'E0DE',
-  ),
-  453 => 
-  array (
-    'match' => 'E0DF 200D',
-    'replace' => 'E0DF',
-  ),
-  454 => 
-  array (
-    'match' => 'E0E0 200D',
-    'replace' => 'E0E0',
-  ),
-  455 => 
-  array (
-    'match' => 'E0E1 200D',
-    'replace' => 'E0E1',
-  ),
-  456 => 
-  array (
-    'match' => 'E0E2 200D',
-    'replace' => 'E0E2',
-  ),
-  457 => 
-  array (
-    'match' => 'E0E3 200D',
-    'replace' => 'E0E3',
-  ),
-  458 => 
-  array (
-    'match' => 'E0E4 200D',
-    'replace' => 'E0E4',
-  ),
-  459 => 
-  array (
-    'match' => 'E0E5 200D',
-    'replace' => 'E0E5',
-  ),
-  460 => 
-  array (
-    'match' => 'E0E6 200D',
-    'replace' => 'E0E6',
-  ),
-  461 => 
-  array (
-    'match' => 'E0E7 200D',
-    'replace' => 'E0E7',
-  ),
-  462 => 
-  array (
-    'match' => 'E0E8 200D',
-    'replace' => 'E0E8',
-  ),
-  463 => 
-  array (
-    'match' => 'E0E9 200D',
-    'replace' => 'E0E9',
-  ),
-  464 => 
-  array (
-    'match' => 'E0EA 200D',
-    'replace' => 'E0EA',
-  ),
-  465 => 
-  array (
-    'match' => 'E0EB 200D',
-    'replace' => 'E0EB',
-  ),
-  466 => 
-  array (
-    'match' => 'E0EC 200D',
-    'replace' => 'E0EC',
-  ),
-  467 => 
-  array (
-    'match' => 'E0ED 200D',
-    'replace' => 'E0ED',
-  ),
-  468 => 
-  array (
-    'match' => 'E0EE 200D',
-    'replace' => 'E0EE',
-  ),
-  469 => 
-  array (
-    'match' => 'E0EF 200D',
-    'replace' => 'E0EF',
-  ),
-  470 => 
-  array (
-    'match' => 'E0F0 200D',
-    'replace' => 'E0F0',
-  ),
-  471 => 
-  array (
-    'match' => 'E0F1 200D',
-    'replace' => 'E0F1',
-  ),
-  472 => 
-  array (
-    'match' => 'E0F2 200D',
-    'replace' => 'E0F2',
-  ),
-  473 => 
-  array (
-    'match' => 'E0F3 200D',
-    'replace' => 'E0F3',
-  ),
-  474 => 
-  array (
-    'match' => 'E0F4 200D',
-    'replace' => 'E0F4',
-  ),
-  475 => 
-  array (
-    'match' => 'E0F5 200D',
-    'replace' => 'E0F5',
-  ),
-  476 => 
-  array (
-    'match' => 'E0F6 200D',
-    'replace' => 'E0F6',
-  ),
-  477 => 
-  array (
-    'match' => 'E0F7 200D',
-    'replace' => 'E0F7',
-  ),
-  478 => 
-  array (
-    'match' => 'E0F8 200D',
-    'replace' => 'E0F8',
-  ),
-  479 => 
-  array (
-    'match' => 'E0F9 200D',
-    'replace' => 'E0F9',
-  ),
-  480 => 
-  array (
-    'match' => 'E0FA 200D',
-    'replace' => 'E0FA',
-  ),
-  481 => 
-  array (
-    'match' => 'E0FB 200D',
-    'replace' => 'E0FB',
-  ),
-  482 => 
-  array (
-    'match' => 'E0FC 200D',
-    'replace' => 'E0FC',
-  ),
-  483 => 
-  array (
-    'match' => 'E0FD 200D',
-    'replace' => 'E0FD',
-  ),
-  484 => 
-  array (
-    'match' => 'E0FE 200D',
-    'replace' => 'E0FE',
-  ),
-  485 => 
-  array (
-    'match' => 'E0FF 200D',
-    'replace' => 'E0FF',
-  ),
-  486 => 
-  array (
-    'match' => 'E100 200D',
-    'replace' => 'E100',
-  ),
-  487 => 
-  array (
-    'match' => 'E101 200D',
-    'replace' => 'E101',
-  ),
-  488 => 
-  array (
-    'match' => 'E102 200D',
-    'replace' => 'E102',
-  ),
-  489 => 
-  array (
-    'match' => 'E103 200D',
-    'replace' => 'E103',
-  ),
-  490 => 
-  array (
-    'match' => 'E104 200D',
-    'replace' => 'E104',
-  ),
-  491 => 
-  array (
-    'match' => 'E105 200D',
-    'replace' => 'E105',
-  ),
-  492 => 
-  array (
-    'match' => 'E106 200D',
-    'replace' => 'E106',
-  ),
-  493 => 
-  array (
-    'match' => 'E107 200D',
-    'replace' => 'E107',
-  ),
-  494 => 
-  array (
-    'match' => 'E108 200D',
-    'replace' => 'E108',
-  ),
-  495 => 
-  array (
-    'match' => 'E109 200D',
-    'replace' => 'E109',
-  ),
-  496 => 
-  array (
-    'match' => 'E10A 200D',
-    'replace' => 'E10A',
-  ),
-  497 => 
-  array (
-    'match' => 'E10B 200D',
-    'replace' => 'E10B',
-  ),
-  498 => 
-  array (
-    'match' => 'E10C 200D',
-    'replace' => 'E10C',
-  ),
-  499 => 
-  array (
-    'match' => 'E10D 200D',
-    'replace' => 'E10D',
-  ),
-  500 => 
-  array (
-    'match' => 'E10E 200D',
-    'replace' => 'E10E',
-  ),
-  501 => 
-  array (
-    'match' => 'E10F 200D',
-    'replace' => 'E10F',
-  ),
-  502 => 
-  array (
-    'match' => 'E110 200D',
-    'replace' => 'E110',
-  ),
-  503 => 
-  array (
-    'match' => 'E111 200D',
-    'replace' => 'E111',
-  ),
-  504 => 
-  array (
-    'match' => 'E112 200D',
-    'replace' => 'E112',
-  ),
-  505 => 
-  array (
-    'match' => 'E113 200D',
-    'replace' => 'E113',
-  ),
-  506 => 
-  array (
-    'match' => 'E114 200D',
-    'replace' => 'E114',
-  ),
-  507 => 
-  array (
-    'match' => 'E115 200D',
-    'replace' => 'E115',
-  ),
-  508 => 
-  array (
-    'match' => 'E116 200D',
-    'replace' => 'E116',
-  ),
-  509 => 
-  array (
-    'match' => 'E117 200D',
-    'replace' => 'E117',
-  ),
-  510 => 
-  array (
-    'match' => 'E118 200D',
-    'replace' => 'E118',
-  ),
-  511 => 
-  array (
-    'match' => 'E119 200D',
-    'replace' => 'E119',
-  ),
-  512 => 
-  array (
-    'match' => 'E11A 200D',
-    'replace' => 'E11A',
-  ),
-  513 => 
-  array (
-    'match' => 'E13D 200D',
-    'replace' => 'E13D',
-  ),
-  514 => 
-  array (
-    'match' => 'E13E 200D',
-    'replace' => 'E13E',
-  ),
-  515 => 
-  array (
-    'match' => 'E13F 200D',
-    'replace' => 'E13F',
-  ),
-  516 => 
-  array (
-    'match' => 'E140 200D',
-    'replace' => 'E140',
-  ),
-  517 => 
-  array (
-    'match' => 'E141 200D',
-    'replace' => 'E141',
-  ),
-  518 => 
-  array (
-    'match' => 'E142 200D',
-    'replace' => 'E142',
-  ),
-  519 => 
-  array (
-    'match' => 'E143 200D',
-    'replace' => 'E143',
-  ),
-  520 => 
-  array (
-    'match' => 'E144 200D',
-    'replace' => 'E144',
-  ),
-  521 => 
-  array (
-    'match' => 'E145 200D',
-    'replace' => 'E145',
-  ),
-  522 => 
-  array (
-    'match' => '200D E013',
-    'replace' => 'E013',
-  ),
-  523 => 
-  array (
-    'match' => '200D',
-    'replace' => '200B',
-  ),
-  524 => 
-  array (
-    'match' => '200C',
-    'replace' => '200B',
-  ),
-  525 => 
-  array (
-    'match' => '(093F) E047',
-    'replace' => '\\1 E047 093F',
-  ),
-  526 => 
-  array (
-    'match' => '(093F) E04D',
-    'replace' => '\\1 E04D 093F',
-  ),
-  527 => 
-  array (
-    'match' => '(093F) E04E',
-    'replace' => '\\1 E04E 093F',
-  ),
-  528 => 
-  array (
-    'match' => '(093F) E04F',
-    'replace' => '\\1 E04F 093F',
-  ),
-  529 => 
-  array (
-    'match' => '(093F) E050',
-    'replace' => '\\1 E050 093F',
-  ),
-  530 => 
-  array (
-    'match' => '(093F) E054',
-    'replace' => '\\1 E054 093F',
-  ),
-  531 => 
-  array (
-    'match' => '(093F) E06B',
-    'replace' => '\\1 E06B 093F',
-  ),
-  532 => 
-  array (
-    'match' => '(093F) E071',
-    'replace' => '\\1 E071 093F',
-  ),
-  533 => 
-  array (
-    'match' => '(093F) E072',
-    'replace' => '\\1 E072 093F',
-  ),
-  534 => 
-  array (
-    'match' => '(093F) E073',
-    'replace' => '\\1 E073 093F',
-  ),
-  535 => 
-  array (
-    'match' => '(093F) E074',
-    'replace' => '\\1 E074 093F',
-  ),
-  536 => 
-  array (
-    'match' => '(093F) E078',
-    'replace' => '\\1 E078 093F',
-  ),
-  537 => 
-  array (
-    'match' => '(093F) E0FB',
-    'replace' => '\\1 E0FB 093F',
-  ),
-  538 => 
-  array (
-    'match' => '(093F) E101',
-    'replace' => '\\1 E101 093F',
-  ),
-  539 => 
-  array (
-    'match' => '(093F) E102',
-    'replace' => '\\1 E102 093F',
-  ),
-  540 => 
-  array (
-    'match' => '(093F) E103',
-    'replace' => '\\1 E103 093F',
-  ),
-  541 => 
-  array (
-    'match' => '(093F) E104',
-    'replace' => '\\1 E104 093F',
-  ),
-  542 => 
-  array (
-    'match' => '(093F) E108',
-    'replace' => '\\1 E108 093F',
-  ),
-  543 => 
-  array (
-    'match' => '093F E047 (093F)',
-    'replace' => 'E047 \\1',
-  ),
-  544 => 
-  array (
-    'match' => '093F E04D (093F)',
-    'replace' => 'E04D \\1',
-  ),
-  545 => 
-  array (
-    'match' => '093F E04E (093F)',
-    'replace' => 'E04E \\1',
-  ),
-  546 => 
-  array (
-    'match' => '093F E04F (093F)',
-    'replace' => 'E04F \\1',
-  ),
-  547 => 
-  array (
-    'match' => '093F E050 (093F)',
-    'replace' => 'E050 \\1',
-  ),
-  548 => 
-  array (
-    'match' => '093F E054 (093F)',
-    'replace' => 'E054 \\1',
-  ),
-  549 => 
-  array (
-    'match' => '093F E06B (093F)',
-    'replace' => 'E06B \\1',
-  ),
-  550 => 
-  array (
-    'match' => '093F E071 (093F)',
-    'replace' => 'E071 \\1',
-  ),
-  551 => 
-  array (
-    'match' => '093F E072 (093F)',
-    'replace' => 'E072 \\1',
-  ),
-  552 => 
-  array (
-    'match' => '093F E073 (093F)',
-    'replace' => 'E073 \\1',
-  ),
-  553 => 
-  array (
-    'match' => '093F E074 (093F)',
-    'replace' => 'E074 \\1',
-  ),
-  554 => 
-  array (
-    'match' => '093F E078 (093F)',
-    'replace' => 'E078 \\1',
-  ),
-  555 => 
-  array (
-    'match' => '093F E0FB (093F)',
-    'replace' => 'E0FB \\1',
-  ),
-  556 => 
-  array (
-    'match' => '093F E101 (093F)',
-    'replace' => 'E101 \\1',
-  ),
-  557 => 
-  array (
-    'match' => '093F E102 (093F)',
-    'replace' => 'E102 \\1',
-  ),
-  558 => 
-  array (
-    'match' => '093F E103 (093F)',
-    'replace' => 'E103 \\1',
-  ),
-  559 => 
-  array (
-    'match' => '093F E104 (093F)',
-    'replace' => 'E104 \\1',
-  ),
-  560 => 
-  array (
-    'match' => '093F E108 (093F)',
-    'replace' => 'E108 \\1',
-  ),
-  561 => 
-  array (
-    'match' => '(E015) 0915 E015',
-    'replace' => '\\1 0915',
-  ),
-  562 => 
-  array (
-    'match' => '(E015) 0916 E015',
-    'replace' => '\\1 0916',
-  ),
-  563 => 
-  array (
-    'match' => '(E015) 0917 E015',
-    'replace' => '\\1 0917',
-  ),
-  564 => 
-  array (
-    'match' => '(E015) 0918 E015',
-    'replace' => '\\1 0918',
-  ),
-  565 => 
-  array (
-    'match' => '(E015) 0919 E015',
-    'replace' => '\\1 0919',
-  ),
-  566 => 
-  array (
-    'match' => '(E015) 091A E015',
-    'replace' => '\\1 091A',
-  ),
-  567 => 
-  array (
-    'match' => '(E015) 091B E015',
-    'replace' => '\\1 091B',
-  ),
-  568 => 
-  array (
-    'match' => '(E015) 091C E015',
-    'replace' => '\\1 091C',
-  ),
-  569 => 
-  array (
-    'match' => '(E015) 091D E015',
-    'replace' => '\\1 091D',
-  ),
-  570 => 
-  array (
-    'match' => '(E015) 091E E015',
-    'replace' => '\\1 091E',
-  ),
-  571 => 
-  array (
-    'match' => '(E015) 091F E015',
-    'replace' => '\\1 091F',
-  ),
-  572 => 
-  array (
-    'match' => '(E015) 0920 E015',
-    'replace' => '\\1 0920',
-  ),
-  573 => 
-  array (
-    'match' => '(E015) 0921 E015',
-    'replace' => '\\1 0921',
-  ),
-  574 => 
-  array (
-    'match' => '(E015) 0922 E015',
-    'replace' => '\\1 0922',
-  ),
-  575 => 
-  array (
-    'match' => '(E015) 0923 E015',
-    'replace' => '\\1 0923',
-  ),
-  576 => 
-  array (
-    'match' => '(E015) 0924 E015',
-    'replace' => '\\1 0924',
-  ),
-  577 => 
-  array (
-    'match' => '(E015) 0925 E015',
-    'replace' => '\\1 0925',
-  ),
-  578 => 
-  array (
-    'match' => '(E015) 0926 E015',
-    'replace' => '\\1 0926',
-  ),
-  579 => 
-  array (
-    'match' => '(E015) 0927 E015',
-    'replace' => '\\1 0927',
-  ),
-  580 => 
-  array (
-    'match' => '(E015) 0928 E015',
-    'replace' => '\\1 0928',
-  ),
-  581 => 
-  array (
-    'match' => '(E015) 092A E015',
-    'replace' => '\\1 092A',
-  ),
-  582 => 
-  array (
-    'match' => '(E015) 092B E015',
-    'replace' => '\\1 092B',
-  ),
-  583 => 
-  array (
-    'match' => '(E015) 092C E015',
-    'replace' => '\\1 092C',
-  ),
-  584 => 
-  array (
-    'match' => '(E015) 092D E015',
-    'replace' => '\\1 092D',
-  ),
-  585 => 
-  array (
-    'match' => '(E015) 092E E015',
-    'replace' => '\\1 092E',
-  ),
-  586 => 
-  array (
-    'match' => '(E015) 092F E015',
-    'replace' => '\\1 092F',
-  ),
-  587 => 
-  array (
-    'match' => '(E015) 0930 E015',
-    'replace' => '\\1 0930',
-  ),
-  588 => 
-  array (
-    'match' => '(E015) 0932 E015',
-    'replace' => '\\1 0932',
-  ),
-  589 => 
-  array (
-    'match' => '(E015) 0933 E015',
-    'replace' => '\\1 0933',
-  ),
-  590 => 
-  array (
-    'match' => '(E015) 0935 E015',
-    'replace' => '\\1 0935',
-  ),
-  591 => 
-  array (
-    'match' => '(E015) 0936 E015',
-    'replace' => '\\1 0936',
-  ),
-  592 => 
-  array (
-    'match' => '(E015) 0937 E015',
-    'replace' => '\\1 0937',
-  ),
-  593 => 
-  array (
-    'match' => '(E015) 0938 E015',
-    'replace' => '\\1 0938',
-  ),
-  594 => 
-  array (
-    'match' => '(E015) 0939 E015',
-    'replace' => '\\1 0939',
-  ),
-  595 => 
-  array (
-    'match' => '(E015) E028 E015',
-    'replace' => '\\1 E028',
-  ),
-  596 => 
-  array (
-    'match' => '(E015) E029 E015',
-    'replace' => '\\1 E029',
-  ),
-  597 => 
-  array (
-    'match' => '(E015) E015 E015',
-    'replace' => '\\1 E015',
-  ),
-  598 => 
-  array (
-    'match' => '(E015) 0947 E015',
-    'replace' => '\\1 0947',
-  ),
-  599 => 
-  array (
-    'match' => '(E015) E1A8 E015',
-    'replace' => '\\1 E1A8',
-  ),
-  600 => 
-  array (
-    'match' => '(E015) E1A7 E015',
-    'replace' => '\\1 E1A7',
-  ),
-  601 => 
-  array (
-    'match' => '(E015) E199 E015',
-    'replace' => '\\1 E199',
-  ),
-  602 => 
-  array (
-    'match' => '(E015) E1B2 E015',
-    'replace' => '\\1 E1B2',
-  ),
-  603 => 
-  array (
-    'match' => '(E015) E1B1 E015',
-    'replace' => '\\1 E1B1',
-  ),
-  604 => 
-  array (
-    'match' => '(E015) 0946 E015',
-    'replace' => '\\1 0946',
-  ),
-  605 => 
-  array (
-    'match' => '(E015) E202 E015',
-    'replace' => '\\1 E202',
-  ),
-  606 => 
-  array (
-    'match' => '(E015) E201 E015',
-    'replace' => '\\1 E201',
-  ),
-  607 => 
-  array (
-    'match' => '(E015) E1A3 E015',
-    'replace' => '\\1 E1A3',
-  ),
-  608 => 
-  array (
-    'match' => '(E015) E1C6 E015',
-    'replace' => '\\1 E1C6',
-  ),
-  609 => 
-  array (
-    'match' => '(E015) E1C5 E015',
-    'replace' => '\\1 E1C5',
-  ),
-  610 => 
-  array (
-    'match' => '(E015) 0945 E015',
-    'replace' => '\\1 0945',
-  ),
-  611 => 
-  array (
-    'match' => '(E015) E200 E015',
-    'replace' => '\\1 E200',
-  ),
-  612 => 
-  array (
-    'match' => '(E015) E1FF E015',
-    'replace' => '\\1 E1FF',
-  ),
-  613 => 
-  array (
-    'match' => '(E015) 0948 E015',
-    'replace' => '\\1 0948',
-  ),
-  614 => 
-  array (
-    'match' => '(E015) E1AA E015',
-    'replace' => '\\1 E1AA',
-  ),
-  615 => 
-  array (
-    'match' => '(E015) E1A9 E015',
-    'replace' => '\\1 E1A9',
-  ),
-  616 => 
-  array (
-    'match' => '(E015) E19A E015',
-    'replace' => '\\1 E19A',
-  ),
-  617 => 
-  array (
-    'match' => '(E015) E1B4 E015',
-    'replace' => '\\1 E1B4',
-  ),
-  618 => 
-  array (
-    'match' => '(E015) E1B3 E015',
-    'replace' => '\\1 E1B3',
-  ),
-  619 => 
-  array (
-    'match' => '(E015) 0902 E015',
-    'replace' => '\\1 0902',
-  ),
-  620 => 
-  array (
-    'match' => '(E015) E00F E015',
-    'replace' => '\\1 E00F',
-  ),
-  621 => 
-  array (
-    'match' => '(E015) 0901 E015',
-    'replace' => '\\1 0901',
-  ),
-  622 => 
-  array (
-    'match' => '(E015) 0953 E015',
-    'replace' => '\\1 0953',
-  ),
-  623 => 
-  array (
-    'match' => '(E015) 0954 E015',
-    'replace' => '\\1 0954',
-  ),
-  624 => 
-  array (
-    'match' => '(E015) 0951 E015',
-    'replace' => '\\1 0951',
-  ),
-  625 => 
-  array (
-    'match' => '(E015) 0941 E015',
-    'replace' => '\\1 0941',
-  ),
-  626 => 
-  array (
-    'match' => '(E015) 0942 E015',
-    'replace' => '\\1 0942',
-  ),
-  627 => 
-  array (
-    'match' => '(E015) 0943 E015',
-    'replace' => '\\1 0943',
-  ),
-  628 => 
-  array (
-    'match' => '(E015) 0944 E015',
-    'replace' => '\\1 0944',
-  ),
-  629 => 
-  array (
-    'match' => '(E015) 0952 E015',
-    'replace' => '\\1 0952',
-  ),
-  630 => 
-  array (
-    'match' => '(E015) E013 E015',
-    'replace' => '\\1 E013',
-  ),
-  631 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0915 E015',
-    'replace' => '\\1 0915',
-  ),
-  632 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0916 E015',
-    'replace' => '\\1 0916',
-  ),
-  633 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0917 E015',
-    'replace' => '\\1 0917',
-  ),
-  634 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0918 E015',
-    'replace' => '\\1 0918',
-  ),
-  635 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0919 E015',
-    'replace' => '\\1 0919',
-  ),
-  636 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091A E015',
-    'replace' => '\\1 091A',
-  ),
-  637 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091B E015',
-    'replace' => '\\1 091B',
-  ),
-  638 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091C E015',
-    'replace' => '\\1 091C',
-  ),
-  639 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091D E015',
-    'replace' => '\\1 091D',
-  ),
-  640 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091E E015',
-    'replace' => '\\1 091E',
-  ),
-  641 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091F E015',
-    'replace' => '\\1 091F',
-  ),
-  642 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0920 E015',
-    'replace' => '\\1 0920',
-  ),
-  643 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0921 E015',
-    'replace' => '\\1 0921',
-  ),
-  644 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0922 E015',
-    'replace' => '\\1 0922',
-  ),
-  645 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0923 E015',
-    'replace' => '\\1 0923',
-  ),
-  646 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0924 E015',
-    'replace' => '\\1 0924',
-  ),
-  647 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0925 E015',
-    'replace' => '\\1 0925',
-  ),
-  648 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0926 E015',
-    'replace' => '\\1 0926',
-  ),
-  649 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0927 E015',
-    'replace' => '\\1 0927',
-  ),
-  650 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0928 E015',
-    'replace' => '\\1 0928',
-  ),
-  651 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092A E015',
-    'replace' => '\\1 092A',
-  ),
-  652 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092B E015',
-    'replace' => '\\1 092B',
-  ),
-  653 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092C E015',
-    'replace' => '\\1 092C',
-  ),
-  654 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092D E015',
-    'replace' => '\\1 092D',
-  ),
-  655 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092E E015',
-    'replace' => '\\1 092E',
-  ),
-  656 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092F E015',
-    'replace' => '\\1 092F',
-  ),
-  657 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0930 E015',
-    'replace' => '\\1 0930',
-  ),
-  658 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0932 E015',
-    'replace' => '\\1 0932',
-  ),
-  659 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0933 E015',
-    'replace' => '\\1 0933',
-  ),
-  660 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0935 E015',
-    'replace' => '\\1 0935',
-  ),
-  661 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0936 E015',
-    'replace' => '\\1 0936',
-  ),
-  662 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0937 E015',
-    'replace' => '\\1 0937',
-  ),
-  663 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0938 E015',
-    'replace' => '\\1 0938',
-  ),
-  664 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0939 E015',
-    'replace' => '\\1 0939',
-  ),
-  665 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E028 E015',
-    'replace' => '\\1 E028',
-  ),
-  666 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E029 E015',
-    'replace' => '\\1 E029',
-  ),
-  667 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E015 E015',
-    'replace' => '\\1 E015',
-  ),
-  668 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0947 E015',
-    'replace' => '\\1 0947',
-  ),
-  669 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A8 E015',
-    'replace' => '\\1 E1A8',
-  ),
-  670 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A7 E015',
-    'replace' => '\\1 E1A7',
-  ),
-  671 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E199 E015',
-    'replace' => '\\1 E199',
-  ),
-  672 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B2 E015',
-    'replace' => '\\1 E1B2',
-  ),
-  673 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B1 E015',
-    'replace' => '\\1 E1B1',
-  ),
-  674 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0946 E015',
-    'replace' => '\\1 0946',
-  ),
-  675 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E202 E015',
-    'replace' => '\\1 E202',
-  ),
-  676 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E201 E015',
-    'replace' => '\\1 E201',
-  ),
-  677 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A3 E015',
-    'replace' => '\\1 E1A3',
-  ),
-  678 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1C6 E015',
-    'replace' => '\\1 E1C6',
-  ),
-  679 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1C5 E015',
-    'replace' => '\\1 E1C5',
-  ),
-  680 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0945 E015',
-    'replace' => '\\1 0945',
-  ),
-  681 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E200 E015',
-    'replace' => '\\1 E200',
-  ),
-  682 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1FF E015',
-    'replace' => '\\1 E1FF',
-  ),
-  683 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0948 E015',
-    'replace' => '\\1 0948',
-  ),
-  684 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1AA E015',
-    'replace' => '\\1 E1AA',
-  ),
-  685 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A9 E015',
-    'replace' => '\\1 E1A9',
-  ),
-  686 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E19A E015',
-    'replace' => '\\1 E19A',
-  ),
-  687 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B4 E015',
-    'replace' => '\\1 E1B4',
-  ),
-  688 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B3 E015',
-    'replace' => '\\1 E1B3',
-  ),
-  689 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0902 E015',
-    'replace' => '\\1 0902',
-  ),
-  690 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E00F E015',
-    'replace' => '\\1 E00F',
-  ),
-  691 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0901 E015',
-    'replace' => '\\1 0901',
-  ),
-  692 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0953 E015',
-    'replace' => '\\1 0953',
-  ),
-  693 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0954 E015',
-    'replace' => '\\1 0954',
-  ),
-  694 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0951 E015',
-    'replace' => '\\1 0951',
-  ),
-  695 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0941 E015',
-    'replace' => '\\1 0941',
-  ),
-  696 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0942 E015',
-    'replace' => '\\1 0942',
-  ),
-  697 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0943 E015',
-    'replace' => '\\1 0943',
-  ),
-  698 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0944 E015',
-    'replace' => '\\1 0944',
-  ),
-  699 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0952 E015',
-    'replace' => '\\1 0952',
-  ),
-  700 => 
-  array (
-    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E013 E015',
-    'replace' => '\\1 E013',
-  ),
-  701 => 
-  array (
-    'match' => '(093F) E015',
-    'replace' => '\\1 E015 093F',
-  ),
-  702 => 
-  array (
-    'match' => '093F E015',
-    'replace' => 'E015',
-  ),
-  703 => 
-  array (
-    'match' => '0915 0962',
-    'replace' => 'E153',
-  ),
-  704 => 
-  array (
-    'match' => '0915 0963',
-    'replace' => 'E154',
-  ),
-  705 => 
-  array (
-    'match' => 'E08F 0941',
-    'replace' => 'E155',
-  ),
-  706 => 
-  array (
-    'match' => 'E08F 0942',
-    'replace' => 'E156',
-  ),
-  707 => 
-  array (
-    'match' => 'E08F 0943',
-    'replace' => 'E157',
-  ),
-  708 => 
-  array (
-    'match' => 'E08F 0944',
-    'replace' => 'E158',
-  ),
-  709 => 
-  array (
-    'match' => 'E091 0941',
-    'replace' => 'E159',
-  ),
-  710 => 
-  array (
-    'match' => 'E091 0942',
-    'replace' => 'E15A',
-  ),
-  711 => 
-  array (
-    'match' => 'E091 0943',
-    'replace' => 'E15B',
-  ),
-  712 => 
-  array (
-    'match' => 'E091 0944',
-    'replace' => 'E15C',
-  ),
-  713 => 
-  array (
-    'match' => 'E095 0941',
-    'replace' => 'E15D',
-  ),
-  714 => 
-  array (
-    'match' => 'E095 0942',
-    'replace' => 'E15E',
-  ),
-  715 => 
-  array (
-    'match' => 'E095 0943',
-    'replace' => 'E15F',
-  ),
-  716 => 
-  array (
-    'match' => 'E095 0944',
-    'replace' => 'E160',
-  ),
-  717 => 
-  array (
-    'match' => 'E096 0941',
-    'replace' => 'E161',
-  ),
-  718 => 
-  array (
-    'match' => 'E096 0942',
-    'replace' => 'E162',
-  ),
-  719 => 
-  array (
-    'match' => 'E096 0943',
-    'replace' => 'E163',
-  ),
-  720 => 
-  array (
-    'match' => 'E096 0944',
-    'replace' => 'E164',
-  ),
-  721 => 
-  array (
-    'match' => 'E097 0941',
-    'replace' => 'E165',
-  ),
-  722 => 
-  array (
-    'match' => 'E097 0942',
-    'replace' => 'E166',
-  ),
-  723 => 
-  array (
-    'match' => 'E097 0943',
-    'replace' => 'E167',
-  ),
-  724 => 
-  array (
-    'match' => 'E097 0944',
-    'replace' => 'E168',
-  ),
-  725 => 
-  array (
-    'match' => 'E098 0941',
-    'replace' => 'E169',
-  ),
-  726 => 
-  array (
-    'match' => 'E098 0942',
-    'replace' => 'E16A',
-  ),
-  727 => 
-  array (
-    'match' => 'E098 0943',
-    'replace' => 'E16B',
-  ),
-  728 => 
-  array (
-    'match' => 'E098 0944',
-    'replace' => 'E16C',
-  ),
-  729 => 
-  array (
-    'match' => '0926 0943',
-    'replace' => 'E16D',
-  ),
-  730 => 
-  array (
-    'match' => '092A 0962',
-    'replace' => 'E16E',
-  ),
-  731 => 
-  array (
-    'match' => '092A 0963',
-    'replace' => 'E16F',
-  ),
-  732 => 
-  array (
-    'match' => '0939 0943',
-    'replace' => 'E172',
-  ),
-  733 => 
-  array (
-    'match' => '0939 0944',
-    'replace' => 'E173',
-  ),
-  734 => 
-  array (
-    'match' => 'E0B3 0941',
-    'replace' => 'E174',
-  ),
-  735 => 
-  array (
-    'match' => 'E0B3 0942',
-    'replace' => 'E175',
-  ),
-  736 => 
-  array (
-    'match' => 'E0B3 0943',
-    'replace' => 'E176',
-  ),
-  737 => 
-  array (
-    'match' => 'E0B3 0944',
-    'replace' => 'E177',
-  ),
-  738 => 
-  array (
-    'match' => 'E0B5 0941',
-    'replace' => 'E178',
-  ),
-  739 => 
-  array (
-    'match' => 'E0B5 0942',
-    'replace' => 'E179',
-  ),
-  740 => 
-  array (
-    'match' => 'E0B5 0943',
-    'replace' => 'E17A',
-  ),
-  741 => 
-  array (
-    'match' => 'E0B5 0944',
-    'replace' => 'E17B',
-  ),
-  742 => 
-  array (
-    'match' => 'E0B9 0941',
-    'replace' => 'E17C',
-  ),
-  743 => 
-  array (
-    'match' => 'E0B9 0942',
-    'replace' => 'E17D',
-  ),
-  744 => 
-  array (
-    'match' => 'E0B9 0943',
-    'replace' => 'E17E',
-  ),
-  745 => 
-  array (
-    'match' => 'E0B9 0944',
-    'replace' => 'E17F',
-  ),
-  746 => 
-  array (
-    'match' => 'E0BA 0941',
-    'replace' => 'E180',
-  ),
-  747 => 
-  array (
-    'match' => 'E0BA 0942',
-    'replace' => 'E181',
-  ),
-  748 => 
-  array (
-    'match' => 'E0BA 0943',
-    'replace' => 'E182',
-  ),
-  749 => 
-  array (
-    'match' => 'E0BA 0944',
-    'replace' => 'E183',
-  ),
-  750 => 
-  array (
-    'match' => 'E0BB 0941',
-    'replace' => 'E184',
-  ),
-  751 => 
-  array (
-    'match' => 'E0BB 0942',
-    'replace' => 'E185',
-  ),
-  752 => 
-  array (
-    'match' => 'E0BB 0943',
-    'replace' => 'E186',
-  ),
-  753 => 
-  array (
-    'match' => 'E0BB 0944',
-    'replace' => 'E187',
-  ),
-  754 => 
-  array (
-    'match' => 'E0BC 0941',
-    'replace' => 'E188',
-  ),
-  755 => 
-  array (
-    'match' => 'E0BC 0942',
-    'replace' => 'E189',
-  ),
-  756 => 
-  array (
-    'match' => 'E0BC 0943',
-    'replace' => 'E18A',
-  ),
-  757 => 
-  array (
-    'match' => 'E0BC 0944',
-    'replace' => 'E18B',
-  ),
-  758 => 
-  array (
-    'match' => 'E131 0941',
-    'replace' => 'E18C',
-  ),
-  759 => 
-  array (
-    'match' => 'E131 0942',
-    'replace' => 'E18D',
-  ),
-  760 => 
-  array (
-    'match' => 'E131 0943',
-    'replace' => 'E18E',
-  ),
-  761 => 
-  array (
-    'match' => 'E131 0944',
-    'replace' => 'E18F',
-  ),
-  762 => 
-  array (
-    'match' => 'E132 0941',
-    'replace' => 'E190',
-  ),
-  763 => 
-  array (
-    'match' => 'E132 0942',
-    'replace' => 'E191',
-  ),
-  764 => 
-  array (
-    'match' => 'E132 0943',
-    'replace' => 'E192',
-  ),
-  765 => 
-  array (
-    'match' => 'E132 0944',
-    'replace' => 'E193',
-  ),
-  766 => 
-  array (
-    'match' => '((0930|0931|E0A5|E0C9)) 0941',
-    'replace' => '\\1 E170',
-  ),
-  767 => 
-  array (
-    'match' => '((0930|0931|E0A5|E0C9)) 0942',
-    'replace' => '\\1 E171',
-  ),
-  768 => 
-  array (
-    'match' => '0947 E015',
-    'replace' => 'E199',
-  ),
-  769 => 
-  array (
-    'match' => '0948 E015',
-    'replace' => 'E19A',
-  ),
-  770 => 
-  array (
-    'match' => '0940 E015',
-    'replace' => 'E19B',
-  ),
-  771 => 
-  array (
-    'match' => 'E194 E015',
-    'replace' => 'E19C',
-  ),
-  772 => 
-  array (
-    'match' => 'E195 E015',
-    'replace' => 'E19D',
-  ),
-  773 => 
-  array (
-    'match' => 'E196 E015',
-    'replace' => 'E19E',
-  ),
-  774 => 
-  array (
-    'match' => 'E197 E015',
-    'replace' => 'E19F',
-  ),
-  775 => 
-  array (
-    'match' => 'E198 E015',
-    'replace' => 'E1A0',
-  ),
-  776 => 
-  array (
-    'match' => '094B E015',
-    'replace' => 'E1A1',
-  ),
-  777 => 
-  array (
-    'match' => '094C E015',
-    'replace' => 'E1A2',
-  ),
-  778 => 
-  array (
-    'match' => '0946 E015',
-    'replace' => 'E1A3',
-  ),
-  779 => 
-  array (
-    'match' => '094A E015',
-    'replace' => 'E1A4',
-  ),
-  780 => 
-  array (
-    'match' => '0908 0901',
-    'replace' => 'E1A5',
-  ),
-  781 => 
-  array (
-    'match' => '0908 0902',
-    'replace' => 'E1A6',
-  ),
-  782 => 
-  array (
-    'match' => 'E12F 0901',
-    'replace' => 'E1C9',
-  ),
-  783 => 
-  array (
-    'match' => 'E130 0901',
-    'replace' => 'E1CA',
-  ),
-  784 => 
-  array (
-    'match' => '0945 0901',
-    'replace' => 'E200',
-  ),
-  785 => 
-  array (
-    'match' => '0946 0901',
-    'replace' => 'E202',
-  ),
-  786 => 
-  array (
-    'match' => '0947 0901',
-    'replace' => 'E1A7',
-  ),
-  787 => 
-  array (
-    'match' => '0948 0901',
-    'replace' => 'E1A9',
-  ),
-  788 => 
-  array (
-    'match' => '094B 0901',
-    'replace' => 'E1AB',
-  ),
-  789 => 
-  array (
-    'match' => '094C 0901',
-    'replace' => 'E1AD',
-  ),
-  790 => 
-  array (
-    'match' => '0945 0902',
-    'replace' => 'E1FF',
-  ),
-  791 => 
-  array (
-    'match' => '0946 0902',
-    'replace' => 'E201',
-  ),
-  792 => 
-  array (
-    'match' => '0947 0902',
-    'replace' => 'E1A8',
-  ),
-  793 => 
-  array (
-    'match' => '0948 0902',
-    'replace' => 'E1AA',
-  ),
-  794 => 
-  array (
-    'match' => '094B 0902',
-    'replace' => 'E1AC',
-  ),
-  795 => 
-  array (
-    'match' => '094C 0902',
-    'replace' => 'E1AE',
-  ),
-  796 => 
-  array (
-    'match' => 'E015 0902 0901',
-    'replace' => 'E1B0 E1AF',
-  ),
-  797 => 
-  array (
-    'match' => 'E199 0902 0901',
-    'replace' => 'E1B2 E1B1',
-  ),
-  798 => 
-  array (
-    'match' => 'E19A 0902 0901',
-    'replace' => 'E1B4 E1B3',
-  ),
-  799 => 
-  array (
-    'match' => 'E1A1 0902 0901',
-    'replace' => 'E1C2 E1C1',
-  ),
-  800 => 
-  array (
-    'match' => 'E1A3 0902 0901',
-    'replace' => 'E1C6 E1C5',
-  ),
-  801 => 
-  array (
-    'match' => 'E1A4 0902 0901',
-    'replace' => 'E1C8 E1C7',
-  ),
-  802 => 
-  array (
-    'match' => 'E1A2 0902 0901',
-    'replace' => 'E1C4 E1C3',
-  ),
-  803 => 
-  array (
-    'match' => 'E19B 0901',
-    'replace' => 'E1B5',
-  ),
-  804 => 
-  array (
-    'match' => 'E19C 0901',
-    'replace' => 'E1B6',
-  ),
-  805 => 
-  array (
-    'match' => 'E19D 0901',
-    'replace' => 'E1B7',
-  ),
-  806 => 
-  array (
-    'match' => 'E19E 0901',
-    'replace' => 'E1B8',
-  ),
-  807 => 
-  array (
-    'match' => 'E19F 0901',
-    'replace' => 'E1B9',
-  ),
-  808 => 
-  array (
-    'match' => 'E1A0 0901',
-    'replace' => 'E1BA',
-  ),
-  809 => 
-  array (
-    'match' => 'E19B 0902',
-    'replace' => 'E1BB',
-  ),
-  810 => 
-  array (
-    'match' => 'E19C 0902',
-    'replace' => 'E1BC',
-  ),
-  811 => 
-  array (
-    'match' => 'E19D 0902',
-    'replace' => 'E1BD',
-  ),
-  812 => 
-  array (
-    'match' => 'E19E 0902',
-    'replace' => 'E1BE',
-  ),
-  813 => 
-  array (
-    'match' => 'E19F 0902',
-    'replace' => 'E1BF',
-  ),
-  814 => 
-  array (
-    'match' => 'E1A0 0902',
-    'replace' => 'E1C0',
-  ),
-  815 => 
-  array (
-    'match' => '((0908|E01B|090D|090E|E01F|0910|E021|0914|E025|E016|E017|0940|E194|E195|E196|E197|E198|E19B|E19C|E19D|E19E|E19F|E1A0|0949|094A|E1A4|094B|E1A1|094C|E1A2|E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951)) 0901',
-    'replace' => '\\1 E00F',
-  ),
-  816 => 
-  array (
-    'match' => '093F ((0930|0931))',
-    'replace' => 'E14B \\1',
-  ),
-  817 => 
-  array (
-    'match' => '093F ((0915|0958|E08B|E0AF|0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0920|E031|E096|E0BA|0921|095C|E097|E0BB|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|092B|095E|E0A0|E0C4|0939|E040|E0AC|E0D0|E120|E122|E124|E125|E129|E134|E139))',
-    'replace' => 'E14C \\1',
-  ),
-  818 => 
-  array (
-    'match' => '093F ((0924|E033|E09A|E0BE|092A|E037|E09F|E0C3|092C|E038|E0A1|E0C5|0935|E03C|E0A8|E0CC|0937|E03E|E0AA|E0CE|E11B|E11E|E121|E123|E126|E12F|E130|E131|E132|E137|E138))',
-    'replace' => 'E14D \\1',
-  ),
-  819 => 
-  array (
-    'match' => '093F ((0917|095A|E08D|E0B1|0918|E02A|E08E|E0B2|091A|E02C|E090|E0B4|091B|E02D|E091|E0B5|091E|E02F|E094|E0B8|0925|E034|0927|E036|E09D|E0C1|0928|0929|E09E|E0C2|092D|E039|E0A2|E0C6|092E|E03A|E0A3|E0C7|092F|095F|E0A4|E0C8|0932|E03B|E0A6|E0CA|0933|0934|E0A7|E0CB|0936|E03D|E0A9|E0CD|0938|E03F|E0AB|E0CF|E127|E128|E12A|E135|E136))',
-    'replace' => 'E14E \\1',
-  ),
-  820 => 
-  array (
-    'match' => '((0940|094A|094B|094C|0946|0947|0948)) E015',
-    'replace' => '\\1 E014',
-  ),
-  821 => 
-  array (
-    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) 0940',
-    'replace' => '\\1 E194',
-  ),
-  822 => 
-  array (
-    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) E19B',
-    'replace' => '\\1 E19C',
-  ),
-  823 => 
-  array (
-    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) E1B5',
-    'replace' => '\\1 E1B6',
-  ),
-  824 => 
-  array (
-    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) E1BB',
-    'replace' => '\\1 E1BC',
-  ),
-  825 => 
-  array (
-    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) 0940',
-    'replace' => '\\1 E195',
-  ),
-  826 => 
-  array (
-    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E19B',
-    'replace' => '\\1 E19D',
-  ),
-  827 => 
-  array (
-    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E1B5',
-    'replace' => '\\1 E1B7',
-  ),
-  828 => 
-  array (
-    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E1BB',
-    'replace' => '\\1 E1BD',
-  ),
-  829 => 
-  array (
-    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) 0940',
-    'replace' => '\\1 E198',
-  ),
-  830 => 
-  array (
-    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E19B',
-    'replace' => '\\1 E1A0',
-  ),
-  831 => 
-  array (
-    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E1B5',
-    'replace' => '\\1 E1BA',
-  ),
-  832 => 
-  array (
-    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E1BB',
-    'replace' => '\\1 E1C0',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php
deleted file mode 100644 (file)
index b059f8f..0000000
+++ /dev/null
@@ -1,2994 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0CCD 200C',
-    'replace' => 'E0AD',
-  ),
-  1 => 
-  array (
-    'match' => '200D 0CCD',
-    'replace' => 'E0AC',
-  ),
-  2 => 
-  array (
-    'match' => '0CC6 0CC2',
-    'replace' => '0CCA',
-  ),
-  3 => 
-  array (
-    'match' => '0C95 0CCD 0CB7',
-    'replace' => 'E07D',
-  ),
-  4 => 
-  array (
-    'match' => '0C9C 0CCD 0C9E',
-    'replace' => 'E07E',
-  ),
-  5 => 
-  array (
-    'match' => '0CB0 0CCD',
-    'replace' => 'E00B',
-  ),
-  6 => 
-  array (
-    'match' => '((0C95|0C96|0C97|0C98|0C99|0C9A|0C9B|0C9C|0C9D|0C9E|0C9F|0CA0|0CA1|0CA2|0CA3|0CA4|0CA5|0CA6|0CA7|0CA8|0CAA|0CAB|0CAC|0CAD|0CAE|0CAF|0CB0|0CB1|0CB2|0CB3|0CB5|0CB6|0CB7|0CB8|0CB9|E07D|E07E|E0A3)) 0CCD',
-    'replace' => '\\1 E0AC',
-  ),
-  7 => 
-  array (
-    'match' => '((0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) 0CCD',
-    'replace' => '\\1 E0AC',
-  ),
-  8 => 
-  array (
-    'match' => '(0CBC) 0CCD',
-    'replace' => '\\1 E0AC',
-  ),
-  9 => 
-  array (
-    'match' => '(0020) 0CCD',
-    'replace' => '\\1 E0AC',
-  ),
-  10 => 
-  array (
-    'match' => '(25CC) 0CCD',
-    'replace' => '\\1 E0AC',
-  ),
-  11 => 
-  array (
-    'match' => '0C95 0CBC',
-    'replace' => 'E0E6',
-  ),
-  12 => 
-  array (
-    'match' => '0C96 0CBC',
-    'replace' => 'E0E7',
-  ),
-  13 => 
-  array (
-    'match' => '0C97 0CBC',
-    'replace' => 'E172',
-  ),
-  14 => 
-  array (
-    'match' => '0C98 0CBC',
-    'replace' => 'E173',
-  ),
-  15 => 
-  array (
-    'match' => '0C99 0CBC',
-    'replace' => 'E174',
-  ),
-  16 => 
-  array (
-    'match' => '0C9A 0CBC',
-    'replace' => 'E175',
-  ),
-  17 => 
-  array (
-    'match' => '0C9B 0CBC',
-    'replace' => 'E176',
-  ),
-  18 => 
-  array (
-    'match' => '0C9C 0CBC',
-    'replace' => 'E0E8',
-  ),
-  19 => 
-  array (
-    'match' => '0C9D 0CBC',
-    'replace' => 'E0E9',
-  ),
-  20 => 
-  array (
-    'match' => '0C9E 0CBC',
-    'replace' => 'E177',
-  ),
-  21 => 
-  array (
-    'match' => '0C9F 0CBC',
-    'replace' => 'E178',
-  ),
-  22 => 
-  array (
-    'match' => '0CA0 0CBC',
-    'replace' => 'E179',
-  ),
-  23 => 
-  array (
-    'match' => '0CA1 0CBC',
-    'replace' => 'E17A',
-  ),
-  24 => 
-  array (
-    'match' => '0CA2 0CBC',
-    'replace' => 'E17B',
-  ),
-  25 => 
-  array (
-    'match' => '0CA3 0CBC',
-    'replace' => 'E17C',
-  ),
-  26 => 
-  array (
-    'match' => '0CA4 0CBC',
-    'replace' => 'E17D',
-  ),
-  27 => 
-  array (
-    'match' => '0CA5 0CBC',
-    'replace' => 'E17E',
-  ),
-  28 => 
-  array (
-    'match' => '0CA6 0CBC',
-    'replace' => 'E17F',
-  ),
-  29 => 
-  array (
-    'match' => '0CA7 0CBC',
-    'replace' => 'E180',
-  ),
-  30 => 
-  array (
-    'match' => '0CA8 0CBC',
-    'replace' => 'E181',
-  ),
-  31 => 
-  array (
-    'match' => '0CAA 0CBC',
-    'replace' => 'E182',
-  ),
-  32 => 
-  array (
-    'match' => '0CAB 0CBC',
-    'replace' => 'E0EA',
-  ),
-  33 => 
-  array (
-    'match' => '0CAC 0CBC',
-    'replace' => 'E183',
-  ),
-  34 => 
-  array (
-    'match' => '0CAD 0CBC',
-    'replace' => 'E184',
-  ),
-  35 => 
-  array (
-    'match' => '0CAE 0CBC',
-    'replace' => 'E185',
-  ),
-  36 => 
-  array (
-    'match' => '0CAF 0CBC',
-    'replace' => 'E186',
-  ),
-  37 => 
-  array (
-    'match' => '0CB0 0CBC',
-    'replace' => 'E0EB',
-  ),
-  38 => 
-  array (
-    'match' => '0CB1 0CBC',
-    'replace' => 'E187',
-  ),
-  39 => 
-  array (
-    'match' => '0CB2 0CBC',
-    'replace' => 'E188',
-  ),
-  40 => 
-  array (
-    'match' => '0CB3 0CBC',
-    'replace' => 'E189',
-  ),
-  41 => 
-  array (
-    'match' => '0CB5 0CBC',
-    'replace' => 'E18A',
-  ),
-  42 => 
-  array (
-    'match' => '0CB6 0CBC',
-    'replace' => 'E18B',
-  ),
-  43 => 
-  array (
-    'match' => '0CB7 0CBC',
-    'replace' => 'E18C',
-  ),
-  44 => 
-  array (
-    'match' => '0CB8 0CBC',
-    'replace' => 'E18D',
-  ),
-  45 => 
-  array (
-    'match' => '0CB9 0CBC',
-    'replace' => 'E18E',
-  ),
-  46 => 
-  array (
-    'match' => 'E07D 0CBC',
-    'replace' => 'E117',
-  ),
-  47 => 
-  array (
-    'match' => 'E07E 0CBC',
-    'replace' => 'E118',
-  ),
-  48 => 
-  array (
-    'match' => 'E0A3 0CBC',
-    'replace' => 'E136',
-  ),
-  49 => 
-  array (
-    'match' => 'E0AC 0C95',
-    'replace' => 'E02E',
-  ),
-  50 => 
-  array (
-    'match' => 'E0AC 0C96',
-    'replace' => 'E02F',
-  ),
-  51 => 
-  array (
-    'match' => 'E0AC 0C97',
-    'replace' => 'E030',
-  ),
-  52 => 
-  array (
-    'match' => 'E0AC 0C98',
-    'replace' => 'E031',
-  ),
-  53 => 
-  array (
-    'match' => 'E0AC 0C99',
-    'replace' => 'E032',
-  ),
-  54 => 
-  array (
-    'match' => 'E0AC 0C9A',
-    'replace' => 'E033',
-  ),
-  55 => 
-  array (
-    'match' => 'E0AC 0C9B',
-    'replace' => 'E034',
-  ),
-  56 => 
-  array (
-    'match' => 'E0AC 0C9C',
-    'replace' => 'E035',
-  ),
-  57 => 
-  array (
-    'match' => 'E0AC 0C9D',
-    'replace' => 'E036',
-  ),
-  58 => 
-  array (
-    'match' => 'E0AC 0C9E',
-    'replace' => 'E037',
-  ),
-  59 => 
-  array (
-    'match' => 'E0AC 0C9F',
-    'replace' => 'E038',
-  ),
-  60 => 
-  array (
-    'match' => 'E0AC 0CA0',
-    'replace' => 'E039',
-  ),
-  61 => 
-  array (
-    'match' => 'E0AC 0CA1',
-    'replace' => 'E03A',
-  ),
-  62 => 
-  array (
-    'match' => 'E0AC 0CA2',
-    'replace' => 'E03B',
-  ),
-  63 => 
-  array (
-    'match' => 'E0AC 0CA3',
-    'replace' => 'E03C',
-  ),
-  64 => 
-  array (
-    'match' => 'E0AC 0CA4',
-    'replace' => 'E03D',
-  ),
-  65 => 
-  array (
-    'match' => 'E0AC 0CA5',
-    'replace' => 'E03E',
-  ),
-  66 => 
-  array (
-    'match' => 'E0AC 0CA6',
-    'replace' => 'E03F',
-  ),
-  67 => 
-  array (
-    'match' => 'E0AC 0CA7',
-    'replace' => 'E040',
-  ),
-  68 => 
-  array (
-    'match' => 'E0AC 0CA8',
-    'replace' => 'E041',
-  ),
-  69 => 
-  array (
-    'match' => 'E0AC 0CAA',
-    'replace' => 'E042',
-  ),
-  70 => 
-  array (
-    'match' => 'E0AC 0CAB',
-    'replace' => 'E043',
-  ),
-  71 => 
-  array (
-    'match' => 'E0AC 0CAC',
-    'replace' => 'E044',
-  ),
-  72 => 
-  array (
-    'match' => 'E0AC 0CAD',
-    'replace' => 'E045',
-  ),
-  73 => 
-  array (
-    'match' => 'E0AC 0CAE',
-    'replace' => 'E046',
-  ),
-  74 => 
-  array (
-    'match' => 'E0AC 0CAF',
-    'replace' => 'E047',
-  ),
-  75 => 
-  array (
-    'match' => 'E0AC 0CB0',
-    'replace' => 'E048',
-  ),
-  76 => 
-  array (
-    'match' => 'E0AC 0CB1',
-    'replace' => 'E049',
-  ),
-  77 => 
-  array (
-    'match' => 'E0AC 0CB2',
-    'replace' => 'E04A',
-  ),
-  78 => 
-  array (
-    'match' => 'E0AC 0CB3',
-    'replace' => 'E04B',
-  ),
-  79 => 
-  array (
-    'match' => 'E0AC 0CB5',
-    'replace' => 'E04C',
-  ),
-  80 => 
-  array (
-    'match' => 'E0AC 0CB6',
-    'replace' => 'E04D',
-  ),
-  81 => 
-  array (
-    'match' => 'E0AC 0CB7',
-    'replace' => 'E04E',
-  ),
-  82 => 
-  array (
-    'match' => 'E0AC 0CB8',
-    'replace' => 'E04F',
-  ),
-  83 => 
-  array (
-    'match' => 'E0AC 0CB9',
-    'replace' => 'E050',
-  ),
-  84 => 
-  array (
-    'match' => 'E0AC E07D',
-    'replace' => 'E081',
-  ),
-  85 => 
-  array (
-    'match' => 'E07D E03C',
-    'replace' => 'E0A3',
-  ),
-  86 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E02E',
-    'replace' => '\\1 E052',
-  ),
-  87 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E02F',
-    'replace' => '\\1 E053',
-  ),
-  88 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E030',
-    'replace' => '\\1 E054',
-  ),
-  89 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E031',
-    'replace' => '\\1 E055',
-  ),
-  90 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E032',
-    'replace' => '\\1 E056',
-  ),
-  91 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E033',
-    'replace' => '\\1 E057',
-  ),
-  92 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E034',
-    'replace' => '\\1 E058',
-  ),
-  93 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E035',
-    'replace' => '\\1 E059',
-  ),
-  94 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E036',
-    'replace' => '\\1 E05A',
-  ),
-  95 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E037',
-    'replace' => '\\1 E05B',
-  ),
-  96 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E038',
-    'replace' => '\\1 E05C',
-  ),
-  97 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E039',
-    'replace' => '\\1 E05D',
-  ),
-  98 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03A',
-    'replace' => '\\1 E05E',
-  ),
-  99 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03B',
-    'replace' => '\\1 E05F',
-  ),
-  100 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03C',
-    'replace' => '\\1 E060',
-  ),
-  101 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03D',
-    'replace' => '\\1 E061',
-  ),
-  102 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03E',
-    'replace' => '\\1 E062',
-  ),
-  103 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03F',
-    'replace' => '\\1 E063',
-  ),
-  104 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E040',
-    'replace' => '\\1 E064',
-  ),
-  105 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E041',
-    'replace' => '\\1 E065',
-  ),
-  106 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E042',
-    'replace' => '\\1 E066',
-  ),
-  107 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E043',
-    'replace' => '\\1 E067',
-  ),
-  108 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E044',
-    'replace' => '\\1 E068',
-  ),
-  109 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E045',
-    'replace' => '\\1 E069',
-  ),
-  110 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E046',
-    'replace' => '\\1 E06A',
-  ),
-  111 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E047',
-    'replace' => '\\1 E06B',
-  ),
-  112 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E048',
-    'replace' => '\\1 E06C',
-  ),
-  113 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E049',
-    'replace' => '\\1 E06D',
-  ),
-  114 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04A',
-    'replace' => '\\1 E06E',
-  ),
-  115 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04B',
-    'replace' => '\\1 E06F',
-  ),
-  116 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04C',
-    'replace' => '\\1 E070',
-  ),
-  117 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04D',
-    'replace' => '\\1 E071',
-  ),
-  118 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04E',
-    'replace' => '\\1 E072',
-  ),
-  119 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04F',
-    'replace' => '\\1 E073',
-  ),
-  120 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E050',
-    'replace' => '\\1 E074',
-  ),
-  121 => 
-  array (
-    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E081',
-    'replace' => '\\1 E081',
-  ),
-  122 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E02E',
-    'replace' => '\\1 E052',
-  ),
-  123 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E02F',
-    'replace' => '\\1 E053',
-  ),
-  124 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E030',
-    'replace' => '\\1 E054',
-  ),
-  125 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E031',
-    'replace' => '\\1 E055',
-  ),
-  126 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E032',
-    'replace' => '\\1 E056',
-  ),
-  127 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E033',
-    'replace' => '\\1 E057',
-  ),
-  128 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E034',
-    'replace' => '\\1 E058',
-  ),
-  129 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E035',
-    'replace' => '\\1 E059',
-  ),
-  130 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E036',
-    'replace' => '\\1 E05A',
-  ),
-  131 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E037',
-    'replace' => '\\1 E05B',
-  ),
-  132 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E038',
-    'replace' => '\\1 E05C',
-  ),
-  133 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E039',
-    'replace' => '\\1 E05D',
-  ),
-  134 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03A',
-    'replace' => '\\1 E05E',
-  ),
-  135 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03B',
-    'replace' => '\\1 E05F',
-  ),
-  136 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03C',
-    'replace' => '\\1 E060',
-  ),
-  137 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03D',
-    'replace' => '\\1 E061',
-  ),
-  138 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03E',
-    'replace' => '\\1 E062',
-  ),
-  139 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03F',
-    'replace' => '\\1 E063',
-  ),
-  140 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E040',
-    'replace' => '\\1 E064',
-  ),
-  141 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E041',
-    'replace' => '\\1 E065',
-  ),
-  142 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E042',
-    'replace' => '\\1 E066',
-  ),
-  143 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E043',
-    'replace' => '\\1 E067',
-  ),
-  144 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E044',
-    'replace' => '\\1 E068',
-  ),
-  145 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E045',
-    'replace' => '\\1 E069',
-  ),
-  146 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E046',
-    'replace' => '\\1 E06A',
-  ),
-  147 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E047',
-    'replace' => '\\1 E06B',
-  ),
-  148 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E048',
-    'replace' => '\\1 E06C',
-  ),
-  149 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E049',
-    'replace' => '\\1 E06D',
-  ),
-  150 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04A',
-    'replace' => '\\1 E06E',
-  ),
-  151 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04B',
-    'replace' => '\\1 E06F',
-  ),
-  152 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04C',
-    'replace' => '\\1 E070',
-  ),
-  153 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04D',
-    'replace' => '\\1 E071',
-  ),
-  154 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04E',
-    'replace' => '\\1 E072',
-  ),
-  155 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04F',
-    'replace' => '\\1 E073',
-  ),
-  156 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E050',
-    'replace' => '\\1 E074',
-  ),
-  157 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E081',
-    'replace' => '\\1 E081',
-  ),
-  158 => 
-  array (
-    'match' => '(E07D) E02E',
-    'replace' => '\\1 E052',
-  ),
-  159 => 
-  array (
-    'match' => '(E07D) E02F',
-    'replace' => '\\1 E053',
-  ),
-  160 => 
-  array (
-    'match' => '(E07D) E030',
-    'replace' => '\\1 E054',
-  ),
-  161 => 
-  array (
-    'match' => '(E07D) E031',
-    'replace' => '\\1 E055',
-  ),
-  162 => 
-  array (
-    'match' => '(E07D) E032',
-    'replace' => '\\1 E056',
-  ),
-  163 => 
-  array (
-    'match' => '(E07D) E033',
-    'replace' => '\\1 E057',
-  ),
-  164 => 
-  array (
-    'match' => '(E07D) E034',
-    'replace' => '\\1 E058',
-  ),
-  165 => 
-  array (
-    'match' => '(E07D) E035',
-    'replace' => '\\1 E059',
-  ),
-  166 => 
-  array (
-    'match' => '(E07D) E036',
-    'replace' => '\\1 E05A',
-  ),
-  167 => 
-  array (
-    'match' => '(E07D) E037',
-    'replace' => '\\1 E05B',
-  ),
-  168 => 
-  array (
-    'match' => '(E07D) E038',
-    'replace' => '\\1 E05C',
-  ),
-  169 => 
-  array (
-    'match' => '(E07D) E039',
-    'replace' => '\\1 E05D',
-  ),
-  170 => 
-  array (
-    'match' => '(E07D) E03A',
-    'replace' => '\\1 E05E',
-  ),
-  171 => 
-  array (
-    'match' => '(E07D) E03B',
-    'replace' => '\\1 E05F',
-  ),
-  172 => 
-  array (
-    'match' => '(E07D) E03C',
-    'replace' => '\\1 E060',
-  ),
-  173 => 
-  array (
-    'match' => '(E07D) E03D',
-    'replace' => '\\1 E061',
-  ),
-  174 => 
-  array (
-    'match' => '(E07D) E03E',
-    'replace' => '\\1 E062',
-  ),
-  175 => 
-  array (
-    'match' => '(E07D) E03F',
-    'replace' => '\\1 E063',
-  ),
-  176 => 
-  array (
-    'match' => '(E07D) E040',
-    'replace' => '\\1 E064',
-  ),
-  177 => 
-  array (
-    'match' => '(E07D) E041',
-    'replace' => '\\1 E065',
-  ),
-  178 => 
-  array (
-    'match' => '(E07D) E042',
-    'replace' => '\\1 E066',
-  ),
-  179 => 
-  array (
-    'match' => '(E07D) E043',
-    'replace' => '\\1 E067',
-  ),
-  180 => 
-  array (
-    'match' => '(E07D) E044',
-    'replace' => '\\1 E068',
-  ),
-  181 => 
-  array (
-    'match' => '(E07D) E045',
-    'replace' => '\\1 E069',
-  ),
-  182 => 
-  array (
-    'match' => '(E07D) E046',
-    'replace' => '\\1 E06A',
-  ),
-  183 => 
-  array (
-    'match' => '(E07D) E047',
-    'replace' => '\\1 E06B',
-  ),
-  184 => 
-  array (
-    'match' => '(E07D) E048',
-    'replace' => '\\1 E06C',
-  ),
-  185 => 
-  array (
-    'match' => '(E07D) E049',
-    'replace' => '\\1 E06D',
-  ),
-  186 => 
-  array (
-    'match' => '(E07D) E04A',
-    'replace' => '\\1 E06E',
-  ),
-  187 => 
-  array (
-    'match' => '(E07D) E04B',
-    'replace' => '\\1 E06F',
-  ),
-  188 => 
-  array (
-    'match' => '(E07D) E04C',
-    'replace' => '\\1 E070',
-  ),
-  189 => 
-  array (
-    'match' => '(E07D) E04D',
-    'replace' => '\\1 E071',
-  ),
-  190 => 
-  array (
-    'match' => '(E07D) E04E',
-    'replace' => '\\1 E072',
-  ),
-  191 => 
-  array (
-    'match' => '(E07D) E04F',
-    'replace' => '\\1 E073',
-  ),
-  192 => 
-  array (
-    'match' => '(E07D) E050',
-    'replace' => '\\1 E074',
-  ),
-  193 => 
-  array (
-    'match' => '(E07D) E081',
-    'replace' => '\\1 E081',
-  ),
-  194 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02E',
-    'replace' => '\\1 E052',
-  ),
-  195 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02F',
-    'replace' => '\\1 E053',
-  ),
-  196 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E030',
-    'replace' => '\\1 E054',
-  ),
-  197 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E031',
-    'replace' => '\\1 E055',
-  ),
-  198 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E032',
-    'replace' => '\\1 E056',
-  ),
-  199 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E033',
-    'replace' => '\\1 E057',
-  ),
-  200 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E034',
-    'replace' => '\\1 E058',
-  ),
-  201 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E035',
-    'replace' => '\\1 E059',
-  ),
-  202 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E036',
-    'replace' => '\\1 E05A',
-  ),
-  203 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E037',
-    'replace' => '\\1 E05B',
-  ),
-  204 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E038',
-    'replace' => '\\1 E05C',
-  ),
-  205 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E039',
-    'replace' => '\\1 E05D',
-  ),
-  206 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03A',
-    'replace' => '\\1 E05E',
-  ),
-  207 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03B',
-    'replace' => '\\1 E05F',
-  ),
-  208 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03C',
-    'replace' => '\\1 E060',
-  ),
-  209 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03D',
-    'replace' => '\\1 E061',
-  ),
-  210 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03E',
-    'replace' => '\\1 E062',
-  ),
-  211 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03F',
-    'replace' => '\\1 E063',
-  ),
-  212 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E040',
-    'replace' => '\\1 E064',
-  ),
-  213 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E041',
-    'replace' => '\\1 E065',
-  ),
-  214 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E042',
-    'replace' => '\\1 E066',
-  ),
-  215 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E043',
-    'replace' => '\\1 E067',
-  ),
-  216 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E044',
-    'replace' => '\\1 E068',
-  ),
-  217 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E045',
-    'replace' => '\\1 E069',
-  ),
-  218 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E046',
-    'replace' => '\\1 E06A',
-  ),
-  219 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E047',
-    'replace' => '\\1 E06B',
-  ),
-  220 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E048',
-    'replace' => '\\1 E06C',
-  ),
-  221 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E049',
-    'replace' => '\\1 E06D',
-  ),
-  222 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04A',
-    'replace' => '\\1 E06E',
-  ),
-  223 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04B',
-    'replace' => '\\1 E06F',
-  ),
-  224 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04C',
-    'replace' => '\\1 E070',
-  ),
-  225 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04D',
-    'replace' => '\\1 E071',
-  ),
-  226 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04E',
-    'replace' => '\\1 E072',
-  ),
-  227 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04F',
-    'replace' => '\\1 E073',
-  ),
-  228 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E050',
-    'replace' => '\\1 E074',
-  ),
-  229 => 
-  array (
-    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E081',
-    'replace' => '\\1 E081',
-  ),
-  230 => 
-  array (
-    'match' => '(E07E) E02E',
-    'replace' => '\\1 E052',
-  ),
-  231 => 
-  array (
-    'match' => '(E07E) E02F',
-    'replace' => '\\1 E053',
-  ),
-  232 => 
-  array (
-    'match' => '(E07E) E030',
-    'replace' => '\\1 E054',
-  ),
-  233 => 
-  array (
-    'match' => '(E07E) E031',
-    'replace' => '\\1 E055',
-  ),
-  234 => 
-  array (
-    'match' => '(E07E) E032',
-    'replace' => '\\1 E056',
-  ),
-  235 => 
-  array (
-    'match' => '(E07E) E033',
-    'replace' => '\\1 E057',
-  ),
-  236 => 
-  array (
-    'match' => '(E07E) E034',
-    'replace' => '\\1 E058',
-  ),
-  237 => 
-  array (
-    'match' => '(E07E) E035',
-    'replace' => '\\1 E059',
-  ),
-  238 => 
-  array (
-    'match' => '(E07E) E036',
-    'replace' => '\\1 E05A',
-  ),
-  239 => 
-  array (
-    'match' => '(E07E) E037',
-    'replace' => '\\1 E05B',
-  ),
-  240 => 
-  array (
-    'match' => '(E07E) E038',
-    'replace' => '\\1 E05C',
-  ),
-  241 => 
-  array (
-    'match' => '(E07E) E039',
-    'replace' => '\\1 E05D',
-  ),
-  242 => 
-  array (
-    'match' => '(E07E) E03A',
-    'replace' => '\\1 E05E',
-  ),
-  243 => 
-  array (
-    'match' => '(E07E) E03B',
-    'replace' => '\\1 E05F',
-  ),
-  244 => 
-  array (
-    'match' => '(E07E) E03C',
-    'replace' => '\\1 E060',
-  ),
-  245 => 
-  array (
-    'match' => '(E07E) E03D',
-    'replace' => '\\1 E061',
-  ),
-  246 => 
-  array (
-    'match' => '(E07E) E03E',
-    'replace' => '\\1 E062',
-  ),
-  247 => 
-  array (
-    'match' => '(E07E) E03F',
-    'replace' => '\\1 E063',
-  ),
-  248 => 
-  array (
-    'match' => '(E07E) E040',
-    'replace' => '\\1 E064',
-  ),
-  249 => 
-  array (
-    'match' => '(E07E) E041',
-    'replace' => '\\1 E065',
-  ),
-  250 => 
-  array (
-    'match' => '(E07E) E042',
-    'replace' => '\\1 E066',
-  ),
-  251 => 
-  array (
-    'match' => '(E07E) E043',
-    'replace' => '\\1 E067',
-  ),
-  252 => 
-  array (
-    'match' => '(E07E) E044',
-    'replace' => '\\1 E068',
-  ),
-  253 => 
-  array (
-    'match' => '(E07E) E045',
-    'replace' => '\\1 E069',
-  ),
-  254 => 
-  array (
-    'match' => '(E07E) E046',
-    'replace' => '\\1 E06A',
-  ),
-  255 => 
-  array (
-    'match' => '(E07E) E047',
-    'replace' => '\\1 E06B',
-  ),
-  256 => 
-  array (
-    'match' => '(E07E) E048',
-    'replace' => '\\1 E06C',
-  ),
-  257 => 
-  array (
-    'match' => '(E07E) E049',
-    'replace' => '\\1 E06D',
-  ),
-  258 => 
-  array (
-    'match' => '(E07E) E04A',
-    'replace' => '\\1 E06E',
-  ),
-  259 => 
-  array (
-    'match' => '(E07E) E04B',
-    'replace' => '\\1 E06F',
-  ),
-  260 => 
-  array (
-    'match' => '(E07E) E04C',
-    'replace' => '\\1 E070',
-  ),
-  261 => 
-  array (
-    'match' => '(E07E) E04D',
-    'replace' => '\\1 E071',
-  ),
-  262 => 
-  array (
-    'match' => '(E07E) E04E',
-    'replace' => '\\1 E072',
-  ),
-  263 => 
-  array (
-    'match' => '(E07E) E04F',
-    'replace' => '\\1 E073',
-  ),
-  264 => 
-  array (
-    'match' => '(E07E) E050',
-    'replace' => '\\1 E074',
-  ),
-  265 => 
-  array (
-    'match' => '(E07E) E081',
-    'replace' => '\\1 E081',
-  ),
-  266 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02E',
-    'replace' => '\\1 E052',
-  ),
-  267 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02F',
-    'replace' => '\\1 E053',
-  ),
-  268 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E030',
-    'replace' => '\\1 E054',
-  ),
-  269 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E031',
-    'replace' => '\\1 E055',
-  ),
-  270 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E032',
-    'replace' => '\\1 E056',
-  ),
-  271 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E033',
-    'replace' => '\\1 E057',
-  ),
-  272 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E034',
-    'replace' => '\\1 E058',
-  ),
-  273 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E035',
-    'replace' => '\\1 E059',
-  ),
-  274 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E036',
-    'replace' => '\\1 E05A',
-  ),
-  275 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E037',
-    'replace' => '\\1 E05B',
-  ),
-  276 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E038',
-    'replace' => '\\1 E05C',
-  ),
-  277 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E039',
-    'replace' => '\\1 E05D',
-  ),
-  278 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03A',
-    'replace' => '\\1 E05E',
-  ),
-  279 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03B',
-    'replace' => '\\1 E05F',
-  ),
-  280 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03C',
-    'replace' => '\\1 E060',
-  ),
-  281 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03D',
-    'replace' => '\\1 E061',
-  ),
-  282 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03E',
-    'replace' => '\\1 E062',
-  ),
-  283 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03F',
-    'replace' => '\\1 E063',
-  ),
-  284 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E040',
-    'replace' => '\\1 E064',
-  ),
-  285 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E041',
-    'replace' => '\\1 E065',
-  ),
-  286 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E042',
-    'replace' => '\\1 E066',
-  ),
-  287 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E043',
-    'replace' => '\\1 E067',
-  ),
-  288 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E044',
-    'replace' => '\\1 E068',
-  ),
-  289 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E045',
-    'replace' => '\\1 E069',
-  ),
-  290 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E046',
-    'replace' => '\\1 E06A',
-  ),
-  291 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E047',
-    'replace' => '\\1 E06B',
-  ),
-  292 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E048',
-    'replace' => '\\1 E06C',
-  ),
-  293 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E049',
-    'replace' => '\\1 E06D',
-  ),
-  294 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04A',
-    'replace' => '\\1 E06E',
-  ),
-  295 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04B',
-    'replace' => '\\1 E06F',
-  ),
-  296 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04C',
-    'replace' => '\\1 E070',
-  ),
-  297 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04D',
-    'replace' => '\\1 E071',
-  ),
-  298 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04E',
-    'replace' => '\\1 E072',
-  ),
-  299 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04F',
-    'replace' => '\\1 E073',
-  ),
-  300 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E050',
-    'replace' => '\\1 E074',
-  ),
-  301 => 
-  array (
-    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E081',
-    'replace' => '\\1 E081',
-  ),
-  302 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03D',
-    'replace' => '\\1 E076',
-  ),
-  303 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E041',
-    'replace' => '\\1 E077',
-  ),
-  304 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E046',
-    'replace' => '\\1 E078',
-  ),
-  305 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E047',
-    'replace' => '\\1 E079',
-  ),
-  306 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E048',
-    'replace' => '\\1 E07A',
-  ),
-  307 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04A',
-    'replace' => '\\1 E07B',
-  ),
-  308 => 
-  array (
-    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04E',
-    'replace' => '\\1 E07C',
-  ),
-  309 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E030',
-    'replace' => '\\1 E104',
-  ),
-  310 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E032',
-    'replace' => '\\1 E105',
-  ),
-  311 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E034',
-    'replace' => '\\1 E106',
-  ),
-  312 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E035',
-    'replace' => '\\1 E107',
-  ),
-  313 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E036',
-    'replace' => '\\1 E108',
-  ),
-  314 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E037',
-    'replace' => '\\1 E109',
-  ),
-  315 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E039',
-    'replace' => '\\1 E10A',
-  ),
-  316 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03A',
-    'replace' => '\\1 E10B',
-  ),
-  317 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03B',
-    'replace' => '\\1 E10C',
-  ),
-  318 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03C',
-    'replace' => '\\1 E10D',
-  ),
-  319 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03E',
-    'replace' => '\\1 E10E',
-  ),
-  320 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03F',
-    'replace' => '\\1 E10F',
-  ),
-  321 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E040',
-    'replace' => '\\1 E110',
-  ),
-  322 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E049',
-    'replace' => '\\1 E111',
-  ),
-  323 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E04A',
-    'replace' => '\\1 E112',
-  ),
-  324 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E04C',
-    'replace' => '\\1 E113',
-  ),
-  325 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E04E',
-    'replace' => '\\1 E114',
-  ),
-  326 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E050',
-    'replace' => '\\1 E115',
-  ),
-  327 => 
-  array (
-    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E051',
-    'replace' => '\\1 E116',
-  ),
-  328 => 
-  array (
-    'match' => '((0CAA|0CAB|0CB5|E182|E0EA|E18A)) 0CC1',
-    'replace' => '\\1 E007',
-  ),
-  329 => 
-  array (
-    'match' => '((0CAA|0CAB|0CB5|E182|E0EA|E18A)) 0CC2',
-    'replace' => '\\1 E009',
-  ),
-  330 => 
-  array (
-    'match' => '((0CB3|E189)) 0CC1',
-    'replace' => '\\1 E008',
-  ),
-  331 => 
-  array (
-    'match' => '((0CB3|E189)) 0CC2',
-    'replace' => '\\1 E00A',
-  ),
-  332 => 
-  array (
-    'match' => '0C98 0CC1',
-    'replace' => 'E0A5',
-  ),
-  333 => 
-  array (
-    'match' => '0C98 0CC6',
-    'replace' => 'E0A6',
-  ),
-  334 => 
-  array (
-    'match' => '0C98 0CCA',
-    'replace' => 'E0A7',
-  ),
-  335 => 
-  array (
-    'match' => '0C98 0CCB',
-    'replace' => 'E0A8',
-  ),
-  336 => 
-  array (
-    'match' => '0C99 0CC6',
-    'replace' => 'E0A9',
-  ),
-  337 => 
-  array (
-    'match' => '0C99 0CCA',
-    'replace' => 'E0AA',
-  ),
-  338 => 
-  array (
-    'match' => '0C99 0CCB',
-    'replace' => 'E0AB',
-  ),
-  339 => 
-  array (
-    'match' => '0C9E 0CC1',
-    'replace' => 'E0D8',
-  ),
-  340 => 
-  array (
-    'match' => '0C9E 0CC2',
-    'replace' => 'E0D9',
-  ),
-  341 => 
-  array (
-    'match' => '0C9E 0CC6',
-    'replace' => 'E0DA',
-  ),
-  342 => 
-  array (
-    'match' => '0C9E 0CCA',
-    'replace' => 'E0DB',
-  ),
-  343 => 
-  array (
-    'match' => '0CB1 0CC6',
-    'replace' => 'E0AC',
-  ),
-  344 => 
-  array (
-    'match' => '0CB1 0CCA',
-    'replace' => 'E0AD',
-  ),
-  345 => 
-  array (
-    'match' => '0CB1 0CCB',
-    'replace' => 'E0AE',
-  ),
-  346 => 
-  array (
-    'match' => '0CAA 0CCA',
-    'replace' => 'E0AF',
-  ),
-  347 => 
-  array (
-    'match' => '0CAB 0CCA',
-    'replace' => 'E0B0',
-  ),
-  348 => 
-  array (
-    'match' => '0CB5 0CCA',
-    'replace' => 'E0B1',
-  ),
-  349 => 
-  array (
-    'match' => '0C9D 0CC6',
-    'replace' => 'E0DD',
-  ),
-  350 => 
-  array (
-    'match' => '0C9D 0CCA',
-    'replace' => 'E0DE',
-  ),
-  351 => 
-  array (
-    'match' => '0C9D 0CCB',
-    'replace' => 'E0DF',
-  ),
-  352 => 
-  array (
-    'match' => '0CAE 0CC6',
-    'replace' => 'E0E0',
-  ),
-  353 => 
-  array (
-    'match' => '0CAE 0CCA',
-    'replace' => 'E0E1',
-  ),
-  354 => 
-  array (
-    'match' => '0CAE 0CCB',
-    'replace' => 'E0E2',
-  ),
-  355 => 
-  array (
-    'match' => '0CAF 0CC6',
-    'replace' => 'E0E3',
-  ),
-  356 => 
-  array (
-    'match' => '0CAF 0CCA',
-    'replace' => 'E0E4',
-  ),
-  357 => 
-  array (
-    'match' => '0CAF 0CCB',
-    'replace' => 'E0E5',
-  ),
-  358 => 
-  array (
-    'match' => '0CB3 0CCA',
-    'replace' => 'E0DC',
-  ),
-  359 => 
-  array (
-    'match' => 'E173 0CC1',
-    'replace' => 'E138',
-  ),
-  360 => 
-  array (
-    'match' => 'E173 0CC6',
-    'replace' => 'E139',
-  ),
-  361 => 
-  array (
-    'match' => 'E173 0CCA',
-    'replace' => 'E13A',
-  ),
-  362 => 
-  array (
-    'match' => 'E174 0CC6',
-    'replace' => 'E13C',
-  ),
-  363 => 
-  array (
-    'match' => 'E174 0CCA',
-    'replace' => 'E13D',
-  ),
-  364 => 
-  array (
-    'match' => 'E187 0CC6',
-    'replace' => 'E13F',
-  ),
-  365 => 
-  array (
-    'match' => 'E187 0CCA',
-    'replace' => 'E140',
-  ),
-  366 => 
-  array (
-    'match' => 'E182 0CCA',
-    'replace' => 'E142',
-  ),
-  367 => 
-  array (
-    'match' => 'E0EA 0CCA',
-    'replace' => 'E0FC',
-  ),
-  368 => 
-  array (
-    'match' => 'E18A 0CCA',
-    'replace' => 'E143',
-  ),
-  369 => 
-  array (
-    'match' => 'E177 0CC1',
-    'replace' => 'E164',
-  ),
-  370 => 
-  array (
-    'match' => 'E177 0CC2',
-    'replace' => 'E165',
-  ),
-  371 => 
-  array (
-    'match' => 'E177 0CC6',
-    'replace' => 'E166',
-  ),
-  372 => 
-  array (
-    'match' => 'E177 0CCA',
-    'replace' => 'E167',
-  ),
-  373 => 
-  array (
-    'match' => 'E189 0CCA',
-    'replace' => 'E168',
-  ),
-  374 => 
-  array (
-    'match' => 'E0E9 0CC6',
-    'replace' => 'E0F6',
-  ),
-  375 => 
-  array (
-    'match' => 'E0E9 0CCA',
-    'replace' => 'E0F8',
-  ),
-  376 => 
-  array (
-    'match' => 'E185 0CC6',
-    'replace' => 'E16C',
-  ),
-  377 => 
-  array (
-    'match' => 'E185 0CCA',
-    'replace' => 'E16D',
-  ),
-  378 => 
-  array (
-    'match' => 'E186 0CC6',
-    'replace' => 'E16F',
-  ),
-  379 => 
-  array (
-    'match' => 'E186 0CCA',
-    'replace' => 'E170',
-  ),
-  380 => 
-  array (
-    'match' => '0C95 0CBF',
-    'replace' => 'E082',
-  ),
-  381 => 
-  array (
-    'match' => '0C96 0CBF',
-    'replace' => 'E083',
-  ),
-  382 => 
-  array (
-    'match' => '0C97 0CBF',
-    'replace' => 'E084',
-  ),
-  383 => 
-  array (
-    'match' => '0C98 0CBF',
-    'replace' => 'E085',
-  ),
-  384 => 
-  array (
-    'match' => '0C9A 0CBF',
-    'replace' => 'E086',
-  ),
-  385 => 
-  array (
-    'match' => '0C9B 0CBF',
-    'replace' => 'E087',
-  ),
-  386 => 
-  array (
-    'match' => '0C9C 0CBF',
-    'replace' => 'E088',
-  ),
-  387 => 
-  array (
-    'match' => '0C9D 0CBF',
-    'replace' => 'E089',
-  ),
-  388 => 
-  array (
-    'match' => '0CA0 0CBF',
-    'replace' => 'E08A',
-  ),
-  389 => 
-  array (
-    'match' => '0CA1 0CBF',
-    'replace' => 'E08B',
-  ),
-  390 => 
-  array (
-    'match' => '0CA2 0CBF',
-    'replace' => 'E08C',
-  ),
-  391 => 
-  array (
-    'match' => '0CA3 0CBF',
-    'replace' => 'E08D',
-  ),
-  392 => 
-  array (
-    'match' => '0CA4 0CBF',
-    'replace' => 'E08E',
-  ),
-  393 => 
-  array (
-    'match' => '0CA5 0CBF',
-    'replace' => 'E08F',
-  ),
-  394 => 
-  array (
-    'match' => '0CA6 0CBF',
-    'replace' => 'E090',
-  ),
-  395 => 
-  array (
-    'match' => '0CA7 0CBF',
-    'replace' => 'E091',
-  ),
-  396 => 
-  array (
-    'match' => '0CA8 0CBF',
-    'replace' => 'E092',
-  ),
-  397 => 
-  array (
-    'match' => '0CAA 0CBF',
-    'replace' => 'E093',
-  ),
-  398 => 
-  array (
-    'match' => '0CAB 0CBF',
-    'replace' => 'E094',
-  ),
-  399 => 
-  array (
-    'match' => '0CAC 0CBF',
-    'replace' => 'E095',
-  ),
-  400 => 
-  array (
-    'match' => '0CAD 0CBF',
-    'replace' => 'E096',
-  ),
-  401 => 
-  array (
-    'match' => '0CAE 0CBF',
-    'replace' => 'E097',
-  ),
-  402 => 
-  array (
-    'match' => '0CAF 0CBF',
-    'replace' => 'E098',
-  ),
-  403 => 
-  array (
-    'match' => '0CB0 0CBF',
-    'replace' => 'E099',
-  ),
-  404 => 
-  array (
-    'match' => '0CB2 0CBF',
-    'replace' => 'E09A',
-  ),
-  405 => 
-  array (
-    'match' => '0CB3 0CBF',
-    'replace' => 'E09B',
-  ),
-  406 => 
-  array (
-    'match' => '0CB5 0CBF',
-    'replace' => 'E09C',
-  ),
-  407 => 
-  array (
-    'match' => '0CB6 0CBF',
-    'replace' => 'E09D',
-  ),
-  408 => 
-  array (
-    'match' => '0CB7 0CBF',
-    'replace' => 'E09E',
-  ),
-  409 => 
-  array (
-    'match' => '0CB8 0CBF',
-    'replace' => 'E09F',
-  ),
-  410 => 
-  array (
-    'match' => '0CB9 0CBF',
-    'replace' => 'E0A0',
-  ),
-  411 => 
-  array (
-    'match' => 'E07D 0CBF',
-    'replace' => 'E0A1',
-  ),
-  412 => 
-  array (
-    'match' => 'E07E 0CBF',
-    'replace' => 'E0A2',
-  ),
-  413 => 
-  array (
-    'match' => 'E0E6 0CBF',
-    'replace' => 'E0F2',
-  ),
-  414 => 
-  array (
-    'match' => 'E0E7 0CBF',
-    'replace' => 'E0F3',
-  ),
-  415 => 
-  array (
-    'match' => 'E172 0CBF',
-    'replace' => 'E11B',
-  ),
-  416 => 
-  array (
-    'match' => 'E173 0CBF',
-    'replace' => 'E11C',
-  ),
-  417 => 
-  array (
-    'match' => 'E175 0CBF',
-    'replace' => 'E11D',
-  ),
-  418 => 
-  array (
-    'match' => 'E176 0CBF',
-    'replace' => 'E11E',
-  ),
-  419 => 
-  array (
-    'match' => 'E0E8 0CBF',
-    'replace' => 'E0F4',
-  ),
-  420 => 
-  array (
-    'match' => 'E0E9 0CBF',
-    'replace' => 'E0F5',
-  ),
-  421 => 
-  array (
-    'match' => 'E179 0CBF',
-    'replace' => 'E11F',
-  ),
-  422 => 
-  array (
-    'match' => 'E17A 0CBF',
-    'replace' => 'E120',
-  ),
-  423 => 
-  array (
-    'match' => 'E17B 0CBF',
-    'replace' => 'E121',
-  ),
-  424 => 
-  array (
-    'match' => 'E17C 0CBF',
-    'replace' => 'E122',
-  ),
-  425 => 
-  array (
-    'match' => 'E17D 0CBF',
-    'replace' => 'E123',
-  ),
-  426 => 
-  array (
-    'match' => 'E17E 0CBF',
-    'replace' => 'E124',
-  ),
-  427 => 
-  array (
-    'match' => 'E17F 0CBF',
-    'replace' => 'E125',
-  ),
-  428 => 
-  array (
-    'match' => 'E180 0CBF',
-    'replace' => 'E126',
-  ),
-  429 => 
-  array (
-    'match' => 'E181 0CBF',
-    'replace' => 'E127',
-  ),
-  430 => 
-  array (
-    'match' => 'E182 0CBF',
-    'replace' => 'E128',
-  ),
-  431 => 
-  array (
-    'match' => 'E0EA 0CBF',
-    'replace' => 'E0F9',
-  ),
-  432 => 
-  array (
-    'match' => 'E183 0CBF',
-    'replace' => 'E129',
-  ),
-  433 => 
-  array (
-    'match' => 'E184 0CBF',
-    'replace' => 'E12A',
-  ),
-  434 => 
-  array (
-    'match' => 'E185 0CBF',
-    'replace' => 'E12B',
-  ),
-  435 => 
-  array (
-    'match' => 'E186 0CBF',
-    'replace' => 'E12C',
-  ),
-  436 => 
-  array (
-    'match' => 'E0EB 0CBF',
-    'replace' => 'E0FD',
-  ),
-  437 => 
-  array (
-    'match' => 'E188 0CBF',
-    'replace' => 'E12D',
-  ),
-  438 => 
-  array (
-    'match' => 'E189 0CBF',
-    'replace' => 'E12E',
-  ),
-  439 => 
-  array (
-    'match' => 'E18A 0CBF',
-    'replace' => 'E12F',
-  ),
-  440 => 
-  array (
-    'match' => 'E18B 0CBF',
-    'replace' => 'E130',
-  ),
-  441 => 
-  array (
-    'match' => 'E18C 0CBF',
-    'replace' => 'E131',
-  ),
-  442 => 
-  array (
-    'match' => 'E18D 0CBF',
-    'replace' => 'E132',
-  ),
-  443 => 
-  array (
-    'match' => 'E18E 0CBF',
-    'replace' => 'E133',
-  ),
-  444 => 
-  array (
-    'match' => 'E117 0CBF',
-    'replace' => 'E134',
-  ),
-  445 => 
-  array (
-    'match' => 'E118 0CBF',
-    'replace' => 'E135',
-  ),
-  446 => 
-  array (
-    'match' => 'E136 0CBF',
-    'replace' => 'E137',
-  ),
-  447 => 
-  array (
-    'match' => 'E0AD',
-    'replace' => '0CCD',
-  ),
-  448 => 
-  array (
-    'match' => 'E0AC',
-    'replace' => '0CCD',
-  ),
-  449 => 
-  array (
-    'match' => '0C95 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E00C \\1',
-  ),
-  450 => 
-  array (
-    'match' => '0C96 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E00D \\1',
-  ),
-  451 => 
-  array (
-    'match' => '0C97 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E00E \\1',
-  ),
-  452 => 
-  array (
-    'match' => '0C98 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E00F \\1',
-  ),
-  453 => 
-  array (
-    'match' => '0C99 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E010 \\1',
-  ),
-  454 => 
-  array (
-    'match' => '0C9A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E011 \\1',
-  ),
-  455 => 
-  array (
-    'match' => '0C9B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E012 \\1',
-  ),
-  456 => 
-  array (
-    'match' => '0C9C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E013 \\1',
-  ),
-  457 => 
-  array (
-    'match' => '0C9D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E014 \\1',
-  ),
-  458 => 
-  array (
-    'match' => '0C9F ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E015 \\1',
-  ),
-  459 => 
-  array (
-    'match' => '0CA0 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E016 \\1',
-  ),
-  460 => 
-  array (
-    'match' => '0CA1 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E017 \\1',
-  ),
-  461 => 
-  array (
-    'match' => '0CA2 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E018 \\1',
-  ),
-  462 => 
-  array (
-    'match' => '0CA3 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E019 \\1',
-  ),
-  463 => 
-  array (
-    'match' => '0CA4 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E01A \\1',
-  ),
-  464 => 
-  array (
-    'match' => '0CA5 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E01B \\1',
-  ),
-  465 => 
-  array (
-    'match' => '0CA6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E01C \\1',
-  ),
-  466 => 
-  array (
-    'match' => '0CA7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E01D \\1',
-  ),
-  467 => 
-  array (
-    'match' => '0CA8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E01E \\1',
-  ),
-  468 => 
-  array (
-    'match' => '0CAA ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E01F \\1',
-  ),
-  469 => 
-  array (
-    'match' => '0CAB ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E020 \\1',
-  ),
-  470 => 
-  array (
-    'match' => '0CAC ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E021 \\1',
-  ),
-  471 => 
-  array (
-    'match' => '0CAD ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E022 \\1',
-  ),
-  472 => 
-  array (
-    'match' => '0CAE ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E023 \\1',
-  ),
-  473 => 
-  array (
-    'match' => '0CAF ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E024 \\1',
-  ),
-  474 => 
-  array (
-    'match' => '0CB0 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E025 \\1',
-  ),
-  475 => 
-  array (
-    'match' => '0CB1 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E026 \\1',
-  ),
-  476 => 
-  array (
-    'match' => '0CB2 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E027 \\1',
-  ),
-  477 => 
-  array (
-    'match' => '0CB3 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E028 \\1',
-  ),
-  478 => 
-  array (
-    'match' => '0CB5 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E029 \\1',
-  ),
-  479 => 
-  array (
-    'match' => '0CB6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E02A \\1',
-  ),
-  480 => 
-  array (
-    'match' => '0CB7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E02B \\1',
-  ),
-  481 => 
-  array (
-    'match' => '0CB8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E02C \\1',
-  ),
-  482 => 
-  array (
-    'match' => '0CB9 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E02D \\1',
-  ),
-  483 => 
-  array (
-    'match' => 'E07D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E07F \\1',
-  ),
-  484 => 
-  array (
-    'match' => 'E07E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E080 \\1',
-  ),
-  485 => 
-  array (
-    'match' => 'E0E6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E0EC \\1',
-  ),
-  486 => 
-  array (
-    'match' => 'E0E7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E0ED \\1',
-  ),
-  487 => 
-  array (
-    'match' => 'E172 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E18F \\1',
-  ),
-  488 => 
-  array (
-    'match' => 'E173 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E190 \\1',
-  ),
-  489 => 
-  array (
-    'match' => 'E174 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E191 \\1',
-  ),
-  490 => 
-  array (
-    'match' => 'E175 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E192 \\1',
-  ),
-  491 => 
-  array (
-    'match' => 'E176 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E193 \\1',
-  ),
-  492 => 
-  array (
-    'match' => 'E0E8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E0EE \\1',
-  ),
-  493 => 
-  array (
-    'match' => 'E0E9 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E0EF \\1',
-  ),
-  494 => 
-  array (
-    'match' => 'E178 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E194 \\1',
-  ),
-  495 => 
-  array (
-    'match' => 'E179 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E195 \\1',
-  ),
-  496 => 
-  array (
-    'match' => 'E17A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E196 \\1',
-  ),
-  497 => 
-  array (
-    'match' => 'E17B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E197 \\1',
-  ),
-  498 => 
-  array (
-    'match' => 'E17C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E198 \\1',
-  ),
-  499 => 
-  array (
-    'match' => 'E17D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E199 \\1',
-  ),
-  500 => 
-  array (
-    'match' => 'E17E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E19A \\1',
-  ),
-  501 => 
-  array (
-    'match' => 'E17F ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E19B \\1',
-  ),
-  502 => 
-  array (
-    'match' => 'E180 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E19C \\1',
-  ),
-  503 => 
-  array (
-    'match' => 'E181 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E19D \\1',
-  ),
-  504 => 
-  array (
-    'match' => 'E182 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E19E \\1',
-  ),
-  505 => 
-  array (
-    'match' => 'E0EA ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E0F0 \\1',
-  ),
-  506 => 
-  array (
-    'match' => 'E183 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E19F \\1',
-  ),
-  507 => 
-  array (
-    'match' => 'E184 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A0 \\1',
-  ),
-  508 => 
-  array (
-    'match' => 'E185 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A1 \\1',
-  ),
-  509 => 
-  array (
-    'match' => 'E186 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A2 \\1',
-  ),
-  510 => 
-  array (
-    'match' => 'E0EB ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E0F1 \\1',
-  ),
-  511 => 
-  array (
-    'match' => 'E187 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A3 \\1',
-  ),
-  512 => 
-  array (
-    'match' => 'E188 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A4 \\1',
-  ),
-  513 => 
-  array (
-    'match' => 'E189 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A5 \\1',
-  ),
-  514 => 
-  array (
-    'match' => 'E18A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A6 \\1',
-  ),
-  515 => 
-  array (
-    'match' => 'E18B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A7 \\1',
-  ),
-  516 => 
-  array (
-    'match' => 'E18C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A8 \\1',
-  ),
-  517 => 
-  array (
-    'match' => 'E18D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1A9 \\1',
-  ),
-  518 => 
-  array (
-    'match' => 'E18E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E1AA \\1',
-  ),
-  519 => 
-  array (
-    'match' => 'E117 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E119 \\1',
-  ),
-  520 => 
-  array (
-    'match' => 'E118 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
-    'replace' => 'E11A \\1',
-  ),
-  521 => 
-  array (
-    'match' => '0C95 (0CCD)',
-    'replace' => 'E00C \\1',
-  ),
-  522 => 
-  array (
-    'match' => '0C96 (0CCD)',
-    'replace' => 'E00D \\1',
-  ),
-  523 => 
-  array (
-    'match' => '0C97 (0CCD)',
-    'replace' => 'E00E \\1',
-  ),
-  524 => 
-  array (
-    'match' => '0C98 (0CCD)',
-    'replace' => 'E00F \\1',
-  ),
-  525 => 
-  array (
-    'match' => '0C99 (0CCD)',
-    'replace' => 'E010 \\1',
-  ),
-  526 => 
-  array (
-    'match' => '0C9A (0CCD)',
-    'replace' => 'E011 \\1',
-  ),
-  527 => 
-  array (
-    'match' => '0C9B (0CCD)',
-    'replace' => 'E012 \\1',
-  ),
-  528 => 
-  array (
-    'match' => '0C9C (0CCD)',
-    'replace' => 'E013 \\1',
-  ),
-  529 => 
-  array (
-    'match' => '0C9D (0CCD)',
-    'replace' => 'E014 \\1',
-  ),
-  530 => 
-  array (
-    'match' => '0C9F (0CCD)',
-    'replace' => 'E015 \\1',
-  ),
-  531 => 
-  array (
-    'match' => '0CA0 (0CCD)',
-    'replace' => 'E016 \\1',
-  ),
-  532 => 
-  array (
-    'match' => '0CA1 (0CCD)',
-    'replace' => 'E017 \\1',
-  ),
-  533 => 
-  array (
-    'match' => '0CA2 (0CCD)',
-    'replace' => 'E018 \\1',
-  ),
-  534 => 
-  array (
-    'match' => '0CA3 (0CCD)',
-    'replace' => 'E019 \\1',
-  ),
-  535 => 
-  array (
-    'match' => '0CA4 (0CCD)',
-    'replace' => 'E01A \\1',
-  ),
-  536 => 
-  array (
-    'match' => '0CA5 (0CCD)',
-    'replace' => 'E01B \\1',
-  ),
-  537 => 
-  array (
-    'match' => '0CA6 (0CCD)',
-    'replace' => 'E01C \\1',
-  ),
-  538 => 
-  array (
-    'match' => '0CA7 (0CCD)',
-    'replace' => 'E01D \\1',
-  ),
-  539 => 
-  array (
-    'match' => '0CA8 (0CCD)',
-    'replace' => 'E01E \\1',
-  ),
-  540 => 
-  array (
-    'match' => '0CAA (0CCD)',
-    'replace' => 'E01F \\1',
-  ),
-  541 => 
-  array (
-    'match' => '0CAB (0CCD)',
-    'replace' => 'E020 \\1',
-  ),
-  542 => 
-  array (
-    'match' => '0CAC (0CCD)',
-    'replace' => 'E021 \\1',
-  ),
-  543 => 
-  array (
-    'match' => '0CAD (0CCD)',
-    'replace' => 'E022 \\1',
-  ),
-  544 => 
-  array (
-    'match' => '0CAE (0CCD)',
-    'replace' => 'E023 \\1',
-  ),
-  545 => 
-  array (
-    'match' => '0CAF (0CCD)',
-    'replace' => 'E024 \\1',
-  ),
-  546 => 
-  array (
-    'match' => '0CB0 (0CCD)',
-    'replace' => 'E025 \\1',
-  ),
-  547 => 
-  array (
-    'match' => '0CB1 (0CCD)',
-    'replace' => 'E026 \\1',
-  ),
-  548 => 
-  array (
-    'match' => '0CB2 (0CCD)',
-    'replace' => 'E027 \\1',
-  ),
-  549 => 
-  array (
-    'match' => '0CB3 (0CCD)',
-    'replace' => 'E028 \\1',
-  ),
-  550 => 
-  array (
-    'match' => '0CB5 (0CCD)',
-    'replace' => 'E029 \\1',
-  ),
-  551 => 
-  array (
-    'match' => '0CB6 (0CCD)',
-    'replace' => 'E02A \\1',
-  ),
-  552 => 
-  array (
-    'match' => '0CB7 (0CCD)',
-    'replace' => 'E02B \\1',
-  ),
-  553 => 
-  array (
-    'match' => '0CB8 (0CCD)',
-    'replace' => 'E02C \\1',
-  ),
-  554 => 
-  array (
-    'match' => '0CB9 (0CCD)',
-    'replace' => 'E02D \\1',
-  ),
-  555 => 
-  array (
-    'match' => 'E07D (0CCD)',
-    'replace' => 'E07F \\1',
-  ),
-  556 => 
-  array (
-    'match' => 'E07E (0CCD)',
-    'replace' => 'E080 \\1',
-  ),
-  557 => 
-  array (
-    'match' => 'E0E6 (0CCD)',
-    'replace' => 'E0EC \\1',
-  ),
-  558 => 
-  array (
-    'match' => 'E0E7 (0CCD)',
-    'replace' => 'E0ED \\1',
-  ),
-  559 => 
-  array (
-    'match' => 'E172 (0CCD)',
-    'replace' => 'E18F \\1',
-  ),
-  560 => 
-  array (
-    'match' => 'E173 (0CCD)',
-    'replace' => 'E190 \\1',
-  ),
-  561 => 
-  array (
-    'match' => 'E174 (0CCD)',
-    'replace' => 'E191 \\1',
-  ),
-  562 => 
-  array (
-    'match' => 'E175 (0CCD)',
-    'replace' => 'E192 \\1',
-  ),
-  563 => 
-  array (
-    'match' => 'E176 (0CCD)',
-    'replace' => 'E193 \\1',
-  ),
-  564 => 
-  array (
-    'match' => 'E0E8 (0CCD)',
-    'replace' => 'E0EE \\1',
-  ),
-  565 => 
-  array (
-    'match' => 'E0E9 (0CCD)',
-    'replace' => 'E0EF \\1',
-  ),
-  566 => 
-  array (
-    'match' => 'E178 (0CCD)',
-    'replace' => 'E194 \\1',
-  ),
-  567 => 
-  array (
-    'match' => 'E179 (0CCD)',
-    'replace' => 'E195 \\1',
-  ),
-  568 => 
-  array (
-    'match' => 'E17A (0CCD)',
-    'replace' => 'E196 \\1',
-  ),
-  569 => 
-  array (
-    'match' => 'E17B (0CCD)',
-    'replace' => 'E197 \\1',
-  ),
-  570 => 
-  array (
-    'match' => 'E17C (0CCD)',
-    'replace' => 'E198 \\1',
-  ),
-  571 => 
-  array (
-    'match' => 'E17D (0CCD)',
-    'replace' => 'E199 \\1',
-  ),
-  572 => 
-  array (
-    'match' => 'E17E (0CCD)',
-    'replace' => 'E19A \\1',
-  ),
-  573 => 
-  array (
-    'match' => 'E17F (0CCD)',
-    'replace' => 'E19B \\1',
-  ),
-  574 => 
-  array (
-    'match' => 'E180 (0CCD)',
-    'replace' => 'E19C \\1',
-  ),
-  575 => 
-  array (
-    'match' => 'E181 (0CCD)',
-    'replace' => 'E19D \\1',
-  ),
-  576 => 
-  array (
-    'match' => 'E182 (0CCD)',
-    'replace' => 'E19E \\1',
-  ),
-  577 => 
-  array (
-    'match' => 'E0EA (0CCD)',
-    'replace' => 'E0F0 \\1',
-  ),
-  578 => 
-  array (
-    'match' => 'E183 (0CCD)',
-    'replace' => 'E19F \\1',
-  ),
-  579 => 
-  array (
-    'match' => 'E184 (0CCD)',
-    'replace' => 'E1A0 \\1',
-  ),
-  580 => 
-  array (
-    'match' => 'E185 (0CCD)',
-    'replace' => 'E1A1 \\1',
-  ),
-  581 => 
-  array (
-    'match' => 'E186 (0CCD)',
-    'replace' => 'E1A2 \\1',
-  ),
-  582 => 
-  array (
-    'match' => 'E0EB (0CCD)',
-    'replace' => 'E0F1 \\1',
-  ),
-  583 => 
-  array (
-    'match' => 'E187 (0CCD)',
-    'replace' => 'E1A3 \\1',
-  ),
-  584 => 
-  array (
-    'match' => 'E188 (0CCD)',
-    'replace' => 'E1A4 \\1',
-  ),
-  585 => 
-  array (
-    'match' => 'E189 (0CCD)',
-    'replace' => 'E1A5 \\1',
-  ),
-  586 => 
-  array (
-    'match' => 'E18A (0CCD)',
-    'replace' => 'E1A6 \\1',
-  ),
-  587 => 
-  array (
-    'match' => 'E18B (0CCD)',
-    'replace' => 'E1A7 \\1',
-  ),
-  588 => 
-  array (
-    'match' => 'E18C (0CCD)',
-    'replace' => 'E1A8 \\1',
-  ),
-  589 => 
-  array (
-    'match' => 'E18D (0CCD)',
-    'replace' => 'E1A9 \\1',
-  ),
-  590 => 
-  array (
-    'match' => 'E18E (0CCD)',
-    'replace' => 'E1AA \\1',
-  ),
-  591 => 
-  array (
-    'match' => 'E117 (0CCD)',
-    'replace' => 'E119 \\1',
-  ),
-  592 => 
-  array (
-    'match' => 'E118 (0CCD)',
-    'replace' => 'E11A \\1',
-  ),
-  593 => 
-  array (
-    'match' => '0C98 (0CBE)',
-    'replace' => 'E00F \\1',
-  ),
-  594 => 
-  array (
-    'match' => '0CB1 (0CBE)',
-    'replace' => 'E026 \\1',
-  ),
-  595 => 
-  array (
-    'match' => 'E173 (0CBE)',
-    'replace' => 'E190 \\1',
-  ),
-  596 => 
-  array (
-    'match' => 'E187 (0CBE)',
-    'replace' => 'E1A3 \\1',
-  ),
-  597 => 
-  array (
-    'match' => '((E00F|0C9E|E026|E190|E177|E1A3)) 0CBE',
-    'replace' => '\\1 E004',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php
deleted file mode 100644 (file)
index 0ef71d1..0000000
+++ /dev/null
@@ -1,1769 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0D4D 200D',
-    'replace' => '007E',
-  ),
-  1 => 
-  array (
-    'match' => '0D4D 200C',
-    'replace' => '2018',
-  ),
-  2 => 
-  array (
-    'match' => '200D 0D4D',
-    'replace' => '2019',
-  ),
-  3 => 
-  array (
-    'match' => '0D15 0D4D 0D37',
-    'replace' => 'E010',
-  ),
-  4 => 
-  array (
-    'match' => '0D1C 0D4D 0D1E',
-    'replace' => 'E011',
-  ),
-  5 => 
-  array (
-    'match' => '0D1A 0D4D 0D1A',
-    'replace' => 'E03E',
-  ),
-  6 => 
-  array (
-    'match' => '0D2C 0D4D 0D2C',
-    'replace' => 'E04B',
-  ),
-  7 => 
-  array (
-    'match' => '0D24 0D4D 0D24',
-    'replace' => 'E023',
-  ),
-  8 => 
-  array (
-    'match' => '0D28 0D4D 0D28',
-    'replace' => 'E02A',
-  ),
-  9 => 
-  array (
-    'match' => '0D23 0D4D 0D23',
-    'replace' => 'E043',
-  ),
-  10 => 
-  array (
-    'match' => '0D2E 0D4D 0D2E',
-    'replace' => 'E030',
-  ),
-  11 => 
-  array (
-    'match' => '0D33 0D4D 0D33',
-    'replace' => 'E036',
-  ),
-  12 => 
-  array (
-    'match' => '0D32 0D4D 0D32',
-    'replace' => 'E05D',
-  ),
-  13 => 
-  array (
-    'match' => '0D26 0D4D 0D26',
-    'replace' => 'E015',
-  ),
-  14 => 
-  array (
-    'match' => '0D1F 0D4D 0D1F',
-    'replace' => 'E014',
-  ),
-  15 => 
-  array (
-    'match' => '0D1C 0D4D 0D1C',
-    'replace' => 'E01B',
-  ),
-  16 => 
-  array (
-    'match' => '0D2A 0D4D 0D2A',
-    'replace' => 'E046',
-  ),
-  17 => 
-  array (
-    'match' => '0D17 0D4D 0D17',
-    'replace' => 'E03B',
-  ),
-  18 => 
-  array (
-    'match' => '0D15 0D4D 0D15',
-    'replace' => 'E012',
-  ),
-  19 => 
-  array (
-    'match' => '0D31 0D4D 0D31',
-    'replace' => 'E05C',
-  ),
-  20 => 
-  array (
-    'match' => '0D19 0D4D 0D15',
-    'replace' => 'E013',
-  ),
-  21 => 
-  array (
-    'match' => '0D19 0D4D 0D19',
-    'replace' => 'E016',
-  ),
-  22 => 
-  array (
-    'match' => '0D15 0D4D 0D24',
-    'replace' => 'E017',
-  ),
-  23 => 
-  array (
-    'match' => '0D17 0D4D 0D2E',
-    'replace' => 'E018',
-  ),
-  24 => 
-  array (
-    'match' => '0D17 0D4D E029',
-    'replace' => 'E019',
-  ),
-  25 => 
-  array (
-    'match' => '0D17 0D4D 0D28',
-    'replace' => 'E01A',
-  ),
-  26 => 
-  array (
-    'match' => '0D1E 0D4D 0D1C',
-    'replace' => 'E01C',
-  ),
-  27 => 
-  array (
-    'match' => '0D1E 0D4D 0D1E',
-    'replace' => 'E01D',
-  ),
-  28 => 
-  array (
-    'match' => '0D1E 0D4D 0D1A',
-    'replace' => 'E01E',
-  ),
-  29 => 
-  array (
-    'match' => '0D1E 0D4D 0D1B',
-    'replace' => 'E01F',
-  ),
-  30 => 
-  array (
-    'match' => '0D23 0D4D 0D2E',
-    'replace' => 'E020',
-  ),
-  31 => 
-  array (
-    'match' => '0D23 0D4D 0D21',
-    'replace' => 'E021',
-  ),
-  32 => 
-  array (
-    'match' => '0D23 0D4D 0D1F',
-    'replace' => 'E022',
-  ),
-  33 => 
-  array (
-    'match' => '0D24 0D4D 0D38',
-    'replace' => 'E024',
-  ),
-  34 => 
-  array (
-    'match' => '0D24 0D4D 0D25',
-    'replace' => 'E025',
-  ),
-  35 => 
-  array (
-    'match' => '0D24 0D4D 0D2E',
-    'replace' => 'E026',
-  ),
-  36 => 
-  array (
-    'match' => '0D24 0D4D 0D2D',
-    'replace' => 'E027',
-  ),
-  37 => 
-  array (
-    'match' => '0D24 0D4D 0D28',
-    'replace' => 'E028',
-  ),
-  38 => 
-  array (
-    'match' => '0D26 0D4D 0D27',
-    'replace' => 'E029',
-  ),
-  39 => 
-  array (
-    'match' => '0D28 0D4D 0D26',
-    'replace' => 'E02B',
-  ),
-  40 => 
-  array (
-    'match' => '0D28 0D4D 0D24',
-    'replace' => 'E02C',
-  ),
-  41 => 
-  array (
-    'match' => '0D28 0D4D 0D27',
-    'replace' => 'E02D',
-  ),
-  42 => 
-  array (
-    'match' => '0D28 0D4D 0D2A',
-    'replace' => 'E031',
-  ),
-  43 => 
-  array (
-    'match' => '0D28 0D4D 0D2E',
-    'replace' => 'E02E',
-  ),
-  44 => 
-  array (
-    'match' => '0D28 0D4D 0D25',
-    'replace' => 'E02F',
-  ),
-  45 => 
-  array (
-    'match' => '0D2E 0D4D 0D2A',
-    'replace' => 'E031',
-  ),
-  46 => 
-  array (
-    'match' => '0D36 0D4D 0D1A',
-    'replace' => 'E032',
-  ),
-  47 => 
-  array (
-    'match' => '0D38 0D4D 0D25',
-    'replace' => 'E033',
-  ),
-  48 => 
-  array (
-    'match' => '0D39 0D4D 0D28',
-    'replace' => 'E034',
-  ),
-  49 => 
-  array (
-    'match' => '0D39 0D4D 0D2E',
-    'replace' => 'E035',
-  ),
-  50 => 
-  array (
-    'match' => '0D15 0D4D 0D32',
-    'replace' => 'E037',
-  ),
-  51 => 
-  array (
-    'match' => '0D15 0D4D 0D33',
-    'replace' => 'E037',
-  ),
-  52 => 
-  array (
-    'match' => '0D15 0D4D 0D38',
-    'replace' => 'E038',
-  ),
-  53 => 
-  array (
-    'match' => '0D15 0D4D 0D1F',
-    'replace' => 'E039',
-  ),
-  54 => 
-  array (
-    'match' => '0D18 0D4D 0D28',
-    'replace' => 'E03A',
-  ),
-  55 => 
-  array (
-    'match' => '0D17 0D4D 0D32',
-    'replace' => 'E03C',
-  ),
-  56 => 
-  array (
-    'match' => '0D17 0D4D 0D33',
-    'replace' => 'E03C',
-  ),
-  57 => 
-  array (
-    'match' => '0D1A 0D4D 0D1B',
-    'replace' => 'E03F',
-  ),
-  58 => 
-  array (
-    'match' => '0D21 0D4D 0D21',
-    'replace' => 'E040',
-  ),
-  59 => 
-  array (
-    'match' => '0D21 0D4D 0D22',
-    'replace' => 'E041',
-  ),
-  60 => 
-  array (
-    'match' => '0D21 0D4D 0D1C',
-    'replace' => 'E042',
-  ),
-  61 => 
-  array (
-    'match' => '0D23 0D4D 0D20',
-    'replace' => 'E044',
-  ),
-  62 => 
-  array (
-    'match' => '0D24 0D4D 0D32',
-    'replace' => 'E045',
-  ),
-  63 => 
-  array (
-    'match' => '0D2A 0D4D 0D28',
-    'replace' => 'E047',
-  ),
-  64 => 
-  array (
-    'match' => '0D2A 0D4D 0D32',
-    'replace' => 'E048',
-  ),
-  65 => 
-  array (
-    'match' => '0D2A 0D4D 0D33',
-    'replace' => 'E048',
-  ),
-  66 => 
-  array (
-    'match' => '0D2A 0D4D 0D38',
-    'replace' => 'E049',
-  ),
-  67 => 
-  array (
-    'match' => '0D2A 0D4D 0D24',
-    'replace' => 'E04A',
-  ),
-  68 => 
-  array (
-    'match' => '0D2C 0D4D 0D32',
-    'replace' => 'E04C',
-  ),
-  69 => 
-  array (
-    'match' => '0D2C 0D4D 0D33',
-    'replace' => 'E04C',
-  ),
-  70 => 
-  array (
-    'match' => '0D2C 0D4D 0D26',
-    'replace' => 'E04D',
-  ),
-  71 => 
-  array (
-    'match' => '0D2C 0D4D 0D27',
-    'replace' => 'E04E',
-  ),
-  72 => 
-  array (
-    'match' => '0D2C 0D4D 0D15',
-    'replace' => 'E04F',
-  ),
-  73 => 
-  array (
-    'match' => '0D2B 0D4D 0D32',
-    'replace' => 'E050',
-  ),
-  74 => 
-  array (
-    'match' => '0D2B 0D4D 0D33',
-    'replace' => 'E050',
-  ),
-  75 => 
-  array (
-    'match' => '0D2B 0D4D 0D15',
-    'replace' => 'E051',
-  ),
-  76 => 
-  array (
-    'match' => '0D2B 0D4D 0D24',
-    'replace' => 'E052',
-  ),
-  77 => 
-  array (
-    'match' => '0D2E 0D4D 0D32',
-    'replace' => 'E053',
-  ),
-  78 => 
-  array (
-    'match' => '0D2E 0D4D 0D33',
-    'replace' => 'E053',
-  ),
-  79 => 
-  array (
-    'match' => '0D2E 0D4D 0D28',
-    'replace' => 'E054',
-  ),
-  80 => 
-  array (
-    'match' => '0D2F 0D4D 0D2F',
-    'replace' => 'E055',
-  ),
-  81 => 
-  array (
-    'match' => '0D2F 0D4D 0D2E',
-    'replace' => 'E056',
-  ),
-  82 => 
-  array (
-    'match' => '0D2F 0D4D 0D2A',
-    'replace' => 'E057',
-  ),
-  83 => 
-  array (
-    'match' => '0D2F 0D4D 0D15',
-    'replace' => 'E058',
-  ),
-  84 => 
-  array (
-    'match' => '0D2F 0D4D 0D24',
-    'replace' => 'E05A',
-  ),
-  85 => 
-  array (
-    'match' => '0D32 0D4D 0D32',
-    'replace' => 'E05D',
-  ),
-  86 => 
-  array (
-    'match' => '0D32 0D4D 0D2A',
-    'replace' => 'E05E',
-  ),
-  87 => 
-  array (
-    'match' => '0D32 0D4D 0D15',
-    'replace' => 'E05F',
-  ),
-  88 => 
-  array (
-    'match' => '0D32 0D4D 0D2E',
-    'replace' => 'E060',
-  ),
-  89 => 
-  array (
-    'match' => '0D35 0D4D 0D35',
-    'replace' => 'E061',
-  ),
-  90 => 
-  array (
-    'match' => '0D35 0D4D 0D32',
-    'replace' => 'E062',
-  ),
-  91 => 
-  array (
-    'match' => '0D35 0D4D 0D33',
-    'replace' => 'E062',
-  ),
-  92 => 
-  array (
-    'match' => '0D36 0D4D 0D36',
-    'replace' => 'E063',
-  ),
-  93 => 
-  array (
-    'match' => '0D36 0D4D 0D32',
-    'replace' => 'E064',
-  ),
-  94 => 
-  array (
-    'match' => '0D36 0D4D 0D33',
-    'replace' => 'E064',
-  ),
-  95 => 
-  array (
-    'match' => '0D36 0D4D 0D28',
-    'replace' => 'E065',
-  ),
-  96 => 
-  array (
-    'match' => '0D36 0D4D 0D2E',
-    'replace' => 'E066',
-  ),
-  97 => 
-  array (
-    'match' => '0D37 0D4D 0D2A',
-    'replace' => 'E067',
-  ),
-  98 => 
-  array (
-    'match' => '0D37 0D4D 0D15',
-    'replace' => 'E068',
-  ),
-  99 => 
-  array (
-    'match' => '0D37 0D4D 0D23',
-    'replace' => 'E069',
-  ),
-  100 => 
-  array (
-    'match' => '0D37 0D4D 0D1F',
-    'replace' => 'E06A',
-  ),
-  101 => 
-  array (
-    'match' => '0D37 0D4D 0D2E',
-    'replace' => 'E06B',
-  ),
-  102 => 
-  array (
-    'match' => '0D37 0D4D E05C',
-    'replace' => 'E06C',
-  ),
-  103 => 
-  array (
-    'match' => '0D37 0D4D 0D2B',
-    'replace' => 'E06D',
-  ),
-  104 => 
-  array (
-    'match' => '0D37 0D4D 0D20',
-    'replace' => 'E06E',
-  ),
-  105 => 
-  array (
-    'match' => '0D37 0D4D 0D24',
-    'replace' => 'E06F',
-  ),
-  106 => 
-  array (
-    'match' => '0D38 0D4D 0D38',
-    'replace' => 'E070',
-  ),
-  107 => 
-  array (
-    'match' => '0D38 0D4D 0D32',
-    'replace' => 'E071',
-  ),
-  108 => 
-  array (
-    'match' => '0D38 0D4D 0D33',
-    'replace' => 'E071',
-  ),
-  109 => 
-  array (
-    'match' => '0D38 0D4D E05C',
-    'replace' => 'E072',
-  ),
-  110 => 
-  array (
-    'match' => '0D38 0D4D 0D2A',
-    'replace' => 'E073',
-  ),
-  111 => 
-  array (
-    'match' => '0D38 0D4D 0D24',
-    'replace' => 'E074',
-  ),
-  112 => 
-  array (
-    'match' => '0D38 0D4D 0D15',
-    'replace' => 'E075',
-  ),
-  113 => 
-  array (
-    'match' => '0D38 0D4D 0D28',
-    'replace' => 'E076',
-  ),
-  114 => 
-  array (
-    'match' => '0D38 0D4D 0D2E',
-    'replace' => 'E077',
-  ),
-  115 => 
-  array (
-    'match' => '0D39 0D4D 0D32',
-    'replace' => 'E078',
-  ),
-  116 => 
-  array (
-    'match' => '0D39 0D4D 0D33',
-    'replace' => 'E078',
-  ),
-  117 => 
-  array (
-    'match' => '0D34 0D4D 0D24',
-    'replace' => 'E079',
-  ),
-  118 => 
-  array (
-    'match' => '0D34 0D4D 0D15',
-    'replace' => 'E07A',
-  ),
-  119 => 
-  array (
-    'match' => '0D34 0D4D 0D2E',
-    'replace' => 'E07C',
-  ),
-  120 => 
-  array (
-    'match' => 'E006 0D4D 0D31',
-    'replace' => 'E07D',
-  ),
-  121 => 
-  array (
-    'match' => '0D28 0D4D 0D30',
-    'replace' => 'E07D',
-  ),
-  122 => 
-  array (
-    'match' => '0D28 0D4D 0D31',
-    'replace' => 'E07D',
-  ),
-  123 => 
-  array (
-    'match' => '0D34 0D4D E023',
-    'replace' => 'E07B',
-  ),
-  124 => 
-  array (
-    'match' => '0D2F 0D4D E023',
-    'replace' => 'E05B',
-  ),
-  125 => 
-  array (
-    'match' => '0D2F 0D4D E012',
-    'replace' => 'E059',
-  ),
-  126 => 
-  array (
-    'match' => 'E010 0D4D 0D2E',
-    'replace' => 'E03D',
-  ),
-  127 => 
-  array (
-    'match' => '2019 0D31',
-    'replace' => 'E00E',
-  ),
-  128 => 
-  array (
-    'match' => '2019 0D31',
-    'replace' => 'E00E',
-  ),
-  129 => 
-  array (
-    'match' => '2019 0D2F',
-    'replace' => 'E00D',
-  ),
-  130 => 
-  array (
-    'match' => '2019 0D35',
-    'replace' => 'E00F',
-  ),
-  131 => 
-  array (
-    'match' => '0D4D 0D31 ((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39))',
-    'replace' => 'E00E \\1',
-  ),
-  132 => 
-  array (
-    'match' => '0D4D 0D30 ((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39))',
-    'replace' => 'E00E \\1',
-  ),
-  133 => 
-  array (
-    'match' => '0D4D 0D31 ((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D))',
-    'replace' => 'E00E \\1',
-  ),
-  134 => 
-  array (
-    'match' => '0D4D 0D30 ((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D))',
-    'replace' => 'E00E \\1',
-  ),
-  135 => 
-  array (
-    'match' => '0D4D 0D31 ((0020|25CC))',
-    'replace' => 'E00E \\1',
-  ),
-  136 => 
-  array (
-    'match' => '0D4D 0D30 ((0020|25CC))',
-    'replace' => 'E00E \\1',
-  ),
-  137 => 
-  array (
-    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D 0D2F',
-    'replace' => '\\1 E00D',
-  ),
-  138 => 
-  array (
-    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 2018 0D2F',
-    'replace' => '\\1 E00D',
-  ),
-  139 => 
-  array (
-    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 0D4D 0D2F',
-    'replace' => '\\1 E00D',
-  ),
-  140 => 
-  array (
-    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 2018 0D2F',
-    'replace' => '\\1 E00D',
-  ),
-  141 => 
-  array (
-    'match' => '((0020|25CC)) 0D4D 0D2F',
-    'replace' => '\\1 E00D',
-  ),
-  142 => 
-  array (
-    'match' => '((0020|25CC)) 2018 0D2F',
-    'replace' => '\\1 E00D',
-  ),
-  143 => 
-  array (
-    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D 0D35',
-    'replace' => '\\1 E00F',
-  ),
-  144 => 
-  array (
-    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 2018 0D35',
-    'replace' => '\\1 E00F',
-  ),
-  145 => 
-  array (
-    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 0D4D 0D35',
-    'replace' => '\\1 E00F',
-  ),
-  146 => 
-  array (
-    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 2018 0D35',
-    'replace' => '\\1 E00F',
-  ),
-  147 => 
-  array (
-    'match' => '((0020|25CC)) 0D4D 0D35',
-    'replace' => '\\1 E00F',
-  ),
-  148 => 
-  array (
-    'match' => '((0020|25CC)) 2018 0D35',
-    'replace' => '\\1 E00F',
-  ),
-  149 => 
-  array (
-    'match' => '0D28 0D4D',
-    'replace' => 'E006',
-  ),
-  150 => 
-  array (
-    'match' => '0D28 007E',
-    'replace' => 'E006',
-  ),
-  151 => 
-  array (
-    'match' => '0D23 0D4D',
-    'replace' => 'E005',
-  ),
-  152 => 
-  array (
-    'match' => '0D23 007E',
-    'replace' => 'E005',
-  ),
-  153 => 
-  array (
-    'match' => '0D32 0D4D',
-    'replace' => 'E008',
-  ),
-  154 => 
-  array (
-    'match' => '0D32 007E',
-    'replace' => 'E008',
-  ),
-  155 => 
-  array (
-    'match' => '0D33 0D4D',
-    'replace' => 'E009',
-  ),
-  156 => 
-  array (
-    'match' => '0D33 007E',
-    'replace' => 'E009',
-  ),
-  157 => 
-  array (
-    'match' => '0D31 0D4D',
-    'replace' => 'E007',
-  ),
-  158 => 
-  array (
-    'match' => '0D31 007E',
-    'replace' => 'E007',
-  ),
-  159 => 
-  array (
-    'match' => '0D30 0D4D',
-    'replace' => 'E007',
-  ),
-  160 => 
-  array (
-    'match' => '0D30 007E',
-    'replace' => 'E007',
-  ),
-  161 => 
-  array (
-    'match' => '(E00E) E005',
-    'replace' => '\\1 E005 E00E',
-  ),
-  162 => 
-  array (
-    'match' => '(E00E) E006',
-    'replace' => '\\1 E006 E00E',
-  ),
-  163 => 
-  array (
-    'match' => '(E00E) E007',
-    'replace' => '\\1 E007 E00E',
-  ),
-  164 => 
-  array (
-    'match' => '(E00E) E008',
-    'replace' => '\\1 E008 E00E',
-  ),
-  165 => 
-  array (
-    'match' => '(E00E) E009',
-    'replace' => '\\1 E009 E00E',
-  ),
-  166 => 
-  array (
-    'match' => 'E00E E005 (E00E)',
-    'replace' => 'E005 \\1',
-  ),
-  167 => 
-  array (
-    'match' => 'E00E E006 (E00E)',
-    'replace' => 'E006 \\1',
-  ),
-  168 => 
-  array (
-    'match' => 'E00E E007 (E00E)',
-    'replace' => 'E007 \\1',
-  ),
-  169 => 
-  array (
-    'match' => 'E00E E008 (E00E)',
-    'replace' => 'E008 \\1',
-  ),
-  170 => 
-  array (
-    'match' => 'E00E E009 (E00E)',
-    'replace' => 'E009 \\1',
-  ),
-  171 => 
-  array (
-    'match' => '(E00E (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D ((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39))',
-    'replace' => '\\1 0D4D E00E \\3',
-  ),
-  172 => 
-  array (
-    'match' => 'E00E 0D15 (0D4D E00E)',
-    'replace' => '0D15 \\1',
-  ),
-  173 => 
-  array (
-    'match' => 'E00E 0D16 (0D4D E00E)',
-    'replace' => '0D16 \\1',
-  ),
-  174 => 
-  array (
-    'match' => 'E00E 0D17 (0D4D E00E)',
-    'replace' => '0D17 \\1',
-  ),
-  175 => 
-  array (
-    'match' => 'E00E 0D18 (0D4D E00E)',
-    'replace' => '0D18 \\1',
-  ),
-  176 => 
-  array (
-    'match' => 'E00E 0D19 (0D4D E00E)',
-    'replace' => '0D19 \\1',
-  ),
-  177 => 
-  array (
-    'match' => 'E00E 0D1A (0D4D E00E)',
-    'replace' => '0D1A \\1',
-  ),
-  178 => 
-  array (
-    'match' => 'E00E 0D1B (0D4D E00E)',
-    'replace' => '0D1B \\1',
-  ),
-  179 => 
-  array (
-    'match' => 'E00E 0D1C (0D4D E00E)',
-    'replace' => '0D1C \\1',
-  ),
-  180 => 
-  array (
-    'match' => 'E00E 0D1D (0D4D E00E)',
-    'replace' => '0D1D \\1',
-  ),
-  181 => 
-  array (
-    'match' => 'E00E 0D1E (0D4D E00E)',
-    'replace' => '0D1E \\1',
-  ),
-  182 => 
-  array (
-    'match' => 'E00E 0D1F (0D4D E00E)',
-    'replace' => '0D1F \\1',
-  ),
-  183 => 
-  array (
-    'match' => 'E00E 0D20 (0D4D E00E)',
-    'replace' => '0D20 \\1',
-  ),
-  184 => 
-  array (
-    'match' => 'E00E 0D21 (0D4D E00E)',
-    'replace' => '0D21 \\1',
-  ),
-  185 => 
-  array (
-    'match' => 'E00E 0D22 (0D4D E00E)',
-    'replace' => '0D22 \\1',
-  ),
-  186 => 
-  array (
-    'match' => 'E00E 0D23 (0D4D E00E)',
-    'replace' => '0D23 \\1',
-  ),
-  187 => 
-  array (
-    'match' => 'E00E 0D24 (0D4D E00E)',
-    'replace' => '0D24 \\1',
-  ),
-  188 => 
-  array (
-    'match' => 'E00E 0D25 (0D4D E00E)',
-    'replace' => '0D25 \\1',
-  ),
-  189 => 
-  array (
-    'match' => 'E00E 0D26 (0D4D E00E)',
-    'replace' => '0D26 \\1',
-  ),
-  190 => 
-  array (
-    'match' => 'E00E 0D27 (0D4D E00E)',
-    'replace' => '0D27 \\1',
-  ),
-  191 => 
-  array (
-    'match' => 'E00E 0D28 (0D4D E00E)',
-    'replace' => '0D28 \\1',
-  ),
-  192 => 
-  array (
-    'match' => 'E00E 0D2A (0D4D E00E)',
-    'replace' => '0D2A \\1',
-  ),
-  193 => 
-  array (
-    'match' => 'E00E 0D2B (0D4D E00E)',
-    'replace' => '0D2B \\1',
-  ),
-  194 => 
-  array (
-    'match' => 'E00E 0D2C (0D4D E00E)',
-    'replace' => '0D2C \\1',
-  ),
-  195 => 
-  array (
-    'match' => 'E00E 0D2D (0D4D E00E)',
-    'replace' => '0D2D \\1',
-  ),
-  196 => 
-  array (
-    'match' => 'E00E 0D2E (0D4D E00E)',
-    'replace' => '0D2E \\1',
-  ),
-  197 => 
-  array (
-    'match' => 'E00E 0D2F (0D4D E00E)',
-    'replace' => '0D2F \\1',
-  ),
-  198 => 
-  array (
-    'match' => 'E00E 0D30 (0D4D E00E)',
-    'replace' => '0D30 \\1',
-  ),
-  199 => 
-  array (
-    'match' => 'E00E 0D31 (0D4D E00E)',
-    'replace' => '0D31 \\1',
-  ),
-  200 => 
-  array (
-    'match' => 'E00E 0D32 (0D4D E00E)',
-    'replace' => '0D32 \\1',
-  ),
-  201 => 
-  array (
-    'match' => 'E00E 0D33 (0D4D E00E)',
-    'replace' => '0D33 \\1',
-  ),
-  202 => 
-  array (
-    'match' => 'E00E 0D34 (0D4D E00E)',
-    'replace' => '0D34 \\1',
-  ),
-  203 => 
-  array (
-    'match' => 'E00E 0D35 (0D4D E00E)',
-    'replace' => '0D35 \\1',
-  ),
-  204 => 
-  array (
-    'match' => 'E00E 0D36 (0D4D E00E)',
-    'replace' => '0D36 \\1',
-  ),
-  205 => 
-  array (
-    'match' => 'E00E 0D37 (0D4D E00E)',
-    'replace' => '0D37 \\1',
-  ),
-  206 => 
-  array (
-    'match' => 'E00E 0D38 (0D4D E00E)',
-    'replace' => '0D38 \\1',
-  ),
-  207 => 
-  array (
-    'match' => 'E00E 0D39 (0D4D E00E)',
-    'replace' => '0D39 \\1',
-  ),
-  208 => 
-  array (
-    'match' => '(0D46) E005',
-    'replace' => '\\1 E005 0D46',
-  ),
-  209 => 
-  array (
-    'match' => '(0D46) E006',
-    'replace' => '\\1 E006 0D46',
-  ),
-  210 => 
-  array (
-    'match' => '(0D46) E007',
-    'replace' => '\\1 E007 0D46',
-  ),
-  211 => 
-  array (
-    'match' => '(0D46) E008',
-    'replace' => '\\1 E008 0D46',
-  ),
-  212 => 
-  array (
-    'match' => '(0D46) E009',
-    'replace' => '\\1 E009 0D46',
-  ),
-  213 => 
-  array (
-    'match' => '(0D47) E005',
-    'replace' => '\\1 E005 0D47',
-  ),
-  214 => 
-  array (
-    'match' => '(0D47) E006',
-    'replace' => '\\1 E006 0D47',
-  ),
-  215 => 
-  array (
-    'match' => '(0D47) E007',
-    'replace' => '\\1 E007 0D47',
-  ),
-  216 => 
-  array (
-    'match' => '(0D47) E008',
-    'replace' => '\\1 E008 0D47',
-  ),
-  217 => 
-  array (
-    'match' => '(0D47) E009',
-    'replace' => '\\1 E009 0D47',
-  ),
-  218 => 
-  array (
-    'match' => '(0D48) E005',
-    'replace' => '\\1 E005 0D48',
-  ),
-  219 => 
-  array (
-    'match' => '(0D48) E006',
-    'replace' => '\\1 E006 0D48',
-  ),
-  220 => 
-  array (
-    'match' => '(0D48) E007',
-    'replace' => '\\1 E007 0D48',
-  ),
-  221 => 
-  array (
-    'match' => '(0D48) E008',
-    'replace' => '\\1 E008 0D48',
-  ),
-  222 => 
-  array (
-    'match' => '(0D48) E009',
-    'replace' => '\\1 E009 0D48',
-  ),
-  223 => 
-  array (
-    'match' => '0D46 E005',
-    'replace' => 'E005',
-  ),
-  224 => 
-  array (
-    'match' => '0D46 E006',
-    'replace' => 'E006',
-  ),
-  225 => 
-  array (
-    'match' => '0D46 E007',
-    'replace' => 'E007',
-  ),
-  226 => 
-  array (
-    'match' => '0D46 E008',
-    'replace' => 'E008',
-  ),
-  227 => 
-  array (
-    'match' => '0D46 E009',
-    'replace' => 'E009',
-  ),
-  228 => 
-  array (
-    'match' => '0D47 E005',
-    'replace' => 'E005',
-  ),
-  229 => 
-  array (
-    'match' => '0D47 E006',
-    'replace' => 'E006',
-  ),
-  230 => 
-  array (
-    'match' => '0D47 E007',
-    'replace' => 'E007',
-  ),
-  231 => 
-  array (
-    'match' => '0D47 E008',
-    'replace' => 'E008',
-  ),
-  232 => 
-  array (
-    'match' => '0D47 E009',
-    'replace' => 'E009',
-  ),
-  233 => 
-  array (
-    'match' => '0D48 E005',
-    'replace' => 'E005',
-  ),
-  234 => 
-  array (
-    'match' => '0D48 E006',
-    'replace' => 'E006',
-  ),
-  235 => 
-  array (
-    'match' => '0D48 E007',
-    'replace' => 'E007',
-  ),
-  236 => 
-  array (
-    'match' => '0D48 E008',
-    'replace' => 'E008',
-  ),
-  237 => 
-  array (
-    'match' => '0D48 E009',
-    'replace' => 'E009',
-  ),
-  238 => 
-  array (
-    'match' => '(0D46 (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D',
-    'replace' => '\\1 0D4D 0D46',
-  ),
-  239 => 
-  array (
-    'match' => '(0D47 (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D',
-    'replace' => '\\1 0D4D 0D47',
-  ),
-  240 => 
-  array (
-    'match' => '(0D48 (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D',
-    'replace' => '\\1 0D4D 0D48',
-  ),
-  241 => 
-  array (
-    'match' => '0D46 0D15 (0D4D)',
-    'replace' => '0D15 \\1',
-  ),
-  242 => 
-  array (
-    'match' => '0D46 0D16 (0D4D)',
-    'replace' => '0D16 \\1',
-  ),
-  243 => 
-  array (
-    'match' => '0D46 0D17 (0D4D)',
-    'replace' => '0D17 \\1',
-  ),
-  244 => 
-  array (
-    'match' => '0D46 0D18 (0D4D)',
-    'replace' => '0D18 \\1',
-  ),
-  245 => 
-  array (
-    'match' => '0D46 0D19 (0D4D)',
-    'replace' => '0D19 \\1',
-  ),
-  246 => 
-  array (
-    'match' => '0D46 0D1A (0D4D)',
-    'replace' => '0D1A \\1',
-  ),
-  247 => 
-  array (
-    'match' => '0D46 0D1B (0D4D)',
-    'replace' => '0D1B \\1',
-  ),
-  248 => 
-  array (
-    'match' => '0D46 0D1C (0D4D)',
-    'replace' => '0D1C \\1',
-  ),
-  249 => 
-  array (
-    'match' => '0D46 0D1D (0D4D)',
-    'replace' => '0D1D \\1',
-  ),
-  250 => 
-  array (
-    'match' => '0D46 0D1E (0D4D)',
-    'replace' => '0D1E \\1',
-  ),
-  251 => 
-  array (
-    'match' => '0D46 0D1F (0D4D)',
-    'replace' => '0D1F \\1',
-  ),
-  252 => 
-  array (
-    'match' => '0D46 0D20 (0D4D)',
-    'replace' => '0D20 \\1',
-  ),
-  253 => 
-  array (
-    'match' => '0D46 0D21 (0D4D)',
-    'replace' => '0D21 \\1',
-  ),
-  254 => 
-  array (
-    'match' => '0D46 0D22 (0D4D)',
-    'replace' => '0D22 \\1',
-  ),
-  255 => 
-  array (
-    'match' => '0D46 0D23 (0D4D)',
-    'replace' => '0D23 \\1',
-  ),
-  256 => 
-  array (
-    'match' => '0D46 0D24 (0D4D)',
-    'replace' => '0D24 \\1',
-  ),
-  257 => 
-  array (
-    'match' => '0D46 0D25 (0D4D)',
-    'replace' => '0D25 \\1',
-  ),
-  258 => 
-  array (
-    'match' => '0D46 0D26 (0D4D)',
-    'replace' => '0D26 \\1',
-  ),
-  259 => 
-  array (
-    'match' => '0D46 0D27 (0D4D)',
-    'replace' => '0D27 \\1',
-  ),
-  260 => 
-  array (
-    'match' => '0D46 0D28 (0D4D)',
-    'replace' => '0D28 \\1',
-  ),
-  261 => 
-  array (
-    'match' => '0D46 0D2A (0D4D)',
-    'replace' => '0D2A \\1',
-  ),
-  262 => 
-  array (
-    'match' => '0D46 0D2B (0D4D)',
-    'replace' => '0D2B \\1',
-  ),
-  263 => 
-  array (
-    'match' => '0D46 0D2C (0D4D)',
-    'replace' => '0D2C \\1',
-  ),
-  264 => 
-  array (
-    'match' => '0D46 0D2D (0D4D)',
-    'replace' => '0D2D \\1',
-  ),
-  265 => 
-  array (
-    'match' => '0D46 0D2E (0D4D)',
-    'replace' => '0D2E \\1',
-  ),
-  266 => 
-  array (
-    'match' => '0D46 0D2F (0D4D)',
-    'replace' => '0D2F \\1',
-  ),
-  267 => 
-  array (
-    'match' => '0D46 0D30 (0D4D)',
-    'replace' => '0D30 \\1',
-  ),
-  268 => 
-  array (
-    'match' => '0D46 0D31 (0D4D)',
-    'replace' => '0D31 \\1',
-  ),
-  269 => 
-  array (
-    'match' => '0D46 0D32 (0D4D)',
-    'replace' => '0D32 \\1',
-  ),
-  270 => 
-  array (
-    'match' => '0D46 0D33 (0D4D)',
-    'replace' => '0D33 \\1',
-  ),
-  271 => 
-  array (
-    'match' => '0D46 0D34 (0D4D)',
-    'replace' => '0D34 \\1',
-  ),
-  272 => 
-  array (
-    'match' => '0D46 0D35 (0D4D)',
-    'replace' => '0D35 \\1',
-  ),
-  273 => 
-  array (
-    'match' => '0D46 0D36 (0D4D)',
-    'replace' => '0D36 \\1',
-  ),
-  274 => 
-  array (
-    'match' => '0D46 0D37 (0D4D)',
-    'replace' => '0D37 \\1',
-  ),
-  275 => 
-  array (
-    'match' => '0D46 0D38 (0D4D)',
-    'replace' => '0D38 \\1',
-  ),
-  276 => 
-  array (
-    'match' => '0D46 0D39 (0D4D)',
-    'replace' => '0D39 \\1',
-  ),
-  277 => 
-  array (
-    'match' => '0D47 0D15 (0D4D)',
-    'replace' => '0D15 \\1',
-  ),
-  278 => 
-  array (
-    'match' => '0D47 0D16 (0D4D)',
-    'replace' => '0D16 \\1',
-  ),
-  279 => 
-  array (
-    'match' => '0D47 0D17 (0D4D)',
-    'replace' => '0D17 \\1',
-  ),
-  280 => 
-  array (
-    'match' => '0D47 0D18 (0D4D)',
-    'replace' => '0D18 \\1',
-  ),
-  281 => 
-  array (
-    'match' => '0D47 0D19 (0D4D)',
-    'replace' => '0D19 \\1',
-  ),
-  282 => 
-  array (
-    'match' => '0D47 0D1A (0D4D)',
-    'replace' => '0D1A \\1',
-  ),
-  283 => 
-  array (
-    'match' => '0D47 0D1B (0D4D)',
-    'replace' => '0D1B \\1',
-  ),
-  284 => 
-  array (
-    'match' => '0D47 0D1C (0D4D)',
-    'replace' => '0D1C \\1',
-  ),
-  285 => 
-  array (
-    'match' => '0D47 0D1D (0D4D)',
-    'replace' => '0D1D \\1',
-  ),
-  286 => 
-  array (
-    'match' => '0D47 0D1E (0D4D)',
-    'replace' => '0D1E \\1',
-  ),
-  287 => 
-  array (
-    'match' => '0D47 0D1F (0D4D)',
-    'replace' => '0D1F \\1',
-  ),
-  288 => 
-  array (
-    'match' => '0D47 0D20 (0D4D)',
-    'replace' => '0D20 \\1',
-  ),
-  289 => 
-  array (
-    'match' => '0D47 0D21 (0D4D)',
-    'replace' => '0D21 \\1',
-  ),
-  290 => 
-  array (
-    'match' => '0D47 0D22 (0D4D)',
-    'replace' => '0D22 \\1',
-  ),
-  291 => 
-  array (
-    'match' => '0D47 0D23 (0D4D)',
-    'replace' => '0D23 \\1',
-  ),
-  292 => 
-  array (
-    'match' => '0D47 0D24 (0D4D)',
-    'replace' => '0D24 \\1',
-  ),
-  293 => 
-  array (
-    'match' => '0D47 0D25 (0D4D)',
-    'replace' => '0D25 \\1',
-  ),
-  294 => 
-  array (
-    'match' => '0D47 0D26 (0D4D)',
-    'replace' => '0D26 \\1',
-  ),
-  295 => 
-  array (
-    'match' => '0D47 0D27 (0D4D)',
-    'replace' => '0D27 \\1',
-  ),
-  296 => 
-  array (
-    'match' => '0D47 0D28 (0D4D)',
-    'replace' => '0D28 \\1',
-  ),
-  297 => 
-  array (
-    'match' => '0D47 0D2A (0D4D)',
-    'replace' => '0D2A \\1',
-  ),
-  298 => 
-  array (
-    'match' => '0D47 0D2B (0D4D)',
-    'replace' => '0D2B \\1',
-  ),
-  299 => 
-  array (
-    'match' => '0D47 0D2C (0D4D)',
-    'replace' => '0D2C \\1',
-  ),
-  300 => 
-  array (
-    'match' => '0D47 0D2D (0D4D)',
-    'replace' => '0D2D \\1',
-  ),
-  301 => 
-  array (
-    'match' => '0D47 0D2E (0D4D)',
-    'replace' => '0D2E \\1',
-  ),
-  302 => 
-  array (
-    'match' => '0D47 0D2F (0D4D)',
-    'replace' => '0D2F \\1',
-  ),
-  303 => 
-  array (
-    'match' => '0D47 0D30 (0D4D)',
-    'replace' => '0D30 \\1',
-  ),
-  304 => 
-  array (
-    'match' => '0D47 0D31 (0D4D)',
-    'replace' => '0D31 \\1',
-  ),
-  305 => 
-  array (
-    'match' => '0D47 0D32 (0D4D)',
-    'replace' => '0D32 \\1',
-  ),
-  306 => 
-  array (
-    'match' => '0D47 0D33 (0D4D)',
-    'replace' => '0D33 \\1',
-  ),
-  307 => 
-  array (
-    'match' => '0D47 0D34 (0D4D)',
-    'replace' => '0D34 \\1',
-  ),
-  308 => 
-  array (
-    'match' => '0D47 0D35 (0D4D)',
-    'replace' => '0D35 \\1',
-  ),
-  309 => 
-  array (
-    'match' => '0D47 0D36 (0D4D)',
-    'replace' => '0D36 \\1',
-  ),
-  310 => 
-  array (
-    'match' => '0D47 0D37 (0D4D)',
-    'replace' => '0D37 \\1',
-  ),
-  311 => 
-  array (
-    'match' => '0D47 0D38 (0D4D)',
-    'replace' => '0D38 \\1',
-  ),
-  312 => 
-  array (
-    'match' => '0D47 0D39 (0D4D)',
-    'replace' => '0D39 \\1',
-  ),
-  313 => 
-  array (
-    'match' => '0D48 0D15 (0D4D)',
-    'replace' => '0D15 \\1',
-  ),
-  314 => 
-  array (
-    'match' => '0D48 0D16 (0D4D)',
-    'replace' => '0D16 \\1',
-  ),
-  315 => 
-  array (
-    'match' => '0D48 0D17 (0D4D)',
-    'replace' => '0D17 \\1',
-  ),
-  316 => 
-  array (
-    'match' => '0D48 0D18 (0D4D)',
-    'replace' => '0D18 \\1',
-  ),
-  317 => 
-  array (
-    'match' => '0D48 0D19 (0D4D)',
-    'replace' => '0D19 \\1',
-  ),
-  318 => 
-  array (
-    'match' => '0D48 0D1A (0D4D)',
-    'replace' => '0D1A \\1',
-  ),
-  319 => 
-  array (
-    'match' => '0D48 0D1B (0D4D)',
-    'replace' => '0D1B \\1',
-  ),
-  320 => 
-  array (
-    'match' => '0D48 0D1C (0D4D)',
-    'replace' => '0D1C \\1',
-  ),
-  321 => 
-  array (
-    'match' => '0D48 0D1D (0D4D)',
-    'replace' => '0D1D \\1',
-  ),
-  322 => 
-  array (
-    'match' => '0D48 0D1E (0D4D)',
-    'replace' => '0D1E \\1',
-  ),
-  323 => 
-  array (
-    'match' => '0D48 0D1F (0D4D)',
-    'replace' => '0D1F \\1',
-  ),
-  324 => 
-  array (
-    'match' => '0D48 0D20 (0D4D)',
-    'replace' => '0D20 \\1',
-  ),
-  325 => 
-  array (
-    'match' => '0D48 0D21 (0D4D)',
-    'replace' => '0D21 \\1',
-  ),
-  326 => 
-  array (
-    'match' => '0D48 0D22 (0D4D)',
-    'replace' => '0D22 \\1',
-  ),
-  327 => 
-  array (
-    'match' => '0D48 0D23 (0D4D)',
-    'replace' => '0D23 \\1',
-  ),
-  328 => 
-  array (
-    'match' => '0D48 0D24 (0D4D)',
-    'replace' => '0D24 \\1',
-  ),
-  329 => 
-  array (
-    'match' => '0D48 0D25 (0D4D)',
-    'replace' => '0D25 \\1',
-  ),
-  330 => 
-  array (
-    'match' => '0D48 0D26 (0D4D)',
-    'replace' => '0D26 \\1',
-  ),
-  331 => 
-  array (
-    'match' => '0D48 0D27 (0D4D)',
-    'replace' => '0D27 \\1',
-  ),
-  332 => 
-  array (
-    'match' => '0D48 0D28 (0D4D)',
-    'replace' => '0D28 \\1',
-  ),
-  333 => 
-  array (
-    'match' => '0D48 0D2A (0D4D)',
-    'replace' => '0D2A \\1',
-  ),
-  334 => 
-  array (
-    'match' => '0D48 0D2B (0D4D)',
-    'replace' => '0D2B \\1',
-  ),
-  335 => 
-  array (
-    'match' => '0D48 0D2C (0D4D)',
-    'replace' => '0D2C \\1',
-  ),
-  336 => 
-  array (
-    'match' => '0D48 0D2D (0D4D)',
-    'replace' => '0D2D \\1',
-  ),
-  337 => 
-  array (
-    'match' => '0D48 0D2E (0D4D)',
-    'replace' => '0D2E \\1',
-  ),
-  338 => 
-  array (
-    'match' => '0D48 0D2F (0D4D)',
-    'replace' => '0D2F \\1',
-  ),
-  339 => 
-  array (
-    'match' => '0D48 0D30 (0D4D)',
-    'replace' => '0D30 \\1',
-  ),
-  340 => 
-  array (
-    'match' => '0D48 0D31 (0D4D)',
-    'replace' => '0D31 \\1',
-  ),
-  341 => 
-  array (
-    'match' => '0D48 0D32 (0D4D)',
-    'replace' => '0D32 \\1',
-  ),
-  342 => 
-  array (
-    'match' => '0D48 0D33 (0D4D)',
-    'replace' => '0D33 \\1',
-  ),
-  343 => 
-  array (
-    'match' => '0D48 0D34 (0D4D)',
-    'replace' => '0D34 \\1',
-  ),
-  344 => 
-  array (
-    'match' => '0D48 0D35 (0D4D)',
-    'replace' => '0D35 \\1',
-  ),
-  345 => 
-  array (
-    'match' => '0D48 0D36 (0D4D)',
-    'replace' => '0D36 \\1',
-  ),
-  346 => 
-  array (
-    'match' => '0D48 0D37 (0D4D)',
-    'replace' => '0D37 \\1',
-  ),
-  347 => 
-  array (
-    'match' => '0D48 0D38 (0D4D)',
-    'replace' => '0D38 \\1',
-  ),
-  348 => 
-  array (
-    'match' => '0D48 0D39 (0D4D)',
-    'replace' => '0D39 \\1',
-  ),
-  349 => 
-  array (
-    'match' => '0D41 0D4D',
-    'replace' => 'E003',
-  ),
-  350 => 
-  array (
-    'match' => '007E',
-    'replace' => '0D4D',
-  ),
-  351 => 
-  array (
-    'match' => '2018',
-    'replace' => '0D4D',
-  ),
-  352 => 
-  array (
-    'match' => '2019',
-    'replace' => '0D4D',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php
deleted file mode 100644 (file)
index b490e2b..0000000
+++ /dev/null
@@ -1,2149 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0B4D 200C',
-    'replace' => '2018',
-  ),
-  1 => 
-  array (
-    'match' => '0B15 0B4D 0B37',
-    'replace' => 'E003',
-  ),
-  2 => 
-  array (
-    'match' => '0B1C 0B4D 0B1E',
-    'replace' => 'E004',
-  ),
-  3 => 
-  array (
-    'match' => '((0B15|0B16|0B17|0B18|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B1F|0B20|0B21|0B22|0B23|0B24|0B25|0B26|0B27|0B28|0B2A|0B2B|0B2C|0B2D|0B2E|0B2F|0B30|0B32|0B33|0B35|0B36|0B37|0B38|0B39|0B71|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B30 0B4D',
-    'replace' => '\\1 E069',
-  ),
-  4 => 
-  array (
-    'match' => '((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C)) 0B30 0B4D',
-    'replace' => '\\1 E069',
-  ),
-  5 => 
-  array (
-    'match' => '((0B3E|0B40|E044|0B57|E068|E074|E08B|E08F)) 0B30 0B4D',
-    'replace' => '\\1 E069',
-  ),
-  6 => 
-  array (
-    'match' => '(0B3C) 0B30 0B4D',
-    'replace' => '\\1 E069',
-  ),
-  7 => 
-  array (
-    'match' => '(25CC) 0B30 0B4D',
-    'replace' => '\\1 E069',
-  ),
-  8 => 
-  array (
-    'match' => '((0B15|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B20|0B21|0B22|0B24|0B26|0B28|0B2C|0B2D|0B32|0B33|0B35|0B39|25CC)) E069',
-    'replace' => '\\1 E06B',
-  ),
-  9 => 
-  array (
-    'match' => '((0B15|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B20|0B21|0B22|0B24|0B26|0B28|0B2C|0B2D|0B32|0B33|0B35|0B39|25CC) 0B3C) E069',
-    'replace' => '\\1 E06B',
-  ),
-  10 => 
-  array (
-    'match' => '0B38 0B4D 0B24 0B4D 0B30',
-    'replace' => 'E01B',
-  ),
-  11 => 
-  array (
-    'match' => '0B28 0B4D 0B24 0B4D 0B30',
-    'replace' => 'E01D',
-  ),
-  12 => 
-  array (
-    'match' => '0B28 0B4D 0B24 0B4D 0B30',
-    'replace' => 'E01C',
-  ),
-  13 => 
-  array (
-    'match' => '0B56 E069',
-    'replace' => 'E070',
-  ),
-  14 => 
-  array (
-    'match' => '0B57 E069',
-    'replace' => 'E074',
-  ),
-  15 => 
-  array (
-    'match' => '0B3F E069',
-    'replace' => 'E06D',
-  ),
-  16 => 
-  array (
-    'match' => '0B40 E069',
-    'replace' => 'E14D',
-  ),
-  17 => 
-  array (
-    'match' => '0B24 0B4D 0B17 0B4D 0B27',
-    'replace' => 'E036',
-  ),
-  18 => 
-  array (
-    'match' => '0B24 0B4D 0B38 0B4D 0B28',
-    'replace' => 'E030',
-  ),
-  19 => 
-  array (
-    'match' => '0B19 0B4D 0B15',
-    'replace' => 'E005',
-  ),
-  20 => 
-  array (
-    'match' => '0B19 0B4D 0B16',
-    'replace' => 'E006',
-  ),
-  21 => 
-  array (
-    'match' => '0B19 0B4D 0B17',
-    'replace' => 'E007',
-  ),
-  22 => 
-  array (
-    'match' => '0B19 0B4D 0B18',
-    'replace' => 'E008',
-  ),
-  23 => 
-  array (
-    'match' => '0B1A 0B4D 0B1A',
-    'replace' => 'E009',
-  ),
-  24 => 
-  array (
-    'match' => '0B1F 0B4D 0B1F',
-    'replace' => 'E00A',
-  ),
-  25 => 
-  array (
-    'match' => '0B24 0B4D 0B24',
-    'replace' => 'E00B',
-  ),
-  26 => 
-  array (
-    'match' => '0B26 0B4D 0B27',
-    'replace' => 'E00C',
-  ),
-  27 => 
-  array (
-    'match' => '0B26 0B4D 0B26',
-    'replace' => 'E00D',
-  ),
-  28 => 
-  array (
-    'match' => '0B23 0B4D 0B23',
-    'replace' => 'E00F',
-  ),
-  29 => 
-  array (
-    'match' => '0B1E 0B4D 0B1A',
-    'replace' => 'E011',
-  ),
-  30 => 
-  array (
-    'match' => '0B1E 0B4D 0B1D',
-    'replace' => 'E012',
-  ),
-  31 => 
-  array (
-    'match' => '0B1E 0B4D 0B1C',
-    'replace' => 'E013',
-  ),
-  32 => 
-  array (
-    'match' => '0B26 0B4D 0B2D',
-    'replace' => 'E014',
-  ),
-  33 => 
-  array (
-    'match' => '0B27 0B4D 0B27',
-    'replace' => 'E015',
-  ),
-  34 => 
-  array (
-    'match' => '0B2C 0B4D 0B26',
-    'replace' => 'E016',
-  ),
-  35 => 
-  array (
-    'match' => '0B28 0B4D 0B26',
-    'replace' => 'E017',
-  ),
-  36 => 
-  array (
-    'match' => '0B28 0B4D 0B27',
-    'replace' => 'E018',
-  ),
-  37 => 
-  array (
-    'match' => '0B2E 0B4D 0B2B',
-    'replace' => 'E019',
-  ),
-  38 => 
-  array (
-    'match' => '0B2E 0B4D 0B2A',
-    'replace' => 'E01A',
-  ),
-  39 => 
-  array (
-    'match' => '0B37 0B4D 0B23',
-    'replace' => 'E010',
-  ),
-  40 => 
-  array (
-    'match' => '0B39 0B4D 0B28',
-    'replace' => 'E01E',
-  ),
-  41 => 
-  array (
-    'match' => '0B39 0B4D 0B35',
-    'replace' => 'E01F',
-  ),
-  42 => 
-  array (
-    'match' => '0B39 0B4D 0B2E',
-    'replace' => 'E020',
-  ),
-  43 => 
-  array (
-    'match' => '0B1A 0B4D 0B1B',
-    'replace' => 'E021',
-  ),
-  44 => 
-  array (
-    'match' => '0B1E 0B4D 0B1B',
-    'replace' => 'E023',
-  ),
-  45 => 
-  array (
-    'match' => '0B2E 0B4D 0B2D',
-    'replace' => 'E024',
-  ),
-  46 => 
-  array (
-    'match' => '0B28 0B4D 0B24',
-    'replace' => 'E025',
-  ),
-  47 => 
-  array (
-    'match' => '0B38 0B4D 0B24',
-    'replace' => 'E026',
-  ),
-  48 => 
-  array (
-    'match' => '0B2A 0B4D 0B24',
-    'replace' => 'E027',
-  ),
-  49 => 
-  array (
-    'match' => '0B15 0B4D 0B24',
-    'replace' => 'E028',
-  ),
-  50 => 
-  array (
-    'match' => '0B23 0B4D 0B21',
-    'replace' => 'E029',
-  ),
-  51 => 
-  array (
-    'match' => '0B24 0B4D 0B15',
-    'replace' => 'E02A',
-  ),
-  52 => 
-  array (
-    'match' => '0B24 0B4D 0B38',
-    'replace' => 'E02B',
-  ),
-  53 => 
-  array (
-    'match' => '0B24 0B4D 0B2A',
-    'replace' => 'E02C',
-  ),
-  54 => 
-  array (
-    'match' => '0B23 0B4D 0B22',
-    'replace' => 'E031',
-  ),
-  55 => 
-  array (
-    'match' => '0B36 0B4D 0B1B',
-    'replace' => 'E032',
-  ),
-  56 => 
-  array (
-    'match' => '0B24 0B4D 0B28',
-    'replace' => 'E033',
-  ),
-  57 => 
-  array (
-    'match' => '0B24 0B4D 0B2E',
-    'replace' => 'E034',
-  ),
-  58 => 
-  array (
-    'match' => '0B17 0B4D 0B27',
-    'replace' => 'E035',
-  ),
-  59 => 
-  array (
-    'match' => '0B24 0B4D 0B2B',
-    'replace' => 'E037',
-  ),
-  60 => 
-  array (
-    'match' => '0B2E 0B4D 0B2E',
-    'replace' => 'E14A',
-  ),
-  61 => 
-  array (
-    'match' => '0B21 0B3C',
-    'replace' => '0B5C',
-  ),
-  62 => 
-  array (
-    'match' => '0B22 0B3C',
-    'replace' => '0B5D',
-  ),
-  63 => 
-  array (
-    'match' => '((0B15|0B16|0B17|0B18|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B1F|0B20|0B21|0B22|0B23|0B24|0B25|0B26|0B27|0B28|0B2A|0B2B|0B2C|0B2D|0B2E|0B2F|0B30|0B32|0B33|0B35|0B36|0B37|0B38|0B39|0B71|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  64 => 
-  array (
-    'match' => '((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C)) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  65 => 
-  array (
-    'match' => '(E069) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  66 => 
-  array (
-    'match' => '((0B41|E045|0B42|0B43|E053|E056|E059|0B3C)) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  67 => 
-  array (
-    'match' => '(200D) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  68 => 
-  array (
-    'match' => '(25CC) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  69 => 
-  array (
-    'match' => '(0020) 0B4D',
-    'replace' => '\\1 2019',
-  ),
-  70 => 
-  array (
-    'match' => '200D 2019',
-    'replace' => '2019',
-  ),
-  71 => 
-  array (
-    'match' => '2019 0B30',
-    'replace' => 'E075',
-  ),
-  72 => 
-  array (
-    'match' => '2019 0B5F',
-    'replace' => 'E077',
-  ),
-  73 => 
-  array (
-    'match' => '2019 0B35',
-    'replace' => 'E078',
-  ),
-  74 => 
-  array (
-    'match' => '2019 0B32',
-    'replace' => 'E110',
-  ),
-  75 => 
-  array (
-    'match' => '2019 0B33',
-    'replace' => 'E111',
-  ),
-  76 => 
-  array (
-    'match' => '2019 0B2E',
-    'replace' => 'E11C',
-  ),
-  77 => 
-  array (
-    'match' => '2019 0B15',
-    'replace' => 'E0F6',
-  ),
-  78 => 
-  array (
-    'match' => '2019 0B16',
-    'replace' => 'E0F7',
-  ),
-  79 => 
-  array (
-    'match' => '2019 0B17',
-    'replace' => 'E0F8',
-  ),
-  80 => 
-  array (
-    'match' => '2019 0B18',
-    'replace' => 'E0F9',
-  ),
-  81 => 
-  array (
-    'match' => '2019 0B19',
-    'replace' => 'E0FA',
-  ),
-  82 => 
-  array (
-    'match' => '2019 0B1A',
-    'replace' => 'E0FB',
-  ),
-  83 => 
-  array (
-    'match' => '2019 0B1B',
-    'replace' => 'E0FC',
-  ),
-  84 => 
-  array (
-    'match' => '2019 0B1C',
-    'replace' => 'E0FD',
-  ),
-  85 => 
-  array (
-    'match' => '2019 0B1D',
-    'replace' => 'E0FE',
-  ),
-  86 => 
-  array (
-    'match' => '2019 0B1E',
-    'replace' => 'E0FF',
-  ),
-  87 => 
-  array (
-    'match' => '2019 0B1F',
-    'replace' => 'E100',
-  ),
-  88 => 
-  array (
-    'match' => '2019 0B20',
-    'replace' => 'E101',
-  ),
-  89 => 
-  array (
-    'match' => '2019 0B21',
-    'replace' => 'E102',
-  ),
-  90 => 
-  array (
-    'match' => '2019 0B22',
-    'replace' => 'E103',
-  ),
-  91 => 
-  array (
-    'match' => '2019 0B23',
-    'replace' => 'E104',
-  ),
-  92 => 
-  array (
-    'match' => '2019 0B24',
-    'replace' => 'E105',
-  ),
-  93 => 
-  array (
-    'match' => '2019 0B25',
-    'replace' => 'E106',
-  ),
-  94 => 
-  array (
-    'match' => '2019 0B26',
-    'replace' => 'E107',
-  ),
-  95 => 
-  array (
-    'match' => '2019 0B27',
-    'replace' => 'E108',
-  ),
-  96 => 
-  array (
-    'match' => '2019 0B28',
-    'replace' => 'E109',
-  ),
-  97 => 
-  array (
-    'match' => '2019 0B2A',
-    'replace' => 'E10A',
-  ),
-  98 => 
-  array (
-    'match' => '2019 0B2B',
-    'replace' => 'E10B',
-  ),
-  99 => 
-  array (
-    'match' => '2019 0B2C',
-    'replace' => 'E10C',
-  ),
-  100 => 
-  array (
-    'match' => '2019 0B2D',
-    'replace' => 'E10D',
-  ),
-  101 => 
-  array (
-    'match' => '2019 0B2E',
-    'replace' => 'E10E',
-  ),
-  102 => 
-  array (
-    'match' => '2019 0B2F',
-    'replace' => 'E10F',
-  ),
-  103 => 
-  array (
-    'match' => '2019 0B32',
-    'replace' => 'E110',
-  ),
-  104 => 
-  array (
-    'match' => '2019 0B33',
-    'replace' => 'E111',
-  ),
-  105 => 
-  array (
-    'match' => '2019 0B35',
-    'replace' => 'E112',
-  ),
-  106 => 
-  array (
-    'match' => '2019 0B36',
-    'replace' => 'E113',
-  ),
-  107 => 
-  array (
-    'match' => '2019 0B37',
-    'replace' => 'E114',
-  ),
-  108 => 
-  array (
-    'match' => '2019 0B38',
-    'replace' => 'E115',
-  ),
-  109 => 
-  array (
-    'match' => '2019 0B39',
-    'replace' => 'E116',
-  ),
-  110 => 
-  array (
-    'match' => '2019 E003',
-    'replace' => 'E119',
-  ),
-  111 => 
-  array (
-    'match' => '2019 E004',
-    'replace' => 'E11A',
-  ),
-  112 => 
-  array (
-    'match' => '2019 0B35',
-    'replace' => 'E078',
-  ),
-  113 => 
-  array (
-    'match' => '2019 0B71',
-    'replace' => 'E078',
-  ),
-  114 => 
-  array (
-    'match' => '0B15 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E090 \\1',
-  ),
-  115 => 
-  array (
-    'match' => '0B16 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E091 \\1',
-  ),
-  116 => 
-  array (
-    'match' => '0B17 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E092 \\1',
-  ),
-  117 => 
-  array (
-    'match' => '0B18 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E093 \\1',
-  ),
-  118 => 
-  array (
-    'match' => '0B19 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E094 \\1',
-  ),
-  119 => 
-  array (
-    'match' => '0B1A ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E095 \\1',
-  ),
-  120 => 
-  array (
-    'match' => '0B1B ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E096 \\1',
-  ),
-  121 => 
-  array (
-    'match' => '0B1C ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E097 \\1',
-  ),
-  122 => 
-  array (
-    'match' => '0B1D ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E098 \\1',
-  ),
-  123 => 
-  array (
-    'match' => '0B1E ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E099 \\1',
-  ),
-  124 => 
-  array (
-    'match' => '0B1F ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09A \\1',
-  ),
-  125 => 
-  array (
-    'match' => '0B20 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09B \\1',
-  ),
-  126 => 
-  array (
-    'match' => '0B21 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09C \\1',
-  ),
-  127 => 
-  array (
-    'match' => '0B22 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09D \\1',
-  ),
-  128 => 
-  array (
-    'match' => '0B23 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09E \\1',
-  ),
-  129 => 
-  array (
-    'match' => '0B24 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09F \\1',
-  ),
-  130 => 
-  array (
-    'match' => '0B25 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A0 \\1',
-  ),
-  131 => 
-  array (
-    'match' => '0B26 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A1 \\1',
-  ),
-  132 => 
-  array (
-    'match' => '0B27 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A2 \\1',
-  ),
-  133 => 
-  array (
-    'match' => '0B28 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A3 \\1',
-  ),
-  134 => 
-  array (
-    'match' => '0B2A ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A4 \\1',
-  ),
-  135 => 
-  array (
-    'match' => '0B2B ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A5 \\1',
-  ),
-  136 => 
-  array (
-    'match' => '0B2C ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A6 \\1',
-  ),
-  137 => 
-  array (
-    'match' => '0B2D ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A7 \\1',
-  ),
-  138 => 
-  array (
-    'match' => '0B2E ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A8 \\1',
-  ),
-  139 => 
-  array (
-    'match' => '0B2F ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A9 \\1',
-  ),
-  140 => 
-  array (
-    'match' => '0B32 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AA \\1',
-  ),
-  141 => 
-  array (
-    'match' => '0B33 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AB \\1',
-  ),
-  142 => 
-  array (
-    'match' => '0B35 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AC \\1',
-  ),
-  143 => 
-  array (
-    'match' => '0B36 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AD \\1',
-  ),
-  144 => 
-  array (
-    'match' => '0B37 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AE \\1',
-  ),
-  145 => 
-  array (
-    'match' => '0B38 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AF \\1',
-  ),
-  146 => 
-  array (
-    'match' => '0B39 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B0 \\1',
-  ),
-  147 => 
-  array (
-    'match' => 'E003 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B1 \\1',
-  ),
-  148 => 
-  array (
-    'match' => 'E004 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B2 \\1',
-  ),
-  149 => 
-  array (
-    'match' => '0B15 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E090 \\1',
-  ),
-  150 => 
-  array (
-    'match' => '0B16 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E091 \\1',
-  ),
-  151 => 
-  array (
-    'match' => '0B17 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E092 \\1',
-  ),
-  152 => 
-  array (
-    'match' => '0B18 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E093 \\1',
-  ),
-  153 => 
-  array (
-    'match' => '0B19 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E094 \\1',
-  ),
-  154 => 
-  array (
-    'match' => '0B1A ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E095 \\1',
-  ),
-  155 => 
-  array (
-    'match' => '0B1B ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E096 \\1',
-  ),
-  156 => 
-  array (
-    'match' => '0B1C ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E097 \\1',
-  ),
-  157 => 
-  array (
-    'match' => '0B1D ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E098 \\1',
-  ),
-  158 => 
-  array (
-    'match' => '0B1E ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E099 \\1',
-  ),
-  159 => 
-  array (
-    'match' => '0B1F ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09A \\1',
-  ),
-  160 => 
-  array (
-    'match' => '0B20 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09B \\1',
-  ),
-  161 => 
-  array (
-    'match' => '0B21 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09C \\1',
-  ),
-  162 => 
-  array (
-    'match' => '0B22 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09D \\1',
-  ),
-  163 => 
-  array (
-    'match' => '0B23 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09E \\1',
-  ),
-  164 => 
-  array (
-    'match' => '0B24 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09F \\1',
-  ),
-  165 => 
-  array (
-    'match' => '0B25 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A0 \\1',
-  ),
-  166 => 
-  array (
-    'match' => '0B26 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A1 \\1',
-  ),
-  167 => 
-  array (
-    'match' => '0B27 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A2 \\1',
-  ),
-  168 => 
-  array (
-    'match' => '0B28 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A3 \\1',
-  ),
-  169 => 
-  array (
-    'match' => '0B2A ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A4 \\1',
-  ),
-  170 => 
-  array (
-    'match' => '0B2B ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A5 \\1',
-  ),
-  171 => 
-  array (
-    'match' => '0B2C ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A6 \\1',
-  ),
-  172 => 
-  array (
-    'match' => '0B2D ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A7 \\1',
-  ),
-  173 => 
-  array (
-    'match' => '0B2E ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A8 \\1',
-  ),
-  174 => 
-  array (
-    'match' => '0B2F ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A9 \\1',
-  ),
-  175 => 
-  array (
-    'match' => '0B32 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AA \\1',
-  ),
-  176 => 
-  array (
-    'match' => '0B33 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AB \\1',
-  ),
-  177 => 
-  array (
-    'match' => '0B35 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AC \\1',
-  ),
-  178 => 
-  array (
-    'match' => '0B36 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AD \\1',
-  ),
-  179 => 
-  array (
-    'match' => '0B37 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AE \\1',
-  ),
-  180 => 
-  array (
-    'match' => '0B38 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AF \\1',
-  ),
-  181 => 
-  array (
-    'match' => '0B39 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B0 \\1',
-  ),
-  182 => 
-  array (
-    'match' => 'E003 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B1 \\1',
-  ),
-  183 => 
-  array (
-    'match' => 'E004 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B2 \\1',
-  ),
-  184 => 
-  array (
-    'match' => '0B15 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E090 \\1',
-  ),
-  185 => 
-  array (
-    'match' => '0B16 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E091 \\1',
-  ),
-  186 => 
-  array (
-    'match' => '0B17 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E092 \\1',
-  ),
-  187 => 
-  array (
-    'match' => '0B18 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E093 \\1',
-  ),
-  188 => 
-  array (
-    'match' => '0B19 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E094 \\1',
-  ),
-  189 => 
-  array (
-    'match' => '0B1A (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E095 \\1',
-  ),
-  190 => 
-  array (
-    'match' => '0B1B (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E096 \\1',
-  ),
-  191 => 
-  array (
-    'match' => '0B1C (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E097 \\1',
-  ),
-  192 => 
-  array (
-    'match' => '0B1D (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E098 \\1',
-  ),
-  193 => 
-  array (
-    'match' => '0B1E (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E099 \\1',
-  ),
-  194 => 
-  array (
-    'match' => '0B1F (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09A \\1',
-  ),
-  195 => 
-  array (
-    'match' => '0B20 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09B \\1',
-  ),
-  196 => 
-  array (
-    'match' => '0B21 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09C \\1',
-  ),
-  197 => 
-  array (
-    'match' => '0B22 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09D \\1',
-  ),
-  198 => 
-  array (
-    'match' => '0B23 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09E \\1',
-  ),
-  199 => 
-  array (
-    'match' => '0B24 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09F \\1',
-  ),
-  200 => 
-  array (
-    'match' => '0B25 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A0 \\1',
-  ),
-  201 => 
-  array (
-    'match' => '0B26 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A1 \\1',
-  ),
-  202 => 
-  array (
-    'match' => '0B27 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A2 \\1',
-  ),
-  203 => 
-  array (
-    'match' => '0B28 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A3 \\1',
-  ),
-  204 => 
-  array (
-    'match' => '0B2A (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A4 \\1',
-  ),
-  205 => 
-  array (
-    'match' => '0B2B (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A5 \\1',
-  ),
-  206 => 
-  array (
-    'match' => '0B2C (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A6 \\1',
-  ),
-  207 => 
-  array (
-    'match' => '0B2D (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A7 \\1',
-  ),
-  208 => 
-  array (
-    'match' => '0B2E (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A8 \\1',
-  ),
-  209 => 
-  array (
-    'match' => '0B2F (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A9 \\1',
-  ),
-  210 => 
-  array (
-    'match' => '0B32 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AA \\1',
-  ),
-  211 => 
-  array (
-    'match' => '0B33 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AB \\1',
-  ),
-  212 => 
-  array (
-    'match' => '0B35 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AC \\1',
-  ),
-  213 => 
-  array (
-    'match' => '0B36 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AD \\1',
-  ),
-  214 => 
-  array (
-    'match' => '0B37 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AE \\1',
-  ),
-  215 => 
-  array (
-    'match' => '0B38 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AF \\1',
-  ),
-  216 => 
-  array (
-    'match' => '0B39 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B0 \\1',
-  ),
-  217 => 
-  array (
-    'match' => 'E003 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B1 \\1',
-  ),
-  218 => 
-  array (
-    'match' => 'E004 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B2 \\1',
-  ),
-  219 => 
-  array (
-    'match' => '0B15 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E090 \\1',
-  ),
-  220 => 
-  array (
-    'match' => '0B16 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E091 \\1',
-  ),
-  221 => 
-  array (
-    'match' => '0B17 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E092 \\1',
-  ),
-  222 => 
-  array (
-    'match' => '0B18 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E093 \\1',
-  ),
-  223 => 
-  array (
-    'match' => '0B19 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E094 \\1',
-  ),
-  224 => 
-  array (
-    'match' => '0B1A (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E095 \\1',
-  ),
-  225 => 
-  array (
-    'match' => '0B1B (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E096 \\1',
-  ),
-  226 => 
-  array (
-    'match' => '0B1C (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E097 \\1',
-  ),
-  227 => 
-  array (
-    'match' => '0B1D (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E098 \\1',
-  ),
-  228 => 
-  array (
-    'match' => '0B1E (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E099 \\1',
-  ),
-  229 => 
-  array (
-    'match' => '0B1F (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09A \\1',
-  ),
-  230 => 
-  array (
-    'match' => '0B20 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09B \\1',
-  ),
-  231 => 
-  array (
-    'match' => '0B21 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09C \\1',
-  ),
-  232 => 
-  array (
-    'match' => '0B22 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09D \\1',
-  ),
-  233 => 
-  array (
-    'match' => '0B23 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09E \\1',
-  ),
-  234 => 
-  array (
-    'match' => '0B24 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E09F \\1',
-  ),
-  235 => 
-  array (
-    'match' => '0B25 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A0 \\1',
-  ),
-  236 => 
-  array (
-    'match' => '0B26 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A1 \\1',
-  ),
-  237 => 
-  array (
-    'match' => '0B27 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A2 \\1',
-  ),
-  238 => 
-  array (
-    'match' => '0B28 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A3 \\1',
-  ),
-  239 => 
-  array (
-    'match' => '0B2A (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A4 \\1',
-  ),
-  240 => 
-  array (
-    'match' => '0B2B (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A5 \\1',
-  ),
-  241 => 
-  array (
-    'match' => '0B2C (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A6 \\1',
-  ),
-  242 => 
-  array (
-    'match' => '0B2D (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A7 \\1',
-  ),
-  243 => 
-  array (
-    'match' => '0B2E (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A8 \\1',
-  ),
-  244 => 
-  array (
-    'match' => '0B2F (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0A9 \\1',
-  ),
-  245 => 
-  array (
-    'match' => '0B32 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AA \\1',
-  ),
-  246 => 
-  array (
-    'match' => '0B33 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AB \\1',
-  ),
-  247 => 
-  array (
-    'match' => '0B35 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AC \\1',
-  ),
-  248 => 
-  array (
-    'match' => '0B36 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AD \\1',
-  ),
-  249 => 
-  array (
-    'match' => '0B37 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AE \\1',
-  ),
-  250 => 
-  array (
-    'match' => '0B38 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0AF \\1',
-  ),
-  251 => 
-  array (
-    'match' => '0B39 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B0 \\1',
-  ),
-  252 => 
-  array (
-    'match' => 'E003 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B1 \\1',
-  ),
-  253 => 
-  array (
-    'match' => 'E004 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
-    'replace' => 'E0B2 \\1',
-  ),
-  254 => 
-  array (
-    'match' => '0B25 0B3F',
-    'replace' => 'E02D',
-  ),
-  255 => 
-  array (
-    'match' => '0B27 0B3F',
-    'replace' => 'E02E',
-  ),
-  256 => 
-  array (
-    'match' => '0B16 0B3F',
-    'replace' => 'E02F',
-  ),
-  257 => 
-  array (
-    'match' => '(0B3C) 0B4D',
-    'replace' => '\\1 E063',
-  ),
-  258 => 
-  array (
-    'match' => '(0B3C) E075',
-    'replace' => '\\1 E076',
-  ),
-  259 => 
-  array (
-    'match' => '2018',
-    'replace' => '0B4D',
-  ),
-  260 => 
-  array (
-    'match' => '2019',
-    'replace' => '0B4D',
-  ),
-  261 => 
-  array (
-    'match' => '((0B16|0B17|0B18|0B1F|0B23|0B25|0B27|0B2A|0B2B|0B2E|0B2F|0B37|0B38)) 0B01',
-    'replace' => '\\1 E039',
-  ),
-  262 => 
-  array (
-    'match' => '((E003|E006|E007|E008|E019|E01A|E00F|E010|E015|E01B|E024|E026|E027|E029|E14A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E034|E035|E036|E037)) 0B01',
-    'replace' => '\\1 E039',
-  ),
-  263 => 
-  array (
-    'match' => '0B3F 0B01',
-    'replace' => 'E041',
-  ),
-  264 => 
-  array (
-    'match' => 'E03F 0B01',
-    'replace' => 'E041',
-  ),
-  265 => 
-  array (
-    'match' => 'E040 0B01',
-    'replace' => 'E042',
-  ),
-  266 => 
-  array (
-    'match' => '0B40 0B01',
-    'replace' => 'E044',
-  ),
-  267 => 
-  array (
-    'match' => '0B57 0B01',
-    'replace' => 'E068',
-  ),
-  268 => 
-  array (
-    'match' => '0B56 0B01',
-    'replace' => 'E064',
-  ),
-  269 => 
-  array (
-    'match' => 'E05D 0B01',
-    'replace' => 'E064',
-  ),
-  270 => 
-  array (
-    'match' => 'E05E 0B01',
-    'replace' => 'E065',
-  ),
-  271 => 
-  array (
-    'match' => 'E05F 0B01',
-    'replace' => 'E066',
-  ),
-  272 => 
-  array (
-    'match' => 'E060 0B01',
-    'replace' => 'E067',
-  ),
-  273 => 
-  array (
-    'match' => 'E06D 0B01',
-    'replace' => 'E089',
-  ),
-  274 => 
-  array (
-    'match' => 'E06E 0B01',
-    'replace' => 'E08A',
-  ),
-  275 => 
-  array (
-    'match' => 'E070 0B01',
-    'replace' => 'E08C',
-  ),
-  276 => 
-  array (
-    'match' => 'E071 0B01',
-    'replace' => 'E08D',
-  ),
-  277 => 
-  array (
-    'match' => 'E072 0B01',
-    'replace' => 'E08E',
-  ),
-  278 => 
-  array (
-    'match' => 'E074 0B01',
-    'replace' => 'E08F',
-  ),
-  279 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  280 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  281 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  282 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  283 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E053',
-    'replace' => '\\1 E054',
-  ),
-  284 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E056',
-    'replace' => '\\1 E057',
-  ),
-  285 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E059',
-    'replace' => '\\1 E05A',
-  ),
-  286 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  287 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E075',
-    'replace' => '\\1 E076',
-  ),
-  288 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  289 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  290 => 
-  array (
-    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E082',
-    'replace' => '\\1 E083',
-  ),
-  291 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  292 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  293 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  294 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  295 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E053',
-    'replace' => '\\1 E054',
-  ),
-  296 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E056',
-    'replace' => '\\1 E057',
-  ),
-  297 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E059',
-    'replace' => '\\1 E05A',
-  ),
-  298 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  299 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E075',
-    'replace' => '\\1 E076',
-  ),
-  300 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  301 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  302 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E082',
-    'replace' => '\\1 E083',
-  ),
-  303 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  304 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  305 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  306 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  307 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E053',
-    'replace' => '\\1 E054',
-  ),
-  308 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E056',
-    'replace' => '\\1 E057',
-  ),
-  309 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E059',
-    'replace' => '\\1 E05A',
-  ),
-  310 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  311 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E075',
-    'replace' => '\\1 E076',
-  ),
-  312 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  313 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  314 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E082',
-    'replace' => '\\1 E083',
-  ),
-  315 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  316 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  317 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  318 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  319 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E053',
-    'replace' => '\\1 E054',
-  ),
-  320 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E056',
-    'replace' => '\\1 E057',
-  ),
-  321 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E059',
-    'replace' => '\\1 E05A',
-  ),
-  322 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  323 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E075',
-    'replace' => '\\1 E076',
-  ),
-  324 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  325 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  326 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E082',
-    'replace' => '\\1 E083',
-  ),
-  327 => 
-  array (
-    'match' => '(E02B) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  328 => 
-  array (
-    'match' => '(E02B) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  329 => 
-  array (
-    'match' => '(E02B) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  330 => 
-  array (
-    'match' => '(E02B) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  331 => 
-  array (
-    'match' => '(E02B) E053',
-    'replace' => '\\1 E054',
-  ),
-  332 => 
-  array (
-    'match' => '(E02B) E056',
-    'replace' => '\\1 E057',
-  ),
-  333 => 
-  array (
-    'match' => '(E02B) E059',
-    'replace' => '\\1 E05A',
-  ),
-  334 => 
-  array (
-    'match' => '(E02B) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  335 => 
-  array (
-    'match' => '(E02B) E075',
-    'replace' => '\\1 E076',
-  ),
-  336 => 
-  array (
-    'match' => '(E02B) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  337 => 
-  array (
-    'match' => '(E02B) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  338 => 
-  array (
-    'match' => '(E02B) E082',
-    'replace' => '\\1 E083',
-  ),
-  339 => 
-  array (
-    'match' => '(E02C) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  340 => 
-  array (
-    'match' => '(E02C) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  341 => 
-  array (
-    'match' => '(E02C) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  342 => 
-  array (
-    'match' => '(E02C) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  343 => 
-  array (
-    'match' => '(E02C) E053',
-    'replace' => '\\1 E054',
-  ),
-  344 => 
-  array (
-    'match' => '(E02C) E056',
-    'replace' => '\\1 E057',
-  ),
-  345 => 
-  array (
-    'match' => '(E02C) E059',
-    'replace' => '\\1 E05A',
-  ),
-  346 => 
-  array (
-    'match' => '(E02C) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  347 => 
-  array (
-    'match' => '(E02C) E075',
-    'replace' => '\\1 E076',
-  ),
-  348 => 
-  array (
-    'match' => '(E02C) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  349 => 
-  array (
-    'match' => '(E02C) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  350 => 
-  array (
-    'match' => '(E02C) E082',
-    'replace' => '\\1 E083',
-  ),
-  351 => 
-  array (
-    'match' => '(E06B) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  352 => 
-  array (
-    'match' => '(E06B) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  353 => 
-  array (
-    'match' => '(E06B) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  354 => 
-  array (
-    'match' => '(E06B) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  355 => 
-  array (
-    'match' => '(E06B) E053',
-    'replace' => '\\1 E054',
-  ),
-  356 => 
-  array (
-    'match' => '(E06B) E056',
-    'replace' => '\\1 E057',
-  ),
-  357 => 
-  array (
-    'match' => '(E06B) E059',
-    'replace' => '\\1 E05A',
-  ),
-  358 => 
-  array (
-    'match' => '(E06B) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  359 => 
-  array (
-    'match' => '(E06B) E075',
-    'replace' => '\\1 E076',
-  ),
-  360 => 
-  array (
-    'match' => '(E06B) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  361 => 
-  array (
-    'match' => '(E06B) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  362 => 
-  array (
-    'match' => '(E06B) E082',
-    'replace' => '\\1 E083',
-  ),
-  363 => 
-  array (
-    'match' => '(0B3C) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  364 => 
-  array (
-    'match' => '(0B3C) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  365 => 
-  array (
-    'match' => '(0B3C) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  366 => 
-  array (
-    'match' => '(0B3C) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  367 => 
-  array (
-    'match' => '(0B3C) E053',
-    'replace' => '\\1 E054',
-  ),
-  368 => 
-  array (
-    'match' => '(0B3C) E056',
-    'replace' => '\\1 E057',
-  ),
-  369 => 
-  array (
-    'match' => '(0B3C) E059',
-    'replace' => '\\1 E05A',
-  ),
-  370 => 
-  array (
-    'match' => '(0B3C) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  371 => 
-  array (
-    'match' => '(0B3C) E075',
-    'replace' => '\\1 E076',
-  ),
-  372 => 
-  array (
-    'match' => '(0B3C) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  373 => 
-  array (
-    'match' => '(0B3C) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  374 => 
-  array (
-    'match' => '(0B3C) E082',
-    'replace' => '\\1 E083',
-  ),
-  375 => 
-  array (
-    'match' => '(E075) 0B3C',
-    'replace' => '\\1 E03C',
-  ),
-  376 => 
-  array (
-    'match' => '(E075) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  377 => 
-  array (
-    'match' => '(E075) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  378 => 
-  array (
-    'match' => '(E075) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  379 => 
-  array (
-    'match' => '(E075) E053',
-    'replace' => '\\1 E054',
-  ),
-  380 => 
-  array (
-    'match' => '(E075) E056',
-    'replace' => '\\1 E057',
-  ),
-  381 => 
-  array (
-    'match' => '(E075) E059',
-    'replace' => '\\1 E05A',
-  ),
-  382 => 
-  array (
-    'match' => '(E075) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  383 => 
-  array (
-    'match' => '(E075) E075',
-    'replace' => '\\1 E076',
-  ),
-  384 => 
-  array (
-    'match' => '(E075) E07B',
-    'replace' => '\\1 E07C',
-  ),
-  385 => 
-  array (
-    'match' => '(E075) E07D',
-    'replace' => '\\1 E07F',
-  ),
-  386 => 
-  array (
-    'match' => '(E075) E082',
-    'replace' => '\\1 E083',
-  ),
-  387 => 
-  array (
-    'match' => '(E075) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  388 => 
-  array (
-    'match' => '(E075) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  389 => 
-  array (
-    'match' => '(E075) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  390 => 
-  array (
-    'match' => '(E075) E053',
-    'replace' => '\\1 E054',
-  ),
-  391 => 
-  array (
-    'match' => '(E075) E056',
-    'replace' => '\\1 E057',
-  ),
-  392 => 
-  array (
-    'match' => '(E075) E059',
-    'replace' => '\\1 E05A',
-  ),
-  393 => 
-  array (
-    'match' => 'E14D 0B01',
-    'replace' => 'E08B',
-  ),
-  394 => 
-  array (
-    'match' => 'E14D E038',
-    'replace' => 'E08B',
-  ),
-  395 => 
-  array (
-    'match' => 'E14D E039',
-    'replace' => 'E08B',
-  ),
-  396 => 
-  array (
-    'match' => 'E14D E149',
-    'replace' => 'E08B',
-  ),
-  397 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E0FD',
-    'replace' => '\\1 E11E',
-  ),
-  398 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E109',
-    'replace' => '\\1 E121',
-  ),
-  399 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E110',
-    'replace' => '\\1 E11F',
-  ),
-  400 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E111',
-    'replace' => '\\1 E120',
-  ),
-  401 => 
-  array (
-    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E11C',
-    'replace' => '\\1 E122',
-  ),
-  402 => 
-  array (
-    'match' => '(E076) 0B41',
-    'replace' => '\\1 E048',
-  ),
-  403 => 
-  array (
-    'match' => '(E076) 0B42',
-    'replace' => '\\1 E04B',
-  ),
-  404 => 
-  array (
-    'match' => '(E076) 0B43',
-    'replace' => '\\1 E04F',
-  ),
-  405 => 
-  array (
-    'match' => '(E076) E053',
-    'replace' => '\\1 E054',
-  ),
-  406 => 
-  array (
-    'match' => '(E076) E056',
-    'replace' => '\\1 E057',
-  ),
-  407 => 
-  array (
-    'match' => '(E076) E059',
-    'replace' => '\\1 E05A',
-  ),
-  408 => 
-  array (
-    'match' => '(E076) 0B4D',
-    'replace' => '\\1 E062',
-  ),
-  409 => 
-  array (
-    'match' => '(E090) E10E',
-    'replace' => '\\1 E11C',
-  ),
-  410 => 
-  array (
-    'match' => '(E0B1) E10E',
-    'replace' => '\\1 E11C',
-  ),
-  411 => 
-  array (
-    'match' => '(E09F) E10E',
-    'replace' => '\\1 E11C',
-  ),
-  412 => 
-  array (
-    'match' => '(E092) E10E',
-    'replace' => '\\1 E11C',
-  ),
-  413 => 
-  array (
-    'match' => '(E0A8) E10E',
-    'replace' => '\\1 E11C',
-  ),
-  414 => 
-  array (
-    'match' => '(E0A3) E106',
-    'replace' => '\\1 E0FC',
-  ),
-  415 => 
-  array (
-    'match' => '(E0AF) E106',
-    'replace' => '\\1 E0FC',
-  ),
-  416 => 
-  array (
-    'match' => '((0B16|0B17|0B18|0B1F|0B23|0B25|0B27|0B2A|0B2B|0B2E|0B2F|0B37|0B38)) 0B01',
-    'replace' => '\\1 E039',
-  ),
-  417 => 
-  array (
-    'match' => '(0B10) 0B01',
-    'replace' => '\\1 E149',
-  ),
-  418 => 
-  array (
-    'match' => '(0B14) 0B01',
-    'replace' => '\\1 E149',
-  ),
-  419 => 
-  array (
-    'match' => '(E069) 0B01',
-    'replace' => '\\1 E149',
-  ),
-  420 => 
-  array (
-    'match' => '(E06A) 0B01',
-    'replace' => '\\1 E149',
-  ),
-  421 => 
-  array (
-    'match' => '(E06B) 0B01',
-    'replace' => '\\1 E149',
-  ),
-  422 => 
-  array (
-    'match' => '(E06C) 0B01',
-    'replace' => '\\1 E149',
-  ),
-  423 => 
-  array (
-    'match' => '0B21 0B4D (E035)',
-    'replace' => 'E12F \\1',
-  ),
-  424 => 
-  array (
-    'match' => ' (E035)',
-    'replace' => ' \\1',
-  ),
-  425 => 
-  array (
-    'match' => ' (E035)',
-    'replace' => ' \\1',
-  ),
-  426 => 
-  array (
-    'match' => ' (E035)',
-    'replace' => ' \\1',
-  ),
-  427 => 
-  array (
-    'match' => ' (E035)',
-    'replace' => ' \\1',
-  ),
-  428 => 
-  array (
-    'match' => ' (E035)',
-    'replace' => ' \\1',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php
deleted file mode 100644 (file)
index 34f81a6..0000000
+++ /dev/null
@@ -1,1444 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0A4D 200C',
-    'replace' => 'E055',
-  ),
-  1 => 
-  array (
-    'match' => '0A4D 200D',
-    'replace' => 'E057',
-  ),
-  2 => 
-  array (
-    'match' => '((0A15|0A16|0A17|0A18|0A19|0A1A|0A1B|0A1C|0A1D|0A1E|0A1F|0A20|0A21|0A22|0A23|0A24|0A25|0A26|0A27|0A28|0A2A|0A2B|0A2C|0A2D|0A2E|0A2F|0A30|0A32|0A33|0A35|0A36|0A38|0A39|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|0A59|0A5A|0A5B|0A5C|0A5E)) 0A4D',
-    'replace' => '\\1 E056',
-  ),
-  3 => 
-  array (
-    'match' => '(200D) 0A4D',
-    'replace' => '\\1 E056',
-  ),
-  4 => 
-  array (
-    'match' => '(0020) 0A4D',
-    'replace' => '\\1 E056',
-  ),
-  5 => 
-  array (
-    'match' => '(25CC) 0A4D',
-    'replace' => '\\1 E056',
-  ),
-  6 => 
-  array (
-    'match' => '200D E056',
-    'replace' => 'E056',
-  ),
-  7 => 
-  array (
-    'match' => '0A05 0A3C',
-    'replace' => 'E02A',
-  ),
-  8 => 
-  array (
-    'match' => '0A06 0A3C',
-    'replace' => 'E02B',
-  ),
-  9 => 
-  array (
-    'match' => '0A07 0A3C',
-    'replace' => 'E02C',
-  ),
-  10 => 
-  array (
-    'match' => '0A08 0A3C',
-    'replace' => 'E02D',
-  ),
-  11 => 
-  array (
-    'match' => '0A09 0A3C',
-    'replace' => 'E02E',
-  ),
-  12 => 
-  array (
-    'match' => '0A0A 0A3C',
-    'replace' => 'E02F',
-  ),
-  13 => 
-  array (
-    'match' => '0A0F 0A3C',
-    'replace' => 'E030',
-  ),
-  14 => 
-  array (
-    'match' => '0A10 0A3C',
-    'replace' => 'E031',
-  ),
-  15 => 
-  array (
-    'match' => '0A13 0A3C',
-    'replace' => 'E032',
-  ),
-  16 => 
-  array (
-    'match' => '0A14 0A3C',
-    'replace' => 'E033',
-  ),
-  17 => 
-  array (
-    'match' => '0A15 0A3C',
-    'replace' => 'E034',
-  ),
-  18 => 
-  array (
-    'match' => '0A16 0A3C',
-    'replace' => 'E035',
-  ),
-  19 => 
-  array (
-    'match' => '0A17 0A3C',
-    'replace' => 'E036',
-  ),
-  20 => 
-  array (
-    'match' => '0A18 0A3C',
-    'replace' => 'E037',
-  ),
-  21 => 
-  array (
-    'match' => '0A19 0A3C',
-    'replace' => 'E038',
-  ),
-  22 => 
-  array (
-    'match' => '0A1A 0A3C',
-    'replace' => 'E039',
-  ),
-  23 => 
-  array (
-    'match' => '0A1B 0A3C',
-    'replace' => 'E03A',
-  ),
-  24 => 
-  array (
-    'match' => '0A1C 0A3C',
-    'replace' => 'E03B',
-  ),
-  25 => 
-  array (
-    'match' => '0A1D 0A3C',
-    'replace' => 'E03C',
-  ),
-  26 => 
-  array (
-    'match' => '0A1E 0A3C',
-    'replace' => 'E03D',
-  ),
-  27 => 
-  array (
-    'match' => '0A1F 0A3C',
-    'replace' => 'E03E',
-  ),
-  28 => 
-  array (
-    'match' => '0A20 0A3C',
-    'replace' => 'E03F',
-  ),
-  29 => 
-  array (
-    'match' => '0A21 0A3C',
-    'replace' => 'E040',
-  ),
-  30 => 
-  array (
-    'match' => '0A22 0A3C',
-    'replace' => 'E041',
-  ),
-  31 => 
-  array (
-    'match' => '0A23 0A3C',
-    'replace' => 'E042',
-  ),
-  32 => 
-  array (
-    'match' => '0A24 0A3C',
-    'replace' => 'E043',
-  ),
-  33 => 
-  array (
-    'match' => '0A25 0A3C',
-    'replace' => 'E044',
-  ),
-  34 => 
-  array (
-    'match' => '0A26 0A3C',
-    'replace' => 'E045',
-  ),
-  35 => 
-  array (
-    'match' => '0A27 0A3C',
-    'replace' => 'E046',
-  ),
-  36 => 
-  array (
-    'match' => '0A28 0A3C',
-    'replace' => 'E047',
-  ),
-  37 => 
-  array (
-    'match' => '0A2A 0A3C',
-    'replace' => 'E048',
-  ),
-  38 => 
-  array (
-    'match' => '0A2B 0A3C',
-    'replace' => 'E049',
-  ),
-  39 => 
-  array (
-    'match' => '0A2C 0A3C',
-    'replace' => 'E04A',
-  ),
-  40 => 
-  array (
-    'match' => '0A2D 0A3C',
-    'replace' => 'E04B',
-  ),
-  41 => 
-  array (
-    'match' => '0A2E 0A3C',
-    'replace' => 'E04C',
-  ),
-  42 => 
-  array (
-    'match' => '0A2F 0A3C',
-    'replace' => 'E04D',
-  ),
-  43 => 
-  array (
-    'match' => '0A30 0A3C',
-    'replace' => 'E04E',
-  ),
-  44 => 
-  array (
-    'match' => '0A32 0A3C',
-    'replace' => 'E04F',
-  ),
-  45 => 
-  array (
-    'match' => '0A33 0A3C',
-    'replace' => 'E050',
-  ),
-  46 => 
-  array (
-    'match' => '0A35 0A3C',
-    'replace' => 'E051',
-  ),
-  47 => 
-  array (
-    'match' => '0A36 0A3C',
-    'replace' => 'E052',
-  ),
-  48 => 
-  array (
-    'match' => '0A38 0A3C',
-    'replace' => 'E053',
-  ),
-  49 => 
-  array (
-    'match' => '0A39 0A3C',
-    'replace' => 'E054',
-  ),
-  50 => 
-  array (
-    'match' => 'E056 0A15',
-    'replace' => 'E07B',
-  ),
-  51 => 
-  array (
-    'match' => 'E056 0A16',
-    'replace' => 'E07C',
-  ),
-  52 => 
-  array (
-    'match' => 'E056 0A17',
-    'replace' => 'E07D',
-  ),
-  53 => 
-  array (
-    'match' => 'E056 0A18',
-    'replace' => 'E07E',
-  ),
-  54 => 
-  array (
-    'match' => 'E056 0A19',
-    'replace' => 'E07F',
-  ),
-  55 => 
-  array (
-    'match' => 'E056 0A1A',
-    'replace' => 'E080',
-  ),
-  56 => 
-  array (
-    'match' => 'E056 0A1B',
-    'replace' => 'E081',
-  ),
-  57 => 
-  array (
-    'match' => 'E056 0A1C',
-    'replace' => 'E082',
-  ),
-  58 => 
-  array (
-    'match' => 'E056 0A1D',
-    'replace' => 'E083',
-  ),
-  59 => 
-  array (
-    'match' => 'E056 0A1E',
-    'replace' => 'E084',
-  ),
-  60 => 
-  array (
-    'match' => 'E056 0A1F',
-    'replace' => 'E085',
-  ),
-  61 => 
-  array (
-    'match' => 'E056 0A20',
-    'replace' => 'E086',
-  ),
-  62 => 
-  array (
-    'match' => 'E056 0A21',
-    'replace' => 'E087',
-  ),
-  63 => 
-  array (
-    'match' => 'E056 0A22',
-    'replace' => 'E088',
-  ),
-  64 => 
-  array (
-    'match' => 'E056 0A23',
-    'replace' => 'E089',
-  ),
-  65 => 
-  array (
-    'match' => 'E056 0A24',
-    'replace' => 'E08A',
-  ),
-  66 => 
-  array (
-    'match' => 'E056 0A25',
-    'replace' => 'E08B',
-  ),
-  67 => 
-  array (
-    'match' => 'E056 0A26',
-    'replace' => 'E08C',
-  ),
-  68 => 
-  array (
-    'match' => 'E056 0A27',
-    'replace' => 'E08D',
-  ),
-  69 => 
-  array (
-    'match' => 'E056 0A28',
-    'replace' => 'E08E',
-  ),
-  70 => 
-  array (
-    'match' => 'E056 0A2A',
-    'replace' => 'E08F',
-  ),
-  71 => 
-  array (
-    'match' => 'E056 0A2B',
-    'replace' => 'E090',
-  ),
-  72 => 
-  array (
-    'match' => 'E056 0A2C',
-    'replace' => 'E091',
-  ),
-  73 => 
-  array (
-    'match' => 'E056 0A2D',
-    'replace' => 'E092',
-  ),
-  74 => 
-  array (
-    'match' => 'E056 0A2E',
-    'replace' => 'E093',
-  ),
-  75 => 
-  array (
-    'match' => 'E056 0A2F',
-    'replace' => 'E094',
-  ),
-  76 => 
-  array (
-    'match' => 'E056 0A30',
-    'replace' => 'E095',
-  ),
-  77 => 
-  array (
-    'match' => 'E056 0A32',
-    'replace' => 'E096',
-  ),
-  78 => 
-  array (
-    'match' => 'E056 0A35',
-    'replace' => 'E097',
-  ),
-  79 => 
-  array (
-    'match' => 'E056 0A36',
-    'replace' => 'E098',
-  ),
-  80 => 
-  array (
-    'match' => 'E056 0A38',
-    'replace' => 'E099',
-  ),
-  81 => 
-  array (
-    'match' => 'E056 0A39',
-    'replace' => 'E09A',
-  ),
-  82 => 
-  array (
-    'match' => 'E056 0A59',
-    'replace' => 'E09B',
-  ),
-  83 => 
-  array (
-    'match' => 'E056 0A5A',
-    'replace' => 'E09C',
-  ),
-  84 => 
-  array (
-    'match' => 'E056 0A5B',
-    'replace' => 'E09D',
-  ),
-  85 => 
-  array (
-    'match' => 'E056 0A5C',
-    'replace' => 'E09E',
-  ),
-  86 => 
-  array (
-    'match' => 'E056 0A5E',
-    'replace' => 'E09F',
-  ),
-  87 => 
-  array (
-    'match' => 'E056 0A33',
-    'replace' => 'E0BB',
-  ),
-  88 => 
-  array (
-    'match' => 'E07B ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A15 \\1',
-  ),
-  89 => 
-  array (
-    'match' => 'E07C ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A16 \\1',
-  ),
-  90 => 
-  array (
-    'match' => 'E07D ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A17 \\1',
-  ),
-  91 => 
-  array (
-    'match' => 'E07E ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A18 \\1',
-  ),
-  92 => 
-  array (
-    'match' => 'E07F ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A19 \\1',
-  ),
-  93 => 
-  array (
-    'match' => 'E080 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A1A \\1',
-  ),
-  94 => 
-  array (
-    'match' => 'E081 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A1B \\1',
-  ),
-  95 => 
-  array (
-    'match' => 'E082 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A1C \\1',
-  ),
-  96 => 
-  array (
-    'match' => 'E083 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A1D \\1',
-  ),
-  97 => 
-  array (
-    'match' => 'E084 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A1E \\1',
-  ),
-  98 => 
-  array (
-    'match' => 'E085 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A1F \\1',
-  ),
-  99 => 
-  array (
-    'match' => 'E086 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A20 \\1',
-  ),
-  100 => 
-  array (
-    'match' => 'E087 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A21 \\1',
-  ),
-  101 => 
-  array (
-    'match' => 'E088 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A22 \\1',
-  ),
-  102 => 
-  array (
-    'match' => 'E089 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A23 \\1',
-  ),
-  103 => 
-  array (
-    'match' => 'E08A ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A24 \\1',
-  ),
-  104 => 
-  array (
-    'match' => 'E08B ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A25 \\1',
-  ),
-  105 => 
-  array (
-    'match' => 'E08C ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A26 \\1',
-  ),
-  106 => 
-  array (
-    'match' => 'E08D ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A27 \\1',
-  ),
-  107 => 
-  array (
-    'match' => 'E08E ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A28 \\1',
-  ),
-  108 => 
-  array (
-    'match' => 'E08F ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A2A \\1',
-  ),
-  109 => 
-  array (
-    'match' => 'E090 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A2B \\1',
-  ),
-  110 => 
-  array (
-    'match' => 'E091 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A2C \\1',
-  ),
-  111 => 
-  array (
-    'match' => 'E092 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A2D \\1',
-  ),
-  112 => 
-  array (
-    'match' => 'E093 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A2E \\1',
-  ),
-  113 => 
-  array (
-    'match' => 'E094 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A2F \\1',
-  ),
-  114 => 
-  array (
-    'match' => 'E095 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A30 \\1',
-  ),
-  115 => 
-  array (
-    'match' => 'E096 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A32 \\1',
-  ),
-  116 => 
-  array (
-    'match' => 'E097 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A35 \\1',
-  ),
-  117 => 
-  array (
-    'match' => 'E098 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A36 \\1',
-  ),
-  118 => 
-  array (
-    'match' => 'E099 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A38 \\1',
-  ),
-  119 => 
-  array (
-    'match' => 'E09A ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A39 \\1',
-  ),
-  120 => 
-  array (
-    'match' => 'E09B ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A59 \\1',
-  ),
-  121 => 
-  array (
-    'match' => 'E09C ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A5A \\1',
-  ),
-  122 => 
-  array (
-    'match' => 'E09D ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A5B \\1',
-  ),
-  123 => 
-  array (
-    'match' => 'E09E ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A5C \\1',
-  ),
-  124 => 
-  array (
-    'match' => 'E09F ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
-    'replace' => '0A4D 0A5E \\1',
-  ),
-  125 => 
-  array (
-    'match' => '(0A3F (0A15|0A16|0A17|0A18|0A19|0A1A|0A1B|0A1C|0A1D|0A1E|0A1F|0A20|0A21|0A22|0A23|0A24|0A25|0A26|0A27|0A28|0A2A|0A2B|0A2C|0A2D|0A2E|0A2F|0A30|0A32|0A33|0A35|0A36|0A38|0A39|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|0A59|0A5A|0A5B|0A5C|0A5E)) 0A4D',
-    'replace' => '\\1 0A4D 0A3F',
-  ),
-  126 => 
-  array (
-    'match' => '0A3F 0A15 (0A4D 0A3F)',
-    'replace' => '0A15 \\1',
-  ),
-  127 => 
-  array (
-    'match' => '0A3F 0A16 (0A4D 0A3F)',
-    'replace' => '0A16 \\1',
-  ),
-  128 => 
-  array (
-    'match' => '0A3F 0A17 (0A4D 0A3F)',
-    'replace' => '0A17 \\1',
-  ),
-  129 => 
-  array (
-    'match' => '0A3F 0A18 (0A4D 0A3F)',
-    'replace' => '0A18 \\1',
-  ),
-  130 => 
-  array (
-    'match' => '0A3F 0A19 (0A4D 0A3F)',
-    'replace' => '0A19 \\1',
-  ),
-  131 => 
-  array (
-    'match' => '0A3F 0A1A (0A4D 0A3F)',
-    'replace' => '0A1A \\1',
-  ),
-  132 => 
-  array (
-    'match' => '0A3F 0A1B (0A4D 0A3F)',
-    'replace' => '0A1B \\1',
-  ),
-  133 => 
-  array (
-    'match' => '0A3F 0A1C (0A4D 0A3F)',
-    'replace' => '0A1C \\1',
-  ),
-  134 => 
-  array (
-    'match' => '0A3F 0A1D (0A4D 0A3F)',
-    'replace' => '0A1D \\1',
-  ),
-  135 => 
-  array (
-    'match' => '0A3F 0A1E (0A4D 0A3F)',
-    'replace' => '0A1E \\1',
-  ),
-  136 => 
-  array (
-    'match' => '0A3F 0A1F (0A4D 0A3F)',
-    'replace' => '0A1F \\1',
-  ),
-  137 => 
-  array (
-    'match' => '0A3F 0A20 (0A4D 0A3F)',
-    'replace' => '0A20 \\1',
-  ),
-  138 => 
-  array (
-    'match' => '0A3F 0A21 (0A4D 0A3F)',
-    'replace' => '0A21 \\1',
-  ),
-  139 => 
-  array (
-    'match' => '0A3F 0A22 (0A4D 0A3F)',
-    'replace' => '0A22 \\1',
-  ),
-  140 => 
-  array (
-    'match' => '0A3F 0A23 (0A4D 0A3F)',
-    'replace' => '0A23 \\1',
-  ),
-  141 => 
-  array (
-    'match' => '0A3F 0A24 (0A4D 0A3F)',
-    'replace' => '0A24 \\1',
-  ),
-  142 => 
-  array (
-    'match' => '0A3F 0A25 (0A4D 0A3F)',
-    'replace' => '0A25 \\1',
-  ),
-  143 => 
-  array (
-    'match' => '0A3F 0A26 (0A4D 0A3F)',
-    'replace' => '0A26 \\1',
-  ),
-  144 => 
-  array (
-    'match' => '0A3F 0A27 (0A4D 0A3F)',
-    'replace' => '0A27 \\1',
-  ),
-  145 => 
-  array (
-    'match' => '0A3F 0A28 (0A4D 0A3F)',
-    'replace' => '0A28 \\1',
-  ),
-  146 => 
-  array (
-    'match' => '0A3F 0A2A (0A4D 0A3F)',
-    'replace' => '0A2A \\1',
-  ),
-  147 => 
-  array (
-    'match' => '0A3F 0A2B (0A4D 0A3F)',
-    'replace' => '0A2B \\1',
-  ),
-  148 => 
-  array (
-    'match' => '0A3F 0A2C (0A4D 0A3F)',
-    'replace' => '0A2C \\1',
-  ),
-  149 => 
-  array (
-    'match' => '0A3F 0A2D (0A4D 0A3F)',
-    'replace' => '0A2D \\1',
-  ),
-  150 => 
-  array (
-    'match' => '0A3F 0A2E (0A4D 0A3F)',
-    'replace' => '0A2E \\1',
-  ),
-  151 => 
-  array (
-    'match' => '0A3F 0A2F (0A4D 0A3F)',
-    'replace' => '0A2F \\1',
-  ),
-  152 => 
-  array (
-    'match' => '0A3F 0A30 (0A4D 0A3F)',
-    'replace' => '0A30 \\1',
-  ),
-  153 => 
-  array (
-    'match' => '0A3F 0A32 (0A4D 0A3F)',
-    'replace' => '0A32 \\1',
-  ),
-  154 => 
-  array (
-    'match' => '0A3F 0A33 (0A4D 0A3F)',
-    'replace' => '0A33 \\1',
-  ),
-  155 => 
-  array (
-    'match' => '0A3F 0A35 (0A4D 0A3F)',
-    'replace' => '0A35 \\1',
-  ),
-  156 => 
-  array (
-    'match' => '0A3F 0A36 (0A4D 0A3F)',
-    'replace' => '0A36 \\1',
-  ),
-  157 => 
-  array (
-    'match' => '0A3F 0A38 (0A4D 0A3F)',
-    'replace' => '0A38 \\1',
-  ),
-  158 => 
-  array (
-    'match' => '0A3F 0A39 (0A4D 0A3F)',
-    'replace' => '0A39 \\1',
-  ),
-  159 => 
-  array (
-    'match' => '0A3F E034 (0A4D 0A3F)',
-    'replace' => 'E034 \\1',
-  ),
-  160 => 
-  array (
-    'match' => '0A3F E035 (0A4D 0A3F)',
-    'replace' => 'E035 \\1',
-  ),
-  161 => 
-  array (
-    'match' => '0A3F E036 (0A4D 0A3F)',
-    'replace' => 'E036 \\1',
-  ),
-  162 => 
-  array (
-    'match' => '0A3F E037 (0A4D 0A3F)',
-    'replace' => 'E037 \\1',
-  ),
-  163 => 
-  array (
-    'match' => '0A3F E038 (0A4D 0A3F)',
-    'replace' => 'E038 \\1',
-  ),
-  164 => 
-  array (
-    'match' => '0A3F E039 (0A4D 0A3F)',
-    'replace' => 'E039 \\1',
-  ),
-  165 => 
-  array (
-    'match' => '0A3F E03A (0A4D 0A3F)',
-    'replace' => 'E03A \\1',
-  ),
-  166 => 
-  array (
-    'match' => '0A3F E03B (0A4D 0A3F)',
-    'replace' => 'E03B \\1',
-  ),
-  167 => 
-  array (
-    'match' => '0A3F E03C (0A4D 0A3F)',
-    'replace' => 'E03C \\1',
-  ),
-  168 => 
-  array (
-    'match' => '0A3F E03D (0A4D 0A3F)',
-    'replace' => 'E03D \\1',
-  ),
-  169 => 
-  array (
-    'match' => '0A3F E03E (0A4D 0A3F)',
-    'replace' => 'E03E \\1',
-  ),
-  170 => 
-  array (
-    'match' => '0A3F E03F (0A4D 0A3F)',
-    'replace' => 'E03F \\1',
-  ),
-  171 => 
-  array (
-    'match' => '0A3F E040 (0A4D 0A3F)',
-    'replace' => 'E040 \\1',
-  ),
-  172 => 
-  array (
-    'match' => '0A3F E041 (0A4D 0A3F)',
-    'replace' => 'E041 \\1',
-  ),
-  173 => 
-  array (
-    'match' => '0A3F E042 (0A4D 0A3F)',
-    'replace' => 'E042 \\1',
-  ),
-  174 => 
-  array (
-    'match' => '0A3F E043 (0A4D 0A3F)',
-    'replace' => 'E043 \\1',
-  ),
-  175 => 
-  array (
-    'match' => '0A3F E044 (0A4D 0A3F)',
-    'replace' => 'E044 \\1',
-  ),
-  176 => 
-  array (
-    'match' => '0A3F E045 (0A4D 0A3F)',
-    'replace' => 'E045 \\1',
-  ),
-  177 => 
-  array (
-    'match' => '0A3F E046 (0A4D 0A3F)',
-    'replace' => 'E046 \\1',
-  ),
-  178 => 
-  array (
-    'match' => '0A3F E047 (0A4D 0A3F)',
-    'replace' => 'E047 \\1',
-  ),
-  179 => 
-  array (
-    'match' => '0A3F E048 (0A4D 0A3F)',
-    'replace' => 'E048 \\1',
-  ),
-  180 => 
-  array (
-    'match' => '0A3F E049 (0A4D 0A3F)',
-    'replace' => 'E049 \\1',
-  ),
-  181 => 
-  array (
-    'match' => '0A3F E04A (0A4D 0A3F)',
-    'replace' => 'E04A \\1',
-  ),
-  182 => 
-  array (
-    'match' => '0A3F E04B (0A4D 0A3F)',
-    'replace' => 'E04B \\1',
-  ),
-  183 => 
-  array (
-    'match' => '0A3F E04C (0A4D 0A3F)',
-    'replace' => 'E04C \\1',
-  ),
-  184 => 
-  array (
-    'match' => '0A3F E04D (0A4D 0A3F)',
-    'replace' => 'E04D \\1',
-  ),
-  185 => 
-  array (
-    'match' => '0A3F E04E (0A4D 0A3F)',
-    'replace' => 'E04E \\1',
-  ),
-  186 => 
-  array (
-    'match' => '0A3F E04F (0A4D 0A3F)',
-    'replace' => 'E04F \\1',
-  ),
-  187 => 
-  array (
-    'match' => '0A3F E050 (0A4D 0A3F)',
-    'replace' => 'E050 \\1',
-  ),
-  188 => 
-  array (
-    'match' => '0A3F E051 (0A4D 0A3F)',
-    'replace' => 'E051 \\1',
-  ),
-  189 => 
-  array (
-    'match' => '0A3F E052 (0A4D 0A3F)',
-    'replace' => 'E052 \\1',
-  ),
-  190 => 
-  array (
-    'match' => '0A3F E053 (0A4D 0A3F)',
-    'replace' => 'E053 \\1',
-  ),
-  191 => 
-  array (
-    'match' => '0A3F E054 (0A4D 0A3F)',
-    'replace' => 'E054 \\1',
-  ),
-  192 => 
-  array (
-    'match' => '0A3F 0A59 (0A4D 0A3F)',
-    'replace' => '0A59 \\1',
-  ),
-  193 => 
-  array (
-    'match' => '0A3F 0A5A (0A4D 0A3F)',
-    'replace' => '0A5A \\1',
-  ),
-  194 => 
-  array (
-    'match' => '0A3F 0A5B (0A4D 0A3F)',
-    'replace' => '0A5B \\1',
-  ),
-  195 => 
-  array (
-    'match' => '0A3F 0A5C (0A4D 0A3F)',
-    'replace' => '0A5C \\1',
-  ),
-  196 => 
-  array (
-    'match' => '0A3F 0A5E (0A4D 0A3F)',
-    'replace' => '0A5E \\1',
-  ),
-  197 => 
-  array (
-    'match' => 'E055',
-    'replace' => '0A4D',
-  ),
-  198 => 
-  array (
-    'match' => 'E056',
-    'replace' => '0A4D',
-  ),
-  199 => 
-  array (
-    'match' => 'E057',
-    'replace' => '0A4D',
-  ),
-  200 => 
-  array (
-    'match' => '0A15 0A4D',
-    'replace' => 'E004',
-  ),
-  201 => 
-  array (
-    'match' => '0A16 0A4D',
-    'replace' => 'E005',
-  ),
-  202 => 
-  array (
-    'match' => '0A17 0A4D',
-    'replace' => 'E006',
-  ),
-  203 => 
-  array (
-    'match' => '0A18 0A4D',
-    'replace' => 'E007',
-  ),
-  204 => 
-  array (
-    'match' => '0A19 0A4D',
-    'replace' => 'E008',
-  ),
-  205 => 
-  array (
-    'match' => '0A1A 0A4D',
-    'replace' => 'E009',
-  ),
-  206 => 
-  array (
-    'match' => '0A1B 0A4D',
-    'replace' => 'E00A',
-  ),
-  207 => 
-  array (
-    'match' => '0A1C 0A4D',
-    'replace' => 'E00B',
-  ),
-  208 => 
-  array (
-    'match' => '0A1D 0A4D',
-    'replace' => 'E00C',
-  ),
-  209 => 
-  array (
-    'match' => '0A1E 0A4D',
-    'replace' => 'E00D',
-  ),
-  210 => 
-  array (
-    'match' => '0A1F 0A4D',
-    'replace' => 'E00E',
-  ),
-  211 => 
-  array (
-    'match' => '0A20 0A4D',
-    'replace' => 'E00F',
-  ),
-  212 => 
-  array (
-    'match' => '0A21 0A4D',
-    'replace' => 'E010',
-  ),
-  213 => 
-  array (
-    'match' => '0A22 0A4D',
-    'replace' => 'E011',
-  ),
-  214 => 
-  array (
-    'match' => '0A23 0A4D',
-    'replace' => 'E012',
-  ),
-  215 => 
-  array (
-    'match' => '0A24 0A4D',
-    'replace' => 'E013',
-  ),
-  216 => 
-  array (
-    'match' => '0A25 0A4D',
-    'replace' => 'E014',
-  ),
-  217 => 
-  array (
-    'match' => '0A26 0A4D',
-    'replace' => 'E015',
-  ),
-  218 => 
-  array (
-    'match' => '0A27 0A4D',
-    'replace' => 'E016',
-  ),
-  219 => 
-  array (
-    'match' => '0A28 0A4D',
-    'replace' => 'E017',
-  ),
-  220 => 
-  array (
-    'match' => '0A2A 0A4D',
-    'replace' => 'E018',
-  ),
-  221 => 
-  array (
-    'match' => '0A2B 0A4D',
-    'replace' => 'E019',
-  ),
-  222 => 
-  array (
-    'match' => '0A2C 0A4D',
-    'replace' => 'E01A',
-  ),
-  223 => 
-  array (
-    'match' => '0A2D 0A4D',
-    'replace' => 'E01B',
-  ),
-  224 => 
-  array (
-    'match' => '0A2E 0A4D',
-    'replace' => 'E01C',
-  ),
-  225 => 
-  array (
-    'match' => '0A2F 0A4D',
-    'replace' => 'E01D',
-  ),
-  226 => 
-  array (
-    'match' => '0A30 0A4D',
-    'replace' => 'E01E',
-  ),
-  227 => 
-  array (
-    'match' => '0A32 0A4D',
-    'replace' => 'E01F',
-  ),
-  228 => 
-  array (
-    'match' => '0A33 0A4D',
-    'replace' => 'E020',
-  ),
-  229 => 
-  array (
-    'match' => '0A35 0A4D',
-    'replace' => 'E021',
-  ),
-  230 => 
-  array (
-    'match' => '0A36 0A4D',
-    'replace' => 'E022',
-  ),
-  231 => 
-  array (
-    'match' => '0A38 0A4D',
-    'replace' => 'E023',
-  ),
-  232 => 
-  array (
-    'match' => '0A39 0A4D',
-    'replace' => 'E024',
-  ),
-  233 => 
-  array (
-    'match' => '0A59 0A4D',
-    'replace' => 'E025',
-  ),
-  234 => 
-  array (
-    'match' => '0A5A 0A4D',
-    'replace' => 'E026',
-  ),
-  235 => 
-  array (
-    'match' => '0A5B 0A4D',
-    'replace' => 'E027',
-  ),
-  236 => 
-  array (
-    'match' => '0A5C 0A4D',
-    'replace' => 'E028',
-  ),
-  237 => 
-  array (
-    'match' => '0A5E 0A4D',
-    'replace' => 'E029',
-  ),
-  238 => 
-  array (
-    'match' => '((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0BB)) 0A41',
-    'replace' => '\\1 E002',
-  ),
-  239 => 
-  array (
-    'match' => '((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0BB)) 0A42',
-    'replace' => '\\1 E003',
-  ),
-  240 => 
-  array (
-    'match' => '0A2F 0A4D',
-    'replace' => 'E0A0',
-  ),
-  241 => 
-  array (
-    'match' => '0A09 0A02',
-    'replace' => 'E0A1',
-  ),
-  242 => 
-  array (
-    'match' => '0A09 0A70',
-    'replace' => 'E0A1',
-  ),
-  243 => 
-  array (
-    'match' => '0A0A 0A02',
-    'replace' => 'E0A2',
-  ),
-  244 => 
-  array (
-    'match' => '0A0A 0A70',
-    'replace' => 'E0A2',
-  ),
-  245 => 
-  array (
-    'match' => '0A13 0A02',
-    'replace' => 'E0A3',
-  ),
-  246 => 
-  array (
-    'match' => '0A13 0A70',
-    'replace' => 'E0A3',
-  ),
-  247 => 
-  array (
-    'match' => '0A05 0A02',
-    'replace' => 'E0B4',
-  ),
-  248 => 
-  array (
-    'match' => '0A05 0A70',
-    'replace' => 'E0B4',
-  ),
-  249 => 
-  array (
-    'match' => '0A06 0A02',
-    'replace' => 'E0B5',
-  ),
-  250 => 
-  array (
-    'match' => '0A06 0A70',
-    'replace' => 'E0B5',
-  ),
-  251 => 
-  array (
-    'match' => '0A07 0A02',
-    'replace' => 'E0B6',
-  ),
-  252 => 
-  array (
-    'match' => '0A07 0A70',
-    'replace' => 'E0B6',
-  ),
-  253 => 
-  array (
-    'match' => '0A08 0A02',
-    'replace' => 'E0B7',
-  ),
-  254 => 
-  array (
-    'match' => '0A08 0A70',
-    'replace' => 'E0B7',
-  ),
-  255 => 
-  array (
-    'match' => '0A0F 0A02',
-    'replace' => 'E0B8',
-  ),
-  256 => 
-  array (
-    'match' => '0A0F 0A70',
-    'replace' => 'E0B8',
-  ),
-  257 => 
-  array (
-    'match' => '0A10 0A02',
-    'replace' => 'E0B9',
-  ),
-  258 => 
-  array (
-    'match' => '0A10 0A70',
-    'replace' => 'E0B9',
-  ),
-  259 => 
-  array (
-    'match' => '0A14 0A02',
-    'replace' => 'E0BA',
-  ),
-  260 => 
-  array (
-    'match' => '0A14 0A70',
-    'replace' => 'E0BA',
-  ),
-  261 => 
-  array (
-    'match' => '((0A15|0A16|0A17|0A18|0A19|0A1A|0A1B|0A1C|0A1D|0A1E|0A1F|0A20|0A21|0A22|0A23|0A24|0A25|0A26|0A27|0A28|0A2A|0A2B|0A2C|0A2D|0A2E|0A2F|0A30|0A32|0A33|0A35|0A36|0A38|0A39|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|0A59|0A5A|0A5B|0A5C|0A5E)) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  262 => 
-  array (
-    'match' => '((E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E02A|E02C)) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  263 => 
-  array (
-    'match' => '((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0BB)) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  264 => 
-  array (
-    'match' => '(0A41) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  265 => 
-  array (
-    'match' => '(0A42) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  266 => 
-  array (
-    'match' => '(E002) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  267 => 
-  array (
-    'match' => '(E003) 0A02',
-    'replace' => '\\1 0A70',
-  ),
-  268 => 
-  array (
-    'match' => '0A3E 0A02',
-    'replace' => 'E0A8',
-  ),
-  269 => 
-  array (
-    'match' => '0A3E 0A70',
-    'replace' => 'E0A8',
-  ),
-  270 => 
-  array (
-    'match' => '0A40 0A02',
-    'replace' => 'E0A9',
-  ),
-  271 => 
-  array (
-    'match' => '0A40 0A70',
-    'replace' => 'E0A9',
-  ),
-  272 => 
-  array (
-    'match' => '0A47 0A02',
-    'replace' => 'E0AA',
-  ),
-  273 => 
-  array (
-    'match' => '0A47 0A70',
-    'replace' => 'E0AA',
-  ),
-  274 => 
-  array (
-    'match' => '0A48 0A02',
-    'replace' => 'E0AB',
-  ),
-  275 => 
-  array (
-    'match' => '0A48 0A70',
-    'replace' => 'E0AB',
-  ),
-  276 => 
-  array (
-    'match' => '0A4B 0A02',
-    'replace' => 'E0AC',
-  ),
-  277 => 
-  array (
-    'match' => '0A4B 0A70',
-    'replace' => 'E0AC',
-  ),
-  278 => 
-  array (
-    'match' => '0A4C 0A02',
-    'replace' => 'E0AD',
-  ),
-  279 => 
-  array (
-    'match' => '0A4C 0A70',
-    'replace' => 'E0AD',
-  ),
-  280 => 
-  array (
-    'match' => '0A3E 0A01',
-    'replace' => 'E0AE',
-  ),
-  281 => 
-  array (
-    'match' => '0A40 0A01',
-    'replace' => 'E0AF',
-  ),
-  282 => 
-  array (
-    'match' => '0A47 0A01',
-    'replace' => 'E0B0',
-  ),
-  283 => 
-  array (
-    'match' => '0A48 0A01',
-    'replace' => 'E0B1',
-  ),
-  284 => 
-  array (
-    'match' => '0A4B 0A01',
-    'replace' => 'E0B2',
-  ),
-  285 => 
-  array (
-    'match' => '0A4C 0A01',
-    'replace' => 'E0B3',
-  ),
-  286 => 
-  array (
-    'match' => '((0A08|0A0F|0A10|0A13|0A14|E0B6|E0B7|E0B8|E0B9|E0BA)) 0A01',
-    'replace' => '\\1 E0A5',
-  ),
-  287 => 
-  array (
-    'match' => '((E0A8|E0A9|E0AA|E0AB|E0AC|E0AD)) 0A01',
-    'replace' => '\\1 E0A5',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php
deleted file mode 100644 (file)
index 9f53413..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0BCD 200D',
-    'replace' => '014B',
-  ),
-  1 => 
-  array (
-    'match' => '0BCD 200C',
-    'replace' => 'E002',
-  ),
-  2 => 
-  array (
-    'match' => '200D 0BCD',
-    'replace' => '014A',
-  ),
-  3 => 
-  array (
-    'match' => '0B95 0BCD 0BB7',
-    'replace' => 'E005',
-  ),
-  4 => 
-  array (
-    'match' => '0BB8 0BCD 0BB0 0BC0',
-    'replace' => 'E04B',
-  ),
-  5 => 
-  array (
-    'match' => '0B93 0BAE 0BCD',
-    'replace' => 'E04C',
-  ),
-  6 => 
-  array (
-    'match' => '(0BB8) 0BC1',
-    'replace' => '\\1 E00C',
-  ),
-  7 => 
-  array (
-    'match' => '(0BB8) 0BC2',
-    'replace' => '\\1 E00D',
-  ),
-  8 => 
-  array (
-    'match' => '0B95 0BC2',
-    'replace' => 'E00F',
-  ),
-  9 => 
-  array (
-    'match' => '0B9C 0BC1',
-    'replace' => 'E014',
-  ),
-  10 => 
-  array (
-    'match' => '0B9C 0BC2',
-    'replace' => 'E015',
-  ),
-  11 => 
-  array (
-    'match' => '0B9F 0BBF',
-    'replace' => 'E018',
-  ),
-  12 => 
-  array (
-    'match' => '0BB2 0BBF',
-    'replace' => 'E033',
-  ),
-  13 => 
-  array (
-    'match' => '0BB7 0BBF',
-    'replace' => 'E03F',
-  ),
-  14 => 
-  array (
-    'match' => '0BB7 0BC1',
-    'replace' => 'E041',
-  ),
-  15 => 
-  array (
-    'match' => '0BB7 0BC2',
-    'replace' => 'E042',
-  ),
-  16 => 
-  array (
-    'match' => '0BB8 0BBF',
-    'replace' => 'E043',
-  ),
-  17 => 
-  array (
-    'match' => '0BB9 0BC1',
-    'replace' => 'E045',
-  ),
-  18 => 
-  array (
-    'match' => '0BB9 0BC2',
-    'replace' => 'E046',
-  ),
-  19 => 
-  array (
-    'match' => 'E005 0BBF',
-    'replace' => 'E047',
-  ),
-  20 => 
-  array (
-    'match' => 'E005 0BC1',
-    'replace' => 'E049',
-  ),
-  21 => 
-  array (
-    'match' => 'E005 0BC2',
-    'replace' => 'E04A',
-  ),
-  22 => 
-  array (
-    'match' => '((0BAA|0BAF|0B99|0BB5)) 0BC0',
-    'replace' => '\\1 E00B',
-  ),
-  23 => 
-  array (
-    'match' => '((0BAE|0B9A|0BB9|0B9C|0BB4|0BB1)) 0BBF',
-    'replace' => '\\1 E006',
-  ),
-  24 => 
-  array (
-    'match' => '((0BB0|0BB3|0BA3|0BA9)) 0BBF',
-    'replace' => '\\1 E007',
-  ),
-  25 => 
-  array (
-    'match' => '((0B95|0BA4)) 0BBF',
-    'replace' => '\\1 E008',
-  ),
-  26 => 
-  array (
-    'match' => '((0BAA|0BAF|0B99|0BB5)) 0BBF',
-    'replace' => '\\1 E009',
-  ),
-  27 => 
-  array (
-    'match' => '((0BA8|0B9E)) 0BBF',
-    'replace' => '\\1 E00A',
-  ),
-  28 => 
-  array (
-    'match' => '0BA3 200C 0BC8',
-    'replace' => 'E01F',
-  ),
-  29 => 
-  array (
-    'match' => '0BA9 200C 0BC8',
-    'replace' => 'E027',
-  ),
-  30 => 
-  array (
-    'match' => '0BB2 200C 0BC8',
-    'replace' => 'E037',
-  ),
-  31 => 
-  array (
-    'match' => '0BB3 200C 0BC8',
-    'replace' => 'E03A',
-  ),
-  32 => 
-  array (
-    'match' => '0B9F 0BC0',
-    'replace' => 'E019',
-  ),
-  33 => 
-  array (
-    'match' => '0BB2 0BC0',
-    'replace' => 'E034',
-  ),
-  34 => 
-  array (
-    'match' => '0BB7 0BC0',
-    'replace' => 'E040',
-  ),
-  35 => 
-  array (
-    'match' => '0BB8 0BC0',
-    'replace' => 'E044',
-  ),
-  36 => 
-  array (
-    'match' => 'E005 0BC0',
-    'replace' => 'E048',
-  ),
-  37 => 
-  array (
-    'match' => '0B95 0BC1',
-    'replace' => 'E00E',
-  ),
-  38 => 
-  array (
-    'match' => '0B99 0BC1',
-    'replace' => 'E010',
-  ),
-  39 => 
-  array (
-    'match' => '0B99 0BC2',
-    'replace' => 'E011',
-  ),
-  40 => 
-  array (
-    'match' => '0B9A 0BC1',
-    'replace' => 'E012',
-  ),
-  41 => 
-  array (
-    'match' => '0B9A 0BC2',
-    'replace' => 'E013',
-  ),
-  42 => 
-  array (
-    'match' => '0B9E 0BC1',
-    'replace' => 'E016',
-  ),
-  43 => 
-  array (
-    'match' => '0B9E 0BC2',
-    'replace' => 'E017',
-  ),
-  44 => 
-  array (
-    'match' => '0B9F 0BC1',
-    'replace' => 'E01A',
-  ),
-  45 => 
-  array (
-    'match' => '0B9F 0BC2',
-    'replace' => 'E01B',
-  ),
-  46 => 
-  array (
-    'match' => '0BA3 200C 0BBE',
-    'replace' => 'E01C',
-  ),
-  47 => 
-  array (
-    'match' => '0BA3 0BC1',
-    'replace' => 'E01D',
-  ),
-  48 => 
-  array (
-    'match' => '0BA3 0BC2',
-    'replace' => 'E01E',
-  ),
-  49 => 
-  array (
-    'match' => '0BA4 0BC1',
-    'replace' => 'E020',
-  ),
-  50 => 
-  array (
-    'match' => '0BA4 0BC2',
-    'replace' => 'E021',
-  ),
-  51 => 
-  array (
-    'match' => '0BA8 0BC1',
-    'replace' => 'E022',
-  ),
-  52 => 
-  array (
-    'match' => '0BA8 0BC2',
-    'replace' => 'E023',
-  ),
-  53 => 
-  array (
-    'match' => '0BA9 200C 0BBE',
-    'replace' => 'E024',
-  ),
-  54 => 
-  array (
-    'match' => '0BA9 0BC1',
-    'replace' => 'E025',
-  ),
-  55 => 
-  array (
-    'match' => '0BA9 0BC2',
-    'replace' => 'E026',
-  ),
-  56 => 
-  array (
-    'match' => '0BAA 0BC1',
-    'replace' => 'E028',
-  ),
-  57 => 
-  array (
-    'match' => '0BAA 0BC2',
-    'replace' => 'E029',
-  ),
-  58 => 
-  array (
-    'match' => '0BAE 0BC1',
-    'replace' => 'E02A',
-  ),
-  59 => 
-  array (
-    'match' => '0BAE 0BC2',
-    'replace' => 'E02B',
-  ),
-  60 => 
-  array (
-    'match' => '0BAF 0BC1',
-    'replace' => 'E02C',
-  ),
-  61 => 
-  array (
-    'match' => '0BAF 0BC2',
-    'replace' => 'E02D',
-  ),
-  62 => 
-  array (
-    'match' => '0BB0 0BC1',
-    'replace' => 'E02E',
-  ),
-  63 => 
-  array (
-    'match' => '0BB0 0BC2',
-    'replace' => 'E02F',
-  ),
-  64 => 
-  array (
-    'match' => '0BB1 200C 0BBE',
-    'replace' => 'E030',
-  ),
-  65 => 
-  array (
-    'match' => '0BB1 0BC1',
-    'replace' => 'E031',
-  ),
-  66 => 
-  array (
-    'match' => '0BB1 0BC2',
-    'replace' => 'E032',
-  ),
-  67 => 
-  array (
-    'match' => '0BB2 0BC1',
-    'replace' => 'E035',
-  ),
-  68 => 
-  array (
-    'match' => '0BB2 0BC2',
-    'replace' => 'E036',
-  ),
-  69 => 
-  array (
-    'match' => '0BB3 0BC1',
-    'replace' => 'E038',
-  ),
-  70 => 
-  array (
-    'match' => '0BB3 0BC2',
-    'replace' => 'E039',
-  ),
-  71 => 
-  array (
-    'match' => '0BB4 0BC1',
-    'replace' => 'E03B',
-  ),
-  72 => 
-  array (
-    'match' => '0BB4 0BC2',
-    'replace' => 'E03C',
-  ),
-  73 => 
-  array (
-    'match' => '0BB5 0BC1',
-    'replace' => 'E03D',
-  ),
-  74 => 
-  array (
-    'match' => '0BB5 0BC2',
-    'replace' => 'E03E',
-  ),
-  75 => 
-  array (
-    'match' => '014B',
-    'replace' => '0BCD',
-  ),
-  76 => 
-  array (
-    'match' => 'E002',
-    'replace' => '0BCD',
-  ),
-  77 => 
-  array (
-    'match' => '014A',
-    'replace' => '0BCD',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php
deleted file mode 100644 (file)
index 1cf96cc..0000000
+++ /dev/null
@@ -1,1489 +0,0 @@
-<?php
-       $volt = array (
-  0 => 
-  array (
-    'match' => '0C4D 0C30 ((0C15|0C16|0C17|0C18|0C19|0C1A|0C1B|0C1C|0C1D|0C1E|0C1F|0C20|0C21|0C22|0C23|0C24|0C25|0C26|0C27|0C28|0C2A|0C2B|0C2C|0C2D|0C2E|0C2F|0C30|0C31|0C32|0C33|0C35|0C36|0C37|0C38|0C39))',
-    'replace' => 'E046 \\1',
-  ),
-  1 => 
-  array (
-    'match' => '0C4D 200D',
-    'replace' => '00C9',
-  ),
-  2 => 
-  array (
-    'match' => '0C4D 200C',
-    'replace' => '00D0',
-  ),
-  3 => 
-  array (
-    'match' => '200D 0C4D',
-    'replace' => '00D1',
-  ),
-  4 => 
-  array (
-    'match' => '((0C15|0C16|0C17|0C18|0C19|0C1A|0C1B|0C1C|0C1D|0C1E|0C1F|0C20|0C21|0C22|0C23|0C24|0C25|0C26|0C27|0C28|0C2A|0C2B|0C2C|0C2D|0C2E|0C2F|0C30|0C31|0C32|0C33|0C35|0C36|0C37|0C38|0C39)) 0C4D',
-    'replace' => '\\1 00D1',
-  ),
-  5 => 
-  array (
-    'match' => '((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C)) 0C4D',
-    'replace' => '\\1 00D1',
-  ),
-  6 => 
-  array (
-    'match' => '((0C41|0C42|0C43|0C44)) 0C4D',
-    'replace' => '\\1 00D1',
-  ),
-  7 => 
-  array (
-    'match' => '(0020) 0C4D',
-    'replace' => '\\1 00D1',
-  ),
-  8 => 
-  array (
-    'match' => '(25CC) 0C4D',
-    'replace' => '\\1 00D1',
-  ),
-  9 => 
-  array (
-    'match' => '0C15 00D1 0C37',
-    'replace' => 'E078',
-  ),
-  10 => 
-  array (
-    'match' => '0C36 00D1 0C1C',
-    'replace' => 'E079',
-  ),
-  11 => 
-  array (
-    'match' => '00D1 0C15',
-    'replace' => 'E02C',
-  ),
-  12 => 
-  array (
-    'match' => '00D1 0C16',
-    'replace' => 'E02D',
-  ),
-  13 => 
-  array (
-    'match' => '00D1 0C17',
-    'replace' => 'E02E',
-  ),
-  14 => 
-  array (
-    'match' => '00D1 0C18',
-    'replace' => 'E02F',
-  ),
-  15 => 
-  array (
-    'match' => '00D1 0C19',
-    'replace' => 'E030',
-  ),
-  16 => 
-  array (
-    'match' => '00D1 0C1A',
-    'replace' => 'E031',
-  ),
-  17 => 
-  array (
-    'match' => '00D1 0C1B',
-    'replace' => 'E032',
-  ),
-  18 => 
-  array (
-    'match' => '00D1 0C1C',
-    'replace' => 'E033',
-  ),
-  19 => 
-  array (
-    'match' => '00D1 0C1D',
-    'replace' => 'E034',
-  ),
-  20 => 
-  array (
-    'match' => '00D1 0C1E',
-    'replace' => 'E035',
-  ),
-  21 => 
-  array (
-    'match' => '00D1 0C1F',
-    'replace' => 'E036',
-  ),
-  22 => 
-  array (
-    'match' => '00D1 0C20',
-    'replace' => 'E037',
-  ),
-  23 => 
-  array (
-    'match' => '00D1 0C21',
-    'replace' => 'E038',
-  ),
-  24 => 
-  array (
-    'match' => '00D1 0C22',
-    'replace' => 'E039',
-  ),
-  25 => 
-  array (
-    'match' => '00D1 0C23',
-    'replace' => 'E03A',
-  ),
-  26 => 
-  array (
-    'match' => '00D1 0C24',
-    'replace' => 'E03B',
-  ),
-  27 => 
-  array (
-    'match' => '00D1 0C25',
-    'replace' => 'E03C',
-  ),
-  28 => 
-  array (
-    'match' => '00D1 0C26',
-    'replace' => 'E03D',
-  ),
-  29 => 
-  array (
-    'match' => '00D1 0C27',
-    'replace' => 'E03E',
-  ),
-  30 => 
-  array (
-    'match' => '00D1 0C28',
-    'replace' => 'E03F',
-  ),
-  31 => 
-  array (
-    'match' => '00D1 0C2A',
-    'replace' => 'E040',
-  ),
-  32 => 
-  array (
-    'match' => '00D1 0C2B',
-    'replace' => 'E041',
-  ),
-  33 => 
-  array (
-    'match' => '00D1 0C2C',
-    'replace' => 'E042',
-  ),
-  34 => 
-  array (
-    'match' => '00D1 0C2D',
-    'replace' => 'E043',
-  ),
-  35 => 
-  array (
-    'match' => '00D1 0C2E',
-    'replace' => 'E044',
-  ),
-  36 => 
-  array (
-    'match' => '00D1 0C2F',
-    'replace' => 'E045',
-  ),
-  37 => 
-  array (
-    'match' => '00D1 0C30',
-    'replace' => 'E046',
-  ),
-  38 => 
-  array (
-    'match' => '00D1 0C31',
-    'replace' => 'E047',
-  ),
-  39 => 
-  array (
-    'match' => '00D1 0C32',
-    'replace' => 'E048',
-  ),
-  40 => 
-  array (
-    'match' => '00D1 0C33',
-    'replace' => 'E049',
-  ),
-  41 => 
-  array (
-    'match' => '00D1 0C35',
-    'replace' => 'E04A',
-  ),
-  42 => 
-  array (
-    'match' => '00D1 0C36',
-    'replace' => 'E04B',
-  ),
-  43 => 
-  array (
-    'match' => '00D1 0C37',
-    'replace' => 'E04C',
-  ),
-  44 => 
-  array (
-    'match' => '00D1 0C38',
-    'replace' => 'E04D',
-  ),
-  45 => 
-  array (
-    'match' => '00D1 0C39',
-    'replace' => 'E04E',
-  ),
-  46 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02C',
-    'replace' => '\\1 E04F',
-  ),
-  47 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02D',
-    'replace' => '\\1 E050',
-  ),
-  48 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02E',
-    'replace' => '\\1 E051',
-  ),
-  49 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02F',
-    'replace' => '\\1 E052',
-  ),
-  50 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E030',
-    'replace' => '\\1 E053',
-  ),
-  51 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E031',
-    'replace' => '\\1 E054',
-  ),
-  52 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E032',
-    'replace' => '\\1 E055',
-  ),
-  53 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E033',
-    'replace' => '\\1 E056',
-  ),
-  54 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E034',
-    'replace' => '\\1 E057',
-  ),
-  55 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E035',
-    'replace' => '\\1 E058',
-  ),
-  56 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E036',
-    'replace' => '\\1 E059',
-  ),
-  57 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E037',
-    'replace' => '\\1 E05A',
-  ),
-  58 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E038',
-    'replace' => '\\1 E05B',
-  ),
-  59 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E039',
-    'replace' => '\\1 E05C',
-  ),
-  60 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03A',
-    'replace' => '\\1 E05D',
-  ),
-  61 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03B',
-    'replace' => '\\1 E05E',
-  ),
-  62 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03C',
-    'replace' => '\\1 E05F',
-  ),
-  63 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03D',
-    'replace' => '\\1 E060',
-  ),
-  64 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03E',
-    'replace' => '\\1 E061',
-  ),
-  65 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03F',
-    'replace' => '\\1 E062',
-  ),
-  66 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E040',
-    'replace' => '\\1 E063',
-  ),
-  67 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E041',
-    'replace' => '\\1 E064',
-  ),
-  68 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E042',
-    'replace' => '\\1 E065',
-  ),
-  69 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E043',
-    'replace' => '\\1 E066',
-  ),
-  70 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E044',
-    'replace' => '\\1 E067',
-  ),
-  71 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E045',
-    'replace' => '\\1 E068',
-  ),
-  72 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E046',
-    'replace' => '\\1 E069',
-  ),
-  73 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E047',
-    'replace' => '\\1 E06A',
-  ),
-  74 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E048',
-    'replace' => '\\1 E06B',
-  ),
-  75 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E049',
-    'replace' => '\\1 E06C',
-  ),
-  76 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04A',
-    'replace' => '\\1 E06D',
-  ),
-  77 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04B',
-    'replace' => '\\1 E06E',
-  ),
-  78 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04C',
-    'replace' => '\\1 E06F',
-  ),
-  79 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04D',
-    'replace' => '\\1 E070',
-  ),
-  80 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04E',
-    'replace' => '\\1 E071',
-  ),
-  81 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E02C',
-    'replace' => '\\1 E072',
-  ),
-  82 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E03F',
-    'replace' => '\\1 E073',
-  ),
-  83 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E044',
-    'replace' => '\\1 E074',
-  ),
-  84 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E045',
-    'replace' => '\\1 E075',
-  ),
-  85 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E04A',
-    'replace' => '\\1 E076',
-  ),
-  86 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E046',
-    'replace' => '\\1 E077',
-  ),
-  87 => 
-  array (
-    'match' => '00C9',
-    'replace' => '0C4D',
-  ),
-  88 => 
-  array (
-    'match' => '00D0',
-    'replace' => '0C4D',
-  ),
-  89 => 
-  array (
-    'match' => '00D1',
-    'replace' => '0C4D',
-  ),
-  90 => 
-  array (
-    'match' => '0C2A ((0C3E|0C4A|0C4B|0C4C))',
-    'replace' => 'E028 \\1',
-  ),
-  91 => 
-  array (
-    'match' => '0C2B ((0C3E|0C4A|0C4B|0C4C))',
-    'replace' => 'E029 \\1',
-  ),
-  92 => 
-  array (
-    'match' => '0C37 ((0C3E|0C4A|0C4B|0C4C))',
-    'replace' => 'E02A \\1',
-  ),
-  93 => 
-  array (
-    'match' => '0C38 ((0C3E|0C4A|0C4B|0C4C))',
-    'replace' => 'E02B \\1',
-  ),
-  94 => 
-  array (
-    'match' => 'E07B ((0C3E|0C4A|0C4B|0C4C))',
-    'replace' => 'E0B2 \\1',
-  ),
-  95 => 
-  array (
-    'match' => '((E028|E029|E02A|E02B)) 0C4A',
-    'replace' => '\\1 E009',
-  ),
-  96 => 
-  array (
-    'match' => '((E028|E029|E02A|E02B)) 0C4B',
-    'replace' => '\\1 E00A',
-  ),
-  97 => 
-  array (
-    'match' => '((E028|E029|E02A|E02B)) 0C4C',
-    'replace' => '\\1 E00B',
-  ),
-  98 => 
-  array (
-    'match' => '0C15 0C41',
-    'replace' => 'E07F',
-  ),
-  99 => 
-  array (
-    'match' => '0C15 0C42',
-    'replace' => 'E080',
-  ),
-  100 => 
-  array (
-    'match' => '0C16 0C3F',
-    'replace' => 'E081',
-  ),
-  101 => 
-  array (
-    'match' => '0C16 0C40',
-    'replace' => 'E082',
-  ),
-  102 => 
-  array (
-    'match' => '0C18 0C4A',
-    'replace' => 'E083',
-  ),
-  103 => 
-  array (
-    'match' => '0C18 0C4B',
-    'replace' => 'E084',
-  ),
-  104 => 
-  array (
-    'match' => '0C19 0C41',
-    'replace' => 'E085',
-  ),
-  105 => 
-  array (
-    'match' => '0C19 0C42',
-    'replace' => 'E086',
-  ),
-  106 => 
-  array (
-    'match' => '0C1A 0C3F',
-    'replace' => 'E087',
-  ),
-  107 => 
-  array (
-    'match' => '0C1A 0C40',
-    'replace' => 'E088',
-  ),
-  108 => 
-  array (
-    'match' => '0C1B 0C3F',
-    'replace' => 'E089',
-  ),
-  109 => 
-  array (
-    'match' => '0C1B 0C40',
-    'replace' => 'E08A',
-  ),
-  110 => 
-  array (
-    'match' => '0C1C 0C3F',
-    'replace' => 'E08B',
-  ),
-  111 => 
-  array (
-    'match' => '0C1C 0C40',
-    'replace' => 'E08C',
-  ),
-  112 => 
-  array (
-    'match' => '0C1C 0C41',
-    'replace' => 'E08D',
-  ),
-  113 => 
-  array (
-    'match' => '0C1C 0C42',
-    'replace' => 'E08E',
-  ),
-  114 => 
-  array (
-    'match' => '0C1D 0C4A',
-    'replace' => 'E08F',
-  ),
-  115 => 
-  array (
-    'match' => '0C1D 0C4B',
-    'replace' => 'E090',
-  ),
-  116 => 
-  array (
-    'match' => '0C24 0C3F',
-    'replace' => 'E091',
-  ),
-  117 => 
-  array (
-    'match' => '0C24 0C40',
-    'replace' => 'E092',
-  ),
-  118 => 
-  array (
-    'match' => '0C28 0C3F',
-    'replace' => 'E093',
-  ),
-  119 => 
-  array (
-    'match' => '0C28 0C40',
-    'replace' => 'E094',
-  ),
-  120 => 
-  array (
-    'match' => '0C2C 0C3F',
-    'replace' => 'E095',
-  ),
-  121 => 
-  array (
-    'match' => '0C2C 0C40',
-    'replace' => 'E096',
-  ),
-  122 => 
-  array (
-    'match' => '0C2D 0C3F',
-    'replace' => 'E097',
-  ),
-  123 => 
-  array (
-    'match' => '0C2D 0C40',
-    'replace' => 'E098',
-  ),
-  124 => 
-  array (
-    'match' => '0C2E 0C3F',
-    'replace' => 'E099',
-  ),
-  125 => 
-  array (
-    'match' => '0C2E 0C40',
-    'replace' => 'E09A',
-  ),
-  126 => 
-  array (
-    'match' => '0C2E 0C4A',
-    'replace' => 'E09B',
-  ),
-  127 => 
-  array (
-    'match' => '0C2E 0C4B',
-    'replace' => 'E09C',
-  ),
-  128 => 
-  array (
-    'match' => '0C2F 0C3F',
-    'replace' => 'E09D',
-  ),
-  129 => 
-  array (
-    'match' => '0C2F 0C40',
-    'replace' => 'E09E',
-  ),
-  130 => 
-  array (
-    'match' => '0C2F 0C4A',
-    'replace' => 'E09F',
-  ),
-  131 => 
-  array (
-    'match' => '0C2F 0C4B',
-    'replace' => 'E0A0',
-  ),
-  132 => 
-  array (
-    'match' => '0C32 0C3F',
-    'replace' => 'E0A1',
-  ),
-  133 => 
-  array (
-    'match' => '0C32 0C40',
-    'replace' => 'E0A2',
-  ),
-  134 => 
-  array (
-    'match' => '0C33 0C3F',
-    'replace' => 'E0A3',
-  ),
-  135 => 
-  array (
-    'match' => '0C33 0C40',
-    'replace' => 'E0A4',
-  ),
-  136 => 
-  array (
-    'match' => '0C35 0C3F',
-    'replace' => 'E0A5',
-  ),
-  137 => 
-  array (
-    'match' => '0C35 0C40',
-    'replace' => 'E0A6',
-  ),
-  138 => 
-  array (
-    'match' => '0C36 0C41',
-    'replace' => 'E0A7',
-  ),
-  139 => 
-  array (
-    'match' => '0C36 0C42',
-    'replace' => 'E0A8',
-  ),
-  140 => 
-  array (
-    'match' => '0C36 0C3F',
-    'replace' => 'E0A9',
-  ),
-  141 => 
-  array (
-    'match' => '0C36 0C40',
-    'replace' => 'E0AA',
-  ),
-  142 => 
-  array (
-    'match' => '0C39 0C3E',
-    'replace' => 'E0AB',
-  ),
-  143 => 
-  array (
-    'match' => '0C39 0C41',
-    'replace' => 'E0AC',
-  ),
-  144 => 
-  array (
-    'match' => '0C39 0C42',
-    'replace' => 'E0AD',
-  ),
-  145 => 
-  array (
-    'match' => 'E078 0C41',
-    'replace' => 'E0AE',
-  ),
-  146 => 
-  array (
-    'match' => 'E078 0C42',
-    'replace' => 'E0AF',
-  ),
-  147 => 
-  array (
-    'match' => 'E07A 0C48',
-    'replace' => 'E0B0',
-  ),
-  148 => 
-  array (
-    'match' => 'E07B 0C48',
-    'replace' => 'E0B1',
-  ),
-  149 => 
-  array (
-    'match' => 'E07A 0C3F',
-    'replace' => 'E0DA',
-  ),
-  150 => 
-  array (
-    'match' => 'E07A 0C40',
-    'replace' => 'E0DB',
-  ),
-  151 => 
-  array (
-    'match' => 'E07B 0C3F',
-    'replace' => 'E0DC',
-  ),
-  152 => 
-  array (
-    'match' => 'E07B 0C40',
-    'replace' => 'E0DD',
-  ),
-  153 => 
-  array (
-    'match' => '0C15 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E00D \\1',
-  ),
-  154 => 
-  array (
-    'match' => '0C17 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E00E \\1',
-  ),
-  155 => 
-  array (
-    'match' => '0C18 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E00F \\1',
-  ),
-  156 => 
-  array (
-    'match' => '0C1A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E010 \\1',
-  ),
-  157 => 
-  array (
-    'match' => '0C1B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E011 \\1',
-  ),
-  158 => 
-  array (
-    'match' => '0C1C ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E012 \\1',
-  ),
-  159 => 
-  array (
-    'match' => '0C1D ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E013 \\1',
-  ),
-  160 => 
-  array (
-    'match' => '0C20 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E014 \\1',
-  ),
-  161 => 
-  array (
-    'match' => '0C21 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E015 \\1',
-  ),
-  162 => 
-  array (
-    'match' => '0C22 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E016 \\1',
-  ),
-  163 => 
-  array (
-    'match' => '0C24 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E017 \\1',
-  ),
-  164 => 
-  array (
-    'match' => '0C25 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E018 \\1',
-  ),
-  165 => 
-  array (
-    'match' => '0C26 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E019 \\1',
-  ),
-  166 => 
-  array (
-    'match' => '0C27 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E01A \\1',
-  ),
-  167 => 
-  array (
-    'match' => '0C28 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E01B \\1',
-  ),
-  168 => 
-  array (
-    'match' => '0C2A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E01C \\1',
-  ),
-  169 => 
-  array (
-    'match' => '0C2B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E01D \\1',
-  ),
-  170 => 
-  array (
-    'match' => '0C2D ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E01E \\1',
-  ),
-  171 => 
-  array (
-    'match' => '0C2E ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E01F \\1',
-  ),
-  172 => 
-  array (
-    'match' => '0C2F ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E020 \\1',
-  ),
-  173 => 
-  array (
-    'match' => '0C30 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E021 \\1',
-  ),
-  174 => 
-  array (
-    'match' => '0C33 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E022 \\1',
-  ),
-  175 => 
-  array (
-    'match' => '0C35 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E023 \\1',
-  ),
-  176 => 
-  array (
-    'match' => '0C36 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E024 \\1',
-  ),
-  177 => 
-  array (
-    'match' => '0C37 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E025 \\1',
-  ),
-  178 => 
-  array (
-    'match' => '0C38 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E026 \\1',
-  ),
-  179 => 
-  array (
-    'match' => '0C39 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E027 \\1',
-  ),
-  180 => 
-  array (
-    'match' => 'E078 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E07C \\1',
-  ),
-  181 => 
-  array (
-    'match' => 'E07A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E07D \\1',
-  ),
-  182 => 
-  array (
-    'match' => 'E07B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
-    'replace' => 'E07E \\1',
-  ),
-  183 => 
-  array (
-    'match' => '0C15 (0C3E)',
-    'replace' => 'E00D \\1',
-  ),
-  184 => 
-  array (
-    'match' => '0C17 (0C3E)',
-    'replace' => 'E00E \\1',
-  ),
-  185 => 
-  array (
-    'match' => '0C18 (0C3E)',
-    'replace' => 'E00F \\1',
-  ),
-  186 => 
-  array (
-    'match' => '0C1A (0C3E)',
-    'replace' => 'E010 \\1',
-  ),
-  187 => 
-  array (
-    'match' => '0C1B (0C3E)',
-    'replace' => 'E011 \\1',
-  ),
-  188 => 
-  array (
-    'match' => '0C1C (0C3E)',
-    'replace' => 'E012 \\1',
-  ),
-  189 => 
-  array (
-    'match' => '0C1D (0C3E)',
-    'replace' => 'E013 \\1',
-  ),
-  190 => 
-  array (
-    'match' => '0C20 (0C3E)',
-    'replace' => 'E014 \\1',
-  ),
-  191 => 
-  array (
-    'match' => '0C21 (0C3E)',
-    'replace' => 'E015 \\1',
-  ),
-  192 => 
-  array (
-    'match' => '0C22 (0C3E)',
-    'replace' => 'E016 \\1',
-  ),
-  193 => 
-  array (
-    'match' => '0C24 (0C3E)',
-    'replace' => 'E017 \\1',
-  ),
-  194 => 
-  array (
-    'match' => '0C25 (0C3E)',
-    'replace' => 'E018 \\1',
-  ),
-  195 => 
-  array (
-    'match' => '0C26 (0C3E)',
-    'replace' => 'E019 \\1',
-  ),
-  196 => 
-  array (
-    'match' => '0C27 (0C3E)',
-    'replace' => 'E01A \\1',
-  ),
-  197 => 
-  array (
-    'match' => '0C28 (0C3E)',
-    'replace' => 'E01B \\1',
-  ),
-  198 => 
-  array (
-    'match' => '0C2A (0C3E)',
-    'replace' => 'E01C \\1',
-  ),
-  199 => 
-  array (
-    'match' => '0C2B (0C3E)',
-    'replace' => 'E01D \\1',
-  ),
-  200 => 
-  array (
-    'match' => '0C2D (0C3E)',
-    'replace' => 'E01E \\1',
-  ),
-  201 => 
-  array (
-    'match' => '0C2E (0C3E)',
-    'replace' => 'E01F \\1',
-  ),
-  202 => 
-  array (
-    'match' => '0C2F (0C3E)',
-    'replace' => 'E020 \\1',
-  ),
-  203 => 
-  array (
-    'match' => '0C30 (0C3E)',
-    'replace' => 'E021 \\1',
-  ),
-  204 => 
-  array (
-    'match' => '0C33 (0C3E)',
-    'replace' => 'E022 \\1',
-  ),
-  205 => 
-  array (
-    'match' => '0C35 (0C3E)',
-    'replace' => 'E023 \\1',
-  ),
-  206 => 
-  array (
-    'match' => '0C36 (0C3E)',
-    'replace' => 'E024 \\1',
-  ),
-  207 => 
-  array (
-    'match' => '0C37 (0C3E)',
-    'replace' => 'E025 \\1',
-  ),
-  208 => 
-  array (
-    'match' => '0C38 (0C3E)',
-    'replace' => 'E026 \\1',
-  ),
-  209 => 
-  array (
-    'match' => '0C39 (0C3E)',
-    'replace' => 'E027 \\1',
-  ),
-  210 => 
-  array (
-    'match' => 'E078 (0C3E)',
-    'replace' => 'E07C \\1',
-  ),
-  211 => 
-  array (
-    'match' => 'E07A (0C3E)',
-    'replace' => 'E07D \\1',
-  ),
-  212 => 
-  array (
-    'match' => 'E07B (0C3E)',
-    'replace' => 'E07E \\1',
-  ),
-  213 => 
-  array (
-    'match' => '0C15 (0C4C)',
-    'replace' => 'E00D \\1',
-  ),
-  214 => 
-  array (
-    'match' => '0C17 (0C4C)',
-    'replace' => 'E00E \\1',
-  ),
-  215 => 
-  array (
-    'match' => '0C18 (0C4C)',
-    'replace' => 'E00F \\1',
-  ),
-  216 => 
-  array (
-    'match' => '0C1A (0C4C)',
-    'replace' => 'E010 \\1',
-  ),
-  217 => 
-  array (
-    'match' => '0C1B (0C4C)',
-    'replace' => 'E011 \\1',
-  ),
-  218 => 
-  array (
-    'match' => '0C1C (0C4C)',
-    'replace' => 'E012 \\1',
-  ),
-  219 => 
-  array (
-    'match' => '0C1D (0C4C)',
-    'replace' => 'E013 \\1',
-  ),
-  220 => 
-  array (
-    'match' => '0C20 (0C4C)',
-    'replace' => 'E014 \\1',
-  ),
-  221 => 
-  array (
-    'match' => '0C21 (0C4C)',
-    'replace' => 'E015 \\1',
-  ),
-  222 => 
-  array (
-    'match' => '0C22 (0C4C)',
-    'replace' => 'E016 \\1',
-  ),
-  223 => 
-  array (
-    'match' => '0C24 (0C4C)',
-    'replace' => 'E017 \\1',
-  ),
-  224 => 
-  array (
-    'match' => '0C25 (0C4C)',
-    'replace' => 'E018 \\1',
-  ),
-  225 => 
-  array (
-    'match' => '0C26 (0C4C)',
-    'replace' => 'E019 \\1',
-  ),
-  226 => 
-  array (
-    'match' => '0C27 (0C4C)',
-    'replace' => 'E01A \\1',
-  ),
-  227 => 
-  array (
-    'match' => '0C28 (0C4C)',
-    'replace' => 'E01B \\1',
-  ),
-  228 => 
-  array (
-    'match' => '0C2A (0C4C)',
-    'replace' => 'E01C \\1',
-  ),
-  229 => 
-  array (
-    'match' => '0C2B (0C4C)',
-    'replace' => 'E01D \\1',
-  ),
-  230 => 
-  array (
-    'match' => '0C2D (0C4C)',
-    'replace' => 'E01E \\1',
-  ),
-  231 => 
-  array (
-    'match' => '0C2E (0C4C)',
-    'replace' => 'E01F \\1',
-  ),
-  232 => 
-  array (
-    'match' => '0C2F (0C4C)',
-    'replace' => 'E020 \\1',
-  ),
-  233 => 
-  array (
-    'match' => '0C30 (0C4C)',
-    'replace' => 'E021 \\1',
-  ),
-  234 => 
-  array (
-    'match' => '0C33 (0C4C)',
-    'replace' => 'E022 \\1',
-  ),
-  235 => 
-  array (
-    'match' => '0C35 (0C4C)',
-    'replace' => 'E023 \\1',
-  ),
-  236 => 
-  array (
-    'match' => '0C36 (0C4C)',
-    'replace' => 'E024 \\1',
-  ),
-  237 => 
-  array (
-    'match' => '0C37 (0C4C)',
-    'replace' => 'E025 \\1',
-  ),
-  238 => 
-  array (
-    'match' => '0C38 (0C4C)',
-    'replace' => 'E026 \\1',
-  ),
-  239 => 
-  array (
-    'match' => '0C39 (0C4C)',
-    'replace' => 'E027 \\1',
-  ),
-  240 => 
-  array (
-    'match' => 'E078 (0C4C)',
-    'replace' => 'E07C \\1',
-  ),
-  241 => 
-  array (
-    'match' => 'E07A (0C4C)',
-    'replace' => 'E07D \\1',
-  ),
-  242 => 
-  array (
-    'match' => 'E07B (0C4C)',
-    'replace' => 'E07E \\1',
-  ),
-  243 => 
-  array (
-    'match' => '0C15 (0C4D)',
-    'replace' => 'E00D \\1',
-  ),
-  244 => 
-  array (
-    'match' => '0C17 (0C4D)',
-    'replace' => 'E00E \\1',
-  ),
-  245 => 
-  array (
-    'match' => '0C18 (0C4D)',
-    'replace' => 'E00F \\1',
-  ),
-  246 => 
-  array (
-    'match' => '0C1A (0C4D)',
-    'replace' => 'E010 \\1',
-  ),
-  247 => 
-  array (
-    'match' => '0C1B (0C4D)',
-    'replace' => 'E011 \\1',
-  ),
-  248 => 
-  array (
-    'match' => '0C1C (0C4D)',
-    'replace' => 'E012 \\1',
-  ),
-  249 => 
-  array (
-    'match' => '0C1D (0C4D)',
-    'replace' => 'E013 \\1',
-  ),
-  250 => 
-  array (
-    'match' => '0C20 (0C4D)',
-    'replace' => 'E014 \\1',
-  ),
-  251 => 
-  array (
-    'match' => '0C21 (0C4D)',
-    'replace' => 'E015 \\1',
-  ),
-  252 => 
-  array (
-    'match' => '0C22 (0C4D)',
-    'replace' => 'E016 \\1',
-  ),
-  253 => 
-  array (
-    'match' => '0C24 (0C4D)',
-    'replace' => 'E017 \\1',
-  ),
-  254 => 
-  array (
-    'match' => '0C25 (0C4D)',
-    'replace' => 'E018 \\1',
-  ),
-  255 => 
-  array (
-    'match' => '0C26 (0C4D)',
-    'replace' => 'E019 \\1',
-  ),
-  256 => 
-  array (
-    'match' => '0C27 (0C4D)',
-    'replace' => 'E01A \\1',
-  ),
-  257 => 
-  array (
-    'match' => '0C28 (0C4D)',
-    'replace' => 'E01B \\1',
-  ),
-  258 => 
-  array (
-    'match' => '0C2A (0C4D)',
-    'replace' => 'E01C \\1',
-  ),
-  259 => 
-  array (
-    'match' => '0C2B (0C4D)',
-    'replace' => 'E01D \\1',
-  ),
-  260 => 
-  array (
-    'match' => '0C2D (0C4D)',
-    'replace' => 'E01E \\1',
-  ),
-  261 => 
-  array (
-    'match' => '0C2E (0C4D)',
-    'replace' => 'E01F \\1',
-  ),
-  262 => 
-  array (
-    'match' => '0C2F (0C4D)',
-    'replace' => 'E020 \\1',
-  ),
-  263 => 
-  array (
-    'match' => '0C30 (0C4D)',
-    'replace' => 'E021 \\1',
-  ),
-  264 => 
-  array (
-    'match' => '0C33 (0C4D)',
-    'replace' => 'E022 \\1',
-  ),
-  265 => 
-  array (
-    'match' => '0C35 (0C4D)',
-    'replace' => 'E023 \\1',
-  ),
-  266 => 
-  array (
-    'match' => '0C36 (0C4D)',
-    'replace' => 'E024 \\1',
-  ),
-  267 => 
-  array (
-    'match' => '0C37 (0C4D)',
-    'replace' => 'E025 \\1',
-  ),
-  268 => 
-  array (
-    'match' => '0C38 (0C4D)',
-    'replace' => 'E026 \\1',
-  ),
-  269 => 
-  array (
-    'match' => '0C39 (0C4D)',
-    'replace' => 'E027 \\1',
-  ),
-  270 => 
-  array (
-    'match' => 'E078 (0C4D)',
-    'replace' => 'E07C \\1',
-  ),
-  271 => 
-  array (
-    'match' => 'E07A (0C4D)',
-    'replace' => 'E07D \\1',
-  ),
-  272 => 
-  array (
-    'match' => 'E07B (0C4D)',
-    'replace' => 'E07E \\1',
-  ),
-  273 => 
-  array (
-    'match' => 'E00F (0C3E)',
-    'replace' => '0C18 \\1',
-  ),
-  274 => 
-  array (
-    'match' => 'E013 (0C3E)',
-    'replace' => '0C1D \\1',
-  ),
-  275 => 
-  array (
-    'match' => 'E01F (0C3E)',
-    'replace' => '0C2E \\1',
-  ),
-  276 => 
-  array (
-    'match' => 'E020 (0C3E)',
-    'replace' => '0C2F \\1',
-  ),
-  277 => 
-  array (
-    'match' => 'E027 (0C3E)',
-    'replace' => '0C39 \\1',
-  ),
-  278 => 
-  array (
-    'match' => 'E00F (0C4C)',
-    'replace' => '0C18 \\1',
-  ),
-  279 => 
-  array (
-    'match' => 'E013 (0C4C)',
-    'replace' => '0C1D \\1',
-  ),
-  280 => 
-  array (
-    'match' => 'E01F (0C4C)',
-    'replace' => '0C2E \\1',
-  ),
-  281 => 
-  array (
-    'match' => 'E020 (0C4C)',
-    'replace' => '0C2F \\1',
-  ),
-  282 => 
-  array (
-    'match' => 'E027 (0C4C)',
-    'replace' => '0C39 \\1',
-  ),
-  283 => 
-  array (
-    'match' => '((E00F|0C1F|E01C|E01D|E025|E026|E027)) 0C46',
-    'replace' => '\\1 E007',
-  ),
-  284 => 
-  array (
-    'match' => '((E00F|0C1F|E01C|E01D|E025|E026|E027)) 0C47',
-    'replace' => '\\1 E008',
-  ),
-  285 => 
-  array (
-    'match' => '((0C16|0C18|0C1F|0C2C|E01E|0C2E|0C2F|0C32|0C1D)) 0C3E',
-    'replace' => '\\1 E002',
-  ),
-  286 => 
-  array (
-    'match' => '((0C19|0C1C)) 0C3E',
-    'replace' => '\\1 E003',
-  ),
-  287 => 
-  array (
-    'match' => '((0C1E|E022)) 0C3E',
-    'replace' => '\\1 E004',
-  ),
-  288 => 
-  array (
-    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) 0C56',
-    'replace' => '\\1 E00C',
-  ),
-  289 => 
-  array (
-    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) 0C56',
-    'replace' => '\\1 E00C',
-  ),
-  290 => 
-  array (
-    'match' => '(0C33) 0C41',
-    'replace' => '\\1 E005',
-  ),
-  291 => 
-  array (
-    'match' => '(0C33) 0C42',
-    'replace' => '\\1 E0DE',
-  ),
-  292 => 
-  array (
-    'match' => '((0C2A|0C2B|0C35)) 0C41',
-    'replace' => '\\1 E006',
-  ),
-  293 => 
-  array (
-    'match' => '((0C2A|0C2B|0C35)) 0C42',
-    'replace' => '\\1 E0DF',
-  ),
-  294 => 
-  array (
-    'match' => 'E046 (E07C 0C46 0C56)',
-    'replace' => 'E077 \\1',
-  ),
-  295 => 
-  array (
-    'match' => 'E046 ((0C15|E00D|0C16|0C17|E00E|0C18|E00F|0C19|0C1A|E010|0C1B|E011|0C1C|E012|0C1D|E013|0C1E|0C1F|0C20|E014|0C21|E015|0C22|E016|0C23|0C24|E017|0C25|E018|0C26|E019|0C27|E01A|0C28|E01B|0C2A|E01C|0C2B|E01D|0C2C|0C2D|E01E|0C2E|E01F|0C2F|E020|0C30|E021|0C32|0C33|E022|0C35|E023|0C36|E024|0C37|E025|0C38|E026|0C39|E027|E078|E07C|E079) 0C46 0C56)',
-    'replace' => 'E069 \\1',
-  ),
-  296 => 
-  array (
-    'match' => '0C4D',
-    'replace' => 'E0E0',
-  ),
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/no_image.jpg b/inc/3rdparty/libraries/mpdf/includes/no_image.jpg
deleted file mode 100644 (file)
index a690485..0000000
Binary files a/inc/3rdparty/libraries/mpdf/includes/no_image.jpg and /dev/null differ
diff --git a/inc/3rdparty/libraries/mpdf/includes/out.php b/inc/3rdparty/libraries/mpdf/includes/out.php
deleted file mode 100644 (file)
index 75da455..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-
-$path = '../tmp/';
-
-$tempfilename = $_REQUEST['filename'].'.pdf';
-if (strstr($tempfilename,'/') || strstr($tempfilename,'\\')) { die("Filename should not contain \ or / "); }
-$opname = $_REQUEST['opname'];
-$dest = $_REQUEST['dest'];
-       if ($tempfilename && file_exists($path.$tempfilename)) {
-               // mPDF 5.3.17
-               if ($dest=='I') {
-                       if(PHP_SAPI!='cli') {
-                               header('Content-Type: application/pdf');
-                               header('Content-disposition: inline; filename="'.$name.'"');
-                               header('Cache-Control: public, must-revalidate, max-age=0'); 
-                               header('Pragma: public');
-                               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
-                               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
-                       }
-               }
-
-               else if ($dest=='D') {
-                       header('Content-Description: File Transfer');
-                       if (headers_sent())
-                               $this->Error('Some data has already been output to browser, can\'t send PDF file');
-                       header('Content-Transfer-Encoding: binary');
-                       header('Cache-Control: public, must-revalidate, max-age=0');
-                       header('Pragma: public');
-                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
-                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
-                       header('Content-Type: application/force-download');
-                       header('Content-Type: application/octet-stream', false);
-                       header('Content-Type: application/download', false);
-                       header('Content-Type: application/pdf', false);
-                       header('Content-disposition: attachment; filename="'.$name.'"');
-               }
-               $filesize = filesize($path.$tempfilename);
-               if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
-                       // don't use length if server using compression
-                       header('Content-Length: '.$filesize);
-               }
-               $fd=fopen($path.$tempfilename,'rb');
-               fpassthru($fd);
-               fclose($fd);
-               unlink($path.$tempfilename);
-               // ====================== DELETE OLD FILES - Housekeeping =========================================
-               // Clear any files in directory that are >24 hrs old
-               $interval = 86400;
-               if ($handle = opendir(dirname($path.'dummy'))) {
-                  while (false !== ($file = readdir($handle))) { 
-                       if (((filemtime($path.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && substr($file, -3)=='pdf') { 
-                               unlink($path.$file); 
-                       }
-                  }
-                  closedir($handle); 
-               }
-               exit;
-       }
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/subs_core.php b/inc/3rdparty/libraries/mpdf/includes/subs_core.php
deleted file mode 100644 (file)
index 326a3f4..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-<?php
-$aarr = array(
-160 => 160, 
-161 => 161, 
-162 => 162, 
-163 => 163, 
-164 => 164, 
-165 => 165, 
-166 => 166, 
-167 => 167, 
-168 => 168, 
-169 => 169, 
-170 => 170, 
-171 => 171, 
-172 => 172, 
-173 => 173, 
-174 => 174, 
-175 => 175, 
-176 => 176, 
-177 => 177, 
-178 => 178, 
-179 => 179, 
-180 => 180, 
-181 => 181, 
-182 => 182, 
-183 => 183, 
-184 => 184, 
-185 => 185, 
-186 => 186, 
-187 => 187, 
-188 => 188, 
-189 => 189, 
-190 => 190, 
-191 => 191, 
-192 => 192, 
-193 => 193, 
-194 => 194, 
-195 => 195, 
-196 => 196, 
-197 => 197, 
-198 => 198, 
-199 => 199, 
-200 => 200, 
-201 => 201, 
-202 => 202, 
-203 => 203, 
-204 => 204, 
-205 => 205, 
-206 => 206, 
-207 => 207, 
-208 => 208, 
-209 => 209, 
-210 => 210, 
-211 => 211, 
-212 => 212, 
-213 => 213, 
-214 => 214, 
-215 => 215, 
-216 => 216, 
-217 => 217, 
-218 => 218, 
-219 => 219, 
-220 => 220, 
-221 => 221, 
-222 => 222, 
-223 => 223, 
-224 => 224, 
-225 => 225, 
-226 => 226, 
-227 => 227, 
-228 => 228, 
-229 => 229, 
-230 => 230, 
-231 => 231, 
-232 => 232, 
-233 => 233, 
-234 => 234, 
-235 => 235, 
-236 => 236, 
-237 => 237, 
-238 => 238, 
-239 => 239, 
-240 => 240, 
-241 => 241, 
-242 => 242, 
-243 => 243, 
-244 => 244, 
-245 => 245, 
-246 => 246, 
-247 => 247, 
-248 => 248, 
-249 => 249, 
-250 => 250, 
-251 => 251, 
-252 => 252, 
-253 => 253, 
-254 => 254, 
-255 => 255, 
-338 => 140, 
-339 => 156, 
-352 => 138, 
-353 => 154, 
-376 => 159, 
-381 => 142, 
-382 => 158, 
-402 => 131, 
-710 => 136, 
-732 => 152, 
-8211 => 150, 
-8212 => 151, 
-8216 => 145, 
-8217 => 146, 
-8218 => 130, 
-8220 => 147, 
-8221 => 148, 
-8222 => 132, 
-8224 => 134, 
-8225 => 135, 
-8226 => 149, 
-8230 => 133, 
-8240 => 137, 
-8249 => 139, 
-8250 => 155, 
-8364 => 128, 
-8482 => 153
-);
-
-$zarr = array(
-8594 => 213, 
-8596 => 214, 
-8597 => 215, 
-9312 => 172, 
-9313 => 173, 
-9314 => 174, 
-9315 => 175, 
-9316 => 176, 
-9317 => 177, 
-9318 => 178, 
-9319 => 179, 
-9320 => 180, 
-9321 => 181, 
-9632 => 110, 
-9650 => 115, 
-9660 => 116, 
-9670 => 117, 
-9679 => 108, 
-9687 => 119, 
-9733 => 72, 
-9742 => 37, 
-9755 => 42, 
-9758 => 43, 
-9824 => 171, 
-9827 => 168, 
-9829 => 170, 
-9830 => 169, 
-9985 => 33, 
-9986 => 34, 
-9987 => 35, 
-9988 => 36, 
-9990 => 38, 
-9991 => 39, 
-9992 => 40, 
-9993 => 41, 
-9996 => 44, 
-9997 => 45, 
-9998 => 46, 
-9999 => 47, 
-10000 => 48, 
-10001 => 49, 
-10002 => 50, 
-10003 => 51, 
-10004 => 52, 
-10005 => 53, 
-10006 => 54, 
-10007 => 55, 
-10008 => 56, 
-10009 => 57, 
-10010 => 58, 
-10011 => 59, 
-10012 => 60, 
-10013 => 61, 
-10014 => 62, 
-10015 => 63, 
-10016 => 64, 
-10017 => 65, 
-10018 => 66, 
-10019 => 67, 
-10020 => 68, 
-10021 => 69, 
-10022 => 70, 
-10023 => 71, 
-10025 => 73, 
-10026 => 74, 
-10027 => 75, 
-10028 => 76, 
-10029 => 77, 
-10030 => 78, 
-10031 => 79, 
-10032 => 80, 
-10033 => 81, 
-10034 => 82, 
-10035 => 83, 
-10036 => 84, 
-10037 => 85, 
-10038 => 86, 
-10039 => 87, 
-10040 => 88, 
-10041 => 89, 
-10042 => 90, 
-10043 => 91, 
-10044 => 92, 
-10045 => 93, 
-10046 => 94, 
-10047 => 95, 
-10048 => 96, 
-10049 => 97, 
-10050 => 98, 
-10051 => 99, 
-10052 => 100, 
-10053 => 101, 
-10054 => 102, 
-10055 => 103, 
-10056 => 104, 
-10057 => 105, 
-10058 => 106, 
-10059 => 107, 
-10061 => 109, 
-10063 => 111, 
-10064 => 112, 
-10065 => 113, 
-10066 => 114, 
-10070 => 118, 
-10072 => 120, 
-10073 => 121, 
-10074 => 122, 
-10075 => 123, 
-10076 => 124, 
-10077 => 125, 
-10078 => 126, 
-10081 => 161, 
-10082 => 162, 
-10083 => 163, 
-10084 => 164, 
-10085 => 165, 
-10086 => 166, 
-10087 => 167, 
-10102 => 182, 
-10103 => 183, 
-10104 => 184, 
-10105 => 185, 
-10106 => 186, 
-10107 => 187, 
-10108 => 188, 
-10109 => 189, 
-10110 => 190, 
-10111 => 191, 
-10112 => 192, 
-10113 => 193, 
-10114 => 194, 
-10115 => 195, 
-10116 => 196, 
-10117 => 197, 
-10118 => 198, 
-10119 => 199, 
-10120 => 200, 
-10121 => 201, 
-10122 => 202, 
-10123 => 203, 
-10124 => 204, 
-10125 => 205, 
-10126 => 206, 
-10127 => 207, 
-10128 => 208, 
-10129 => 209, 
-10130 => 210, 
-10131 => 211, 
-10132 => 212, 
-10136 => 216, 
-10137 => 217, 
-10138 => 218, 
-10139 => 219, 
-10140 => 220, 
-10141 => 221, 
-10142 => 222, 
-10143 => 223, 
-10144 => 224, 
-10145 => 225, 
-10146 => 226, 
-10147 => 227, 
-10148 => 228, 
-10149 => 229, 
-10150 => 230, 
-10151 => 231, 
-10152 => 232, 
-10153 => 233, 
-10154 => 234, 
-10155 => 235, 
-10156 => 236, 
-10157 => 237, 
-10158 => 238, 
-10159 => 239, 
-10161 => 241, 
-10162 => 242, 
-10163 => 243, 
-10164 => 244, 
-10165 => 245, 
-10166 => 246, 
-10167 => 247, 
-10168 => 248, 
-10169 => 249, 
-10170 => 250, 
-10171 => 251, 
-10172 => 252, 
-10173 => 253, 
-10174 => 254
-);
-
-$sarr = array(
-169 => 227, 
-172 => 216, 
-174 => 226, 
-176 => 176, 
-177 => 177, 
-181 => 109, 
-215 => 180, 
-247 => 184, 
-402 => 166, 
-913 => 65, 
-914 => 66, 
-915 => 71, 
-916 => 68, 
-917 => 69, 
-918 => 90, 
-919 => 72, 
-920 => 81, 
-921 => 73, 
-922 => 75, 
-923 => 76, 
-924 => 77, 
-925 => 78, 
-926 => 88, 
-927 => 79, 
-928 => 80, 
-929 => 82, 
-931 => 83, 
-932 => 84, 
-933 => 85, 
-934 => 70, 
-935 => 67, 
-936 => 89, 
-937 => 87, 
-945 => 97, 
-946 => 98, 
-947 => 103, 
-948 => 100, 
-949 => 101, 
-950 => 122, 
-951 => 104, 
-952 => 113, 
-953 => 105, 
-954 => 107, 
-955 => 108, 
-956 => 109, 
-957 => 110, 
-958 => 120, 
-959 => 111, 
-960 => 112, 
-961 => 114, 
-962 => 86, 
-963 => 115, 
-964 => 116, 
-965 => 117, 
-966 => 102, 
-967 => 99, 
-968 => 121, 
-969 => 119, 
-977 => 74, 
-978 => 161, 
-981 => 106, 
-982 => 118, 
-8226 => 183, 
-8230 => 188, 
-8242 => 162, 
-8243 => 178, 
-8260 => 164, 
-8465 => 193, 
-8472 => 195, 
-8476 => 194, 
-8482 => 228, 
-8486 => 87, 
-8501 => 192, 
-8592 => 172, 
-8593 => 173, 
-8594 => 174, 
-8595 => 175, 
-8596 => 171, 
-8629 => 191, 
-8656 => 220, 
-8657 => 221, 
-8658 => 222, 
-8659 => 223, 
-8660 => 219, 
-8704 => 34, 
-8706 => 182, 
-8707 => 36, 
-8709 => 198, 
-8710 => 68, 
-8711 => 209, 
-8712 => 206, 
-8713 => 207, 
-8715 => 39, 
-8719 => 213, 
-8721 => 229, 
-8722 => 45, 
-8725 => 164, 
-8727 => 42, 
-8730 => 214, 
-8733 => 181, 
-8734 => 165, 
-8736 => 208, 
-8743 => 217, 
-8744 => 218, 
-8745 => 199, 
-8746 => 200, 
-8747 => 242, 
-8756 => 92, 
-8764 => 126, 
-8773 => 64, 
-8776 => 187, 
-8800 => 185, 
-8801 => 186, 
-8804 => 163, 
-8805 => 179, 
-8834 => 204, 
-8835 => 201, 
-8836 => 203, 
-8838 => 205, 
-8839 => 202, 
-8853 => 197, 
-8855 => 196, 
-8869 => 94, 
-8901 => 215, 
-8992 => 243, 
-8993 => 245, 
-9001 => 225, 
-9002 => 241, 
-9674 => 224, 
-9824 => 170, 
-9827 => 167, 
-9829 => 169, 
-9830 => 168
-);
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php b/inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php
deleted file mode 100644 (file)
index 6658ff7..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-<?php
-
-$subsarray = array (
-  913 => '<tts>65</tts>',
-  914 => '<tts>66</tts>',
-  915 => '<tts>71</tts>',
-  916 => '<tts>68</tts>',
-  917 => '<tts>69</tts>',
-  918 => '<tts>90</tts>',
-  919 => '<tts>72</tts>',
-  920 => '<tts>81</tts>',
-  921 => '<tts>73</tts>',
-  922 => '<tts>75</tts>',
-  923 => '<tts>76</tts>',
-  924 => '<tts>77</tts>',
-  925 => '<tts>78</tts>',
-  926 => '<tts>88</tts>',
-  927 => '<tts>79</tts>',
-  928 => '<tts>80</tts>',
-  929 => '<tts>82</tts>',
-  931 => '<tts>83</tts>',
-  932 => '<tts>84</tts>',
-  933 => '<tts>85</tts>',
-  934 => '<tts>70</tts>',
-  935 => '<tts>67</tts>',
-  936 => '<tts>89</tts>',
-  937 => '<tts>87</tts>',
-  945 => '<tts>97</tts>',
-  946 => '<tts>98</tts>',
-  947 => '<tts>103</tts>',
-  948 => '<tts>100</tts>',
-  949 => '<tts>101</tts>',
-  950 => '<tts>122</tts>',
-  951 => '<tts>104</tts>',
-  952 => '<tts>113</tts>',
-  953 => '<tts>105</tts>',
-  954 => '<tts>107</tts>',
-  955 => '<tts>108</tts>',
-  956 => '<tts>109</tts>',
-  957 => '<tts>110</tts>',
-  958 => '<tts>120</tts>',
-  959 => '<tts>111</tts>',
-  960 => '<tts>112</tts>',
-  961 => '<tts>114</tts>',
-  962 => '<tts>86</tts>',
-  963 => '<tts>115</tts>',
-  964 => '<tts>116</tts>',
-  965 => '<tts>117</tts>',
-  966 => '<tts>102</tts>',
-  967 => '<tts>99</tts>',
-  968 => '<tts>121</tts>',
-  969 => '<tts>119</tts>',
-  977 => '<tts>74</tts>',
-  978 => '<tts>161</tts>',
-  981 => '<tts>106</tts>',
-  982 => '<tts>118</tts>',
-  8242 => '<tts>162</tts>',
-  8243 => '<tts>178</tts>',
-  8260 => '<tts>164</tts>',
-  8465 => '<tts>193</tts>',
-  8472 => '<tts>195</tts>',
-  8476 => '<tts>194</tts>',
-  8486 => '<tts>87</tts>',
-  8501 => '<tts>192</tts>',
-  8592 => '<tts>172</tts>',
-  8593 => '<tts>173</tts>',
-  8594 => '<tts>174</tts>',
-  8595 => '<tts>175</tts>',
-  8596 => '<tts>171</tts>',
-  8597 => '<ttz>215</ttz>',
-  8629 => '<tts>191</tts>',
-  8656 => '<tts>220</tts>',
-  8657 => '<tts>221</tts>',
-  8658 => '<tts>222</tts>',
-  8659 => '<tts>223</tts>',
-  8660 => '<tts>219</tts>',
-  8704 => '<tts>34</tts>',
-  8706 => '<tts>182</tts>',
-  8707 => '<tts>36</tts>',
-  8709 => '<tts>198</tts>',
-  8710 => '<tts>68</tts>',
-  8711 => '<tts>209</tts>',
-  8712 => '<tts>206</tts>',
-  8713 => '<tts>207</tts>',
-  8715 => '<tts>39</tts>',
-  8719 => '<tts>213</tts>',
-  8721 => '<tts>229</tts>',
-  8722 => '<tts>45</tts>',
-  8725 => '<tts>164</tts>',
-  8727 => '<tts>42</tts>',
-  8730 => '<tts>214</tts>',
-  8733 => '<tts>181</tts>',
-  8734 => '<tts>165</tts>',
-  8736 => '<tts>208</tts>',
-  8743 => '<tts>217</tts>',
-  8744 => '<tts>218</tts>',
-  8745 => '<tts>199</tts>',
-  8746 => '<tts>200</tts>',
-  8747 => '<tts>242</tts>',
-  8756 => '<tts>92</tts>',
-  8764 => '<tts>126</tts>',
-  8773 => '<tts>64</tts>',
-  8776 => '<tts>187</tts>',
-  8800 => '<tts>185</tts>',
-  8801 => '<tts>186</tts>',
-  8804 => '<tts>163</tts>',
-  8805 => '<tts>179</tts>',
-  8834 => '<tts>204</tts>',
-  8835 => '<tts>201</tts>',
-  8836 => '<tts>203</tts>',
-  8838 => '<tts>205</tts>',
-  8839 => '<tts>202</tts>',
-  8853 => '<tts>197</tts>',
-  8855 => '<tts>196</tts>',
-  8869 => '<tts>94</tts>',
-  8901 => '<tts>215</tts>',
-  8992 => '<tts>243</tts>',
-  8993 => '<tts>245</tts>',
-  9001 => '<tts>225</tts>',
-  9002 => '<tts>241</tts>',
-  9312 => '<ttz>172</ttz>',
-  9313 => '<ttz>173</ttz>',
-  9314 => '<ttz>174</ttz>',
-  9315 => '<ttz>175</ttz>',
-  9316 => '<ttz>176</ttz>',
-  9317 => '<ttz>177</ttz>',
-  9318 => '<ttz>178</ttz>',
-  9319 => '<ttz>179</ttz>',
-  9320 => '<ttz>180</ttz>',
-  9321 => '<ttz>181</ttz>',
-  9632 => '<ttz>110</ttz>',
-  9650 => '<ttz>115</ttz>',
-  9660 => '<ttz>116</ttz>',
-  9670 => '<ttz>117</ttz>',
-  9674 => '<tts>224</tts>',
-  9679 => '<ttz>108</ttz>',
-  9687 => '<ttz>119</ttz>',
-  9733 => '<ttz>72</ttz>',
-  9742 => '<ttz>37</ttz>',
-  9755 => '<ttz>42</ttz>',
-  9758 => '<ttz>43</ttz>',
-  9824 => '<tts>170</tts>',
-  9827 => '<tts>167</tts>',
-  9829 => '<tts>169</tts>',
-  9830 => '<tts>168</tts>',
-  9985 => '<ttz>33</ttz>',
-  9986 => '<ttz>34</ttz>',
-  9987 => '<ttz>35</ttz>',
-  9988 => '<ttz>36</ttz>',
-  9990 => '<ttz>38</ttz>',
-  9991 => '<ttz>39</ttz>',
-  9992 => '<ttz>40</ttz>',
-  9993 => '<ttz>41</ttz>',
-  9996 => '<ttz>44</ttz>',
-  9997 => '<ttz>45</ttz>',
-  9998 => '<ttz>46</ttz>',
-  9999 => '<ttz>47</ttz>',
-  10000 => '<ttz>48</ttz>',
-  10001 => '<ttz>49</ttz>',
-  10002 => '<ttz>50</ttz>',
-  10003 => '<ttz>51</ttz>',
-  10004 => '<ttz>52</ttz>',
-  10005 => '<ttz>53</ttz>',
-  10006 => '<ttz>54</ttz>',
-  10007 => '<ttz>55</ttz>',
-  10008 => '<ttz>56</ttz>',
-  10009 => '<ttz>57</ttz>',
-  10010 => '<ttz>58</ttz>',
-  10011 => '<ttz>59</ttz>',
-  10012 => '<ttz>60</ttz>',
-  10013 => '<ttz>61</ttz>',
-  10014 => '<ttz>62</ttz>',
-  10015 => '<ttz>63</ttz>',
-  10016 => '<ttz>64</ttz>',
-  10017 => '<ttz>65</ttz>',
-  10018 => '<ttz>66</ttz>',
-  10019 => '<ttz>67</ttz>',
-  10020 => '<ttz>68</ttz>',
-  10021 => '<ttz>69</ttz>',
-  10022 => '<ttz>70</ttz>',
-  10023 => '<ttz>71</ttz>',
-  10025 => '<ttz>73</ttz>',
-  10026 => '<ttz>74</ttz>',
-  10027 => '<ttz>75</ttz>',
-  10028 => '<ttz>76</ttz>',
-  10029 => '<ttz>77</ttz>',
-  10030 => '<ttz>78</ttz>',
-  10031 => '<ttz>79</ttz>',
-  10032 => '<ttz>80</ttz>',
-  10033 => '<ttz>81</ttz>',
-  10034 => '<ttz>82</ttz>',
-  10035 => '<ttz>83</ttz>',
-  10036 => '<ttz>84</ttz>',
-  10037 => '<ttz>85</ttz>',
-  10038 => '<ttz>86</ttz>',
-  10039 => '<ttz>87</ttz>',
-  10040 => '<ttz>88</ttz>',
-  10041 => '<ttz>89</ttz>',
-  10042 => '<ttz>90</ttz>',
-  10043 => '<ttz>91</ttz>',
-  10044 => '<ttz>92</ttz>',
-  10045 => '<ttz>93</ttz>',
-  10046 => '<ttz>94</ttz>',
-  10047 => '<ttz>95</ttz>',
-  10048 => '<ttz>96</ttz>',
-  10049 => '<ttz>97</ttz>',
-  10050 => '<ttz>98</ttz>',
-  10051 => '<ttz>99</ttz>',
-  10052 => '<ttz>100</ttz>',
-  10053 => '<ttz>101</ttz>',
-  10054 => '<ttz>102</ttz>',
-  10055 => '<ttz>103</ttz>',
-  10056 => '<ttz>104</ttz>',
-  10057 => '<ttz>105</ttz>',
-  10058 => '<ttz>106</ttz>',
-  10059 => '<ttz>107</ttz>',
-  10061 => '<ttz>109</ttz>',
-  10063 => '<ttz>111</ttz>',
-  10064 => '<ttz>112</ttz>',
-  10065 => '<ttz>113</ttz>',
-  10066 => '<ttz>114</ttz>',
-  10070 => '<ttz>118</ttz>',
-  10072 => '<ttz>120</ttz>',
-  10073 => '<ttz>121</ttz>',
-  10074 => '<ttz>122</ttz>',
-  10075 => '<ttz>123</ttz>',
-  10076 => '<ttz>124</ttz>',
-  10077 => '<ttz>125</ttz>',
-  10078 => '<ttz>126</ttz>',
-  10081 => '<ttz>161</ttz>',
-  10082 => '<ttz>162</ttz>',
-  10083 => '<ttz>163</ttz>',
-  10084 => '<ttz>164</ttz>',
-  10085 => '<ttz>165</ttz>',
-  10086 => '<ttz>166</ttz>',
-  10087 => '<ttz>167</ttz>',
-  10102 => '<ttz>182</ttz>',
-  10103 => '<ttz>183</ttz>',
-  10104 => '<ttz>184</ttz>',
-  10105 => '<ttz>185</ttz>',
-  10106 => '<ttz>186</ttz>',
-  10107 => '<ttz>187</ttz>',
-  10108 => '<ttz>188</ttz>',
-  10109 => '<ttz>189</ttz>',
-  10110 => '<ttz>190</ttz>',
-  10111 => '<ttz>191</ttz>',
-  10112 => '<ttz>192</ttz>',
-  10113 => '<ttz>193</ttz>',
-  10114 => '<ttz>194</ttz>',
-  10115 => '<ttz>195</ttz>',
-  10116 => '<ttz>196</ttz>',
-  10117 => '<ttz>197</ttz>',
-  10118 => '<ttz>198</ttz>',
-  10119 => '<ttz>199</ttz>',
-  10120 => '<ttz>200</ttz>',
-  10121 => '<ttz>201</ttz>',
-  10122 => '<ttz>202</ttz>',
-  10123 => '<ttz>203</ttz>',
-  10124 => '<ttz>204</ttz>',
-  10125 => '<ttz>205</ttz>',
-  10126 => '<ttz>206</ttz>',
-  10127 => '<ttz>207</ttz>',
-  10128 => '<ttz>208</ttz>',
-  10129 => '<ttz>209</ttz>',
-  10130 => '<ttz>210</ttz>',
-  10131 => '<ttz>211</ttz>',
-  10132 => '<ttz>212</ttz>',
-  10136 => '<ttz>216</ttz>',
-  10137 => '<ttz>217</ttz>',
-  10138 => '<ttz>218</ttz>',
-  10139 => '<ttz>219</ttz>',
-  10140 => '<ttz>220</ttz>',
-  10141 => '<ttz>221</ttz>',
-  10142 => '<ttz>222</ttz>',
-  10143 => '<ttz>223</ttz>',
-  10144 => '<ttz>224</ttz>',
-  10145 => '<ttz>225</ttz>',
-  10146 => '<ttz>226</ttz>',
-  10147 => '<ttz>227</ttz>',
-  10148 => '<ttz>228</ttz>',
-  10149 => '<ttz>229</ttz>',
-  10150 => '<ttz>230</ttz>',
-  10151 => '<ttz>231</ttz>',
-  10152 => '<ttz>232</ttz>',
-  10153 => '<ttz>233</ttz>',
-  10154 => '<ttz>234</ttz>',
-  10155 => '<ttz>235</ttz>',
-  10156 => '<ttz>236</ttz>',
-  10157 => '<ttz>237</ttz>',
-  10158 => '<ttz>238</ttz>',
-  10159 => '<ttz>239</ttz>',
-  10161 => '<ttz>241</ttz>',
-  10162 => '<ttz>242</ttz>',
-  10163 => '<ttz>243</ttz>',
-  10164 => '<ttz>244</ttz>',
-  10165 => '<ttz>245</ttz>',
-  10166 => '<ttz>246</ttz>',
-  10167 => '<ttz>247</ttz>',
-  10168 => '<ttz>248</ttz>',
-  10169 => '<ttz>249</ttz>',
-  10170 => '<ttz>250</ttz>',
-  10171 => '<ttz>251</ttz>',
-  10172 => '<ttz>252</ttz>',
-  10173 => '<ttz>253</ttz>',
-  10174 => '<ttz>254</ttz>',
-);
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/upperCase.php b/inc/3rdparty/libraries/mpdf/includes/upperCase.php
deleted file mode 100644 (file)
index 020f426..0000000
+++ /dev/null
@@ -1,975 +0,0 @@
-<?php
-$this->upperCase=array (
-  97 => 65,
-  98 => 66,
-  99 => 67,
-  100 => 68,
-  101 => 69,
-  102 => 70,
-  103 => 71,
-  104 => 72,
-  105 => 73,
-  106 => 74,
-  107 => 75,
-  108 => 76,
-  109 => 77,
-  110 => 78,
-  111 => 79,
-  112 => 80,
-  113 => 81,
-  114 => 82,
-  115 => 83,
-  116 => 84,
-  117 => 85,
-  118 => 86,
-  119 => 87,
-  120 => 88,
-  121 => 89,
-  122 => 90,
-  181 => 924,
-  224 => 192,
-  225 => 193,
-  226 => 194,
-  227 => 195,
-  228 => 196,
-  229 => 197,
-  230 => 198,
-  231 => 199,
-  232 => 200,
-  233 => 201,
-  234 => 202,
-  235 => 203,
-  236 => 204,
-  237 => 205,
-  238 => 206,
-  239 => 207,
-  240 => 208,
-  241 => 209,
-  242 => 210,
-  243 => 211,
-  244 => 212,
-  245 => 213,
-  246 => 214,
-  248 => 216,
-  249 => 217,
-  250 => 218,
-  251 => 219,
-  252 => 220,
-  253 => 221,
-  254 => 222,
-  255 => 376,
-  257 => 256,
-  259 => 258,
-  261 => 260,
-  263 => 262,
-  265 => 264,
-  267 => 266,
-  269 => 268,
-  271 => 270,
-  273 => 272,
-  275 => 274,
-  277 => 276,
-  279 => 278,
-  281 => 280,
-  283 => 282,
-  285 => 284,
-  287 => 286,
-  289 => 288,
-  291 => 290,
-  293 => 292,
-  295 => 294,
-  297 => 296,
-  299 => 298,
-  301 => 300,
-  303 => 302,
-  305 => 73,
-  307 => 306,
-  309 => 308,
-  311 => 310,
-  314 => 313,
-  316 => 315,
-  318 => 317,
-  320 => 319,
-  322 => 321,
-  324 => 323,
-  326 => 325,
-  328 => 327,
-  331 => 330,
-  333 => 332,
-  335 => 334,
-  337 => 336,
-  339 => 338,
-  341 => 340,
-  343 => 342,
-  345 => 344,
-  347 => 346,
-  349 => 348,
-  351 => 350,
-  353 => 352,
-  355 => 354,
-  357 => 356,
-  359 => 358,
-  361 => 360,
-  363 => 362,
-  365 => 364,
-  367 => 366,
-  369 => 368,
-  371 => 370,
-  373 => 372,
-  375 => 374,
-  378 => 377,
-  380 => 379,
-  382 => 381,
-  383 => 83,
-  384 => 579,
-  387 => 386,
-  389 => 388,
-  392 => 391,
-  396 => 395,
-  402 => 401,
-  405 => 502,
-  409 => 408,
-  410 => 573,
-  414 => 544,
-  417 => 416,
-  419 => 418,
-  421 => 420,
-  424 => 423,
-  429 => 428,
-  432 => 431,
-  436 => 435,
-  438 => 437,
-  441 => 440,
-  445 => 444,
-  447 => 503,
-  453 => 452,
-  454 => 452,
-  456 => 455,
-  457 => 455,
-  459 => 458,
-  460 => 458,
-  462 => 461,
-  464 => 463,
-  466 => 465,
-  468 => 467,
-  470 => 469,
-  472 => 471,
-  474 => 473,
-  476 => 475,
-  477 => 398,
-  479 => 478,
-  481 => 480,
-  483 => 482,
-  485 => 484,
-  487 => 486,
-  489 => 488,
-  491 => 490,
-  493 => 492,
-  495 => 494,
-  498 => 497,
-  499 => 497,
-  501 => 500,
-  505 => 504,
-  507 => 506,
-  509 => 508,
-  511 => 510,
-  513 => 512,
-  515 => 514,
-  517 => 516,
-  519 => 518,
-  521 => 520,
-  523 => 522,
-  525 => 524,
-  527 => 526,
-  529 => 528,
-  531 => 530,
-  533 => 532,
-  535 => 534,
-  537 => 536,
-  539 => 538,
-  541 => 540,
-  543 => 542,
-  547 => 546,
-  549 => 548,
-  551 => 550,
-  553 => 552,
-  555 => 554,
-  557 => 556,
-  559 => 558,
-  561 => 560,
-  563 => 562,
-  572 => 571,
-  575 => 11390,
-  576 => 11391,
-  578 => 577,
-  583 => 582,
-  585 => 584,
-  587 => 586,
-  589 => 588,
-  591 => 590,
-  592 => 11375,
-  593 => 11373,
-  594 => 11376,
-  595 => 385,
-  596 => 390,
-  598 => 393,
-  599 => 394,
-  601 => 399,
-  603 => 400,
-  608 => 403,
-  611 => 404,
-  616 => 407,
-  617 => 406,
-  619 => 11362,
-  623 => 412,
-  625 => 11374,
-  626 => 413,
-  629 => 415,
-  637 => 11364,
-  640 => 422,
-  643 => 425,
-  648 => 430,
-  649 => 580,
-  650 => 433,
-  651 => 434,
-  652 => 581,
-  658 => 439,
-  837 => 921,
-  881 => 880,
-  883 => 882,
-  887 => 886,
-  891 => 1021,
-  892 => 1022,
-  893 => 1023,
-  940 => 902,
-  941 => 904,
-  942 => 905,
-  943 => 906,
-  945 => 913,
-  946 => 914,
-  947 => 915,
-  948 => 916,
-  949 => 917,
-  950 => 918,
-  951 => 919,
-  952 => 920,
-  953 => 921,
-  954 => 922,
-  955 => 923,
-  956 => 924,
-  957 => 925,
-  958 => 926,
-  959 => 927,
-  960 => 928,
-  961 => 929,
-  962 => 931,
-  963 => 931,
-  964 => 932,
-  965 => 933,
-  966 => 934,
-  967 => 935,
-  968 => 936,
-  969 => 937,
-  970 => 938,
-  971 => 939,
-  972 => 908,
-  973 => 910,
-  974 => 911,
-  976 => 914,
-  977 => 920,
-  981 => 934,
-  982 => 928,
-  983 => 975,
-  985 => 984,
-  987 => 986,
-  989 => 988,
-  991 => 990,
-  993 => 992,
-  995 => 994,
-  997 => 996,
-  999 => 998,
-  1001 => 1000,
-  1003 => 1002,
-  1005 => 1004,
-  1007 => 1006,
-  1008 => 922,
-  1009 => 929,
-  1010 => 1017,
-  1013 => 917,
-  1016 => 1015,
-  1019 => 1018,
-  1072 => 1040,
-  1073 => 1041,
-  1074 => 1042,
-  1075 => 1043,
-  1076 => 1044,
-  1077 => 1045,
-  1078 => 1046,
-  1079 => 1047,
-  1080 => 1048,
-  1081 => 1049,
-  1082 => 1050,
-  1083 => 1051,
-  1084 => 1052,
-  1085 => 1053,
-  1086 => 1054,
-  1087 => 1055,
-  1088 => 1056,
-  1089 => 1057,
-  1090 => 1058,
-  1091 => 1059,
-  1092 => 1060,
-  1093 => 1061,
-  1094 => 1062,
-  1095 => 1063,
-  1096 => 1064,
-  1097 => 1065,
-  1098 => 1066,
-  1099 => 1067,
-  1100 => 1068,
-  1101 => 1069,
-  1102 => 1070,
-  1103 => 1071,
-  1104 => 1024,
-  1105 => 1025,
-  1106 => 1026,
-  1107 => 1027,
-  1108 => 1028,
-  1109 => 1029,
-  1110 => 1030,
-  1111 => 1031,
-  1112 => 1032,
-  1113 => 1033,
-  1114 => 1034,
-  1115 => 1035,
-  1116 => 1036,
-  1117 => 1037,
-  1118 => 1038,
-  1119 => 1039,
-  1121 => 1120,
-  1123 => 1122,
-  1125 => 1124,
-  1127 => 1126,
-  1129 => 1128,
-  1131 => 1130,
-  1133 => 1132,
-  1135 => 1134,
-  1137 => 1136,
-  1139 => 1138,
-  1141 => 1140,
-  1143 => 1142,
-  1145 => 1144,
-  1147 => 1146,
-  1149 => 1148,
-  1151 => 1150,
-  1153 => 1152,
-  1163 => 1162,
-  1165 => 1164,
-  1167 => 1166,
-  1169 => 1168,
-  1171 => 1170,
-  1173 => 1172,
-  1175 => 1174,
-  1177 => 1176,
-  1179 => 1178,
-  1181 => 1180,
-  1183 => 1182,
-  1185 => 1184,
-  1187 => 1186,
-  1189 => 1188,
-  1191 => 1190,
-  1193 => 1192,
-  1195 => 1194,
-  1197 => 1196,
-  1199 => 1198,
-  1201 => 1200,
-  1203 => 1202,
-  1205 => 1204,
-  1207 => 1206,
-  1209 => 1208,
-  1211 => 1210,
-  1213 => 1212,
-  1215 => 1214,
-  1218 => 1217,
-  1220 => 1219,
-  1222 => 1221,
-  1224 => 1223,
-  1226 => 1225,
-  1228 => 1227,
-  1230 => 1229,
-  1231 => 1216,
-  1233 => 1232,
-  1235 => 1234,
-  1237 => 1236,
-  1239 => 1238,
-  1241 => 1240,
-  1243 => 1242,
-  1245 => 1244,
-  1247 => 1246,
-  1249 => 1248,
-  1251 => 1250,
-  1253 => 1252,
-  1255 => 1254,
-  1257 => 1256,
-  1259 => 1258,
-  1261 => 1260,
-  1263 => 1262,
-  1265 => 1264,
-  1267 => 1266,
-  1269 => 1268,
-  1271 => 1270,
-  1273 => 1272,
-  1275 => 1274,
-  1277 => 1276,
-  1279 => 1278,
-  1281 => 1280,
-  1283 => 1282,
-  1285 => 1284,
-  1287 => 1286,
-  1289 => 1288,
-  1291 => 1290,
-  1293 => 1292,
-  1295 => 1294,
-  1297 => 1296,
-  1299 => 1298,
-  1301 => 1300,
-  1303 => 1302,
-  1305 => 1304,
-  1307 => 1306,
-  1309 => 1308,
-  1311 => 1310,
-  1313 => 1312,
-  1315 => 1314,
-  1317 => 1316,
-  1377 => 1329,
-  1378 => 1330,
-  1379 => 1331,
-  1380 => 1332,
-  1381 => 1333,
-  1382 => 1334,
-  1383 => 1335,
-  1384 => 1336,
-  1385 => 1337,
-  1386 => 1338,
-  1387 => 1339,
-  1388 => 1340,
-  1389 => 1341,
-  1390 => 1342,
-  1391 => 1343,
-  1392 => 1344,
-  1393 => 1345,
-  1394 => 1346,
-  1395 => 1347,
-  1396 => 1348,
-  1397 => 1349,
-  1398 => 1350,
-  1399 => 1351,
-  1400 => 1352,
-  1401 => 1353,
-  1402 => 1354,
-  1403 => 1355,
-  1404 => 1356,
-  1405 => 1357,
-  1406 => 1358,
-  1407 => 1359,
-  1408 => 1360,
-  1409 => 1361,
-  1410 => 1362,
-  1411 => 1363,
-  1412 => 1364,
-  1413 => 1365,
-  1414 => 1366,
-  7545 => 42877,
-  7549 => 11363,
-  7681 => 7680,
-  7683 => 7682,
-  7685 => 7684,
-  7687 => 7686,
-  7689 => 7688,
-  7691 => 7690,
-  7693 => 7692,
-  7695 => 7694,
-  7697 => 7696,
-  7699 => 7698,
-  7701 => 7700,
-  7703 => 7702,
-  7705 => 7704,
-  7707 => 7706,
-  7709 => 7708,
-  7711 => 7710,
-  7713 => 7712,
-  7715 => 7714,
-  7717 => 7716,
-  7719 => 7718,
-  7721 => 7720,
-  7723 => 7722,
-  7725 => 7724,
-  7727 => 7726,
-  7729 => 7728,
-  7731 => 7730,
-  7733 => 7732,
-  7735 => 7734,
-  7737 => 7736,
-  7739 => 7738,
-  7741 => 7740,
-  7743 => 7742,
-  7745 => 7744,
-  7747 => 7746,
-  7749 => 7748,
-  7751 => 7750,
-  7753 => 7752,
-  7755 => 7754,
-  7757 => 7756,
-  7759 => 7758,
-  7761 => 7760,
-  7763 => 7762,
-  7765 => 7764,
-  7767 => 7766,
-  7769 => 7768,
-  7771 => 7770,
-  7773 => 7772,
-  7775 => 7774,
-  7777 => 7776,
-  7779 => 7778,
-  7781 => 7780,
-  7783 => 7782,
-  7785 => 7784,
-  7787 => 7786,
-  7789 => 7788,
-  7791 => 7790,
-  7793 => 7792,
-  7795 => 7794,
-  7797 => 7796,
-  7799 => 7798,
-  7801 => 7800,
-  7803 => 7802,
-  7805 => 7804,
-  7807 => 7806,
-  7809 => 7808,
-  7811 => 7810,
-  7813 => 7812,
-  7815 => 7814,
-  7817 => 7816,
-  7819 => 7818,
-  7821 => 7820,
-  7823 => 7822,
-  7825 => 7824,
-  7827 => 7826,
-  7829 => 7828,
-  7835 => 7776,
-  7841 => 7840,
-  7843 => 7842,
-  7845 => 7844,
-  7847 => 7846,
-  7849 => 7848,
-  7851 => 7850,
-  7853 => 7852,
-  7855 => 7854,
-  7857 => 7856,
-  7859 => 7858,
-  7861 => 7860,
-  7863 => 7862,
-  7865 => 7864,
-  7867 => 7866,
-  7869 => 7868,
-  7871 => 7870,
-  7873 => 7872,
-  7875 => 7874,
-  7877 => 7876,
-  7879 => 7878,
-  7881 => 7880,
-  7883 => 7882,
-  7885 => 7884,
-  7887 => 7886,
-  7889 => 7888,
-  7891 => 7890,
-  7893 => 7892,
-  7895 => 7894,
-  7897 => 7896,
-  7899 => 7898,
-  7901 => 7900,
-  7903 => 7902,
-  7905 => 7904,
-  7907 => 7906,
-  7909 => 7908,
-  7911 => 7910,
-  7913 => 7912,
-  7915 => 7914,
-  7917 => 7916,
-  7919 => 7918,
-  7921 => 7920,
-  7923 => 7922,
-  7925 => 7924,
-  7927 => 7926,
-  7929 => 7928,
-  7931 => 7930,
-  7933 => 7932,
-  7935 => 7934,
-  7936 => 7944,
-  7937 => 7945,
-  7938 => 7946,
-  7939 => 7947,
-  7940 => 7948,
-  7941 => 7949,
-  7942 => 7950,
-  7943 => 7951,
-  7952 => 7960,
-  7953 => 7961,
-  7954 => 7962,
-  7955 => 7963,
-  7956 => 7964,
-  7957 => 7965,
-  7968 => 7976,
-  7969 => 7977,
-  7970 => 7978,
-  7971 => 7979,
-  7972 => 7980,
-  7973 => 7981,
-  7974 => 7982,
-  7975 => 7983,
-  7984 => 7992,
-  7985 => 7993,
-  7986 => 7994,
-  7987 => 7995,
-  7988 => 7996,
-  7989 => 7997,
-  7990 => 7998,
-  7991 => 7999,
-  8000 => 8008,
-  8001 => 8009,
-  8002 => 8010,
-  8003 => 8011,
-  8004 => 8012,
-  8005 => 8013,
-  8017 => 8025,
-  8019 => 8027,
-  8021 => 8029,
-  8023 => 8031,
-  8032 => 8040,
-  8033 => 8041,
-  8034 => 8042,
-  8035 => 8043,
-  8036 => 8044,
-  8037 => 8045,
-  8038 => 8046,
-  8039 => 8047,
-  8048 => 8122,
-  8049 => 8123,
-  8050 => 8136,
-  8051 => 8137,
-  8052 => 8138,
-  8053 => 8139,
-  8054 => 8154,
-  8055 => 8155,
-  8056 => 8184,
-  8057 => 8185,
-  8058 => 8170,
-  8059 => 8171,
-  8060 => 8186,
-  8061 => 8187,
-  8064 => 8072,
-  8065 => 8073,
-  8066 => 8074,
-  8067 => 8075,
-  8068 => 8076,
-  8069 => 8077,
-  8070 => 8078,
-  8071 => 8079,
-  8080 => 8088,
-  8081 => 8089,
-  8082 => 8090,
-  8083 => 8091,
-  8084 => 8092,
-  8085 => 8093,
-  8086 => 8094,
-  8087 => 8095,
-  8096 => 8104,
-  8097 => 8105,
-  8098 => 8106,
-  8099 => 8107,
-  8100 => 8108,
-  8101 => 8109,
-  8102 => 8110,
-  8103 => 8111,
-  8112 => 8120,
-  8113 => 8121,
-  8115 => 8124,
-  8126 => 921,
-  8131 => 8140,
-  8144 => 8152,
-  8145 => 8153,
-  8160 => 8168,
-  8161 => 8169,
-  8165 => 8172,
-  8179 => 8188,
-  8526 => 8498,
-  8560 => 8544,
-  8561 => 8545,
-  8562 => 8546,
-  8563 => 8547,
-  8564 => 8548,
-  8565 => 8549,
-  8566 => 8550,
-  8567 => 8551,
-  8568 => 8552,
-  8569 => 8553,
-  8570 => 8554,
-  8571 => 8555,
-  8572 => 8556,
-  8573 => 8557,
-  8574 => 8558,
-  8575 => 8559,
-  8580 => 8579,
-  9424 => 9398,
-  9425 => 9399,
-  9426 => 9400,
-  9427 => 9401,
-  9428 => 9402,
-  9429 => 9403,
-  9430 => 9404,
-  9431 => 9405,
-  9432 => 9406,
-  9433 => 9407,
-  9434 => 9408,
-  9435 => 9409,
-  9436 => 9410,
-  9437 => 9411,
-  9438 => 9412,
-  9439 => 9413,
-  9440 => 9414,
-  9441 => 9415,
-  9442 => 9416,
-  9443 => 9417,
-  9444 => 9418,
-  9445 => 9419,
-  9446 => 9420,
-  9447 => 9421,
-  9448 => 9422,
-  9449 => 9423,
-  11312 => 11264,
-  11313 => 11265,
-  11314 => 11266,
-  11315 => 11267,
-  11316 => 11268,
-  11317 => 11269,
-  11318 => 11270,
-  11319 => 11271,
-  11320 => 11272,
-  11321 => 11273,
-  11322 => 11274,
-  11323 => 11275,
-  11324 => 11276,
-  11325 => 11277,
-  11326 => 11278,
-  11327 => 11279,
-  11328 => 11280,
-  11329 => 11281,
-  11330 => 11282,
-  11331 => 11283,
-  11332 => 11284,
-  11333 => 11285,
-  11334 => 11286,
-  11335 => 11287,
-  11336 => 11288,
-  11337 => 11289,
-  11338 => 11290,
-  11339 => 11291,
-  11340 => 11292,
-  11341 => 11293,
-  11342 => 11294,
-  11343 => 11295,
-  11344 => 11296,
-  11345 => 11297,
-  11346 => 11298,
-  11347 => 11299,
-  11348 => 11300,
-  11349 => 11301,
-  11350 => 11302,
-  11351 => 11303,
-  11352 => 11304,
-  11353 => 11305,
-  11354 => 11306,
-  11355 => 11307,
-  11356 => 11308,
-  11357 => 11309,
-  11358 => 11310,
-  11361 => 11360,
-  11365 => 570,
-  11366 => 574,
-  11368 => 11367,
-  11370 => 11369,
-  11372 => 11371,
-  11379 => 11378,
-  11382 => 11381,
-  11393 => 11392,
-  11395 => 11394,
-  11397 => 11396,
-  11399 => 11398,
-  11401 => 11400,
-  11403 => 11402,
-  11405 => 11404,
-  11407 => 11406,
-  11409 => 11408,
-  11411 => 11410,
-  11413 => 11412,
-  11415 => 11414,
-  11417 => 11416,
-  11419 => 11418,
-  11421 => 11420,
-  11423 => 11422,
-  11425 => 11424,
-  11427 => 11426,
-  11429 => 11428,
-  11431 => 11430,
-  11433 => 11432,
-  11435 => 11434,
-  11437 => 11436,
-  11439 => 11438,
-  11441 => 11440,
-  11443 => 11442,
-  11445 => 11444,
-  11447 => 11446,
-  11449 => 11448,
-  11451 => 11450,
-  11453 => 11452,
-  11455 => 11454,
-  11457 => 11456,
-  11459 => 11458,
-  11461 => 11460,
-  11463 => 11462,
-  11465 => 11464,
-  11467 => 11466,
-  11469 => 11468,
-  11471 => 11470,
-  11473 => 11472,
-  11475 => 11474,
-  11477 => 11476,
-  11479 => 11478,
-  11481 => 11480,
-  11483 => 11482,
-  11485 => 11484,
-  11487 => 11486,
-  11489 => 11488,
-  11491 => 11490,
-  11500 => 11499,
-  11502 => 11501,
-  11520 => 4256,
-  11521 => 4257,
-  11522 => 4258,
-  11523 => 4259,
-  11524 => 4260,
-  11525 => 4261,
-  11526 => 4262,
-  11527 => 4263,
-  11528 => 4264,
-  11529 => 4265,
-  11530 => 4266,
-  11531 => 4267,
-  11532 => 4268,
-  11533 => 4269,
-  11534 => 4270,
-  11535 => 4271,
-  11536 => 4272,
-  11537 => 4273,
-  11538 => 4274,
-  11539 => 4275,
-  11540 => 4276,
-  11541 => 4277,
-  11542 => 4278,
-  11543 => 4279,
-  11544 => 4280,
-  11545 => 4281,
-  11546 => 4282,
-  11547 => 4283,
-  11548 => 4284,
-  11549 => 4285,
-  11550 => 4286,
-  11551 => 4287,
-  11552 => 4288,
-  11553 => 4289,
-  11554 => 4290,
-  11555 => 4291,
-  11556 => 4292,
-  11557 => 4293,
-  42561 => 42560,
-  42563 => 42562,
-  42565 => 42564,
-  42567 => 42566,
-  42569 => 42568,
-  42571 => 42570,
-  42573 => 42572,
-  42575 => 42574,
-  42577 => 42576,
-  42579 => 42578,
-  42581 => 42580,
-  42583 => 42582,
-  42585 => 42584,
-  42587 => 42586,
-  42589 => 42588,
-  42591 => 42590,
-  42595 => 42594,
-  42597 => 42596,
-  42599 => 42598,
-  42601 => 42600,
-  42603 => 42602,
-  42605 => 42604,
-  42625 => 42624,
-  42627 => 42626,
-  42629 => 42628,
-  42631 => 42630,
-  42633 => 42632,
-  42635 => 42634,
-  42637 => 42636,
-  42639 => 42638,
-  42641 => 42640,
-  42643 => 42642,
-  42645 => 42644,
-  42647 => 42646,
-  42787 => 42786,
-  42789 => 42788,
-  42791 => 42790,
-  42793 => 42792,
-  42795 => 42794,
-  42797 => 42796,
-  42799 => 42798,
-  42803 => 42802,
-  42805 => 42804,
-  42807 => 42806,
-  42809 => 42808,
-  42811 => 42810,
-  42813 => 42812,
-  42815 => 42814,
-  42817 => 42816,
-  42819 => 42818,
-  42821 => 42820,
-  42823 => 42822,
-  42825 => 42824,
-  42827 => 42826,
-  42829 => 42828,
-  42831 => 42830,
-  42833 => 42832,
-  42835 => 42834,
-  42837 => 42836,
-  42839 => 42838,
-  42841 => 42840,
-  42843 => 42842,
-  42845 => 42844,
-  42847 => 42846,
-  42849 => 42848,
-  42851 => 42850,
-  42853 => 42852,
-  42855 => 42854,
-  42857 => 42856,
-  42859 => 42858,
-  42861 => 42860,
-  42863 => 42862,
-  42874 => 42873,
-  42876 => 42875,
-  42879 => 42878,
-  42881 => 42880,
-  42883 => 42882,
-  42885 => 42884,
-  42887 => 42886,
-  42892 => 42891,
-);
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdf.css b/inc/3rdparty/libraries/mpdf/mpdf.css
deleted file mode 100644 (file)
index b46d0d6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-   This is a secondary default stylesheet for mPDF
-   It will only parse element-level CSS here 
-   Remove the comment marks below and edit as required
-*/
-
-
-
-/* 
-   These values used to be the default prior to mPDF 4.2
-   Altered to make appearance closer to that of browsers
-   Uncomment these lines to return to behaviour prior to v4.2  
-*/
-
-
-/*
-img { margin: 0.83em 0; vertical-align: bottom; }
-table { margin: 0.5em; }
-textarea { vertical-align: top; }
-*/
diff --git a/inc/3rdparty/libraries/mpdf/mpdf.php b/inc/3rdparty/libraries/mpdf/mpdf.php
deleted file mode 100644 (file)
index fd4f57b..0000000
+++ /dev/null
@@ -1,32805 +0,0 @@
-<?php
-
-// ******************************************************************************
-// Software: mPDF, Unicode-HTML Free PDF generator                              *
-// Version:  5.7.2     based on                                                   *
-//           FPDF by Olivier PLATHEY                                            *
-//           HTML2FPDF by Renato Coelho                                         *
-// Date:     2013-09-01                                                         *
-// Author:   Ian Back <ianb@bpm1.com>                                           *
-// License:  GPL                                                                *
-//                                                                              *
-// Changes:  See changelog.txt                                                  *
-// ******************************************************************************
-
-
-define('mPDF_VERSION','5.7.2');
-
-//Scale factor
-define('_MPDFK', (72/25.4));
-
-/*-- HTML-CSS --*/
-define('AUTOFONT_CJK',1);
-define('AUTOFONT_THAIVIET',2);
-define('AUTOFONT_RTL',4);
-define('AUTOFONT_INDIC',8);
-define('AUTOFONT_ALL',15);
-
-define('_BORDER_ALL',15);
-define('_BORDER_TOP',8);
-define('_BORDER_RIGHT',4);
-define('_BORDER_BOTTOM',2);
-define('_BORDER_LEFT',1);
-/*-- END HTML-CSS --*/
-
-if (!defined('_MPDF_PATH')) define('_MPDF_PATH', dirname(preg_replace('/\\\\/','/',__FILE__)) . '/');
-if (!defined('_MPDF_URI')) define('_MPDF_URI',_MPDF_PATH);
-
-require_once(_MPDF_PATH.'includes/functions.php');
-require_once(_MPDF_PATH.'config_cp.php');
-
-if (!defined('_JPGRAPH_PATH')) define("_JPGRAPH_PATH", _MPDF_PATH.'jpgraph/'); 
-
-if (!defined('_MPDF_TEMP_PATH')) define("_MPDF_TEMP_PATH", _MPDF_PATH.'tmp/');
-
-if (!defined('_MPDF_TTFONTPATH')) { define('_MPDF_TTFONTPATH',_MPDF_PATH.'ttfonts/'); }
-if (!defined('_MPDF_TTFONTDATAPATH')) { define('_MPDF_TTFONTDATAPATH',_MPDF_PATH.'ttfontdata/'); }
-
-$errorlevel=error_reporting();
-$errorlevel=error_reporting($errorlevel & ~E_NOTICE);
-
-//error_reporting(E_ALL);
-
-if(function_exists("date_default_timezone_set")) {
-       if (ini_get("date.timezone")=="") { date_default_timezone_set("Europe/London"); }
-}
-if (!function_exists("mb_strlen")) { die("Error - mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dll enabled."); }
-
-if (!defined('PHP_VERSION_ID')) {
-    $version = explode('.', PHP_VERSION);
-    define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
-}
-// Machine dependent number of bytes used to pack "double" into binary (used in cacheTables)
-$test = pack("d", 134455.474557333333666);
-define("_DSIZE", strlen($test));
-
-class mPDF
-{
-
-///////////////////////////////
-// EXTERNAL (PUBLIC) VARIABLES
-// Define these in config.php
-///////////////////////////////
-var $CJKforceend;      // mPDF 5.6.40
-// mPDF 5.6.34
-var $h2bookmarks;
-var $h2toc;
-var $decimal_align;    // mPDF 5.6.13
-var $margBuffer;       // mPDF 5.4.04
-var $splitTableBorderWidth;    // mPDF 5.4.16
-
-var $cacheTables;
-var $bookmarkStyles;
-var $useActiveForms;
-
-var $repackageTTF;
-var $allowCJKorphans;
-var $allowCJKoverflow;
-
-var $useKerning;
-var $restrictColorSpace;
-var $bleedMargin;
-var $crossMarkMargin;
-var $cropMarkMargin;
-var $cropMarkLength;
-var $nonPrintMargin;
-
-var $PDFX;
-var $PDFXauto;
-
-var $PDFA;
-var $PDFAauto;
-var $ICCProfile;
-
-var $printers_info;
-var $iterationCounter;
-var $smCapsScale;
-var $smCapsStretch;
-
-var $backupSubsFont;
-var $backupSIPFont;
-var $debugfonts;
-var $useAdobeCJK;
-var $percentSubset;
-var $maxTTFFilesize;
-var $BMPonly;
-
-var $tableMinSizePriority;
-
-var $dpi;
-var $watermarkImgAlphaBlend;
-var $watermarkImgBehind;
-var $justifyB4br;
-var $packTableData;
-var $pgsIns;
-var $simpleTables;
-var $enableImports;
-
-var $debug;
-var $showStats;
-var $setAutoTopMargin;
-var $setAutoBottomMargin;
-var $autoMarginPadding;
-var $collapseBlockMargins;
-var $falseBoldWeight;
-var $normalLineheight;
-var $progressBar;
-var $incrementFPR1;
-var $incrementFPR2;
-var $incrementFPR3;
-var $incrementFPR4;
-
-var $SHYlang;
-var $SHYleftmin;
-var $SHYrightmin;
-var $SHYcharmin;
-var $SHYcharmax;
-var $SHYlanguages;
-// PageNumber Conditional Text
-var $pagenumPrefix;
-var $pagenumSuffix;
-var $nbpgPrefix;
-var $nbpgSuffix;
-var $showImageErrors;
-var $allow_output_buffering;
-var $autoPadding;
-var $useGraphs;
-var $autoFontGroupSize;
-var $tabSpaces;
-var $useLang;
-var $restoreBlockPagebreaks;
-var $watermarkTextAlpha;
-var $watermarkImageAlpha;
-var $watermark_size;
-var $watermark_pos;
-var $annotSize;
-var $annotMargin;
-var $annotOpacity;
-var $title2annots;
-var $keepColumns;
-var $keep_table_proportions;
-var $ignore_table_widths;
-var $ignore_table_percents;
-var $list_align_style;
-var $list_number_suffix;
-var $useSubstitutions;
-var $CSSselectMedia;
-
-var $forcePortraitHeaders;
-var $forcePortraitMargins;
-var $displayDefaultOrientation;
-var $ignore_invalid_utf8;
-var $allowedCSStags;
-var $onlyCoreFonts;
-var $allow_charset_conversion;
-
-var $jSWord;
-var $jSmaxChar;
-var $jSmaxCharLast;
-var $jSmaxWordLast;
-
-var $max_colH_correction;
-
-
-var $table_error_report;
-var $table_error_report_param;
-var $biDirectional;
-var $text_input_as_HTML; 
-var $anchor2Bookmark;
-var $list_indent_first_level;
-var $shrink_tables_to_fit;
-
-var $allow_html_optional_endtags;
-
-var $img_dpi;
-
-var $defaultheaderfontsize;
-var $defaultheaderfontstyle;
-var $defaultheaderline;
-var $defaultfooterfontsize;
-var $defaultfooterfontstyle;
-var $defaultfooterline;
-var $header_line_spacing;
-var $footer_line_spacing;
-
-var $pregUHCchars;
-var $pregSJISchars;
-var $pregCJKchars;
-var $pregASCIIchars1;
-var $pregASCIIchars2;
-var $pregASCIIchars3;
-var $pregVIETchars;
-var $pregVIETPluschars;
-
-var $pregRTLchars;
-var $pregHEBchars;
-var $pregARABICchars;
-var $pregNonARABICchars;
-// INDIC
-var $pregHIchars;
-var $pregBNchars;
-var $pregPAchars;
-var $pregGUchars;
-var $pregORchars;
-var $pregTAchars;
-var $pregTEchars;
-var $pregKNchars;
-var $pregMLchars;
-var $pregSHchars;
-var $pregINDextra;
-
-var $mirrorMargins;
-var $default_lineheight_correction;
-var $watermarkText;
-var $watermarkImage;
-var $showWatermarkText;
-var $showWatermarkImage;
-
-var $fontsizes;
-
-// Aliases for backward compatability
-var $UnvalidatedText;  // alias = $watermarkText
-var $TopicIsUnvalidated;       // alias = $showWatermarkText
-var $useOddEven;               // alias = $mirrorMargins
-var $useSubstitutionsMB;       // alias = $useSubstitutions
-
-
-
-//////////////////////
-// CLASS OBJECTS
-//////////////////////
-var $cssmgr;
-var $grad;
-var $bmp;
-var $wmf;
-var $tocontents;
-var $form;
-var $directw;
-
-//////////////////////
-// INTERNAL VARIABLES
-//////////////////////
-var $uniqstr;  // mPDF 5.7.2
-var $writingToC;       // mPDF 5.6.38
-// mPDF 5.6.01
-var $layers;
-var $current_layer;
-var $open_layer_pane;
-var $decimal_offset;   // mPDF 5.6.13
-var $inMeter;  // mPDF 5.5.09
-
-var $CJKleading;
-var $CJKfollowing;
-var $CJKoverflow;
-
-var $textshadow;
-
-var $colsums;
-var $spanborder;
-var $spanborddet;
-
-var $visibility;
-
-var $useRC128encryption;
-var $uniqid;
-
-var $kerning;
-var $fixedlSpacing;
-var $minwSpacing;
-var $lSpacingCSS;
-var $wSpacingCSS;
-
-var $listDir;
-var $spotColorIDs;
-var $SVGcolors;
-var $spotColors;
-var $defTextColor;
-var $defDrawColor;
-var $defFillColor;
-
-var $tableBackgrounds;
-var $inlineDisplayOff;
-var $kt_y00;
-var $kt_p00;
-var $upperCase;
-var $checkSIP;
-var $checkSMP;
-var $checkCJK;
-var $tableCJK;
-
-var $watermarkImgAlpha;
-var $PDFAXwarnings;
-var $MetadataRoot; 
-var $OutputIntentRoot;
-var $InfoRoot; 
-var $current_filename;
-var $parsers;
-var $current_parser;
-var $_obj_stack;
-var $_don_obj_stack;
-var $_current_obj_id;
-var $tpls;
-var $tpl;
-var $tplprefix;
-var $_res;
-
-var $pdf_version;
-var $noImageFile;
-var $lastblockbottommargin;
-var $baselineC;
-var $subPos;
-var $subArrMB;
-var $ReqFontStyle;
-var $tableClipPath ;
-var $forceExactLineheight;
-var $listOcc; 
-
-var $fullImageHeight;
-var $inFixedPosBlock;          // Internal flag for position:fixed block
-var $fixedPosBlock;            // Buffer string for position:fixed block
-var $fixedPosBlockDepth;
-var $fixedPosBlockBBox;
-var $fixedPosBlockSave;
-var $maxPosL;
-var $maxPosR;
-
-var $loaded;
-
-var $extraFontSubsets;
-var $docTemplateStart;         // Internal flag for page (page no. -1) that docTemplate starts on
-var $time0;
-
-// Classes
-var $indic;
-var $barcode;
-
-var $SHYpatterns;
-var $loadedSHYpatterns;
-var $loadedSHYdictionary;
-var $SHYdictionary;
-var $SHYdictionaryWords;
-
-var $spanbgcolorarray;
-var $default_font;
-var $list_lineheight;
-var $headerbuffer;
-var $lastblocklevelchange;
-var $nestedtablejustfinished;
-var $linebreakjustfinished;
-var $cell_border_dominance_L;
-var $cell_border_dominance_R;
-var $cell_border_dominance_T;
-var $cell_border_dominance_B;
-var $table_keep_together;
-var $plainCell_properties;
-var $inherit_lineheight;
-var $listitemtype;
-var $shrin_k1;
-var $outerfilled;
-
-var $blockContext;
-var $floatDivs;
-
-
-var $patterns;
-var $pageBackgrounds;
-
-var $bodyBackgroundGradient;
-var $bodyBackgroundImage;
-var $bodyBackgroundColor;
-
-var $writingHTMLheader;        // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
-var $writingHTMLfooter;
-var $autoFontGroups;
-var $angle;
-
-var $gradients;
-
-var $kwt_Reference;
-var $kwt_BMoutlines;
-var $kwt_toc;
-
-var $tbrot_Reference;
-var $tbrot_BMoutlines;
-var $tbrot_toc;
-
-var $col_Reference;
-var $col_BMoutlines;
-var $col_toc;
-
-var $currentGraphId;
-var $graphs;
-
-var $floatbuffer;
-var $floatmargins;
-
-var $bullet;
-var $bulletarray;
-
-var $rtlAsArabicFarsi;         // DEPRACATED
-
-var $currentLang;
-var $default_lang;
-var $default_available_fonts;
-var $pageTemplate;
-var $docTemplate;
-var $docTemplateContinue;
-
-var $arabGlyphs;
-var $arabHex;
-var $persianGlyphs;
-var $persianHex;
-var $arabVowels;
-var $arabPrevLink;
-var $arabNextLink;
-
-
-var $formobjects; // array of Form Objects for WMF
-var $InlineProperties;
-var $InlineAnnots;
-var $ktAnnots;
-var $tbrot_Annots;
-var $kwt_Annots;
-var $columnAnnots;
-var $columnForms;
-
-var $PageAnnots;
-
-var $pageDim;  // Keep track of page wxh for orientation changes - set in _beginpage, used in _putannots
-
-var $breakpoints;
-
-var $tableLevel;
-var $tbctr;
-var $innermostTableLevel;
-var $saveTableCounter;
-var $cellBorderBuffer;
-
-var $saveHTMLFooter_height;
-var $saveHTMLFooterE_height;
-
-var $firstPageBoxHeader;
-var $firstPageBoxHeaderEven;
-var $firstPageBoxFooter;
-var $firstPageBoxFooterEven;
-
-var $page_box;
-var $show_marks;       // crop or cross marks
-
-var $basepathIsLocal;
-
-var $use_kwt;
-var $kwt;
-var $kwt_height;
-var $kwt_y0;
-var $kwt_x0;
-var $kwt_buffer;
-var $kwt_Links;
-var $kwt_moved;
-var $kwt_saved;
-
-var $PageNumSubstitutions;
-
-var $table_borders_separate;
-var $base_table_properties;
-var $borderstyles;
-
-var $listjustfinished;
-var $blockjustfinished;
-
-var $orig_bMargin;
-var $orig_tMargin;
-var $orig_lMargin;
-var $orig_rMargin;
-var $orig_hMargin;
-var $orig_fMargin;
-
-var $pageheaders;
-var $pagefooters;
-
-var $pageHTMLheaders;
-var $pageHTMLfooters;
-
-var $saveHTMLHeader;
-var $saveHTMLFooter;
-
-var $HTMLheaderPageLinks;
-var $HTMLheaderPageAnnots;
-var $HTMLheaderPageForms;
-
-// See config_fonts.php for these next 5 values
-var $available_unifonts;
-var $sans_fonts;
-var $serif_fonts;
-var $mono_fonts;
-var $defaultSubsFont;
-
-// List of ALL available CJK fonts (incl. styles) (Adobe add-ons)  hw removed
-var $available_CJK_fonts;
-
-var $HTMLHeader;
-var $HTMLFooter;
-var $HTMLHeaderE;
-var $HTMLFooterE;
-var $bufferoutput; 
-
-var $showdefaultpagenos;       // DEPRACATED -left for backward compatability
-
-
-// CJK fonts
-var $Big5_widths;
-var $GB_widths;
-var $SJIS_widths;
-var $UHC_widths;
-
-// SetProtection
-var $encrypted;        //whether document is protected
-var $Uvalue;   //U entry in pdf document
-var $Ovalue;   //O entry in pdf document
-var $Pvalue;   //P entry in pdf document
-var $enc_obj_id;       //encryption object id
-var $last_rc4_key;     //last RC4 key encrypted (cached for optimisation)
-var $last_rc4_key_c;   //last RC4 computed key
-var $encryption_key;
-var $padding;  //used for encryption
-
-
-// Bookmark
-var $BMoutlines;
-var $OutlineRoot;
-// INDEX
-var $ColActive;
-var $Reference;
-var $CurrCol;
-var $NbCol;
-var $y0;                       //Top ordinate of columns
-var $ColL;
-var $ColWidth;
-var $ColGap;
-// COLUMNS 
-var $ColR;
-var $ChangeColumn;
-var $columnbuffer;
-var $ColDetails;
-var $columnLinks;
-var $colvAlign;
-// Substitutions
-var $substitute;               // Array of substitution strings e.g. <ttz>112</ttz>
-var $entsearch;                // Array of HTML entities (>ASCII 127) to substitute
-var $entsubstitute;    // Array of substitution decimal unicode for the Hi entities
-
-
-// Default values if no style sheet offered    (cf. http://www.w3.org/TR/CSS21/sample.html)
-var $defaultCSS;
-
-var $linemaxfontsize;
-var $lineheight_correction;
-var $lastoptionaltag;  // Save current block item which HTML specifies optionsl endtag
-var $pageoutput;
-var $charset_in;
-var $blk;
-var $blklvl;
-var $ColumnAdjust;
-var $ws;       // Word spacing
-var $HREF;
-var $pgwidth;
-var $fontlist; 
-var $oldx;
-var $oldy;
-var $B;
-var $U;      //underlining flag
-var $S;        // SmallCaps flag
-var $I;
-
-var $tdbegin;
-var $table;
-var $cell;
-var $col;
-var $row;
-
-var $divbegin;
-var $divalign;
-var $divwidth;
-var $divheight;
-var $divrevert;
-var $spanbgcolor;
-
-var $spanlvl;
-var $listlvl;
-var $listnum;
-var $listtype;
-var $listoccur;
-var $listlist;
-var $listitem;
-
-var $pjustfinished;
-var $ignorefollowingspaces;
-var $SUP;
-var $SUB;
-var $SMALL;
-var $BIG;
-var $toupper;
-var $tolower;
-var $capitalize;
-var $dash_on;
-var $dotted_on;
-var $strike;
-
-var $textbuffer;
-var $currentfontstyle;
-var $currentfontfamily;
-var $currentfontsize;
-var $colorarray;
-var $bgcolorarray;
-var $internallink;
-var $enabledtags;
-
-var $lineheight;
-var $basepath;
-var $textparam;
-
-var $specialcontent;
-var $selectoption;
-var $objectbuffer;
-
-// Table Rotation
-var $table_rotate;
-var $tbrot_maxw;
-var $tbrot_maxh;
-var $tablebuffer;
-var $tbrot_align;
-var $tbrot_Links;
-
-var $divbuffer;                // Buffer used when keeping DIV on one page
-var $keep_block_together;      // Keep a Block from page-break-inside: avoid
-var $ktLinks;          // Keep-together Block links array
-var $ktBlock;          // Keep-together Block array
-var $ktForms;
-var $ktReference;
-var $ktBMoutlines;
-var $_kttoc;
-
-var $tbrot_y0;
-var $tbrot_x0;
-var $tbrot_w;
-var $tbrot_h;
-
-var $mb_enc;
-var $directionality;
-
-var $extgstates; // Used for alpha channel - Transparency (Watermark)
-var $mgl;
-var $mgt;
-var $mgr;
-var $mgb;
-
-var $tts;
-var $ttz;
-var $tta;
-
-var $headerDetails;
-var $footerDetails;
-
-// Best to alter the below variables using default stylesheet above
-var $page_break_after_avoid;
-var $margin_bottom_collapse;
-var $list_indent;
-var $list_align;
-var $list_margin_bottom; 
-var $default_font_size;        // in pts
-var $original_default_font_size;       // used to save default sizes when using table default
-var $original_default_font;
-var $watermark_font;
-var $defaultAlign;
-
-// TABLE
-var $defaultTableAlign;
-var $tablethead;
-var $thead_font_weight;
-var $thead_font_style;
-var $thead_font_smCaps;
-var $thead_valign_default;
-var $thead_textalign_default;
-var $tabletfoot;
-var $tfoot_font_weight;
-var $tfoot_font_style;
-var $tfoot_font_smCaps;
-var $tfoot_valign_default;
-var $tfoot_textalign_default;
-
-var $trow_text_rotate;
-
-var $cellPaddingL;
-var $cellPaddingR;
-var $cellPaddingT;
-var $cellPaddingB;
-var $table_lineheight;
-var $table_border_attr_set;
-var $table_border_css_set;
-
-var $shrin_k;                  // factor with which to shrink tables - used internally - do not change
-var $shrink_this_table_to_fit; // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
-var $MarginCorrection; // corrects for OddEven Margins
-var $margin_footer;
-var $margin_header;
-
-var $tabletheadjustfinished;
-var $usingCoreFont;
-var $charspacing;
-
-//Private properties FROM FPDF
-var $DisplayPreferences; 
-var $flowingBlockAttr;
-var $page;               //current page number
-var $n;                  //current object number
-var $offsets;            //array of object offsets
-var $buffer;             //buffer holding in-memory PDF
-var $pages;              //array containing pages
-var $state;              //current document state
-var $compress;           //compression flag
-var $DefOrientation;     //default orientation
-var $CurOrientation;     //current orientation
-var $OrientationChanges; //array indicating orientation changes
-var $k;                  //scale factor (number of points in user unit)
-var $fwPt;
-var $fhPt;         //dimensions of page format in points
-var $fw;
-var $fh;             //dimensions of page format in user unit
-var $wPt;
-var $hPt;           //current dimensions of page in points
-var $w;
-var $h;               //current dimensions of page in user unit
-var $lMargin;            //left margin
-var $tMargin;            //top margin
-var $rMargin;            //right margin
-var $bMargin;            //page break margin
-var $cMarginL;            //cell margin Left
-var $cMarginR;            //cell margin Right
-var $cMarginT;            //cell margin Left
-var $cMarginB;            //cell margin Right
-var $DeflMargin;            //Default left margin
-var $DefrMargin;            //Default right margin
-var $x;
-var $y;               //current position in user unit for cell positioning
-var $lasth;              //height of last cell printed
-var $LineWidth;          //line width in user unit
-var $CoreFonts;          //array of standard font names
-var $fonts;              //array of used fonts
-var $FontFiles;          //array of font files
-var $images;             //array of used images
-var $PageLinks;          //array of links in pages
-var $links;              //array of internal links
-var $FontFamily;         //current font family
-var $FontStyle;          //current font style
-var $CurrentFont;        //current font info
-var $FontSizePt;         //current font size in points
-var $FontSize;           //current font size in user unit
-var $DrawColor;          //commands for drawing color
-var $FillColor;          //commands for filling color
-var $TextColor;          //commands for text color
-var $ColorFlag;          //indicates whether fill and text colors are different
-var $autoPageBreak;      //automatic page breaking
-var $PageBreakTrigger;   //threshold used to trigger page breaks
-var $InFooter;           //flag set when processing footer
-var $InHTMLFooter;
-
-var $processingFooter;   //flag set when processing footer - added for columns
-var $processingHeader;   //flag set when processing header - added for columns
-var $ZoomMode;           //zoom display mode
-var $LayoutMode;         //layout display mode
-var $title;              //title
-var $subject;            //subject
-var $author;             //author
-var $keywords;           //keywords
-var $creator;            //creator
-
-var $aliasNbPg;       //alias for total number of pages
-var $aliasNbPgGp;       //alias for total number of pages in page group
-var $aliasNbPgHex;
-var $aliasNbPgGpHex;
-
-var $ispre;
-
-var $outerblocktags;
-var $innerblocktags;
-
-
-// **********************************
-// **********************************
-// **********************************
-// **********************************
-// **********************************
-// **********************************
-// **********************************
-// **********************************
-// **********************************
-
-function mPDF($mode='',$format='A4',$default_font_size=0,$default_font='',$mgl=15,$mgr=15,$mgt=16,$mgb=16,$mgh=9,$mgf=9, $orientation='P') {
-
-/*-- BACKGROUNDS --*/
-               if (!class_exists('grad', false)) { include(_MPDF_PATH.'classes/grad.php'); }
-               if (empty($this->grad)) { $this->grad = new grad($this); }
-/*-- END BACKGROUNDS --*/
-/*-- FORMS --*/
-               if (!class_exists('form', false)) { include(_MPDF_PATH.'classes/form.php'); }
-               if (empty($this->form)) { $this->form = new form($this); }
-/*-- END FORMS --*/
-
-       $this->time0 = microtime(true);
-       //Some checks
-       $this->_dochecks();
-
-       // Set up Aliases for backwards compatability
-       $this->UnvalidatedText =& $this->watermarkText;
-       $this->TopicIsUnvalidated =& $this->showWatermarkText;
-       $this->AliasNbPg =& $this->aliasNbPg;
-       $this->AliasNbPgGp =& $this->aliasNbPgGp;
-       $this->BiDirectional =& $this->biDirectional;
-       $this->Anchor2Bookmark =& $this->anchor2Bookmark;
-       $this->KeepColumns =& $this->keepColumns;
-       $this->useOddEven =& $this->mirrorMargins;
-       $this->useSubstitutionsMB =& $this->useSubstitutions;
-
-       $this->writingToC = false;      // mPDF 5.6.38
-       $this->uniqstr = '20110230';    // mPDF 5.7.2
-       // mPDF 5.6.01
-       $this->layers = array();
-       $this->current_layer = 0;
-       $this->open_layer_pane = false;
-
-       $this->visibility='visible';
-
-       //Initialization of properties
-       $this->spotColors=array();
-       $this->spotColorIDs = array();
-       $this->tableBackgrounds = array();
-
-       $this->kt_y00 = '';
-       $this->kt_p00 = '';
-       $this->iterationCounter = false;
-       $this->BMPonly = array();
-       $this->page=0;
-       $this->n=2;
-       $this->buffer='';
-       $this->objectbuffer = array();
-       $this->pages=array();
-       $this->OrientationChanges=array();
-       $this->state=0;
-       $this->fonts=array();
-       $this->FontFiles=array();
-       $this->images=array();
-       $this->links=array();
-       $this->InFooter=false;
-       $this->processingFooter=false;
-       $this->processingHeader=false;
-       $this->lasth=0;
-       $this->FontFamily='';
-       $this->FontStyle='';
-       $this->FontSizePt=9;
-       $this->U=false;
-       // Small Caps
-       $this->upperCase = array();
-       $this->S = false;
-       $this->smCapsScale = 1;
-       $this->smCapsStretch = 100;
-       $this->margBuffer = 0;  // mPDF 5.4.04
-       $this->inMeter = false; // mPDF 5.5.09
-       $this->decimal_offset = 0;
-
-       $this->defTextColor = $this->TextColor = $this->SetTColor($this->ConvertColor(0),true);
-       $this->defDrawColor = $this->DrawColor = $this->SetDColor($this->ConvertColor(0),true);
-       $this->defFillColor = $this->FillColor = $this->SetFColor($this->ConvertColor(255),true);
-
-       //SVG color names array
-       //http://www.w3schools.com/css/css_colornames.asp
-       $this->SVGcolors = array('antiquewhite'=>'#FAEBD7','aqua'=>'#00FFFF','aquamarine'=>'#7FFFD4','beige'=>'#F5F5DC','black'=>'#000000',
-'blue'=>'#0000FF','brown'=>'#A52A2A','cadetblue'=>'#5F9EA0','chocolate'=>'#D2691E','cornflowerblue'=>'#6495ED','crimson'=>'#DC143C',
-'darkblue'=>'#00008B','darkgoldenrod'=>'#B8860B','darkgreen'=>'#006400','darkmagenta'=>'#8B008B','darkorange'=>'#FF8C00',
-'darkred'=>'#8B0000','darkseagreen'=>'#8FBC8F','darkslategray'=>'#2F4F4F','darkviolet'=>'#9400D3','deepskyblue'=>'#00BFFF',
-'dodgerblue'=>'#1E90FF','firebrick'=>'#B22222','forestgreen'=>'#228B22','fuchsia'=>'#FF00FF','gainsboro'=>'#DCDCDC','gold'=>'#FFD700',
-'gray'=>'#808080','green'=>'#008000','greenyellow'=>'#ADFF2F','hotpink'=>'#FF69B4','indigo'=>'#4B0082','khaki'=>'#F0E68C',
-'lavenderblush'=>'#FFF0F5','lemonchiffon'=>'#FFFACD','lightcoral'=>'#F08080','lightgoldenrodyellow'=>'#FAFAD2','lightgreen'=>'#90EE90',
-'lightsalmon'=>'#FFA07A','lightskyblue'=>'#87CEFA','lightslategray'=>'#778899','lightyellow'=>'#FFFFE0','lime'=>'#00FF00','limegreen'=>'#32CD32',
-'magenta'=>'#FF00FF','maroon'=>'#800000','mediumaquamarine'=>'#66CDAA','mediumorchid'=>'#BA55D3','mediumseagreen'=>'#3CB371',
-'mediumspringgreen'=>'#00FA9A','mediumvioletred'=>'#C71585','midnightblue'=>'#191970','mintcream'=>'#F5FFFA','moccasin'=>'#FFE4B5','navy'=>'#000080',
-'olive'=>'#808000','orange'=>'#FFA500','orchid'=>'#DA70D6','palegreen'=>'#98FB98',
-'palevioletred'=>'#D87093','peachpuff'=>'#FFDAB9','pink'=>'#FFC0CB','powderblue'=>'#B0E0E6','purple'=>'#800080',
-'red'=>'#FF0000','royalblue'=>'#4169E1','salmon'=>'#FA8072','seagreen'=>'#2E8B57','sienna'=>'#A0522D','silver'=>'#C0C0C0','skyblue'=>'#87CEEB',
-'slategray'=>'#708090','springgreen'=>'#00FF7F','steelblue'=>'#4682B4','tan'=>'#D2B48C','teal'=>'#008080','thistle'=>'#D8BFD8','turquoise'=>'#40E0D0',
-'violetred'=>'#D02090','white'=>'#FFFFFF','yellow'=>'#FFFF00', 
-'aliceblue'=>'#f0f8ff', 'azure'=>'#f0ffff', 'bisque'=>'#ffe4c4', 'blanchedalmond'=>'#ffebcd', 'blueviolet'=>'#8a2be2', 'burlywood'=>'#deb887', 
-'chartreuse'=>'#7fff00', 'coral'=>'#ff7f50', 'cornsilk'=>'#fff8dc', 'cyan'=>'#00ffff', 'darkcyan'=>'#008b8b', 'darkgray'=>'#a9a9a9', 
-'darkgrey'=>'#a9a9a9', 'darkkhaki'=>'#bdb76b', 'darkolivegreen'=>'#556b2f', 'darkorchid'=>'#9932cc', 'darksalmon'=>'#e9967a', 
-'darkslateblue'=>'#483d8b', 'darkslategrey'=>'#2f4f4f', 'darkturquoise'=>'#00ced1', 'deeppink'=>'#ff1493', 'dimgray'=>'#696969', 
-'dimgrey'=>'#696969', 'floralwhite'=>'#fffaf0', 'ghostwhite'=>'#f8f8ff', 'goldenrod'=>'#daa520', 'grey'=>'#808080', 'honeydew'=>'#f0fff0', 
-'indianred'=>'#cd5c5c', 'ivory'=>'#fffff0', 'lavender'=>'#e6e6fa', 'lawngreen'=>'#7cfc00', 'lightblue'=>'#add8e6', 'lightcyan'=>'#e0ffff', 
-'lightgray'=>'#d3d3d3', 'lightgrey'=>'#d3d3d3', 'lightpink'=>'#ffb6c1', 'lightseagreen'=>'#20b2aa', 'lightslategrey'=>'#778899', 
-'lightsteelblue'=>'#b0c4de', 'linen'=>'#faf0e6', 'mediumblue'=>'#0000cd', 'mediumpurple'=>'#9370db', 'mediumslateblue'=>'#7b68ee', 
-'mediumturquoise'=>'#48d1cc', 'mistyrose'=>'#ffe4e1', 'navajowhite'=>'#ffdead', 'oldlace'=>'#fdf5e6', 'olivedrab'=>'#6b8e23', 'orangered'=>'#ff4500', 
-'palegoldenrod'=>'#eee8aa', 'paleturquoise'=>'#afeeee', 'papayawhip'=>'#ffefd5', 'peru'=>'#cd853f', 'plum'=>'#dda0dd', 'rosybrown'=>'#bc8f8f', 
-'saddlebrown'=>'#8b4513', 'sandybrown'=>'#f4a460', 'seashell'=>'#fff5ee', 'slateblue'=>'#6a5acd', 'slategrey'=>'#708090', 'snow'=>'#fffafa', 
-'tomato'=>'#ff6347', 'violet'=>'#ee82ee', 'wheat'=>'#f5deb3', 'whitesmoke'=>'#f5f5f5', 'yellowgreen'=>'#9acd32');
-
-       $this->ColorFlag=false;
-       $this->extgstates = array();
-
-       $this->mb_enc='windows-1252';
-       $this->directionality='ltr';
-       $this->defaultAlign = 'L';
-       $this->defaultTableAlign = 'L';
-
-       $this->fixedPosBlockSave = array();
-       $this->extraFontSubsets = 0;
-
-       $this->SHYpatterns = array();
-       $this->loadedSHYdictionary = false;
-       $this->SHYdictionary = array();
-       $this->SHYdictionaryWords = array();
-       $this->blockContext = 1;
-       $this->floatDivs = array();
-       $this->DisplayPreferences=''; 
-
-       $this->patterns = array();              // Tiling patterns used for backgrounds
-       $this->pageBackgrounds = array();
-       $this->writingHTMLheader = false;       // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
-       $this->writingHTMLfooter = false;       // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
-       $this->gradients = array();
-
-       $this->kwt_Reference = array();
-       $this->kwt_BMoutlines = array();
-       $this->kwt_toc = array();
-
-       $this->tbrot_Reference = array();
-       $this->tbrot_BMoutlines = array();
-       $this->tbrot_toc = array();
-
-       $this->col_Reference = array();
-       $this->col_BMoutlines = array();
-       $this->col_toc = array();
-       $this->graphs = array();
-
-       $this->pgsIns = array();
-       $this->PDFAXwarnings = array();
-       $this->inlineDisplayOff = false;
-       $this->kerning = false;
-       $this->lSpacingCSS = '';
-       $this->wSpacingCSS = '';
-       $this->fixedlSpacing = false;
-       $this->minwSpacing = 0;
-
-
-       $this->baselineC = 0.35;        // Baseline for text
-       $this->noImageFile = str_replace("\\","/",dirname(__FILE__)) . '/includes/no_image.jpg';
-       $this->subPos = 0;
-       $this->forceExactLineheight = false;
-       $this->listOcc = 0;
-       $this->normalLineheight = 1.3;
-       // These are intended as configuration variables, and should be set in config.php - which will override these values; 
-       // set here as failsafe as will cause an error if not defined
-       $this->incrementFPR1 = 10;
-       $this->incrementFPR2 = 10;
-       $this->incrementFPR3 = 10;
-       $this->incrementFPR4 = 10;
-
-       $this->fullImageHeight = false;
-       $this->floatbuffer = array();
-       $this->floatmargins = array();
-       $this->autoFontGroups = 0;
-       $this->formobjects=array(); // array of Form Objects for WMF
-       $this->InlineProperties=array();
-       $this->InlineAnnots=array();
-       $this->ktAnnots=array();
-       $this->tbrot_Annots=array();
-       $this->kwt_Annots=array();
-       $this->columnAnnots=array();
-       $this->pageDim=array();
-       $this->breakpoints = array();   // used in columnbuffer
-       $this->tableLevel=0;
-       $this->tbctr=array();   // counter for nested tables at each level
-       $this->page_box = array();
-       $this->show_marks = ''; // crop or cross marks
-       $this->kwt = false;
-       $this->kwt_height = 0;
-       $this->kwt_y0 = 0;
-       $this->kwt_x0 = 0;
-       $this->kwt_buffer = array();
-       $this->kwt_Links = array();
-       $this->kwt_moved = false;
-       $this->kwt_saved = false;
-       $this->PageNumSubstitutions = array();
-       $this->base_table_properties=array();
-       $this->borderstyles = array('inset','groove','outset','ridge','dotted','dashed','solid','double');
-       $this->tbrot_align = 'C';
-       $this->pageheaders=array();
-       $this->pagefooters=array();
-
-       $this->pageHTMLheaders=array();
-       $this->pageHTMLfooters=array();
-       $this->HTMLheaderPageLinks = array();
-       $this->HTMLheaderPageAnnots = array();
-
-       $this->ktForms = array();
-       $this->HTMLheaderPageForms = array();
-       $this->columnForms = array();
-       $this->tbrotForms = array();
-       $this->useRC128encryption = false;
-       $this->uniqid = '';
-
-       $this->bufferoutput = false; 
-       $this->encrypted=false;                 //whether document is protected
-       $this->BMoutlines=array();
-       $this->ColActive=0;                     //Flag indicating that columns are on (the index is being processed)
-       $this->Reference=array();               //Array containing the references
-       $this->CurrCol=0;               //Current column number
-       $this->ColL = array(0);                 // Array of Left pos of columns - absolute - needs Margin correction for Odd-Even
-       $this->ColR = array(0);                 // Array of Right pos of columns - absolute pos - needs Margin correction for Odd-Even
-       $this->ChangeColumn = 0;
-       $this->columnbuffer = array();
-       $this->ColDetails = array();            // Keeps track of some column details
-       $this->columnLinks = array();           // Cross references PageLinks
-       $this->substitute = array();            // Array of substitution strings e.g. <ttz>112</ttz>
-       $this->entsearch = array();             // Array of HTML entities (>ASCII 127) to substitute
-       $this->entsubstitute = array(); // Array of substitution decimal unicode for the Hi entities
-       $this->lastoptionaltag = '';
-       $this->charset_in = '';
-       $this->blk = array();
-       $this->blklvl = 0;
-       $this->tts = false;
-       $this->ttz = false;
-       $this->tta = false;
-       $this->ispre=false;
-
-       $this->checkSIP = false;
-       $this->checkSMP = false;
-       $this->checkCJK = false;
-       $this->tableCJK = false;
-
-       $this->headerDetails=array();
-       $this->footerDetails=array();
-       $this->page_break_after_avoid = false;
-       $this->margin_bottom_collapse = false;
-       $this->tablethead = 0;
-       $this->tabletfoot = 0;
-       $this->table_border_attr_set = 0;
-       $this->table_border_css_set = 0;
-       $this->shrin_k = 1.0;
-       $this->shrink_this_table_to_fit = 0;
-       $this->MarginCorrection = 0;
-
-       $this->tabletheadjustfinished = false;
-       $this->usingCoreFont = false;
-       $this->charspacing=0;
-
-       $this->autoPageBreak = true;
-
-       require(_MPDF_PATH.'config.php');       // config data
-
-       $this->_setPageSize($format, $orientation);
-       $this->DefOrientation=$orientation;
-
-       $this->margin_header=$mgh;
-       $this->margin_footer=$mgf;
-
-       $bmargin=$mgb;
-
-       $this->DeflMargin = $mgl;
-       $this->DefrMargin = $mgr;
-
-       $this->orig_tMargin = $mgt;
-       $this->orig_bMargin = $bmargin;
-       $this->orig_lMargin = $this->DeflMargin;
-       $this->orig_rMargin = $this->DefrMargin;
-       $this->orig_hMargin = $this->margin_header;
-       $this->orig_fMargin = $this->margin_footer;
-
-       if ($this->setAutoTopMargin=='pad') { $mgt += $this->margin_header; }
-       if ($this->setAutoBottomMargin=='pad') { $mgb += $this->margin_footer; }
-       $this->SetMargins($this->DeflMargin,$this->DefrMargin,$mgt);    // sets l r t margin
-       //Automatic page break
-       $this->SetAutoPageBreak($this->autoPageBreak,$bmargin); // sets $this->bMargin & PageBreakTrigger
-
-       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-
-       //Interior cell margin (1 mm) ? not used
-       $this->cMarginL = 1;
-       $this->cMarginR = 1;
-       //Line width (0.2 mm)
-       $this->LineWidth=.567/_MPDFK;
-
-       //To make the function Footer() work - replaces {nb} with page number
-       $this->AliasNbPages();
-       $this->AliasNbPageGroups();
-
-       $this->aliasNbPgHex = '{nbHEXmarker}';
-       $this->aliasNbPgGpHex = '{nbpgHEXmarker}';
-
-       //Enable all tags as default
-       $this->DisableTags();
-       //Full width display mode
-       $this->SetDisplayMode(100);     // fullwidth?           'fullpage'
-       //Compression
-       $this->SetCompression(true);
-       //Set default display preferences
-       $this->SetDisplayPreferences(''); 
-
-       // Font data
-       require(_MPDF_PATH.'config_fonts.php');
-       // Available fonts
-       $this->available_unifonts = array();
-       foreach ($this->fontdata AS $f => $fs) {
-               if (isset($fs['R']) && $fs['R']) { $this->available_unifonts[] = $f; }
-               if (isset($fs['B']) && $fs['B']) { $this->available_unifonts[] = $f.'B'; }
-               if (isset($fs['I']) && $fs['I']) { $this->available_unifonts[] = $f.'I'; }
-               if (isset($fs['BI']) && $fs['BI']) { $this->available_unifonts[] = $f.'BI'; }
-       }
-
-       $this->default_available_fonts = $this->available_unifonts;
-
-       $optcore = false;
-       $onlyCoreFonts = false;
-       if (preg_match('/([\-+])aCJK/i',$mode, $m)) {
-               $mode = preg_replace('/([\-+])aCJK/i','',$mode);
-               if ($m[1]=='+') { $this->useAdobeCJK = true; }
-               else { $this->useAdobeCJK = false; }
-       }
-
-       if (strlen($mode)==1) {
-               if ($mode=='s') { $this->percentSubset = 100; $mode = ''; }
-               else if ($mode=='c') { $onlyCoreFonts = true; $mode = ''; }
-       }
-       else if (substr($mode,-2)=='-s') {
-               $this->percentSubset = 100; 
-               $mode = substr($mode,0,strlen($mode)-2);
-       }
-       else if (substr($mode,-2)=='-c') {
-               $onlyCoreFonts = true;
-               $mode = substr($mode,0,strlen($mode)-2);
-       }
-       else if (substr($mode,-2)=='-x') {
-               $optcore = true;
-               $mode = substr($mode,0,strlen($mode)-2);
-       }
-
-       // Autodetect if mode is a language_country string (en-GB or en_GB or en)
-       if ((strlen($mode) == 5 && $mode != 'UTF-8') || strlen($mode) == 2) {
-               list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($mode, $this->useAdobeCJK);
-               if ($coreSuitable && $optcore) { $onlyCoreFonts = true; }
-               if ($mpdf_pdf_unifonts) { 
-                       $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); 
-                       $this->default_available_fonts = $mpdf_pdf_unifonts;
-               }
-               $this->currentLang = $mode;
-               $this->default_lang = $mode;
-       }
-
-       $this->onlyCoreFonts =  $onlyCoreFonts;
-
-       if ($this->onlyCoreFonts) {
-               $this->setMBencoding('windows-1252');   // sets $this->mb_enc
-       }
-       else {
-               $this->setMBencoding('UTF-8');  // sets $this->mb_enc
-       }
-       @mb_regex_encoding('UTF-8');    // required only for mb_ereg... and mb_split functions
-
-
-       // Adobe CJK fonts
-       $this->available_CJK_fonts = array('gb','big5','sjis','uhc','gbB','big5B','sjisB','uhcB','gbI','big5I','sjisI','uhcI',
-               'gbBI','big5BI','sjisBI','uhcBI');
-
-
-       //Standard fonts
-       $this->CoreFonts=array('ccourier'=>'Courier','ccourierB'=>'Courier-Bold','ccourierI'=>'Courier-Oblique','ccourierBI'=>'Courier-BoldOblique',
-               'chelvetica'=>'Helvetica','chelveticaB'=>'Helvetica-Bold','chelveticaI'=>'Helvetica-Oblique','chelveticaBI'=>'Helvetica-BoldOblique',
-               'ctimes'=>'Times-Roman','ctimesB'=>'Times-Bold','ctimesI'=>'Times-Italic','ctimesBI'=>'Times-BoldItalic',
-               'csymbol'=>'Symbol','czapfdingbats'=>'ZapfDingbats');
-       $this->fontlist=array("ctimes","ccourier","chelvetica","csymbol","czapfdingbats");
-
-       // Substitutions
-       $this->setHiEntitySubstitutions();
-
-       if ($this->onlyCoreFonts) {
-               $this->useSubstitutions = true;
-               $this->SetSubstitutions();
-       }
-       else { $this->useSubstitutions = false; }
-
-/*-- HTML-CSS --*/
-
-       if (!class_exists('cssmgr', false)) { include(_MPDF_PATH .'classes/cssmgr.php'); }
-       $this->cssmgr = new cssmgr($this);
-       if (file_exists(_MPDF_PATH.'mpdf.css')) {
-               $css = file_get_contents(_MPDF_PATH.'mpdf.css');
-               $css2 = $this->cssmgr->ReadDefaultCSS($css);
-               $this->defaultCSS = $this->cssmgr->array_merge_recursive_unique($this->defaultCSS,$css2); 
-       }
-/*-- END HTML-CSS --*/
-
-       if ($default_font=='') { 
-         if ($this->onlyCoreFonts) { 
-               if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']),$this->mono_fonts)) { $default_font = 'ccourier'; }
-               else if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']),$this->sans_fonts)) { $default_font = 'chelvetica'; }
-               else { $default_font = 'ctimes'; }
-         }
-         else { $default_font = $this->defaultCSS['BODY']['FONT-FAMILY']; }
-       }
-       if (!$default_font_size) { 
-               $mmsize = $this->ConvertSize($this->defaultCSS['BODY']['FONT-SIZE']);
-               $default_font_size = $mmsize*(_MPDFK);
-       }
-
-       if ($default_font) { $this->SetDefaultFont($default_font); }
-       if ($default_font_size) { $this->SetDefaultFontSize($default_font_size); }
-
-       $this->SetLineHeight(); // lineheight is in mm
-
-       $this->SetFColor($this->ConvertColor(255));
-       $this->HREF='';
-       $this->oldy=-1;
-       $this->B=0;
-       $this->U=false;
-       $this->S=false;
-       $this->I=0;
-
-       $this->listlvl=0;
-       $this->listnum=0; 
-       $this->listtype='';
-       $this->listoccur=array();
-       $this->listlist=array();
-       $this->listitem=array();
-
-       $this->tdbegin=false; 
-       $this->table=array(); 
-       $this->cell=array();  
-       $this->col=-1; 
-       $this->row=-1; 
-       $this->cellBorderBuffer = array();
-
-       $this->divbegin=false;
-       $this->divalign='';
-       $this->divwidth=0; 
-       $this->divheight=0; 
-       $this->spanbgcolor=false;
-       $this->divrevert=false;
-       $this->spanborder=false;
-       $this->spanborddet=array();
-
-       $this->blockjustfinished=false;
-       $this->listjustfinished=false;
-       $this->ignorefollowingspaces = true; //in order to eliminate exceeding left-side spaces
-       $this->toupper=false;
-       $this->tolower=false;
-       $this->capitalize=false;
-       $this->dash_on=false;
-       $this->dotted_on=false;
-       $this->SUP=false;
-       $this->SUB=false;
-       $this->strike=false;
-       $this->textshadow='';
-
-       $this->currentfontfamily='';
-       $this->currentfontsize='';
-       $this->currentfontstyle='';
-       $this->colorarray=array();
-       $this->spanbgcolorarray=array();
-       $this->textbuffer=array();
-       $this->internallink=array();
-       $this->basepath = "";
-
-       $this->SetBasePath('');
-
-       $this->textparam = array();
-
-       $this->specialcontent = '';
-       $this->selectoption = array();
-
-/*-- IMPORTS --*/
-
-       $this->tpls = array();
-       $this->tpl = 0;
-       $this->tplprefix = "/TPL";
-       $this->res = array();
-       if ($this->enableImports) {
-               $this->SetImportUse();
-       }
-/*-- END IMPORTS --*/
-
-       if ($this->progressBar) { $this->StartProgressBarOutput($this->progressBar) ;   }       // *PROGRESS-BAR*
-}
-
-
-function _setPageSize($format, &$orientation) {
-       //Page format
-       if(is_string($format))
-       {
-               if ($format=='') { $format = 'A4'; }
-               $pfo = 'P';
-               if(preg_match('/([0-9a-zA-Z]*)-L/i',$format,$m)) {      // e.g. A4-L = A4 landscape
-                       $format=$m[1]; 
-                       $pfo='L'; 
-               }
-               $format = $this->_getPageFormat($format);
-               if (!$format) { $this->Error('Unknown page format: '.$format); }
-               else { $orientation = $pfo; }
-
-               $this->fwPt=$format[0];
-               $this->fhPt=$format[1];
-       }
-       else
-       {
-               if (!$format[0] || !$format[1]) { $this->Error('Invalid page format: '.$format[0].' '.$format[1]); }
-               $this->fwPt=$format[0]*_MPDFK;
-               $this->fhPt=$format[1]*_MPDFK;
-       }
-       $this->fw=$this->fwPt/_MPDFK;
-       $this->fh=$this->fhPt/_MPDFK;
-       //Page orientation
-       $orientation=strtolower($orientation);
-       if($orientation=='p' or $orientation=='portrait')
-       {
-               $orientation='P';
-               $this->wPt=$this->fwPt;
-               $this->hPt=$this->fhPt;
-       }
-       elseif($orientation=='l' or $orientation=='landscape')
-       {
-               $orientation='L';
-               $this->wPt=$this->fhPt;
-               $this->hPt=$this->fwPt;
-       }
-       else $this->Error('Incorrect orientation: '.$orientation);
-       $this->CurOrientation=$orientation;
-
-       $this->w=$this->wPt/_MPDFK;
-       $this->h=$this->hPt/_MPDFK;
-}
-
-function _getPageFormat($format) {
-               switch (strtoupper($format)) {
-                       case '4A0': {$format = array(4767.87,6740.79); break;}
-                       case '2A0': {$format = array(3370.39,4767.87); break;}
-                       case 'A0': {$format = array(2383.94,3370.39); break;}
-                       case 'A1': {$format = array(1683.78,2383.94); break;}
-                       case 'A2': {$format = array(1190.55,1683.78); break;}
-                       case 'A3': {$format = array(841.89,1190.55); break;}
-                       case 'A4': default: {$format = array(595.28,841.89); break;}
-                       case 'A5': {$format = array(419.53,595.28); break;}
-                       case 'A6': {$format = array(297.64,419.53); break;}
-                       case 'A7': {$format = array(209.76,297.64); break;}
-                       case 'A8': {$format = array(147.40,209.76); break;}
-                       case 'A9': {$format = array(104.88,147.40); break;}
-                       case 'A10': {$format = array(73.70,104.88); break;}
-                       case 'B0': {$format = array(2834.65,4008.19); break;}
-                       case 'B1': {$format = array(2004.09,2834.65); break;}
-                       case 'B2': {$format = array(1417.32,2004.09); break;}
-                       case 'B3': {$format = array(1000.63,1417.32); break;}
-                       case 'B4': {$format = array(708.66,1000.63); break;}
-                       case 'B5': {$format = array(498.90,708.66); break;}
-                       case 'B6': {$format = array(354.33,498.90); break;}
-                       case 'B7': {$format = array(249.45,354.33); break;}
-                       case 'B8': {$format = array(175.75,249.45); break;}
-                       case 'B9': {$format = array(124.72,175.75); break;}
-                       case 'B10': {$format = array(87.87,124.72); break;}
-                       case 'C0': {$format = array(2599.37,3676.54); break;}
-                       case 'C1': {$format = array(1836.85,2599.37); break;}
-                       case 'C2': {$format = array(1298.27,1836.85); break;}
-                       case 'C3': {$format = array(918.43,1298.27); break;}
-                       case 'C4': {$format = array(649.13,918.43); break;}
-                       case 'C5': {$format = array(459.21,649.13); break;}
-                       case 'C6': {$format = array(323.15,459.21); break;}
-                       case 'C7': {$format = array(229.61,323.15); break;}
-                       case 'C8': {$format = array(161.57,229.61); break;}
-                       case 'C9': {$format = array(113.39,161.57); break;}
-                       case 'C10': {$format = array(79.37,113.39); break;}
-                       case 'RA0': {$format = array(2437.80,3458.27); break;}
-                       case 'RA1': {$format = array(1729.13,2437.80); break;}
-                       case 'RA2': {$format = array(1218.90,1729.13); break;}
-                       case 'RA3': {$format = array(864.57,1218.90); break;}
-                       case 'RA4': {$format = array(609.45,864.57); break;}
-                       case 'SRA0': {$format = array(2551.18,3628.35); break;}
-                       case 'SRA1': {$format = array(1814.17,2551.18); break;}
-                       case 'SRA2': {$format = array(1275.59,1814.17); break;}
-                       case 'SRA3': {$format = array(907.09,1275.59); break;}
-                       case 'SRA4': {$format = array(637.80,907.09); break;}
-                       case 'LETTER': {$format = array(612.00,792.00); break;}
-                       case 'LEGAL': {$format = array(612.00,1008.00); break;}
-                       case 'LEDGER': {$format = array(279.00,432.00); break;}
-                       case 'TABLOID': {$format = array(279.00,432.00); break;}
-                       case 'EXECUTIVE': {$format = array(521.86,756.00); break;}
-                       case 'FOLIO': {$format = array(612.00,936.00); break;}
-                       case 'B': {$format=array(362.83,561.26 );        break;}                //      'B' format paperback size 128x198mm
-                       case 'A': {$format=array(314.65,504.57 );        break;}                //      'A' format paperback size 111x178mm
-                       case 'DEMY': {$format=array(382.68,612.28 );  break;}           //      'Demy' format paperback size 135x216mm
-                       case 'ROYAL': {$format=array(433.70,663.30 );  break;}  //      'Royal' format paperback size 153x234mm
-                       default: $format = false;
-               }
-       return $format;
-}
-
-
-/*-- PROGRESS-BAR --*/
-function StartProgressBarOutput($mode=1) {
-       // must be relative path, or URI (not a file system path)
-       if (!defined('_MPDF_URI')) { 
-               $this->progressBar = false;
-               if ($this->debug) { $this->Error("You need to define _MPDF_URI to use the progress bar!"); }
-               else return false; 
-       }
-       $this->progressBar = $mode;
-       if ($this->progbar_altHTML) {
-               echo $this->progbar_altHTML;
-       }
-       else {
-          echo '<html>
-       <head>
-       <title>mPDF File Progress</title>
-       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-       <link rel="stylesheet" type="text/css" href="'._MPDF_URI.'progbar.css" />
-               </head>
-       <body>
-       <div class="main">
-               <div class="heading">'.$this->progbar_heading.'</div>
-               <div class="demo">
-          ';
-          if ($this->progressBar==2) { echo '          <table width="100%"><tr><td style="width: 50%;"> 
-                       <span class="barheading">Writing HTML code</span> <br/>
-
-                       <div class="progressBar">
-                       <div id="element1"  class="innerBar">&nbsp;</div>
-                       </div>
-                       <span class="code" id="box1"></span>
-                       </td><td style="width: 50%;">
-                       <span class="barheading">Autosizing elements</span> <br/>
-                       <div class="progressBar">
-                       <div id="element4"  class="innerBar">&nbsp;</div>
-                       </div>
-                       <span class="code" id="box4"></span>
-                       <br/><br/>
-                       <span class="barheading">Writing Tables</span> <br/>
-                       <div class="progressBar">
-                       <div id="element7"  class="innerBar">&nbsp;</div>
-                       </div>
-                       <span class="code" id="box7"></span>
-                       </td></tr>
-                       <tr><td><br /><br /></td><td></td></tr>
-                       <tr><td style="width: 50%;"> 
-       '; }
-       echo '                  <span class="barheading">Writing PDF file</span> <br/>
-                       <div class="progressBar">
-                       <div id="element2"  class="innerBar">&nbsp;</div>
-                       </div>
-                       <span class="code" id="box2"></span>
-          ';
-          if ($this->progressBar==2) { echo '
-                       </td><td style="width: 50%;">
-                       <span class="barheading">Memory usage</span> <br/>
-                       <div class="progressBar">
-                       <div id="element5"  class="innerBar">&nbsp;</div>
-                       </div>
-                       <span id="box5">0</span> '.ini_get("memory_limit").'<br />
-                       <br/><br/>
-                       <span class="barheading">Memory usage (peak)</span> <br/>
-                       <div class="progressBar">
-                       <div id="element6"  class="innerBar">&nbsp;</div>
-                       </div>
-                       <span id="box6">0</span> '.ini_get("memory_limit").'<br />
-                       </td></tr>
-                       </table>
-          '; }
-          echo '                       <br/><br/>
-               <span id="box3"></span>
-
-               </div>
-          ';
-       }
-       ob_flush();
-      flush();
-}
-
-function UpdateProgressBar($el,$val,$txt='') {
-       // $val should be a string - 5 = actual value, +15 = increment
-
-       if ($this->progressBar<2) {
-               if ($el>3) { return; }
-               else if ($el ==1) { $el = 2; }
-       }
-       echo '<script type="text/javascript">';
-       if ($val) { echo ' document.getElementById(\'element'.$el.'\').style.width=\''.$val.'%\'; '; }
-       if ($txt) { echo ' document.getElementById(\'box'.$el.'\').innerHTML=\''.$txt.'\'; '; }
-       if ($this->progressBar==2) { 
-               $m = round(memory_get_usage(true)/1048576);
-               $m2 = round(memory_get_peak_usage(true)/1048576);
-               $mem = $m * 100 / (ini_get("memory_limit")+0);
-               $mem2 = $m2 * 100 / (ini_get("memory_limit")+0);
-               echo ' document.getElementById(\'element5\').style.width=\''.$mem.'%\'; '; 
-               echo ' document.getElementById(\'element6\').style.width=\''.$mem2.'%\'; '; 
-               echo ' document.getElementById(\'box5\').innerHTML=\''.$m.'MB / \'; '; 
-               echo ' document.getElementById(\'box6\').innerHTML=\''.$m2.'MB / \'; '; 
-       }
-       echo '</script>'."\n";
-       ob_flush();
-       flush();
-}
-/*-- END PROGRESS-BAR --*/
-
-
-
-function RestrictUnicodeFonts($res) {
-       // $res = array of (Unicode) fonts to restrict to: e.g. norasi|norasiB - language specific
-       if (count($res)) {      // Leave full list of available fonts if passed blank array
-               $this->available_unifonts = $res;
-       }
-       else { $this->available_unifonts = $this->default_available_fonts; }
-       if (count($this->available_unifonts) == 0) { $this->available_unifonts[] = $this->default_available_fonts[0]; }
-       $this->available_unifonts = array_values($this->available_unifonts);
-}
-
-
-function setMBencoding($enc) {
-       if ($this->mb_enc != $enc) { 
-               $this->mb_enc = $enc; 
-               mb_internal_encoding($this->mb_enc); 
-       }
-}
-
-
-function SetMargins($left,$right,$top) {
-       //Set left, top and right margins
-       $this->lMargin=$left;
-       $this->rMargin=$right;
-       $this->tMargin=$top;
-}
-
-function ResetMargins() {
-       //ReSet left, top margins
-       if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P' && $this->CurOrientation=='L') {
-           if (($this->mirrorMargins) && (($this->page)%2==0)) {       // EVEN
-               $this->tMargin=$this->orig_rMargin;
-               $this->bMargin=$this->orig_lMargin;
-           }
-           else {      // ODD  // OR NOT MIRRORING MARGINS/FOOTERS
-               $this->tMargin=$this->orig_lMargin;
-               $this->bMargin=$this->orig_rMargin;
-           }
-          $this->lMargin=$this->DeflMargin;
-          $this->rMargin=$this->DefrMargin;
-          $this->MarginCorrection = 0;
-          $this->PageBreakTrigger=$this->h-$this->bMargin;
-       }
-       else  if (($this->mirrorMargins) && (($this->page)%2==0)) {     // EVEN
-               $this->lMargin=$this->DefrMargin;
-               $this->rMargin=$this->DeflMargin;
-               $this->MarginCorrection = $this->DefrMargin-$this->DeflMargin;
-
-       }
-       else {  // ODD  // OR NOT MIRRORING MARGINS/FOOTERS
-               $this->lMargin=$this->DeflMargin;
-               $this->rMargin=$this->DefrMargin;
-               if ($this->mirrorMargins) { $this->MarginCorrection = $this->DeflMargin-$this->DefrMargin; }
-       }
-       $this->x=$this->lMargin;
-
-}
-
-function SetLeftMargin($margin) {
-       //Set left margin
-       $this->lMargin=$margin;
-       if($this->page>0 and $this->x<$margin) $this->x=$margin;
-}
-
-function SetTopMargin($margin) {
-       //Set top margin
-       $this->tMargin=$margin;
-}
-
-function SetRightMargin($margin) {
-       //Set right margin
-       $this->rMargin=$margin;
-}
-
-function SetAutoPageBreak($auto,$margin=0) {
-       //Set auto page break mode and triggering margin
-       $this->autoPageBreak=$auto;
-       $this->bMargin=$margin;
-       $this->PageBreakTrigger=$this->h-$margin;
-}
-
-function SetDisplayMode($zoom,$layout='continuous') {
-       //Set display mode in viewer
-       if($zoom=='fullpage' or $zoom=='fullwidth' or $zoom=='real' or $zoom=='default' or !is_string($zoom))
-               $this->ZoomMode=$zoom;
-       else
-               $this->Error('Incorrect zoom display mode: '.$zoom);
-       if($layout=='single' or $layout=='continuous' or $layout=='two' or $layout=='twoleft' or $layout=='tworight' or $layout=='default')
-               $this->LayoutMode=$layout;
-       else
-               $this->Error('Incorrect layout display mode: '.$layout);
-}
-
-function SetCompression($compress) {
-       //Set page compression
-       if(function_exists('gzcompress'))       $this->compress=$compress;
-       else $this->compress=false;
-}
-
-function SetTitle($title) {
-       //Title of document // Arrives as UTF-8
-       $this->title = $title;
-}
-
-function SetSubject($subject) {
-       //Subject of document
-       $this->subject= $subject;
-}
-
-function SetAuthor($author) {
-       //Author of document
-       $this->author= $author;
-}
-
-function SetKeywords($keywords) {
-       //Keywords of document
-       $this->keywords= $keywords;
-}
-
-function SetCreator($creator) {
-       //Creator of document
-       $this->creator= $creator;
-}
-
-
-function SetAnchor2Bookmark($x) {
-       $this->anchor2Bookmark = $x;
-}
-
-function AliasNbPages($alias='{nb}') {
-       //Define an alias for total number of pages
-       $this->aliasNbPg=$alias;
-}
-
-function AliasNbPageGroups($alias='{nbpg}') {
-       //Define an alias for total number of pages in a group
-       $this->aliasNbPgGp=$alias;
-}
-
-function SetAlpha($alpha, $bm='Normal', $return=false, $mode='B') {
-// alpha: real value from 0 (transparent) to 1 (opaque)
-// bm:    blend mode, one of the following:
-//          Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
-//          HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity
-// set alpha for stroking (CA) and non-stroking (ca) operations
-// mode determines F (fill) S (stroke) B (both)
-       if (($this->PDFA || $this->PDFX) && $alpha!=1) { 
-               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Image opacity must be 100% (Opacity changed to 100%)"; }
-               $alpha = 1; 
-       }
-       $a = array('BM'=>'/'.$bm);
-       if ($mode=='F' || $mode=='B') $a['ca'] = $alpha;        // mPDF 5.7.2
-       if ($mode=='S' || $mode=='B') $a['CA'] = $alpha;        // mPDF 5.7.2
-       $gs = $this->AddExtGState($a);
-       if ($return) { return sprintf('/GS%d gs', $gs); }
-       else { $this->_out(sprintf('/GS%d gs', $gs)); }
-}
-
-function AddExtGState($parms) {
-       $n = count($this->extgstates);
-       // check if graphics state already exists
-       for ($i=1; $i<=$n; $i++) {
-         if (count($this->extgstates[$i]['parms']) == count($parms)) {
-           $same = true;
-           foreach($this->extgstates[$i]['parms'] AS $k=>$v) {
-               if (!isset($parms[$k]) || $parms[$k] != $v) { $same = false; break; }
-           }
-           if ($same) { return $i; }
-         }
-       }
-       $n++;
-       $this->extgstates[$n]['parms'] = $parms;
-       return $n;
-}
-
-function SetVisibility($v) {
-       if (($this->PDFA || $this->PDFX) && $this->visibility!='visible') { $this->PDFAXwarnings[] = "Cannot set visibility to anything other than full when using PDFA or PDFX"; return ''; }
-       else if (!$this->PDFA && !$this->PDFX)
-               $this->pdf_version='1.5';
-       if($this->visibility!='visible') {
-               $this->_out('EMC');
-               $this->hasOC=intval($this->hasOC );     // mPDF 5.6.01
-       }
-       if($v=='printonly') {
-               $this->_out('/OC /OC1 BDC');
-               $this->hasOC=($this->hasOC | 1);        // mPDF 5.6.01
-       }
-       elseif($v=='screenonly') {
-               $this->_out('/OC /OC2 BDC');
-               $this->hasOC=($this->hasOC | 2);        // mPDF 5.6.01
-       }
-       elseif($v=='hidden') {
-               $this->_out('/OC /OC3 BDC');
-               $this->hasOC=($this->hasOC | 4);        // mPDF 5.6.01
-       }
-       elseif($v!='visible')
-               $this->Error('Incorrect visibility: '.$v);
-       $this->visibility=$v;
-}
-
-function Error($msg) {
-       //Fatal error
-       header('Content-Type: text/html; charset=utf-8');
-       die('<B>mPDF error: </B>'.$msg);
-}
-
-function Open() {
-       //Begin document
-       if($this->state==0)     $this->_begindoc();
-}
-
-function Close() {
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'2','Closing last page'); }        // *PROGRESS-BAR*
-       //Terminate document
-       if($this->state==3)     return;
-       if($this->page==0) $this->AddPage($this->CurOrientation);
-       if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }       // *TABLES*
-       if ($this->tablebuffer) { $this->printtablebuffer(); }  // *TABLES*
-/*-- COLUMNS --*/
-
-       if ($this->ColActive) {
-               $this->SetColumns(0);
-               $this->ColActive = 0; 
-               if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
-       }
-/*-- END COLUMNS --*/
-       if (count($this->divbuffer)) { $this->printdivbuffer(); }
-
-       // BODY Backgrounds
-       $s = '';
-
-       $s .= $this->PrintBodyBackgrounds();
-
-       $s .= $this->PrintPageBackgrounds();
-       $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$s."\n".'\\1', $this->pages[$this->page]);
-       $this->pageBackgrounds = array();
-
-       if($this->visibility!='visible')
-               $this->SetVisibility('visible');
-       // mPDF 5.6.01 - LAYERS
-       $this->EndLayer();
-
-       if (!$this->tocontents || !$this->tocontents->TOCmark) { //Page footer
-               $this->InFooter=true;
-               $this->Footer();
-               $this->InFooter=false;
-       }
-       if ($this->tocontents && ($this->tocontents->TOCmark || count($this->tocontents->m_TOC))) { $this->tocontents->insertTOC(); }   // *TOC*
-
-       //Close page
-       $this->_endpage();
-
-       //Close document
-       $this->_enddoc();
-}
-
-/*-- BACKGROUNDS --*/
-function _resizeBackgroundImage($imw, $imh, $cw, $ch, $resize=0, $repx, $repy, $pba=array(), $size=array()) {  // mPDF 5.6.10
-       // pba is background positioning area (from CSS background-origin) may not always be set [x,y,w,h]
-       // size is from CSS3 background-size - takes precendence over old resize 
-       //      $w - absolute length or % or auto or cover | contain
-       //      $h - absolute length or % or auto or cover | contain
-       // mPDF 5.6.10
-       if (isset($pba['w'])) $cw = $pba['w'];
-       if (isset($pba['h'])) $ch = $pba['h'];
-
-       $cw = $cw*_MPDFK;
-       $ch = $ch*_MPDFK;
-       if (empty($size) && !$resize) { return array($imw, $imh, $repx, $repy); }
-
-       // mPDF 5.6.10
-       if (isset($size['w']) && $size['w']) {
-               if ($size['w']=='contain') {
-               // Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area. 
-               // Same as resize==3
-                       $h = $imh * $cw/$imw;
-                       $w = $cw;
-                       if ($h > $ch) {
-                               $w = $w * $ch/$h;
-                               $h = $ch;
-                       }
-               }
-               else if ($size['w']=='cover') {
-               // Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area. 
-                       $h = $imh * $cw/$imw;
-                       $w = $cw;
-                       if ($h < $ch) {
-                               $w = $w * $h/$ch;
-                               $h = $ch;
-                       }
-               }
-               else {
-                       if (stristr($size['w'] ,'%')) {
-                               $size['w'] += 0; 
-                               $size['w'] /= 100; 
-                               $size['w'] = ($cw * $size['w']);
-                       }
-                       if (stristr($size['h'] ,'%')) {
-                               $size['h'] += 0; 
-                               $size['h'] /= 100; 
-                               $size['h'] = ($ch * $size['h']);
-                       }
-                       if ($size['w']=='auto' && $size['h']=='auto') {
-                               $w = $imw;
-                               $h = $imh;
-                       }
-                       else if ($size['w']=='auto' && $size['h']!='auto') {
-                               $w = $imw * $size['h']/$imh;
-                               $h = $size['h'];
-                       }
-                       else if ($size['w']!='auto' && $size['h']=='auto') {
-                               $h = $imh * $size['w']/$imw;
-                               $w = $size['w'];
-                       }
-                       else {
-                               $w = $size['w'];
-                               $h = $size['h'];
-                       }
-               }
-               return array($w, $h, $repx, $repy); 
-       }
-       else if ($resize==1 && $imw > $cw) {
-               $h = $imh * $cw/$imw;
-               return array($cw, $h, $repx, $repy); 
-       }
-       else if ($resize==2 && $imh > $ch) {
-               $w = $imw * $ch/$imh;
-               return array($w, $ch, $repx, $repy); 
-       }
-       else if ($resize==3) {
-               $w = $imw;
-               $h = $imh;
-               if ($w > $cw) {
-                       $h = $h * $cw/$w;
-                       $w = $cw;
-               }
-               if ($h > $ch) {
-                       $w = $w * $ch/$h;
-                       $h = $ch;
-               }
-               return array($w, $h, $repx, $repy); 
-       }
-       else if ($resize==4) {
-               $h = $imh * $cw/$imw;
-               return array($cw, $h, $repx, $repy); 
-       }
-       else if ($resize==5) {
-               $w = $imw * $ch/$imh;
-               return array($w, $ch, $repx, $repy); 
-       }
-       else if ($resize==6) {
-               return array($cw, $ch, $repx, $repy); 
-       }
-       return array($imw, $imh, $repx, $repy);
-}
-
-
-function SetBackground(&$properties, &$maxwidth) {
-       // mPDF 5.6.10  5.6.11
-       if (isset($properties['BACKGROUND-ORIGIN']) && ($properties['BACKGROUND-ORIGIN']=='border-box' || $properties['BACKGROUND-ORIGIN']== 'content-box')) { $origin = $properties['BACKGROUND-ORIGIN']; }
-       else { $origin = 'padding-box'; }
-       // mPDF 5.6.10
-       if (isset($properties['BACKGROUND-SIZE'])) { 
-               if (stristr($properties['BACKGROUND-SIZE'] ,'contain') ) { $bsw = $bsh = 'contain'; }
-               else if (stristr($properties['BACKGROUND-SIZE'] ,'cover') ) { $bsw = $bsh = 'cover'; }
-               else {
-                       $bsw = $bsh = 'auto';
-                       $sz = preg_split('/\s+/',trim($properties['BACKGROUND-SIZE']));
-                       if (count($sz)==2) { $bsw = $sz[0]; $bsh = $sz[1]; }
-                       else { $bsw = $sz[0]; }
-                       if (!stristr($bsw ,'%') && !stristr($bsw ,'auto') ) { $bsw = $this->ConvertSize($bsw ,$maxwidth,$this->FontSize); }
-                       if (!stristr($bsh ,'%') && !stristr($bsh ,'auto') ) { $bsh = $this->ConvertSize($bsh ,$maxwidth,$this->FontSize); }
-               }
-               $size = array('w'=>$bsw, 'h'=>$bsh);
-       }
-          if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['BACKGROUND-IMAGE'])) {
-               return array('gradient'=>$properties['BACKGROUND-IMAGE'], 'origin'=>$origin, 'size'=>$size );   // mPDF 5.6.10
-          }
-          else {
-               $file = $properties['BACKGROUND-IMAGE'];
-               $sizesarray = $this->Image($file,0,0,0,0,'','',false, false, false, false, true);
-               if (isset($sizesarray['IMAGE_ID'])) {
-                       $image_id = $sizesarray['IMAGE_ID'];
-                       $orig_w = $sizesarray['WIDTH']*_MPDFK;          // in user units i.e. mm
-                       $orig_h = $sizesarray['HEIGHT']*_MPDFK;         // (using $this->img_dpi)
-                       if (isset($properties['BACKGROUND-IMAGE-RESOLUTION'])) { 
-                               if (preg_match('/from-image/i', $properties['BACKGROUND-IMAGE-RESOLUTION']) && isset($sizesarray['set-dpi']) && $sizesarray['set-dpi']>0) {
-                                       $orig_w *= $this->img_dpi / $sizesarray['set-dpi'];
-                                       $orig_h *= $this->img_dpi / $sizesarray['set-dpi'];
-                               }
-                               else if (preg_match('/(\d+)dpi/i', $properties['BACKGROUND-IMAGE-RESOLUTION'], $m)) {
-                                       $dpi = $m[1]; 
-                                       if ($dpi > 0) {
-                                               $orig_w *= $this->img_dpi / $dpi;
-                                               $orig_h *= $this->img_dpi / $dpi;
-                                       }
-                               }
-                       }
-                       $x_repeat = true;
-                       $y_repeat = true;
-                       if (isset($properties['BACKGROUND-REPEAT'])) {
-                               if ($properties['BACKGROUND-REPEAT']=='no-repeat' || $properties['BACKGROUND-REPEAT']=='repeat-x') { $y_repeat = false; }
-                               if ($properties['BACKGROUND-REPEAT']=='no-repeat' || $properties['BACKGROUND-REPEAT']=='repeat-y') { $x_repeat = false; }
-                       }
-                       $x_pos = 0;
-                       $y_pos = 0;
-                       if (isset($properties['BACKGROUND-POSITION'])) { 
-                               $ppos = preg_split('/\s+/',$properties['BACKGROUND-POSITION']);
-                               $x_pos = $ppos[0];
-                               $y_pos = $ppos[1];
-                               if (!stristr($x_pos ,'%') ) { $x_pos = $this->ConvertSize($x_pos ,$maxwidth,$this->FontSize); }
-                               if (!stristr($y_pos ,'%') ) { $y_pos = $this->ConvertSize($y_pos ,$maxwidth,$this->FontSize); }
-                       }
-                       if (isset($properties['BACKGROUND-IMAGE-RESIZE'])) { $resize = $properties['BACKGROUND-IMAGE-RESIZE']; }
-                       else { $resize = 0; }
-                       if (isset($properties['BACKGROUND-IMAGE-OPACITY'])) { $opacity = $properties['BACKGROUND-IMAGE-OPACITY']; }
-                       else { $opacity = 1; }
-                       return array('image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$sizesarray['itype'], 'origin'=>$origin, 'size'=>$size );
-               }
-          }
-          return false;
-}
-/*-- END BACKGROUNDS --*/
-
-function PrintBodyBackgrounds() {
-       $s = '';
-       $clx = 0;
-       $cly = 0;
-       $clw = $this->w;
-       $clh = $this->h;
-       // If using bleed and trim margins in paged media
-       if ($this->pageDim[$this->page]['outer_width_LR'] || $this->pageDim[$this->page]['outer_width_TB']) {
-               $clx = $this->pageDim[$this->page]['outer_width_LR'] - $this->pageDim[$this->page]['bleedMargin'];
-               $cly = $this->pageDim[$this->page]['outer_width_TB'] - $this->pageDim[$this->page]['bleedMargin'];
-               $clw = $this->w - 2*$clx;
-               $clh = $this->h - 2*$cly;
-       }
-
-       if ($this->bodyBackgroundColor) {
-               $s .= 'q ' .$this->SetFColor($this->bodyBackgroundColor, true)."\n";
-               if ($this->bodyBackgroundColor{0}==5) { // RGBa
-                       $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{4})/100, 'Normal', true, 'F')."\n";
-               }
-               else if ($this->bodyBackgroundColor{0}==6) {    // CMYKa
-                       $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{5})/100, 'Normal', true, 'F')."\n";
-               }
-               $s .= sprintf('%.3F %.3F %.3F %.3F re f Q', ($clx*_MPDFK), ($cly*_MPDFK),$clw*_MPDFK,$clh*_MPDFK)."\n";
-       }
-
-/*-- BACKGROUNDS --*/
-       if ($this->bodyBackgroundGradient) { 
-               $g = $this->grad->parseBackgroundGradient($this->bodyBackgroundGradient);
-               if ($g) {
-                       $s .= $this->grad->Gradient($clx, $cly, $clw, $clh, (isset($g['gradtype']) ? $g['gradtype'] : null), $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
-               }
-       }
-       if ($this->bodyBackgroundImage) {
-          if ( $this->bodyBackgroundImage['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->bodyBackgroundImage['gradient'])) {
-               $g = $this->grad->parseMozGradient( $this->bodyBackgroundImage['gradient']);
-               if ($g) {
-                       $s .= $this->grad->Gradient($clx, $cly, $clw, $clh, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
-               }
-          }
-          else if ($this->bodyBackgroundImage['image_id']) {   // Background pattern
-                       $n = count($this->patterns)+1;
-                       // If using resize, uses TrimBox (not including the bleed)
-                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($this->bodyBackgroundImage['orig_w'], $this->bodyBackgroundImage['orig_h'], $clw, $clh, $this->bodyBackgroundImage['resize'], $this->bodyBackgroundImage['x_repeat'], $this->bodyBackgroundImage['y_repeat']);
-
-                       $this->patterns[$n] = array('x'=>$clx, 'y'=>$cly, 'w'=>$clw, 'h'=>$clh, 'pgh'=>$this->h, 'image_id'=>$this->bodyBackgroundImage['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$this->bodyBackgroundImage['x_pos'], 'y_pos'=>$this->bodyBackgroundImage['y_pos'], 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$this->bodyBackgroundImage['itype']);
-                       if (($this->bodyBackgroundImage['opacity']>0 || $this->bodyBackgroundImage['opacity']==='0') && $this->bodyBackgroundImage['opacity']<1) { $opac = $this->SetAlpha($this->bodyBackgroundImage['opacity'],'Normal',true); }
-                       else { $opac = ''; }
-                       $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, ($clx*_MPDFK), ($cly*_MPDFK),$clw*_MPDFK, $clh*_MPDFK) ."\n";
-          }
-       }
-/*-- END BACKGROUNDS --*/
-       return $s;
-}
-
-
-function PrintPageBackgrounds($adjustmenty=0) {
-       $s = '';
-
-       ksort($this->pageBackgrounds);
-       foreach($this->pageBackgrounds AS $bl=>$pbs) {
-               foreach ($pbs AS $pb) {
-                 if ((!isset($pb['image_id']) && !isset($pb['gradient'])) || isset($pb['shadowonly'])) {       // Background colour or boxshadow
-                       // mPDF 5.6.01  - LAYERS
-                       if($pb['z-index']>0) {
-                               $this->current_layer = $pb['z-index'];
-                               $s .= "\n".'/OCBZ-index /ZI'.$pb['z-index'].' BDC'."\n";
-                       }
-
-                       if($pb['visibility']!='visible') {
-                               if($pb['visibility']=='printonly') 
-                                       $s .= '/OC /OC1 BDC'."\n";
-                               else if($pb['visibility']=='screenonly')
-                                       $s .= '/OC /OC2 BDC'."\n";
-                               else if($pb['visibility']=='hidden')
-                                       $s .= '/OC /OC3 BDC'."\n";
-                       }
-                       // Box shadow
-                       if (isset($pb['shadow']) && $pb['shadow']) { $s .= $pb['shadow']."\n"; }
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
-                       $s .= 'q '.$this->SetFColor($pb['col'], true)."\n";
-                       if ($pb['col']{0}==5) { // RGBa
-                               $s .= $this->SetAlpha(ord($pb['col']{4})/100, 'Normal', true, 'F')."\n"; 
-                       }
-                       else if ($pb['col']{0}==6) {    // CMYKa
-                               $s .= $this->SetAlpha(ord($pb['col']{5})/100, 'Normal', true, 'F')."\n";
-                       }
-                       $s .= sprintf('%.3F %.3F %.3F %.3F re f Q',$pb['x']*_MPDFK,($this->h-$pb['y'])*_MPDFK,$pb['w']*_MPDFK,-$pb['h']*_MPDFK)."\n";
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
-                       if($pb['visibility']!='visible')
-                               $s .= 'EMC'."\n";
-
-                       // mPDF 5.6.01  - LAYERS
-                       if($pb['z-index']>0) {
-                               $s .= "\n".'EMCBZ-index'."\n";
-                               $this->current_layer = 0;
-                       }
-                 }
-               }
-/*-- BACKGROUNDS --*/
-               foreach ($pbs AS $pb) {
-                 // mPDF 5.6.01  - LAYERS
-                 if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
-                       if($pb['z-index']>0) {
-                               $this->current_layer = $pb['z-index'];
-                               $s .= "\n".'/OCGZ-index /ZI'.$pb['z-index'].' BDC'."\n";
-                       }
-                       if($pb['visibility']!='visible') {
-                               if($pb['visibility']=='printonly') 
-                                       $s .= '/OC /OC1 BDC'."\n";
-                               else if($pb['visibility']=='screenonly')
-                                       $s .= '/OC /OC2 BDC'."\n";
-                               else if($pb['visibility']=='hidden')
-                                       $s .= '/OC /OC3 BDC'."\n";
-                       }
-                 }
-                 if (isset($pb['gradient']) && $pb['gradient']) {
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
-                       $s .= $this->grad->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
-                 }
-                 else if (isset($pb['image_id']) && $pb['image_id']) { // Background Image
-                       $pb['y'] -= $adjustmenty; 
-                       $pb['h'] += $adjustmenty; 
-                       $n = count($this->patterns)+1;
-                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($pb['orig_w'], $pb['orig_h'], $pb['w'], $pb['h'], $pb['resize'], $pb['x_repeat'], $pb['y_repeat'], $pb['bpa'], $pb['size']);       // mPDF 5.6.10
-                       $this->patterns[$n] = array('x'=>$pb['x'], 'y'=>$pb['y'], 'w'=>$pb['w'], 'h'=>$pb['h'], 'pgh'=>$this->h, 'image_id'=>$pb['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$pb['x_pos'], 'y_pos'=>$pb['y_pos'], 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$pb['itype'], 'bpa'=>$pb['bpa']);      // mPDF 5.6.10
-                       $x = $pb['x']*_MPDFK;
-                       $y = ($this->h - $pb['y'])*_MPDFK;
-                       $w = $pb['w']*_MPDFK;
-                       $h = -$pb['h']*_MPDFK;
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
-                       if ($this->writingHTMLfooter || $this->writingHTMLheader) {     // Write each (tiles) image rather than use as a pattern
-                               $iw = $pb['orig_w']/_MPDFK;
-                               $ih = $pb['orig_h']/_MPDFK;
-
-                               $w = $pb['w'];
-                               $h = $pb['h'];
-                               $x0 = $pb['x'];
-                               $y0 = $pb['y'];
-
-                               // mPDF 5.6.11
-                               if (isset($pb['bpa']) && $pb['bpa']) {
-                                       $w = $pb['bpa']['w'];
-                                       $h = $pb['bpa']['h'];
-                                       $x0 = $pb['bpa']['x'];
-                                       $y0 = $pb['bpa']['y'];
-                               }
-
-                               // mPDF 5.6.11
-                               if (isset($pb['size']['w']) && $pb['size']['w']) {
-                                       $size = $pb['size'];
-
-                                       if ($size['w']=='contain') {
-                                       // Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area. 
-                                       // Same as resize==3
-                                               $ih = $ih * $pb['bpa']['w']/$iw;
-                                               $iw = $pb['bpa']['w'];
-                                               if ($ih > $pb['bpa']['h']) {
-                                                       $iw = $iw * $pb['bpa']['h']/$ih;
-                                                       $ih = $pb['bpa']['h'];
-                                               }
-                                       }
-                                       else if ($size['w']=='cover') {
-                                       // Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area. 
-                                               $ih = $ih * $pb['bpa']['w']/$iw;
-                                               $iw = $pb['bpa']['w'];
-                                               if ($ih < $pb['bpa']['h']) {
-                                                       $iw = $iw * $ih/$pb['bpa']['h'];
-                                                       $ih = $pb['bpa']['h'];
-                                               }
-                                       }
-                                       else {
-                                               if (stristr($size['w'] ,'%')) {
-                                                       $size['w'] += 0; 
-                                                       $size['w'] /= 100; 
-                                                       $size['w'] = ($pb['bpa']['w'] * $size['w']);
-                                               }
-                                               if (stristr($size['h'] ,'%')) {
-                                                       $size['h'] += 0; 
-                                                       $size['h'] /= 100; 
-                                                       $size['h'] = ($pb['bpa']['h'] * $size['h']);
-                                               }
-                                               if ($size['w']=='auto' && $size['h']=='auto') {
-                                                       $iw = $iw;
-                                                       $ih = $ih;
-                                               }
-                                               else if ($size['w']=='auto' && $size['h']!='auto') {
-                                                       $iw = $iw * $size['h']/$ih;
-                                                       $ih = $size['h'];
-                                               }
-                                               else if ($size['w']!='auto' && $size['h']=='auto') {
-                                                       $ih = $ih * $size['w']/$iw;
-                                                       $iw = $size['w'];
-                                               }
-                                               else {
-                                                       $iw = $size['w'];
-                                                       $ih = $size['h'];
-                                               }
-                                       }
-                               }
-
-                               // Number to repeat
-                               if ($pb['x_repeat']) { $nx = ceil($pb['w']/$iw)+1; }    // mPDF 5.6.11
-                               else { $nx = 1; }
-                               if ($pb['y_repeat']) { $ny = ceil($pb['h']/$ih)+1; }    // mPDF 5.6.11
-                               else { $ny = 1; }
-
-                               $x_pos = $pb['x_pos'];
-                               if (stristr($x_pos ,'%') ) { 
-                                       $x_pos += 0; 
-                                       $x_pos /= 100; 
-                                       $x_pos = ($pb['bpa']['w'] * $x_pos) - ($iw * $x_pos);   // mPDF 5.6.11
-                               }
-                               $y_pos = $pb['y_pos'];
-                               if (stristr($y_pos ,'%') ) { 
-                                       $y_pos += 0; 
-                                       $y_pos /= 100; 
-                                       $y_pos = ($pb['bpa']['h'] * $y_pos) - ($ih * $y_pos);   // mPDF 5.6.11
-                               }
-                               if ($nx>1) {
-                                       while($x_pos>($pb['x']-$pb['bpa']['x'])) { $x_pos -= $iw; }     // mPDF 5.6.11
-                               }
-                               if ($ny>1) {
-                                       while($y_pos>($pb['y']-$pb['bpa']['y'])) { $y_pos -= $ih; }     // mPDF 5.6.11
-                               }
-                               for($xi=0;$xi<$nx;$xi++) {
-                                 for($yi=0;$yi<$ny;$yi++) {
-                                       $x = $x0 + $x_pos + ($iw*$xi);
-                                       $y = $y0 + $y_pos + ($ih*$yi);
-                                       if ($pb['opacity']>0 && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
-                                       else { $opac = ''; }
-                                       $s .= sprintf("q %s %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q", $opac,$iw*_MPDFK,$ih*_MPDFK,$x*_MPDFK,($this->h-($y+$ih))*_MPDFK,$pb['image_id']) ."\n";
-                                 }
-                               }
-                       }
-                       else {
-                               if (($pb['opacity']>0 || $pb['opacity']==='0') && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
-                               else { $opac = ''; }
-                               $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) ."\n";
-                       }
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
-                 }
-                 if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
-                       if($pb['visibility']!='visible')
-                               $s .= 'EMC'."\n";
-
-                       // mPDF 5.6.01  - LAYERS
-                       if($pb['z-index']>0) {
-                               $s .= "\n".'EMCGZ-index'."\n";
-                               $this->current_layer = 0;
-                       }
-                 }
-
-               }
-/*-- END BACKGROUNDS --*/
-       }
-       return $s;
-}
-
-function PrintTableBackgrounds($adjustmenty=0) {
-       $s = '';
-/*-- BACKGROUNDS --*/
-       ksort($this->tableBackgrounds);
-       foreach($this->tableBackgrounds AS $bl=>$pbs) {
-               foreach ($pbs AS $pb) {
-                if ((!isset($pb['gradient']) || !$pb['gradient']) && (!isset($pb['image_id']) || !$pb['image_id'])) {
-                       $s .= 'q '.$this->SetFColor($pb['col'], true)."\n";
-                       if ($pb['col']{0}==5) { // RGBa
-                               $s .= $this->SetAlpha(ord($pb['col']{4})/100, 'Normal', true, 'F')."\n"; 
-                       }
-                       else if ($pb['col']{0}==6) {    // CMYKa
-                               $s .= $this->SetAlpha(ord($pb['col']{5})/100, 'Normal', true, 'F')."\n";
-                       }
-                       $s .= sprintf('%.3F %.3F %.3F %.3F re %s Q',$pb['x']*_MPDFK,($this->h-$pb['y'])*_MPDFK,$pb['w']*_MPDFK,-$pb['h']*_MPDFK,'f')."\n";
-                 }
-                if (isset($pb['gradient']) && $pb['gradient']) {
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
-                       $s .= $this->grad->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
-                 }
-                 if (isset($pb['image_id']) && $pb['image_id']) {      // Background pattern
-                       $pb['y'] -= $adjustmenty; 
-                       $pb['h'] += $adjustmenty; 
-                       $n = count($this->patterns)+1;
-                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($pb['orig_w'], $pb['orig_h'], $pb['w'], $pb['h'], $pb['resize'], $pb['x_repeat'], $pb['y_repeat']);
-                       $this->patterns[$n] = array('x'=>$pb['x'], 'y'=>$pb['y'], 'w'=>$pb['w'], 'h'=>$pb['h'], 'pgh'=>$this->h, 'image_id'=>$pb['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$pb['x_pos'], 'y_pos'=>$pb['y_pos'], 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$pb['itype']);
-                       $x = $pb['x']*_MPDFK;
-                       $y = ($this->h - $pb['y'])*_MPDFK;
-                       $w = $pb['w']*_MPDFK;
-                       $h = -$pb['h']*_MPDFK;
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
-                       if ($pb['opacity']>0 && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
-                       else { $opac = ''; }
-                       $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) ."\n";
-                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
-                 }
-               }
-       }
-/*-- END BACKGROUNDS --*/
-       return $s;
-}
-
-// mPDF 5.6.01 - LAYERS
-function BeginLayer($id) {
-       if($this->current_layer>0) $this->EndLayer();
-       if ($id < 1) { return false; }
-       if (!isset($this->layers[$id])) { 
-               $this->layers[$id] = array('name'=>'Layer '.($id) );
-               if (($this->PDFA || $this->PDFX)) { $this->PDFAXwarnings[] = "Cannot use layers when using PDFA or PDFX"; return ''; }
-               else if (!$this->PDFA && !$this->PDFX) { $this->pdf_version='1.5'; }
-       }
-       $this->current_layer = $id;
-       $this->_out('/OCZ-index /ZI'.$id.' BDC');
-
-       $this->pageoutput[$this->page] = array();
-}
-
-function EndLayer() {
-       if($this->current_layer>0) {
-               $this->_out('EMCZ-index');
-               $this->current_layer = 0;
-       }
-}
-
-
-
-// Depracated - can use AddPage for all
-function AddPages($orientation='',$condition='', $resetpagenum='', $pagenumstyle='', $suppress='',$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='')
-{
-       $this->AddPage($orientation,$condition,$resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue,$pagesel,$newformat); 
-}
-
-
-function AddPageByArray($a) {
-       if (!is_array($a)) { $a = array(); }
-       $orientation = (isset($a['orientation']) ? $a['orientation'] : '');
-       $condition = (isset($a['condition']) ? $a['condition'] : (isset($a['type']) ? $a['type'] : ''));
-       $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
-       $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
-       $suppress = (isset($a['suppress']) ? $a['suppress'] : '');
-       $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
-       $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
-       $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
-       $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
-       $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
-       $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
-       $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
-       $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
-       $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
-       $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
-       $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
-       $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
-       $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
-       $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
-       $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
-       $newformat = (isset($a['newformat']) ? $a['newformat'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
-
-       $this->AddPage($orientation,$condition,$resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue,$pagesel,$newformat);
-
-}
-
-
-function AddPage($orientation='',$condition='', $resetpagenum='', $pagenumstyle='', $suppress='',$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='')
-{
-/*-- CSS-FLOAT --*/
-       // Float DIV
-       // Cannot do with columns on, or if any change in page orientation/margins etc.
-       // If next page already exists - i.e background /headers and footers already written
-       if ($this->state > 0 && $this->page < count($this->pages)) {
-               $bak_cml = $this->cMarginL;
-               $bak_cmr = $this->cMarginR; 
-               $bak_dw = $this->divwidth;
-               // Paint Div Border if necessary
-               if ($this->blklvl > 0) {
-                       $save_tr = $this->table_rotate; // *TABLES*
-                       $this->table_rotate = 0;        // *TABLES*
-                       if ($this->y == $this->blk[$this->blklvl]['y0']) {  $this->blk[$this->blklvl]['startpage']++; }
-                       if (($this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] ) { $toplvl = $this->blklvl; }
-                       else { $toplvl = $this->blklvl-1; }
-                       $sy = $this->y;
-                       for ($bl=1;$bl<=$toplvl;$bl++) {
-                               $this->PaintDivBB('pagebottom',0,$bl);
-                       }
-                       $this->y = $sy;
-                       $this->table_rotate = $save_tr; // *TABLES*
-               }
-               $s = $this->PrintPageBackgrounds();
-
-               // Writes after the marker so not overwritten later by page background etc.
-               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-               $this->pageBackgrounds = array();
-               $family=$this->FontFamily;
-               $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
-               $size=$this->FontSizePt;
-               $lw=$this->LineWidth;
-               $dc=$this->DrawColor;
-               $fc=$this->FillColor;
-               $tc=$this->TextColor;
-               $cf=$this->ColorFlag;
-
-               $this->printfloatbuffer();
-
-               //Move to next page
-               $this->page++;
-               $this->ResetMargins();
-               $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
-               $this->x=$this->lMargin;
-               $this->y=$this->tMargin;
-               $this->FontFamily='';
-               $this->_out('2 J');
-               $this->LineWidth=$lw;
-               $this->_out(sprintf('%.3F w',$lw*_MPDFK));
-               if($family)     $this->SetFont($family,$style,$size,true,true);
-               $this->DrawColor=$dc;
-               if($dc!=$this->defDrawColor) $this->_out($dc);
-               $this->FillColor=$fc;
-               if($fc!=$this->defFillColor) $this->_out($fc);
-               $this->TextColor=$tc;
-               $this->ColorFlag=$cf;
-               for($bl=1;$bl<=$this->blklvl;$bl++) {
-                       $this->blk[$bl]['y0'] = $this->y;
-                       // Don't correct more than once for background DIV containing a Float
-                       if (!isset($this->blk[$bl]['marginCorrected'][$this->page])) { $this->blk[$bl]['x0'] += $this->MarginCorrection; }
-                       $this->blk[$bl]['marginCorrected'][$this->page] = true; 
-               }
-               $this->cMarginL = $bak_cml;
-               $this->cMarginR = $bak_cmr;
-               $this->divwidth = $bak_dw;
-               return '';
-       }
-/*-- END CSS-FLOAT --*/
-
-       //Start a new page
-       if($this->state==0) $this->Open();
-
-       $bak_cml = $this->cMarginL;
-       $bak_cmr = $this->cMarginR; 
-       $bak_dw = $this->divwidth;
-
-
-       $bak_lh = $this->lineheight;
-
-       $orientation = substr(strtoupper($orientation),0,1);
-       $condition = strtoupper($condition);
-
-
-       if ($condition == 'NEXT-EVEN') {        // always adds at least one new page to create an Even page
-          if (!$this->mirrorMargins) { $condition = ''; }
-          else { 
-               if ($pagesel) { $pbch = $pagesel; $pagesel = ''; }      // *CSS-PAGE*
-               else { $pbch = false; } // *CSS-PAGE*
-               $this->AddPage($this->CurOrientation,'O'); 
-               if ($pbch ) { $pagesel = $pbch; }       // *CSS-PAGE*
-               $condition = ''; 
-          }
-       }
-       if ($condition == 'NEXT-ODD') { // always adds at least one new page to create an Odd page
-          if (!$this->mirrorMargins) { $condition = ''; }
-          else { 
-               if ($pagesel) { $pbch = $pagesel; $pagesel = ''; }      // *CSS-PAGE*
-               else { $pbch = false; } // *CSS-PAGE*
-               $this->AddPage($this->CurOrientation,'E'); 
-               if ($pbch ) { $pagesel = $pbch; }       // *CSS-PAGE*
-               $condition = ''; 
-          }
-       }
-
-
-       if ($condition == 'E') {        // only adds new page if needed to create an Even page
-          if (!$this->mirrorMargins || ($this->page)%2==0) { return false; }
-       }
-       if ($condition == 'O') {        // only adds new page if needed to create an Odd page
-          if (!$this->mirrorMargins || ($this->page)%2==1) { return false; }
-       }
-
-       if ($resetpagenum || $pagenumstyle || $suppress) {
-               $this->PageNumSubstitutions[] = array('from'=>($this->page+1), 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
-       }
-
-
-       $save_tr = $this->table_rotate; // *TABLES*
-       $this->table_rotate = 0;        // *TABLES*
-       $save_kwt = $this->kwt;
-       $this->kwt = 0;
-       // mPDF 5.6.01 - LAYERS
-       $save_layer = $this->current_layer;
-       $save_vis = $this->visibility;
-
-       if($this->visibility!='visible')
-               $this->SetVisibility('visible');
-       // mPDF 5.6.01 - LAYERS
-       $this->EndLayer();
-
-       // Paint Div Border if necessary
-       //PAINTS BACKGROUND COLOUR OR BORDERS for DIV - DISABLED FOR COLUMNS (cf. AcceptPageBreak) AT PRESENT in ->PaintDivBB
-       if (!$this->ColActive && $this->blklvl > 0) {
-               if (isset($this->blk[$this->blklvl]['y0']) && $this->y == $this->blk[$this->blklvl]['y0']) {  
-                       if (isset($this->blk[$this->blklvl]['startpage'])) { $this->blk[$this->blklvl]['startpage']++; }
-                       else { $this->blk[$this->blklvl]['startpage'] = 1; }
-               }
-               if ((isset($this->blk[$this->blklvl]['y0']) && $this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] ) { $toplvl = $this->blklvl; }
-               else { $toplvl = $this->blklvl-1; }
-               $sy = $this->y;
-               for ($bl=1;$bl<=$toplvl;$bl++) {
-
-                       // mPDF 5.6.01 - LAYERS
-                       if ($this->blk[$bl]['z-index']>0) {
-                               $this->BeginLayer($this->blk[$bl]['z-index']);
-                       }
-                       if (isset($this->blk[$bl]['visibility']) && $this->blk[$bl]['visibility'] && $this->blk[$bl]['visibility']!='visible') {
-                               $this->SetVisibility($this->blk[$bl]['visibility']);
-                       }
-
-                       $this->PaintDivBB('pagebottom',0,$bl);
-               }
-               $this->y = $sy;
-               // RESET block y0 and x0 - see below
-       }
-
-       if($this->visibility!='visible')
-               $this->SetVisibility('visible');
-       // mPDF 5.6.01 - LAYERS
-       $this->EndLayer();
-
-       // BODY Backgrounds
-       if ($this->page > 0) {
-               $s = '';
-               $s .= $this->PrintBodyBackgrounds();
-
-               $s .= $this->PrintPageBackgrounds();
-               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$s."\n".'\\1', $this->pages[$this->page]);
-               $this->pageBackgrounds = array();
-       }
-
-       $save_kt = $this->keep_block_together;
-       $this->keep_block_together = 0;
-
-       $save_cols = false;
-/*-- COLUMNS --*/
-       if ($this->ColActive) {
-               $save_cols = true;
-               $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
-               $this->SetColumns(0);
-       }
-/*-- END COLUMNS --*/
-
-
-       $family=$this->FontFamily;
-       $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
-       $size=$this->FontSizePt;
-       $this->ColumnAdjust = true;     // enables column height adjustment for the page
-       $lw=$this->LineWidth;
-       $dc=$this->DrawColor;
-       $fc=$this->FillColor;
-       $tc=$this->TextColor;
-       $cf=$this->ColorFlag;
-       if($this->page>0)
-       {
-               //Page footer
-               $this->InFooter=true;
-
-               $this->Reset();
-               $this->pageoutput[$this->page] = array();
-
-               $this->Footer();
-               //Close page
-               $this->_endpage();
-       }
-
-
-       //Start new page
-       $this->_beginpage($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat);
-       if ($this->docTemplate) {
-               $pagecount = $this->SetSourceFile($this->docTemplate);
-               if (($this->page - $this->docTemplateStart) > $pagecount) {
-                       if ($this->docTemplateContinue) { 
-                               $tplIdx = $this->ImportPage($pagecount);
-                               $this->UseTemplate($tplIdx);
-                       }
-               }
-               else {
-                       $tplIdx = $this->ImportPage(($this->page - $this->docTemplateStart));
-                       $this->UseTemplate($tplIdx);
-               }
-       }
-       if ($this->pageTemplate) {
-               $this->UseTemplate($this->pageTemplate);
-       }
-
-       // Tiling Patterns
-       $this->_out('___PAGE___START'.$this->uniqstr);
-       $this->_out('___BACKGROUND___PATTERNS'.$this->uniqstr);
-       $this->_out('___HEADER___MARKER'.$this->uniqstr);
-       $this->pageBackgrounds = array();
-
-       //Set line cap style to square
-       $this->SetLineCap(2);
-       //Set line width
-       $this->LineWidth=$lw;
-       $this->_out(sprintf('%.3F w',$lw*_MPDFK));
-       //Set font
-       if($family)     $this->SetFont($family,$style,$size,true,true); // forces write
-       //Set colors
-       $this->DrawColor=$dc;
-       if($dc!=$this->defDrawColor) $this->_out($dc);
-       $this->FillColor=$fc;
-       if($fc!=$this->defFillColor) $this->_out($fc);
-       $this->TextColor=$tc;
-       $this->ColorFlag=$cf;
-
-       //Page header
-       $this->Header();
-
-       //Restore line width
-       if($this->LineWidth!=$lw)
-       {
-               $this->LineWidth=$lw;
-               $this->_out(sprintf('%.3F w',$lw*_MPDFK));
-       }
-       //Restore font
-       if($family)     $this->SetFont($family,$style,$size,true,true); // forces write
-       //Restore colors
-       if($this->DrawColor!=$dc)
-       {
-               $this->DrawColor=$dc;
-               $this->_out($dc);
-       }
-       if($this->FillColor!=$fc)
-       {
-               $this->FillColor=$fc;
-               $this->_out($fc);
-       }
-       $this->TextColor=$tc;
-       $this->ColorFlag=$cf;
-       $this->InFooter=false;
-
-       // mPDF 5.6.01 - LAYERS
-       if ($save_layer>0)
-               $this->BeginLayer($save_layer);
-
-       if($save_vis!='visible')
-               $this->SetVisibility($save_vis);
-
-/*-- COLUMNS --*/
-       if ($save_cols) {
-               // Restore columns
-               $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
-       }
-       if ($this->ColActive) { $this->SetCol(0); }
-/*-- END COLUMNS --*/
-
-
-       //RESET BLOCK BORDER TOP
-       if (!$this->ColActive) {
-               for($bl=1;$bl<=$this->blklvl;$bl++) {
-                       $this->blk[$bl]['y0'] = $this->y;
-                       if (isset($this->blk[$bl]['x0'])) { $this->blk[$bl]['x0'] += $this->MarginCorrection; }
-                       else { $this->blk[$bl]['x0'] = $this->MarginCorrection; }
-                       // Added mPDF 3.0 Float DIV
-                       $this->blk[$bl]['marginCorrected'][$this->page] = true; 
-               }
-       }
-
-
-       $this->table_rotate = $save_tr; // *TABLES*
-       $this->kwt = $save_kwt;
-
-       $this->keep_block_together = $save_kt ;
-
-       $this->cMarginL = $bak_cml;
-       $this->cMarginR = $bak_cmr;
-       $this->divwidth = $bak_dw;
-
-       $this->lineheight = $bak_lh;
-}
-
-
-function PageNo() {
-       //Get current page number
-       return $this->page;
-}
-
-function AddSpotColorsFromFile($file) {
-       $colors = @file($file) or die("Cannot load spot colors file - ".$file);
-       foreach($colors AS $sc) {
-               list($name, $c, $m, $y, $k) = preg_split("/\t/",$sc);
-               $c = intval($c);
-               $m = intval($m);
-               $y = intval($y);
-               $k = intval($k);
-               $this->AddSpotColor($name, $c, $m, $y, $k);
-       }
-}
-
-function AddSpotColor($name, $c, $m, $y, $k) {
-       $name = strtoupper(trim($name));
-       if(!isset($this->spotColors[$name])) {
-               $i=count($this->spotColors)+1;
-               $this->spotColors[$name]=array('i'=>$i,'c'=>$c,'m'=>$m,'y'=>$y,'k'=>$k);
-               $this->spotColorIDs[$i]=$name;
-       }
-}
-
-function SetColor($col, $type='') {
-       $out = '';
-       if ($col{0}==3 || $col{0}==5) { // RGB / RGBa
-               $out = sprintf('%.3F %.3F %.3F rg',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255);
-       }
-       else if ($col{0}==1) {  // GRAYSCALE
-               $out = sprintf('%.3F g',ord($col{1})/255);
-       }
-       else if ($col{0}==2) {  // SPOT COLOR
-               $out = sprintf('/CS%d cs %.3F scn',ord($col{1}),ord($col{2})/100);
-       }
-       else if ($col{0}==4 || $col{0}==6) {    // CMYK / CMYKa
-               $out = sprintf('%.3F %.3F %.3F %.3F k', ord($col{1})/100, ord($col{2})/100, ord($col{3})/100, ord($col{4})/100);
-       }
-       if ($type=='Draw') { $out = strtoupper($out); } // e.g. rg => RG
-       else if ($type=='CodeOnly') { $out = preg_replace('/\s(rg|g|k)/','',$out); }
-       return $out; 
-}
-
-
-function SetDColor($col, $return=false) {
-       $out = $this->SetColor($col, 'Draw');
-       if ($return) { return $out; }
-       if ($out=='') { return ''; }
-       $this->DrawColor = $out;
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['DrawColor']) && $this->pageoutput[$this->page]['DrawColor'] != $this->DrawColor) || !isset($this->pageoutput[$this->page]['DrawColor']) || $this->keep_block_together)) { $this->_out($this->DrawColor); }
-       $this->pageoutput[$this->page]['DrawColor'] = $this->DrawColor;
-}
-
-function SetFColor($col, $return=false) {
-       $out = $this->SetColor($col, 'Fill');
-       if ($return) { return $out; }
-       if ($out=='') { return ''; }
-       $this->FillColor = $out;
-       $this->ColorFlag = ($out != $this->TextColor);
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['FillColor']) && $this->pageoutput[$this->page]['FillColor'] != $this->FillColor) || !isset($this->pageoutput[$this->page]['FillColor']) || $this->keep_block_together)) { $this->_out($this->FillColor); }
-       $this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
-}
-
-function SetTColor($col, $return=false) {
-       $out = $this->SetColor($col, 'Text');
-       if ($return) { return $out; }
-       if ($out=='') { return ''; }
-       $this->TextColor = $out;
-       $this->ColorFlag = ($this->FillColor != $out);
-} 
-
-
-function SetDrawColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
-       //Set color for all stroking operations
-       $col = array();
-       if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
-       else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
-       else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
-       $out = $this->SetDColor($col, $return);
-       return $out;
-}
-
-function SetFillColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
-       //Set color for all filling operations
-       $col = array();
-       if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
-       else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
-       else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
-       $out = $this->SetFColor($col, $return);
-       return $out;
-}
-
-function SetTextColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
-       //Set color for text
-       $col = array();
-       if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
-       else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
-       else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
-       $out = $this->SetTColor($col, $return);
-       return $out;
-}
-
-function _getCharWidth(&$cw, $u, $isdef=true) {
-       if ($u==0) { $w = false; }
-       else { $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]); }
-       if ($w == 65535) { return 0; }
-       else if ($w) { return $w; }
-       else if ($isdef) { return false; }
-       else { return 0; }
-}
-
-function _charDefined(&$cw, $u) {
-       if ($u==0) { return false; }
-       $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]);
-       if ($w) { return true; }
-       else { return false; }
-}
-
-function GetCharWidthCore($c) {
-       //Get width of a single character in the current Core font
-       $c = (string)$c;
-       $w = 0;
-       // Soft Hyphens chr(173)
-       if ($c == chr(173) && $this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') { 
-               return 0;
-       }
-       else if ($this->S && isset($this->upperCase[ord($c)])) { 
-               $charw = $this->CurrentFont['cw'][chr($this->upperCase[ord($c)])];
-               if ($charw!==false) { 
-                       $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
-                       $w+=$charw; 
-               }
-       }
-       else if (isset($this->CurrentFont['cw'][$c])) { 
-               $w += $this->CurrentFont['cw'][$c]; 
-       } 
-       else if (isset($this->CurrentFont['cw'][ord($c)])) { 
-               $w += $this->CurrentFont['cw'][ord($c)]; 
-       }
-       $w *=  ($this->FontSize/ 1000);
-       if ($this->minwSpacing || $this->fixedlSpacing) {
-               if ($c==' ') $nb_spaces = 1;
-               else $nb_spaces = 0;
-               $w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
-       }
-       return ($w);
-}
-
-function GetCharWidthNonCore($c, $addSubset=true) {
-       //Get width of a single character in the current Non-Core font
-       $c = (string)$c;
-       $w = 0;
-       $unicode = $this->UTF8StringToArray($c, $addSubset);
-       $char = $unicode[0];
-/*-- CJK-FONTS --*/
-       if ($this->CurrentFont['type'] == 'Type0') {    // CJK Adobe fonts
-                       if ($char == 173) { return 0; } // Soft Hyphens
-                       elseif (isset($this->CurrentFont['cw'][$char])) { $w+=$this->CurrentFont['cw'][$char]; } 
-                       elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
-                       else { $w += 500; }
-       }
-       else { 
-/*-- END CJK-FONTS --*/
-                       if ($char == 173) { return 0; } // Soft Hyphens
-                       else if ($this->S && isset($this->upperCase[$char])) {
-                               $charw = $this->_getCharWidth($this->CurrentFont['cw'],$this->upperCase[$char]);
-                               if ($charw!==false) { 
-                                       $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
-                                       $w+=$charw; 
-                               }
-                               elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
-                               elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
-                               else { $w += 500; }
-                       }
-                       else {
-                               $charw = $this->_getCharWidth($this->CurrentFont['cw'],$char);
-                               if ($charw!==false) { $w+=$charw; }
-                               elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
-                               elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
-                               else { $w += 500; }
-                       }
-       }       // *CJK-FONTS*
-       $w *=  ($this->FontSize/ 1000);
-       if ($this->minwSpacing || $this->fixedlSpacing) {
-               if ($c==' ') $nb_spaces = 1;
-               else $nb_spaces = 0;
-               $w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
-       }
-       return ($w);
-}
-
-
-function GetCharWidth($c, $addSubset=true) {
-       if (!$this->usingCoreFont) {
-               return $this->GetCharWidthNonCore($c, $addSubset);
-       } 
-       else {
-               return $this->GetCharWidthCore($c);
-       }
-}
-
-function GetStringWidth($s, $addSubset=true) {
-                       //Get width of a string in the current font
-                       $s = (string)$s;
-                       $cw = &$this->CurrentFont['cw'];
-                       $w = 0;
-                       $kerning = 0;
-                       $lastchar = 0;
-                       $nb_carac = 0;
-                       $nb_spaces = 0;
-                       // mPDF ITERATION
-                       if ($this->iterationCounter) $s = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/', '\\1', $s);
-
-                       if (!$this->usingCoreFont) {
-                             $s = str_replace("\xc2\xad",'',$s ); 
-                               $unicode = $this->UTF8StringToArray($s, $addSubset);
-                               if ($this->minwSpacing || $this->fixedlSpacing) {
-                                       $nb_carac = count($unicode);  
-                                       $nb_spaces = mb_substr_count($s,' ', $this->mb_enc);  
-                               }
-/*-- CJK-FONTS --*/
-                               if ($this->CurrentFont['type'] == 'Type0') {    // CJK Adobe fonts
-                                       foreach($unicode as $char) {
-                                               if (isset($cw[$char])) { $w+=$cw[$char]; } 
-                                               elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
-                                               else { $w += 500; }
-                                       }
-                               }
-                               else { 
-/*-- END CJK-FONTS --*/
-                                       foreach($unicode as $char) {
-                                               if ($this->S && isset($this->upperCase[$char])) {
-                                                       $charw = $this->_getCharWidth($cw,$this->upperCase[$char]);
-                                                       if ($charw!==false) { 
-                                                               $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
-                                                               $w+=$charw; 
-                                                       }
-                                                       elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
-                                                       elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
-                                                       else { $w += 500; }
-                                               }
-                                               else {
-                                                       $charw = $this->_getCharWidth($cw,$char);
-                                                       if ($charw!==false) { $w+=$charw; }
-                                                       elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
-                                                       elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
-                                                       else { $w += 500; }
-                                                       if ($this->kerning && $this->useKerning && $lastchar) {
-                                                               if (isset($this->CurrentFont['kerninfo'][$lastchar][$char])) { 
-                                                                       $kerning += $this->CurrentFont['kerninfo'][$lastchar][$char]; 
-                                                               }
-                                                       }
-                                                       $lastchar = $char;
-                                               }
-                                       }
-                               }       // *CJK-FONTS*
-
-                       } 
-                       else {
-                               if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') { 
-                               $s = str_replace(chr(173),'',$s ); 
-                               }
-                               $nb_carac = $l = strlen($s);
-                               if ($this->minwSpacing || $this->fixedlSpacing) {
-                                       $nb_spaces = substr_count($s,' ');  
-                               }
-                               for($i=0; $i<$l; $i++) {
-                                       if ($this->S && isset($this->upperCase[ord($s[$i])])) { 
-                                               $charw = $cw[chr($this->upperCase[ord($s[$i])])];
-                                               if ($charw!==false) { 
-                                                       $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
-                                                       $w+=$charw; 
-                                               }
-                                       }
-                                       else if (isset($cw[$s[$i]])) { 
-                                               $w += $cw[$s[$i]]; 
-                                       } 
-                                       else if (isset($cw[ord($s[$i])])) { 
-                                               $w += $cw[ord($s[$i])]; 
-                                       }
-                                       if ($this->kerning && $this->useKerning && $i>0) {
-                                               if (isset($this->CurrentFont['kerninfo'][$s[($i-1)]][$s[$i]])) { 
-                                                       $kerning += $this->CurrentFont['kerninfo'][$s[($i-1)]][$s[$i]]; 
-                                               }
-                                       }
-                               }
-                       }
-                       unset($cw);
-                       if ($this->kerning && $this->useKerning) { $w += $kerning; }
-                       $w *=  ($this->FontSize/ 1000);
-                       $w += (($nb_carac + $nb_spaces) * $this->fixedlSpacing) + ($nb_spaces * $this->minwSpacing);
-                       return ($w);
-}
-
-function SetLineWidth($width) {
-       //Set line width
-       $this->LineWidth=$width;
-       $lwout = (sprintf('%.3F w',$width*_MPDFK));
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['LineWidth']) && $this->pageoutput[$this->page]['LineWidth'] != $lwout) || !isset($this->pageoutput[$this->page]['LineWidth']) || $this->keep_block_together)) {
-                $this->_out($lwout); 
-       }
-       $this->pageoutput[$this->page]['LineWidth'] = $lwout;
-}
-
-function Line($x1,$y1,$x2,$y2) {
-       //Draw a line
-       $this->_out(sprintf('%.3F %.3F m %.3F %.3F l S',$x1*_MPDFK,($this->h-$y1)*_MPDFK,$x2*_MPDFK,($this->h-$y2)*_MPDFK));
-}
-
-function Arrow($x1,$y1,$x2,$y2,$headsize=3,$fill='B',$angle=25) {
-  //F == fill //S == stroke //B == stroke and fill 
-  // angle = splay of arrowhead - 1 - 89 degrees
-  if($fill=='F')       $fill='f';
-  elseif($fill=='FD' or $fill=='DF' or $fill=='B') $fill='B';
-  else $fill='S';
-  $a = atan2(($y2-$y1),($x2-$x1));
-  $b = $a + deg2rad($angle);
-  $c = $a - deg2rad($angle);
-  $x3 = $x2 - ($headsize* cos($b));
-  $y3 = $this->h-($y2 - ($headsize* sin($b)));
-  $x4 = $x2 - ($headsize* cos($c));
-  $y4 = $this->h-($y2 - ($headsize* sin($c)));
-
-  $x5 = $x3-($x3-$x4)/2;       // mid point of base of arrowhead - to join arrow line to
-  $y5 = $y3-($y3-$y4)/2;
-
-  $s = '';
-  $s.=sprintf('%.3F %.3F m %.3F %.3F l S',$x1*_MPDFK,($this->h-$y1)*_MPDFK,$x5*_MPDFK,$y5*_MPDFK);
-  $this->_out($s);
-
-  $s = '';
-  $s.=sprintf('%.3F %.3F m %.3F %.3F l %.3F %.3F l %.3F %.3F l %.3F %.3F l ',$x5*_MPDFK,$y5*_MPDFK,$x3*_MPDFK,$y3*_MPDFK,$x2*_MPDFK,($this->h-$y2)*_MPDFK,$x4*_MPDFK,$y4*_MPDFK,$x5*_MPDFK,$y5*_MPDFK);
-  $s.=$fill;
-  $this->_out($s);
-}
-
-
-function Rect($x,$y,$w,$h,$style='') {
-       //Draw a rectangle
-       if($style=='F') $op='f';
-       elseif($style=='FD' or $style=='DF') $op='B';
-       else $op='S';
-       $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$h*_MPDFK,$op));
-}
-
-function AddFont($family,$style='') {
-       if(empty($family)) { return; }
-       $family = strtolower($family);
-       $style=strtoupper($style);
-       $style=str_replace('U','',$style);
-       if($style=='IB') $style='BI';
-       $fontkey = $family.$style;
-       // check if the font has been already added
-       if(isset($this->fonts[$fontkey])) {
-               return;
-       }
-
-/*-- CJK-FONTS --*/
-       if (in_array($family,$this->available_CJK_fonts)) { 
-               if (empty($this->Big5_widths)) { require(_MPDF_PATH . 'includes/CJKdata.php'); }
-               $this->AddCJKFont($family);     // don't need to add style
-               return; 
-       }
-/*-- END CJK-FONTS --*/
-
-       if ($this->usingCoreFont) { die("mPDF Error - problem with Font management"); }
-
-       $stylekey = $style;
-       if (!$style) { $stylekey = 'R'; }
-
-       if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) {
-               die('mPDF Error - Font is not supported - '.$family.' '.$style);
-       }
-
-       $name = '';
-       $originalsize = 0;
-       $sip = false;
-       $smp = false;
-       $unAGlyphs = false;     // mPDF 5.4.05
-       $haskerninfo = false;
-       $BMPselected = false;
-       @include(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php');
-
-       $ttffile = '';
-       if (defined('_MPDF_SYSTEM_TTFONTS')) {
-               $ttffile = _MPDF_SYSTEM_TTFONTS.$this->fontdata[$family][$stylekey];
-               if (!file_exists($ttffile)) { $ttffile = ''; }
-       }
-       if (!$ttffile) {
-               $ttffile = _MPDF_TTFONTPATH.$this->fontdata[$family][$stylekey];
-               if (!file_exists($ttffile)) { die("mPDF Error - cannot find TTF TrueType font file - ".$ttffile); }
-       }
-       $ttfstat = stat($ttffile);
-
-       if (isset($this->fontdata[$family]['TTCfontID'][$stylekey])) { $TTCfontID = $this->fontdata[$family]['TTCfontID'][$stylekey]; }
-       else { $TTCfontID = 0; }
-
-
-       $BMPonly = false;
-       if (in_array($family,$this->BMPonly)) { $BMPonly = true; }
-       $regenerate = false;
-       if ($BMPonly && !$BMPselected) { $regenerate = true; }
-       else if (!$BMPonly && $BMPselected) { $regenerate = true; }
-       if ($this->useKerning && !$haskerninfo) { $regenerate = true; }
-       // mPDF 5.4.05
-       if (isset($this->fontdata[$family]['unAGlyphs']) && $this->fontdata[$family]['unAGlyphs'] && !$unAGlyphs) { 
-               $regenerate = true; 
-               $unAGlyphs = true;
-       }
-       else if ((!isset($this->fontdata[$family]['unAGlyphs']) || !$this->fontdata[$family]['unAGlyphs']) && $unAGlyphs) { 
-               $regenerate = true; 
-               $unAGlyphs = false;
-       }
-       if (!isset($name) || $originalsize != $ttfstat['size'] || $regenerate) {
-               if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
-               $ttf = new TTFontFile();
-               $ttf->getMetrics($ttffile, $TTCfontID, $this->debugfonts, $BMPonly, $this->useKerning, $unAGlyphs);     // mPDF 5.4.05
-               $cw = $ttf->charWidths;
-               $kerninfo = $ttf->kerninfo;
-               $haskerninfo = true;
-               $name = preg_replace('/[ ()]/','',$ttf->fullName);
-               $sip = $ttf->sipset;
-               $smp = $ttf->smpset;
-
-               $desc= array('Ascent'=>round($ttf->ascent),
-               'Descent'=>round($ttf->descent),
-               'CapHeight'=>round($ttf->capHeight),
-               'Flags'=>$ttf->flags,
-               'FontBBox'=>'['.round($ttf->bbox[0])." ".round($ttf->bbox[1])." ".round($ttf->bbox[2])." ".round($ttf->bbox[3]).']',
-               'ItalicAngle'=>$ttf->italicAngle,
-               'StemV'=>round($ttf->stemV),
-               'MissingWidth'=>round($ttf->defaultWidth));
-               $panose = '';
-               // mPDF 5.5.19
-               if (count($ttf->panose)) {
-                       $panoseArray = array_merge(array($ttf->sFamilyClass, $ttf->sFamilySubClass), $ttf->panose);
-                       foreach($panoseArray as $value)
-                               $panose .= ' '.dechex($value);
-               }
-               $up = round($ttf->underlinePosition);
-               $ut = round($ttf->underlineThickness);
-               $originalsize = $ttfstat['size']+0;
-               $type = 'TTF';
-               //Generate metrics .php file
-               $s='<?php'."\n";
-               $s.='$name=\''.$name."';\n";
-               $s.='$type=\''.$type."';\n";
-               $s.='$desc='.var_export($desc,true).";\n";
-               $s.='$up='.$up.";\n";
-               $s.='$ut='.$ut.";\n";
-               $s.='$ttffile=\''.$ttffile."';\n";
-               $s.='$TTCfontID=\''.$TTCfontID."';\n";
-               $s.='$originalsize='.$originalsize.";\n";
-               if ($sip) $s.='$sip=true;'."\n";
-               else $s.='$sip=false;'."\n";
-               if ($smp) $s.='$smp=true;'."\n";
-               else $s.='$smp=false;'."\n";
-               if ($BMPonly) $s.='$BMPselected=true;'."\n";
-               else $s.='$BMPselected=false;'."\n";
-               $s.='$fontkey=\''.$fontkey."';\n";
-               $s.='$panose=\''.$panose."';\n";
-               if ($this->useKerning) { 
-                       $s.='$kerninfo='.var_export($kerninfo,true).";\n"; 
-                       $s.='$haskerninfo=true;'."\n";
-               }
-               else $s.='$haskerninfo=false;'."\n";
-               // mPDF 5.4.05
-               if ($this->fontdata[$family]['unAGlyphs']) { 
-                       $s.='$unAGlyphs=true;'."\n";
-               }
-               else $s.='$unAGlyphs=false;'."\n";
-               $s.="?>";
-               if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
-                       $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php',"w");
-                       fwrite($fh,$s,strlen($s));
-                       fclose($fh);
-                       $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.cw.dat',"wb");
-                       fwrite($fh,$cw,strlen($cw));
-                       fclose($fh);
-                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cgm');
-                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.z');
-                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cw127.php');
-                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cw');
-               }
-               else if ($this->debugfonts) { $this->Error('Cannot write to the font caching directory - '._MPDF_TTFONTDATAPATH); }
-               unset($ttf);
-       }
-       else {
-               $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$fontkey.'.cw.dat'); 
-       }
-
-       if (isset($this->fontdata[$family]['indic']) && $this->fontdata[$family]['indic']) { $indic = true; }
-       else { $indic = false; }
-       if (isset($this->fontdata[$family]['sip-ext']) && $this->fontdata[$family]['sip-ext']) { $sipext = $this->fontdata[$family]['sip-ext']; }
-       else { $sipext = ''; }
-
-
-       $i = count($this->fonts)+$this->extraFontSubsets+1;
-       if ($sip || $smp) {
-               $this->fonts[$fontkey] = array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'panose'=>$panose, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'ttffile'=>$ttffile, 'fontkey'=>$fontkey, 'subsets'=>array(0=>range(0,127)), 'subsetfontids'=>array($i), 'used'=>false, 'indic'=>$indic, 'sip'=>$sip, 'sipext'=>$sipext, 'smp'=>$smp, 'TTCfontID' => $TTCfontID, 'unAGlyphs' => false);        // mPDF 5.4.05
-       }
-       else  {
-               $ss = array();
-               for ($s=32; $s<128; $s++) { $ss[$s] = $s; }
-               $this->fonts[$fontkey] = array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'panose'=>$panose, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'ttffile'=>$ttffile, 'fontkey'=>$fontkey, 'subset'=>$ss, 'used'=>false, 'indic'=>$indic, 'sip'=>$sip, 'sipext'=>$sipext, 'smp'=>$smp, 'TTCfontID' => $TTCfontID, 'unAGlyphs' => $unAGlyphs);   // mPDF 5.4.05
-       }
-       if ($this->useKerning && $haskerninfo) { $this->fonts[$fontkey]['kerninfo'] = $kerninfo; }
-       $this->FontFiles[$fontkey]=array('length1'=>$originalsize, 'type'=>"TTF", 'ttffile'=>$ttffile, 'sip'=>$sip, 'smp'=>$smp);
-       unset($cw);
-}
-
-
-
-function SetFont($family,$style='',$size=0, $write=true, $forcewrite=false) {
-       $family=strtolower($family);
-       if (!$this->onlyCoreFonts) {
-               if ($family == 'sans' || $family == 'sans-serif') { $family = $this->sans_fonts[0]; }
-               if ($family == 'serif') { $family = $this->serif_fonts[0]; }
-               if ($family == 'mono' || $family == 'monospace') { $family = $this->mono_fonts[0]; }
-       }
-       if (isset($this->fonttrans[$family]) && $this->fonttrans[$family]) { $family = $this->fonttrans[$family]; }
-       if($family=='') { 
-               if ($this->FontFamily) { $family=$this->FontFamily; }
-               else if ($this->default_font) { $family=$this->default_font; }
-               else { $this->Error("No font or default font set!"); }
-       }
-       $this->ReqFontStyle = $style;   // required or requested style - used later for artificial bold/italic
-
-       if (($family == 'csymbol') || ($family == 'czapfdingbats')  || ($family == 'ctimes')  || ($family == 'ccourier') || ($family == 'chelvetica')) { 
-               if ($this->PDFA || $this->PDFX) {
-                  if ($family == 'csymbol' || $family == 'czapfdingbats') { 
-                       $this->Error("Symbol and Zapfdingbats cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a).");
-                  }
-                  if ($family == 'ctimes'  || $family == 'ccourier' || $family == 'chelvetica') { 
-                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Core Adobe font ".ucfirst($family)." cannot be embedded in mPDF, which is required for PDFA1-b or PDFX/1-a. (Embedded font will be substituted.)"; }
-                       if ($family == 'chelvetica') { $family = 'sans'; }
-                       if ($family == 'ctimes') { $family = 'serif'; }
-                       if ($family == 'ccourier') { $family = 'mono'; }
-                  }
-                  $this->usingCoreFont = false;
-               }
-               else { $this->usingCoreFont = true; }
-               if($family=='csymbol' || $family=='czapfdingbats') { $style=''; }
-       }
-       else {  $this->usingCoreFont = false; }
-
-       $this->U=false;
-       $this->S=false;
-       if ($style) {
-               $style=strtoupper($style);
-               if(strpos($style,'U')!==false) {
-                       $this->U=true;
-                       $style=str_replace('U','',$style);
-               }
-               if(strpos($style,'S')!==false) {
-                       $this->S=true;
-                       // Small Caps
-                       if (empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); } 
-                       $style=str_replace('S','',$style);
-               }
-               if ($style=='IB') $style='BI';
-       }
-       if ($size==0) $size=$this->FontSizePt;
-
-       $fontkey=$family.$style;
-
-       $stylekey = $style;
-       if (!$stylekey) { $stylekey = "R"; }
-
-       if (!$this->onlyCoreFonts && !$this->usingCoreFont) {
-               if(!isset($this->fonts[$fontkey]) || count($this->default_available_fonts) != count($this->available_unifonts) ) { // not already added
-/*-- CJK-FONTS --*/
-                 // CJK fonts
-                 if (in_array($fontkey,$this->available_CJK_fonts)) {
-                       if(!isset($this->fonts[$fontkey])) {    // already added
-                               if (empty($this->Big5_widths)) { require(_MPDF_PATH . 'includes/CJKdata.php'); }
-                               $this->AddCJKFont($family);     // don't need to add style
-                       }
-                 }
-                 // Test to see if requested font/style is available - or substitute
-                 else
-/*-- END CJK-FONTS --*/
-                 if (!in_array($fontkey,$this->available_unifonts)) {
-                       // If font[nostyle] exists - set it
-                       if (in_array($family,$this->available_unifonts)) {
-                               $style = '';
-                       }
-
-                       // Else if only one font available - set it (assumes if only one font available it will not have a style)
-                       else if (count($this->available_unifonts) == 1) {
-                               $family = $this->available_unifonts[0];
-                               $style = '';
-                       }
-
-                       else {
-                               $found = 0;
-                               // else substitute font of similar type
-                               if (in_array($family,$this->sans_fonts)) { 
-                                       $i = array_intersect($this->sans_fonts,$this->available_unifonts);
-                                       if (count($i)) {
-                                               $i = array_values($i);
-                                               // with requested style if possible
-                                               if (!in_array(($i[0].$style),$this->available_unifonts)) {
-                                                       $style = '';
-                                               }
-                                               $family = $i[0]; 
-                                               $found = 1;
-                                       }
-                               }
-                               else if (in_array($family,$this->serif_fonts)) { 
-                                       $i = array_intersect($this->serif_fonts,$this->available_unifonts);
-                                       if (count($i)) {
-                                               $i = array_values($i);
-                                               // with requested style if possible
-                                               if (!in_array(($i[0].$style),$this->available_unifonts)) {
-                                                       $style = '';
-                                               }
-                                               $family = $i[0]; 
-                                               $found = 1;
-                                       }
-                               }
-                               else if (in_array($family,$this->mono_fonts)) {
-                                       $i = array_intersect($this->mono_fonts,$this->available_unifonts);
-                                       if (count($i)) {
-                                               $i = array_values($i);
-                                               // with requested style if possible
-                                               if (!in_array(($i[0].$style),$this->available_unifonts)) {
-                                                       $style = '';
-                                               }
-                                               $family = $i[0]; 
-                                               $found = 1;
-                                       }
-                               }
-
-                               if (!$found) {
-                                       // set first available font
-                                       $fs = $this->available_unifonts[0];
-                                       preg_match('/^([a-z_0-9\-]+)([BI]{0,2})$/',$fs,$fas);   // Allow "-"
-                                       // with requested style if possible
-                                       $ws = $fas[1].$style;
-                                       if (in_array($ws,$this->available_unifonts)) {
-                                               $family = $fas[1]; // leave $style as is
-                                       }
-                                       else if (in_array($fas[1],$this->available_unifonts)) {
-                                       // or without style
-                                               $family = $fas[1];
-                                               $style = '';
-                                       }
-                                       else {
-                                       // or with the style specified 
-                                               $family = $fas[1];
-                                               $style = $fas[2];
-                                       }
-                               }
-                       }
-                       $fontkey = $family.$style; 
-                 }
-               }
-               // try to add font (if not already added)
-               $this->AddFont($family, $style);
-
-               //Test if font is already selected
-               if($this->FontFamily == $family && $this->FontFamily == $this->currentfontfamily && $this->FontStyle == $style && $this->FontStyle == $this->currentfontstyle && $this->FontSizePt == $size && $this->FontSizePt == $this->currentfontsize && !$forcewrite) {
-                       return $family;
-               }
-
-               $fontkey = $family.$style; 
-
-               //Select it
-               $this->FontFamily = $family;
-               $this->FontStyle = $style;
-               $this->FontSizePt = $size;
-               $this->FontSize = $size / _MPDFK;
-               $this->CurrentFont = &$this->fonts[$fontkey];
-               if ($write) { 
-                       $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
-                       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
-                       $this->pageoutput[$this->page]['Font'] = $fontout;
-               }
-
-
-
-               // Added - currentfont (lowercase) used in HTML2PDF
-               $this->currentfontfamily=$family;
-               $this->currentfontsize=$size;
-               $this->currentfontstyle=$style.($this->U ? 'U' : '').($this->S ? 'S' : '');
-               $this->setMBencoding('UTF-8');
-       }
-
-       else {  // if using core fonts
-
-
-               if ($this->PDFA || $this->PDFX) {
-                       $this->Error('Core Adobe fonts cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a) - cannot use option to use core fonts.');
-               }
-               $this->setMBencoding('windows-1252');
-
-               //Test if font is already selected
-               if(($this->FontFamily == $family) AND ($this->FontStyle == $style) AND ($this->FontSizePt == $size) && !$forcewrite) {
-                       return $family;
-               }
-
-               if (!isset($this->CoreFonts[$fontkey])) {
-                       if (in_array($family,$this->serif_fonts)) { $family = 'ctimes'; }
-                       else if (in_array($family,$this->mono_fonts)) { $family = 'ccourier'; }
-                       else { $family = 'chelvetica'; }
-                       $this->usingCoreFont = true;
-                       $fontkey = $family.$style; 
-               }
-
-               if(!isset($this->fonts[$fontkey]))      {
-                       // STANDARD CORE FONTS
-                       if (isset($this->CoreFonts[$fontkey])) {
-                               //Load metric file
-                               $file=$family;
-                               if($family=='ctimes' || $family=='chelvetica' || $family=='ccourier') { $file.=strtolower($style); }
-                               $file.='.php';
-                               include(_MPDF_PATH.'font/'.$file);
-                               if(!isset($cw)) { $this->Error('Could not include font metric file'); }
-                               $i=count($this->fonts)+$this->extraFontSubsets+1;
-                               $this->fonts[$fontkey]=array('i'=>$i,'type'=>'core','name'=>$this->CoreFonts[$fontkey],'desc'=>$desc,'up'=>$up,'ut'=>$ut,'cw'=>$cw);
-                               if ($this->useKerning) { $this->fonts[$fontkey]['kerninfo'] = $kerninfo; }
-                       }
-                       else {
-                               die('mPDF error - Font not defined');
-                       }
-               }
-               //Test if font is already selected
-               if(($this->FontFamily == $family) AND ($this->FontStyle == $style) AND ($this->FontSizePt == $size) && !$forcewrite) {
-                       return $family;
-               }
-               //Select it
-               $this->FontFamily=$family;
-               $this->FontStyle=$style;
-               $this->FontSizePt=$size;
-               $this->FontSize=$size/_MPDFK;
-               $this->CurrentFont=&$this->fonts[$fontkey];
-               if ($write) { 
-                       $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
-                       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
-                       $this->pageoutput[$this->page]['Font'] = $fontout;
-               }
-               // Added - currentfont (lowercase) used in HTML2PDF
-               $this->currentfontfamily=$family;
-               $this->currentfontsize=$size;
-               $this->currentfontstyle=$style.($this->U ? 'U' : '').($this->S ? 'S' : '');
-
-       }
-
-       return $family;
-}
-
-function SetFontSize($size,$write=true) {
-       //Set font size in points
-       if($this->FontSizePt==$size) return;
-       $this->FontSizePt=$size;
-       $this->FontSize=$size/_MPDFK;
-       $this->currentfontsize=$size;
-               if ($write) { 
-                       $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
-                       // Edited mPDF 3.0
-                       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
-                       $this->pageoutput[$this->page]['Font'] = $fontout;
-               }
-}
-
-function AddLink() {
-       //Create a new internal link
-       $n=count($this->links)+1;
-       $this->links[$n]=array(0,0);
-       return $n;
-}
-
-function SetLink($link,$y=0,$page=-1) {
-       //Set destination of internal link
-       if($y==-1) $y=$this->y;
-       if($page==-1)   $page=$this->page;
-       $this->links[$link]=array($page,$y);
-}
-
-function Link($x,$y,$w,$h,$link) {
-       $l = array($x*_MPDFK,$this->hPt-$y*_MPDFK,$w*_MPDFK,$h*_MPDFK,$link);
-       if ($this->keep_block_together) {       // Save to array - don't write yet
-               $this->ktLinks[$this->page][]= $l;
-               return;
-       }
-       else if ($this->table_rotate) { // *TABLES*
-               $this->tbrot_Links[$this->page][]= $l;  // *TABLES*
-               return; // *TABLES*
-       }       // *TABLES*
-       else if ($this->kwt) {
-               $this->kwt_Links[$this->page][]= $l;
-               return;
-       }
-
-       if ($this->writingHTMLheader || $this->writingHTMLfooter) {
-               $this->HTMLheaderPageLinks[]= $l;
-               return;
-       }
-       //Put a link on the page
-       $this->PageLinks[$this->page][]= $l;
-       // Save cross-reference to Column buffer
-       $ref = count($this->PageLinks[$this->page])-1;  // *COLUMNS*
-       $this->columnLinks[$this->CurrCol][INTVAL($this->x)][INTVAL($this->y)] = $ref;  // *COLUMNS*
-
-}
-
-function Text($x,$y,$txt) {
-       // Output a string
-       // Called (internally) by Watermark and _tableWrite [rotated cells]
-       // Expects input to be mb_encoded if necessary and RTL reversed
-
-       // ARTIFICIAL BOLD AND ITALIC
-       $s = 'q ';
-       if ($this->falseBoldWeight && strpos($this->ReqFontStyle,"B") !== false && strpos($this->FontStyle,"B") === false) {
-               $s  .= '2 Tr 1 J 1 j ';
-               $s .= sprintf('%.3F w ',($this->FontSize/130)*_MPDFK*$this->falseBoldWeight);
-               $tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
-               if($this->FillColor!=$tc) { $s .= $tc.' '; }            // stroke (outline) = same colour as text(fill)
-       }
-       if (strpos($this->ReqFontStyle,"I") !== false && strpos($this->FontStyle,"I") === false) {
-               $aix = '1 0 0.261799 1 %.3F %.3F Tm'; 
-       }
-       else { $aix = '%.3F %.3F Td'; }
-
-       if($this->ColorFlag) $s.=$this->TextColor.' ';
-
-       $this->CurrentFont['used']= true;
-       if ($this->CurrentFont['type']=='TTF' && ($this->CurrentFont['sip'] || $this->CurrentFont['smp'])) {
-             $txt2 = str_replace(chr(194).chr(160),chr(32),$txt);
-               $txt2 = $this->UTF8toSubset($txt2);
-               $s.=sprintf('BT '.$aix.' %s Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$txt2);
-       }
-       else if (!$this->usingCoreFont) {
-             $txt2 = str_replace(chr(194).chr(160),chr(32),$txt); 
-               $this->UTF8StringToArray($txt2);        // this is just to add chars to subset list
-               if ($this->kerning && $this->useKerning) { $s .= $this->_kern($txt2, '', $aix, $x, $y); }
-               else {
-                       //Convert string to UTF-16BE without BOM
-                       $txt2= $this->UTF8ToUTF16BE($txt2, false);
-                       $s.=sprintf('BT '.$aix.' (%s) Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$this->_escape($txt2));
-               }
-       }
-       else {
-             $txt2 = str_replace(chr(160),chr(32),$txt);
-               if ($this->kerning && $this->useKerning) { $s .= $this->_kern($txt2, '', $aix, $x, $y); }
-               else {
-                       $s.=sprintf('BT '.$aix.' (%s) Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$this->_escape($txt2));
-               }
-       }
-       if($this->U && $txt!='') {
-               $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
-               if($this->FillColor!=$c) { $s.= ' '.$c.' '; }
-               if (isset($this->CurrentFont['up'])) { $up=$this->CurrentFont['up']; }
-               else { $up = -100; }
-               $adjusty = (-$up/1000* $this->FontSize);
-               if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
-               else { $ut = 60/1000* $this->FontSize; }
-               $olw = $this->LineWidth;
-               $s.=' '.(sprintf(' %.3F w',$ut*_MPDFK));
-               $s.=' '.$this->_dounderline($x,$y + $adjusty,$txt);
-               $s.=' '.(sprintf(' %.3F w',$olw*_MPDFK));
-               if($this->FillColor!=$c) { $s.= ' '.$this->FillColor.' '; }
-       }
-       // STRIKETHROUGH
-       if($this->strike && $txt!='') {
-               $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
-               if($this->FillColor!=$c) { $s.= ' '.$c.' '; }
-               //Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
-               if (isset($this->CurrentFont['desc']['CapHeight'])) { $ch=$this->CurrentFont['desc']['CapHeight']; }
-               else { $ch = 700; }
-               $adjusty = (-$ch/1000* $this->FontSize) * 0.35;
-               if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
-               else { $ut = 60/1000* $this->FontSize; }
-               $olw = $this->LineWidth;
-               $s.=' '.(sprintf(' %.3F w',$ut*_MPDFK));
-               $s.=' '.$this->_dounderline($x,$y+$adjusty,$txt);
-               $s.=' '.(sprintf(' %.3F w',$olw*_MPDFK));
-               if($this->FillColor!=$c) { $s.= ' '.$this->FillColor.' '; }
-       }
-       $s .= 'Q';
-       $this->_out($s);
-}
-
-/*-- DIRECTW --*/
-function WriteText($x,$y,$txt) {
-       // Output a string using Text() but does encoding and text reversing of RTL
-       $txt = $this->purify_utf8_text($txt);
-       if ($this->text_input_as_HTML) {
-               $txt = $this->all_entities_to_utf8($txt);
-       }
-       if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
-       // DIRECTIONALITY
-       if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; }        // *RTL*
-       $this->magic_reverse_dir($txt, true, $this->directionality);    // *RTL*
-       // Font-specific ligature substitution for Indic fonts
-       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($txt);       // *INDIC*
-       $this->Text($x,$y,$txt);
-}
-
-function WriteCell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='', $currentx=0) {
-       //Output a cell using Cell() but does encoding and text reversing of RTL
-       $txt = $this->purify_utf8_text($txt);
-       if ($this->text_input_as_HTML) {
-               $txt = $this->all_entities_to_utf8($txt);
-       }
-       if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
-       // DIRECTIONALITY
-       if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; }        // *RTL*
-       $this->magic_reverse_dir($txt, true, $this->directionality);    // *RTL*
-       // Font-specific ligature substitution for Indic fonts
-       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($txt);       // *INDIC*
-       $this->Cell($w,$h,$txt,$border,$ln,$align,$fill,$link, $currentx);
-}
-/*-- END DIRECTW --*/
-
-
-function ResetSpacing() {
-       if ($this->ws != 0) { $this->_out('BT 0 Tw ET'); }
-       $this->ws=0;
-       if ($this->charspacing != 0) { $this->_out('BT 0 Tc ET'); }
-       $this->charspacing=0;
-}
-
-
-function SetSpacing($cs,$ws) {
-       if (intval($cs*1000)==0) { $cs = 0; }
-       if ($cs) { $this->_out(sprintf('BT %.3F Tc ET',$cs)); }
-       else if ($this->charspacing != 0) { $this->_out('BT 0 Tc ET'); }
-       $this->charspacing=$cs;
-       if (intval($ws*1000)==0) { $ws = 0; }
-       if ($ws) { $this->_out(sprintf('BT %.3F Tw ET',$ws)); }
-       else if ($this->ws != 0) { $this->_out('BT 0 Tw ET'); }
-       $this->ws=$ws;
-}
-
-// WORD SPACING
-function GetJspacing($nc,$ns,$w,$inclCursive) {
-       $ws = 0; 
-       $charspacing = 0;
-       $ww = $this->jSWord;
-       $ncx = $nc-1;
-       if ($nc == 0) { return array(0,0); }
-       else if ($nc==1) { $charspacing = $w; }
-       // Only word spacing allowed / possible
-       else if ($this->fixedlSpacing !== false || $inclCursive) {
-               if ($ns) { $ws = $w / $ns; } 
-       }
-       else if (!$ns) {
-               $charspacing = $w / ($ncx );
-               if (($this->jSmaxChar > 0) && ($charspacing > $this->jSmaxChar)) { 
-                       $charspacing = $this->jSmaxChar;
-               }
-       }
-       else if ($ns == ($ncx )) {
-               $charspacing = $w / $ns;
-       }
-       else {
-               if ($this->usingCoreFont) {
-                       $cs = ($w * (1 - $this->jSWord)) / ($ncx );
-                       if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
-                               $cs = $this->jSmaxChar;
-                               $ww = 1 - (($cs * ($ncx ))/$w);
-                       }
-                       $charspacing = $cs; 
-                       $ws = ($w * ($ww) ) / $ns;
-               }
-               else {
-                       $cs = ($w * (1 - $this->jSWord)) / ($ncx -$ns);
-                       if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
-                               $cs = $this->jSmaxChar;
-                               $ww = 1 - (($cs * ($ncx -$ns))/$w);
-                       }
-                       $charspacing = $cs; 
-                       $ws = (($w * ($ww) ) / $ns) - $charspacing;
-               }
-       }
-       return array($charspacing,$ws); 
-}
-
-function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='', $currentx=0, $lcpaddingL=0, $lcpaddingR=0, $valign='M', $spanfill=0, $abovefont=0, $belowfont=0, $exactWidth=false) {
-       //Output a cell
-       // Expects input to be mb_encoded if necessary and RTL reversed
-       // NON_BREAKING SPACE
-       if ($this->usingCoreFont) {
-             $txt = str_replace(chr(160),chr(32),$txt);
-       }
-       else {
-             $txt = str_replace(chr(194).chr(160),chr(32),$txt);
-       }
-
-       $oldcolumn = $this->CurrCol;
-       // Automatic page break
-       // Allows PAGE-BREAK-AFTER = avoid to work
-       if (!$this->tableLevel && (($this->y+$this->divheight>$this->PageBreakTrigger) || ($this->y+$h>$this->PageBreakTrigger) || 
-               ($this->y+($h*2)+$this->blk[$this->blklvl]['padding_bottom']+$this->blk[$this->blklvl]['margin_bottom']>$this->PageBreakTrigger && $this->blk[$this->blklvl]['page_break_after_avoid'])) and !$this->InFooter and $this->AcceptPageBreak()) {   // mPDF 5.7.2
-               $x=$this->x;//Current X position
-
-
-               // WORD SPACING
-               $ws=$this->ws;//Word Spacing
-               $charspacing=$this->charspacing;//Character Spacing
-               $this->ResetSpacing();
-
-               $this->AddPage($this->CurOrientation);
-               // Added to correct for OddEven Margins
-               $x += $this->MarginCorrection;
-               if ($currentx) { 
-                       $currentx += $this->MarginCorrection;
-               } 
-               $this->x=$x;
-               // WORD SPACING
-               $this->SetSpacing($charspacing,$ws);
-       }
-
-       // Test: to put line through centre of cell: $this->Line($this->x,$this->y+($h/2),$this->x+50,$this->y+($h/2));
-
-/*-- COLUMNS --*/
-       // COLS
-       // COLUMN CHANGE
-       if ($this->CurrCol != $oldcolumn) {
-               if ($currentx) { 
-                       $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-               } 
-               $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-       }
-
-       // COLUMNS Update/overwrite the lowest bottom of printing y value for a column
-       if ($this->ColActive) {
-               if ($h) { $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$h; }
-               else { $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$this->divheight; }
-       }
-/*-- END COLUMNS --*/
-
-       // KEEP BLOCK TOGETHER Update/overwrite the lowest bottom of printing y value on first page
-       if ($this->keep_block_together) {
-               if ($h) { $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$h; }
-//             else { $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$this->divheight; }
-       }
-
-       if($w==0) $w = $this->w-$this->rMargin-$this->x;
-       $s='';
-       if($fill==1 && $this->FillColor) { 
-               if((isset($this->pageoutput[$this->page]['FillColor']) && $this->pageoutput[$this->page]['FillColor'] != $this->FillColor) || !isset($this->pageoutput[$this->page]['FillColor']) || $this->keep_block_together) { $s .= $this->FillColor.' '; }
-               $this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
-       }
-
-
-       $boxtop = $this->y;
-       $boxheight = $h;
-       $boxbottom = $this->y+$h;
-
-       if($txt!='') {
-               // FONT SIZE - this determines the baseline caculation
-               if ($this->linemaxfontsize && !$this->processingHeader) { $bfs = $this->linemaxfontsize; }
-               else  { $bfs = $this->FontSize; }
-               //Calculate baseline Superscript and Subscript Y coordinate adjustment
-               $bfx = $this->baselineC;
-               $baseline = $bfx*$bfs;
-               if($this->SUP) { $baseline += ($bfx-1.05)*$this->FontSize; }
-               else if($this->SUB) { $baseline += ($bfx + 0.04)*$this->FontSize; }
-               else if($this->bullet) { $baseline += ($bfx-0.7)*$this->FontSize; }
-
-               // Vertical align (for Images)
-               if ($abovefont || $belowfont) { // from flowing block - valign always M
-                       $va = $abovefont + (0.5*$bfs);
-               }
-               else if ($this->lineheight_correction) { 
-                       if ($valign == 'T') { $va = (0.5 * $bfs * $this->lineheight_correction); }
-                       else if ($valign == 'B') { $va = $h-(0.5 * $bfs * $this->lineheight_correction); }
-                       else { $va = 0.5*$h; }  // Middle
-               }
-               else { 
-                       if ($valign == 'T') { $va = (0.5 * $bfs * $this->default_lineheight_correction); }
-                       else if ($valign == 'B') { $va = $h-(0.5 * $bfs * $this->default_lineheight_correction); }
-                       else { $va = 0.5*$h; }  // Middle
-               }
-
-               // ONLY SET THESE IF WANT TO CONFINE BORDER +/- FILL TO FIT FONTSIZE - NOT FULL CELL AS IS ORIGINAL FUNCTION
-               // spanfill or spanborder are set in FlowingBlock functions
-               if ($spanfill || !empty($this->spanborddet) || $link!='') {
-                       $exth = 0.2;    // Add to fontsize to increase height of background / link / border
-                       $boxtop = $this->y+$baseline+$va-($this->FontSize*(1+$exth/2)*(0.5+$bfx));
-                       $boxheight = $this->FontSize * (1+$exth);
-                       $boxbottom = $boxtop + $boxheight;
-               }
-       }
-
-       $bbw = $tbw = $lbw = $rbw = 0;  // Border widths
-       if (!empty($this->spanborddet)) { 
-               if (!isset($this->spanborddet['B'])) { $this->spanborddet['B'] = array('s' => 0, 'style' => '', 'w' => 0); }
-               if (!isset($this->spanborddet['T'])) { $this->spanborddet['T'] = array('s' => 0, 'style' => '', 'w' => 0); }
-               if (!isset($this->spanborddet['L'])) { $this->spanborddet['L'] = array('s' => 0, 'style' => '', 'w' => 0); }
-               if (!isset($this->spanborddet['R'])) { $this->spanborddet['R'] = array('s' => 0, 'style' => '', 'w' => 0); }
-               $bbw = $this->spanborddet['B']['w'];
-               $tbw = $this->spanborddet['T']['w'];
-               $lbw = $this->spanborddet['L']['w'];
-               $rbw = $this->spanborddet['R']['w'];
-       }
-       if($fill==1 || $border==1 || !empty($this->spanborddet)) {
-               if (!empty($this->spanborddet)) { 
-                       if ($fill==1) {
-                               $s.=sprintf('%.3F %.3F %.3F %.3F re f ',($this->x-$lbw)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($w+$lbw+$rbw)*_MPDFK,(-$boxheight-$tbw-$bbw)*_MPDFK);
-                       }
-                       $s.= ' q ';
-                       $dashon = 3;
-                       $dashoff = 3.5;
-                       $dot = 2.5;
-                       if($tbw) {
-                               $short = 0;
-                               if ($this->spanborddet['T']['style'] == 'dashed') {
-                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$tbw*$dashon*_MPDFK,$tbw*$dashoff*_MPDFK);
-                               }
-                               else if ($this->spanborddet['T']['style'] == 'dotted') {
-                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$tbw*$dot*_MPDFK,-$tbw/2*_MPDFK);
-                                       $short = $tbw/2;
-                               }
-                               else {
-                                       $s.=' 0 j 0 J [] 0 d ';
-                               }
-                               $c = $this->SetDColor($this->spanborddet['T']['c'],true);
-                               if ($this->spanborddet['T']['style'] == 'double') {
-                                       $s.=sprintf(' %s %.3F w ',$c,$tbw/3*_MPDFK);
-                                       $xadj = $xadj2 = 0; 
-                                       if ($this->spanborddet['L']['style'] == 'double') { $xadj = $this->spanborddet['L']['w']*2/3; }
-                                       if ($this->spanborddet['R']['style'] == 'double') { $xadj2 = $this->spanborddet['R']['w']*2/3; }
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxtop+$tbw*5/6)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxtop+$tbw*5/6)*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw+$xadj)*_MPDFK,($this->h-$boxtop+$tbw/6)*_MPDFK,($this->x+$w+$rbw-$short-$xadj2)*_MPDFK,($this->h-$boxtop+$tbw/6)*_MPDFK);
-                               }
-                               else {
-                                       $s.=sprintf(' %s %.3F w ',$c,$tbw*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxtop+$tbw/2)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxtop+$tbw/2)*_MPDFK);
-                               }
-                       }
-                       if($bbw) {
-                               $short = 0;
-                               if ($this->spanborddet['B']['style'] == 'dashed') {
-                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$bbw*$dashon*_MPDFK,$bbw*$dashoff*_MPDFK);
-                               }
-                               else if ($this->spanborddet['B']['style'] == 'dotted') {
-                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$bbw*$dot*_MPDFK,-$bbw/2*_MPDFK);
-                                       $short = $bbw/2;
-                               }
-                               else {
-                                       $s.=' 0 j 0 J [] 0 d ';
-                               }
-                               $c = $this->SetDColor($this->spanborddet['B']['c'],true);
-                               if ($this->spanborddet['B']['style'] == 'double') {
-                                       $s.=sprintf(' %s %.3F w ',$c,$bbw/3*_MPDFK);
-                                       $xadj = $xadj2 = 0; 
-                                       if ($this->spanborddet['L']['style'] == 'double') { $xadj = $this->spanborddet['L']['w']*2/3; }
-                                       if ($this->spanborddet['R']['style'] == 'double') { $xadj2 = $this->spanborddet['R']['w']*2/3; }
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw+$xadj)*_MPDFK,($this->h-$boxbottom-$bbw/6)*_MPDFK,($this->x+$w+$rbw-$short-$xadj2)*_MPDFK,($this->h-$boxbottom-$bbw/6)*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxbottom-$bbw*5/6)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxbottom-$bbw*5/6)*_MPDFK);
-                               }
-                               else {
-                                       $s.=sprintf(' %s %.3F w ',$c,$bbw*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxbottom-$bbw/2)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxbottom-$bbw/2)*_MPDFK);
-                               }
-                       }
-                       if($lbw) {
-                               $short = 0;
-                               if ($this->spanborddet['L']['style'] == 'dashed') {
-                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$lbw*$dashon*_MPDFK,$lbw*$dashoff*_MPDFK);
-                               }
-                               else if ($this->spanborddet['L']['style'] == 'dotted') {
-                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$lbw*$dot*_MPDFK,-$lbw/2*_MPDFK);
-                                       $short = $lbw/2;
-                               }
-                               else {
-                                       $s.=' 0 j 0 J [] 0 d ';
-                               }
-                               $c = $this->SetDColor($this->spanborddet['L']['c'],true);
-                               if ($this->spanborddet['L']['style'] == 'double') {
-                                       $s.=sprintf(' %s %.3F w ',$c,$lbw/3*_MPDFK);
-                                       $yadj = $yadj2 = 0; 
-                                       if ($this->spanborddet['T']['style'] == 'double') { $yadj = $this->spanborddet['T']['w']*2/3; }
-                                       if ($this->spanborddet['B']['style'] == 'double') { $yadj2 = $this->spanborddet['B']['w']*2/3; }
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw/6)*_MPDFK,($this->h-$boxtop+$tbw-$yadj)*_MPDFK,($this->x-$lbw/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short+$yadj2)*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw*5/6)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x-$lbw*5/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
-                               }
-                               else {
-                                       $s.=sprintf(' %s %.3F w ',$c,$lbw*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw/2)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x-$lbw/2)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
-                               }
-                       }
-                       if($rbw) {
-                               $short = 0;
-                               if ($this->spanborddet['R']['style'] == 'dashed') {
-                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$rbw*$dashon*_MPDFK,$rbw*$dashoff*_MPDFK);
-                               }
-                               else if ($this->spanborddet['R']['style'] == 'dotted') {
-                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$rbw*$dot*_MPDFK,-$rbw/2*_MPDFK);
-                                       $short = $rbw/2;
-                               }
-                               else {
-                                       $s.=' 0 j 0 J [] 0 d ';
-                               }
-                               $c = $this->SetDColor($this->spanborddet['R']['c'],true);
-                               if ($this->spanborddet['R']['style'] == 'double') {
-                                       $s.=sprintf(' %s %.3F w ',$c,$rbw/3*_MPDFK);
-                                       $yadj = $yadj2 = 0; 
-                                       if ($this->spanborddet['T']['style'] == 'double') { $yadj = $this->spanborddet['T']['w']*2/3; }
-                                       if ($this->spanborddet['B']['style'] == 'double') { $yadj2 = $this->spanborddet['B']['w']*2/3; }
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x+$w+$rbw/6)*_MPDFK,($this->h-$boxtop+$tbw-$yadj)*_MPDFK,($this->x+$w+$rbw/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short+$yadj2)*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x+$w+$rbw*5/6)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x+$w+$rbw*5/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
-                               }
-                               else {
-                                       $s.=sprintf(' %s %.3F w ',$c,$rbw*_MPDFK);
-                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x+$w+$rbw/2)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x+$w+$rbw/2)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
-                               }
-                       }
-                       $s.= ' Q ';
-               }
-               else {
-                       if ($fill==1) $op=($border==1) ? 'B' : 'f';
-                       else $op='S';
-                       $s.=sprintf('%.3F %.3F %.3F %.3F re %s ',$this->x*_MPDFK,($this->h-$boxtop)*_MPDFK,$w*_MPDFK,-$boxheight*_MPDFK,$op);
-               }
-       }
-
-       if(is_string($border)) {
-               $x=$this->x;
-               $y=$this->y;
-               if(is_int(strpos($border,'L')))
-                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-$boxtop)*_MPDFK,$x*_MPDFK,($this->h-($boxbottom))*_MPDFK);
-               if(is_int(strpos($border,'T')))
-                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-$boxtop)*_MPDFK,($x+$w)*_MPDFK,($this->h-$boxtop)*_MPDFK);
-               if(is_int(strpos($border,'R')))
-                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($x+$w)*_MPDFK,($this->h-$boxtop)*_MPDFK,($x+$w)*_MPDFK,($this->h-($boxbottom))*_MPDFK);
-               if(is_int(strpos($border,'B')))
-                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-($boxbottom))*_MPDFK,($x+$w)*_MPDFK,($this->h-($boxbottom))*_MPDFK);
-       }
-
-       if($txt!='') {
-               if ($exactWidth)
-                       $stringWidth = $w;  
-               else 
-                       $stringWidth = $this->GetStringWidth($txt) + ( $this->charspacing * mb_strlen( $txt, $this->mb_enc ) / _MPDFK )
-                                + ( $this->ws * mb_substr_count( $txt, ' ', $this->mb_enc ) / _MPDFK );
-
-               // Set x OFFSET FOR PRINTING
-               if($align=='R') {
-                       $dx=$w-$this->cMarginR - $stringWidth - $lcpaddingR;
-               }
-               elseif($align=='C') {
-                       $dx=(($w - $stringWidth )/2);
-               }
-               elseif($align=='L' or $align=='J') $dx=$this->cMarginL + $lcpaddingL;
-               else $dx = 0;
-
-               if($this->ColorFlag) $s .='q '.$this->TextColor.' ';
-
-               // OUTLINE
-               if($this->textparam['outline-s'] && !$this->S) {        // mPDF 5.6.07
-                       $s .=' '.sprintf('%.3F w',$this->LineWidth*_MPDFK).' ';
-                       $s .=" $this->DrawColor ";
-                       $s .=" 2 Tr ";
-               }
-               else if ($this->falseBoldWeight && strpos($this->ReqFontStyle,"B") !== false && strpos($this->FontStyle,"B") === false && !$this->S) {  // can't use together with OUTLINE or Small Caps
-                       $s .= ' 2 Tr 1 J 1 j ';
-                       $s .= ' '.sprintf('%.3F w',($this->FontSize/130)*_MPDFK*$this->falseBoldWeight).' ';
-                       $tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
-                       if($this->FillColor!=$tc) { $s .= ' '.$tc.' '; }                // stroke (outline) = same colour as text(fill)
-               }
-               else { $s .=" 0 Tr "; } // mPDF 5.6.07
-
-               if (strpos($this->ReqFontStyle,"I") !== false && strpos($this->FontStyle,"I") === false) {      // Artificial italic
-                       $aix = '1 0 0.261799 1 %.3F %.3F Tm '; 
-               }
-               else { $aix = '%.3F %.3F Td '; }
-
-               // THE TEXT
-               $sub = '';
-               $this->CurrentFont['used']= true;
-
-               // WORD SPACING
-               // IF multibyte - Tw has no effect - need to use alternative method - do word spacing using an adjustment before each space
-               if ($this->ws && !$this->usingCoreFont && !$this->CurrentFont['sip'] && !$this->CurrentFont['smp'] && !$this->S) {
-                 $sub .= ' BT 0 Tw ET ';        
-                 if ($this->kerning && $this->useKerning) { $sub .= $this->_kern($txt, 'MBTw', $aix, ($this->x+$dx), ($this->y+$baseline+$va)); }
-                 else {
-                       $space = " ";
-                       //Convert string to UTF-16BE without BOM
-                       $space= $this->UTF8ToUTF16BE($space , false);
-                       $space=$this->_escape($space ); 
-                       $sub .=sprintf('BT '.$aix,($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK);
-                       $t = explode(' ',$txt);
-                       $sub .=sprintf(' %.3F Tc [',$this->charspacing);
-                       $numt = count($t);
-                       for($i=0;$i<$numt;$i++) {
-                               $tx = $t[$i]; 
-                               //Convert string to UTF-16BE without BOM
-                               $tx = $this->UTF8ToUTF16BE($tx , false);
-                               $tx = $this->_escape($tx); 
-                               $sub .=sprintf('(%s) ',$tx);
-                               if (($i+1)<$numt) {
-                                       $adj = -($this->ws)*1000/$this->FontSizePt;
-                                       $sub .=sprintf('%d(%s) ',$adj,$space);
-                               }
-                       }
-                       $sub .='] TJ ';
-                       $sub .=' ET';
-                 }
-               }
-               else {
-                 $txt2= $txt;
-                 if ($this->CurrentFont['type']=='TTF' && ($this->CurrentFont['sip'] || $this->CurrentFont['smp'])) {
-                       if ($this->S) { $sub .= $this->_smallCaps($txt2, 'SIPSMP', $aix, $dx, _MPDFK, $baseline, $va); } 
-                       else {
-                               $txt2 = $this->UTF8toSubset($txt2);
-                               $sub .=sprintf('BT '.$aix.' %s Tj ET',($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK,$txt2);
-                       }
-                 }
-                 else {
-                       if ($this->S) { $sub .= $this->_smallCaps($txt2, '', $aix, $dx, _MPDFK, $baseline, $va); } 
-                       else if ($this->kerning && $this->useKerning) { $sub .= $this->_kern($txt2, '', $aix, ($this->x+$dx), ($this->y+$baseline+$va)); } 
-                       else {
-                               if (!$this->usingCoreFont) {
-                                       $txt2 = $this->UTF8ToUTF16BE($txt2, false);
-                               }
-                               $txt2=$this->_escape($txt2); 
-                               $sub .=sprintf('BT '.$aix.' (%s) Tj ET',($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK,$txt2);
-                       }
-                 }
-               }
-               // UNDERLINE
-               if($this->U) {
-                       $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
-                       if($this->FillColor!=$c) { $sub .= ' '.$c.' '; }
-                       if (isset($this->CurrentFont['up'])) { $up=$this->CurrentFont['up']; }
-                       else { $up = -100; }
-                       $adjusty = (-$up/1000* $this->FontSize);
-                       if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
-                       else { $ut = 60/1000* $this->FontSize; }
-                       $olw = $this->LineWidth;
-                       $sub .=' '.(sprintf(' %.3F w 0 j 0 J ',$ut*_MPDFK));
-                       $sub .=' '.$this->_dounderline($this->x+$dx,$this->y+$baseline+$va+$adjusty,$txt);
-                       $sub .=' '.(sprintf(' %.3F w 2 j 2 J ',$olw*_MPDFK));
-                       if($this->FillColor!=$c) { $sub .= ' '.$this->FillColor.' '; }
-               }
-
-               // STRIKETHROUGH
-               if($this->strike) {
-                       $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
-                       if($this->FillColor!=$c) { $sub .= ' '.$c.' '; }
-                       //Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
-                       if (isset($this->CurrentFont['desc']['CapHeight'])) { $ch=$this->CurrentFont['desc']['CapHeight']; }
-                       else { $ch = 700; }
-                       $adjusty = (-$ch/1000* $this->FontSize) * 0.35;
-                       if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
-                       else { $ut = 60/1000* $this->FontSize; }
-                       $olw = $this->LineWidth;
-                       $sub .=' '.(sprintf(' %.3F w 0 j 0 J ',$ut*_MPDFK));
-                       $sub .=' '.$this->_dounderline($this->x+$dx,$this->y+$baseline+$va+$adjusty,$txt);
-                       $sub .=' '.(sprintf(' %.3F w 2 j 2 J ',$olw*_MPDFK));
-                       if($this->FillColor!=$c) { $sub .= ' '.$this->FillColor.' '; }
-               }
-
-               // TEXT SHADOW
-               if ($this->textshadow) {                // First to process is last in CSS comma separated shadows
-                       foreach($this->textshadow AS $ts) {
-                                       $s .= ' q ';
-                                       $s .= $this->SetTColor($ts['col'], true)."\n";
-                                       if ($ts['col']{0}==5 && ord($ts['col']{4})<100) {       // RGBa
-                                               $s .= $this->SetAlpha(ord($ts['col']{4})/100, 'Normal', true, 'F')."\n"; 
-                                       }
-                                       else if ($ts['col']{0}==6 && ord($ts['col']{5})<100) {  // CMYKa
-                                               $s .= $this->SetAlpha(ord($ts['col']{5})/100, 'Normal', true, 'F')."\n"; 
-                                       }
-                                       else if ($ts['col']{0}==1 && $ts['col']{2}==1 && ord($ts['col']{3})<100) {      // Gray
-                                               $s .= $this->SetAlpha(ord($ts['col']{3})/100, 'Normal', true, 'F')."\n"; 
-                                       }
-                                       $s .= sprintf(' 1 0 0 1 %.4F %.4F cm', $ts['x']*_MPDFK, -$ts['y']*_MPDFK)."\n";
-                                       $s .= $sub;
-                                       $s .= ' Q ';
-                       }
-               }
-
-               $s .= $sub;
-
-               // COLOR
-               if($this->ColorFlag) $s .=' Q';
-
-               // LINK
-               if($link!='') {
-                       $this->Link($this->x,$boxtop,$w,$boxheight,$link);
-               }
-       }
-       if($s) $this->_out($s);
-
-       // WORD SPACING
-       if ($this->ws && !$this->usingCoreFont) {
-               $this->_out(sprintf('BT %.3F Tc ET',$this->charspacing));        
-       }
-       $this->lasth=$h;
-       if( strpos($txt,"\n") !== false) $ln=1; // cell recognizes \n from <BR> tag
-       if($ln>0)
-       {
-               //Go to next line
-               $this->y += $h;
-               if($ln==1) {
-                       //Move to next line
-                       if ($currentx != 0) { $this->x=$currentx; }
-                       else { $this->x=$this->lMargin; }
-               }
-       }
-       else $this->x+=$w;
-
-
-}
-
-
-function _kern($txt, $mode, $aix, $x, $y) {
-   if ($mode == 'MBTw') {      // Multibyte requiring word spacing
-                 $space = ' ';
-                 //Convert string to UTF-16BE without BOM
-                 $space= $this->UTF8ToUTF16BE($space , false);
-                 $space=$this->_escape($space ); 
-                 $s = sprintf(' BT '.$aix,$x*_MPDFK,($this->h-$y)*_MPDFK);
-                 $t = explode(' ',$txt);
-                 for($i=0;$i<count($t);$i++) {
-                       $tx = $t[$i]; 
-
-                       $tj = '(';
-                       $unicode = $this->UTF8StringToArray($tx);
-                       for($ti=0;$ti<count($unicode);$ti++) {
-                               if ($ti > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($ti-1)]][$unicode[$ti]]))  {
-                                                       $kern = -$this->CurrentFont['kerninfo'][$unicode[($ti-1)]][$unicode[$ti]];
-                                                       $tj .= sprintf(')%d(',$kern);
-                               }
-                               $tc = code2utf($unicode[$ti]);
-                               $tc = $this->UTF8ToUTF16BE($tc, false);
-                               $tj .= $this->_escape($tc); 
-                       }
-                       $tj .= ')';
-                       $s.=sprintf(' %.3F Tc [%s] TJ',$this->charspacing,$tj);
-
-
-                       if (($i+1)<count($t)) {
-                               $s.=sprintf(' %.3F Tc (%s) Tj',$this->ws+$this->charspacing,$space);
-                       }
-                 }
-                 $s.=' ET ';
-   }
-   else if (!$this->usingCoreFont) {
-       $s = '';
-       $tj = '(';
-       $unicode = $this->UTF8StringToArray($txt);
-       for($i=0;$i<count($unicode);$i++) {
-               if ($i > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($i-1)]][$unicode[$i]])) {
-                                       $kern = -$this->CurrentFont['kerninfo'][$unicode[($i-1)]][$unicode[$i]];
-                                       $tj .= sprintf(')%d(',$kern);
-               }
-               $tx = code2utf($unicode[$i]);
-               $tx = $this->UTF8ToUTF16BE($tx, false);
-               $tj .= $this->_escape($tx); 
-       }
-       $tj .= ')';
-       $s.=sprintf(' BT '.$aix.' [%s] TJ ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$tj);
-   }
-   else {      // CORE Font
-       $s = '';
-       $tj = '(';
-       $l = strlen($txt);
-       for($i=0;$i<$l;$i++) {
-               if ($i > 0 && isset($this->CurrentFont['kerninfo'][$txt[($i-1)]][$txt[$i]])) {
-                       $kern = -$this->CurrentFont['kerninfo'][$txt[($i-1)]][$txt[$i]];
-                       $tj .= sprintf(')%d(',$kern);
-               }
-               $tj .= $this->_escape($txt[$i]); 
-       }
-       $tj .= ')';
-       $s.=sprintf(' BT '.$aix.' [%s] TJ ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$tj);
-   }
-
-   return $s;
-}
-
-
-function _smallCaps($txt, $mode, $aix, $dx, $k, $baseline, $va) {
-       $upp = false;
-       $str = array();
-       $bits = array();
-       if (!$this->usingCoreFont) { 
-          $unicode = $this->UTF8StringToArray($txt);
-          foreach($unicode as $char) {
-               if ($this->ws && $char == 32) {         // space
-                       if (count($str)) { $bits[] = array($upp, $str, false); }
-                       $bits[] = array(false, array(32), true); 
-                       $str = array(); 
-                       $upp = false;
-               }
-               else if (isset($this->upperCase[$char])) { 
-                       if (!$upp) { 
-                               if (count($str)) { $bits[] = array($upp, $str, false); }
-                               $str = array(); 
-                       }
-                       $str[] = $this->upperCase[$char]; 
-                       if ((!isset($this->CurrentFont['sip']) || !$this->CurrentFont['sip']) && (!isset($this->CurrentFont['smp']) || !$this->CurrentFont['smp'])) {   
-                               $this->CurrentFont['subset'][$this->upperCase[$char]] = $this->upperCase[$char];
-                       }
-                       $upp = true;
-               }
-               else { 
-                       if ($upp) { 
-                               if (count($str)) { $bits[] = array($upp, $str, false); }
-                               $str = array(); 
-                       }
-                       $str[] = $char;
-                       $upp = false;
-               }
-          }
-       }
-       else {
-          for($i=0;$i<strlen($txt);$i++) {
-               if (isset($this->upperCase[ord($txt[$i])]) && $this->upperCase[ord($txt[$i])] < 256) { 
-                       if (!$upp) { 
-                               if (count($str)) { $bits[] = array($upp, $str, false); }
-                               $str = array(); 
-                       }
-                       $str[] = $this->upperCase[ord($txt[$i])]; 
-                       $upp = true;
-               }
-               else { 
-                       if ($upp) { 
-                               if (count($str)) { $bits[] = array($upp, $str, false); }
-                               $str = array(); 
-                       }
-                       $str[] = ord($txt[$i]);
-                       $upp = false;
-               }
-          }
-       }
-       if (count($str)) { $bits[] = array($upp, $str, false); }
-
-       $fid = $this->CurrentFont['i'];
-
-       $s=sprintf(' BT '.$aix,($this->x+$dx)*$k,($this->h-($this->y+$baseline+$va))*$k);
-       foreach($bits AS $b) {
-               if ($b[0]) { $upp = true; }
-               else { $upp = false; }
-
-               $size = count ($b[1]);
-               $txt = '';
-               for ($i = 0; $i < $size; $i++) {
-                       $txt .= code2utf($b[1][$i]); 
-               }
-               if ($this->usingCoreFont) { 
-                       $txt = utf8_decode($txt);
-               }
-               if ($mode == 'SIPSMP') {
-                       $txt = $this->UTF8toSubset($txt);
-               }
-               else { 
-                       if (!$this->usingCoreFont) {
-                               $txt = $this->UTF8ToUTF16BE($txt, false);
-                       }
-                       $txt=$this->_escape($txt); 
-                       $txt = '('.$txt.')';
-               }
-               if ($b[2]) { // space
-                       $s.=sprintf(' /F%d %.3F Tf %d Tz', $fid, $this->FontSizePt, 100); 
-                       $s.=sprintf(' %.3F Tc', ($this->charspacing+$this->ws));
-                       $s.=sprintf(' %s Tj', $txt);
-               }
-               else if ($upp) { 
-                       $s.=sprintf(' /F%d %.3F Tf', $fid, $this->FontSizePt*$this->smCapsScale); 
-                       $s.=sprintf(' %d Tz', $this->smCapsStretch); 
-                       $s.=sprintf(' %.3F Tc', ($this->charspacing*100/$this->smCapsStretch));
-                       $s.=sprintf(' %s Tj', $txt);
-               }
-               else { 
-                       $s.=sprintf(' /F%d %.3F Tf %d Tz', $fid, $this->FontSizePt, 100); 
-                       $s.=sprintf(' %.3F Tc', ($this->charspacing)); 
-                       $s.=sprintf(' %s Tj', $txt);
-               }
-       }
-       $s.=' ET ';
-       return $s;
-}
-
-
-function MultiCell($w,$h,$txt,$border=0,$align='',$fill=0,$link='',$directionality='ltr',$encoded=false)
-{
-       // Parameter (pre-)encoded - When called internally from ToC or textarea: mb_encoding already done - but not reverse RTL/Indic
-       if (!$encoded) {
-               $txt = $this->purify_utf8_text($txt);
-               if ($this->text_input_as_HTML) {
-                       $txt = $this->all_entities_to_utf8($txt);
-               }
-               if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
-               // Font-specific ligature substitution for Indic fonts
-               else if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {   // *INDIC*
-                       $this->ConvertIndic($tmp);      // *INDIC*
-               }       // *INDIC*
-               if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; }        // *RTL*
-       }
-       if (!$align) { $align = $this->defaultAlign; }
-
-       //Output text with automatic or explicit line breaks
-       $cw=&$this->CurrentFont['cw'];
-       if($w==0)       $w=$this->w-$this->rMargin-$this->x;
-
-       $wmax = ($w - ($this->cMarginL+$this->cMarginR));
-       if ($this->usingCoreFont)  {
-               $s=str_replace("\r",'',$txt);
-               $nb=strlen($s);
-               while($nb>0 and $s[$nb-1]=="\n")        $nb--;
-       }
-       else {
-               $s=str_replace("\r",'',$txt);
-               $nb=mb_strlen($s, $this->mb_enc );
-               while($nb>0 and mb_substr($s,$nb-1,1,$this->mb_enc )=="\n")     $nb--;
-       }
-       $b=0;
-       if($border) {
-               if($border==1) {
-                       $border='LTRB';
-                       $b='LRT';
-                       $b2='LR';
-               }
-               else {
-                       $b2='';
-                       if(is_int(strpos($border,'L'))) $b2.='L';
-                       if(is_int(strpos($border,'R'))) $b2.='R';
-                       $b=is_int(strpos($border,'T')) ? $b2.'T' : $b2;
-               }
-       }
-       $sep=-1;
-       $i=0;
-       $j=0;
-       $l=0;
-       $ns=0;
-       $nl=1;
-
-
-
-   if (!$this->usingCoreFont)  {
-       $checkCursive=false;
-       if ($this->biDirectional) {  $checkCursive=true; }
-       else if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {  $checkCursive=true; }    // *INDIC*
-       while($i<$nb) {
-               //Get next character
-               $c = mb_substr($s,$i,1,$this->mb_enc );
-               if($c == "\n") {
-                       //Explicit line break
-                       // WORD SPACING
-                       $this->ResetSpacing();
-                       $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
-                       // DIRECTIONALITY
-                       $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
-
-                       $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
-                       $i++;
-                       $sep=-1;
-                       $j=$i;
-                       $l=0;
-                       $ns=0;
-                       $nl++;
-                       if($border and $nl==2) $b=$b2;
-                       continue;
-               }
-               if($c == " ") {
-                       $sep=$i;
-                       $ls=$l;
-                       $ns++;
-               }
-
-               $l += $this->GetCharWidthNonCore($c);
-
-               if($l>$wmax) {
-                       //Automatic line break
-                       if($sep==-1) {  // Only one word
-                               if($i==$j) $i++;
-                               // WORD SPACING
-                               $this->ResetSpacing();
-                               $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
-                               // DIRECTIONALITY
-                               $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
-
-                               $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
-                       }
-                       else {
-                               $tmp = rtrim(mb_substr($s,$j,$sep-$j,$this->mb_enc));
-                               if($align=='J') {
-                                       //////////////////////////////////////////
-                                       // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
-                                       // WORD SPACING UNICODE
-                                       // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
-                                       $tmp = str_replace(chr(194).chr(160),chr(32),$tmp ); 
-                                       $len_ligne = $this->GetStringWidth($tmp );
-                                       $nb_carac = mb_strlen( $tmp , $this->mb_enc ) ;  
-                                       $nb_spaces = mb_substr_count( $tmp ,' ', $this->mb_enc ) ;  
-
-                                       $inclCursive=false;
-                                       if ($checkCursive) {
-                                               if (preg_match("/([".$this->pregRTLchars."])/u", $tmp)) { $inclCursive = true; }        // *RTL*
-                                               if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $tmp)) { $inclCursive = true; }   // *INDIC*
-                                       }
-                                       list($charspacing,$ws) = $this->GetJspacing($nb_carac,$nb_spaces,((($wmax) - $len_ligne) * _MPDFK),$inclCursive);
-                                       $this->SetSpacing($charspacing,$ws);
-                                       //////////////////////////////////////////
-                               }
-
-                               // DIRECTIONALITY
-                               $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
-
-                               $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
-                               $i=$sep+1;
-                       }
-                       $sep=-1;
-                       $j=$i;
-                       $l=0;
-                       $ns=0;
-                       $nl++;
-                       if($border and $nl==2) $b=$b2;
-               }
-               else $i++;
-       }
-       //Last chunk
-       // WORD SPACING
-
-       $this->ResetSpacing();
-
-   }
-
-
-   else {
-
-       while($i<$nb) {
-               //Get next character
-               $c=$s[$i];
-               if($c == "\n") {
-                       //Explicit line break
-                       // WORD SPACING
-                       $this->ResetSpacing();
-                       $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link);
-                       $i++;
-                       $sep=-1;
-                       $j=$i;
-                       $l=0;
-                       $ns=0;
-                       $nl++;
-                       if($border and $nl==2) $b=$b2;
-                       continue;
-               }
-               if($c == " ") {
-                       $sep=$i;
-                       $ls=$l;
-                       $ns++;
-               }
-
-               $l += $this->GetCharWidthCore($c);
-               if($l>$wmax) {
-                       //Automatic line break
-                       if($sep==-1) {
-                               if($i==$j) $i++;
-                               // WORD SPACING
-                               $this->ResetSpacing();
-                               $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link);
-                       }
-                       else {
-                               if($align=='J') {
-                                       $tmp = rtrim(substr($s,$j,$sep-$j));
-                                       //////////////////////////////////////////
-                                       // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
-                                       // WORD SPACING NON_UNICDOE/CJK
-                                       // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
-                                       $tmp = str_replace(chr(160),chr(32),$tmp);
-                                       $len_ligne = $this->GetStringWidth($tmp );
-                                       $nb_carac = strlen( $tmp ) ;  
-                                       $nb_spaces = substr_count( $tmp ,' ' ) ;  
-                                       list($charspacing,$ws) = $this->GetJspacing($nb_carac,$nb_spaces,((($wmax) - $len_ligne) * _MPDFK),false);
-                                       $this->SetSpacing($charspacing,$ws);
-                                       //////////////////////////////////////////
-                               }
-                               $this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill,$link);
-                               $i=$sep+1;
-                       }
-                       $sep=-1;
-                       $j=$i;
-                       $l=0;
-                       $ns=0;
-                       $nl++;
-                       if($border and $nl==2) $b=$b2;
-               }
-               else $i++;
-       }
-       //Last chunk
-       // WORD SPACING
-
-       $this->ResetSpacing();
-
-   }
-       //Last chunk
-   if($border and is_int(strpos($border,'B'))) $b.='B';
-   if (!$this->usingCoreFont)  {
-               $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
-               // DIRECTIONALITY
-               $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
-               $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
-   }
-   else { $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link); }
-   $this->x=$this->lMargin;
-}
-
-
-/*-- DIRECTW --*/
-function Write($h,$txt,$currentx=0,$link='',$directionality='ltr',$align='') {
-       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
-       if (empty($this->directw)) { $this->directw = new directw($this); }
-       $this->directw->Write($h,$txt,$currentx,$link,$directionality,$align);
-}
-/*-- END DIRECTW --*/
-
-
-/*-- HTML-CSS --*/
-function saveInlineProperties() {
-       $saved = array();
-       $saved[ 'family' ] = $this->FontFamily;
-       $saved[ 'style' ] = $this->FontStyle;
-       $saved[ 'sizePt' ] = $this->FontSizePt;
-       $saved[ 'size' ] = $this->FontSize;
-       $saved[ 'HREF' ] = $this->HREF; 
-       $saved[ 'underline' ] = $this->U; 
-       $saved[ 'smCaps' ] = $this->S;
-       $saved[ 'strike' ] = $this->strike;
-       $saved[ 'textshadow' ] = $this->textshadow;
-       $saved[ 'SUP' ] = $this->SUP; 
-       $saved[ 'SUB' ] = $this->SUB; 
-       $saved[ 'linewidth' ] = $this->LineWidth;
-       $saved[ 'drawcolor' ] = $this->DrawColor;
-       $saved[ 'textparam' ] = $this->textparam;
-       $saved[ 'toupper' ] = $this->toupper;
-       $saved[ 'tolower' ] = $this->tolower;
-       $saved[ 'capitalize' ] = $this->capitalize;
-       $saved[ 'fontkerning' ] = $this->kerning;
-       $saved[ 'lSpacingCSS' ] = $this->lSpacingCSS;
-       $saved[ 'wSpacingCSS' ] = $this->wSpacingCSS;
-       $saved[ 'I' ] = $this->I;
-       $saved[ 'B' ] = $this->B;
-       $saved[ 'colorarray' ] = $this->colorarray;
-       $saved[ 'bgcolorarray' ] = $this->spanbgcolorarray;
-       $saved[ 'border' ] = $this->spanborddet;
-       $saved[ 'color' ] = $this->TextColor; 
-       $saved[ 'bgcolor' ] = $this->FillColor;
-       $saved[ 'lang' ] = $this->currentLang;
-       $saved[ 'display_off' ] = $this->inlineDisplayOff;
-
-       return $saved;
-}
-
-function restoreInlineProperties( &$saved) {
-       $FontFamily = $saved[ 'family' ];
-       $this->FontStyle = $saved[ 'style' ];
-       $this->FontSizePt = $saved[ 'sizePt' ];
-       $this->FontSize = $saved[ 'size' ];
-
-       $this->currentLang =  $saved['lang'];
-       if ($this->useLang && !$this->usingCoreFont) {
-         if ($this->currentLang != $this->default_lang && ((strlen($this->currentLang) == 5 && $this->currentLang != 'UTF-8') || strlen($this->currentLang ) == 2)) { 
-               list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($this->currentLang, $this->useAdobeCJK);
-               if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); }
-               else { $this->RestrictUnicodeFonts($this->default_available_fonts ); }
-         }
-         else { 
-               $this->RestrictUnicodeFonts($this->default_available_fonts );
-         } 
-       }
-
-       $this->ColorFlag = ($this->FillColor != $this->TextColor); //Restore ColorFlag as well
-
-       $this->HREF = $saved[ 'HREF' ];
-       $this->U = $saved[ 'underline' ];
-       $this->S = $saved[ 'smCaps' ];
-       $this->strike = $saved[ 'strike' ];
-       $this->textshadow = $saved[ 'textshadow' ];
-       $this->SUP = $saved[ 'SUP' ];
-       $this->SUB = $saved[ 'SUB' ];
-       $this->LineWidth = $saved[ 'linewidth' ];
-       $this->DrawColor = $saved[ 'drawcolor' ];
-       $this->textparam = $saved[ 'textparam' ];
-       $this->inlineDisplayOff = $saved['display_off'];
-
-       $this->toupper = $saved[ 'toupper' ];
-       $this->tolower = $saved[ 'tolower' ];
-       $this->capitalize = $saved[ 'capitalize' ];
-       $this->kerning = $saved[ 'fontkerning' ];
-       $this->lSpacingCSS = $saved[ 'lSpacingCSS' ];
-       if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
-               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
-       }
-       else { $this->fixedlSpacing = false; }
-       $this->wSpacingCSS = $saved[ 'wSpacingCSS' ];
-       if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
-               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
-       }
-       else { $this->minwSpacing = 0; }
-  
-       $this->SetFont($FontFamily, $saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ],false);
-
-       $this->currentfontstyle = $saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : '');
-       $this->currentfontsize = $saved[ 'sizePt' ];
-       $this->SetStylesArray(array('S'=>$this->S, 'U'=>$this->U, 'B'=>$saved[ 'B' ], 'I'=>$saved[ 'I' ]));
-
-       $this->TextColor = $saved[ 'color' ];
-       $this->FillColor = $saved[ 'bgcolor' ];
-       $this->colorarray = $saved[ 'colorarray' ];
-       $cor = $saved[ 'colorarray' ];
-       if ($cor) $this->SetTColor($cor);
-       $this->spanbgcolorarray = $saved[ 'bgcolorarray' ];
-       $cor = $saved[ 'bgcolorarray' ];
-       if ($cor) $this->SetFColor($cor);
-       $this->spanborddet = $saved[ 'border' ];
-}
-
-
-
-// Used when ColActive for tables - updated to return first block with background fill OR borders
-function GetFirstBlockFill() {
-       // Returns the first blocklevel that uses a bgcolor fill
-       $startfill = 0;
-       for ($i=1;$i<=$this->blklvl;$i++) {
-               if ($this->blk[$i]['bgcolor'] || $this->blk[$i]['border_left']['w'] || $this->blk[$i]['border_right']['w']  || $this->blk[$i]['border_top']['w']  || $this->blk[$i]['border_bottom']['w']  ) {
-                       $startfill = $i;
-                       break;
-               }
-       }
-       return $startfill;
-}
-
-function SetBlockFill($blvl) {
-       if ($this->blk[$blvl]['bgcolor']) {
-               $this->SetFColor($this->blk[$blvl]['bgcolorarray']);
-               return 1;
-       }
-       else {
-               $this->SetFColor($this->ConvertColor(255));
-               return 0;
-       }
-}
-
-
-//-------------------------FLOWING BLOCK------------------------------------//
-//The following functions were originally written by Damon Kohler           //
-//--------------------------------------------------------------------------//
-
-function saveFont() {
-       $saved = array();
-       $saved[ 'family' ] = $this->FontFamily;
-       $saved[ 'style' ] = $this->FontStyle;
-       $saved[ 'sizePt' ] = $this->FontSizePt;
-       $saved[ 'size' ] = $this->FontSize;
-       $saved[ 'curr' ] = &$this->CurrentFont;
-       $saved[ 'color' ] = $this->TextColor; 
-       $saved[ 'spanbgcolor' ] = $this->spanbgcolor; 
-       $saved[ 'spanbgcolorarray' ] = $this->spanbgcolorarray; 
-       $saved[ 'bord' ] = $this->spanborder;
-       $saved[ 'border' ] = $this->spanborddet;
-       $saved[ 'HREF' ] = $this->HREF;
-       $saved[ 'underline' ] = $this->U; 
-       $saved[ 'smCaps' ] = $this->S;
-       $saved[ 'strike' ] = $this->strike;
-       $saved[ 'textshadow' ] = $this->textshadow;
-       $saved[ 'SUP' ] = $this->SUP;
-       $saved[ 'SUB' ] = $this->SUB;
-       $saved[ 'linewidth' ] = $this->LineWidth;
-       $saved[ 'drawcolor' ] = $this->DrawColor;
-       $saved[ 'textparam' ] = $this->textparam;
-       $saved[ 'ReqFontStyle' ] = $this->ReqFontStyle;
-       $saved[ 'fontkerning' ] = $this->kerning; 
-       $saved[ 'fixedlSpacing' ] = $this->fixedlSpacing;
-       $saved[ 'minwSpacing' ] = $this->minwSpacing;
-       return $saved;
-}
-
-function restoreFont( &$saved, $write=true) {
-       if (!isset($saved) || empty($saved)) return;
-
-       $this->FontFamily = $saved[ 'family' ];
-       $this->FontStyle = $saved[ 'style' ];
-       $this->FontSizePt = $saved[ 'sizePt' ];
-       $this->FontSize = $saved[ 'size' ];
-       $this->CurrentFont = &$saved[ 'curr' ];
-       $this->TextColor = $saved[ 'color' ]; 
-       $this->spanbgcolor = $saved[ 'spanbgcolor' ]; 
-       $this->spanbgcolorarray = $saved[ 'spanbgcolorarray' ]; 
-       $this->spanborder = $saved[ 'bord' ];
-       $this->spanborddet = $saved[ 'border' ];
-       $this->ColorFlag = ($this->FillColor != $this->TextColor); //Restore ColorFlag as well
-       $this->HREF = $saved[ 'HREF' ]; 
-       $this->U = $saved[ 'underline' ]; 
-       $this->S = $saved[ 'smCaps' ];
-       $this->kerning = $saved[ 'fontkerning' ];
-       $this->fixedlSpacing = $saved[ 'fixedlSpacing' ];
-       $this->minwSpacing = $saved[ 'minwSpacing' ];
-       $this->strike = $saved[ 'strike' ]; 
-       $this->textshadow = $saved[ 'textshadow' ];
-       $this->SUP = $saved[ 'SUP' ]; 
-       $this->SUB = $saved[ 'SUB' ]; 
-       $this->LineWidth = $saved[ 'linewidth' ]; 
-       $this->DrawColor = $saved[ 'drawcolor' ]; 
-       $this->textparam = $saved[ 'textparam' ];
-       if ($write) { 
-               $this->SetFont($saved[ 'family' ],$saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ],true,true);  // force output
-               $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
-               if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
-               $this->pageoutput[$this->page]['Font'] = $fontout;
-       }
-       else 
-               $this->SetFont($saved[ 'family' ],$saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ]);
-       $this->ReqFontStyle = $saved[ 'ReqFontStyle' ];
-}
-
-function newFlowingBlock( $w, $h, $a = '', $is_table = false, $is_list = false, $blockstate = 0, $newblock=true, $blockdir='ltr')
-{
-       if (!$a) { 
-               if ($blockdir=='rtl') { $a = 'R'; }
-               else { $a = 'L'; }
-       }
-       $this->flowingBlockAttr[ 'width' ] = ($w * _MPDFK);
-       // line height in user units
-       $this->flowingBlockAttr[ 'is_table' ] = $is_table;
-       $this->flowingBlockAttr[ 'is_list' ] = $is_list;
-       $this->flowingBlockAttr[ 'height' ] = $h;
-       $this->flowingBlockAttr[ 'lineCount' ] = 0;
-       $this->flowingBlockAttr[ 'align' ] = $a;
-       $this->flowingBlockAttr[ 'font' ] = array();
-       $this->flowingBlockAttr[ 'content' ] = array();
-       $this->flowingBlockAttr[ 'contentB' ] = array();
-       $this->flowingBlockAttr[ 'contentWidth' ] = 0;
-       $this->flowingBlockAttr[ 'blockstate' ] = $blockstate;
-
-       $this->flowingBlockAttr[ 'newblock' ] = $newblock;
-       $this->flowingBlockAttr[ 'valign' ] = 'M';
-       $this->flowingBlockAttr['blockdir'] = $blockdir;
-
-}
-
-function finishFlowingBlock($endofblock=false, $next='') {
-       $currentx = $this->x;
-       //prints out the last chunk
-       $is_table = $this->flowingBlockAttr[ 'is_table' ];
-       $is_list = $this->flowingBlockAttr[ 'is_list' ];
-       $maxWidth =& $this->flowingBlockAttr[ 'width' ];
-       $lineHeight =& $this->flowingBlockAttr[ 'height' ];
-       $align =& $this->flowingBlockAttr[ 'align' ];
-       $content =& $this->flowingBlockAttr[ 'content' ];
-       $contentB =& $this->flowingBlockAttr[ 'contentB' ];
-       $font =& $this->flowingBlockAttr[ 'font' ];
-       $contentWidth =& $this->flowingBlockAttr[ 'contentWidth' ];
-       $lineCount =& $this->flowingBlockAttr[ 'lineCount' ];
-       $valign =& $this->flowingBlockAttr[ 'valign' ];
-       $blockstate = $this->flowingBlockAttr[ 'blockstate' ];
-
-       $newblock = $this->flowingBlockAttr[ 'newblock' ];
-       $blockdir = $this->flowingBlockAttr['blockdir'];
-
-
-       // *********** BLOCK BACKGROUND COLOR *****************//
-       if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) {
-               $fill = 0;
-       }
-       else {
-               $this->SetFColor($this->ConvertColor(255));
-               $fill = 0;
-       }
-
-       $hanger = '';   // mPDF 5.6.40
-
-       // Always right trim!
-       // Right trim content and adjust width if need to justify (later)
-               if (isset($content[count($content)-1]) && preg_match('/[ ]+$/',$content[count($content)-1], $m)) {
-                       $strip = strlen($m[0]);
-                       $content[count($content)-1] = substr($content[count($content)-1],0,(strlen($content[count($content)-1])-$strip));
-                       $this->restoreFont( $font[ count($content)-1 ],false );
-                       $contentWidth -= $this->GetStringWidth($m[0]) * _MPDFK;
-               }
-
-       // the amount of space taken up so far in user units
-       $usedWidth = 0;
-
-       // COLS
-       $oldcolumn = $this->CurrCol;
-
-       if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }        // *COLUMNS*
-
-       // Print out each chunk
-
-/*-- TABLES --*/
-       if ($is_table) { 
-               $ipaddingL = 0; 
-               $ipaddingR = 0; 
-               $paddingL = 0;
-               $paddingR = 0;
-       } 
-       else { 
-/*-- END TABLES --*/
-               $ipaddingL = $this->blk[$this->blklvl]['padding_left']; 
-               $ipaddingR = $this->blk[$this->blklvl]['padding_right']; 
-               $paddingL = ($ipaddingL * _MPDFK); 
-               $paddingR = ($ipaddingR * _MPDFK);
-               $this->cMarginL =  $this->blk[$this->blklvl]['border_left']['w'];
-               $this->cMarginR =  $this->blk[$this->blklvl]['border_right']['w'];
-
-               // Added mPDF 3.0 Float DIV
-               $fpaddingR = 0;
-               $fpaddingL = 0;
-/*-- CSS-FLOAT --*/
-               if (count($this->floatDivs)) {
-                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
-                       if ($r_exists) { $fpaddingR = $r_width; }
-                       if ($l_exists) { $fpaddingL = $l_width; }
-               }
-/*-- END CSS-FLOAT --*/
-
-               $usey = $this->y + 0.002;
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
-                       $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
-               }
-/*-- CSS-IMAGE-FLOAT --*/
-               // If float exists at this level
-               if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
-               if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
-/*-- END CSS-IMAGE-FLOAT --*/
-       }       // *TABLES*
-
-               // Set Current lineheight (correction factor)
-               $lhfixed = false; 
-/*-- LISTS --*/
-               if ($is_list) {
-                       if (preg_match('/([0-9.,]+)mm/',$this->list_lineheight[$this->listlvl][$this->listOcc],$am)) { 
-                               $lhfixed = true; 
-                               $def_fontsize = $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listOcc][$this->listnum]['size'];
-                               $this->lineheight_correction = $am[1] / $def_fontsize ;
-                       }
-                       else { 
-                               $this->lineheight_correction = $this->list_lineheight[$this->listlvl][$this->listOcc]; 
-                       }
-               }
-               else
-/*-- END LISTS --*/
-/*-- TABLES --*/
-               if ($is_table) {
-                       if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight,$am)) { 
-                               $lhfixed = true; 
-                               $def_fontsize = $this->FontSize;                                // needs to be default font-size for block ****
-                               $this->lineheight_correction = $lineHeight / $def_fontsize ; 
-                       }
-                       else { 
-                               $this->lineheight_correction = $this->table_lineheight; 
-                       }
-               }
-               else
-/*-- END TABLES --*/
-               if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
-                       if (preg_match('/([0-9.,]+)mm/',$this->blk[$this->blklvl]['line_height'],$am)) { 
-                               $lhfixed = true; 
-                               $def_fontsize = $this->blk[$this->blklvl]['InlineProperties']['size'];  // needs to be default font-size for block ****
-                               $this->lineheight_correction = $am[1] / $def_fontsize ;
-                       }
-                       else { 
-                               $this->lineheight_correction = $this->blk[$this->blklvl]['line_height']; 
-                       }
-               } 
-               else {
-                       $this->lineheight_correction = $this->normalLineheight; 
-               }
-
-               //  correct lineheight to maximum fontsize
-               if ($lhfixed) { $maxlineHeight = $this->lineheight; }
-               else { $maxlineHeight = 0; }
-               $this->forceExactLineheight = true;
-               $maxfontsize = 0;
-               // While we're at it, check if contains cursive text
-               $checkCursive=false;
-               if ($this->biDirectional) {  $checkCursive=true; }      // *RTL*
-               foreach ( $content as $k => $chunk )
-               {
-                 $this->restoreFont( $font[ $k ],false );
-                 if (!isset($this->objectbuffer[$k])) { 
-                       // Soft Hyphens chr(173)
-                       if (!$this->usingCoreFont) {
-                             $content[$k] = $chunk = str_replace("\xc2\xad",'',$chunk ); 
-                               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {  $checkCursive=true; } // *INDIC*
-                       }
-                       else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
-                             $content[$k] = $chunk = str_replace(chr(173),'',$chunk );
-                       }
-                       // Special case of sub/sup carried over on its own to last line
-                       if (($this->SUB || $this->SUP) && count($content)==1) { $actfs = $this->FontSize*100/55; } // 55% is font change for sub/sup
-                       else { $actfs = $this->FontSize; }
-                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction ); }
-                       if ($lhfixed && ($actfs > $def_fontsize || ($actfs > ($lineHeight * $this->lineheight_correction) && $is_list))) { 
-                               $this->forceExactLineheight = false; 
-                       }
-                       $maxfontsize = max($maxfontsize,$actfs);
-                 }
-               }
-
-               if(isset($font[count($font)-1])) {
-                       $lastfontreqstyle = $font[count($font)-1]['ReqFontStyle'];
-                       $lastfontstyle = $font[count($font)-1]['style'];
-               }
-               else {
-                       $lastfontreqstyle=null;
-                       $lastfontstyle=null;
-               }
-               if ($blockdir == 'ltr' && strpos($lastfontreqstyle,"I") !== false && strpos($lastfontstyle,"I") === false) {    // Artificial italic
-                       $lastitalic = $this->FontSize*0.15*_MPDFK;
-               }
-               else { $lastitalic = 0; }
-
-
-/*-- LISTS --*/
-               if ($is_list && is_array($this->bulletarray) && count($this->bulletarray)) {
-                       $actfs = $this->bulletarray['fontsize'];
-                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction );  }
-                       if ($lhfixed && $actfs > $def_fontsize) { $this->forceExactLineheight = false; }
-                       $maxfontsize = max($maxfontsize,$actfs);
-               }
-/*-- END LISTS --*/
-
-               // when every text item checked i.e. $maxfontsize is set properly
-
-               $af = 0;        // Above font
-               $bf = 0;        // Below font
-               $mta = 0;       // Maximum top-aligned 
-               $mba = 0;       // Maximum bottom-aligned 
-
-               foreach ( $content as $k => $chunk )
-               {
-                 if (isset($this->objectbuffer[$k])) { 
-                       $oh = $this->objectbuffer[$k]['OUTER-HEIGHT'];
-                       $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S
-                       if ($lhfixed && $oh > $def_fontsize) { $this->forceExactLineheight = false; }
-
-                       if ($va == 'BS') {      //  (BASELINE default)
-                               $af = max($af, ($oh - ($maxfontsize * (0.5 + $this->baselineC))));
-                       }
-                       else if ($va == 'M') { 
-                               $af = max($af, ($oh - $maxfontsize)/2);
-                               $bf = max($bf, ($oh - $maxfontsize)/2);
-                       }
-                       else if ($va == 'TT') { 
-                               $bf = max($bf, ($oh - $maxfontsize));
-                       }
-                       else if ($va == 'TB') { 
-                               $af = max($af, ($oh - $maxfontsize));
-                       }
-                       else if ($va == 'T') { 
-                               $mta = max($mta, $oh);
-                       }
-                       else if ($va == 'B') { 
-                               $mba = max($mba, $oh);
-                       }
-                 }
-               }
-               if ((!$lhfixed || !$this->forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
-                       $maxlineHeight = $maxfontsize + $af + $bf;
-               }
-               else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
-               if ($mta > $maxlineHeight) { 
-                       $bf += ($mta - $maxlineHeight);
-                       $maxlineHeight = $mta;
-               }
-               if ($mba > $maxlineHeight) { 
-                       $af += ($mba - $maxlineHeight);
-                       $maxlineHeight = $mba;
-               }
-
-               $lineHeight = $maxlineHeight;
-               // If NOT images, and maxfontsize NOT > lineHeight - this value determines text baseline positioning
-               if ($lhfixed && $af==0 && $bf==0 && $maxfontsize<=($def_fontsize * $this->lineheight_correction * 0.8 )) { 
-                       $this->linemaxfontsize = $def_fontsize; 
-               }
-               else { $this->linemaxfontsize = $maxfontsize; }
-
-               // Get PAGEBREAK TO TEST for height including the bottom border/padding
-               $check_h = max($this->divheight,$lineHeight);
-
-               // This fixes a proven bug...
-               if ($endofblock && $newblock && $blockstate==0 && !$content) {  $check_h = 0; }
-               // but ? needs to fix potentially more widespread...
-       //      if (!$content) {  $check_h = 0; }
-
-               if ($this->blklvl > 0 && !$is_table) { 
-                  if ($endofblock && $blockstate > 1) { 
-                       if ($this->blk[$this->blklvl]['page_break_after_avoid']) {  $check_h += $lineHeight; }
-                       $check_h += ($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']);
-                  }
-                  //   mPDF 5.4.03
-                  if (($newblock && ($blockstate==1 || $blockstate==3) && $lineCount == 0) || ($endofblock && $blockstate ==3 && $lineCount == 0)) { 
-                       $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']);
-                  }
-               }
-
-               // Force PAGE break if column height cannot take check-height
-               if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) { 
-                       $this->SetCol($this->NbCol-1);
-               }
-               //      mPDF 5.4.04
-               // Avoid just border/background-color moved on to next page
-               if ($endofblock && $blockstate > 1 && !$content) { $buff = $this->margBuffer; }
-               else { $buff = 0; }
-
-
-               // PAGEBREAK
-               // mPDF 5.4.04
-               if(!$is_table && ($this->y+$check_h) > ($this->PageBreakTrigger + $buff) and !$this->InFooter and $this->AcceptPageBreak()) {
-                       $bak_x=$this->x;//Current X position
-                       // WORD SPACING
-                       $ws=$this->ws;//Word Spacing
-                       $charspacing=$this->charspacing;//Character Spacing
-                       $this->ResetSpacing();
-
-                     $this->AddPage($this->CurOrientation);
-
-                     $this->x=$bak_x;
-                       // Added to correct for OddEven Margins
-                       $currentx += $this->MarginCorrection;
-                       $this->x += $this->MarginCorrection;
-
-                       // WORD SPACING
-                       $this->SetSpacing($charspacing,$ws);
-               }
-
-               if ($this->keep_block_together && !$is_table && $this->kt_p00 < $this->page && ($this->y+$check_h) > $this->kt_y00) {
-                       $this->printdivbuffer();
-                       $this->keep_block_together = 0;
-               }
-
-/*-- COLUMNS --*/
-               // COLS
-               // COLUMN CHANGE
-               if ($this->CurrCol != $oldcolumn) {
-                       $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-                       $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-                       $oldcolumn = $this->CurrCol;
-               }
-
-
-               if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }
-/*-- END COLUMNS --*/
-
-               // TOP MARGIN
-               if ($newblock && ($blockstate==1 || $blockstate==3) && ($this->blk[$this->blklvl]['margin_top']) && $lineCount == 0 && !$is_table && !$is_list) { 
-                       $this->DivLn($this->blk[$this->blklvl]['margin_top'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']); 
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-               }
-
-               if ($newblock && ($blockstate==1 || $blockstate==3) && $lineCount == 0 && !$is_table && !$is_list) { 
-                       $this->blk[$this->blklvl]['y0'] = $this->y;
-                       $this->blk[$this->blklvl]['startpage'] = $this->page;
-                       if ($this->blk[$this->blklvl]['float']) { $this->blk[$this->blklvl]['float_start_y'] = $this->y; } // mPDF 5.6.63
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-               }
-
-       // ADDED for Paragraph_indent
-       $WidthCorrection = 0;
-       if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align != 'C')) { 
-               $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-               $WidthCorrection = ($ti*_MPDFK); 
-       } 
-
-
-       // PADDING and BORDER spacing/fill
-       if (($newblock) && ($blockstate==1 || $blockstate==3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 0) && (!$is_table) && (!$is_list)) { 
-                       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
-                       $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'],-3,true,false,1); 
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-                       $this->x = $currentx;
-       }
-
-
-       // Added mPDF 3.0 Float DIV
-       $fpaddingR = 0;
-       $fpaddingL = 0;
-/*-- CSS-FLOAT --*/
-       if (count($this->floatDivs)) {
-               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
-               if ($r_exists) { $fpaddingR = $r_width; }
-               if ($l_exists) { $fpaddingL = $l_width; }
-       }
-/*-- END CSS-FLOAT --*/
-
-       $usey = $this->y + 0.002;
-       if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
-               $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
-       }
-/*-- CSS-IMAGE-FLOAT --*/
-       // If float exists at this level
-       if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
-       if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-       if ($content) {
-
-               // In FinishFlowing Block no lines are justified as it is always last line
-               // but if CJKorphan has allowed content width to go over max width, use J charspacing to compress line
-               // JUSTIFICATION J - NOT!
-               $nb_carac = 0;
-               $nb_spaces = 0;
-               $jcharspacing = 0;
-               $jws = 0;
-               $inclCursive=false;
-               $dottab = false; // mPDF 5.6.19
-               foreach ( $content as $k => $chunk ) {
-                       if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
-                               if ($this->usingCoreFont) {
-                                     $chunk = str_replace(chr(160),chr(32),$chunk );
-                               }
-                               else {
-                                     $chunk = str_replace(chr(194).chr(160),chr(32),$chunk ); 
-                               }
-                               $nb_carac += mb_strlen( $chunk, $this->mb_enc );  
-                               $nb_spaces += mb_substr_count( $chunk,' ', $this->mb_enc );  
-                               if ($checkCursive) {
-                                       if (preg_match("/([".$this->pregRTLchars."])/u", $chunk)) { $inclCursive = true; }      // *RTL*
-                                       if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $chunk)) { $inclCursive = true; } // *INDIC*
-                               }
-                       }
-                       else if ($this->objectbuffer[$k]['type']=='dottab') { $dottab = $this->objectbuffer[$k]['outdent']; } // mPDF 5.6.19
-               }
-               // if it's justified, we need to find the char/word spacing (or if orphans have allowed length of line to go over the maxwidth)
-               // If "orphans" in fact is just a final space - ignore this
-               // mPDF 5.6.40
-               $lastchar = mb_substr($content[(count($content)-1)],mb_strlen($content[(count($content)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
-               if (preg_match("/[".$this->CJKoverflow."]/u", $lastchar)) { $CJKoverflow = true; }
-               else {$CJKoverflow = false; } 
-               if ((((($contentWidth + $lastitalic) > $maxWidth) && ($content[count($content)-1] != ' ') )  ||
-                       (!$endofblock && $align=='J' && ($next=='image' || $next=='select' || $next=='input' || $next=='textarea' || ($next=='br' && $this->justifyB4br))))  && !($CJKoverflow && $this->allowCJKoverflow) ) {  // mPDF 5.6.40
-                 // WORD SPACING
-                       list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$contentWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
-               }
-/*-- CJK-FONTS --*/
-               // mPDF 5.6.40
-               else if ($this->checkCJK && $align=='J' && $CJKoverflow && $this->allowCJKoverflow && $this->CJKforceend) {
-               // force-end overhang
-                       $hanger = mb_substr($content[count($content)-1],mb_strlen($content[count($content)-1],$this->mb_enc)-1,1,$this->mb_enc );
-                       if (preg_match("/[".$this->CJKoverflow."]/u", $hanger)) {
-                               $content[count($content)-1] = mb_substr($content[count($content)-1],0,mb_strlen($content[count($content)-1],$this->mb_enc)-1,$this->mb_enc );
-                               $this->restoreFont( $font[ count($content)-1 ],false );
-                               $contentWidth -= $this->GetStringWidth($hanger) * _MPDFK;
-                               $nb_carac -= 1;
-                               list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$contentWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
-                       }
-               }
-/*-- END CJK-FONTS --*/
-
-               // Check if will fit at word/char spacing of previous line - if so continue it
-               // but only allow a maximum of $this->jSmaxWordLast and $this->jSmaxCharLast
-               else if ($contentWidth < ($maxWidth - $lastitalic-$WidthCorrection - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK))) && !$this->fixedlSpacing) {
-                       if ($this->ws > $this->jSmaxWordLast) {
-                               $jws = $this->jSmaxWordLast;
-                       }
-                       if ($this->charspacing > $this->jSmaxCharLast) {
-                               $jcharspacing = $this->jSmaxCharLast;
-                       }
-                       $check = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) - ( $jcharspacing * $nb_carac) - ( $jws * $nb_spaces);
-                       if ($check <= 0) {
-                               $jcharspacing = 0;
-                               $jws = 0;
-                       }
-               }
-
-               $empty = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
-
-               $empty -= ($jcharspacing * $nb_carac);
-               $empty -= ($jws * $nb_spaces);
-
-               $empty /= _MPDFK;
-
-               if (!$is_table) { 
-                       $this->maxPosR = max($this->maxPosR , ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'] - $empty)); 
-                       $this->maxPosL = min($this->maxPosL , ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $empty)); 
-               }
-
-               $arraysize = count($content);
-
-               $margins = ($this->cMarginL+$this->cMarginR) + ($ipaddingL+$ipaddingR + $fpaddingR + $fpaddingR );
-
-               if (!$is_table) { $this->DivLn($lineHeight,$this->blklvl,false); }      // false -> don't advance y
-
-               // DIRECTIONALITY RTL
-               $all_rtl = false;
-               $contains_rtl = false;
-/*-- RTL --*/
-               if ($blockdir == 'rtl' || $this->biDirectional)  {
-                       $all_rtl = true;
-                       foreach ( $content as $k => $chunk ) {
-                               $reversed = $this->magic_reverse_dir($chunk, false, $blockdir);
-                               if ($reversed > 0) { $contains_rtl = true; }
-                               if ($reversed < 2) { $all_rtl = false; }
-                               $content[$k] = $chunk;
-                       }
-                       if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { 
-                               $content = array_reverse($content,false); 
-                               $contentB = array_reverse($contentB,false);
-                       }
-               }
-/*-- END RTL --*/
-
-               $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL;
-               if ($dottab !== false && $blockdir=='rtl') { $this->x -= $dottab; } // mPDF 5.6.19
-               else if ($align == 'R') { $this->x += $empty; }
-               else if ($align == 'J' && $blockdir == 'rtl') { $this->x += $empty; }
-               else if ($align == 'C') { $this->x += ($empty / 2); }
-
-               // Paragraph INDENT
-               $WidthCorrection = 0; 
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align !='C')) { 
-                       $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-                       $this->x += $ti; 
-               }
-
-
-          foreach ( $content as $k => $chunk )
-          {
-
-               // FOR IMAGES
-               if ((($blockdir == 'rtl') && ($contains_rtl )) || $all_rtl ) { $dirk = $arraysize-1 - $k; } else { $dirk = $k; }
-
-               $va = 'M';      // default for text
-               if (isset($this->objectbuffer[$dirk]) && $this->objectbuffer[$dirk]) {
-                       $xadj = $this->x - $this->objectbuffer[$dirk]['OUTER-X']; 
-                       $this->objectbuffer[$dirk]['OUTER-X'] += $xadj;
-                       $this->objectbuffer[$dirk]['BORDER-X'] += $xadj;
-                       $this->objectbuffer[$dirk]['INNER-X'] += $xadj;
-                       $va = $this->objectbuffer[$dirk]['vertical-align'];
-                       $yadj = $this->y - $this->objectbuffer[$dirk]['OUTER-Y'];
-                       if ($va == 'BS') { 
-                               $yadj += $af + ($this->linemaxfontsize * (0.5 + $this->baselineC)) - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
-                       }
-                       else if ($va == 'M' || $va == '') { 
-                               $yadj += $af + ($this->linemaxfontsize /2) - ($this->objectbuffer[$dirk]['OUTER-HEIGHT']/2);
-                       }
-                       else if ($va == 'TB') { 
-                               $yadj += $af + $this->linemaxfontsize - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
-                       }
-                       else if ($va == 'TT') { 
-                               $yadj += $af;
-                       }
-                       else if ($va == 'B') { 
-                               $yadj += $af + $this->linemaxfontsize + $bf - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
-                       }
-                       else if ($va == 'T') { 
-                               $yadj += 0;
-                       }
-                       $this->objectbuffer[$dirk]['OUTER-Y'] += $yadj;
-                       $this->objectbuffer[$dirk]['BORDER-Y'] += $yadj;
-                       $this->objectbuffer[$dirk]['INNER-Y'] += $yadj;
-               }
-
-
-                       // DIRECTIONALITY RTL
-                       if ((($blockdir == 'rtl') && ($contains_rtl )) || $all_rtl ) { $this->restoreFont( $font[ $arraysize-1 - $k ] ); }
-                       else { $this->restoreFont( $font[ $k ] ); }
-
-                       // mPDF 5.6.13 Decimal alignment - set in _tableWrite
-                       if ($is_table && substr($align,0,1)=='D' && $k==0 ) {
-                               $dp = $this->decimal_align[substr($align,0,2)];
-                               $s = preg_split('/'.preg_quote($dp,'/').'/', $content[0], 2);   // ? needs to be /u if not core
-                               $s0 = $this->GetStringWidth($s[0], false);
-                               $this->x += ($this->decimal_offset - $s0);
-                       }
-
-                       $this->SetSpacing(($this->fixedlSpacing*_MPDFK)+$jcharspacing,($this->fixedlSpacing+$this->minwSpacing)*_MPDFK+$jws);
-                       $this->fixedlSpacing = false;
-                       $this->minwSpacing = 0;
-
-                       // mPDF 5.6.26
-                       $save_vis = $this->visibility;
-                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) {
-                               $this->SetVisibility($this->textparam['visibility']);
-                       }
-
-                       // *********** SPAN BACKGROUND COLOR ***************** //
-                       if (isset($this->spanbgcolor) && $this->spanbgcolor) { 
-                               $cor = $this->spanbgcolorarray;
-                               $this->SetFColor($cor);
-                               $save_fill = $fill; $spanfill = 1; $fill = 1;
-                       }
-                       if (!empty($this->spanborddet)) { 
-                               if (strpos($contentB[$k],'L')!==false && isset($this->spanborddet['L'])) $this->x += $this->spanborddet['L']['w'];
-                               if (strpos($contentB[$k],'L')===false) $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0; 
-                               if (strpos($contentB[$k],'R')===false) $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0; 
-                       }
-                       // WORD SPACING
-                     $stringWidth = $this->GetStringWidth($chunk ) + ( $this->charspacing * mb_strlen($chunk,$this->mb_enc ) / _MPDFK )  
-                               + ( $this->ws * mb_substr_count($chunk,' ',$this->mb_enc ) / _MPDFK );
-                       if (isset($this->objectbuffer[$dirk])) { 
-                               if ($this->objectbuffer[$dirk]['type']=='dottab') { 
-                                       $this->objectbuffer[$dirk]['OUTER-WIDTH'] +=$empty; 
-                                       $this->objectbuffer[$dirk]['OUTER-WIDTH'] +=$this->objectbuffer[$dirk]['outdent']; // mPDF 5.6.19
-                               }
-                               $stringWidth = $this->objectbuffer[$dirk]['OUTER-WIDTH'];
-                       }
-
-                       if ($stringWidth==0) { $stringWidth = 0.000001; }
-                       if ($k == $arraysize-1) {
-                               // mPDF 5.6.40
-                               if ($this->checkCJK && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {
-                                 // force-end overhang
-                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true ); 
-                                       $this->Cell( $this->GetStringWidth($hanger), $lineHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
-                               }
-                               else {
-                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
-                               }
-                       }
-                       else $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0,0,'M', $fill, $af, $bf, true );//first or middle part
-
-
-                       if (!empty($this->spanborddet)) { 
-                               if (strpos($contentB[$k],'R')!==false && $k != $arraysize-1)  $this->x += $this->spanborddet['R']['w'];
-                       }
-                       // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** //
-                       if (isset($spanfill) && $spanfill) { 
-                               $fill = $save_fill; $spanfill = 0; 
-                               if ($fill) { $this->SetFColor($bcor); }
-                       }
-                       // mPDF 5.6.26
-                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) {
-                               $this->SetVisibility($save_vis);
-                       }
-
-          }
-
-       $this->printobjectbuffer($is_table, $blockdir);
-
-       $this->objectbuffer = array();
-
-       $this->ResetSpacing();
-
-/*-- LISTS --*/
-       // LIST BULLETS/NUMBERS
-       if ($is_list && is_array($this->bulletarray) && ($lineCount == 0) ) {
-         
-         $savedFont = $this->saveFont();
-
-         $bull = $this->bulletarray;
-         if (isset($bull['level']) && isset($bull['occur']) && isset($this->InlineProperties['LIST'][$bull['level']][$bull['occur']])) { 
-               $this->restoreInlineProperties($this->InlineProperties['LIST'][$bull['level']][$bull['occur']]); 
-         }
-         if (isset($bull['level']) && isset($bull['occur']) && isset($bull['num']) && isset($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) && $this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) { $this->restoreInlineProperties($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]); }
-         if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
-               $this->bullet = true;
-               $this->SetFont('czapfdingbats','',$this->FontSizePt/2.5);
-         }
-         else { $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); }      // force output
-       //Output bullet
-         $this->x = $currentx;
-         if (isset($bull['x'])) { $this->x += $bull['x']; }
-         $this->y -= $lineHeight;
-         if (isset($bull['col']) && $bull['col']) { $this->SetTColor($bull['col']); }  // mPDF 5.6.67
-
-        if (isset($bull['txt'])) { $this->Cell($bull['w'], $lineHeight,$bull['txt'],'','',$bull['align'],0,'',0,-$this->cMarginL, -$this->cMarginR ); }
-         if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
-               $this->bullet = false;
-         }
-         $this->x = $currentx; // Reset
-         $this->y += $lineHeight;
-
-         if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-
-          $this->restoreFont( $savedFont );
-         // $font = array( $savedFont );
-
-         $this->bulletarray = array(); // prevents repeat of bullet/number if <li>....<br />.....</li>
-       }
-/*-- END LISTS --*/
-
-
-       }       // END IF CONTENT
-
-/*-- CSS-IMAGE-FLOAT --*/
-       // Update values if set to skipline
-       if ($this->floatmargins) { $this->_advanceFloatMargins(); }
-
-
-       if ($endofblock && $blockstate>1) { 
-               // If float exists at this level
-               if (isset($this->floatmargins['R']['y1'])) { $fry1 = $this->floatmargins['R']['y1']; }
-               else { $fry1 = 0; }
-               if (isset($this->floatmargins['L']['y1'])) { $fly1 = $this->floatmargins['L']['y1']; }
-               else { $fly1 = 0; }
-               if ($this->y < $fry1 || $this->y < $fly1) { 
-                       $drop = max($fry1,$fly1) - $this->y;
-                       $this->DivLn($drop); 
-                       $this->x = $currentx;
-               }
-       }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-
-       // PADDING and BORDER spacing/fill
-       if ($endofblock && ($blockstate > 1) && ($this->blk[$this->blklvl]['padding_bottom'] || $this->blk[$this->blklvl]['border_bottom'] || $this->blk[$this->blklvl]['css_set_height']) && (!$is_table) && (!$is_list)) { 
-                       // If CSS height set, extend bottom - if on same page as block started, and CSS HEIGHT > actual height, 
-                       //      and does not force pagebreak
-                       $extra = 0;
-                       if ($this->blk[$this->blklvl]['css_set_height'] && $this->blk[$this->blklvl]['startpage']==$this->page) {
-                               // predicted height
-                               $h1 = ($this->y-$this->blk[$this->blklvl]['y0']) + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'];
-                               if ($h1 < ($this->blk[$this->blklvl]['css_set_height']+$this->blk[$this->blklvl]['padding_bottom']+$this->blk[$this->blklvl]['padding_top'])) { $extra = ($this->blk[$this->blklvl]['css_set_height']+$this->blk[$this->blklvl]['padding_bottom']+$this->blk[$this->blklvl]['padding_top']) - $h1; }
-                               if($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra > $this->PageBreakTrigger) {
-                                       $extra = $this->PageBreakTrigger - ($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']); 
-                               }
-                       }
-
-                       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
-                       $this->DivLn($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra,-3,true,false,2); 
-                       $this->x = $currentx;
-
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-
-       }
-
-       // SET Bottom y1 of block (used for painting borders)
-       if (($endofblock) && ($blockstate > 1) && (!$is_table) && (!$is_list)) { 
-               $this->blk[$this->blklvl]['y1'] = $this->y;
-       }
-
-       // BOTTOM MARGIN
-       if (($endofblock) && ($blockstate > 1) && ($this->blk[$this->blklvl]['margin_bottom']) && (!$is_table) && (!$is_list)) { 
-               if($this->y+$this->blk[$this->blklvl]['margin_bottom'] < $this->PageBreakTrigger and !$this->InFooter) {
-                 $this->DivLn($this->blk[$this->blklvl]['margin_bottom'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']); 
-                 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }    // *COLUMNS*
-               }
-       }
-
-       // Reset lineheight
-       $lineHeight = $this->divheight;
-}
-
-
-
-
-
-function printobjectbuffer($is_table=false, $blockdir=false) {
-               if (!$blockdir) { $blockdir = $this->directionality; }
-               if ($is_table && $this->shrin_k > 1) { $k = $this->shrin_k; } 
-               else { $k = 1; }
-               $save_y = $this->y;
-               $save_x = $this->x;
-               $save_currentfontfamily = $this->FontFamily;
-               $save_currentfontsize = $this->FontSizePt;
-               $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
-               if ($blockdir == 'rtl') { $rtlalign = 'R'; } else { $rtlalign = 'L'; }
-               foreach ($this->objectbuffer AS $ib => $objattr) { 
-                  if ($objattr['type'] == 'bookmark' || $objattr['type'] == 'indexentry' || $objattr['type'] == 'toc') {
-                       $x = $objattr['OUTER-X']; 
-                       $y = $objattr['OUTER-Y'];
-                       $this->y = $y - $this->FontSize/2;
-                       $this->x = $x;
-                       if ($objattr['type'] == 'bookmark' ) { $this->Bookmark($objattr['CONTENT'],$objattr['bklevel'] ,$y - $this->FontSize); }        // *BOOKMARKS*
-                       if ($objattr['type'] == 'indexentry') { $this->IndexEntry($objattr['CONTENT']); }       // *INDEX*
-                       if ($objattr['type'] == 'toc') { $this->TOC_Entry($objattr['CONTENT'], $objattr['toclevel'], $objattr['toc_id']); }     // *TOC*
-                  }
-/*-- ANNOTATIONS --*/
-                  else if ($objattr['type'] == 'annot') {
-                       if ($objattr['POS-X']) { $x = $objattr['POS-X']; }
-                       else if ($this->annotMargin<>0) { $x = -$objattr['OUTER-X']; }
-                       else { $x = $objattr['OUTER-X']; }
-                       if ($objattr['POS-Y']) { $y = $objattr['POS-Y']; }
-                       else { $y = $objattr['OUTER-Y'] - $this->FontSize/2; }
-                       // Create a dummy entry in the _out/columnBuffer with position sensitive data,
-                       // linking $y-1 in the Columnbuffer with entry in $this->columnAnnots
-                       // and when columns are split in length will not break annotation from current line
-                       $this->y = $y-1;
-                       $this->x = $x-1;
-                       $this->Line($x-1,$y-1,$x-1,$y-1);
-                       $this->Annotation($objattr['CONTENT'], $x , $y , $objattr['ICON'], $objattr['AUTHOR'], $objattr['SUBJECT'], $objattr['OPACITY'], $objattr['COLOR'], $objattr['POPUP'], $objattr['FILE']);
-                  }
-/*-- END ANNOTATIONS --*/
-                  else { 
-                       $y = $objattr['OUTER-Y'];
-                       $x = $objattr['OUTER-X'];
-                       $w = $objattr['OUTER-WIDTH'];
-                       $h = $objattr['OUTER-HEIGHT'];
-                       if (isset($objattr['text'])) { $texto = $objattr['text']; }
-                       $this->y = $y;
-                       $this->x = $x;
-                       if (isset($objattr['fontfamily'])) { $this->SetFont($objattr['fontfamily'],'',$objattr['fontsize'] ); }
-                  }
-
-               // HR
-                  if ($objattr['type'] == 'hr') {
-                       $this->SetDColor($objattr['color']);
-                       switch($objattr['align']) {
-                   case 'C':
-                       $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH'];
-                       $empty /= 2;
-                       $x += $empty;
-                                 break;
-                   case 'R':
-                       $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH'];
-                       $x += $empty;
-                       break;
-                       }
-               $oldlinewidth = $this->LineWidth;
-                       $this->SetLineWidth($objattr['linewidth']/$k );
-                       $this->y += ($objattr['linewidth']/2) + $objattr['margin_top']/$k;
-                       $this->Line($x,$this->y,$x+$objattr['INNER-WIDTH'],$this->y);
-                       $this->SetLineWidth($oldlinewidth);
-                       $this->SetDColor($this->ConvertColor(0));
-                  }
-               // IMAGE
-                  if ($objattr['type'] == 'image') {
-                       // mPDF 5.6.01  - LAYERS
-                       if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->currentlayer==0) {
-                               $this->BeginLayer($objattr['z-index']);
-                       }
-                       if(isset($objattr['visibility']) && $objattr['visibility']!='visible' && $objattr['visibility']) {
-                               $this->SetVisibility($objattr['visibility']);
-                       }
-                       if (isset($objattr['opacity'])) { $this->SetAlpha($objattr['opacity']); }
-                       $rotate = 0;
-                       $obiw = $objattr['INNER-WIDTH'];
-                       $obih = $objattr['INNER-HEIGHT'];
-                       $sx = $objattr['INNER-WIDTH']*_MPDFK / $objattr['orig_w'];
-                       $sy = abs($objattr['INNER-HEIGHT'])*_MPDFK / abs($objattr['orig_h']);
-                       $sx = ($objattr['INNER-WIDTH']*_MPDFK / $objattr['orig_w']);
-                       $sy = ($objattr['INNER-HEIGHT']*_MPDFK / $objattr['orig_h']);
-
-                       if (isset($objattr['ROTATE'])) { $rotate = $objattr['ROTATE']; }
-                       if ($rotate==90) { 
-                               // Clockwise
-                               $obiw = $objattr['INNER-HEIGHT'];
-                               $obih = $objattr['INNER-WIDTH'];
-                               $tr = $this->transformTranslate(0, -$objattr['INNER-WIDTH'], true) ;
-                               $tr .= ' '. $this->transformRotate(90, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-WIDTH'] ),true) ;
-                               $sx = $obiw*_MPDFK / $objattr['orig_h'];
-                               $sy = $obih*_MPDFK / $objattr['orig_w'];
-                       }
-                       else if ($rotate==-90 || $rotate==270) { 
-                               // AntiClockwise
-                               $obiw = $objattr['INNER-HEIGHT'];
-                               $obih = $objattr['INNER-WIDTH'];
-                               $tr = $this->transformTranslate($objattr['INNER-WIDTH'], ($objattr['INNER-HEIGHT']-$objattr['INNER-WIDTH']), true) ;
-                               $tr .= ' '. $this->transformRotate(-90, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-WIDTH'] ),true) ;
-                               $sx = $obiw*_MPDFK / $objattr['orig_h'];
-                               $sy = $obih*_MPDFK / $objattr['orig_w'];
-                       }
-                       else if ($rotate==180) { 
-                               // Mirror
-                               $tr = $this->transformTranslate($objattr['INNER-WIDTH'], -$objattr['INNER-HEIGHT'], true) ;
-                               $tr .= ' '. $this->transformRotate(180, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-HEIGHT'] ),true) ;
-                       }
-                       else { $tr = ''; }
-                       $tr = trim($tr);
-                       if ($tr) { $tr .= ' '; }
-                       $gradmask = '';
-
-
-/*-- BACKGROUNDS --*/
-                       if (isset($objattr['GRADIENT-MASK'])) { 
-                               $g = $this->grad->parseMozGradient( $objattr['GRADIENT-MASK'] );
-                               if ($g) {
-                                       $dummy = $this->grad->Gradient($objattr['INNER-X'], $objattr['INNER-Y'], $obiw, $obih, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true, true);
-                                       $gradmask = '/TGS'.count($this->gradients).' gs ';
-                                       // $this->_out("q ".$tr.$this->grad->Gradient($objattr['INNER-X'], $objattr['INNER-Y'], $obiw, $obih, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true)." Q");
-                               }
-                       }
-/*-- END BACKGROUNDS --*/
-/*-- IMAGES-WMF --*/
-                       if (isset($objattr['itype']) && $objattr['itype']=='wmf') { 
-                               $outstring = sprintf('q '.$tr.'%.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, -$sy, $objattr['INNER-X']*_MPDFK-$sx*$objattr['wmf_x'], (($this->h-$objattr['INNER-Y'])*_MPDFK)+$sy*$objattr['wmf_y'], $objattr['ID']);
-                       }
-                       else  
-/*-- END IMAGES-WMF --*/
-                       if (isset($objattr['itype']) && $objattr['itype']=='svg') { 
-                               $outstring = sprintf('q '.$tr.'%.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, -$sy, $objattr['INNER-X']*_MPDFK-$sx*$objattr['wmf_x'], (($this->h-$objattr['INNER-Y'])*_MPDFK)+$sy*$objattr['wmf_y'], $objattr['ID']);
-                       }
-                       else { 
-                               $outstring = sprintf("q ".$tr."%.3F 0 0 %.3F %.3F %.3F cm ".$gradmask."/I%d Do Q",$obiw*_MPDFK, $obih*_MPDFK, $objattr['INNER-X'] *_MPDFK, ($this->h-($objattr['INNER-Y'] +$obih ))*_MPDFK,$objattr['ID'] );
-                       }
-                       $this->_out($outstring);
-                       // LINK
-                       if (isset($objattr['link'])) $this->Link($objattr['INNER-X'],$objattr['INNER-Y'],$objattr['INNER-WIDTH'],$objattr['INNER-HEIGHT'],$objattr['link']);
-                       if (isset($objattr['opacity'])) { $this->SetAlpha(1); }
-                       if ((isset($objattr['border_top']) && $objattr['border_top']>0) || (isset($objattr['border_left']) && $objattr['border_left']>0) || (isset($objattr['border_right']) && $objattr['border_right']>0) || (isset($objattr['border_bottom']) && $objattr['border_bottom']>0)) { $this->PaintImgBorder($objattr,$is_table); }
-                       if(isset($objattr['visibility']) && $objattr['visibility']!='visible' && $objattr['visibility']) {
-                               $this->SetVisibility('visible');
-                       }
-                       // mPDF 5.6.01  - LAYERS
-                       if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->currentlayer==0) {
-                               $this->EndLayer();
-                       }
-
-                  }
-
-/*-- BARCODES --*/
-               // BARCODE
-                  if ($objattr['type'] == 'barcode') {
-                       $bgcol = $this->ConvertColor(255);
-                       if (isset($objattr['bgcolor']) && $objattr['bgcolor']) {
-                               $bgcol = $objattr['bgcolor'];
-                       }
-                       $col = $this->ConvertColor(0);
-                       if (isset($objattr['color']) && $objattr['color']) {
-                               $col = $objattr['color'];
-                       }
-                       $this->SetFColor($bgcol);
-                       $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F');
-                       $this->SetFColor($this->ConvertColor(255));
-                       if (isset($objattr['BORDER-WIDTH'])) { $this->PaintImgBorder($objattr,$is_table); }
-                       if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') {
-                               $this->WriteBarcode($objattr['code'], $objattr['showtext'], $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize'], 0, 0, 0, 0, 0, $objattr['bheight'], $bgcol, $col, $objattr['btype'], $objattr['bsupp'], $objattr['bsupp_code'], $k);
-                       }
-                       // QR-code
-                       else if ($objattr['btype']=='QR') {
-                               if (!class_exists('QRcode', false)) { 
-                                       include(_MPDF_PATH.'qrcode/qrcode.class.php'); 
-                               }
-                               $this->qrcode = new QRcode($objattr['code'], $objattr['errorlevel']);
-                               $this->qrcode->displayFPDF($this, $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize']*25, array(255,255,255), array(0,0,0));
-                       }
-                       else {
-                               $this->WriteBarcode2($objattr['code'], $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize'], $objattr['bheight'], $bgcol, $col, $objattr['btype'], $objattr['pr_ratio'], $k);
-                       }
-                  }
-/*-- END BARCODES --*/
-
-               // TEXT CIRCLE
-                  if ($objattr['type'] == 'textcircle') {
-                       $bgcol = '';    // mPDF 5.5.14
-                       if (isset($objattr['bgcolor']) && $objattr['bgcolor']) {
-                               $bgcol = $objattr['bgcolor'];
-                       }
-                       $col = $this->ConvertColor(0);
-                       if (isset($objattr['color']) && $objattr['color']) {
-                               $col = $objattr['color'];
-                       }
-                       $this->SetTColor($col);
-                       $this->SetFColor($bgcol);
-                       if ($bgcol) $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F');  // mPDF 5.5.14
-                       $this->SetFColor($this->ConvertColor(255));
-                       if (isset($objattr['BORDER-WIDTH'])) { $this->PaintImgBorder($objattr,$is_table); }
-                       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
-                       if (empty($this->directw)) { $this->directw = new directw($this); }
-                       $save_lmfs = $this->linemaxfontsize;
-                       $this->linemaxfontsize = 0;
-                       if (isset($objattr['top-text'])) {
-                               $this->directw->CircularText($objattr['INNER-X']+$objattr['INNER-WIDTH']/2, $objattr['INNER-Y']+$objattr['INNER-HEIGHT']/2, $objattr['r']/$k, $objattr['top-text'], 'top', $objattr['fontfamily'], $objattr['fontsize']/$k, $objattr['fontstyle'], $objattr['space-width'], $objattr['char-width'],  $objattr['divider']);              // mPDF 5.5.23
-                       }
-                       if (isset($objattr['bottom-text'])) {
-                               $this->directw->CircularText($objattr['INNER-X']+$objattr['INNER-WIDTH']/2, $objattr['INNER-Y']+$objattr['INNER-HEIGHT']/2, $objattr['r']/$k, $objattr['bottom-text'], 'bottom', $objattr['fontfamily'], $objattr['fontsize']/$k, $objattr['fontstyle'], $objattr['space-width'], $objattr['char-width'],  $objattr['divider']);                // mPDF 5.5.23
-                       }
-                       $this->linemaxfontsize = $save_lmfs;
-                  }
-
-                  $this->ResetSpacing();
-
-               // DOT-TAB
-                  if ($objattr['type'] == 'dottab') {
-                               // mPDF 5.6.19
-                               if (isset($objattr['fontfamily'])) { $this->SetFont($objattr['fontfamily'],'',$objattr['fontsize'] ); }
-                               $sp = $this->GetStringWidth(' ');
-                               $nb=floor(($w-2*$sp)/$this->GetStringWidth('.'));
-                               if ($nb>0) { $dots=' '.str_repeat('.',$nb).' '; }
-                               else { $dots=' '; }
-                               $col = $this->ConvertColor(0);
-                               if (isset($objattr['colorarray']) && ($objattr['colorarray'])) {        // mPDF 5.6.19
-                                       $col = $objattr['colorarray'];
-                               }
-                               $this->SetTColor($col);
-                               $save_dh = $this->divheight;    // mPDF 5.6.19
-                               $save_sbd = $this->spanborddet;
-                               $save_u = $this->U;
-                               $save_s = $this->strike;
-                               $this->spanborddet = '';
-                               $this->divheight = 0;   // mPDF 5.6.19
-                               $this->U = false;
-                               $this->strike = false;
-                               $this->Cell($w,$h,$dots,0,0,'C');
-                               $this->spanborddet = $save_sbd;
-                               $this->U = $save_u;
-                               $this->strike = $save_s;
-                               $this->divheight = $save_dh;    // mPDF 5.6.19
-                               // mPDF 5.0
-                               $this->SetTColor($this->ConvertColor(0));
-                  }
-
-/*-- FORMS --*/
-               // TEXT/PASSWORD INPUT
-                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD')) {
-                       $this->form->print_ob_text($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
-                  }
-
-               // TEXTAREA
-                  if ($objattr['type'] == 'textarea') {
-                       $this->form->print_ob_textarea($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
-                  }
-
-               // SELECT
-                  if ($objattr['type'] == 'select') {
-                       $this->form->print_ob_select($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
-                  }
-
-
-               // INPUT/BUTTON as IMAGE
-                  if ($objattr['type'] == 'input' && $objattr['subtype'] == 'IMAGE') {
-                       $this->form->print_ob_imageinput($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
-                  }
-
-               // BUTTON
-                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'SUBMIT' || $objattr['subtype'] == 'RESET' || $objattr['subtype'] == 'BUTTON')) {
-                       $this->form->print_ob_button($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
-                  }
-
-               // CHECKBOX
-                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'CHECKBOX')) {
-                       $this->form->print_ob_checkbox($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y);
-                  }
-               // RADIO
-                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'RADIO')) {
-                       $this->form->print_ob_radio($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y);
-                  }
-/*-- END FORMS --*/
-               }
-               $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize);
-               $this->y = $save_y;
-               $this->x = $save_x;
-               unset($content);
-}
-
-
-function WriteFlowingBlock( $s)
-{
-       $currentx = $this->x; 
-       $is_table = $this->flowingBlockAttr[ 'is_table' ];
-       $is_list = $this->flowingBlockAttr[ 'is_list' ];
-       // width of all the content so far in points
-       $contentWidth =& $this->flowingBlockAttr[ 'contentWidth' ];
-       // cell width in points
-       $maxWidth =& $this->flowingBlockAttr[ 'width' ];
-       $lineCount =& $this->flowingBlockAttr[ 'lineCount' ];
-       // line height in user units
-       $lineHeight =& $this->flowingBlockAttr[ 'height' ];
-       $align =& $this->flowingBlockAttr[ 'align' ];
-       $content =& $this->flowingBlockAttr[ 'content' ];
-       $contentB =& $this->flowingBlockAttr[ 'contentB' ];
-       $font =& $this->flowingBlockAttr[ 'font' ];
-       $valign =& $this->flowingBlockAttr[ 'valign' ];
-       $blockstate = $this->flowingBlockAttr[ 'blockstate' ];
-
-       $newblock = $this->flowingBlockAttr[ 'newblock' ];
-       $blockdir = $this->flowingBlockAttr['blockdir'];
-       // *********** BLOCK BACKGROUND COLOR ***************** //
-       if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) {
-               $fill = 0;
-       }
-       else {
-               $this->SetFColor($this->ConvertColor(255));
-               $fill = 0;
-       }
-       $font[] = $this->saveFont();
-       $content[] = '';
-       $contentB[] = '';
-       $currContent =& $content[ count( $content ) - 1 ];
-       // where the line should be cutoff if it is to be justified
-       $cutoffWidth = $contentWidth;
-
-       $CJKoverflow = false;
-       $hanger = '';   // mPDF 5.6.40
-
-       // COLS
-       $oldcolumn = $this->CurrCol;
-
-       if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }        // *COLUMNS*
-
-/*-- TABLES --*/
-   if ($is_table) { 
-       $ipaddingL = 0; 
-       $ipaddingR = 0; 
-       $paddingL = 0; 
-       $paddingR = 0; 
-       $cpaddingadjustL = 0;
-       $cpaddingadjustR = 0;
-       // Added mPDF 3.0
-       $fpaddingR = 0;
-       $fpaddingL = 0;
-  } 
-   else { 
-/*-- END TABLES --*/
-               $ipaddingL = $this->blk[$this->blklvl]['padding_left']; 
-               $ipaddingR = $this->blk[$this->blklvl]['padding_right']; 
-               $paddingL = ($ipaddingL * _MPDFK); 
-               $paddingR = ($ipaddingR * _MPDFK); 
-               $this->cMarginL =  $this->blk[$this->blklvl]['border_left']['w'];
-               $cpaddingadjustL = -$this->cMarginL;
-               $this->cMarginR =  $this->blk[$this->blklvl]['border_right']['w'];
-               $cpaddingadjustR = -$this->cMarginR;
-               // Added mPDF 3.0 Float DIV
-               $fpaddingR = 0;
-               $fpaddingL = 0;
-/*-- CSS-FLOAT --*/
-               if (count($this->floatDivs)) {
-                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
-                       if ($r_exists) { $fpaddingR = $r_width; }
-                       if ($l_exists) { $fpaddingL = $l_width; }
-               }
-/*-- END CSS-FLOAT --*/
-
-               $usey = $this->y + 0.002;
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
-                       $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
-               }
-/*-- CSS-IMAGE-FLOAT --*/
-               // If float exists at this level
-               if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
-               if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
-/*-- END CSS-IMAGE-FLOAT --*/
-   }   // *TABLES*
-
-     //OBJECTS - IMAGES & FORM Elements (NB has already skipped line/page if required - in printbuffer)
-      if (substr($s,0,3) == "\xbb\xa4\xac") { //identifier has been identified!
-               $objattr = $this->_getObjAttr($s);
-               $h_corr = 0; 
-               if ($is_table) {        // *TABLES*
-                       $maximumW = ($maxWidth/_MPDFK) - ($this->cellPaddingL + $this->cMarginL + $this->cellPaddingR + $this->cMarginR);       // *TABLES*
-               }       // *TABLES*
-               else {  // *TABLES*
-                       if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) && (!$is_table)) { $h_corr = $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; }
-                       $maximumW = ($maxWidth/_MPDFK) - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w'] + $fpaddingL + $fpaddingR ); 
-               }       // *TABLES*
-               $objattr = $this->inlineObject($objattr['type'],$this->lMargin + $fpaddingL + ($contentWidth/_MPDFK),($this->y + $h_corr), $objattr, $this->lMargin,($contentWidth/_MPDFK),$maximumW,$lineHeight,true,$is_table);
-
-               // SET LINEHEIGHT for this line ================ RESET AT END
-               $lineHeight = MAX($lineHeight,$objattr['OUTER-HEIGHT']);
-               $this->objectbuffer[count($content)-1] = $objattr;
-               // if (isset($objattr['vertical-align'])) { $valign = $objattr['vertical-align']; }
-               // else { $valign = ''; }
-               $contentWidth += ($objattr['OUTER-WIDTH'] * _MPDFK);
-               return;
-       }
-
-       $lbw = $rbw = 0;        // Border widths
-       if (!empty($this->spanborddet)) { 
-               if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w'];
-               if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w'];
-       }
-
-   if ($this->usingCoreFont) {
-       $tmp = strlen( $s );
-   }
-   else {
-       $tmp = mb_strlen( $s, $this->mb_enc );
-   }
-
-   // for every character in the string
-   for ( $i = 0; $i < $tmp; $i++ )  {
-       // extract the current character
-       // get the width of the character in points
-       if ($this->usingCoreFont) {
-               $c = $s[$i];
-               // Soft Hyphens chr(173)
-               $cw = ($this->GetCharWidthCore($c) * _MPDFK);
-               if ($this->kerning && $this->useKerning && $i > 0) {
-                       if (isset($this->CurrentFont['kerninfo'][$s[($i-1)]][$c])) { 
-                               $cw += ($this->CurrentFont['kerninfo'][$s[($i-1)]][$c] * $this->FontSizePt / 1000 );
-                       }
-               }
-       }
-       else {
-             $c = mb_substr($s,$i,1,$this->mb_enc );
-               $cw = ($this->GetCharWidthNonCore($c, false) * _MPDFK);
-               if ($this->kerning && $this->useKerning && $i > 0) {
-                       $lastc = mb_substr($s,($i-1),1,$this->mb_enc );
-                       $ulastc = $this->UTF8StringToArray($lastc, false);
-                       $uc = $this->UTF8StringToArray($c, false);
-                       if (isset($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]])) { 
-                               $cw += ($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]] * $this->FontSizePt / 1000 );
-                       }
-               }
-       }
-
-       if ($i==0) {
-               $cw += $lbw*_MPDFK;
-               $contentB[(count($contentB)-1)] .= 'L';
-       }
-       if ($i==($tmp-1)) {
-               $cw += $rbw*_MPDFK;
-               $contentB[(count($contentB)-1)] .= 'R';
-       }
-       // mPDF 5.6.45
-       if ($c==' ') { 
-               $currContent .= $c;
-               $cutoffWidth = $contentWidth;
-               $contentWidth += $cw;
-               continue;
-       }
-
-       // ADDED for Paragraph_indent
-       $WidthCorrection = 0; 
-       if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align != 'C')) { 
-               $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-               $WidthCorrection = ($ti*_MPDFK); 
-       } 
-
-       // Added mPDF 3.0 Float DIV
-       $fpaddingR = 0;
-       $fpaddingL = 0;
-/*-- CSS-FLOAT --*/
-       if (count($this->floatDivs)) {
-               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
-               if ($r_exists) { $fpaddingR = $r_width; }
-               if ($l_exists) { $fpaddingL = $l_width; }
-       }
-/*-- END CSS-FLOAT --*/
-
-       $usey = $this->y + 0.002;
-       if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
-               $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
-       }
-
-/*-- CSS-IMAGE-FLOAT --*/
-       // If float exists at this level
-       if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
-       if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-
-
-       // try adding another char
-       if (( $contentWidth + $cw > $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) +  0.001))  {// 0.001 is to correct for deviations converting mm=>pts
-               // it won't fit, output what we already have
-               $lineCount++;
-
-               // contains any content that didn't make it into this print
-               $savedContent = '';
-               $savedContentB = '';
-               $savedFont = array();
-               $savedObj = array();
-               // mPDF 5.6.20
-               $savedPreContent = array();
-               $savedPreContentB = array();
-               $savedPreFont = array();
-
-               // cut off and save any partial words at the end of the string
-               $words = explode( ' ', $currContent ); 
-               ///////////////////
-               // HYPHENATION
-               $currWord = $words[count($words)-1] ;
-               $success = false;
-
-               // mPDF 5.6.21   Hard Hyphens -
-               $hardsuccess = false;
-               if ($this->textparam['hyphens'] != 2 && preg_match("/\-/",$currWord)) { 
-                       $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
-                       list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth("-", false)) );
-                       if ($hardsuccess) { 
-                               $already = array_pop( $words );
-                               $forward = mb_substr($already,$prelength+1,mb_strlen($already, $this->mb_enc), $this->mb_enc);
-                               $words[] = $pre.'-';
-                               $words[] = $forward;
-                               $currContent = mb_substr($currContent,0,mb_strlen($currContent, $this->mb_enc)+1-mb_strlen($post, $this->mb_enc), $this->mb_enc) . '-';
-                       }
-               }
-               
-/*-- HYPHENATION --*/
-               // Soft Hyphens chr(173)
-               else if ($this->textparam['hyphens'] != 2 && (!$this->usingCoreFont && preg_match("/\xc2\xad/",$currWord)) || ($this->usingCoreFont && preg_match("/".chr(173)."/",$currWord) && ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats')) ) {      // mPDF 5.6.06
-                       $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
-                       list($success,$pre,$post,$prelength) = $this->softHyphenate($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth(" ", false)) );
-               }
-
-               if (!$success && !$hardsuccess && $this->textparam['hyphens'] == 1 ) {  // mPDF 5.6.06  // mPDF 5.6.21
-                       // Look ahead to get current word
-                       for($ac = $i; $ac<(mb_strlen($s)-1); $ac++) {
-                               $addc = mb_substr($s,$ac,1,$this->mb_enc );
-                               if ($addc == ' ') { break; }
-                               $currWord .= $addc;
-                       }
-                       $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
-                       list($success,$pre,$post,$prelength) = $this->hyphenateWord($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth(" ", false)) );
-               }
-               if ($success) { 
-                       $already = array_pop( $words );
-                       $forward = mb_substr($already,$prelength,mb_strlen($already, $this->mb_enc), $this->mb_enc);
-                       $words[] = $pre.'-';
-                       $words[] = $forward;
-                       $currContent = mb_substr($currContent,0,mb_strlen($currContent, $this->mb_enc)+1-mb_strlen($post, $this->mb_enc), $this->mb_enc) . '-';
-               }
-/*-- END HYPHENATION --*/
-
-               // mPDF 5.6.13 Decimal alignment (cancel if wraps to > 1 line)
-               if ($is_table && substr($align,0,1)=='D' ) { $align=substr($align,2,1); }
-
-/*-- CJK-FONTS --*/
-               // mPDF 5.6.42
-               if ($this->checkCJK) {
-                       $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
-               }
-               // Next character is suitable to add as overhanging or squeezed punctuation
-               if ($this->checkCJK && preg_match("/[".$this->CJKoverflow."]/u", $c) && $this->allowCJKorphans && !$CJKoverflow) {
-                       // add character onto this line
-                       $currContent .= $c;
-                       $cutoffWidth = $contentWidth;
-                       $contentWidth += $cw;
-                       $CJKoverflow = true;
-                       continue;
-               }
-               // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line
-               else if ($this->checkCJK && preg_match("/[".$this->CJKleading."]/u", $lastchar)) {
-                       //move lastchar(s) to next line
-                       $m0 = $lastchar;
-                       $m1 = $c;
-                       while(preg_match("/[".$this->CJKleading."]/u", $m0) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
-                               // trim last letter off word[0]
-                               $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
-                               // and add it to savedContent for next line
-                               $savedContent = $m0.$savedContent;
-                               $m1 = $lastchar;
-                               $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
-                               $m0 = $lastchar;
-                       }
-                       $lastContent = '';
-                       for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
-                       $savedFont = $this->saveFont();
-                       // replace the current content with the cropped version
-                       $currContent = rtrim( $lastContent );
-               }
-               // Next character is not allowed to start a new line
-               else if ($this->checkCJK && preg_match("/[".$this->CJKfollowing."]/u", $c)) {
-                       // try squeezing another character(s) onto this line = Oikomi
-                       if ($this->allowCJKorphans && !$CJKoverflow) {  // mPDF 5.6.40
-                             $lookahead = mb_substr($s,$i+1,1,$this->mb_enc );
-                               //if lookahead is not another following char
-                               if (!$lookahead || ($lookahead && !preg_match("/[".$this->CJKfollowing."]/u", $lookahead))) {
-                                       $currContent .= $c;
-                                       $cutoffWidth = $contentWidth;
-                                       $contentWidth += $cw;
-                                       if ($this->allowCJKoverflow && preg_match("/[".$this->CJKoverflow."]/u", $c)) { $CJKoverflow = true; }
-                                       continue;
-                               }
-                       }
-                       // or move lastchar(s) to next line to keep $c company = Oidashi
-                       $m0 = $lastchar;
-                       $m1 = $c;
-                       while(preg_match("/[".$this->CJKfollowing."]/u", $m1) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
-                               // trim last letter off word[0]
-                               $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
-                               // and add it to savedContent for next line
-                               $savedContent = $m0.$savedContent;
-                               $m1 = $lastchar;
-                               $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
-                               $m0 = $lastchar;
-                       }
-                       $lastContent = '';
-                       for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
-                       $savedFont = $this->saveFont();
-                       // replace the current content with the cropped version
-                       $currContent = rtrim( $lastContent );
-               }
-               // mPDF 5.6.42
-               else if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."]+[0-9\x{ff10}-\x{ff19}]+$)/u", $words[0])) {
-                       $lookahead = mb_substr($s,$i,16,$this->mb_enc );
-                       //and if lookahead starts with a few numerals
-                       if ($lookahead && (preg_match("/^([0-9\x{ff10}-\x{ff19}]+[".$this->pregCJKchars."]+)/u", $lookahead) || preg_match("/^([0-9\x{ff10}-\x{ff19}]+$)/u", $lookahead)) ) {
-                               // or move lastchar(s) to next line to keep numerals together
-                               $m0 = $lastchar;
-                               while(preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $m0) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
-                                       // trim last letter off word[0]
-                                       $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
-                                       // and add it to savedContent for next line
-                                       $savedContent = $m0.$savedContent;
-                                       $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
-                                       $m0 = $lastchar;
-                               }
-                       }
-                       $lastContent = '';
-                       for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
-                       $savedFont = $this->saveFont();
-                       // replace the current content with the cropped version
-                       $currContent = rtrim( $lastContent );
-               }
-               else 
-/*-- END CJK-FONTS --*/
-               // if it looks like we didn't finish any words for this chunk
-               if ( count( $words ) == 1 ) {
-                 // TO correct for error when word too wide for page - but only when one long word from left to right margin
-                 if (count($content) == 1 && $currContent != ' ') {
-                       $lastchar = mb_substr($words[0],mb_strlen($words[0], $this->mb_enc)-1, 1, $this->mb_enc);
-                       $lastContent = $words[0]; 
-                       $savedFont = $this->saveFont();
-                       // replace the current content with the cropped version
-                       $currContent = rtrim( $lastContent );
-                 }
-                 // mPDF 5.6.20
-                 else if (     count($content)>1
-                               && (!isset($this->objectbuffer[(count($content)-1)]) && !isset($this->objectbuffer[(count($content)-2)]))
-                               && substr($content[count($content)-2],-1,1) != ' '
-                               && substr($currContent,0,1) != ' '
-                       ) {
-                       // Go back to find a space in a previous chunk of content
-                       $found = false;
-                       for ($ix=count($content)-1;$ix>=0;$ix--) {
-                               // mPDF 5.6.29
-                               if ($this->usingCoreFont && preg_match('/[ '.chr(173).']/',$content[$ix],$m)) { $match = $m[0]; $found = $ix; break; }
-                               else if (!$this->usingCoreFont) {
-                                       if (preg_match('/[ ]/',$content[$ix])) { $match = ' '; $found = $ix; break; }
-                                       else if (preg_match('/[\x{00AD}]/u',$content[$ix])) {
-                                               // even though it is UTF-8 replace it temporarily with chr(173)
-                                               $content[$ix] = preg_replace('/[\x{00AD}]/u',chr(173),$content[$ix]);
-                                               $match = chr(173); $found = $ix; break; 
-                                       }
-                               }
-                       }
-                       if ($found !== false) {
-                               $charpos = strrpos($content[$found],$match);    // mPDF 5.6.29
-                               for ($ix=count($content)-1;$ix>$found;$ix--) {
-                                       // save and crop off any subsequent chunks
-                                       $savedPreContent[] = array_pop($content);
-                                       $savedPreContentB[] = array_pop($contentB);
-                                       $savedPreFont[] = array_pop($font);
-                               }
-                               if (substr($content[count($content)-1],$charpos+1,strlen($content[count($content)-1])-1) != '') {
-                                       $savedPreContent[] = substr($content[count($content)-1],$charpos+1,strlen($content[count($content)-1])-1);
-                                       $savedPreContentB[] = preg_replace('/L/','',$contentB[count($content)-1]);      // ???
-                                       $savedPreFont[] = $font[count($content)-1];
-                               }
-                               $savedContent = '';
-                               $savedContentB = '';
-                               $savedFont = array();
-
-                               $currContent =& $content[ count( $content ) - 1 ];
-                               $currContent = substr($currContent,0,$charpos);
-                               if ($match == chr(173)) { $currContent .= '-'; }        // mPDF 5.6.29
-                               if (strpos($contentB[(count($contentB)-1)],'R')!==false) {                      // ???
-                                       $contentB[count($content)-1] = preg_replace('/R/','',$contentB[count($content)-1]);     // ???
-                               }
-
-                               $currContent = rtrim( $currContent );
-                       }
-                       else {
-                               $savedContent = array_pop( $content );
-                               $savedContentB = array_pop($contentB);
-                               $savedFont = array_pop( $font );
-                               $currContent =& $content[ count( $content ) - 1 ];
-                               $currContent = rtrim( $currContent );
-                       }
-                 }
-                 else {
-                       // save and crop off the content currently on the stack
-                       $savedContent = array_pop( $content );
-                       $savedContentB = array_pop($contentB);  // mPDF 5.6.20
-                       $savedFont = array_pop( $font );
-
-                       // mPDF 5.7.2
-                       // e.g: |first chunk |second chunk |[IndexEntry]|doesntfit
-                       if (isset($this->objectbuffer[(count($content)-1)]) && $this->objectbuffer[(count($content)-1)]['OUTER-WIDTH'] < 0.001) {
-                               $savedObj = $this->objectbuffer[(count($content)-1)];
-                               array_pop( $content );
-                               array_pop( $contentB );
-                               array_pop( $font );
-                               array_pop( $this->objectbuffer );
-                       }
-
-                       // trim any trailing spaces off the last bit of content
-                       $currContent =& $content[ count( $content ) - 1 ];
-                       $currContent = rtrim( $currContent );
-                 }
-               }
-               else {  // otherwise, we need to find which bit to cut off
-                 $lastContent = '';
-              for ( $w = 0; $w < count( $words ) - 1; $w++) { $lastContent .= $words[ $w ]." "; }
-              $savedContent = $words[ count( $words ) - 1 ];
-              $savedFont = $this->saveFont();
-              // replace the current content with the cropped version
-              $currContent = rtrim( $lastContent );
-               }
-               // CJK - strip CJK space at end of line
-               // &#x3000; = \xe3\x80\x80 = CJK space
-               if ($this->checkCJK) { $currContent = preg_replace("/\xe3\x80\x80$/",'',$currContent) ; }       // *CJK-FONTS*
-
-
-               if (isset($this->objectbuffer[(count($content)-1)]) && $this->objectbuffer[(count($content)-1)]['type']=='dottab') {
-                       $savedObj = array_pop( $this->objectbuffer );
-                       $contentWidth -= ($this->objectbuffer[(count($content)-1)]['OUTER-WIDTH'] * _MPDFK);
-               }
-
-               // Set Current lineheight (correction factor)
-               $lhfixed = false; 
-/*-- LISTS --*/
-               if ($is_list) {
-                       if (preg_match('/([0-9.,]+)mm/',$this->list_lineheight[$this->listlvl][$this->listOcc],$am)) { 
-                               $lhfixed = true; 
-                               $def_fontsize = $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listOcc][$this->listnum]['size'];
-                               $this->lineheight_correction = $am[1] / $def_fontsize ;
-                       }
-                       else { 
-                               $this->lineheight_correction = $this->list_lineheight[$this->listlvl][$this->listOcc]; 
-                       }
-               }
-               else
-/*-- END LISTS --*/
-/*-- TABLES --*/
-               if ($is_table) {
-                       if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight,$am)) { 
-                               $lhfixed = true; 
-                               $def_fontsize = $this->FontSize;                                // needs to be default font-size for block ****
-                               $this->lineheight_correction = $lineHeight / $def_fontsize ; 
-                       }
-                       else { 
-                               $this->lineheight_correction = $this->table_lineheight; 
-                       }
-               }
-               else
-/*-- END TABLES --*/
-               if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
-                       if (preg_match('/([0-9.,]+)mm/',$this->blk[$this->blklvl]['line_height'],$am)) { 
-                               $lhfixed = true; 
-                               $def_fontsize = $this->blk[$this->blklvl]['InlineProperties']['size'];  // needs to be default font-size for block ****
-                               $this->lineheight_correction = $am[1] / $def_fontsize ;
-                       }
-                       else { 
-                               $this->lineheight_correction = $this->blk[$this->blklvl]['line_height']; 
-                       }
-               } 
-               else {
-                       $this->lineheight_correction = $this->normalLineheight; 
-               }
-               // update $contentWidth and $cutoffWidth since they changed with cropping
-               // Also correct lineheight to maximum fontsize (not for tables)
-               $contentWidth = 0;
-               //  correct lineheight to maximum fontsize
-               if ($lhfixed) { $maxlineHeight = $this->lineheight; }
-               else { $maxlineHeight = 0; }
-               $this->forceExactLineheight = true;
-               $maxfontsize = 0;
-               // While we're at it, check for cursive text
-               $checkCursive=false;
-               if ($this->biDirectional) {  $checkCursive=true; }      // *RTL*
-               foreach ( $content as $k => $chunk )
-               {
-              $this->restoreFont( $font[ $k ]);
-                 if (!isset($this->objectbuffer[$k])) { 
-                       // mPDF 5.6.40
-                       if ($this->checkCJK && $k == count($content)-1 && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $this->CJKforceend) {
-                         // force-end overhang
-                               $hanger = mb_substr($chunk,mb_strlen($chunk,$this->mb_enc)-1,1,$this->mb_enc );
-                               $content[$k] = $chunk = mb_substr($chunk,0,mb_strlen($chunk,$this->mb_enc)-1,$this->mb_enc );
-                       }
-                       if (!$this->usingCoreFont) {
-                             $content[$k] = $chunk = str_replace("\xc2\xad",'',$chunk ); 
-                               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {  $checkCursive=true; } // *INDIC*
-                       }
-                       // Soft Hyphens chr(173)
-                       else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
-                             $content[$k] = $chunk = str_replace(chr(173),'',$chunk );
-                       }
-                       $contentWidth += $this->GetStringWidth( $chunk ) * _MPDFK; 
-                       if (!empty($this->spanborddet)) { 
-                               if (strpos($contentB[$k],'L')!==false) $contentWidth += $this->spanborddet['L']['w'] * _MPDFK; 
-                               if (strpos($contentB[$k],'R')!==false) $contentWidth += $this->spanborddet['R']['w'] * _MPDFK; 
-                       }
-                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$this->FontSize * $this->lineheight_correction ); }
-                       if ($lhfixed && ($this->FontSize > $def_fontsize || ($this->FontSize > ($lineHeight * $this->lineheight_correction) && $is_list))) { 
-                               $this->forceExactLineheight = false; 
-                       }
-                       $maxfontsize = max($maxfontsize,$this->FontSize); 
-                 }
-               }
-
-               $lastfontreqstyle = $font[count($font)-1]['ReqFontStyle'];
-               $lastfontstyle = $font[count($font)-1]['style'];
-               if ($blockdir == 'ltr' && strpos($lastfontreqstyle,"I") !== false && strpos($lastfontstyle,"I") === false) {    // Artificial italic
-                       $lastitalic = $this->FontSize*0.15*_MPDFK;
-               }
-               else { $lastitalic = 0; }
-
-
-/*-- LISTS --*/
-               if ($is_list && is_array($this->bulletarray) && $this->bulletarray) {
-                       $actfs = $this->bulletarray['fontsize'];
-                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction );  }
-                       if ($lhfixed && $actfs > $def_fontsize) { $this->forceExactLineheight = false; }
-                       $maxfontsize = max($maxfontsize,$actfs);
-               }
-/*-- END LISTS --*/
-
-               // when every text item checked i.e. $maxfontsize is set properly
-
-               $af = 0;        // Above font
-               $bf = 0;        // Below font
-               $mta = 0;       // Maximum top-aligned 
-               $mba = 0;       // Maximum bottom-aligned 
-
-               foreach ( $content as $k => $chunk ) {
-                 if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) { 
-                       $contentWidth += $this->objectbuffer[$k]['OUTER-WIDTH'] * _MPDFK; 
-                       $oh = $this->objectbuffer[$k]['OUTER-HEIGHT'];
-                       $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S
-                       if ($lhfixed && $oh > $def_fontsize) { $this->forceExactLineheight = false; }
-
-                       if ($va == 'BS') {      //  (BASELINE default)
-                               $af = max($af, ($oh - ($maxfontsize * (0.5 + $this->baselineC))));
-                       }
-                       else if ($va == 'M') { 
-                               $af = max($af, ($oh - $maxfontsize)/2);
-                               $bf = max($bf, ($oh - $maxfontsize)/2);
-                       }
-                       else if ($va == 'TT') { 
-                               $bf = max($bf, ($oh - $maxfontsize));
-                       }
-                       else if ($va == 'TB') { 
-                               $af = max($af, ($oh - $maxfontsize));
-                       }
-                       else if ($va == 'T') { 
-                               $mta = max($mta, $oh);
-                       }
-                       else if ($va == 'B') { 
-                               $mba = max($mba, $oh);
-                       }
-                 }
-               }
-               if ((!$lhfixed || !$this->forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
-                       $maxlineHeight = $maxfontsize + $af + $bf;
-               }
-               else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
-
-               if ($mta > $maxlineHeight) { 
-                       $bf += ($mta - $maxlineHeight);
-                       $maxlineHeight = $mta;
-               }
-               if ($mba > $maxlineHeight) { 
-                       $af += ($mba - $maxlineHeight);
-                       $maxlineHeight = $mba;
-               }
-
-
-               $lineHeight = $maxlineHeight; 
-               $cutoffWidth = $contentWidth;
-               // If NOT images, and maxfontsize NOT > lineHeight - this value determines text baseline positioning
-               if ($lhfixed && $af==0 && $bf==0 && $maxfontsize<=($def_fontsize * $this->lineheight_correction * 0.8 )) { 
-                       $this->linemaxfontsize = $def_fontsize; 
-               }
-               else { $this->linemaxfontsize = $maxfontsize; }
-
-
-               $inclCursive=false;
-               foreach ( $content as $k => $chunk ) {
-                       if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
-                               if ($this->usingCoreFont) {
-                                     $content[$k] = str_replace(chr(160),chr(32),$chunk );
-                               }
-                               else {
-                                     $content[$k] = str_replace(chr(194).chr(160),chr(32),$chunk ); 
-                                       if ($checkCursive) {
-                                               if (preg_match("/([".$this->pregRTLchars."])/u", $chunk)) { $inclCursive = true; }      // *RTL*
-                                               if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $chunk)) { $inclCursive = true; } // *INDIC*
-                                       }
-                               }
-                       }
-               }
-
-               // JUSTIFICATION J
-               $jcharspacing = 0;
-               $jws = 0;
-               $nb_carac = 0;
-               $nb_spaces = 0;
-               // if it's justified, we need to find the char/word spacing (or if orphans have allowed length of line to go over the maxwidth)
-               if ( ($align == 'J' && !$CJKoverflow) || (($cutoffWidth + $lastitalic > $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) +  0.001) && (!$CJKoverflow || ($CJKoverflow && !$this->allowCJKoverflow))) || $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {   // 0.001 is to correct for deviations converting mm=>pts   // mPDF 5.6.40
-                 // JUSTIFY J (Use character spacing)
-                 // WORD SPACING
-                       foreach ( $content as $k => $chunk ) {
-                               if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
-                                       $nb_carac += mb_strlen( $chunk, $this->mb_enc ) ;  
-                                       $nb_spaces += mb_substr_count( $chunk,' ', $this->mb_enc ) ;  
-                               }
-                       }
-                       list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$cutoffWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
-               }
-
-
-               // WORD SPACING
-               $empty = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
-
-               $empty -= ($jcharspacing * $nb_carac);
-               $empty -= ($jws * $nb_spaces);
-
-               $empty /= _MPDFK;
-               $b = ''; //do not use borders
-               // Get PAGEBREAK TO TEST for height including the top border/padding
-               $check_h = max($this->divheight,$lineHeight);
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($this->blklvl > 0) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
-                       $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']);
-               }
-
-               if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) { 
-                       $this->SetCol($this->NbCol-1);
-               }
-
-               // PAGEBREAK
-               // 'If' below used in order to fix "first-line of other page with justify on" bug 
-               if(!$is_table && ($this->y+$check_h) > $this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) {
-                       $bak_x=$this->x;//Current X position
-
-                       // WORD SPACING
-                       $ws=$this->ws;//Word Spacing
-                       $charspacing=$this->charspacing;//Character Spacing
-                       $this->ResetSpacing();
-
-                     $this->AddPage($this->CurOrientation);
-
-                     $this->x = $bak_x;
-                       // Added to correct for OddEven Margins
-                       $currentx += $this->MarginCorrection;
-                       $this->x += $this->MarginCorrection;
-
-                       // WORD SPACING
-                       $this->SetSpacing($charspacing,$ws);
-               }
-
-               if ($this->keep_block_together && !$is_table && $this->kt_p00 < $this->page && ($this->y+$check_h) > $this->kt_y00) {
-                       $this->printdivbuffer();
-                       $this->keep_block_together = 0;
-               }
-
-               if ($this->kwt && !$is_table) { // mPDF 5.7+
-                       $this->printkwtbuffer();
-                       $this->kwt = false;
-               }
-
-/*-- COLUMNS --*/
-               // COLS
-               // COLUMN CHANGE
-               if ($this->CurrCol != $oldcolumn) {
-                       $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-                       $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-                       $oldcolumn = $this->CurrCol;
-               }
-
-               if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }        // *COLUMNS*
-/*-- END COLUMNS --*/
-
-               // TOP MARGIN
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($this->blk[$this->blklvl]['margin_top']) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
-                       $this->DivLn($this->blk[$this->blklvl]['margin_top'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']); 
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-               }
-
-
-               // Update y0 for top of block (used to paint border)
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
-                       $this->blk[$this->blklvl]['y0'] = $this->y;
-                       $this->blk[$this->blklvl]['startpage'] = $this->page;
-                       if ($this->blk[$this->blklvl]['float']) { $this->blk[$this->blklvl]['float_start_y'] = $this->y; } // mPDF 5.6.63
-               }
-
-               // TOP PADDING and BORDER spacing/fill
-               if (($newblock) && ($blockstate==1 || $blockstate==3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
-                       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
-                       $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'],-3,true,false,1);
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-               }
-
-               $arraysize = count($content);
-
-               $margins = ($this->cMarginL+$this->cMarginR) + ($ipaddingL+$ipaddingR + $fpaddingR + $fpaddingR );
-               // PAINT BACKGROUND FOR THIS LINE
-               if (!$is_table) { $this->DivLn($lineHeight,$this->blklvl,false); }      // false -> don't advance y
-
-               $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL ;
-               if ($align == 'R') { $this->x += $empty; }
-               else if ($align == 'C') { $this->x += ($empty / 2); }
-
-               // Paragraph INDENT
-               if (isset($this->blk[$this->blklvl]['text_indent']) && ($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 1) && (!$is_table) && ($blockdir !='rtl') && ($align !='C')) { 
-                       $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-                       $this->x += $ti; 
-               }
-
-               // DIRECTIONALITY RTL
-               $all_rtl = false;
-               $contains_rtl = false;
-/*-- RTL --*/
-               if ($blockdir == 'rtl' || $this->biDirectional)  {
-                       $all_rtl = true;
-                       foreach ( $content as $k => $chunk ) {
-                               $reversed = $this->magic_reverse_dir($chunk, false, $blockdir);
-
-                               if ($reversed > 0) { $contains_rtl = true; }
-                               if ($reversed < 2) { $all_rtl = false; }
-                               $content[$k] = $chunk;
-                       }
-                       if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { 
-                               $content = array_reverse($content,false); 
-                               $contentB = array_reverse($contentB,false);
-                       }
-               }
-/*-- END RTL --*/
-
-               foreach ( $content as $k => $chunk ) {
-
-                       // FOR IMAGES - UPDATE POSITION
-                       if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { $dirk = $arraysize-1 - $k ; } else { $dirk = $k; }
-
-                       $va = 'M';      // default for text
-                       if (isset($this->objectbuffer[$dirk]) && $this->objectbuffer[$dirk]) {
-                         $xadj = $this->x - $this->objectbuffer[$dirk]['OUTER-X'] ; 
-                         $this->objectbuffer[$dirk]['OUTER-X'] += $xadj;
-                         $this->objectbuffer[$dirk]['BORDER-X'] += $xadj;
-                         $this->objectbuffer[$dirk]['INNER-X'] += $xadj;
-                         $va = $this->objectbuffer[$dirk]['vertical-align'];
-                         $yadj = $this->y - $this->objectbuffer[$dirk]['OUTER-Y'];
-                         if ($va == 'BS') { 
-                               $yadj += $af + ($this->linemaxfontsize * (0.5 + $this->baselineC)) - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
-                         }
-                         else if ($va == 'M' || $va == '') { 
-                               $yadj += $af + ($this->linemaxfontsize /2) - ($this->objectbuffer[$dirk]['OUTER-HEIGHT']/2);
-                         }
-                         else if ($va == 'TB') { 
-                               $yadj += $af + $this->linemaxfontsize - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
-                         }
-                         else if ($va == 'TT') { 
-                               $yadj += $af;
-                         }
-                         else if ($va == 'B') { 
-                               $yadj += $af + $this->linemaxfontsize + $bf - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
-                         }
-                         else if ($va == 'T') { 
-                               $yadj += 0;
-                         }
-                         $this->objectbuffer[$dirk]['OUTER-Y'] += $yadj;
-                         $this->objectbuffer[$dirk]['BORDER-Y'] += $yadj;
-                         $this->objectbuffer[$dirk]['INNER-Y'] += $yadj;
-                       }
-
-                       // DIRECTIONALITY RTL
-                       if ((($blockdir == 'rtl') && ($contains_rtl )) || ($all_rtl )) { $this->restoreFont($font[$arraysize-1 - $k]); }
-                       else { $this->restoreFont( $font[ $k ] ); }
-
-                       $this->SetSpacing(($this->fixedlSpacing*_MPDFK)+$jcharspacing,($this->fixedlSpacing+$this->minwSpacing)*_MPDFK+$jws);
-                       // Now unset these values so they don't influence GetStringwidth below or in fn. Cell
-                       $this->fixedlSpacing = false;
-                       $this->minwSpacing = 0;
-
-                       // mPDF 5.6.26
-                       $save_vis = $this->visibility;
-                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) {
-                               $this->SetVisibility($this->textparam['visibility']);
-                       }
-                       // *********** SPAN BACKGROUND COLOR ***************** //
-                       if ($this->spanbgcolor) { 
-                               $cor = $this->spanbgcolorarray;
-                               $this->SetFColor($cor);
-                               $save_fill = $fill; $spanfill = 1; $fill = 1;
-                       }
-                       if (!empty($this->spanborddet)) { 
-                               if (strpos($contentB[$k],'L')!==false) $this->x += $this->spanborddet['L']['w'];
-                               if (strpos($contentB[$k],'L')===false) $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0; 
-                               if (strpos($contentB[$k],'R')===false) $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0; 
-                       }
-
-                       // WORD SPACING
-                     $stringWidth = $this->GetStringWidth($chunk );
-                       $stringWidth += ( $this->charspacing * mb_strlen($chunk,$this->mb_enc ) / _MPDFK );
-                       $stringWidth += ( $this->ws * mb_substr_count($chunk,' ',$this->mb_enc ) / _MPDFK );
-                       if (isset($this->objectbuffer[$dirk])) { $stringWidth = $this->objectbuffer[$dirk]['OUTER-WIDTH'];  }
-
-                       if ($stringWidth==0) { $stringWidth = 0.000001; }
-                       if ($k == $arraysize-1) {
-                               $stringWidth -= ( $this->charspacing / _MPDFK ); 
-                               // mPDF 5.6.40
-                               if ($this->checkCJK && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {
-                                 // force-end overhang
-                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true ); 
-                                       $this->Cell( $this->GetStringWidth($hanger), $lineHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
-                               }
-                               else {
-                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true ); //mono-style line or last part (skips line)
-                               }
-
-                       }
-                       else $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0,0,'M', $fill, $af, $bf, true );//first or middle part  
-
-                       if (!empty($this->spanborddet)) { 
-                               if (strpos($contentB[$k],'R')!==false && $k != $arraysize-1)  $this->x += $this->spanborddet['R']['w'];
-                       }
-                       // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** //
-                       if (isset($spanfill) && $spanfill) { 
-                               $fill = $save_fill; $spanfill = 0; 
-                               if ($fill) { $this->SetFColor($bcor); }
-                       }
-                       // mPDF 5.6.26
-                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) {
-                               $this->SetVisibility($save_vis);
-                       }
-
-               }
-               if (!$is_table) { 
-                       $this->maxPosR = max($this->maxPosR , ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'])); 
-                       $this->maxPosL = min($this->maxPosL , ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'])); 
-               }
-
-               // move on to the next line, reset variables, tack on saved content and current char
-
-               $this->printobjectbuffer($is_table, $blockdir);
-               $this->objectbuffer = array();
-
-/*-- LISTS --*/
-               // LIST BULLETS/NUMBERS
-               if ($is_list && is_array($this->bulletarray) && ($lineCount == 1) ) {
-                 
-                 $this->ResetSpacing();
-
-                 $bull = $this->bulletarray;
-                 if (isset($bull['level']) && isset($bull['occur']) && isset($this->InlineProperties['LIST'][$bull['level']][$bull['occur']])) { 
-                       $this->restoreInlineProperties($this->InlineProperties['LIST'][$bull['level']][$bull['occur']]); 
-                 }
-                 if (isset($bull['level']) && isset($bull['occur']) && isset($bull['num']) && isset($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) && $this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) { $this->restoreInlineProperties($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]); }
-                 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
-                       $this->bullet = true;
-                       $this->SetFont('czapfdingbats','',$this->FontSizePt/2.5);
-                 }
-                 else { $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); }      // force output
-               //Output bullet
-                 $this->x = $currentx;
-                 if (isset($bull['x'])) { $this->x += $bull['x']; }
-                 $this->y -= $lineHeight;
-                 if (isset($bull['col']) && $bull['col']) { $this->SetTColor($bull['col']); }  // mPDF 5.6.67
-                 if (isset($bull['txt'])) { $this->Cell($bull['w'], $lineHeight,$bull['txt'],'','',$bull['align'],0,'',0,-$this->cMarginL, -$this->cMarginR ); }
-                 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
-                       $this->bullet = false;
-                 }
-                 $this->x = $currentx; // Reset
-                 $this->y += $lineHeight;
-
-                 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-
-                 $this->bulletarray = array(); // prevents repeat of bullet/number if <li>....<br />.....</li>
-               }
-/*-- END LISTS --*/
-
-
-/*-- CSS-IMAGE-FLOAT --*/
-               // Update values if set to skipline
-               if ($this->floatmargins) { $this->_advanceFloatMargins(); }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-               // Reset lineheight
-               $lineHeight = $this->divheight;
-               $valign = 'M';
-
-               $font = array();
-               $content = array();
-               $contentB = array();
-               $contentWidth = 0;
-               if (!empty($savedObj)) {
-                       $this->objectbuffer[] = $savedObj;
-                       $font[] = $savedFont;
-                       $content[] = '';
-                       $contentB[] = '';
-                       $contentWidth += $savedObj['OUTER-WIDTH'] * _MPDFK;
-               }
-               // mPDF 5.6.20
-               if (count($savedPreContent) > 0) {
-                       for($ix=count($savedPreContent)-1;$ix>=0;$ix--) {
-                               $font[] = $savedPreFont[$ix];
-                               $content[] = $savedPreContent[$ix];
-                               $contentB[] = $savedPreContentB[$ix];
-                               $this->restoreFont( $savedPreFont[$ix] );
-                               $lbw = $rbw = 0;        // Border widths
-                               if (!empty($this->spanborddet)) { 
-                                       $lbw = $this->spanborddet['L']['w'];
-                                       $rbw = $this->spanborddet['R']['w'];
-                               }
-                               if ($ix>0) {
-                                       $contentWidth += $this->GetStringWidth( $savedPreContent[$ix] ) * _MPDFK;
-                                       if (strpos($savedPreContentB[$ix],'L')!==false) $contentWidth += $lbw;
-                                       if (strpos($savedPreContentB[$ix],'R')!==false) $contentWidth += $rbw;
-                               }
-                       }
-                       $savedPreContent = array();
-                       $savedPreContentB = array();
-                       $savedPreFont = array();
-                       $content[ (count($content)-1) ] .= $c;
-               }
-               else {
-                       $font[] = $savedFont;
-                       $content[] = $savedContent . $c;
-                       $contentB[] = $savedContentB ;
-               }
-
-               $currContent =& $content[ (count($content)-1) ];
-
-               // CJK - strip CJK space at end of line
-               // &#x3000; = \xe3\x80\x80 = CJK space
-               if ($this->checkCJK && $currContent == "\xe3\x80\x80") { $currContent = '' ; }  // *CJK-FONTS*
-
-               $this->restoreFont( $savedFont );
-               $lbw = $rbw = 0;        // Border widths
-               if (!empty($this->spanborddet)) { 
-                       $lbw = $this->spanborddet['L']['w'];
-                       $rbw = $this->spanborddet['R']['w'];
-               }
-               $contentWidth += $this->GetStringWidth( $currContent ) * _MPDFK;
-               if (strpos($savedContentB,'L')!==false) $contentWidth += $lbw;
-               $cutoffWidth = $contentWidth;
-               $CJKoverflow = false;
-               $hanger = '';   // mPDF 5.6.40
-      }
-      // another character will fit, so add it on
-       else {
-               $contentWidth += $cw;
-               $currContent .= $c;
-       }
-    }
-    unset($content);
-    unset($contentB);
-}
-//----------------------END OF FLOWING BLOCK------------------------------------//
-
-
-/*-- CSS-IMAGE-FLOAT --*/
-// Update values if set to skipline
-function _advanceFloatMargins() {
-       // Update floatmargins - L
-       if (isset($this->floatmargins['L']) && $this->floatmargins['L']['skipline'] && $this->floatmargins['L']['y0'] != $this->y) {
-               $yadj = $this->y - $this->floatmargins['L']['y0'];
-               $this->floatmargins['L']['y0'] = $this->y;
-               $this->floatmargins['L']['y1'] += $yadj;
-
-               // Update objattr in floatbuffer
-               if ($this->floatbuffer[$this->floatmargins['L']['id']]['border_left']['w']) {
-                       $this->floatbuffer[$this->floatmargins['L']['id']]['BORDER-Y'] += $yadj;
-               }
-               $this->floatbuffer[$this->floatmargins['L']['id']]['INNER-Y'] += $yadj;
-               $this->floatbuffer[$this->floatmargins['L']['id']]['OUTER-Y'] += $yadj;
-
-               // Unset values
-               $this->floatbuffer[$this->floatmargins['L']['id']]['skipline'] = false;
-               $this->floatmargins['L']['skipline'] = false;
-               $this->floatmargins['L']['id'] = '';
-       }
-       // Update floatmargins - R
-       if (isset($this->floatmargins['R']) && $this->floatmargins['R']['skipline'] && $this->floatmargins['R']['y0'] != $this->y) {
-               $yadj = $this->y - $this->floatmargins['R']['y0'];
-               $this->floatmargins['R']['y0'] = $this->y;
-               $this->floatmargins['R']['y1'] += $yadj;
-
-               // Update objattr in floatbuffer
-               if ($this->floatbuffer[$this->floatmargins['R']['id']]['border_left']['w']) {
-                       $this->floatbuffer[$this->floatmargins['R']['id']]['BORDER-Y'] += $yadj;
-               }
-               $this->floatbuffer[$this->floatmargins['R']['id']]['INNER-Y'] += $yadj;
-               $this->floatbuffer[$this->floatmargins['R']['id']]['OUTER-Y'] += $yadj;
-
-               // Unset values
-               $this->floatbuffer[$this->floatmargins['R']['id']]['skipline'] = false;
-               $this->floatmargins['R']['skipline'] = false;
-               $this->floatmargins['R']['id'] = '';
-       }
-}
-/*-- END CSS-IMAGE-FLOAT --*/
-
-
-
-////////////////////////////////////////////////////////////////////////////////
-// ADDED forcewrap - to call from inline OBJECT functions to breakwords if necessary in cell
-////////////////////////////////////////////////////////////////////////////////
-function WordWrap(&$text, $maxwidth, $forcewrap = 0) {
-    $biggestword=0;
-    $toonarrow=false;
-
-    $text = trim($text);
-
-    if ($text==='') return 0;
-    $space = $this->GetCharWidth(' ',false);
-    $lines = explode("\n", $text);
-    $text = '';
-    $count = 0;
-    foreach ($lines as $line) {
-       $words = explode(' ', $line);
-       $width = 0;
-       foreach ($words as $word) {
-               $word = trim($word);
-               $wordwidth = $this->GetStringWidth($word);
-               //Warn user that maxwidth is insufficient
-               if ($wordwidth > $maxwidth + 0.0001) {
-                       if ($wordwidth > $biggestword) { $biggestword = $wordwidth; }
-                       $toonarrow=true;
-                       // ADDED
-                       if ($forcewrap) {
-                         while($wordwidth > $maxwidth) {
-                               $chw = 0;       // check width
-                               for ( $i = 0; $i < mb_strlen($word, $this->mb_enc ); $i++ ) {
-                                       $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc ));
-                                       if ($chw > $maxwidth ) {
-                                               if ($text) {
-                                                       $text = rtrim($text)."\n".mb_substr($word,0,$i,$this->mb_enc );
-                                                       $count++;
-                                               }
-                                               else {
-                                                       $text = mb_substr($word,0,$i,$this->mb_enc );
-                                               }
-                                               $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
-                                               $wordwidth = $this->GetStringWidth($word);
-                                               $width = $maxwidth; 
-                                               break;
-                                       }
-                               }
-                         }
-                       }
-               }
-
-               if ($width + $wordwidth  < $maxwidth - 0.0001) {
-                       $width += $wordwidth + $space;
-                       $text .= $word.' ';
-               }
-               else {
-                       $width = $wordwidth + $space;
-                       $text = rtrim($text)."\n".$word.' ';
-                       $count++;
-            }
-       }
-       $text .= "\n";
-       $count++;
-    }
-    $text = rtrim($text);
-
-    //Return -(wordsize) if word is bigger than maxwidth 
-
-       // ADDED
-       if ($forcewrap) { return $count; }
-      if (($toonarrow) && ($this->table_error_report)) {
-               $this->Error("Word is too long to fit in table - ".$this->table_error_report_param); 
-       }
-    if ($toonarrow) return -$biggestword;
-    else return $count;
-}
-
-/*-- END HTML-CSS --*/
-
-function _SetTextRendering($mode) { 
-       if (!(($mode == 0) || ($mode == 1) || ($mode == 2))) 
-       $this->Error("Text rendering mode should be 0, 1 or 2 (value : $mode)"); 
-       $tr = ($mode.' Tr'); 
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']) || $this->keep_block_together)) { $this->_out($tr); }
-       $this->pageoutput[$this->page]['TextRendering'] = $tr;
-
-} 
-
-function SetTextOutline($params=array()) {     // mPDF 5.6.07
-  if (isset($params['outline-s']) && $params['outline-s'])
-  { 
-    $this->SetLineWidth($params['outline-WIDTH']); 
-    $this->SetDColor($params['outline-COLOR']);
-    $tr = ('2 Tr'); 
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']) || $this->keep_block_together)) { $this->_out($tr); }
-       $this->pageoutput[$this->page]['TextRendering'] = $tr;
-  }
-  else //Now resets all values
-  { 
-    $this->SetLineWidth(0.2); 
-    $this->SetDColor($this->ConvertColor(0));
-    $this->_SetTextRendering(0); 
-    $tr = ('0 Tr'); 
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']) || $this->keep_block_together)) { $this->_out($tr); }
-       $this->pageoutput[$this->page]['TextRendering'] = $tr;
-  } 
-}
-
-function Image($file,$x,$y,$w=0,$h=0,$type='',$link='',$paint=true, $constrain=true, $watermark=false, $shownoimg=true, $allowvector=true) {
-       $orig_srcpath = $file;
-       $this->GetFullPath($file);
-
-       $info=$this->_getImage($file, true, $allowvector, $orig_srcpath );
-       if(!$info && $paint) {
-               $info = $this->_getImage($this->noImageFile);
-               if ($info) { 
-                       $file = $this->noImageFile; 
-                       $w = ($info['w'] * (25.4/$this->dpi));  // 14 x 16px
-                       $h = ($info['h'] * (25.4/$this->dpi));  // 14 x 16px
-               }
-       }
-       if(!$info) return false;
-       //Automatic width and height calculation if needed
-       if($w==0 and $h==0) {
-/*-- IMAGES-WMF --*/
-           if ($info['type']=='wmf') { 
-                       // WMF units are twips (1/20pt)
-                       // divide by 20 to get points
-                       // divide by k to get user units
-                       $w = abs($info['w'])/(20*_MPDFK);
-                       $h = abs($info['h']) / (20*_MPDFK);
-               }
-               else 
-/*-- END IMAGES-WMF --*/
-           if ($info['type']=='svg') { 
-                       // returned SVG units are pts
-                       // divide by k to get user units (mm)
-                       $w = abs($info['w'])/_MPDFK;
-                       $h = abs($info['h']) /_MPDFK;
-               }
-               else {
-                       //Put image at default image dpi
-                       $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
-                       $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
-               }
-       }
-       if($w==0)       $w=abs($h*$info['w']/$info['h']); 
-       if($h==0)       $h=abs($w*$info['h']/$info['w']); 
-
-/*-- WATERMARK --*/
-       if ($watermark) {
-         $maxw = $this->w;
-         $maxh = $this->h;
-         // Size = D PF or array
-         if (is_array($this->watermark_size)) {
-               $w = $this->watermark_size[0];
-               $h = $this->watermark_size[1];
-         }
-         else if (!is_string($this->watermark_size)) {
-               $maxw -= $this->watermark_size*2;
-               $maxh -= $this->watermark_size*2;
-               $w = $maxw;
-               $h=abs($w*$info['h']/$info['w']);
-               if ($h > $maxh )  {
-                       $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
-               }
-         }
-         else if ($this->watermark_size == 'F') {
-               if ($this->ColActive) { $maxw = $this->w - ($this->DeflMargin + $this->DefrMargin); }
-               else { $maxw = $this->pgwidth; }
-               $maxh = $this->h - ($this->tMargin + $this->bMargin);
-               $w = $maxw;
-               $h=abs($w*$info['h']/$info['w']);
-               if ($h > $maxh )  {
-                       $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
-               }
-         }
-         else  if ($this->watermark_size == 'P') {     // Default P
-               $w = $maxw;
-               $h=abs($w*$info['h']/$info['w']);
-               if ($h > $maxh )  {
-                       $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
-               }
-         }
-         // Automatically resize to maximum dimensions of page if too large
-         if ($w > $maxw) {
-               $w = $maxw;
-               $h=abs($w*$info['h']/$info['w']);
-         }
-         if ($h > $maxh )  {
-               $h = $maxh ;
-               $w=abs($h*$info['w']/$info['h']);
-         }
-         // Position
-         if (is_array($this->watermark_pos)) {
-               $x = $this->watermark_pos[0];
-               $y = $this->watermark_pos[1];
-         }
-         else if ($this->watermark_pos == 'F')  {      // centred on printable area
-               if ($this->ColActive) { // *COLUMNS*
-                       if (($this->mirrorMargins) && (($this->page)%2==0)) { $xadj = $this->DeflMargin-$this->DefrMargin; }    // *COLUMNS*
-                       else { $xadj = 0; }     // *COLUMNS*
-                       $x = ($this->DeflMargin - $xadj + ($this->w - ($this->DeflMargin + $this->DefrMargin))/2) - ($w/2);     // *COLUMNS*
-               }       // *COLUMNS*
-               else {  // *COLUMNS*
-                       $x = ($this->lMargin + ($this->pgwidth)/2) - ($w/2);
-               }       // *COLUMNS*
-               $y = ($this->tMargin + ($this->h - ($this->tMargin + $this->bMargin))/2) - ($h/2);
-         }
-         else {        // default P - centred on whole page
-               $x = ($this->w/2) - ($w/2);
-               $y = ($this->h/2) - ($h/2);
-         }
-/*-- IMAGES-WMF --*/
-         if ($info['type']=='wmf') { 
-               $sx = $w*_MPDFK / $info['w'];
-               $sy = -$h*_MPDFK / $info['h'];
-               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
-         }
-         else  
-/*-- END IMAGES-WMF --*/
-         if ($info['type']=='svg') { 
-               $sx = $w*_MPDFK / $info['w'];
-               $sy = -$h*_MPDFK / $info['h'];
-               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
-         }
-         else { 
-               $outstring = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q",$w*_MPDFK,$h*_MPDFK,$x*_MPDFK,($this->h-($y+$h))*_MPDFK,$info['i']);
-         }
-
-         if ($this->watermarkImgBehind) { 
-               $outstring = $this->watermarkImgAlpha . "\n" . $outstring . "\n" . $this->SetAlpha(1, 'Normal', true) . "\n";
-               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$outstring."\n".'\\1', $this->pages[$this->page]);
-         }
-         else { $this->_out($outstring); }
-
-         return 0;
-       }       // end of IF watermark
-/*-- END WATERMARK --*/
-
-       if ($constrain) {
-         // Automatically resize to maximum dimensions of page if too large
-         if (isset($this->blk[$this->blklvl]['inner_width']) && $this->blk[$this->blklvl]['inner_width']) { $maxw = $this->blk[$this->blklvl]['inner_width']; }
-         else { $maxw = $this->pgwidth; }
-         if ($w > $maxw) {
-               $w = $maxw;
-               $h=abs($w*$info['h']/$info['w']);
-         }
-         if ($h > $this->h - ($this->tMargin + $this->bMargin + 1))  {  // see below - +10 to avoid drawing too close to border of page
-               $h = $this->h - ($this->tMargin + $this->bMargin + 1) ;
-               if ($this->fullImageHeight) { $h = $this->fullImageHeight; }
-               $w=abs($h*$info['w']/$info['h']);
-         }
-
-
-         //Avoid drawing out of the paper(exceeding width limits).
-         //if ( ($x + $w) > $this->fw ) {
-         if ( ($x + $w) > $this->w ) {
-               $x = $this->lMargin;
-               $y += 5;
-         }
-
-         $changedpage = false;
-         $oldcolumn = $this->CurrCol;
-         //Avoid drawing out of the page.
-         if($y+$h>$this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) {
-               $this->AddPage($this->CurOrientation);
-               // Added to correct for OddEven Margins
-               $x=$x +$this->MarginCorrection;
-               $y = $tMargin + $this->margin_header;
-               $changedpage = true;
-         }
-/*-- COLUMNS --*/
-         // COLS
-         // COLUMN CHANGE
-         if ($this->CurrCol != $oldcolumn) {
-               $y = $this->y0;
-               $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-               $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-         }
-/*-- END COLUMNS --*/
-       }       // end of IF constrain
-
-/*-- IMAGES-WMF --*/
-       if ($info['type']=='wmf') { 
-               $sx = $w*_MPDFK / $info['w'];
-               $sy = -$h*_MPDFK / $info['h'];
-               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
-       }
-       else  
-/*-- END IMAGES-WMF --*/
-       if ($info['type']=='svg') { 
-               $sx = $w*_MPDFK / $info['w'];
-               $sy = -$h*_MPDFK / $info['h'];
-               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
-       }
-       else { 
-               $outstring = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q",$w*_MPDFK,$h*_MPDFK,$x*_MPDFK,($this->h-($y+$h))*_MPDFK,$info['i']);
-       }
-
-       if($paint) {
-               $this->_out($outstring);
-               if($link) $this->Link($x,$y,$w,$h,$link);
-
-               // Avoid writing text on top of the image. // THIS WAS OUTSIDE THE if ($paint) bit!!!!!!!!!!!!!!!!
-               $this->y = $y + $h;
-       }
-
-       //Return width-height array
-       $sizesarray['WIDTH'] = $w;
-       $sizesarray['HEIGHT'] = $h;
-       $sizesarray['X'] = $x; //Position before painting image
-       $sizesarray['Y'] = $y; //Position before painting image
-       $sizesarray['OUTPUT'] = $outstring;
-
-       $sizesarray['IMAGE_ID'] = $info['i'];
-       $sizesarray['itype'] = $info['type'];
-       $sizesarray['set-dpi'] = $info['set-dpi'];
-       return $sizesarray;
-}
-
-
-
-//=============================================================
-//=============================================================
-//=============================================================
-//=============================================================
-//=============================================================
-/*-- HTML-CSS --*/
-
-function _getObjAttr($t) {
-       $c = explode("\xbb\xa4\xac",$t,2);
-       $c = explode(",",$c[1],2);
-       foreach($c as $v) {
-               $v = explode("=",$v,2);
-               $sp[$v[0]] = $v[1];
-       }
-       return (unserialize($sp['objattr']));
-}
-
-
-function inlineObject($type,$x,$y,$objattr,$Lmargin,$widthUsed,$maxWidth,$lineHeight,$paint=false,$is_table=false)
-{
-   if ($is_table) { $k = $this->shrin_k; } else { $k = 1; }
-
-   // NB $x is only used when paint=true
-       // Lmargin not used
-   $w = 0; 
-   if (isset($objattr['width'])) { $w = $objattr['width']/$k; }
-   $h = 0;
-   if (isset($objattr['height'])) { $h = abs($objattr['height']/$k); }
-   $widthLeft = $maxWidth - $widthUsed;
-   $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ;
-   if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
-   // For Images
-   if (isset($objattr['border_left'])) {
-       $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right'])/$k;
-       $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom'])/$k;
-
-       if ($type == 'image' || $type == 'barcode' || $type == 'textcircle') {
-               $extraWidth += ($objattr['padding_left'] + $objattr['padding_right'])/$k;
-               $extraHeight += ($objattr['padding_top'] + $objattr['padding_bottom'])/$k;
-       }
-   }
-
-   if (!isset($objattr['vertical-align'])) { $objattr['vertical-align'] = 'M'; }
-
-   if ($type == 'image' || (isset($objattr['subtype']) && $objattr['subtype'] == 'IMAGE')) {
-    if (isset($objattr['itype']) && ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg')) {
-       $file = $objattr['file'];
-       $info=$this->formobjects[$file];
-    }
-    else if (isset($objattr['file'])) {
-       $file = $objattr['file'];
-       $info=$this->images[$file];
-    }
-   }
-    if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') {
-       $w = 0.00001;
-       $h = 0.00001;
-   }
-
-   // TEST whether need to skipline
-   if (!$paint) {
-       if ($type == 'hr') {    // always force new line
-               if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { return array(-2, $w ,$h ); } // New page + new line
-               else { return array(1, $w ,$h ); } // new line
-       }
-       else {
-               if ($widthUsed > 0 && $w > $widthLeft && (!$is_table || $type != 'image')) {    // New line needed
-                       if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter) { return array(-2,$w ,$h ); } // New page + new line
-                       return array(1,$w ,$h ); // new line
-               }
-               else if ($widthUsed > 0 && $w > $widthLeft && $is_table) {      // New line needed in TABLE
-                       return array(1,$w ,$h ); // new line
-               }
-               // Will fit on line but NEW PAGE REQUIRED
-               else if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { return array(-1,$w ,$h ); }
-               else { return array(0,$w ,$h ); }
-       }
-   }
-
-   if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') {
-       $w = 0.00001;
-       $h = 0.00001;
-       $objattr['BORDER-WIDTH'] = 0;
-       $objattr['BORDER-HEIGHT'] = 0;
-       $objattr['BORDER-X'] = $x;
-       $objattr['BORDER-Y'] = $y;
-       $objattr['INNER-WIDTH'] = 0;
-       $objattr['INNER-HEIGHT'] = 0;
-       $objattr['INNER-X'] = $x;
-       $objattr['INNER-Y'] = $y;
-  }
-
-  if ($type == 'image') {
-       // Automatically resize to width remaining
-       if ($w > $widthLeft  && !$is_table) {
-               $w = $widthLeft ;
-               $h=abs($w*$info['h']/$info['w']);
-       }
-       $img_w = $w - $extraWidth ;
-       $img_h = $h - $extraHeight ;
-
-       $objattr['BORDER-WIDTH'] = $img_w + $objattr['padding_left']/$k + $objattr['padding_right']/$k + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
-       $objattr['BORDER-HEIGHT'] = $img_h + $objattr['padding_top']/$k + $objattr['padding_bottom']/$k + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
-       $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
-       $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
-       $objattr['INNER-WIDTH'] = $img_w;
-       $objattr['INNER-HEIGHT'] = $img_h;
-       $objattr['INNER-X'] = $x + $objattr['padding_left']/$k + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
-       $objattr['INNER-Y'] = $y + $objattr['padding_top']/$k + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
-       $objattr['ID'] = $info['i'];
-   }
-
-   if ($type == 'input' && $objattr['subtype'] == 'IMAGE') { 
-       $img_w = $w - $extraWidth ;
-       $img_h = $h - $extraHeight ;
-       $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
-       $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
-       $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
-       $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
-       $objattr['INNER-WIDTH'] = $img_w;
-       $objattr['INNER-HEIGHT'] = $img_h;
-       $objattr['INNER-X'] = $x + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
-       $objattr['INNER-Y'] = $y + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
-       $objattr['ID'] = $info['i'];
-   }
-
-  if ($type == 'barcode' || $type == 'textcircle') {
-       $b_w = $w - $extraWidth ;
-       $b_h = $h - $extraHeight ;
-       $objattr['BORDER-WIDTH'] = $b_w + $objattr['padding_left']/$k + $objattr['padding_right']/$k + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
-       $objattr['BORDER-HEIGHT'] = $b_h + $objattr['padding_top']/$k + $objattr['padding_bottom']/$k + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
-       $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
-       $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
-       $objattr['INNER-X'] = $x + $objattr['padding_left']/$k + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
-       $objattr['INNER-Y'] = $y + $objattr['padding_top']/$k + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
-       $objattr['INNER-WIDTH'] = $b_w;
-       $objattr['INNER-HEIGHT'] = $b_h;
-   }
-
-
-   if ($type == 'textarea') {
-       // Automatically resize to width remaining
-       if ($w > $widthLeft && !$is_table) {
-               $w = $widthLeft ;
-       }
-       if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter) {
-               $h=$this->h - $y - $this->bMargin;
-       }
-   }
-
-   if ($type == 'hr') {
-       if ($is_table) { 
-               $objattr['INNER-WIDTH'] = $maxWidth * $objattr['W-PERCENT']/100; 
-               $objattr['width'] = $objattr['INNER-WIDTH']; 
-               $w = $maxWidth;
-       }
-       else { 
-               if ($w>$maxWidth) { $w = $maxWidth; }
-               $objattr['INNER-WIDTH'] = $w; 
-               $w = $maxWidth;
-       }
-  }
-
-
-
-   if (($type == 'select') || ($type == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD'))) {
-       // Automatically resize to width remaining
-       if ($w > $widthLeft && !$is_table) {
-               $w = $widthLeft;
-       }
-   }
-
-   if ($type == 'textarea' || $type == 'select' || $type == 'input') {
-       if (isset($objattr['fontsize'])) $objattr['fontsize'] /= $k;
-       if (isset($objattr['linewidth'])) $objattr['linewidth'] /= $k;
-   }
-
-   if (!isset($objattr['BORDER-Y'])) { $objattr['BORDER-Y'] = 0; }
-   if (!isset($objattr['BORDER-X'])) { $objattr['BORDER-X'] = 0; }
-   if (!isset($objattr['INNER-Y'])) { $objattr['INNER-Y'] = 0; }
-   if (!isset($objattr['INNER-X'])) { $objattr['INNER-X'] = 0; }
-
-   //Return width-height array
-   $objattr['OUTER-WIDTH'] = $w;
-   $objattr['OUTER-HEIGHT'] = $h;
-   $objattr['OUTER-X'] = $x;
-   $objattr['OUTER-Y'] = $y;
-   return $objattr;
-}
-
-/*-- END HTML-CSS --*/
-
-//=============================================================
-//=============================================================
-//=============================================================
-//=============================================================
-//=============================================================
-
-function SetLineJoin($mode=0)
-{
-       $s=sprintf('%d j',$mode);
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['LineJoin']) && $this->pageoutput[$this->page]['LineJoin'] != $s) || !isset($this->pageoutput[$this->page]['LineJoin']) || $this->keep_block_together)) { $this->_out($s); }
-       $this->pageoutput[$this->page]['LineJoin'] = $s;
-
-}
-function SetLineCap($mode=2) {
-       $s=sprintf('%d J',$mode);
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['LineCap']) && $this->pageoutput[$this->page]['LineCap'] != $s) || !isset($this->pageoutput[$this->page]['LineCap']) || $this->keep_block_together)) { $this->_out($s); }
-       $this->pageoutput[$this->page]['LineCap'] = $s;
-
-}
-
-function SetDash($black=false,$white=false)
-{
-        if($black and $white) $s=sprintf('[%.3F %.3F] 0 d',$black*_MPDFK,$white*_MPDFK);
-        else $s='[] 0 d';
-       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Dash']) && $this->pageoutput[$this->page]['Dash'] != $s) || !isset($this->pageoutput[$this->page]['Dash']) || $this->keep_block_together)) { $this->_out($s); }
-       $this->pageoutput[$this->page]['Dash'] = $s;
-
-}
-
-function SetDisplayPreferences($preferences) {
-       // String containing any or none of /HideMenubar/HideToolbar/HideWindowUI/DisplayDocTitle/CenterWindow/FitWindow
-    $this->DisplayPreferences .= $preferences;
-}
-
-
-function Ln($h='',$collapsible=0)
-{
-// Added collapsible to allow collapsible top-margin on new page
-       //Line feed; default value is last cell height
-       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
-       if ($collapsible && ($this->y==$this->tMargin) && (!$this->ColActive)) { $h = 0; }
-       if(is_string($h)) $this->y+=$this->lasth;
-       else $this->y+=$h;
-}
-
-/*-- HTML-CSS --*/
-// $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
-function DivLn($h,$level=-3,$move_y=true,$collapsible=false,$state=0) {
-  // this->x is returned as it was
-  // adds lines (y) where DIV bgcolors are filled in
-  // allows .00001 as nominal height used for bookmarks/annotations etc.
-  if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->tMargin)) && (!$this->ColActive)) { return; }
-  if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->y0)) && ($this->ColActive) && $this->CurrCol == 0) { return; }      // *COLUMNS*
-
-       // Still use this method if columns or page-break-inside: avoid, as it allows repositioning later
-       // otherwise, now uses PaintDivBB()
-  if (!$this->ColActive && !$this->keep_block_together && !$this->kwt) {
-       if ($move_y && !$this->ColActive) { $this->y += $h; }
-       return; 
-  }
-
-  if ($level == -3) { $level = $this->blklvl; }
-  $firstblockfill = $this->GetFirstBlockFill();
-  if ($firstblockfill && $this->blklvl > 0 && $this->blklvl >= $firstblockfill) {
-       $last_x = 0;
-       $last_w = 0;
-       $last_fc = $this->FillColor;
-       $bak_x = $this->x;
-       $bak_h = $this->divheight;
-       $this->divheight = 0;   // Temporarily turn off divheight - as Cell() uses it to check for PageBreak
-       for ($blvl=$firstblockfill;$blvl<=$level;$blvl++) {
-               $this->SetBlockFill($blvl);
-               $this->x = $this->lMargin + $this->blk[$blvl]['outer_left_margin'];
-               if ($last_x != $this->lMargin + $this->blk[$blvl]['outer_left_margin'] || $last_w != $this->blk[$blvl]['width'] || $last_fc != $this->FillColor || $this->blk[$blvl]['border_top']['s'] || $this->blk[$blvl]['border_bottom']['s'] || $this->blk[$blvl]['border_left']['s'] || $this->blk[$blvl]['border_right']['s']) {        // mPDF 5.6.55
-                       $x = $this->x;
-                       $this->Cell( ($this->blk[$blvl]['width']), $h, '', '', 0, '', 1);
-                       if (!$this->keep_block_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) {
-                               $this->x = $x;
-                               // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
-                               if ($blvl == $this->blklvl) { $this->PaintDivLnBorder($state,$blvl,$h); }
-                               else { $this->PaintDivLnBorder(0,$blvl,$h); }
-                       }
-               }
-               $last_x = $this->lMargin + $this->blk[$blvl]['outer_left_margin'];
-               $last_w = $this->blk[$blvl]['width'];
-               $last_fc = $this->FillColor;
-       }
-       // Reset current block fill
-       if (isset($this->blk[$this->blklvl]['bgcolorarray'])) { 
-               $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
-               $this->SetFColor($bcor);
-       }
-       $this->x = $bak_x;
-       $this->divheight = $bak_h;
-  }
-  if ($move_y) { $this->y += $h; }
-}
-/*-- END HTML-CSS --*/
-
-
-function SetX($x)
-{
-       //Set x position
-       if($x >= 0)     $this->x=$x;
-       else $this->x = $this->w + $x;
-}
-
-function SetY($y)
-{
-       //Set y position and reset x
-       $this->x=$this->lMargin;
-       if($y>=0)
-               $this->y=$y;
-       else
-               $this->y=$this->h+$y;
-}
-
-function SetXY($x,$y)
-{
-       //Set x and y positions
-       $this->SetY($y);
-       $this->SetX($x);
-}
-
-
-function Output($name='',$dest='')
-{
-       //Output PDF to some destination
-       if ($this->showStats) {
-               echo '<div>Generated in '.sprintf('%.2F',(microtime(true) - $this->time0)).' seconds</div>';
-       }
-       //Finish document if necessary
-       if ($this->progressBar) { $this->UpdateProgressBar(1,'100','Finished'); }       // *PROGRESS-BAR*
-       if($this->state < 3) $this->Close();
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'100','Finished'); }       // *PROGRESS-BAR*
-       // fn. error_get_last is only in PHP>=5.2
-       if ($this->debug && function_exists('error_get_last') && error_get_last()) {
-          $e = error_get_last(); 
-          if (($e['type'] < 2048 && $e['type'] != 8) || (intval($e['type']) & intval(ini_get("error_reporting")))) {
-               echo "<p>Error message detected - PDF file generation aborted.</p>"; 
-               echo $e['message'].'<br />';
-               echo 'File: '.$e['file'].'<br />';
-               echo 'Line: '.$e['line'].'<br />';
-               exit; 
-          }
-       }
-
-
-       if (($this->PDFA || $this->PDFX) && $this->encrypted) { $this->Error("PDFA1-b or PDFX/1-a does not permit encryption of documents."); }
-       if (count($this->PDFAXwarnings) && (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto))) {
-               if ($this->PDFA) {
-                       echo '<div>WARNING - This file could not be generated as it stands as a PDFA1-b compliant file.</div>';
-                       echo '<div>These issues can be automatically fixed by mPDF using <i>$mpdf-&gt;PDFAauto=true;</i></div>';
-                       echo '<div>Action that mPDF will take to automatically force PDFA1-b compliance are shown in brackets.</div>';
-               }
-               else {
-                       echo '<div>WARNING - This file could not be generated as it stands as a PDFX/1-a compliant file.</div>';
-                       echo '<div>These issues can be automatically fixed by mPDF using <i>$mpdf-&gt;PDFXauto=true;</i></div>';
-                       echo '<div>Action that mPDF will take to automatically force PDFX/1-a compliance are shown in brackets.</div>';
-               }
-               echo '<div>Warning(s) generated:</div><ul>';
-               $this->PDFAXwarnings = array_unique($this->PDFAXwarnings);
-               foreach($this->PDFAXwarnings AS $w) {
-                       echo '<li>'.$w.'</li>';
-               }
-               echo '</ul>';
-               exit;
-       }
-
-       if ($this->showStats) {
-               echo '<div>Compiled in '.sprintf('%.2F',(microtime(true) - $this->time0)).' seconds (total)</div>';
-               echo '<div>Peak Memory usage '.number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB</div>';
-               echo '<div>PDF file size '.number_format((strlen($this->buffer)/1024)).' kB</div>';
-               echo '<div>Number of fonts '.count($this->fonts).'</div>';
-               exit;
-       }
-
-
-       if(is_bool($dest)) $dest=$dest ? 'D' : 'F';
-       $dest=strtoupper($dest);
-       if($dest=='') {
-               if($name=='') {
-                       $name='mpdf.pdf';
-                       $dest='I';
-               }
-               else { $dest='F'; }
-       }
-
-/*-- PROGRESS-BAR --*/
-       if ($this->progressBar && ($dest=='D' || $dest=='I')) {
-               if($name=='') { $name='mpdf.pdf'; }
-               $tempfile = '_tempPDF'.uniqid(rand(1,100000),true);
-               //Save to local file
-               $f=fopen(_MPDF_TEMP_PATH.$tempfile.'.pdf','wb');
-               if(!$f) $this->Error('Unable to create temporary output file: '.$tempfile.'.pdf');
-               fwrite($f,$this->buffer,strlen($this->buffer));
-               fclose($f);
-               $this->UpdateProgressBar(3,'','Finished');
-
-               echo '<script type="text/javascript">
-
-               var form = document.createElement("form");
-               form.setAttribute("method", "post");
-               form.setAttribute("action", "'._MPDF_URI.'includes/out.php");
-
-               var hiddenField = document.createElement("input");
-               hiddenField.setAttribute("type", "hidden");
-               hiddenField.setAttribute("name", "filename");
-               hiddenField.setAttribute("value", "'.$tempfile.'");
-               form.appendChild(hiddenField);
-
-               var hiddenField = document.createElement("input");
-               hiddenField.setAttribute("type", "hidden");
-               hiddenField.setAttribute("name", "dest");
-               hiddenField.setAttribute("value", "'.$dest.'");
-               form.appendChild(hiddenField);
-
-               var hiddenField = document.createElement("input");
-               hiddenField.setAttribute("type", "hidden");
-               hiddenField.setAttribute("name", "opname");
-               hiddenField.setAttribute("value", "'.$name.'");
-               form.appendChild(hiddenField);
-
-               var hiddenField = document.createElement("input");
-               hiddenField.setAttribute("type", "hidden");
-               hiddenField.setAttribute("name", "path");
-               hiddenField.setAttribute("value", "'.urlencode(_MPDF_TEMP_PATH).'");
-               form.appendChild(hiddenField);
-
-               document.body.appendChild(form); 
-               form.submit();
-
-       </script>
-               </div>
-               </body>
-               </html>';
-               exit;
-       }
-       else {
-               if ($this->progressBar) { $this->UpdateProgressBar(3,'','Finished'); }
-/*-- END PROGRESS-BAR --*/
-
-               switch($dest) {
-                  case 'I':
-                       if ($this->debug && !$this->allow_output_buffering && ob_get_contents()) { echo "<p>Output has already been sent from the script - PDF file generation aborted.</p>"; exit; }
-                       //Send to standard output
-                       if(PHP_SAPI!='cli') {
-                               //We send to a browser
-                               header('Content-Type: application/pdf');
-                               if(headers_sent())
-                                       $this->Error('Some data has already been output to browser, can\'t send PDF file');
-                               if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
-                                       // don't use length if server using compression
-                                       header('Content-Length: '.strlen($this->buffer));
-                               }
-                               header('Content-disposition: inline; filename="'.$name.'"');
-                               header('Cache-Control: public, must-revalidate, max-age=0'); 
-                               header('Pragma: public');
-                               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
-                               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
-                       }
-                       echo $this->buffer;
-                       break;
-                  case 'D':
-                       //Download file
-                       header('Content-Description: File Transfer');
-                       if (headers_sent())
-                               $this->Error('Some data has already been output to browser, can\'t send PDF file');
-                       header('Content-Transfer-Encoding: binary');
-                       header('Cache-Control: public, must-revalidate, max-age=0');
-                       header('Pragma: public');
-                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
-                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
-                       header('Content-Type: application/force-download');
-                       header('Content-Type: application/octet-stream', false);
-                       header('Content-Type: application/download', false);
-                       header('Content-Type: application/pdf', false);
-                       if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
-                               // don't use length if server using compression
-                               header('Content-Length: '.strlen($this->buffer));
-                       }
-                       header('Content-disposition: attachment; filename="'.$name.'"');
-                       echo $this->buffer;
-                       break;
-                  case 'F':
-                       //Save to local file
-                       $f=fopen($name,'wb');
-                       if(!$f) $this->Error('Unable to create output file: '.$name);
-                       fwrite($f,$this->buffer,strlen($this->buffer));
-                       fclose($f);
-                       break;
-                  case 'S':
-                       //Return as a string
-                       return $this->buffer;
-                  default:
-                       $this->Error('Incorrect output destination: '.$dest);
-               }
-
-       }       // *PROGRESS-BAR*
-       //======================================================================================================
-       // DELETE OLD TMP FILES - Housekeeping
-       // Delete any files in tmp/ directory that are >1 hrs old
-               $interval = 3600;
-               if ($handle = opendir(preg_replace('/\/$/','',_MPDF_TEMP_PATH))) {
-                  while (false !== ($file = readdir($handle))) { 
-                       if (!is_dir($file) && ((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && (substr($file, 0, 1) !== '.') && ($file !='dummy.txt')) { // mPDF 5.7
-                               unlink(_MPDF_TEMP_PATH.$file); 
-                       }
-                  }
-                  closedir($handle); 
-               }
-       //==============================================================================================================
-
-       return '';
-}
-
-
-// *****************************************************************************
-//                                                                             *
-//                             Protected methods                               *
-//                                                                             *
-// *****************************************************************************
-function _dochecks()
-{
-       //Check for locale-related bug
-       if(1.1==1)
-               $this->Error('Don\'t alter the locale before including mPDF');
-       //Check for decimal separator
-       if(sprintf('%.1f',1.0)!='1.0')
-               setlocale(LC_NUMERIC,'C');
-       // mPDF 5.4.11
-       $mqr=ini_get("magic_quotes_runtime");
-       if ($mqr) { $this->Error('mPDF requires magic_quotes_runtime to be turned off e.g. by using ini_set("magic_quotes_runtime", 0);'); }
-}
-
-function _begindoc()
-{
-       //Start document
-       $this->state=1;
-       $this->_out('%PDF-'.$this->pdf_version);
-       $this->_out('%'.chr(226).chr(227).chr(207).chr(211));   // 4 chars > 128 to show binary file
-}
-
-
-/*-- HTMLHEADERS-FOOTERS --*/
-function _puthtmlheaders() {
-       $this->state=2;
-       $nb=$this->page;
-       for($n=1;$n<=$nb;$n++) {
-         if ($this->mirrorMargins && $n%2==0) { $OE = 'E'; }   // EVEN
-         else { $OE = 'O'; }
-         $this->page = $n;
-         if (isset($this->saveHTMLHeader[$n][$OE])) {
-               $html = $this->saveHTMLHeader[$n][$OE]['html'];
-               $this->lMargin = $this->saveHTMLHeader[$n][$OE]['ml'];
-               $this->rMargin = $this->saveHTMLHeader[$n][$OE]['mr'];
-               $this->tMargin = $this->saveHTMLHeader[$n][$OE]['mh'];
-               $this->bMargin = $this->saveHTMLHeader[$n][$OE]['mf'];
-               $this->margin_header = $this->saveHTMLHeader[$n][$OE]['mh'];
-               $this->margin_footer = $this->saveHTMLHeader[$n][$OE]['mf'];
-               $this->w = $this->saveHTMLHeader[$n][$OE]['pw'];
-               $this->h = $this->saveHTMLHeader[$n][$OE]['ph'];
-               $rotate = (isset($this->saveHTMLHeader[$n][$OE]['rotate']) ? $this->saveHTMLHeader[$n][$OE]['rotate'] : null);
-               $this->Reset();
-               $this->pageoutput[$n] = array();
-               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-               $this->x = $this->lMargin;
-               $this->y = $this->margin_header;
-               // mPDF 5.6.47
-               $pn = $this->docPageNum($n);
-               if ($pn)
-                       $pnstr = $this->pagenumPrefix.$pn.$this->pagenumSuffix;
-               else { $pnstr = ''; }
-               $html = str_replace('{PAGENO}',$pnstr,$html);
-               $pnt = $this->docPageNumTotal($n);
-               if ($pnt)
-                       $pntstr = $this->nbpgPrefix.$pnt.$this->nbpgSuffix;
-               else { $pntstr = ''; }
-               $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg}
-               $html = str_replace($this->aliasNbPg,$nb,$html );       // {nb}
-               $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html );     // mPDF 5.7
-
-               $this->HTMLheaderPageLinks = array();
-               $this->HTMLheaderPageAnnots = array();
-               $this->HTMLheaderPageForms = array();
-               $this->pageBackgrounds = array();
-
-               $this->writingHTMLheader = true;
-               $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
-               $this->writingHTMLheader = false;
-               $this->Reset();
-               $this->pageoutput[$n] = array();
-
-               $s = $this->PrintPageBackgrounds();
-               $this->headerbuffer = $s . $this->headerbuffer;
-               $os = '';
-               if ($rotate) {
-                       $os .= sprintf('q 0 -1 1 0 0 %.3F cm ',($this->w*_MPDFK));
-               }
-               $os .= $this->headerbuffer ;
-               if ($rotate) {
-                       $os .= ' Q' . "\n";
-               }
-
-               // Writes over the page background but behind any other output on page
-               $os = preg_replace('/\\\\/','\\\\\\\\',$os);
-               $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.$this->uniqstr.')/', "\n".$os."\n".'\\1', $this->pages[$n]);
-
-               $lks = $this->HTMLheaderPageLinks; 
-               foreach($lks AS $lk) {
-                       if ($rotate) {
-                               $lw = $lk[2];
-                               $lh = $lk[3];
-                               $lk[2] = $lh;
-                               $lk[3] = $lw;   // swap width and height
-                               $ax = $lk[0]/_MPDFK;
-                               $ay = $lk[1]/_MPDFK;
-                               $bx = $ay-($lh/_MPDFK);
-                               $by = $this->w-$ax;
-                               $lk[0] = $bx*_MPDFK;
-                               $lk[1] = ($this->h-$by)*_MPDFK - $lw;
-                       }
-                       $this->PageLinks[$n][]=$lk;
-               }
-/*-- FORMS --*/
-               foreach($this->HTMLheaderPageForms AS $f) {
-                       $this->form->forms[$f['n']] = $f;
-               }
-/*-- END FORMS --*/
-
-
-         }
-         if (isset($this->saveHTMLFooter[$n][$OE])) {
-               $html = $this->saveHTMLFooter[$this->page][$OE]['html'];
-               $this->lMargin = $this->saveHTMLFooter[$n][$OE]['ml'];
-               $this->rMargin = $this->saveHTMLFooter[$n][$OE]['mr'];
-               $this->tMargin = $this->saveHTMLFooter[$n][$OE]['mh'];
-               $this->bMargin = $this->saveHTMLFooter[$n][$OE]['mf'];
-               $this->margin_header = $this->saveHTMLFooter[$n][$OE]['mh'];
-               $this->margin_footer = $this->saveHTMLFooter[$n][$OE]['mf'];
-               $this->w = $this->saveHTMLFooter[$n][$OE]['pw'];
-               $this->h = $this->saveHTMLFooter[$n][$OE]['ph'];
-               $rotate = (isset($this->saveHTMLFooter[$n][$OE]['rotate']) ? $this->saveHTMLFooter[$n][$OE]['rotate'] : null);
-               $this->Reset();
-               $this->pageoutput[$n] = array();
-               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-               $this->x = $this->lMargin;
-               $top_y = $this->y = $this->h - $this->margin_footer;
-
-               // if bottom-margin==0, corrects to avoid division by zero
-               if ($this->y == $this->h) { $top_y = $this->y = ($this->h - 0.1); }
-               // mPDF 5.6.47
-               $pn = $this->docPageNum($n);
-               if ($pn)
-                       $pnstr = $this->pagenumPrefix.$pn.$this->pagenumSuffix;
-               else { $pnstr = ''; }
-               $html = str_replace('{PAGENO}',$pnstr,$html);
-               $pnt = $this->docPageNumTotal($n);
-               if ($pnt)
-                       $pntstr = $this->nbpgPrefix.$pnt.$this->nbpgSuffix;
-               else { $pntstr = ''; }
-               $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg}
-               $html = str_replace($this->aliasNbPg,$nb,$html );       // {nb}
-               $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html );     // mPDF 5.7
-
-
-               $this->HTMLheaderPageLinks = array();
-               $this->HTMLheaderPageAnnots = array();
-               $this->HTMLheaderPageForms = array();
-               $this->pageBackgrounds = array();
-
-               $this->writingHTMLfooter = true;
-               $this->InFooter = true;
-               $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
-               $this->writingHTMLfooter = false;
-               $this->InFooter = false;
-               $this->Reset();
-               $this->pageoutput[$n] = array();
-
-               $fheight = $this->y - $top_y;
-               $adj = -$fheight;
-
-               $s = $this->PrintPageBackgrounds(-$adj);
-               $this->headerbuffer = $s . $this->headerbuffer;
-
-               $os = '';
-               $os .= $this->StartTransform(true)."\n";
-               if ($rotate) {
-                       $os .= sprintf('q 0 -1 1 0 0 %.3F cm ',($this->w*_MPDFK));
-               }
-               $os .= $this->transformTranslate(0, $adj, true)."\n";
-               $os .= $this->headerbuffer ;
-               if ($rotate) {
-                       $os .= ' Q' . "\n";
-               }
-               $os .= $this->StopTransform(true)."\n";
-               // Writes over the page background but behind any other output on page
-               $os = preg_replace('/\\\\/','\\\\\\\\',$os);
-               $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.$this->uniqstr.')/', "\n".$os."\n".'\\1', $this->pages[$n]);
-
-               $lks = $this->HTMLheaderPageLinks; 
-               foreach($lks AS $lk) {
-                       $lk[1] -= $adj*_MPDFK;
-                       if ($rotate) {
-                               $lw = $lk[2];
-                               $lh = $lk[3];
-                               $lk[2] = $lh;
-                               $lk[3] = $lw;   // swap width and height
-
-                               $ax = $lk[0]/_MPDFK;
-                               $ay = $lk[1]/_MPDFK;
-                               $bx = $ay-($lh/_MPDFK);
-                               $by = $this->w-$ax;
-                               $lk[0] = $bx*_MPDFK;
-                               $lk[1] = ($this->h-$by)*_MPDFK - $lw;
-                       }
-                       $this->PageLinks[$n][]=$lk;
-               }
-/*-- FORMS --*/
-               foreach($this->HTMLheaderPageForms AS $f) {
-                       $f['y'] += $adj;
-                       $this->form->forms[$f['n']] = $f;
-               }
-/*-- END FORMS --*/
-         }
-       }
-       $this->page=$nb;
-       $this->state=1;
-}
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-
-function _putpages()
-{
-       $nb=$this->page;
-       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-
-       if($this->DefOrientation=='P') {
-               $defwPt=$this->fwPt;
-               $defhPt=$this->fhPt;
-       }
-       else {
-               $defwPt=$this->fhPt;
-               $defhPt=$this->fwPt;
-       }
-       $annotid=(3+2*$nb);
-
-       // Active Forms
-       $totaladdnum = 0;
-       for($n=1;$n<=$nb;$n++) {
-               if (isset($this->PageLinks[$n])) { $totaladdnum += count($this->PageLinks[$n]); }
-/*-- ANNOTATIONS --*/
-               if (isset($this->PageAnnots[$n])) { 
-                       foreach ($this->PageAnnots[$n] as $k => $pl) {
-                               if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $totaladdnum += 2 ; }
-                               else { $totaladdnum++; }
-                       }
-               }
-/*-- END ANNOTATIONS --*/
-
-/*-- FORMS --*/
-               if ( count($this->form->forms) > 0 ) {
-                       $this->form->countPageForms($n, $totaladdnum);
-               }
-/*-- END FORMS --*/
-       }
-/*-- FORMS --*/
-       // Make a note in the radio button group of the obj_id it will have
-       $ctr = 0;
-       if (count($this->form->form_radio_groups)) {
-               foreach($this->form->form_radio_groups AS $name=>$frg) {
-                       $this->form->form_radio_groups[$name]['obj_id'] = $annotid + $totaladdnum + $ctr;
-                       $ctr++;
-               }
-       }
-/*-- END FORMS --*/
-
-       // Select unused fonts (usually default font)
-       $unused = array();
-       foreach($this->fonts as $fk=>$font) {
-          if (!$font['used'] && ($font['type']=='TTF')) { 
-               $unused[] = $fk;
-          }
-       }
-
-
-       for($n=1;$n<=$nb;$n++)
-       {
-               $thispage = $this->pages[$n];
-//             unset($this->pages[$n]);        // mPDF 5.6.47
-               if(isset($this->OrientationChanges[$n])) { 
-                       $hPt=$this->pageDim[$n]['w']*_MPDFK;
-                       $wPt=$this->pageDim[$n]['h']*_MPDFK;
-                       $owidthPt_LR = $this->pageDim[$n]['outer_width_TB']*_MPDFK;
-                       $owidthPt_TB = $this->pageDim[$n]['outer_width_LR']*_MPDFK;
-               }
-               else { 
-                       $wPt=$this->pageDim[$n]['w']*_MPDFK;
-                       $hPt=$this->pageDim[$n]['h']*_MPDFK;
-                       $owidthPt_LR = $this->pageDim[$n]['outer_width_LR']*_MPDFK;
-                       $owidthPt_TB = $this->pageDim[$n]['outer_width_TB']*_MPDFK;
-               }
-               // Remove references to unused fonts (usually default font)
-               foreach($unused as $fk) {
-                       if ($this->fonts[$fk]['sip'] || $this->fonts[$fk]['smp']) {
-                               foreach($this->fonts[$fk]['subsetfontids'] AS $k => $fid) {
-                                               $thispage = preg_replace('/\s\/F'.$fid.' \d[\d.]* Tf\s/is',' ',$thispage); 
-                               }
-                       }
-                       else { 
-                               $thispage = preg_replace('/\s\/F'.$this->fonts[$fk]['i'].' \d[\d.]* Tf\s/is',' ',$thispage); 
-                       }
-               }
-               //Replace number of pages
-               if(!empty($this->aliasNbPg)) {
-                       if (!$this->onlyCoreFonts) { $s1 = $this->UTF8ToUTF16BE($this->aliasNbPg, false); }
-                       $s2 = $this->aliasNbPg;
-                       if (!$this->onlyCoreFonts) { $r1 = $this->UTF8ToUTF16BE($nb, false); }
-                       $r2 = $nb;
-                       if (preg_match_all('/{mpdfheadernbpg (C|R) ff=(\S*) fs=(\S*) fz=(.*?)}/',$thispage,$m)) {
-                               for($hi=0;$hi<count($m[0]);$hi++) {
-                                       $pos = $m[1][$hi];
-                                       $hff = $m[2][$hi];
-                                       $hfst = $m[3][$hi];
-                                       $hfsz = $m[4][$hi];
-                                       $this->SetFont($hff,$hfst,$hfsz, false);
-                                       $x1 = $this->GetStringWidth($this->aliasNbPg);
-                                       $x2 = $this->GetStringWidth($nb);
-                                       $xadj = $x1 - $x2;
-                                       if ($pos=='C') { $xadj /= 2; }
-                                       $rep = sprintf(' q 1 0 0 1 %.3F 0 cm ', $xadj*_MPDFK); 
-                                       $thispage = str_replace($m[0][$hi], $rep, $thispage);
-                               }
-                       }
-                       if (!$this->onlyCoreFonts) { $thispage=str_replace($s1,$r1,$thispage); }
-                       $thispage=str_replace($s2,$r2,$thispage);
-
-                       // And now for any SMP/SIP fonts subset using <HH> format
-                       $r = '';
-                       $nstr = "$nb";
-                       for($i=0;$i<strlen($nstr);$i++) {
-                               $r .= sprintf("%02s", strtoupper(dechex(intval($nstr[$i])+48))); 
-                       }
-                       $thispage=str_replace($this->aliasNbPgHex,$r,$thispage);
-
-               }
-               //Replace number of pages in group
-               if(!empty($this->aliasNbPgGp)) {
-                       if (!$this->onlyCoreFonts) { $s1 = $this->UTF8ToUTF16BE($this->aliasNbPgGp, false); }
-                       $s2 = $this->aliasNbPgGp; 
-                       $nbt = $this->docPageNumTotal($n);
-                       if (!$this->onlyCoreFonts) { $r1 = $this->UTF8ToUTF16BE($nbt, false); } 
-                       $r2 = $nbt;
-                       if (preg_match_all('/{mpdfheadernbpggp (C|R) ff=(\S*) fs=(\S*) fz=(.*?)}/',$thispage,$m)) {
-                               for($hi=0;$hi<count($m[0]);$hi++) {
-                                       $pos = $m[1][$hi];
-                                       $hff = $m[2][$hi];
-                                       $hfst = $m[3][$hi];
-                                       $hfsz = $m[4][$hi];
-                                       $this->SetFont($hff,$hfst,$hfsz, false);
-                                       $x1 = $this->GetStringWidth($this->aliasNbPgGp);
-                                       $x2 = $this->GetStringWidth($nbt);
-                                       $xadj = $x1 - $x2;
-                                       if ($pos=='C') { $xadj /= 2; }
-                                       $rep = sprintf(' q 1 0 0 1 %.3F 0 cm ', $xadj*_MPDFK); 
-                                       $thispage = str_replace($m[0][$hi], $rep, $thispage);
-                               }
-                       }
-                       if (!$this->onlyCoreFonts) { $thispage=str_replace($s1,$r1,$thispage); }
-                       $thispage=str_replace($s2,$r2,$thispage);
-
-                       // And now for any SMP/SIP fonts subset using <HH> format
-                       $r = '';
-                       $nstr = "$nbt";
-                       for($i=0;$i<strlen($nstr);$i++) {
-                               $r .= sprintf("%02s", strtoupper(dechex(intval($nstr[$i])+48))); 
-                       }
-                       $thispage=str_replace($this->aliasNbPgGpHex,$r,$thispage);
-
-               }
-               $thispage = preg_replace('/(\s*___BACKGROUND___PATTERNS'.$this->uniqstr.'\s*)/', " ", $thispage);
-               $thispage = preg_replace('/(\s*___HEADER___MARKER'.$this->uniqstr.'\s*)/', " ", $thispage);
-               $thispage = preg_replace('/(\s*___PAGE___START'.$this->uniqstr.'\s*)/', " ", $thispage);
-               $thispage = preg_replace('/(\s*___TABLE___BACKGROUNDS'.$this->uniqstr.'\s*)/', " ", $thispage);
-
-               //Page
-               $this->_newobj();
-               $this->_out('<</Type /Page');
-               $this->_out('/Parent 1 0 R');
-               if(isset($this->OrientationChanges[$n])) {
-                       $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$hPt,$wPt));
-                       //If BleedBox is defined, it must be larger than the TrimBox, but smaller than the MediaBox
-                       $bleedMargin = $this->pageDim[$n]['bleedMargin']*_MPDFK;
-                       if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) {
-                               $x0 = $owidthPt_TB-$bleedMargin;
-                               $y0 = $owidthPt_LR-$bleedMargin;
-                               $x1 = $hPt-$owidthPt_TB+$bleedMargin;
-                               $y1 = $wPt-$owidthPt_LR+$bleedMargin;
-                               $this->_out(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1));
-                       }
-                       $this->_out(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_TB, $owidthPt_LR, ($hPt-$owidthPt_TB), ($wPt-$owidthPt_LR)));   
-                       if (isset($this->OrientationChanges[$n]) && $this->displayDefaultOrientation) {
-                               if ($this->DefOrientation=='P') { $this->_out('/Rotate 270'); }
-                               else { $this->_out('/Rotate 90'); }
-                       }
-               }
-               //else if($wPt != $defwPt || $hPt != $defhPt) {
-               else {
-                       $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$wPt,$hPt));
-                       $bleedMargin = $this->pageDim[$n]['bleedMargin']*_MPDFK;
-                       if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) {
-                               $x0 = $owidthPt_LR-$bleedMargin;
-                               $y0 = $owidthPt_TB-$bleedMargin;
-                               $x1 = $wPt-$owidthPt_LR+$bleedMargin;
-                               $y1 = $hPt-$owidthPt_TB+$bleedMargin;
-                               $this->_out(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1));
-                       }
-                       $this->_out(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_LR, $owidthPt_TB, ($wPt-$owidthPt_LR), ($hPt-$owidthPt_TB)));   
-               }
-               $this->_out('/Resources 2 0 R');
-
-               // Important to keep in RGB colorSpace when using transparency
-               if (!$this->PDFA && !$this->PDFX) { 
-                       if ($this->restrictColorSpace == 3)
-                               $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceCMYK >> ');
-                       else if ($this->restrictColorSpace == 1)
-                               $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >> ');
-                       else 
-                               $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceRGB >> ');
-               }
-
-               $annotsnum = 0;
-               $embeddedfiles = array();       // mPDF 5.7.2 /EmbeddedFiles
-
-               if (isset($this->PageLinks[$n])) { $annotsnum += count($this->PageLinks[$n]); }
-/*-- ANNOTATIONS --*/
-               if (isset($this->PageAnnots[$n])) { 
-                       foreach ($this->PageAnnots[$n] as $k => $pl) {
-                               if (!empty($pl['opt']['file'])) { $embeddedfiles[$annotsnum+1] = true ; }       // mPDF 5.7.2 /EmbeddedFiles
-                               if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $annotsnum += 2 ; }
-                               else { $annotsnum++; }
-                               $this->PageAnnots[$n][$k]['pageobj'] = $this->n;
-                       }
-               }
-/*-- END ANNOTATIONS --*/
-
-/*-- FORMS --*/
-               // Active Forms
-               $formsnum = 0;
-               if ( count($this->form->forms) > 0 ) {
-                       foreach( $this->form->forms as $val ) {
-                               if ( $val['page'] == $n )
-                                       $formsnum++;
-                       }
-               }
-/*-- END FORMS --*/
-               if ($annotsnum || $formsnum) {
-                       $s = '/Annots [ ';
-                       for($i=0;$i<$annotsnum;$i++) { 
-                               if (!isset($embeddedfiles[$i])) { $s .= ($annotid + $i) . ' 0 R '; }    // mPDF 5.7.2 /EmbeddedFiles
-                       } 
-                       $annotid += $annotsnum;
-/*-- FORMS --*/
-                       if ( count($this->form->forms) > 0 ) {
-                               $this->form->addFormIds($n, $s, $annotid);
-                       }
-/*-- END FORMS --*/
-                       $s .= '] ';
-                       $this->_out($s);
-               }
-
-               $this->_out('/Contents '.($this->n+1).' 0 R>>');
-               $this->_out('endobj');
-
-               //Page content
-               $this->_newobj();
-               $p=($this->compress) ? gzcompress($thispage) : $thispage;
-               $this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
-               $this->_putstream($p);
-               $this->_out('endobj');
-       }
-       $this->_putannots();    // mPDF 5.7.2
-
-       //Pages root
-       $this->offsets[1]=strlen($this->buffer);
-       $this->_out('1 0 obj');
-       $this->_out('<</Type /Pages');
-       $kids='/Kids [';
-       for($i=0;$i<$nb;$i++)
-               $kids.=(3+2*$i).' 0 R ';
-       $this->_out($kids.']');
-       $this->_out('/Count '.$nb);
-       $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$defwPt,$defhPt));
-       $this->_out('>>');
-       $this->_out('endobj');
-}
-
-
-function _putannots() {        // mPDF 5.7.2
-       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-       $nb=$this->page;
-       for($n=1;$n<=$nb;$n++)
-       {
-               $annotobjs = array();
-               if(isset($this->PageLinks[$n]) || isset($this->PageAnnots[$n]) || count($this->form->forms) > 0 ) {
-                       $wPt=$this->pageDim[$n]['w']*_MPDFK;
-                       $hPt=$this->pageDim[$n]['h']*_MPDFK;
-
-                       //Links
-                       if(isset($this->PageLinks[$n])) {
-                          foreach($this->PageLinks[$n] as $key => $pl) {
-                               $this->_newobj();
-                               $annot='';
-                               $rect=sprintf('%.3F %.3F %.3F %.3F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
-                               $annot .= '<</Type /Annot /Subtype /Link /Rect ['.$rect.']';
-                               $annot .= ' /Contents '.$this->_UTF16BEtextstring($pl[4]);
-                               $annot .= ' /NM '.$this->_textstring(sprintf('%04u-%04u', $n, $key));
-                               $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
-                               $annot .= ' /Border [0 0 0]';
-                               // Use this (instead of /Border) to specify border around link
-               //              $annot .= ' /BS <</W 1';        // Width on points; 0 = no line
-               //              $annot .= ' /S /D';             // style - [S]olid, [D]ashed, [B]eveled, [I]nset, [U]nderline
-               //              $annot .= ' /D [3 2]';          // Dash array - if dashed
-               //              $annot .= ' >>';
-               //              $annot .= ' /C [1 0 0]';        // Color RGB
-
-                               if ($this->PDFA || $this->PDFX) { $annot .= ' /F 28'; }
-                               if (strpos($pl[4],'@')===0) {
-                                       $p=substr($pl[4],1);
-                                       //      $h=isset($this->OrientationChanges[$p]) ? $wPt : $hPt;
-                                       $htarg=$this->pageDim[$p]['h']*_MPDFK;
-                                       $annot.=sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>',1+2*$p,$htarg);
-                               }
-                               else if(is_string($pl[4])) {
-                                       $annot .= ' /A <</S /URI /URI '.$this->_textstring($pl[4]).'>> >>';
-                               }
-                               else {
-                                       $l=$this->links[$pl[4]];
-                                       // may not be set if #link points to non-existent target
-                                       if (isset($this->pageDim[$l[0]]['h'])) { $htarg=$this->pageDim[$l[0]]['h']*_MPDFK; }
-                                       else { $htarg=$this->h*_MPDFK; } // doesn't really matter
-                                       $annot.=sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>',1+2*$l[0],$htarg-$l[1]*_MPDFK);
-                               }
-                               $this->_out($annot);
-                               $this->_out('endobj');
-                          }
-                       }
-
-
-/*-- ANNOTATIONS --*/
-                       if(isset($this->PageAnnots[$n])) {
-                          foreach ($this->PageAnnots[$n] as $key => $pl) {
-                               if ($pl['opt']['file']) { $FileAttachment=true; }
-                               else { $FileAttachment=false; }
-                               $this->_newobj();
-                               $annot='';
-                               $pl['opt'] = array_change_key_case($pl['opt'], CASE_LOWER);
-                               $x = $pl['x']; 
-                               if ($this->annotMargin <> 0 || $x==0 || $x<0) { // Odd page
-                                  $x = ($wPt/_MPDFK) - $this->annotMargin;
-                               }
-                               $w = $h = 0;
-                               $a = $x * _MPDFK;
-                               $b = $hPt - ($pl['y']  * _MPDFK);
-                               $annot .= '<</Type /Annot ';
-                               if ($FileAttachment) { 
-                                       $annot .= '/Subtype /FileAttachment'; 
-                                       // Need to set a size for FileAttachment icons
-                                       if ($pl['opt']['icon']=='Paperclip') { $w=8.235; $h=20; }       // 7,17
-                                       else if ($pl['opt']['icon']=='Tag') { $w=20; $h=16; }
-                                       else if ($pl['opt']['icon']=='Graph') { $w=20; $h=20; }
-                                       else { $w=14; $h=20; }  // PushPin 
-                                       $f = $pl['opt']['file'];
-                                       $f = preg_replace('/^.*\//', '', $f);
-                                       $f = preg_replace('/[^a-zA-Z0-9._]/', '', $f);
-                                       $annot .= '/FS <</Type /Filespec /F ('.$f.')';
-                                       $annot .= '/EF <</F '.($this->n+1).' 0 R>>';
-                                       $annot .= '>>';
-                               }
-                               else { 
-                                       $annot .= '/Subtype /Text'; 
-                               }
-                               $rect = sprintf('%.3F %.3F %.3F %.3F', $a, $b-$h, $a+$w, $b);
-                               $annot .= '/Rect ['.$rect.']';
-
-                               // contents = description of file in free text
-                               $annot .= ' /Contents '.$this->_UTF16BEtextstring($pl['txt']);
-                               $annot .= ' /NM '.$this->_textstring(sprintf('%04u-%04u', $n, (2000 + $key)));
-                               $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
-                               $annot .= ' /CreationDate '.$this->_textstring('D:'.date('YmdHis'));
-                               $annot .= ' /Border [0 0 0]';
-                               if ($this->PDFA || $this->PDFX) { 
-                                       $annot .= ' /F 28'; 
-                                       $annot .= ' /CA 1'; 
-                               }
-                               else if ($pl['opt']['ca']>0) { $annot .= ' /CA '.$pl['opt']['ca']; }
-
-                               $annotcolor = ' /C [';
-                               if (isset($pl['opt']['c']) AND $pl['opt']['c']) {
-                                       $col = $pl['opt']['c'];
-                                       if ($col{0}==3 || $col{0}==5) { $annotcolor .= sprintf("%.3F %.3F %.3F", ord($col{1})/255,ord($col{2})/255,ord($col{3})/255); }
-                                       else if ($col{0}==1) { $annotcolor .= sprintf("%.3F", ord($col{1})/255); }
-                                       else if ($col{0}==4 || $col{0}==6) { $annotcolor .= sprintf("%.3F %.3F %.3F %.3F", ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100); }
-                                       else { $annotcolor .= '1 1 0'; }
-                               }
-                               else { $annotcolor .= '1 1 0'; }
-                               $annotcolor .= ']';
-                               $annot .= $annotcolor;
-                               // Usually Author
-                               // Use as Title for fileattachment
-                               if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) {
-                                       $annot .= ' /T '.$this->_UTF16BEtextstring($pl['opt']['t']);
-                               }
-                               if ($FileAttachment) {
-                                       $iconsapp = array('Paperclip', 'Graph', 'PushPin', 'Tag'); 
-                               }
-                               else { $iconsapp = array('Comment', 'Help', 'Insert', 'Key', 'NewParagraph', 'Note', 'Paragraph'); }
-                               if (isset($pl['opt']['icon']) AND in_array($pl['opt']['icon'], $iconsapp)) {
-                                       $annot .= ' /Name /'.$pl['opt']['icon'];
-                               }
-                               else if ($FileAttachment) { $annot .= ' /Name /PushPin'; }
-                               else { $annot .= ' /Name /Note'; }
-                               if (!$FileAttachment) {
-                                       // /Subj is PDF 1.5 spec.
-                                       if (isset($pl['opt']['subj']) && !$this->PDFA && !$this->PDFX) {
-                                               $annot .= ' /Subj '.$this->_UTF16BEtextstring($pl['opt']['subj']);
-                                       }
-                                       if (!empty($pl['opt']['popup'])) { 
-                                               $annot .= ' /Open true'; 
-                                               $annot .= ' /Popup '.($this->n+1).' 0 R';
-                                       }
-                                       else { $annot .= ' /Open false'; }
-                               }
-                               $annot .= ' /P '.$pl['pageobj'].' 0 R';
-                               $annot .= '>>';
-                               $this->_out($annot);
-                               $this->_out('endobj');
-
-                               if ($FileAttachment) { 
-                                       $file = @file_get_contents($pl['opt']['file']) or die('mPDF Error: Cannot access file attachment - '.$pl['opt']['file']);
-                                       $filestream = gzcompress($file);
-                                       $this->_newobj();
-                                       $this->_out('<</Type /EmbeddedFile');
-                                       $this->_out('/Length '.strlen($filestream));
-                                       $this->_out('/Filter /FlateDecode');
-                                       $this->_out('>>');
-                                       $this->_putstream($filestream);
-                                       $this->_out('endobj');
-                               }
-                               else if (!empty($pl['opt']['popup'])) { 
-                                       $this->_newobj();
-                                       $annot='';
-                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][0])) { $x = $pl['opt']['popup'][0] * _MPDFK; }
-                                       else { $x = $pl['x'] * _MPDFK; }
-                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][1])) { $y = $hPt - ($pl['opt']['popup'][1] * _MPDFK); }
-                                       else { $y = $hPt - ($pl['y']  * _MPDFK); }
-                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][2])) { $w = $pl['opt']['popup'][2] * _MPDFK; }
-                                       else { $w = 180; }
-                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][3])) { $h = $pl['opt']['popup'][3] * _MPDFK; }
-                                       else { $h = 120; }
-                                       $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y-$h, $x+$w, $y);
-                                       $annot .= '<</Type /Annot /Subtype /Popup /Rect ['.$rect.']';
-                                       $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
-                                       if ($this->PDFA || $this->PDFX) { $annot .= ' /F 28'; }
-                                       $annot .= ' /Parent '.($this->n-1).' 0 R';
-                                       $annot .= '>>';
-                                       $this->_out($annot);
-                                       $this->_out('endobj');
-                               }
-                          }
-                       }
-/*-- END ANNOTATIONS --*/
-
-/*-- FORMS --*/
-                       // Active Forms
-                       if ( count($this->form->forms) > 0 ) {
-                               $this->form->_putFormItems($n, $hPt);
-                       }
-/*-- END FORMS --*/
-               }
-       }
-/*-- FORMS --*/
-       // Active Forms - Radio Button Group entries
-       // Output Radio Button Group form entries (radio_on_obj_id already determined)
-       if (count($this->form->form_radio_groups)) {
-               $this->form->_putRadioItems($n);
-       }
-/*-- END FORMS --*/
-}
-
-
-/*-- ANNOTATIONS --*/
-function Annotation($text, $x=0, $y=0, $icon='Note', $author='', $subject='', $opacity=0, $colarray=false, $popup='', $file='') {
-       if (is_array($colarray) && count($colarray)==3) { $colarray = $this->ConvertColor('rgb('.$colarray[0].','.$colarray[1].','.$colarray[2].')'); }
-       if ($colarray === false) { $colarray = $this->ConvertColor('yellow'); }
-       if ($x==0) { $x = $this->x; }
-       if ($y==0) { $y = $this->y; }
-       $page = $this->page;
-       if ($page < 1) {        // Document has not been started - assume it's for first page
-               $page = 1;
-               if ($x==0) { $x = $this->lMargin; }
-               if ($y==0) { $y = $this->tMargin; }
-       }
-
-       if ($this->PDFA || $this->PDFX) {
-               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Annotation markers cannot be semi-transparent in PDFA1-b or PDFX/1-a, so they may make underlying text unreadable. (Annotation markers moved to right margin)"; }
-               $x = ($this->w) - $this->rMargin*0.66;
-       }
-       if (!$this->annotMargin) { $y -= $this->FontSize / 2; }
-
-       if (!$opacity && $this->annotMargin) { $opacity = 1; }
-       else if (!$opacity) { $opacity = $this->annotOpacity; }
-
-       $an = array('txt' => $text, 'x' => $x, 'y' => $y, 'opt' => array('Icon'=>$icon, 'T'=>$author, 'Subj'=>$subject, 'C'=>$colarray, 'CA'=>$opacity, 'popup'=>$popup, 'file'=>$file));
-
-       if ($this->keep_block_together) {       // Save to array - don't write yet
-               $this->ktAnnots[$this->page][]= $an;
-               return;
-       }
-       else if ($this->table_rotate) {
-               $this->tbrot_Annots[$this->page][]= $an;
-               return;
-       }
-       else if ($this->kwt) {
-               $this->kwt_Annots[$this->page][]= $an;
-               return;
-       }
-       // mPDF 5.0 
-       if ($this->writingHTMLheader || $this->writingHTMLfooter) {
-               $this->HTMLheaderPageAnnots[]= $an;
-               return;
-       }
-       //Put an Annotation on the page
-       $this->PageAnnots[$page][] = $an;
-/*-- COLUMNS --*/
-       // Save cross-reference to Column buffer
-       $ref = count($this->PageAnnots[$this->page])-1;
-       $this->columnAnnots[$this->CurrCol][INTVAL($this->x)][INTVAL($this->y)] = $ref;
-/*-- END COLUMNS --*/
-}
-/*-- END ANNOTATIONS --*/
-
-
-function _putfonts() {
-       $nf=$this->n;
-       foreach($this->FontFiles as $fontkey=>$info) {
-          // TrueType embedded
-          if (isset($info['type']) && $info['type']=='TTF' && !$info['sip'] && !$info['smp']) {
-               $used = true;
-               $asSubset = false;
-               foreach($this->fonts AS $k=>$f) {
-                       if ($f['fontkey'] == $fontkey && $f['type']=='TTF') { 
-                               $used = $f['used']; 
-                               if ($used) {
-                                       $nChars = (ord($f['cw'][0]) << 8) + ord($f['cw'][1]);
-                                       $usage = intval(count($f['subset'])*100 / $nChars);
-                                       $fsize = $info['length1'];
-                                       // Always subset the very large TTF files
-                                       if ($fsize > ($this->maxTTFFilesize *1024)) { $asSubset = true; }
-                                       else if ($usage < $this->percentSubset) { $asSubset = true; }
-                               }
-                               if ($f['unAGlyphs']) $aaSubset = true;  // mPDF 5.4.05
-                               if ($this->PDFA || $this->PDFX)  $asSubset = false;
-                               $this->fonts[$k]['asSubset'] = $asSubset;
-                               break;
-                       }
-               }
-               if ($used && !$asSubset) {
-                       //Font file embedding
-                       $this->_newobj();
-                       $this->FontFiles[$fontkey]['n']=$this->n;
-                       $font='';
-                       $originalsize = $info['length1'];
-                       if ($this->repackageTTF || $this->fonts[$fontkey]['TTCfontID']>0) {
-                               // First see if there is a cached compressed file
-                               if (file_exists(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z')) {
-                                       $f=fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z','rb');
-                                       if(!$f) { $this->Error('Font file .ps.z not found'); }
-                                       while(!feof($f)) { $font .= fread($f, 2048); }
-                                       fclose($f);
-                                       include(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.php');       // sets $originalsize (of repackaged font)
-                               }
-                               else {
-                                       if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
-                                       $ttf = new TTFontFile();
-                                       $font = $ttf->repackageTTF($this->FontFiles[$fontkey]['ttffile'], $this->fonts[$fontkey]['TTCfontID'], $this->debugfonts, $this->fonts[$fontkey]['unAGlyphs']); // mPDF 5.4.05
-
-                                       $originalsize = strlen($font);
-                                       $font = gzcompress($font);
-                                       unset($ttf);
-                                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
-                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z',"wb");
-                                               fwrite($fh,$font,strlen($font));
-                                               fclose($fh);
-                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.php',"wb");
-                                               $len = "<?php \n";
-                                               $len.='$originalsize='.$originalsize.";\n";
-                                               $len.="?>";
-                                               fwrite($fh,$len,strlen($len));
-                                               fclose($fh);
-                                       }
-                               }
-                       }
-                       else {
-                               // First see if there is a cached compressed file
-                               if (file_exists(_MPDF_TTFONTDATAPATH.$fontkey.'.z')) {
-                                       $f=fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.z','rb');
-                                       if(!$f) { $this->Error('Font file not found'); }
-                                       while(!feof($f)) { $font .= fread($f, 2048); }
-                                       fclose($f);
-                               }
-                               else {
-                                       $f=fopen($this->FontFiles[$fontkey]['ttffile'],'rb');
-                                       if(!$f) { $this->Error('Font file not found'); }
-                                       while(!feof($f)) { $font .= fread($f, 2048); }
-                                       fclose($f);
-                                       $font = gzcompress($font);
-                                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
-                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.z',"wb");
-                                               fwrite($fh,$font,strlen($font));
-                                               fclose($fh);
-                                       }
-                               }
-                       }
-
-                       $this->_out('<</Length '.strlen($font));
-                       $this->_out('/Filter /FlateDecode');
-                       $this->_out('/Length1 '.$originalsize);
-                       $this->_out('>>');
-                       $this->_putstream($font);
-                       $this->_out('endobj');
-               }
-          }
-       }
-
-       $nfonts = count($this->fonts);
-       $fctr = 1;
-       foreach($this->fonts as $k=>$font) {
-               //Font objects
-               $type=$font['type'];
-               $name=$font['name'];
-               if ((!isset($font['used']) || !$font['used']) && $type=='TTF') { continue; }
-               if ($this->progressBar) { $this->UpdateProgressBar(2,intval($fctr*100/$nfonts),'Writing Fonts'); $fctr++; }     // *PROGRESS-BAR*
-               if (isset($font['asSubset'])) { $asSubset = $font['asSubset']; }
-               else { $asSubset = ''; }
-/*-- CJK-FONTS --*/
-               if($type=='Type0') {    // = Adobe CJK Fonts
-                       $this->fonts[$k]['n']=$this->n+1;
-                       $this->_newobj();
-                       $this->_out('<</Type /Font');
-                       $this->_putType0($font);
-               }
-               else
-/*-- END CJK-FONTS --*/
-               if($type=='core') {
-                       //Standard font
-                       $this->fonts[$k]['n']=$this->n+1;
-                       if ($this->PDFA || $this->PDFX) { $this->Error('Core fonts are not allowed in PDF/A1-b or PDFX/1-a files (Times, Helvetica, Courier etc.)'); }
-                       $this->_newobj();
-                       $this->_out('<</Type /Font');
-                       $this->_out('/BaseFont /'.$name);
-                       $this->_out('/Subtype /Type1');
-                       if($name!='Symbol' && $name!='ZapfDingbats') {
-                               $this->_out('/Encoding /WinAnsiEncoding');
-                       }
-                       $this->_out('>>');
-                       $this->_out('endobj');
-               } 
-               // TrueType embedded SUBSETS for SIP (CJK extB containing Supplementary Ideographic Plane 2)
-               // Or Unicode Plane 1 - Supplementary Multilingual Plane
-               else if ($type=='TTF' && ($font['sip'] || $font['smp'])) {
-                  if (!$font['used']) { continue; }
-                  $ssfaid="AA";
-                  if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
-                  $ttf = new TTFontFile();
-                  for($sfid=0;$sfid<count($font['subsetfontids']);$sfid++) {
-                       $this->fonts[$k]['n'][$sfid]=$this->n+1;                // NB an array for subset
-                       $subsetname = 'MPDF'.$ssfaid.'+'.$font['name'];
-                       $ssfaid++;
-                       $subset = $font['subsets'][$sfid];
-                       unset($subset[0]);
-                       $ttfontstream = $ttf->makeSubsetSIP($font['ttffile'], $subset, $font['TTCfontID'], $this->debugfonts);
-                       $ttfontsize = strlen($ttfontstream);
-                       $fontstream = gzcompress($ttfontstream);
-                       $widthstring = '';
-                       $toUnistring = '';
-                       foreach($font['subsets'][$sfid] AS $cp=>$u) {
-                               $w = $this->_getCharWidth($font['cw'], $u); 
-                               if ($w !== false) {
-                                       $widthstring .= $w.' ';
-                               }
-                               else {
-                                       $widthstring .= round($ttf->defaultWidth).' ';
-                               }
-                               if ($u > 65535) {
-                                       $utf8 = chr(($u>>18)+240).chr((($u>>12)&63)+128).chr((($u>>6)&63)+128) .chr(($u&63)+128);
-                                       $utf16 = mb_convert_encoding($utf8, 'UTF-16BE', 'UTF-8');
-                                       $l1 = ord($utf16[0]);
-                                       $h1 = ord($utf16[1]);
-                                       $l2 = ord($utf16[2]);
-                                       $h2 = ord($utf16[3]);
-                                       $toUnistring .= sprintf("<%02s> <%02s%02s%02s%02s>\n", strtoupper(dechex($cp)), strtoupper(dechex($l1)), strtoupper(dechex($h1)), strtoupper(dechex($l2)), strtoupper(dechex($h2)));
-                               }
-                               else {
-                                       $toUnistring .= sprintf("<%02s> <%04s>\n", strtoupper(dechex($cp)), strtoupper(dechex($u)));
-                               }
-                       }
-
-                       //Additional Type1 or TrueType font
-                       $this->_newobj();
-                       $this->_out('<</Type /Font');
-                       $this->_out('/BaseFont /'.$subsetname);
-                       $this->_out('/Subtype /TrueType');
-                       $this->_out('/FirstChar 0 /LastChar '.(count($font['subsets'][$sfid])-1));
-                       $this->_out('/Widths '.($this->n+1).' 0 R');
-                       $this->_out('/FontDescriptor '.($this->n+2).' 0 R');
-                       $this->_out('/ToUnicode '.($this->n + 3).' 0 R');
-                       $this->_out('>>');
-                       $this->_out('endobj');
-
-                       //Widths
-                       $this->_newobj();
-                       $this->_out('['.$widthstring.']');
-                       $this->_out('endobj');
-
-                       //Descriptor
-                       $this->_newobj();
-                       $s='<</Type /FontDescriptor /FontName /'.$subsetname."\n";
-                       foreach($font['desc'] as $kd=>$v) {
-                               if ($kd == 'Flags') { $v = $v | 4; $v = $v & ~32; }     // SYMBOLIC font flag
-                               $s.=' /'.$kd.' '.$v."\n";
-                       }
-                       $s.='/FontFile2 '.($this->n + 2).' 0 R';
-                       $this->_out($s.'>>');
-                       $this->_out('endobj');
-
-                       // ToUnicode
-                       $this->_newobj();
-                       $toUni = "/CIDInit /ProcSet findresource begin\n";
-                       $toUni .= "12 dict begin\n";
-                       $toUni .= "begincmap\n";
-                       $toUni .= "/CIDSystemInfo\n";
-                       $toUni .= "<</Registry (Adobe)\n";
-                       $toUni .= "/Ordering (UCS)\n";
-                       $toUni .= "/Supplement 0\n";
-                       $toUni .= ">> def\n";
-                       $toUni .= "/CMapName /Adobe-Identity-UCS def\n";
-                       $toUni .= "/CMapType 2 def\n";
-                       $toUni .= "1 begincodespacerange\n";
-                       $toUni .= "<00> <FF>\n";
-                       $toUni .= "endcodespacerange\n";
-                       $toUni .= count($font['subsets'][$sfid])." beginbfchar\n";
-                       $toUni .= $toUnistring;
-                       $toUni .= "endbfchar\n";
-                       $toUni .= "endcmap\n";
-                       $toUni .= "CMapName currentdict /CMap defineresource pop\n";
-                       $toUni .= "end\n";
-                       $toUni .= "end\n";
-
-                       $this->_out('<</Length '.(strlen($toUni)).'>>');
-                       $this->_putstream($toUni);
-                       $this->_out('endobj');
-
-                       //Font file 
-                       $this->_newobj();
-                       $this->_out('<</Length '.strlen($fontstream));
-                       $this->_out('/Filter /FlateDecode');
-                       $this->_out('/Length1 '.$ttfontsize);
-                       $this->_out('>>');
-                       $this->_putstream($fontstream);
-                       $this->_out('endobj');
-                  }    // foreach subset
-                  unset($ttf);
-               } 
-               // TrueType embedded SUBSETS or FULL
-               else if ($type=='TTF') {
-                       $this->fonts[$k]['n']=$this->n+1;
-                       if ($asSubset ) {
-                               $ssfaid="A";
-                               if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
-                               $ttf = new TTFontFile();
-                               $fontname = 'MPDFA'.$ssfaid.'+'.$font['name'];
-                               $subset = $font['subset'];
-                               unset($subset[0]);
-                               $ttfontstream = $ttf->makeSubset($font['ttffile'], $subset, $font['TTCfontID'], $this->debugfonts, $font['unAGlyphs']); // mPDF 5.4.05
-                               $ttfontsize = strlen($ttfontstream);
-                               $fontstream = gzcompress($ttfontstream);
-                               $codeToGlyph = $ttf->codeToGlyph;
-                               unset($codeToGlyph[0]);
-                       }
-                       else { $fontname = $font['name']; }
-                       // Type0 Font
-                       // A composite font - a font composed of other fonts, organized hierarchically
-                       $this->_newobj();
-                       $this->_out('<</Type /Font');
-                       $this->_out('/Subtype /Type0');
-                       $this->_out('/BaseFont /'.$fontname.'');
-                       $this->_out('/Encoding /Identity-H'); 
-                       $this->_out('/DescendantFonts ['.($this->n + 1).' 0 R]');
-                       $this->_out('/ToUnicode '.($this->n + 2).' 0 R');
-                       $this->_out('>>');
-                       $this->_out('endobj');
-
-                       // CIDFontType2
-                       // A CIDFont whose glyph descriptions are based on TrueType font technology
-                       $this->_newobj();
-                       $this->_out('<</Type /Font');
-                       $this->_out('/Subtype /CIDFontType2');
-                       $this->_out('/BaseFont /'.$fontname.'');
-                       $this->_out('/CIDSystemInfo '.($this->n + 2).' 0 R'); 
-                       $this->_out('/FontDescriptor '.($this->n + 3).' 0 R');
-                       if (isset($font['desc']['MissingWidth'])){
-                               $this->_out('/DW '.$font['desc']['MissingWidth'].''); 
-                       }
-
-                       if (!$asSubset && file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw')) {
-                                       $w = '';
-                                       $w=file_get_contents(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw');
-                                       $this->_out($w);
-                       }
-                       else {
-                               $this->_putTTfontwidths($font, $asSubset, $ttf->maxUni);
-                       }
-
-                       $this->_out('/CIDToGIDMap '.($this->n + 4).' 0 R');
-                       $this->_out('>>');
-                       $this->_out('endobj');
-
-                       // ToUnicode
-                       $this->_newobj();
-                       $toUni = "/CIDInit /ProcSet findresource begin\n";
-                       $toUni .= "12 dict begin\n";
-                       $toUni .= "begincmap\n";
-                       $toUni .= "/CIDSystemInfo\n";
-                       $toUni .= "<</Registry (Adobe)\n";
-                       $toUni .= "/Ordering (UCS)\n";
-                       $toUni .= "/Supplement 0\n";
-                       $toUni .= ">> def\n";
-                       $toUni .= "/CMapName /Adobe-Identity-UCS def\n";
-                       $toUni .= "/CMapType 2 def\n";
-                       $toUni .= "1 begincodespacerange\n";
-                       $toUni .= "<0000> <FFFF>\n";
-                       $toUni .= "endcodespacerange\n";
-                       $toUni .= "1 beginbfrange\n";
-                       $toUni .= "<0000> <FFFF> <0000>\n";
-                       $toUni .= "endbfrange\n";
-                       $toUni .= "endcmap\n";
-                       $toUni .= "CMapName currentdict /CMap defineresource pop\n";
-                       $toUni .= "end\n";
-                       $toUni .= "end\n";
-                       $this->_out('<</Length '.(strlen($toUni)).'>>');
-                       $this->_putstream($toUni);
-                       $this->_out('endobj');
-
-
-                       // CIDSystemInfo dictionary
-                       $this->_newobj();
-                       $this->_out('<</Registry (Adobe)'); 
-                       $this->_out('/Ordering (UCS)');
-                       $this->_out('/Supplement 0');
-                       $this->_out('>>');
-                       $this->_out('endobj');
-
-                       // Font descriptor
-                       $this->_newobj();
-                       $this->_out('<</Type /FontDescriptor');
-                       $this->_out('/FontName /'.$fontname);
-                       foreach($font['desc'] as $kd=>$v) {
-                               if ($asSubset && $kd == 'Flags') { $v = $v | 4; $v = $v & ~32; }        // SYMBOLIC font flag
-                               $this->_out(' /'.$kd.' '.$v);
-                       }
-                       if ($font['panose']) {
-                               $this->_out(' /Style << /Panose <'.$font['panose'].'> >>');
-                       }
-                       if ($asSubset ) {
-                               $this->_out('/FontFile2 '.($this->n + 2).' 0 R');
-                       }
-                       else if ($font['fontkey']) {
-                               // obj ID of a stream containing a TrueType font program
-                               $this->_out('/FontFile2 '.$this->FontFiles[$font['fontkey']]['n'].' 0 R');
-                       }
-                       $this->_out('>>');
-                       $this->_out('endobj');
-
-                       // Embed CIDToGIDMap
-                       // A specification of the mapping from CIDs to glyph indices
-                       if ($asSubset ) {
-                               $cidtogidmap = '';
-                               $cidtogidmap = str_pad('', 256*256*2, "\x00");
-                               foreach($codeToGlyph as $cc=>$glyph) {
-                                       $cidtogidmap[$cc*2] = chr($glyph >> 8);
-                                       $cidtogidmap[$cc*2 + 1] = chr($glyph & 0xFF);
-                               }
-                               $cidtogidmap = gzcompress($cidtogidmap);
-                       }
-                       else {
-                               // First see if there is a cached CIDToGIDMapfile
-                               $cidtogidmap = '';
-                               if (file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm')) {
-                                       $f=fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm','rb');
-                                       while(!feof($f)) { $cidtogidmap .= fread($f, 2048); }
-                                       fclose($f);
-                               }
-                               else {
-                                       if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
-                                       $ttf = new TTFontFile();
-                                       $charToGlyph = $ttf->getCTG($font['ttffile'], $font['TTCfontID'], $this->debugfonts, $font['unAGlyphs']);       // mPDF 5.4.05
-                                       $cidtogidmap = str_pad('', 256*256*2, "\x00");
-                                       foreach($charToGlyph as $cc=>$glyph) {
-                                               $cidtogidmap[$cc*2] = chr($glyph >> 8);
-                                               $cidtogidmap[$cc*2 + 1] = chr($glyph & 0xFF);
-                                       }
-                                       unset($ttf);
-                                       $cidtogidmap = gzcompress($cidtogidmap);
-                                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
-                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm',"wb");
-                                               fwrite($fh,$cidtogidmap,strlen($cidtogidmap));
-                                               fclose($fh);
-                                       }
-                               }
-                       }
-                       $this->_newobj();
-                       $this->_out('<</Length '.strlen($cidtogidmap).'');
-                       $this->_out('/Filter /FlateDecode');
-                       $this->_out('>>');
-                       $this->_putstream($cidtogidmap);
-                       $this->_out('endobj');
-
-                       //Font file 
-                       if ($asSubset ) {
-                               $this->_newobj();
-                               $this->_out('<</Length '.strlen($fontstream));
-                               $this->_out('/Filter /FlateDecode');
-                               $this->_out('/Length1 '.$ttfontsize);
-                               $this->_out('>>');
-                               $this->_putstream($fontstream);
-                               $this->_out('endobj');
-                               unset($ttf);
-                       }
-               } 
-               else { $this->Error('Unsupported font type: '.$type.' ('.$name.')'); }
-       }
-}
-
-
-
-function _putTTfontwidths(&$font, $asSubset, $maxUni) {
-       if ($asSubset && file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php')) {
-               include(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php') ;
-               $startcid = 128;
-       }
-       else {
-               $rangeid = 0;
-               $range = array();
-               $prevcid = -2;
-               $prevwidth = -1;
-               $interval = false;
-               $startcid = 1;
-       }
-       if ($asSubset) { $cwlen = $maxUni + 1; }
-       else { $cwlen = (strlen($font['cw'])/2); }
-
-       // for each character
-       for ($cid=$startcid; $cid<$cwlen; $cid++) {
-               if ($cid==128 && $asSubset && (!file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php'))) {
-                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
-                               $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php',"wb");
-                               $cw127='<?php'."\n";
-                               $cw127.='$rangeid='.$rangeid.";\n";
-                               $cw127.='$prevcid='.$prevcid.";\n";
-                               $cw127.='$prevwidth='.$prevwidth.";\n";
-                               if ($interval) { $cw127.='$interval=true'.";\n"; }
-                               else { $cw127.='$interval=false'.";\n"; }
-                               $cw127.='$range='.var_export($range,true).";\n";
-                               $cw127.="?>";
-                               fwrite($fh,$cw127,strlen($cw127));
-                               fclose($fh);
-                       }
-               }
-               if ($font['cw'][$cid*2] == "\00" && $font['cw'][$cid*2+1] == "\00") { continue; }
-               $width = (ord($font['cw'][$cid*2]) << 8) + ord($font['cw'][$cid*2+1]);
-               if ($width == 65535) { $width = 0; }
-               if ($asSubset && $cid > 255 && (!isset($font['subset'][$cid]) || !$font['subset'][$cid])) {
-                       continue;
-               }
-               if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) {
-                       if ($cid == ($prevcid + 1)) {
-                               // consecutive CID
-                               if ($width == $prevwidth) {
-                                       if ($width == $range[$rangeid][0]) {
-                                               $range[$rangeid][] = $width;
-                                       } else {
-                                               array_pop($range[$rangeid]);
-                                               // new range
-                                               $rangeid = $prevcid;
-                                               $range[$rangeid] = array();
-                                               $range[$rangeid][] = $prevwidth;
-                                               $range[$rangeid][] = $width;
-                                       }
-                                       $interval = true;
-                                       $range[$rangeid]['interval'] = true;
-                               } else {
-                                       if ($interval) {
-                                               // new range
-                                               $rangeid = $cid;
-                                               $range[$rangeid] = array();
-                                               $range[$rangeid][] = $width;
-                                       } else {
-                                               $range[$rangeid][] = $width;
-                                       }
-                                       $interval = false;
-                               }
-                       } else {
-                               // new range
-                               $rangeid = $cid;
-                               $range[$rangeid] = array();
-                               $range[$rangeid][] = $width;
-                               $interval = false;
-                       }
-                       $prevcid = $cid;
-                       $prevwidth = $width;
-               }
-       }
-       $w = $this->_putfontranges($range);
-       $this->_out($w);
-       if (!$asSubset) {
-               if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
-                       $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw',"wb");
-                       fwrite($fh,$w,strlen($w));
-                       fclose($fh);
-               }
-       }
-}
-
-function _putfontranges(&$range) {
-       // optimize ranges
-       $prevk = -1;
-       $nextk = -1;
-       $prevint = false;
-       foreach ($range as $k => $ws) {
-               $cws = count($ws);
-               if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) {
-                       if (isset($range[$k]['interval'])) {
-                               unset($range[$k]['interval']);
-                       }
-                       $range[$prevk] = array_merge($range[$prevk], $range[$k]);
-                       unset($range[$k]);
-               } else {
-                       $prevk = $k;
-               }
-               $nextk = $k + $cws;
-               if (isset($ws['interval'])) {
-                       if ($cws > 3) {
-                               $prevint = true;
-                       } else {
-                               $prevint = false;
-                       }
-                       unset($range[$k]['interval']);
-                       --$nextk;
-               } else {
-                       $prevint = false;
-               }
-       }
-       // output data
-       $w = '';
-       foreach ($range as $k => $ws) {
-               if (count(array_count_values($ws)) == 1) {
-                       // interval mode is more compact
-                       $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0];
-               } else {
-                       // range mode
-                       $w .= ' '.$k.' [ '.implode(' ', $ws).' ]' . "\n";
-               }
-       }
-       return '/W ['.$w.' ]';
-}
-
-
-function _putfontwidths(&$font, $cidoffset=0) {
-       ksort($font['cw']);
-       unset($font['cw'][65535]);
-       $rangeid = 0;
-       $range = array();
-       $prevcid = -2;
-       $prevwidth = -1;
-       $interval = false;
-       // for each character
-       foreach ($font['cw'] as $cid => $width) {
-               $cid -= $cidoffset;
-               if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) {
-                       if ($cid == ($prevcid + 1)) {
-                               // consecutive CID
-                               if ($width == $prevwidth) {
-                                       if ($width == $range[$rangeid][0]) {
-                                               $range[$rangeid][] = $width;
-                                       } else {
-                                               array_pop($range[$rangeid]);
-                                               // new range
-                                               $rangeid = $prevcid;
-                                               $range[$rangeid] = array();
-                                               $range[$rangeid][] = $prevwidth;
-                                               $range[$rangeid][] = $width;
-                                       }
-                                       $interval = true;
-                                       $range[$rangeid]['interval'] = true;
-                               } else {
-                                       if ($interval) {
-                                               // new range
-                                               $rangeid = $cid;
-                                               $range[$rangeid] = array();
-                                               $range[$rangeid][] = $width;
-                                       } else {
-                                               $range[$rangeid][] = $width;
-                                       }
-                                       $interval = false;
-                               }
-                       } else {
-                               // new range
-                               $rangeid = $cid;
-                               $range[$rangeid] = array();
-                               $range[$rangeid][] = $width;
-                               $interval = false;
-                       }
-                       $prevcid = $cid;
-                       $prevwidth = $width;
-               }
-       }
-       $this->_out($this->_putfontranges($range));
-}
-
-
-/*-- CJK-FONTS --*/
-
-// from class PDF_Chinese CJK EXTENSIONS
-function _putType0(&$font)
-{
-       //Type0
-       $this->_out('/Subtype /Type0');
-       $this->_out('/BaseFont /'.$font['name'].'-'.$font['CMap']);
-       $this->_out('/Encoding /'.$font['CMap']);
-       $this->_out('/DescendantFonts ['.($this->n+1).' 0 R]');
-       $this->_out('>>');
-       $this->_out('endobj');
-       //CIDFont
-       $this->_newobj();
-       $this->_out('<</Type /Font');
-       $this->_out('/Subtype /CIDFontType0');
-       $this->_out('/BaseFont /'.$font['name']);
-
-       $cidinfo = '/Registry '.$this->_textstring('Adobe');
-       $cidinfo .= ' /Ordering '.$this->_textstring($font['registry']['ordering']);
-       $cidinfo .= ' /Supplement '.$font['registry']['supplement'];
-       $this->_out('/CIDSystemInfo <<'.$cidinfo.'>>');
-
-       $this->_out('/FontDescriptor '.($this->n+1).' 0 R');
-       if (isset($font['MissingWidth'])){
-               $this->_out('/DW '.$font['MissingWidth'].''); 
-       }
-       $this->_putfontwidths($font, 31);
-       $this->_out('>>');
-       $this->_out('endobj');
-
-       //Font descriptor
-       $this->_newobj();
-       $s = '<</Type /FontDescriptor /FontName /'.$font['name'];
-       foreach ($font['desc'] as $k => $v) {
-               if ($k != 'Style') {
-                       $s .= ' /'.$k.' '.$v.'';
-               }
-       }
-       $this->_out($s.'>>');
-       $this->_out('endobj');
-}
-/*-- END CJK-FONTS --*/
-
-
-
-function _putimages()
-{
-       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-       reset($this->images);
-       while(list($file,$info)=each($this->images)) {
-               $this->_newobj();
-               $this->images[$file]['n']=$this->n;
-               $this->_out('<</Type /XObject');
-               $this->_out('/Subtype /Image');
-               $this->_out('/Width '.$info['w']);
-               $this->_out('/Height '.$info['h']);
-               if (isset($info['masked'])) {
-                       $this->_out('/SMask '.($this->n - 1).' 0 R');
-               }
-               if($info['cs']=='Indexed') {
-                       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { $this->Error("PDFA1-b and PDFX/1-a files do not permit using mixed colour space (".$file.")."); }
-                       $this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
-               }
-               else {
-                       $this->_out('/ColorSpace /'.$info['cs']);
-                       if($info['cs']=='DeviceCMYK') {
-                               if ($this->PDFA && $this->restrictColorSpace!=3) { $this->Error("PDFA1-b does not permit Images using mixed colour space (".$file.")."); }
-                               if($info['type']=='jpg') { $this->_out('/Decode [1 0 1 0 1 0 1 0]'); }
-                       }
-                       else if ($info['cs']=='DeviceRGB' && ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3))) { $this->Error("PDFA1-b and PDFX/1-a files do not permit using mixed colour space (".$file.")."); }
-               }
-               $this->_out('/BitsPerComponent '.$info['bpc']);
-               if (isset($info['f']) && $info['f']) { $this->_out('/Filter /'.$info['f']); }
-               if(isset($info['parms'])) { $this->_out($info['parms']); }
-               if(isset($info['trns']) and is_array($info['trns'])) {
-                       $trns='';
-                       for($i=0;$i<count($info['trns']);$i++)
-                               $trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
-                       $this->_out('/Mask ['.$trns.']');
-               }
-               $this->_out('/Length '.strlen($info['data']).'>>');
-               $this->_putstream($info['data']);
-
-               unset($this->images[$file]['data']);
-               $this->_out('endobj');
-               //Palette
-               if($info['cs']=='Indexed') {
-                       $this->_newobj();
-                       $pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
-                       $this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
-                       $this->_putstream($pal);
-                       $this->_out('endobj');
-               }
-       }
-}
-
-function _putinfo()
-{
-       $this->_out('/Producer '.$this->_UTF16BEtextstring('mPDF '.mPDF_VERSION));
-       if(!empty($this->title))
-               $this->_out('/Title '.$this->_UTF16BEtextstring($this->title));
-       if(!empty($this->subject))
-               $this->_out('/Subject '.$this->_UTF16BEtextstring($this->subject));
-       if(!empty($this->author))
-               $this->_out('/Author '.$this->_UTF16BEtextstring($this->author));
-       if(!empty($this->keywords))
-               $this->_out('/Keywords '.$this->_UTF16BEtextstring($this->keywords));
-       if(!empty($this->creator))
-               $this->_out('/Creator '.$this->_UTF16BEtextstring($this->creator));
-
-       $z = date('O'); // +0200
-       $offset = substr($z,0,3)."'".substr($z,3,2)."'";
-       $this->_out('/CreationDate '.$this->_textstring(date('YmdHis').$offset));
-       $this->_out('/ModDate '.$this->_textstring(date('YmdHis').$offset));
-       if ($this->PDFX) {
-               $this->_out('/Trapped/False');
-               $this->_out('/GTS_PDFXVersion(PDF/X-1a:2003)');
-       }
-}
-
-function _putmetadata() {
-       $this->_newobj();
-       $this->MetadataRoot = $this->n;
-       $Producer = 'mPDF '.mPDF_VERSION;
-       $z = date('O'); // +0200
-       $offset = substr($z,0,3).':'.substr($z,3,2);
-       $CreationDate = date('Y-m-d\TH:i:s').$offset;   // 2006-03-10T10:47:26-05:00 2006-06-19T09:05:17Z
-       $uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff),
-                       mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
-                       mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)  );
-
-
-       $m = '<?xpacket begin="'.chr(239).chr(187).chr(191).'" id="W5M0MpCehiHzreSzNTczkc9d"?>'."\n";   // begin = FEFF BOM
-       $m .= ' <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1-701">'."\n";
-       $m .= '  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">'."\n";
-       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">'."\n";
-       $m .= '    <pdf:Producer>'.$Producer.'</pdf:Producer>'."\n";
-       if(!empty($this->keywords)) { $m .= '    <pdf:Keywords>'.$this->keywords.'</pdf:Keywords>'."\n"; }
-       $m .= '   </rdf:Description>'."\n";
-
-       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:xmp="http://ns.adobe.com/xap/1.0/">'."\n";
-       $m .= '    <xmp:CreateDate>'.$CreationDate.'</xmp:CreateDate>'."\n";
-       $m .= '    <xmp:ModifyDate>'.$CreationDate.'</xmp:ModifyDate>'."\n";
-       $m .= '    <xmp:MetadataDate>'.$CreationDate.'</xmp:MetadataDate>'."\n";
-       if(!empty($this->creator)) { $m .= '    <xmp:CreatorTool>'.$this->creator.'</xmp:CreatorTool>'."\n"; }
-       $m .= '   </rdf:Description>'."\n";
-
-       // DC elements
-       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:dc="http://purl.org/dc/elements/1.1/">'."\n";
-       $m .= '    <dc:format>application/pdf</dc:format>'."\n";
-       if(!empty($this->title)) {
-               $m .= '    <dc:title>
-     <rdf:Alt>
-      <rdf:li xml:lang="x-default">'.$this->title.'</rdf:li>
-     </rdf:Alt>
-    </dc:title>'."\n";
-       }
-       if(!empty($this->keywords)) {
-               $m .= '    <dc:subject>
-     <rdf:Bag>
-      <rdf:li>'.$this->keywords.'</rdf:li>
-     </rdf:Bag>
-    </dc:subject>'."\n";
-       }
-       if(!empty($this->subject)) {
-               $m .= '    <dc:description>
-     <rdf:Alt>
-      <rdf:li xml:lang="x-default">'.$this->subject.'</rdf:li>
-     </rdf:Alt>
-    </dc:description>'."\n";
-       }
-       if(!empty($this->author)) {
-               $m .= '    <dc:creator>
-     <rdf:Seq>
-      <rdf:li>'.$this->author.'</rdf:li>
-     </rdf:Seq>
-    </dc:creator>'."\n";
-       }
-       $m .= '   </rdf:Description>'."\n";
-
-
-       // This bit is specific to PDFX-1a
-       if ($this->PDFX) {
-               $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/" pdfx:Apag_PDFX_Checkup="1.3" pdfx:GTS_PDFXConformance="PDF/X-1a:2003" pdfx:GTS_PDFXVersion="PDF/X-1:2003"/>'."\n";
-       }
-
-       // This bit is specific to PDFA-1b
-       else if ($this->PDFA) {
-               $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" >'."\n";
-               $m .= '    <pdfaid:part>1</pdfaid:part>'."\n";
-               $m .= '    <pdfaid:conformance>B</pdfaid:conformance>'."\n";
-               $m .= '    <pdfaid:amd>2005</pdfaid:amd>'."\n";
-               $m .= '   </rdf:Description>'."\n";
-       }
-
-       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">'."\n";
-       $m .= '    <xmpMM:DocumentID>uuid:'.$uuid.'</xmpMM:DocumentID>'."\n";
-       $m .= '   </rdf:Description>'."\n";
-       $m .= '  </rdf:RDF>'."\n";
-       $m .= ' </x:xmpmeta>'."\n";
-       $m .= str_repeat(str_repeat(' ',100)."\n",20);  // 2-4kB whitespace padding required
-       $m .= '<?xpacket end="w"?>';    // "r" read only
-       $this->_out('<</Type/Metadata/Subtype/XML/Length '.strlen($m).'>>');
-       $this->_putstream($m);
-       $this->_out('endobj');
-}
-
-function _putoutputintent() {
-       $this->_newobj();
-       $this->OutputIntentRoot = $this->n;
-       $this->_out('<</Type /OutputIntent');
-
-       if ($this->PDFA) {
-               $this->_out('/S /GTS_PDFA1');
-               if ($this->ICCProfile) {
-                       $this->_out('/Info ('.preg_replace('/_/',' ',$this->ICCProfile).')');
-                       $this->_out('/OutputConditionIdentifier (Custom)');
-                       $this->_out('/OutputCondition ()');
-               }
-               else {
-                       $this->_out('/Info (sRGB IEC61966-2.1)');
-                       $this->_out('/OutputConditionIdentifier (sRGB IEC61966-2.1)');
-                       $this->_out('/OutputCondition ()');
-               }
-               $this->_out('/DestOutputProfile '.($this->n+1).' 0 R');
-       }
-       else if ($this->PDFX) { // always a CMYK profile
-               $this->_out('/S /GTS_PDFX');
-               if ($this->ICCProfile) {
-                       $this->_out('/Info ('.preg_replace('/_/',' ',$this->ICCProfile).')');
-                       $this->_out('/OutputConditionIdentifier (Custom)');
-                       $this->_out('/OutputCondition ()');
-                       $this->_out('/DestOutputProfile '.($this->n+1).' 0 R');
-               }
-               else {
-                       $this->_out('/Info (CGATS TR 001)');
-                       $this->_out('/OutputConditionIdentifier (CGATS TR 001)');
-                       $this->_out('/OutputCondition (CGATS TR 001 (SWOP))');
-                       $this->_out('/RegistryName (http://www.color.org)');
-               }
-       }
-       $this->_out('>>');
-       $this->_out('endobj');
-
-       if ($this->PDFX && !$this->ICCProfile) { return; } // no ICCProfile embedded
-
-       $this->_newobj();
-       if ($this->ICCProfile)
-               $s = file_get_contents(_MPDF_PATH.'iccprofiles/'.$this->ICCProfile.'.icc');
-       else 
-               $s = file_get_contents(_MPDF_PATH.'iccprofiles/sRGB_IEC61966-2-1.icc');
-       if ($this->compress) { $s = gzcompress($s); }
-       $this->_out('<<');
-       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace == 3)) { $this->_out('/N 4'); }
-       else { $this->_out('/N 3'); }
-       if ($this->compress)
-               $this->_out('/Filter /FlateDecode ');
-       $this->_out('/Length '.strlen($s).'>>');
-       $this->_putstream($s);
-       $this->_out('endobj');
-}
-
-
-function _putcatalog() {
-       $this->_out('/Type /Catalog');
-       $this->_out('/Pages 1 0 R');
-       if($this->ZoomMode=='fullpage') $this->_out('/OpenAction [3 0 R /Fit]');
-       elseif($this->ZoomMode=='fullwidth') $this->_out('/OpenAction [3 0 R /FitH null]');
-       elseif($this->ZoomMode=='real') $this->_out('/OpenAction [3 0 R /XYZ null null 1]');
-       elseif(!is_string($this->ZoomMode))     $this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']');
-       else    $this->_out('/OpenAction [3 0 R /XYZ null null null]');
-       if($this->LayoutMode=='single') $this->_out('/PageLayout /SinglePage');
-       elseif($this->LayoutMode=='continuous') $this->_out('/PageLayout /OneColumn');
-       elseif($this->LayoutMode=='twoleft')    $this->_out('/PageLayout /TwoColumnLeft');
-       elseif($this->LayoutMode=='tworight')   $this->_out('/PageLayout /TwoColumnRight');
-       elseif($this->LayoutMode=='two') {
-         if ($this->mirrorMargins) { $this->_out('/PageLayout /TwoColumnRight'); }
-         else { $this->_out('/PageLayout /TwoColumnLeft'); }
-       }
-
-/*-- BOOKMARKS --*/
-       if(count($this->BMoutlines)>0) {
-             $this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
-             $this->_out('/PageMode /UseOutlines');
-       }
-/*-- END BOOKMARKS --*/
-       if(is_int(strpos($this->DisplayPreferences,'FullScreen'))) $this->_out('/PageMode /FullScreen');
-
-       // Metadata
-       if ($this->PDFA || $this->PDFX) { 
-               $this->_out('/Metadata '.$this->MetadataRoot.' 0 R');
-       }
-       // OutputIntents
-       if ($this->PDFA || $this->PDFX || $this->ICCProfile) { 
-               $this->_out('/OutputIntents ['.$this->OutputIntentRoot.' 0 R]');
-       }
-
-/*-- FORMS --*/
-       if (count($this->form->forms)>0) {
-               $this->form->_putFormsCatalog();
-       }
-/*-- END FORMS --*/
-       if ( isset($this->js) ) {
-               $this->_out('/Names << /JavaScript '.($this->n_js).' 0 R >> ');
-       }
-
-       if($this->DisplayPreferences || $this->directionality == 'rtl' || $this->mirrorMargins) {
-               $this->_out('/ViewerPreferences<<');
-               if(is_int(strpos($this->DisplayPreferences,'HideMenubar'))) $this->_out('/HideMenubar true');
-               if(is_int(strpos($this->DisplayPreferences,'HideToolbar'))) $this->_out('/HideToolbar true');
-               if(is_int(strpos($this->DisplayPreferences,'HideWindowUI'))) $this->_out('/HideWindowUI true');
-               if(is_int(strpos($this->DisplayPreferences,'DisplayDocTitle'))) $this->_out('/DisplayDocTitle true');
-               if(is_int(strpos($this->DisplayPreferences,'CenterWindow'))) $this->_out('/CenterWindow true');
-               if(is_int(strpos($this->DisplayPreferences,'FitWindow'))) $this->_out('/FitWindow true');
-               // /PrintScaling is PDF 1.6 spec.
-               if(is_int(strpos($this->DisplayPreferences,'NoPrintScaling')) && !$this->PDFA && !$this->PDFX) 
-                       $this->_out('/PrintScaling /None');
-               if($this->directionality == 'rtl') $this->_out('/Direction /R2L');
-               // /Duplex is PDF 1.7 spec.
-               if($this->mirrorMargins && !$this->PDFA && !$this->PDFX) {
-                       // if ($this->DefOrientation=='P') $this->_out('/Duplex /DuplexFlipShortEdge');
-                       $this->_out('/Duplex /DuplexFlipLongEdge');     // PDF v1.7+
-               }
-               $this->_out('>>');
-       }
-       // mPDF 5.6.01
-       if($this->open_layer_pane && ($this->hasOC || count($this->layers)))
-               $this->_out('/PageMode /UseOC');
-
-       // mPDF 5.6.01
-       if ($this->hasOC || count($this->layers)) {
-               $p = $v = $h = $l = $loff = $lall = $as = '';   // mPDF 5.6.28
-               if ($this->hasOC) {
-                       if (($this->hasOC & 1) == 1) $p=$this->n_ocg_print.' 0 R';
-                       if (($this->hasOC & 2) == 2) $v=$this->n_ocg_view.' 0 R';
-                       if (($this->hasOC & 4) == 4) $h=$this->n_ocg_hidden.' 0 R';
-                       $as="<</Event /Print /OCGs [$p $v $h] /Category [/Print]>> <</Event /View /OCGs [$p $v $h] /Category [/View]>>";
-               }
-
-               if(count($this->layers)) {
-                       foreach($this->layers as $k=>$layer) {  // mPDF 5.6.28
-                               if (strtolower($this->layerDetails[$k]['state'])=='hidden') { $loff .= $layer['n'].' 0 R '; }
-                               else { $l .= $layer['n'].' 0 R '; }
-                               $lall .= $layer['n'].' 0 R ';
-                       }
-               }
-               $this->_out("/OCProperties <</OCGs [$p $v $h $lall] /D <</ON [$p $l] /OFF [$v $h $loff] ");     // mPDF 5.6.28
-               $this->_out("/Order [$v $p $h $lall] ");        // mPDF 5.6.28
-               if ($as) $this->_out("/AS [$as] ");
-               $this->_out(">>>>");
-
-       }
-
-}
-
-// Inactive function left for backwards compatability
-function SetUserRights($enable=true, $annots="", $form="", $signature="") {
-       // Does nothing
-}
-
-function _enddoc() {
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'10','Writing Headers & Footers'); }       // *PROGRESS-BAR*
-       $this->_puthtmlheaders();       // *HTMLHEADERS-FOOTERS*
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'20','Writing Pages'); }   // *PROGRESS-BAR*
-       // Remove references to unused fonts (usually default font)
-       foreach($this->fonts as $fk=>$font) {
-          if (!$font['used'] && ($font['type']=='TTF')) { 
-               if ($font['sip'] || $font['smp']) {
-                       foreach($font['subsetfontids'] AS $k => $fid) {
-                               foreach($this->pages AS $pn=>$page) { 
-                                       $this->pages[$pn] = preg_replace('/\s\/F'.$fid.' \d[\d.]* Tf\s/is',' ',$this->pages[$pn]); 
-                               }
-                       }
-               }
-               else { 
-                               foreach($this->pages AS $pn=>$page) { 
-                                       $this->pages[$pn] = preg_replace('/\s\/F'.$font['i'].' \d[\d.]* Tf\s/is',' ',$this->pages[$pn]); 
-                               }
-               }
-          }
-       }
-
-       // mPDF 5.6.01 - LAYERS
-       if (count($this->layers)) {
-         foreach($this->pages AS $pn=>$page) { 
-               preg_match_all('/\/OCZ-index \/ZI(\d+) BDC(.*?)(EMCZ)-index/is',$this->pages[$pn],$m1);
-               preg_match_all('/\/OCBZ-index \/ZI(\d+) BDC(.*?)(EMCBZ)-index/is',$this->pages[$pn],$m2);
-               preg_match_all('/\/OCGZ-index \/ZI(\d+) BDC(.*?)(EMCGZ)-index/is',$this->pages[$pn],$m3);
-               $m = array();
-               for ($i=0;$i<4;$i++) {
-                       $m[$i] = array_merge($m1[$i],$m2[$i],$m3[$i]);
-               }
-               if (count($m[0])) {
-                       $sortarr = array();
-                       for($i=0;$i<count($m[0]);$i++) {
-                               $key = $m[1][$i]*2;
-                               if ($m[3][$i]=='EMCZ') $key +=2;        // background first then gradient then normal
-                               else if ($m[3][$i]=='EMCGZ') $key +=1;
-                               $sortarr[$i] = $key;
-                       } 
-                       asort($sortarr);
-                       foreach($sortarr AS $i=>$k) {
-                               $this->pages[$pn] = str_replace($m[0][$i],'',$this->pages[$pn] );
-                               $this->pages[$pn] .= "\n".$m[0][$i]."\n";
-                       } 
-                       $this->pages[$pn] = preg_replace('/\/OC[BG]{0,1}Z-index \/ZI(\d+) BDC/is','/OC /ZI\\1 BDC ',$this->pages[$pn]); 
-                       $this->pages[$pn] = preg_replace('/EMC[BG]{0,1}Z-index/is','EMC',$this->pages[$pn]); 
-               }
-         }
-       }
-
-       $this->_putpages();
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'30','Writing document resources'); }      // *PROGRESS-BAR*
-
-       $this->_putresources();
-       //Info
-       $this->_newobj();
-       $this->InfoRoot = $this->n;
-       $this->_out('<<');
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'80','Writing document info'); }   // *PROGRESS-BAR*
-       $this->_putinfo();
-       $this->_out('>>');
-       $this->_out('endobj');
-
-       // METADATA
-       if ($this->PDFA || $this->PDFX) { $this->_putmetadata(); }
-       // OUTPUTINTENT
-       if ($this->PDFA || $this->PDFX || $this->ICCProfile) { $this->_putoutputintent(); }
-
-       //Catalog
-       $this->_newobj();
-       $this->_out('<<');
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'90','Writing document catalog'); }        // *PROGRESS-BAR*
-       $this->_putcatalog();
-       $this->_out('>>');
-       $this->_out('endobj');
-       //Cross-ref
-       $o=strlen($this->buffer);
-       $this->_out('xref');
-       $this->_out('0 '.($this->n+1));
-       $this->_out('0000000000 65535 f ');
-       for($i=1; $i <= $this->n ; $i++)
-               $this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
-       //Trailer
-       $this->_out('trailer');
-       $this->_out('<<');
-       $this->_puttrailer();
-       $this->_out('>>');
-       $this->_out('startxref');
-       $this->_out($o);
-
-       $this->buffer .= '%%EOF';
-       $this->state=3;
-/*-- IMPORTS --*/
-
-       if ($this->enableImports && count($this->parsers) > 0) {
-               foreach ($this->parsers as $k => $_){
-                       $this->parsers[$k]->closeFile();
-                       $this->parsers[$k] = null;
-                       unset($this->parsers[$k]);
-               }
-       }
-/*-- END IMPORTS --*/
-}
-
-function _beginpage($orientation,$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='') {
-       if (!($pagesel && $this->page==1 && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->tMargin)))) { 
-               $this->page++;
-               $this->pages[$this->page]='';
-       }
-       $this->state=2;
-       $resetHTMLHeadersrequired = false;
-
-       if ($newformat) { $this->_setPageSize($newformat, $orientation); }
-/*-- CSS-PAGE --*/
-       // Paged media (page-box)
-
-       if ($pagesel || (isset($this->page_box['using']) && $this->page_box['using'])) {
-               if ($pagesel || $this->page==1) { $first = true; }
-               else { $first = false; }
-               if ($this->mirrorMargins && ($this->page % 2==0)) { $oddEven = 'E'; }
-               else { $oddEven = 'O'; }
-               if ($pagesel) { $psel = $pagesel; }
-               else if ($this->page_box['current']) { $psel = $this->page_box['current']; }
-               else { $psel = ''; }
-               list($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS($psel, $first, $oddEven);
-               if ($this->mirrorMargins && ($this->page % 2==0)) { 
-                       if ($hname) { $ehvalue = 1; $ehname = $hname; } else { $ehvalue = -1; }
-                       if ($fname) { $efvalue = 1; $efname = $fname; } else { $efvalue = -1; }
-               }
-               else { 
-                       if ($hname) { $ohvalue = 1; $ohname = $hname; } else { $ohvalue = -1; }
-                       if ($fname) { $ofvalue = 1; $ofname = $fname; } else { $ofvalue = -1; }
-               }
-               if ($resetpagenum || $pagenumstyle || $suppress) {
-                       $this->PageNumSubstitutions[] = array('from'=>($this->page), 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
-               }
-               // PAGED MEDIA - CROP / CROSS MARKS from @PAGE
-               $this->show_marks = $marks;
-
-               // Background color
-               if (isset($bg['BACKGROUND-COLOR'])) {
-                       $cor = $this->ConvertColor($bg['BACKGROUND-COLOR']);
-                       if ($cor) { 
-                               $this->bodyBackgroundColor = $cor; 
-                       }
-               }
-               else { $this->bodyBackgroundColor = false; }
-
-/*-- BACKGROUNDS --*/
-               if (isset($bg['BACKGROUND-GRADIENT'])) { 
-                       $this->bodyBackgroundGradient = $bg['BACKGROUND-GRADIENT'];
-               }
-               else { $this->bodyBackgroundGradient = false; }
-
-               // Tiling Patterns
-               if (isset($bg['BACKGROUND-IMAGE']) && $bg['BACKGROUND-IMAGE']) { 
-                       $ret = $this->SetBackground($bg, $this->pgwidth);
-                       if ($ret) { $this->bodyBackgroundImage = $ret; }
-               }
-               else { $this->bodyBackgroundImage = false; }
-/*-- END BACKGROUNDS --*/
-
-               $this->page_box['current'] = $psel;
-               $this->page_box['using'] = true;
-       }
-/*-- END CSS-PAGE --*/
-
-       //Page orientation
-       if(!$orientation)
-               $orientation=$this->DefOrientation;
-       else {
-               $orientation=strtoupper(substr($orientation,0,1));
-               if($orientation!=$this->DefOrientation)
-                       $this->OrientationChanges[$this->page]=true;
-       }
-       if($orientation!=$this->CurOrientation || $newformat) {
-
-               //Change orientation
-               if($orientation=='P') {
-                       $this->wPt=$this->fwPt;
-                       $this->hPt=$this->fhPt;
-                       $this->w=$this->fw;
-                       $this->h=$this->fh;
-                  if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P') {
-                       $this->tMargin = $this->orig_tMargin;
-                       $this->bMargin = $this->orig_bMargin;
-                       $this->DeflMargin = $this->orig_lMargin;
-                       $this->DefrMargin = $this->orig_rMargin;
-                       $this->margin_header = $this->orig_hMargin;
-                       $this->margin_footer = $this->orig_fMargin;
-                  }
-                  else { $resetHTMLHeadersrequired = true; }   // *HTMLHEADERS-FOOTERS*
-               }
-               else {
-                       $this->wPt=$this->fhPt;
-                       $this->hPt=$this->fwPt;
-                       $this->w=$this->fh;
-                       $this->h=$this->fw;
-                  if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P') {
-                       $this->tMargin = $this->orig_lMargin;
-                       $this->bMargin = $this->orig_rMargin;
-                       $this->DeflMargin = $this->orig_bMargin;
-                       $this->DefrMargin = $this->orig_tMargin;
-                       $this->margin_header = $this->orig_hMargin;
-                       $this->margin_footer = $this->orig_fMargin;
-                  }
-                  else { $resetHTMLHeadersrequired = true; }   // *HTMLHEADERS-FOOTERS*
-
-               }
-               $this->CurOrientation=$orientation;
-               $this->ResetMargins();
-               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-               $this->PageBreakTrigger=$this->h-$this->bMargin;
-       }
-
-       $this->pageDim[$this->page]['w']=$this->w ;
-       $this->pageDim[$this->page]['h']=$this->h ;
-
-       $this->pageDim[$this->page]['outer_width_LR'] = isset($this->page_box['outer_width_LR']) ? $this->page_box['outer_width_LR'] : 0; 
-       $this->pageDim[$this->page]['outer_width_TB'] = isset($this->page_box['outer_width_TB']) ? $this->page_box['outer_width_TB'] : 0; 
-       if (!isset($this->page_box['outer_width_LR']) && !isset($this->page_box['outer_width_TB'])) {
-               $this->pageDim[$this->page]['bleedMargin'] = 0;
-       }
-       else if ($this->bleedMargin <= $this->page_box['outer_width_LR'] && $this->bleedMargin <= $this->page_box['outer_width_TB']) {
-               $this->pageDim[$this->page]['bleedMargin'] = $this->bleedMargin;
-       }
-       else {
-               $this->pageDim[$this->page]['bleedMargin'] = min($this->page_box['outer_width_LR'], $this->page_box['outer_width_TB'])-0.01;
-       }
-
-       // If Page Margins are re-defined
-       // strlen()>0 is used to pick up (integer) 0, (string) '0', or set value
-       if ((strlen($mgl)>0 && $this->DeflMargin != $mgl) || (strlen($mgr)>0 && $this->DefrMargin != $mgr) || (strlen($mgt)>0 && $this->tMargin != $mgt) || (strlen($mgb)>0 && $this->bMargin != $mgb) || (strlen($mgh)>0 && $this->margin_header!=$mgh) || (strlen($mgf)>0 && $this->margin_footer!=$mgf)) {
-               if (strlen($mgl)>0)  $this->DeflMargin = $mgl;
-               if (strlen($mgr)>0)  $this->DefrMargin = $mgr;
-               if (strlen($mgt)>0)  $this->tMargin = $mgt;
-               if (strlen($mgb)>0)  $this->bMargin = $mgb;
-               if (strlen($mgh)>0)  $this->margin_header=$mgh;
-               if (strlen($mgf)>0)  $this->margin_footer=$mgf;
-               $this->ResetMargins();
-               $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
-               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
-       }
-
-       $this->ResetMargins();
-       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-       $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
-
-       // Reset column top margin
-       $this->y0 = $this->tMargin;
-
-       $this->x=$this->lMargin;
-       $this->y=$this->tMargin;
-       $this->FontFamily='';
-
-       // HEADERS AND FOOTERS
-       if ($ohvalue<0 || strtoupper($ohvalue)=='OFF') { 
-               $this->HTMLHeader = ''; 
-               $this->headerDetails['odd'] = array(); 
-               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
-       }
-       else if ($ohname && $ohvalue>0) {
-/*-- HTMLHEADERS-FOOTERS --*/
-          if (preg_match('/^html_(.*)$/i',$ohname,$n)) {
-               if (isset($this->pageHTMLheaders[$n[1]])) { $this->HTMLHeader = $this->pageHTMLheaders[$n[1]]; }
-               else { $this->HTMLHeader = ''; }
-               $this->headerDetails['odd'] = array(); 
-               $resetHTMLHeadersrequired = true;
-          }
-          else {
-/*-- END HTMLHEADERS-FOOTERS --*/
-               if (isset($this->pageheaders[$ohname])) { $this->headerDetails['odd'] = $this->pageheaders[$ohname]; } 
-               else if ($ohname!='_default') { $this->headerDetails['odd'] = array(); }
-               $this->HTMLHeader = ''; 
-/*-- HTMLHEADERS-FOOTERS --*/
-               $resetHTMLHeadersrequired = false;
-          }
-/*-- END HTMLHEADERS-FOOTERS --*/
-       }
-
-       if ($ehvalue<0 || strtoupper($ehvalue)=='OFF') { 
-               $this->HTMLHeaderE = ''; 
-               $this->headerDetails['even'] = array(); 
-               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
-       }
-       else if ($ehname && $ehvalue>0) {
-/*-- HTMLHEADERS-FOOTERS --*/
-          if (preg_match('/^html_(.*)$/i',$ehname,$n)) {
-               if (isset($this->pageHTMLheaders[$n[1]])) { $this->HTMLHeaderE = $this->pageHTMLheaders[$n[1]]; } 
-               else { $this->HTMLHeaderE = ''; }
-               $this->headerDetails['even'] = array(); 
-               $resetHTMLHeadersrequired = true;
-          }
-          else {
-/*-- END HTMLHEADERS-FOOTERS --*/
-               if (isset($this->pageheaders[$ehname])) { $this->headerDetails['even'] = $this->pageheaders[$ehname]; }
-               else if ($ehname!='_default') { $this->headerDetails['even'] = array(); }
-               $this->HTMLHeaderE = ''; 
-/*-- HTMLHEADERS-FOOTERS --*/
-               $resetHTMLHeadersrequired = false;
-          }
-/*-- END HTMLHEADERS-FOOTERS --*/
-       }
-
-       if ($ofvalue<0 || strtoupper($ofvalue)=='OFF') { 
-               $this->HTMLFooter = ''; 
-               $this->footerDetails['odd'] = array(); 
-               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
-       }
-       else if ($ofname && $ofvalue>0) {
-/*-- HTMLHEADERS-FOOTERS --*/
-          if (preg_match('/^html_(.*)$/i',$ofname,$n)) {
-               if (isset($this->pageHTMLfooters[$n[1]])) { $this->HTMLFooter = $this->pageHTMLfooters[$n[1]]; }
-               else { $this->HTMLFooter = ''; }
-               $this->footerDetails['odd'] = array(); 
-               $resetHTMLHeadersrequired = true;
-          }
-          else {
-/*-- END HTMLHEADERS-FOOTERS --*/
-               if (isset($this->pagefooters[$ofname])) { $this->footerDetails['odd'] = $this->pagefooters[$ofname]; }
-               else if ($ofname!='_default') { $this->footerDetails['odd'] = array(); }
-               $this->HTMLFooter = ''; 
-/*-- HTMLHEADERS-FOOTERS --*/
-               $resetHTMLHeadersrequired = true;
-          }
-/*-- END HTMLHEADERS-FOOTERS --*/
-       }
-
-       if ($efvalue<0 || strtoupper($efvalue)=='OFF') { 
-               $this->HTMLFooterE = ''; 
-               $this->footerDetails['even'] = array(); 
-               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
-       }
-       else if ($efname && $efvalue>0) {
-/*-- HTMLHEADERS-FOOTERS --*/
-          if (preg_match('/^html_(.*)$/i',$efname,$n)) {
-               if (isset($this->pageHTMLfooters[$n[1]])) { $this->HTMLFooterE = $this->pageHTMLfooters[$n[1]]; } 
-               else { $this->HTMLFooterE = ''; }
-               $this->footerDetails['even'] = array(); 
-               $resetHTMLHeadersrequired = true;
-          }
-          else {
-/*-- END HTMLHEADERS-FOOTERS --*/
-               if (isset($this->pagefooters[$efname])) { $this->footerDetails['even'] = $this->pagefooters[$efname]; } 
-               else if ($efname!='_default') { $this->footerDetails['even'] = array(); }
-               $this->HTMLFooterE = ''; 
-/*-- HTMLHEADERS-FOOTERS --*/
-               $resetHTMLHeadersrequired = true;
-          }
-/*-- END HTMLHEADERS-FOOTERS --*/
-       }
-/*-- HTMLHEADERS-FOOTERS --*/
-       if ($resetHTMLHeadersrequired) {
-               $this->SetHTMLHeader($this->HTMLHeader );
-               $this->SetHTMLHeader($this->HTMLHeaderE ,'E');
-               $this->SetHTMLFooter($this->HTMLFooter );
-               $this->SetHTMLFooter($this->HTMLFooterE ,'E');
-       }
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-
-       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-               $this->_setAutoHeaderHeight($this->headerDetails['even'], $this->HTMLHeaderE);
-               $this->_setAutoFooterHeight($this->footerDetails['even'], $this->HTMLFooterE);
-       }
-       else {  // ODD or DEFAULT
-               $this->_setAutoHeaderHeight($this->headerDetails['odd'], $this->HTMLHeader);
-               $this->_setAutoFooterHeight($this->footerDetails['odd'], $this->HTMLFooter);
-       }
-       // Reset column top margin
-       $this->y0 = $this->tMargin;
-
-       $this->x=$this->lMargin;
-       $this->y=$this->tMargin;
-}
-
-
-
-function _setAutoHeaderHeight(&$det, &$htmlh) {
-  if ($this->setAutoTopMargin=='pad') {
-       if ($htmlh['h']) { $h = $htmlh['h']; }
-       else if ($det) { $h = $this->_getHFHeight($det,'H'); }
-       else { $h = 0; }
-       $this->tMargin = $this->margin_header + $h + $this->orig_tMargin;
-  }
-  else if ($this->setAutoTopMargin=='stretch') {
-       if ($htmlh['h']) { $h = $htmlh['h']; }
-       else if ($det) { $h = $this->_getHFHeight($det,'H'); }
-       else { $h = 0; }
-       $this->tMargin = max($this->orig_tMargin, $this->margin_header + $h + $this->autoMarginPadding);
-  }
-}
-
-
-function _setAutoFooterHeight(&$det, &$htmlf) {
-  if ($this->setAutoBottomMargin=='pad') {
-       if ($htmlf['h']) { $h = $htmlf['h']; }
-       else if ($det) { $h = $this->_getHFHeight($det,'F'); }
-       else { $h = 0; }
-       $this->bMargin = $this->margin_footer + $h + $this->orig_bMargin;
-       $this->PageBreakTrigger=$this->h-$this->bMargin ;
-  }
-  else if ($this->setAutoBottomMargin=='stretch') {
-       if ($htmlf['h']) { $h = $htmlf['h']; }
-       else if ($det) { $h = $this->_getHFHeight($det,'F'); }
-       else { $h = 0; }
-       $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $h + $this->autoMarginPadding);
-       $this->PageBreakTrigger=$this->h-$this->bMargin ;
-  }
-}
-
-function _getHFHeight(&$det,$end) {
-       $h = 0;
-       if(count($det)) {
-               foreach(array('L','C','R') AS $pos) {
-                 if (isset($det[$pos]['content']) && $det[$pos]['content']) {
-                       if (isset($det[$pos]['font-size']) && $det[$pos]['font-size']) { $hfsz = $det[$pos]['font-size']; }
-                       else { $hfsz = $this->default_font_size; }
-                       $h = max($h,$hfsz/_MPDFK);
-                 }
-               }
-               if ($det['line'] && $end=='H') { $h += $h/_MPDFK*$this->header_line_spacing; }
-               else if ($det['line'] && $end=='F') { $h += $h/_MPDFK*$this->footer_line_spacing; }
-       }
-       return $h;
-}
-
-
-function _endpage() {
-/*-- CSS-IMAGE-FLOAT --*/
-       $this->printfloatbuffer();
-/*-- END CSS-IMAGE-FLOAT --*/
-
-       if($this->visibility!='visible')
-               $this->SetVisibility('visible');
-       $this->EndLayer();      // mPDF 5.6.01
-       //End of page contents
-       $this->state=1;
-}
-
-function _newobj($obj_id=false,$onlynewobj=false) {
-               if (!$obj_id) {
-                       $obj_id = ++$this->n;
-               }
-               //Begin a new object
-               if (!$onlynewobj) {
-                       $this->offsets[$obj_id] = strlen($this->buffer);
-                       $this->_out($obj_id.' 0 obj');
-                       $this->_current_obj_id = $obj_id; // for later use with encryption
-               }
-}
-
-function _dounderline($x,$y,$txt) {
-       // Now print line exactly where $y secifies - called from Text() and Cell() - adjust  position there
-       // WORD SPACING
-      $w =($this->GetStringWidth($txt)*_MPDFK) + ($this->charspacing * mb_strlen( $txt, $this->mb_enc )) 
-                + ( $this->ws * mb_substr_count( $txt, ' ', $this->mb_enc ));
-       //Draw a line
-       return sprintf('%.3F %.3F m %.3F %.3F l S',$x*_MPDFK,($this->h-$y)*_MPDFK,($x*_MPDFK)+$w,($this->h-$y)*_MPDFK);
-}
-
-
-function _imageError($file, $firsttime, $msg) {
-       // Save re-trying image URL's which have already failed
-       $this->failedimages[$file] = true;
-       if ($firsttime && ($this->showImageErrors || $this->debug)) {
-                       $this->Error("IMAGE Error (".$file."): ".$msg);
-       }
-       return false;
-}
-
-
-function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=false) { 
-       // firsttime i.e. whether to add to this->images - use false when calling iteratively
-       // Image Data passed directly as var:varname
-       if (preg_match('/var:\s*(.*)/',$file, $v)) { 
-               $data = $this->$v[1];
-               $file = md5($data);
-       }
-       // mPDF 5.5.13
-       if (preg_match('/data:image\/(gif|jpeg|png);base64,(.*)/',$file, $v)) { 
-               $type = $v[1];
-               $data = base64_decode($v[2]);
-               $file = md5($data);
-       }
-
-       // mPDF 5.6.02
-       if ($firsttime && $file && substr($file,0,5)!='data:') { $file = urlencode_part($file); }
-       if ($firsttime && $orig_srcpath && substr($orig_srcpath,0,5)!='data:') { $orig_srcpath = urlencode_part($orig_srcpath); }
-
-       $ppUx = 0;
-       if ($orig_srcpath && isset($this->images[$orig_srcpath])) { $file=$orig_srcpath; return $this->images[$orig_srcpath]; }
-       if (isset($this->images[$file])) { return $this->images[$file]; }
-       else if ($orig_srcpath && isset($this->formobjects[$orig_srcpath])) { $file=$orig_srcpath; return $this->formobjects[$file]; }
-       else if (isset($this->formobjects[$file])) { return $this->formobjects[$file]; }
-       // Save re-trying image URL's which have already failed
-       else if ($firsttime && isset($this->failedimages[$file])) { return $this->_imageError($file, $firsttime, ''); } 
-       if (empty($data)) {
-               $type = '';
-               $data = '';
-
-               if ($orig_srcpath && $this->basepathIsLocal && $check = @fopen($orig_srcpath,"rb")) {
-                       fclose($check); 
-                       $file=$orig_srcpath;
-                       $data = file_get_contents($file);
-                       $type = $this->_imageTypeFromString($data);
-               }
-               if (!$data && $check = @fopen($file,"rb")) {
-                       fclose($check); 
-                       $data = file_get_contents($file);
-                       $type = $this->_imageTypeFromString($data);
-               }
-               if ((!$data || !$type) && !ini_get('allow_url_fopen') ) {       // only worth trying if remote file and !ini_get('allow_url_fopen')
-                       $this->file_get_contents_by_socket($file, $data);       // needs full url?? even on local (never needed for local)
-                       if ($data) { $type = $this->_imageTypeFromString($data); }
-               }
-               if ((!$data || !$type) && !ini_get('allow_url_fopen') && function_exists("curl_init")) {
-                       $this->file_get_contents_by_curl($file, $data);         // needs full url?? even on local (never needed for local)
-                       if ($data) { $type = $this->_imageTypeFromString($data); }
-               }
-
-       }
-       if (!$data) { return $this->_imageError($file, $firsttime, 'Could not find image file'); }
-       if (empty($type)) { $type = $this->_imageTypeFromString($data); }       
-       if (($type == 'wmf' || $type == 'svg') && !$allowvector) { return $this->_imageError($file, $firsttime, 'WMF or SVG image file not supported in this context'); }
-
-       // SVG
-       if ($type == 'svg') {
-               if (!class_exists('SVG', false)) { include(_MPDF_PATH .'classes/svg.php'); }
-               $svg = new SVG($this);
-               $family=$this->FontFamily;
-               $style=$this->FontStyle;
-               $size=$this->FontSizePt;
-               $info = $svg->ImageSVG($data);
-               //Restore font
-               if($family) $this->SetFont($family,$style,$size,false);
-               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing SVG file'); }
-               $info['type']='svg';
-               $info['i']=count($this->formobjects)+1;
-               $this->formobjects[$file]=$info;
-               return $info;
-       }
-
-       // JPEG
-       if ($type == 'jpeg' || $type == 'jpg') {
-               $hdr = $this->_jpgHeaderFromString($data);
-               if (!$hdr) { return $this->_imageError($file, $firsttime, 'Error parsing JPG header'); }
-               $a = $this->_jpgDataFromHeader($hdr);
-               $j = strpos($data,'JFIF');
-               if ($j) { 
-                       //Read resolution
-                       $unitSp=ord(substr($data,($j+7),1));
-                       if ($unitSp > 0) {
-                               $ppUx=$this->_twobytes2int(substr($data,($j+8),2));     // horizontal pixels per meter, usually set to zero
-                               if ($unitSp == 2) {     // = dots per cm (if == 1 set as dpi)
-                                       $ppUx=round($ppUx/10 *25.4);
-                               }
-                       }
-               }
-               if ($a[2] == 'DeviceCMYK' && (($this->PDFA && $this->restrictColorSpace!=3) || $this->restrictColorSpace==2)) {
-                       // convert to RGB image
-                       if (!function_exists("gd_info")) { $this->Error("JPG image may not use CMYK color space (".$file.")."); }
-                       if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "JPG image may not use CMYK color space - ".$file." - (Image converted to RGB. NB This will alter the colour profile of the image.)"; }
-                       $im = @imagecreatefromstring($data);
-                       if ($im) {
-                               $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
-                               imageinterlace($im, false);
-                               $check = @imagepng($im, $tempfile);
-                               if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse JPG(CMYK) image'); }
-                               $info = $this->_getImage($tempfile, false);
-                               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse JPG(CMYK) image'); }
-                               imagedestroy($im);
-                               unlink($tempfile);
-                               $info['type']='jpg';
-                               if ($firsttime) {
-                                       $info['i']=count($this->images)+1;
-                                       $this->images[$file]=$info;
-                               }
-                               return $info;
-                       }
-                       else { return $this->_imageError($file, $firsttime, 'Error creating GD image file from JPG(CMYK) image'); }
-               }
-               else if ($a[2] == 'DeviceRGB' && ($this->PDFX || $this->restrictColorSpace==3)) {
-                       // Convert to CMYK image stream - nominally returned as type='png'
-                       $info = $this->_convImage($data, $a[2], 'DeviceCMYK', $a[0], $a[1], $ppUx, false);
-                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "JPG image may not use RGB color space - ".$file." - (Image converted to CMYK. NB This will alter the colour profile of the image.)"; }
-               }
-               else if (($a[2] == 'DeviceRGB' || $a[2] == 'DeviceCMYK') && $this->restrictColorSpace==1) {
-                       // Convert to Grayscale image stream - nominally returned as type='png'
-                       $info = $this->_convImage($data, $a[2], 'DeviceGray', $a[0], $a[1], $ppUx, false);
-               }
-               else {
-                       $info = array('w'=>$a[0],'h'=>$a[1],'cs'=>$a[2],'bpc'=>$a[3],'f'=>'DCTDecode','data'=>$data, 'type'=>'jpg');
-                       if ($ppUx) { $info['set-dpi'] = $ppUx; }
-               }
-               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing or converting JPG image'); }
-
-               if ($firsttime) {
-                       $info['i']=count($this->images)+1;
-                       $this->images[$file]=$info;
-               }
-               return $info;
-       }
-
-       // PNG
-       else if ($type == 'png') {
-               //Check signature
-               if(substr($data,0,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { 
-                       return $this->_imageError($file, $firsttime, 'Error parsing PNG identifier'); 
-               }
-               //Read header chunk
-               if(substr($data,12,4)!='IHDR') { 
-                       return $this->_imageError($file, $firsttime, 'Incorrect PNG file (no IHDR block found)'); 
-               }
-
-               $w=$this->_fourbytes2int(substr($data,16,4));
-               $h=$this->_fourbytes2int(substr($data,20,4));
-               $bpc=ord(substr($data,24,1));
-               $errpng = false;
-               $pngalpha = false; 
-               if($bpc>8) { $errpng = 'not 8-bit depth'; }
-               $ct=ord(substr($data,25,1));
-               if($ct==0) { $colspace='DeviceGray'; }
-               elseif($ct==2) { $colspace='DeviceRGB'; }
-               elseif($ct==3) { $colspace='Indexed'; }
-               elseif($ct==4) { $colspace='DeviceGray';  $errpng = 'alpha channel'; $pngalpha = true; }
-               else { $colspace='DeviceRGB'; $errpng = 'alpha channel'; $pngalpha = true; } 
-               if(ord(substr($data,26,1))!=0) { $errpng = 'compression method'; }
-               if(ord(substr($data,27,1))!=0) { $errpng = 'filter method'; }
-               if(ord(substr($data,28,1))!=0) { $errpng = 'interlaced file'; }
-               $j = strpos($data,'pHYs');
-               if ($j) { 
-                       //Read resolution
-                       $unitSp=ord(substr($data,($j+12),1));
-                       if ($unitSp == 1) {
-                               $ppUx=$this->_fourbytes2int(substr($data,($j+4),4));    // horizontal pixels per meter, usually set to zero
-                               $ppUx=round($ppUx/1000 *25.4);
-                       }
-               }
-               if (($colspace == 'DeviceRGB' || $colspace == 'Indexed') && ($this->PDFX || $this->restrictColorSpace==3)) {
-                       // Convert to CMYK image stream - nominally returned as type='png'
-                       $info = $this->_convImage($data, $colspace, 'DeviceCMYK', $w, $h, $ppUx, $pngalpha);
-                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "PNG image may not use RGB color space - ".$file." - (Image converted to CMYK. NB This will alter the colour profile of the image.)"; }
-               }
-               else if (($colspace == 'DeviceRGB' || $colspace == 'Indexed') && $this->restrictColorSpace==1) {
-                       // Convert to Grayscale image stream - nominally returned as type='png'
-                       $info = $this->_convImage($data, $colspace, 'DeviceGray', $w, $h, $ppUx, $pngalpha);
-               }
-               else if (($this->PDFA || $this->PDFX) && $pngalpha) {
-                       // Remove alpha channel
-                       if ($this->restrictColorSpace==1) {     // Grayscale
-                               $info = $this->_convImage($data, $colspace, 'DeviceGray', $w, $h, $ppUx, $pngalpha);
-                       }
-                       else if ($this->restrictColorSpace==3) {        // CMYK
-                               $info = $this->_convImage($data, $colspace, 'DeviceCMYK', $w, $h, $ppUx, $pngalpha);
-                       }
-                       else if ($this->PDFA ) {        // RGB
-                               $info = $this->_convImage($data, $colspace, 'DeviceRGB', $w, $h, $ppUx, $pngalpha);
-                       }
-                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Transparency (alpha channel) not permitted in PDFA or PDFX files - ".$file." - (Image converted to one without transparency.)"; }
-               }
-               else if ($errpng || $pngalpha) {
-                       if (function_exists('gd_info')) { $gd = gd_info(); }
-                       else {$gd = array(); }
-                       if (!isset($gd['PNG Support'])) { return $this->_imageError($file, $firsttime, 'GD library required for PNG image ('.$errpng.')'); }
-                       $im = imagecreatefromstring($data);
-                       if (!$im) { return $this->_imageError($file, $firsttime, 'Error creating GD image from PNG file ('.$errpng.')'); }
-                       $w = imagesx($im);
-                       $h = imagesy($im);
-                       if ($im) {
-                          $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
-                          // Alpha channel set
-                          if ($pngalpha) {
-                               if ($this->PDFA) { $this->Error("PDFA1-b does not permit images with alpha channel transparency (".$file.")."); }
-                               $imgalpha = imagecreate($w, $h);
-                               // generate gray scale pallete
-                               for ($c = 0; $c < 256; ++$c) { ImageColorAllocate($imgalpha, $c, $c, $c); }
-                               // extract alpha channel
-                               for ($xpx = 0; $xpx < $w; ++$xpx) {
-                                       for ($ypx = 0; $ypx < $h; ++$ypx) {
-                                               $alpha = (imagecolorat($im, $xpx, $ypx) & 0x7F000000) >> 24;
-                                               // mPDF 5.7.2
-                                               if ($alpha < 127) {
-                                                       imagesetpixel($imgalpha, $xpx, $ypx, (255-($alpha * 2)));
-                                               }
-                                       }
-                               }
-                               // create temp alpha file
-                               $tempfile_alpha = _MPDF_TEMP_PATH.'_tempMskPNG'.md5($file).RAND(1,10000).'.png';
-                               if (!is_writable(_MPDF_TEMP_PATH)) {    // mPDF 5.7.2
-                                       ob_start(); 
-                                       $check = @imagepng($imgalpha);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
-                                       imagedestroy($imgalpha);
-                                       $this->_tempimg = ob_get_contents();
-                                       $this->_tempimglnk = 'var:_tempimg';
-                                       ob_end_clean();
-                                       // extract image without alpha channel
-                                       $imgplain = imagecreatetruecolor($w, $h);
-                                       imagealphablending( $imgplain, false ); // mPDF 5.7.2
-                                       imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h);
-                                       // create temp image file
-                                       $minfo = $this->_getImage($this->_tempimglnk, false);
-                                       if (!$minfo) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
-                                       ob_start(); 
-                                       $check = @imagepng($imgplain);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
-                                       $this->_tempimg = ob_get_contents();
-                                       $this->_tempimglnk = 'var:_tempimg';
-                                       ob_end_clean();
-                                       $info = $this->_getImage($this->_tempimglnk, false);
-                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
-                                       imagedestroy($imgplain);
-                                       $imgmask = count($this->images)+1;
-                                       $minfo['cs'] = 'DeviceGray';
-                                       $minfo['i']=$imgmask ;
-                                       $this->images[$tempfile_alpha] = $minfo;
-
-                               }
-                               else {
-                                       $check = @imagepng($imgalpha, $tempfile_alpha);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile_alpha.') parsing PNG image with alpha channel ('.$errpng.')'); }
-                                       imagedestroy($imgalpha);
-
-                                       // extract image without alpha channel
-                                       $imgplain = imagecreatetruecolor($w, $h);
-                                       imagealphablending( $imgplain, false ); // mPDF 5.7.2
-                                       imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h);
-
-                                       // create temp image file
-                                       $check = @imagepng($imgplain, $tempfile);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile.') parsing PNG image with alpha channel ('.$errpng.')'); }
-                                       imagedestroy($imgplain);
-                                       // embed mask image
-                                       $minfo = $this->_getImage($tempfile_alpha, false);
-                                       unlink($tempfile_alpha);
-                                       if (!$minfo) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile_alpha.') created with GD library to parse PNG image'); }
-                                       $imgmask = count($this->images)+1;
-                                       $minfo['cs'] = 'DeviceGray';
-                                       $minfo['i']=$imgmask ;
-                                       $this->images[$tempfile_alpha] = $minfo;
-                                       // embed image, masked with previously embedded mask
-                                       $info = $this->_getImage($tempfile, false);
-                                       unlink($tempfile);
-                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse PNG image'); }
-
-                               }
-                               $info['masked'] = $imgmask;
-                               if ($ppUx) { $info['set-dpi'] = $ppUx; }
-                               $info['type']='png';
-                               if ($firsttime) {
-                                       $info['i']=count($this->images)+1;
-                                       $this->images[$file]=$info;
-                               }
-                               return $info;
-                          }
-                          else {       // No alpha/transparency set
-                               imagealphablending($im, false);
-                               imagesavealpha($im, false); 
-                               imageinterlace($im, false);
-                               if (!is_writable($tempfile)) { 
-                                       ob_start(); 
-                                       $check = @imagepng($im);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
-                                       $this->_tempimg = ob_get_contents();
-                                       $this->_tempimglnk = 'var:_tempimg';
-                                       ob_end_clean();
-                                       $info = $this->_getImage($this->_tempimglnk, false);
-                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
-                                       imagedestroy($im);
-                               }
-                               else {
-                                       $check = @imagepng($im, $tempfile );
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile.') parsing PNG image ('.$errpng.')'); }
-                                       imagedestroy($im);
-                                       $info = $this->_getImage($tempfile, false) ;
-                                       unlink($tempfile ); 
-                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse PNG image'); }
-                               }
-                               if ($ppUx) { $info['set-dpi'] = $ppUx; }
-                               $info['type']='png';
-                               if ($firsttime) {
-                                       $info['i']=count($this->images)+1;
-                                       $this->images[$file]=$info;
-                               }
-                               return $info;
-                          }
-                       }
-               }
-
-               else {
-                       $parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
-                       //Scan chunks looking for palette, transparency and image data
-                       $pal='';
-                       $trns='';
-                       $pngdata='';
-                       $p = 33;
-                       do {
-                               $n=$this->_fourbytes2int(substr($data,$p,4));   $p += 4;
-                               $type=substr($data,$p,4);       $p += 4;
-                               if($type=='PLTE') {
-                                       //Read palette
-                                       $pal=substr($data,$p,$n);       $p += $n;
-                                       $p += 4;
-                               }
-                               elseif($type=='tRNS') {
-                                       //Read transparency info
-                                       $t=substr($data,$p,$n); $p += $n;
-                                       if($ct==0) $trns=array(ord(substr($t,1,1)));
-                                       elseif($ct==2) $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
-                                       else
-                                       {
-                                               $pos=strpos($t,chr(0));
-                                               if(is_int($pos)) $trns=array($pos);
-                                       }
-                                       $p += 4;
-                               }
-                               elseif($type=='IDAT') {
-                                       $pngdata.=substr($data,$p,$n);  $p += $n;
-                                       $p += 4;
-                               }
-                               elseif($type=='IEND') { break; }
-                               else if (preg_match('/[a-zA-Z]{4}/',$type)) { $p += $n+4; }
-                               else { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data'); }
-                       }
-                       while($n);
-                       if (!$pngdata) { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data - no IDAT data found'); }
-                       if($colspace=='Indexed' and empty($pal)) { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data - missing colour palette'); }
-                       $info = array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$pngdata);
-                       $info['type']='png';
-                       if ($ppUx) { $info['set-dpi'] = $ppUx; }
-               }
-
-               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing or converting PNG image'); }
-
-               if ($firsttime) {
-                       $info['i']=count($this->images)+1;
-                       $this->images[$file]=$info;
-               }
-               return $info;
-       }
-
-       // GIF
-       else if ($type == 'gif') {
-       if (function_exists('gd_info')) { $gd = gd_info(); }
-               else {$gd = array(); }
-               if (isset($gd['GIF Read Support']) && $gd['GIF Read Support']) {
-                       $im = @imagecreatefromstring($data);
-                       if ($im) {
-                               $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
-                               imagealphablending($im, false);
-                               imagesavealpha($im, false); 
-                               imageinterlace($im, false);
-                               if (!is_writable($tempfile)) { 
-                                       ob_start(); 
-                                       $check = @imagepng($im);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse GIF image'); }
-                                       $this->_tempimg = ob_get_contents();
-                                       $this->_tempimglnk = 'var:_tempimg';
-                                       ob_end_clean();
-                                       $info = $this->_getImage($this->_tempimglnk, false);
-                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse GIF image'); }
-                                       imagedestroy($im);
-                               }
-                               else {
-                                       $check = @imagepng($im, $tempfile);
-                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse GIF image'); }
-                                       $info = $this->_getImage($tempfile, false);
-                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse GIF image'); }
-                                       imagedestroy($im);
-                                       unlink($tempfile);
-                               }
-                               $info['type']='gif';
-                               if ($firsttime) {
-                                       $info['i']=count($this->images)+1;
-                                       $this->images[$file]=$info;
-                               }
-                               return $info;
-                       }
-                       else { return $this->_imageError($file, $firsttime, 'Error creating GD image file from GIF image'); }
-               }
-
-               if (!class_exists('gif', false)) { 
-                       include_once(_MPDF_PATH.'classes/gif.php'); 
-               }
-               $gif=new CGIF();
-
-               $h=0;
-               $w=0;
-               $gif->loadFile($data, 0);
-
-               if(isset($gif->m_img->m_gih->m_bLocalClr) && $gif->m_img->m_gih->m_bLocalClr) {
-                       $nColors = $gif->m_img->m_gih->m_nTableSize;
-                       $pal = $gif->m_img->m_gih->m_colorTable->toString();
-                       if($bgColor != -1) {
-                               $bgColor = $gif->m_img->m_gih->m_colorTable->colorIndex($bgColor);
-                       }
-                       $colspace='Indexed';
-               } elseif(isset($gif->m_gfh->m_bGlobalClr) && $gif->m_gfh->m_bGlobalClr) {
-                       $nColors = $gif->m_gfh->m_nTableSize;
-                       $pal = $gif->m_gfh->m_colorTable->toString();
-                       if((isset($bgColor)) and $bgColor != -1) {
-                               $bgColor = $gif->m_gfh->m_colorTable->colorIndex($bgColor);
-                       }
-                       $colspace='Indexed';
-               } else {
-                       $nColors = 0;
-                       $bgColor = -1;
-                       $colspace='DeviceGray';
-                       $pal='';
-               }
-
-               $trns='';
-               if(isset($gif->m_img->m_bTrans) && $gif->m_img->m_bTrans && ($nColors > 0)) {
-                       $trns=array($gif->m_img->m_nTrans);
-               }
-               $gifdata=$gif->m_img->m_data;
-               $w=$gif->m_gfh->m_nWidth;
-               $h=$gif->m_gfh->m_nHeight;
-               $gif->ClearData();
-
-               if($colspace=='Indexed' and empty($pal)) {
-                       return $this->_imageError($file, $firsttime, 'Error parsing GIF image - missing colour palette'); 
-               }
-               if ($this->compress) {
-                       $gifdata=gzcompress($gifdata);
-                       $info = array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'f'=>'FlateDecode', 'pal'=>$pal, 'trns'=>$trns, 'data'=>$gifdata);
-               } 
-               else {
-                       $info = array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$gifdata);
-               } 
-               $info['type']='gif';
-               if ($firsttime) {
-                       $info['i']=count($this->images)+1;
-                       $this->images[$file]=$info;
-               }
-               return $info;
-       }
-
-/*-- IMAGES-BMP --*/
-       // BMP (Windows Bitmap)
-       else if ($type == 'bmp') {
-               if (!class_exists('bmp', false)) { include(_MPDF_PATH.'classes/bmp.php'); }
-               if (empty($this->bmp)) { $this->bmp = new bmp($this); }
-               $info = $this->bmp->_getBMPimage($data, $file);
-               if (isset($info['error'])) {
-                       return $this->_imageError($file, $firsttime, $info['error']); 
-               }
-               if ($firsttime) {
-                       $info['i']=count($this->images)+1;
-                       $this->images[$file]=$info;
-               }
-               return $info;
-       }
-/*-- END IMAGES-BMP --*/
-/*-- IMAGES-WMF --*/
-       // WMF
-       else if ($type == 'wmf') {
-               if (!class_exists('wmf', false)) { include(_MPDF_PATH.'classes/wmf.php'); }
-               if (empty($this->wmf)) { $this->wmf = new wmf($this); }
-               $wmfres = $this->wmf->_getWMFimage($data);
-         if ($wmfres[0]==0) { 
-               if ($wmfres[1]) { return $this->_imageError($file, $firsttime, $wmfres[1]); }
-               return $this->_imageError($file, $firsttime, 'Error parsing WMF image'); 
-         }
-         $info = array('x'=>$wmfres[2][0],'y'=>$wmfres[2][1],'w'=>$wmfres[3][0],'h'=>$wmfres[3][1],'data'=>$wmfres[1]);
-         $info['i']=count($this->formobjects)+1;
-         $info['type']='wmf';
-         $this->formobjects[$file]=$info;
-         return $info;
-       }
-/*-- END IMAGES-WMF --*/
-
-       // UNKNOWN TYPE - try GD imagecreatefromstring
-       else {
-               if (function_exists('gd_info')) { $gd = gd_info(); }
-               else {$gd = array(); }
-               if (isset($gd['PNG Support']) && $gd['PNG Support']) {
-                       $im = @imagecreatefromstring($data);
-                       if (!$im) { return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised, and not supported by GD imagecreate'); }
-                       $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png';
-                       imagealphablending($im, false);
-                       imagesavealpha($im, false); 
-                       imageinterlace($im, false);
-                       $check = @imagepng($im, $tempfile);
-                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse unknown image type'); }
-                       $info = $this->_getImage($tempfile, false);
-                       imagedestroy($im);
-                       unlink($tempfile);
-                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse unknown image type'); }
-                       $info['type']='png';
-                       if ($firsttime) {
-                               $info['i']=count($this->images)+1;
-                               $this->images[$file]=$info;
-                       }
-                       return $info;
-               }
-       }
-
-       return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised'); 
-}
-//==============================================================
-function _convImage(&$data, $colspace, $targetcs, $w, $h, $dpi, $mask) {
-       if ($this->PDFA || $this->PDFX) { $mask=false; }
-       $im = @imagecreatefromstring($data);
-       $info = array();
-       if ($im) {
-               $imgdata = '';
-               $mimgdata = '';
-               $minfo = array();
-               //Read transparency info
-               $trns=array();
-               $trnsrgb = false;
-               if (!$this->PDFA && !$this->PDFX) { 
-                  $p = strpos($data,'tRNS');
-                  if ($p) { 
-                       $n=$this->_fourbytes2int(substr($data,($p-4),4));
-                       $t = substr($data,($p+4),$n);   
-                       if ($colspace=='DeviceGray') { 
-                               $trns=array(ord(substr($t,1,1))); 
-                               $trnsrgb = array($trns[0],$trns[0],$trns[0]);
-                       }
-                       else if ($colspace=='DeviceRGB') { 
-                               $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1))); 
-                               $trnsrgb = $trns;
-                               if ($targetcs=='DeviceCMYK') {
-                                       $col = $this->rgb2cmyk(array(3,$trns[0],$trns[1],$trns[2]));
-                                       $c1 = intval($col[1]*2.55);
-                                       $c2 = intval($col[2]*2.55);
-                                       $c3 = intval($col[3]*2.55);
-                                       $c4 = intval($col[4]*2.55);
-                                       $trns = array($c1,$c2,$c3,$c4);
-                               }
-                               else if ($targetcs=='DeviceGray') {
-                                       $c = intval(($trns[0] * .21) + ($trns[1] * .71) + ($trns[2] * .07));
-                                       $trns = array($c);
-                               }
-                       }
-                       else {  // Indexed
-                               $pos = strpos($t,chr(0));
-                               if (is_int($pos)) {
-                                       $pal = imagecolorsforindex($im, $pos);
-                                       $r = $pal['red'];
-                                       $g = $pal['green'];
-                                       $b = $pal['blue'];
-                                       $trns=array($r,$g,$b);  // ****
-                                       $trnsrgb = $trns;
-                                       if ($targetcs=='DeviceCMYK') {
-                                               $col = $this->rgb2cmyk(array(3,$r,$g,$b));
-                                               $c1 = intval($col[1]*2.55);
-                                               $c2 = intval($col[2]*2.55);
-                                               $c3 = intval($col[3]*2.55);
-                                               $c4 = intval($col[4]*2.55);
-                                               $trns = array($c1,$c2,$c3,$c4);
-                                       }
-                                       else if ($targetcs=='DeviceGray') {
-                                               $c = intval(($r * .21) + ($g * .71) + ($b * .07));
-                                               $trns = array($c);
-                                       }
-                               }
-                       }
-                  }
-               }
-               for ($i = 0; $i < $h; $i++) {
-                       for ($j = 0; $j < $w; $j++) {
-                               $rgb = imagecolorat($im, $j, $i);
-                               $r = ($rgb >> 16) & 0xFF;
-                               $g = ($rgb >> 8) & 0xFF;
-                               $b = $rgb & 0xFF;
-                               if ($colspace=='Indexed') {
-                                       $pal = imagecolorsforindex($im, $rgb);
-                                       $r = $pal['red'];
-                                       $g = $pal['green'];
-                                       $b = $pal['blue'];
-                               }
-
-                               if ($targetcs=='DeviceCMYK') {
-                                       $col = $this->rgb2cmyk(array(3,$r,$g,$b));
-                                       $c1 = intval($col[1]*2.55);
-                                       $c2 = intval($col[2]*2.55);
-                                       $c3 = intval($col[3]*2.55);
-                                       $c4 = intval($col[4]*2.55);
-                                       if ($trnsrgb) {
-                                               // original pixel was not set as transparent but processed color does match
-                                               if ($trnsrgb!=array($r,$g,$b) && $trns==array($c1,$c2,$c3,$c4)) {
-                                                       if ($c4==0) { $c4=1; } else { $c4--; }
-                                               }
-                                       }
-                                       $imgdata .= chr($c1).chr($c2).chr($c3).chr($c4);
-                               }
-                               else if ($targetcs=='DeviceGray') {
-                                       $c = intval(($r * .21) + ($g * .71) + ($b * .07));
-                                       if ($trnsrgb) {
-                                               // original pixel was not set as transparent but processed color does match
-                                               if ($trnsrgb!=array($r,$g,$b) && $trns==array($c)) {
-                                                       if ($c==0) { $c=1; } else { $c--; }
-                                               }
-                                       }
-                                       $imgdata .= chr($c);
-                               }
-                               else if ($targetcs=='DeviceRGB') {
-                                       $imgdata .= chr($r).chr($g).chr($b);
-                               }
-                               if ($mask) {
-                                       // mPDF 5.7.2 Gamma correction
-                                       $alpha = ($rgb & 0x7F000000) >> 24;
-                                       if ($alpha < 127) { $mimgdata .= chr(255-($alpha * 2)); }
-                                       else { $mimgdata .= chr(0); }
-                               }
-                       }
-               }
-
-               if ($targetcs=='DeviceGray') { $ncols = 1; }
-               else if ($targetcs=='DeviceRGB') { $ncols = 3; }
-               else if ($targetcs=='DeviceCMYK') { $ncols = 4; }
-
-               $imgdata = gzcompress($imgdata);
-               $info = array('w'=>$w,'h'=>$h,'cs'=>$targetcs,'bpc'=>8,'f'=>'FlateDecode','data'=>$imgdata, 'type'=>'png',
-                       'parms'=>'/DecodeParms <</Colors '.$ncols.' /BitsPerComponent 8 /Columns '.$w.'>>');
-               if ($dpi) { $info['set-dpi'] = $dpi; }
-               if ($mask) { 
-                       $mimgdata = gzcompress($mimgdata); 
-                       $minfo = array('w'=>$w,'h'=>$h,'cs'=>'DeviceGray','bpc'=>8,'f'=>'FlateDecode','data'=>$mimgdata, 'type'=>'png',
-                       'parms'=>'/DecodeParms <</Colors '.$ncols.' /BitsPerComponent 8 /Columns '.$w.'>>');
-                       if ($dpi) { $minfo['set-dpi'] = $dpi; }
-                       $tempfile = '_tempImgPNG'.md5($file).RAND(1,10000).'.png';
-                       $imgmask = count($this->images)+1;
-                       $minfo['i']=$imgmask ;
-                       $this->images[$tempfile] = $minfo;
-                       $info['masked'] = $imgmask;
-               }
-               else if ($trns) { $info['trns'] = $trns; }
-               imagedestroy($im);
-       }
-       return $info;
-}
-
-
-
-
-function _fourbytes2int($s) {
-       //Read a 4-byte integer from string
-       return (ord($s[0])<<24) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]);
-}
-
-function _twobytes2int($s) {
-       //Read a 2-byte integer from string
-       return (ord(substr($s, 0, 1))<<8) + ord(substr($s, 1, 1));
-}
-
-function _jpgHeaderFromString(&$data) {
-       $p = 4;
-       $p += $this->_twobytes2int(substr($data, $p, 2));       // Length of initial marker block
-       $marker = substr($data, $p, 2);
-       while($marker != chr(255).chr(192) && $marker != chr(255).chr(194) && $p<strlen($data)) {
-               // Start of frame marker (FFC0) or (FFC2) mPDF 4.4.004
-               $p += ($this->_twobytes2int(substr($data, $p+2, 2))) + 2;       // Length of marker block
-               $marker = substr($data, $p, 2);
-       }
-       if ($marker != chr(255).chr(192) && $marker != chr(255).chr(194)) { return false; }
-       return substr($data, $p+2, 10);
-}
-
-function _jpgDataFromHeader($hdr) {
-       $bpc = ord(substr($hdr, 2, 1));
-       if (!$bpc) { $bpc = 8; }
-       $h = $this->_twobytes2int(substr($hdr, 3, 2));
-       $w = $this->_twobytes2int(substr($hdr, 5, 2));
-       $channels = ord(substr($hdr, 7, 1));
-       if ($channels==3) { $colspace='DeviceRGB'; }
-       elseif($channels==4) { $colspace='DeviceCMYK'; }
-       else { $colspace='DeviceGray'; }
-       return array($w, $h, $colspace, $bpc);
-}
-
-function file_get_contents_by_curl($url, &$data) {
-       $timeout = 5;
-       $ch = curl_init($url);
-       curl_setopt($ch, CURLOPT_HEADER, 0);
-       curl_setopt($ch, CURLOPT_NOBODY, 0);
-       curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
-       curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT , $timeout );
-       $data = curl_exec($ch);
-       curl_close($ch);
-}
-
-
-function file_get_contents_by_socket($url, &$data) {
-       $timeout = 1;
-       $p = parse_url($url);
-       $file = $p['path'];
-       if ($p['query']) { $file .= '?'.$p['query']; }
-       if(!($fh = @fsockopen($p['host'], 80, $errno, $errstr, $timeout))) { return false; }
-       $getstring =
-               "GET ".$file." HTTP/1.0 \r\n" .
-               "Host: ".$p['host']." \r\n" .
-               "Connection: close\r\n\r\n";
-       fwrite($fh, $getstring);
-       // Get rid of HTTP header
-       $s = fgets($fh, 1024);
-       if (!$s) { return false; }
-       $httpheader .= $s;
-       while (!feof($fh)) {
-               $s = fgets($fh, 1024);
-               if ( $s == "\r\n" ) { break; }
-       }
-       $data = '';
-       while (!feof($fh)) {
-               $data .= fgets($fh, 1024);
-       }
-       fclose($fh);
-}
-
-//==============================================================
-
-function _imageTypeFromString(&$data) {
-       $type = '';
-       if (substr($data, 6, 4)== 'JFIF' || substr($data, 6, 4)== 'Exif' || substr($data, 0, 2)== chr(255).chr(216)) { // 0xFF 0xD8     // mpDF 5.7.2
-               $type = 'jpeg'; 
-       }
-       else if (substr($data, 0, 6)== "GIF87a" || substr($data, 0, 6)== "GIF89a") { 
-               $type = 'gif';
-       }
-       else if (substr($data, 0, 8)== chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { 
-               $type = 'png';
-       }
-/*-- IMAGES-WMF --*/
-       else if (substr($data, 0, 4)== chr(215).chr(205).chr(198).chr(154)) { 
-               $type = 'wmf';
-       }
-/*-- END IMAGES-WMF --*/
-       else if (preg_match('/<svg.*<\/svg>/is',$data)) { 
-               $type = 'svg';
-       }
-       // BMP images
-       else if (substr($data, 0, 2)== "BM") { 
-               $type = 'bmp';
-       }
-       return $type;
-}
-//==============================================================
-
-// Moved outside WMF as also needed for SVG
-function _putformobjects() {
-       reset($this->formobjects);
-       while(list($file,$info)=each($this->formobjects)) {
-               $this->_newobj();
-               $this->formobjects[$file]['n']=$this->n;
-               $this->_out('<</Type /XObject');
-               $this->_out('/Subtype /Form');
-               $this->_out('/Group '.($this->n+1).' 0 R');
-               $this->_out('/BBox ['.$info['x'].' '.$info['y'].' '.($info['w']+$info['x']).' '.($info['h']+$info['y']).']');
-               if ($this->compress)
-                       $this->_out('/Filter /FlateDecode');
-               $data=($this->compress) ? gzcompress($info['data']) : $info['data'];
-               $this->_out('/Length '.strlen($data).'>>');
-               $this->_putstream($data);
-               unset($this->formobjects[$file]['data']);
-               $this->_out('endobj');
-               // Required for SVG transparency (opacity) to work
-               $this->_newobj();
-               $this->_out('<</Type /Group');
-               $this->_out('/S /Transparency');
-               $this->_out('>>');
-               $this->_out('endobj');
-       }
-}
-
-function _freadint($f)
-{
-       //Read a 4-byte integer from file
-       $i=ord(fread($f,1))<<24;
-       $i+=ord(fread($f,1))<<16;
-       $i+=ord(fread($f,1))<<8;
-       $i+=ord(fread($f,1));
-       return $i;
-}
-
-function _UTF16BEtextstring($s) {
-       $s = $this->UTF8ToUTF16BE($s, true);
-/*-- ENCRYPTION --*/
-       if ($this->encrypted) {
-               $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
-       }
-/*-- END ENCRYPTION --*/
-       return '('. $this->_escape($s).')';
-}
-
-function _textstring($s) {
-/*-- ENCRYPTION --*/
-       if ($this->encrypted) {
-               $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
-       }
-/*-- END ENCRYPTION --*/
-       return '('. $this->_escape($s).')';
-}
-
-
-function _escape($s)
-{
-       // the chr(13) substitution fixes the Bugs item #1421290.
-       return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r'));
-}
-
-function _putstream($s) {
-/*-- ENCRYPTION --*/
-       if ($this->encrypted) {
-               $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
-       }
-/*-- END ENCRYPTION --*/
-       $this->_out('stream');
-       $this->_out($s);
-       $this->_out('endstream');
-}
-
-
-function _out($s,$ln=true) {
-       if($this->state==2) {
-          if ($this->bufferoutput) {
-               $this->headerbuffer.= $s."\n";
-          }
-/*-- COLUMNS --*/
-          else if (($this->ColActive) && !$this->processingHeader && !$this->processingFooter) {
-               // Captures everything in buffer for columns; Almost everything is sent from fn. Cell() except:
-               // Images sent from Image() or
-               // later sent as _out($textto) in printbuffer
-               // Line()
-               if (preg_match('/q \d+\.\d\d+ 0 0 (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ cm \/(I|FO)\d+ Do Q/',$s,$m)) {    // Image data 
-                       $h = ($m[1]/_MPDFK);
-                       // Update/overwrite the lowest bottom of printing y value for a column
-                       $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$h;
-               }
-/*-- TABLES --*/
-               else if (preg_match('/\d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ ([\-]{0,1}\d+\.\d\d+) re/',$s,$m) && $this->tableLevel>0) { // Rect in table
-                       $h = ($m[1]/_MPDFK);
-                       // Update/overwrite the lowest bottom of printing y value for a column
-                       $this->ColDetails[$this->CurrCol]['bottom_margin'] = max($this->ColDetails[$this->CurrCol]['bottom_margin'],($this->y+$h));
-               }
-/*-- END TABLES --*/
-               else {  // Td Text Set in Cell()
-                       if (isset($this->ColDetails[$this->CurrCol]['bottom_margin'])) { $h = $this->ColDetails[$this->CurrCol]['bottom_margin'] - $this->y; }
-                       else { $h = 0; }
-               }
-               if ($h < 0) { $h = -$h; }
-               $this->columnbuffer[] = array(
-               's' => $s,                                                      // Text string to output 
-               'col' => $this->CurrCol,                                // Column when printed 
-               'x' => $this->x,                                                // x when printed 
-               'y' => $this->y,                                                // this->y when printed (after column break) 
-               'h' => $h                                                       // actual y at bottom when printed = y+h  
-               );
-          }
-/*-- END COLUMNS --*/
-/*-- TABLES --*/
-          else if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) {
-               // Captures eveything in buffer for rotated tables; 
-               $this->tablebuffer .= $s . "\n";
-          }
-/*-- END TABLES --*/
-          else if ($this->kwt && !$this->processingHeader && !$this->processingFooter) {
-               // Captures eveything in buffer for keep-with-table (h1-6); 
-               $this->kwt_buffer[] = array(
-               's' => $s,                                                      // Text string to output 
-               'x' => $this->x,                                                // x when printed  
-               'y' => $this->y,                                                // y when printed  
-               );
-          }
-          else if (($this->keep_block_together) && !$this->processingHeader && !$this->processingFooter) {
-               if (!isset($this->ktBlock[$this->page]['bottom_margin'])) {
-                       $this->ktBlock[$this->page]['bottom_margin'] = $this->y;
-               }
-
-               // Captures eveything in buffer; 
-               if (preg_match('/q \d+\.\d\d+ 0 0 (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ cm \/(I|FO)\d+ Do Q/',$s,$m)) {    // Image data 
-                       $h = ($m[1]/_MPDFK);
-                       // Update/overwrite the lowest bottom of printing y value for Keep together block
-                       $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$h;
-               }
-               else {  // Td Text Set in Cell()
-                       if (isset($this->ktBlock[$this->page]['bottom_margin'])) { $h = $this->ktBlock[$this->page]['bottom_margin'] - $this->y; }
-                       else { $h = 0; }
-               }
-               if ($h < 0) { $h = -$h; }
-               $this->divbuffer[] = array(
-               'page' => $this->page,
-               's' => $s,                                                      // Text string to output 
-               'x' => $this->x,                                                // x when printed 
-               'y' => $this->y,                                                // y when printed (after column break)
-               'h' => $h                                                       // actual y at bottom when printed = y+h
-               );
-          }
-          else {
-               $this->pages[$this->page] .= $s.($ln == true ? "\n" : '');
-          }
-
-       }
-       else {
-               $this->buffer .= $s.($ln == true ? "\n" : '');
-       }
-}
-
-/*-- WATERMARK --*/
-// add a watermark 
-function watermark( $texte, $angle=45, $fontsize=96, $alpha=0.2 ) {
-       if ($this->PDFA || $this->PDFX) { $this->Error('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); }
-       if (!$this->watermark_font) { $this->watermark_font = $this->default_font; }
-      $this->SetFont( $this->watermark_font, "B", $fontsize, false );  // Don't output
-       $texte= $this->purify_utf8_text($texte);
-       if ($this->text_input_as_HTML) {
-               $texte= $this->all_entities_to_utf8($texte);
-       }
-       if ($this->usingCoreFont) { $texte = mb_convert_encoding($texte,$this->mb_enc,'UTF-8'); }
-       // DIRECTIONALITY
-       $this->magic_reverse_dir($texte, true, $this->directionality);  // *RTL*
-       // Font-specific ligature substitution for Indic fonts
-       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($texte);     // *INDIC*
-
-       $this->SetAlpha($alpha);
-
-       $this->SetTColor($this->ConvertColor(0));
-       $szfont = $fontsize;
-       $loop   = 0;
-       $maxlen = (min($this->w,$this->h) );    // sets max length of text as 7/8 width/height of page
-       while ( $loop == 0 )
-       {
-       $this->SetFont( $this->watermark_font, "B", $szfont, false );   // Don't output
-        $offset =  ((sin(deg2rad($angle))) * ($szfont/_MPDFK));
-
-       $strlen = $this->GetStringWidth($texte);
-       if ( $strlen > $maxlen - $offset  )
-          $szfont --;
-       else
-          $loop ++;
-       }
-
-       $this->SetFont( $this->watermark_font, "B", $szfont-0.1, true, true);   // Output The -0.1 is because SetFont above is not written to PDF
-                                                                                       // Repeating it will not output anything as mPDF thinks it is set
-       $adj = ((cos(deg2rad($angle))) * ($strlen/2));
-       $opp = ((sin(deg2rad($angle))) * ($strlen/2));
-       $wx = ($this->w/2) - $adj + $offset/3;
-       $wy = ($this->h/2) + $opp;
-       $this->Rotate($angle,$wx,$wy);
-       $this->Text($wx,$wy,$texte);
-       $this->Rotate(0);
-       $this->SetTColor($this->ConvertColor(0));
-
-       $this->SetAlpha(1);
-
-}
-
-function watermarkImg( $src, $alpha=0.2 ) {
-       if ($this->PDFA || $this->PDFX) { $this->Error('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); }
-       if ($this->watermarkImgBehind) { $this->watermarkImgAlpha = $this->SetAlpha($alpha, 'Normal', true); }
-       else { $this->SetAlpha($alpha, $this->watermarkImgAlphaBlend); }
-       $this->Image($src,0,0,0,0,'','', true, true, true);
-       if (!$this->watermarkImgBehind) { $this->SetAlpha(1); }
-}
-/*-- END WATERMARK --*/
-
-
-function Rotate($angle,$x=-1,$y=-1)
-{
-       if($x==-1)
-               $x=$this->x;
-       if($y==-1)
-               $y=$this->y;
-       if($this->angle!=0)
-               $this->_out('Q');
-       $this->angle=$angle;
-       if($angle!=0)
-       {
-               $angle*=M_PI/180;
-               $c=cos($angle);
-               $s=sin($angle);
-               $cx=$x*_MPDFK;
-               $cy=($this->h-$y)*_MPDFK;
-               $this->_out(sprintf('q %.5F %.5F %.5F %.5F %.3F %.3F cm 1 0 0 1 %.3F %.3F cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
-       }
-}
-
-
-
-function CircularText($x, $y, $r, $text, $align='top', $fontfamily='', $fontsize=0, $fontstyle='', $kerning=120, $fontwidth=100, $divider) {   // mPDF 5.5.23
-       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
-       if (empty($this->directw)) { $this->directw = new directw($this); }
-       $this->directw->CircularText($x, $y, $r, $text, $align, $fontfamily, $fontsize, $fontstyle, $kerning, $fontwidth, $divider);    // mPDF 5.5.23
-}
-
-
-// From Invoice
-function RoundedRect($x, $y, $w, $h, $r, $style = '')
-{
-       $hp = $this->h;
-       if($style=='F')
-               $op='f';
-       elseif($style=='FD' or $style=='DF')
-               $op='B';
-       else
-               $op='S';
-       $MyArc = 4/3 * (sqrt(2) - 1);
-       $this->_out(sprintf('%.3F %.3F m',($x+$r)*_MPDFK,($hp-$y)*_MPDFK ));
-       $xc = $x+$w-$r ;
-       $yc = $y+$r;
-       $this->_out(sprintf('%.3F %.3F l', $xc*_MPDFK,($hp-$y)*_MPDFK ));
-
-       $this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
-       $xc = $x+$w-$r ;
-       $yc = $y+$h-$r;
-       $this->_out(sprintf('%.3F %.3F l',($x+$w)*_MPDFK,($hp-$yc)*_MPDFK));
-       $this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
-       $xc = $x+$r ;
-       $yc = $y+$h-$r;
-       $this->_out(sprintf('%.3F %.3F l',$xc*_MPDFK,($hp-($y+$h))*_MPDFK));
-       $this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
-       $xc = $x+$r ;
-       $yc = $y+$r;
-       $this->_out(sprintf('%.3F %.3F l',($x)*_MPDFK,($hp-$yc)*_MPDFK ));
-       $this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
-       $this->_out($op);
-}
-
-function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
-{
-       $h = $this->h;
-       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x1*_MPDFK, ($h-$y1)*_MPDFK,
-                                               $x2*_MPDFK, ($h-$y2)*_MPDFK, $x3*_MPDFK, ($h-$y3)*_MPDFK));
-}
-
-
-
-
-//====================================================
-
-
-
-/*-- DIRECTW --*/
-function Shaded_box( $text,$font='',$fontstyle='B',$szfont='',$width='70%',$style='DF',$radius=2.5,$fill='#FFFFFF',$color='#000000',$pad=2 ) {
-       // F (shading - no line),S (line, no shading),DF (both)
-       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
-       if (empty($this->directw)) { $this->directw = new directw($this); }
-       $this->directw->Shaded_box( $text,$font,$fontstyle,$szfont,$width,$style,$radius,$fill,$color,$pad);
-}
-/*-- END DIRECTW --*/
-
-
-function UTF8StringToArray($str, $addSubset=true) {
-   $out = array();
-   $len = strlen($str);
-   for ($i = 0; $i < $len; $i++) {
-       $uni = -1;
-      $h = ord($str[$i]);
-      if ( $h <= 0x7F )
-         $uni = $h;
-      elseif ( $h >= 0xC2 ) {
-         if ( ($h <= 0xDF) && ($i < $len -1) )
-            $uni = ($h & 0x1F) << 6 | (ord($str[++$i]) & 0x3F);
-         elseif ( ($h <= 0xEF) && ($i < $len -2) )
-            $uni = ($h & 0x0F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
-         elseif ( ($h <= 0xF4) && ($i < $len -3) )
-            $uni = ($h & 0x0F) << 18 | (ord($str[++$i]) & 0x3F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
-      }
-       if ($uni >= 0) {
-               $out[] = $uni;
-               if ($addSubset && isset($this->CurrentFont['subset'])) {
-                       $this->CurrentFont['subset'][$uni] = $uni;
-               }
-       }
-   }
-   return $out;
-}
-
-
-//Convert utf-8 string to <HHHHHH> for Font Subsets
-function UTF8toSubset($str) {
-       $ret = '<';
-       $str = preg_replace('/'.preg_quote($this->aliasNbPg,'/').'/', chr(7), $str );
-       $str = preg_replace('/'.preg_quote($this->aliasNbPgGp,'/').'/', chr(8), $str );
-       $unicode = $this->UTF8StringToArray($str);
-       $orig_fid = $this->CurrentFont['subsetfontids'][0];
-       $last_fid = $this->CurrentFont['subsetfontids'][0];
-       foreach($unicode as $c) {
-          if ($c == 7 || $c == 8) { 
-                       if ($orig_fid != $last_fid) {
-                               $ret .= '> Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <';
-                               $last_fid = $orig_fid;
-                       }
-                       if ($c == 7) { $ret .= $this->aliasNbPgHex; }
-                       else { $ret .= $this->aliasNbPgGpHex; }
-                       continue;
-          }
-          for ($i=0; $i<99; $i++) {
-               // return c as decimal char
-               $init = array_search($c, $this->CurrentFont['subsets'][$i]);
-               if ($init!==false) {
-                       if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) {
-                               $ret .= '> Tj /F'.$this->CurrentFont['subsetfontids'][$i].' '.$this->FontSizePt.' Tf <';
-                               $last_fid = $this->CurrentFont['subsetfontids'][$i];
-                       }
-                       $ret .= sprintf("%02s", strtoupper(dechex($init)));
-                       break;
-               }
-               // TrueType embedded SUBSETS
-               else if (count($this->CurrentFont['subsets'][$i]) < 255) {
-                       $n = count($this->CurrentFont['subsets'][$i]);
-                       $this->CurrentFont['subsets'][$i][$n] = $c;
-                       if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) {
-                               $ret .= '> Tj /F'.$this->CurrentFont['subsetfontids'][$i].' '.$this->FontSizePt.' Tf <';
-                               $last_fid = $this->CurrentFont['subsetfontids'][$i];
-                       }
-                       $ret .= sprintf("%02s", strtoupper(dechex($n)));
-                       break;
-               }
-               else if (!isset($this->CurrentFont['subsets'][($i+1)])) {
-                       // TrueType embedded SUBSETS
-                       $this->CurrentFont['subsets'][($i+1)] = array(0=>0);
-                       $new_fid = count($this->fonts)+$this->extraFontSubsets+1;
-                       $this->CurrentFont['subsetfontids'][($i+1)] = $new_fid;
-                       $this->extraFontSubsets++;
-               }
-          }
-       }
-       $ret .= '>';
-       if ($last_fid != $orig_fid) {
-               $ret .= ' Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <> ';
-       }
-       return $ret;
-}
-
-
-// Converts UTF-8 strings to UTF16-BE.
-function UTF8ToUTF16BE($str, $setbom=true) {
-       if ($this->checkSIP && preg_match("/([\x{20000}-\x{2FFFF}])/u", $str)) { 
-          if (!in_array($this->currentfontfamily, array('gb','big5','sjis','uhc','gbB','big5B','sjisB','uhcB','gbI','big5I','sjisI','uhcI',
-               'gbBI','big5BI','sjisBI','uhcBI'))) {
-               $str = preg_replace("/[\x{20000}-\x{2FFFF}]/u", chr(0), $str);
-          }
-       }
-       if ($this->checkSMP && preg_match("/([\x{10000}-\x{1FFFF}])/u", $str )) { 
-               $str = preg_replace("/[\x{10000}-\x{1FFFF}]/u", chr(0), $str );
-       }
-       $outstr = ""; // string to be returned
-       if ($setbom) {
-               $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM)
-       }
-       $outstr .= mb_convert_encoding($str, 'UTF-16BE', 'UTF-8');
-       return $outstr;
-}
-
-
-
-
-
-// ====================================================
-// ====================================================
-/*-- CJK-FONTS --*/
-
-// from class PDF_Chinese CJK EXTENSIONS
-function AddCIDFont($family,$style,$name,&$cw,$CMap,$registry,$desc)
-{
-       $fontkey=strtolower($family).strtoupper($style);
-       if(isset($this->fonts[$fontkey]))
-               $this->Error("Font already added: $family $style");
-       $i=count($this->fonts)+$this->extraFontSubsets+1;
-       $name=str_replace(' ','',$name);
-       if ($family == 'sjis') { $up = -120; } else { $up = -130; }
-       // ? 'up' and 'ut' do not seem to be referenced anywhere
-       $this->fonts[$fontkey]=array('i'=>$i,'type'=>'Type0','name'=>$name,'up'=>$up,'ut'=>40,'cw'=>$cw,'CMap'=>$CMap,'registry'=>$registry,'MissingWidth'=>1000,'desc'=>$desc);
-}
-
-function AddCJKFont($family) {
-
-       if ($this->PDFA || $this->PDFX) {
-               $this->Error("Adobe CJK fonts cannot be embedded in mPDF (required for PDFA1-b and PDFX/1-a).");
-       }
-       if ($family == 'big5') { $this->AddBig5Font(); }
-       else if ($family == 'gb') { $this->AddGBFont(); }
-       else if ($family == 'sjis') { $this->AddSJISFont(); }
-       else if ($family == 'uhc') { $this->AddUHCFont(); }
-}
-
-function AddBig5Font()
-{
-       //Add Big5 font with proportional Latin
-       $family='big5';
-       $name='MSungStd-Light-Acro';
-       $cw=$this->Big5_widths;
-       $CMap='UniCNS-UTF16-H';
-       $registry=array('ordering'=>'CNS1','supplement'=>4);
-       $desc = array(
-       'Ascent' => 880,
-       'Descent' => -120,
-       'CapHeight' => 880,
-       'Flags' => 6,
-       'FontBBox' => '[-160 -249 1015 1071]',
-       'ItalicAngle' => 0,
-       'StemV' => 93,
-       );
-       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
-}
-
-
-function AddGBFont()
-{
-       //Add GB font with proportional Latin
-       $family='gb';
-       $name='STSongStd-Light-Acro';   
-       $cw=$this->GB_widths;
-       $CMap='UniGB-UTF16-H';
-       $registry=array('ordering'=>'GB1','supplement'=>4);
-       $desc = array(
-       'Ascent' => 752,
-       'Descent' => -271,
-       'CapHeight' => 737,
-       'Flags' => 6,
-       'FontBBox' => '[-25 -254 1000 880]',
-       'ItalicAngle' => 0,
-       'StemV' => 58,
-       'Style' => '<< /Panose <000000000400000000000000> >>',
-       );
-       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
-}
-
-
-function AddSJISFont()
-{
-       //Add SJIS font with proportional Latin
-       $family='sjis';
-       $name='KozMinPro-Regular-Acro';
-       $cw=$this->SJIS_widths;
-       $CMap='UniJIS-UTF16-H';
-       $registry=array('ordering'=>'Japan1','supplement'=>5);
-       $desc = array(
-       'Ascent' => 880,
-       'Descent' => -120,
-       'CapHeight' => 740,
-       'Flags' => 6,
-       'FontBBox' => '[-195 -272 1110 1075]',
-       'ItalicAngle' => 0,
-       'StemV' => 86,
-       'XHeight' => 502,
-       );
-       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
-}
-
-function AddUHCFont()
-{
-       //Add UHC font with proportional Latin
-       $family='uhc';
-       $name='HYSMyeongJoStd-Medium-Acro';     
-       $cw=$this->UHC_widths;
-       $CMap='UniKS-UTF16-H';
-       $registry=array('ordering'=>'Korea1','supplement'=>2);
-       $desc = array(
-       'Ascent' => 880,
-       'Descent' => -120,
-       'CapHeight' => 720,
-       'Flags' => 6,
-       'FontBBox' => '[-28 -148 1001 880]',
-       'ItalicAngle' => 0,
-       'StemV' => 60,
-       'Style' => '<< /Panose <000000000600000000000000> >>',
-       );
-       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
-       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
-}
-
-/*-- END CJK-FONTS --*/
-
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-function SetAutoFont($af = AUTOFONT_ALL) {
-       if ($this->onlyCoreFonts) { return false; }
-       if (!$af && $af !== 0) { $af = AUTOFONT_ALL; }
-       $this->autoFontGroups = $af;
-       if ($this->autoFontGroups ) { 
-               $this->useLang = true;
-       }
-}
-
-
-function SetDefaultFont($font) {
-       // Disallow embedded fonts to be used as defaults in PDFA
-       if ($this->PDFA || $this->PDFX) {
-               if (strtolower($font) == 'ctimes') { $font = 'serif'; }
-               if (strtolower($font) == 'ccourier') { $font = 'monospace'; }
-               if (strtolower($font) == 'chelvetica') { $font = 'sans-serif'; }
-       }
-       $font = $this->SetFont($font);  // returns substituted font if necessary
-       $this->default_font = $font;
-       $this->original_default_font = $font;
-       if (!$this->watermark_font ) { $this->watermark_font = $font; } // *WATERMARK*
-       $this->defaultCSS['BODY']['FONT-FAMILY'] = $font;
-       $this->cssmgr->CSS['BODY']['FONT-FAMILY'] = $font;
-}
-
-function SetDefaultFontSize($fontsize) {
-       $this->default_font_size = $fontsize;
-       $this->original_default_font_size = $fontsize;
-       $this->SetFontSize($fontsize);
-       $this->defaultCSS['BODY']['FONT-SIZE'] = $fontsize . 'pt';
-       $this->cssmgr->CSS['BODY']['FONT-SIZE'] = $fontsize . 'pt';
-}
-
-function SetDefaultBodyCSS($prop, $val) {
-   if ($prop) {
-       $this->defaultCSS['BODY'][strtoupper($prop)] = $val;
-       $this->cssmgr->CSS['BODY'][strtoupper($prop)] = $val;
-  }
-}
-
-
-function SetDirectionality($dir='ltr') {
-/*-- RTL --*/
-       if (strtolower($dir) == 'rtl') { 
-         if ($this->directionality != 'rtl') {
-               // Swop L/R Margins so page 1 RTL is an 'even' page
-               $tmp = $this->DeflMargin;
-               $this->DeflMargin = $this->DefrMargin; 
-               $this->DefrMargin = $tmp; 
-               $this->orig_lMargin = $this->DeflMargin;
-               $this->orig_rMargin = $this->DefrMargin;
-
-               $this->SetMargins($this->DeflMargin,$this->DefrMargin,$this->tMargin);
-         }
-               $this->directionality = 'rtl'; 
-               $this->defaultAlign = 'R';
-               $this->defaultTableAlign = 'R';
-       }
-       else  { 
-/*-- END RTL --*/
-               $this->directionality = 'ltr'; 
-               $this->defaultAlign = 'L';
-               $this->defaultTableAlign = 'L';
-       }       // *RTL*
-       $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality;
-}
-
-
-
-// Added to set line-height-correction
-function SetLineHeightCorrection($val) {
-       if ($val > 0) { $this->default_lineheight_correction = $val; }
-       else { $this->default_lineheight_correction = 1.2; }
-}
-
-// Set a (fixed) lineheight to an actual value - either to named fontsize(pts) or default
-function SetLineHeight($FontPt='',$spacing = '') {
-   if ($this->shrin_k > 1) { $k = $this->shrin_k; }
-   else { $k = 1; }
-   if ($spacing > 0) { 
-       if (preg_match('/mm/',$spacing)) { 
-               $this->lineheight = ($spacing + 0.0) / $k; // convert to number
-       }
-       else  { 
-               if ($FontPt) { $this->lineheight = (($FontPt/_MPDFK) *$spacing); }
-               else { $this->lineheight = (($this->FontSizePt/_MPDFK) *$spacing); }
-       }
-   }
-   else {
-       if ($FontPt) { $this->lineheight = (($FontPt/_MPDFK) *$this->normalLineheight); }
-       else { $this->lineheight = (($this->FontSizePt/_MPDFK) *$this->normalLineheight); }
-   }
-}
-
-function _computeLineheight($lh, $fs='') {
-       if ($this->shrin_k > 1) { $k = $this->shrin_k; }
-       else { $k = 1; }
-       if (!$fs) { $fs = $this->FontSize; }
-       if (preg_match('/mm/',$lh)) { 
-               return (($lh + 0.0) / $k); // convert to number
-       }
-       else if ($lh > 0) { 
-               return ($fs * $lh);
-       }
-       else if (isset($this->normalLineheight)) { return ($fs * $this->normalLineheight); }
-       else return ($fs * $this->default_lineheight_correction); 
-}
-
-
-function SetBasePath($str='') {
-  if ( isset($_SERVER['HTTP_HOST']) ) { $host = $_SERVER['HTTP_HOST']; }
-  else if ( isset($_SERVER['SERVER_NAME']) ) { $host = $_SERVER['SERVER_NAME']; }
-  else { $host = ''; }
-  if (!$str) { 
-       if ($_SERVER['SCRIPT_NAME']) { $currentPath = dirname($_SERVER['SCRIPT_NAME']); }
-       else { $currentPath = dirname($_SERVER['PHP_SELF']); }
-       $currentPath = str_replace("\\","/",$currentPath);
-       if ($currentPath == '/') { $currentPath = ''; }
-       if ($host) { $currpath = 'http://' . $host . $currentPath .'/'; }
-       else { $currpath = ''; }
-       $this->basepath = $currpath; 
-       $this->basepathIsLocal = true; 
-       return; 
-  }
-  $str = preg_replace('/\?.*/','',$str);
-  if (!preg_match('/(http|https|ftp):\/\/.*\//i',$str)) { $str .= '/'; } 
-  $str .= 'xxx';       // in case $str ends in / e.g. http://www.bbc.co.uk/
-  $this->basepath = dirname($str) . "/";       // returns e.g. e.g. http://www.google.com/dir1/dir2/dir3/
-  $this->basepath = str_replace("\\","/",$this->basepath); //If on Windows
-  $tr = parse_url($this->basepath);
-  if (isset($tr['host']) && ($tr['host'] == $host)) { $this->basepathIsLocal = true; }
-  else { $this->basepathIsLocal = false; }
-}
-
-
-function GetFullPath(&$path,$basepath='') {
-       // When parsing CSS need to pass temporary basepath - so links are relative to current stylesheet
-       if (!$basepath) { $basepath = $this->basepath; }
-       //Fix path value
-       $path = str_replace("\\","/",$path); //If on Windows
-       // mPDF 5.7.2
-       if (substr($path,0,2) == "//") { 
-               $tr = parse_url($basepath);
-               $path = $tr['scheme'].':'.$path;
-       }
-       $regexp = '|^./|';      // Inadvertently corrects "./path/etc" and "//www.domain.com/etc"
-       $path = preg_replace($regexp,'',$path);
-
-
-       if(substr($path,0,1) == '#') { return; }
-       if (stristr($path,"mailto:") !== false) { return; }
-       if (strpos($path,"../") !== false ) { //It is a Relative Link
-               $backtrackamount = substr_count($path,"../");
-               $maxbacktrack = substr_count($basepath,"/") - 3;        // mPDF 5.6.18
-               $filepath = str_replace("../",'',$path);
-               $path = $basepath;
-               //If it is an invalid relative link, then make it go to directory root
-               if ($backtrackamount > $maxbacktrack) $backtrackamount = $maxbacktrack;
-               //Backtrack some directories
-               for( $i = 0 ; $i < $backtrackamount + 1 ; $i++ ) $path = substr( $path, 0 , strrpos($path,"/") );
-               $path = $path . "/" . $filepath; //Make it an absolute path
-       }
-       else if( strpos($path,":/") === false || strpos($path,":/") > 10) { //It is a Local Link
-               if (substr($path,0,1) == "/") { 
-                       $tr = parse_url($basepath);
-                       // mPDF 5.7.2
-                       $root = '';
-                       if (!empty($tr['scheme'])) { $root .= $tr['scheme'].'://'; }
-                       $root .= $tr['host'];
-                       $path = $root . $path; 
-               }
-               else { $path = $basepath . $path; }
-       }
-       //Do nothing if it is an Absolute Link
-}
-
-
-// Used for external CSS files
-function _get_file($path) {
-       // If local file try using local path (? quicker, but also allowed even if allow_url_fopen false)
-       $contents = '';
-       $contents = @file_get_contents($path);
-       if ($contents) { return $contents; }
-       if ($this->basepathIsLocal) {
-               $tr = parse_url($path);
-               $lp=getenv("SCRIPT_NAME");
-               $ap=realpath($lp);
-               $ap=str_replace("\\","/",$ap);
-               $docroot=substr($ap,0,strpos($ap,$lp));
-               // WriteHTML parses all paths to full URLs; may be local file name 
-               if ($tr['scheme'] && $tr['host'] && $_SERVER["DOCUMENT_ROOT"] ) { 
-                       $localpath = $_SERVER["DOCUMENT_ROOT"] . $tr['path']; 
-               }
-               // DOCUMENT_ROOT is not returned on IIS
-               else if ($docroot) {
-                       $localpath = $docroot . $tr['path'];
-               }
-               else { $localpath = $path; }
-               $contents = @file_get_contents($localpath);
-       }
-       // if not use full URL
-       else if (!$contents && !ini_get('allow_url_fopen') && function_exists("curl_init"))  {
-               $ch = curl_init($path);
-               curl_setopt($ch, CURLOPT_HEADER, 0);
-               curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
-               $contents = curl_exec($ch);
-               curl_close($ch);
-       }
-       return $contents;
-}
-
-
-function docPageNum($num = 0, $extras = false) {
-       if ($num < 1) { $num = $this->page; }
-       $type = '1';    // set default decimal
-       $ppgno = $num;
-       $suppress = 0;
-       $offset = 0;
-       $lastreset = 0;
-       foreach($this->PageNumSubstitutions AS $psarr) {
-               if ($num >= $psarr['from']) {
-                       if ($psarr['reset']) { 
-                               if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
-                               $ppgno = $num - $psarr['from'] + 1 + $offset; 
-                               $lastreset = $psarr['from'];
-                       }
-                       if ($psarr['type']) { $type = $psarr['type']; }
-                       if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
-                       else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
-               }
-       }
-       if ($suppress) { return ''; }
-
-       foreach($this->pgsIns AS $k=>$v) {
-               if ($k>$lastreset && $k<$num) {
-                       $ppgno -= $v;
-               }
-       }
-       if ($type=='A') { $ppgno = $this->dec2alpha($ppgno,true); }
-       else if ($type=='a') { $ppgno = $this->dec2alpha($ppgno,false);}
-       else if ($type=='I') { $ppgno = $this->dec2roman($ppgno,true); }
-       else if ($type=='i') { $ppgno = $this->dec2roman($ppgno,false); }
-       if ($extras) { $ppgno = $this->pagenumPrefix . $ppgno . $this->pagenumSuffix; }
-       return $ppgno;
-}
-
-
-function docPageSettings($num = 0) {
-       // Returns current type (numberstyle), suppression state for this page number; 
-       // reset is only returned if set for this page number
-       if ($num < 1) { $num = $this->page; }
-       $type = '1';    // set default decimal
-       $ppgno = $num;
-       $suppress = 0;
-       $offset = 0;
-       $reset = '';
-       foreach($this->PageNumSubstitutions AS $psarr) {
-               if ($num >= $psarr['from']) {
-                       if ($psarr['reset']) { 
-                               if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
-                               $ppgno = $num - $psarr['from'] + 1 + $offset; 
-                       }
-                       if ($psarr['type']) { $type = $psarr['type']; }
-                       if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
-                       else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
-               }
-               if ($num == $psarr['from']) { $reset = $psarr['reset']; }
-       }
-       if ($suppress) { $suppress = 'on'; }
-       else { $suppress = 'off'; }
-       return array($type, $suppress, $reset);
-}
-
-function docPageNumTotal($num = 0, $extras = false) {
-       if ($num < 1) { $num = $this->page; }
-       $type = '1';    // set default decimal
-       $ppgstart = 1;
-       $ppgend = count($this->pages)+1; 
-       $suppress = 0;
-       $offset = 0;
-       foreach($this->PageNumSubstitutions AS $psarr) {
-               if ($num >= $psarr['from']) {
-                       if ($psarr['reset']) { 
-                               if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
-                               $ppgstart = $psarr['from'] + $offset; 
-                               $ppgend = count($this->pages)+1 + $offset; 
-                       }
-                       if ($psarr['type']) { $type = $psarr['type']; }
-                       if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
-                       else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
-               }
-               if ($num < $psarr['from']) {
-                       if ($psarr['reset']) { 
-                               $ppgend = $psarr['from'] + $offset; 
-                               break;
-                       }
-               }
-       }
-       if ($suppress) { return ''; }
-       $ppgno = $ppgend-$ppgstart+$offset; 
-
-       // mPDF 5.6.47
-       foreach($this->pgsIns AS $k => $v) {
-               if ($k>$ppgstart && $k<$ppgend) {
-                       $ppgno -= $v;
-               }
-       }
-
-       if ($extras) { $ppgno = $this->nbpgPrefix . $ppgno . $this->nbpgSuffix; }
-       return $ppgno;
-}
-
-function RestartDocTemplate() {
-       $this->docTemplateStart = $this->page;
-}
-
-
-
-//Page header
-function Header($content='') {
-
-       $this->cMarginL = 0;
-       $this->cMarginR = 0;
-
-
-/*-- HTMLHEADERS-FOOTERS --*/
-  if (($this->mirrorMargins && ($this->page%2==0) && $this->HTMLHeaderE) || ($this->mirrorMargins && ($this->page%2==1) && $this->HTMLHeader) || (!$this->mirrorMargins && $this->HTMLHeader)) {
-       $this->writeHTMLHeaders(); 
-       return;
-  }
-/*-- END HTMLHEADERS-FOOTERS --*/
-  $this->processingHeader=true;
-  $h = $this->headerDetails;
-  if(count($h)) {
-
-       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
-               $this->_out(sprintf('q 0 -1 1 0 0 %.3F cm ',($this->h*_MPDFK)));
-               $yadj = $this->w - $this->h;
-               $headerpgwidth = $this->h - $this->orig_lMargin - $this->orig_rMargin;
-               if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-                       $headerlmargin = $this->orig_rMargin;
-               }
-               else {
-                       $headerlmargin = $this->orig_lMargin;
-               }
-       }
-       else { 
-               $yadj = 0; 
-               $headerpgwidth = $this->pgwidth;
-               $headerlmargin = $this->lMargin;
-       }
-
-       $this->y = $this->margin_header - $yadj ;
-       $this->SetTColor($this->ConvertColor(0));
-       $this->SUP = false;
-       $this->SUB = false;
-       $this->bullet = false;
-
-       // only show pagenumber if numbering on
-       $pgno = $this->docPageNum($this->page, true); 
-
-       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-                       $side = 'even';
-       }
-       else {  // ODD  // OR NOT MIRRORING MARGINS/FOOTERS = DEFAULT
-                       $side = 'odd';
-       }
-       $maxfontheight = 0;
-       foreach(array('L','C','R') AS $pos) {
-         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
-               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
-               else { $hfsz = $this->default_font_size; }
-               $maxfontheight = max($maxfontheight,$hfsz);
-         }
-       }
-       // LEFT-CENTER-RIGHT
-       foreach(array('L','C','R') AS $pos) {
-         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
-               $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']);
-               $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd);
-               $hd = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$hd);  // mPDF 5.7
-               if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; }
-               else { $hff = $this->original_default_font; }
-               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
-               else { $hfsz = $this->original_default_font_size; }     // pts
-               $maxfontheight = max($maxfontheight,$hfsz);
-               $hfst = '';
-               if (isset($h[$side][$pos]['font-style']) && $h[$side][$pos]['font-style']) { 
-                       $hfst = $h[$side][$pos]['font-style'];
-               }
-               if (isset($h[$side][$pos]['color']) && $h[$side][$pos]['color']) { 
-                       $hfcol = $h[$side][$pos]['color']; 
-                       $cor = $this->ConvertColor($hfcol);
-                       if ($cor) { $this->SetTColor($cor); }
-               }
-               else { $hfcol = ''; }
-               $this->SetFont($hff,$hfst,$hfsz,true,true);
-               $this->x = $headerlmargin ;
-               $this->y = $this->margin_header - $yadj ;
-
-               $hd = $this->purify_utf8_text($hd);
-               if ($this->text_input_as_HTML) {
-                       $hd = $this->all_entities_to_utf8($hd);
-               }
-               // CONVERT CODEPAGE
-               if ($this->usingCoreFont) { $hd = mb_convert_encoding($hd,$this->mb_enc,'UTF-8'); }
-               // DIRECTIONALITY RTL
-               $this->magic_reverse_dir($hd, true, $this->directionality);     // *RTL*
-               // Font-specific ligature substitution for Indic fonts
-               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($hd);        // *INDIC*
-               $align = $pos;
-/*-- RTL --*/
-               if ($this->directionality == 'rtl') { 
-                       if ($pos == 'L') { $align = 'R'; }
-                       else if ($pos == 'R') { $align = 'L'; }
-               }
-/*-- END RTL --*/
-               if ($pos!='L' && (strpos($hd,$this->aliasNbPg)!==false || strpos($hd,$this->aliasNbPgGp)!==false)) { 
-                       if (strpos($hd,$this->aliasNbPgGp)!==false) { $type= 'nbpggp'; } else { $type= 'nbpg'; }
-                       $this->_out('{mpdfheader'.$type.' '.$pos.' ff='.$hff.' fs='.$hfst.' fz='.$hfsz.'}'); 
-                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
-                       $this->_out('Q');
-               }
-               else { 
-                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
-               }
-               if ($hfcol) { $this->SetTColor($this->ConvertColor(0)); }
-         }
-       }
-       //Return Font to normal
-       $this->SetFont($this->default_font,'',$this->original_default_font_size);
-       // LINE
-       if (isset($h[$side]['line']) && $h[$side]['line']) { 
-               $this->SetLineWidth(0.1);
-               $this->SetDColor($this->ConvertColor(0));
-               $this->Line($headerlmargin , $this->margin_header + ($maxfontheight*(1+$this->header_line_spacing)/_MPDFK) - $yadj , $headerlmargin + $headerpgwidth, $this->margin_header + ($maxfontheight*(1+$this->header_line_spacing)/_MPDFK) - $yadj  );
-       }
-       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
-               $this->_out('Q');
-       }
-  }
-  $this->SetY($this->tMargin);
-  if ($this->ColActive) { $this->pgwidth = $this->ColWidth; }  // *COLUMNS*
-
-  $this->processingHeader=false;
-}
-
-
-
-/*-- TABLES --*/
-function TableHeaderFooter($content='',$tablestartpage='',$tablestartcolumn ='',$horf = 'H',$level, $firstSpread=true, $finalSpread=true) {
-  if(($horf=='H' || $horf=='F') && !empty($content)) { // mPDF 5.7.2
-       $table = &$this->table[1][1];
-
-       // mPDF 5.7.2
-       if ($horf=='F') { // Table Footer
-               $firstrow = count($table['cells']) - $table['footernrows'];
-               $lastrow = count($table['cells']) - 1;
-       }
-       else {  // Table Header
-               $firstrow = 0;
-               $lastrow = $table['headernrows'] - 1;
-       }
-       if(empty($content[$firstrow])) {
-               if ($this->debug) { $this->Error("&lt;tfoot&gt; must precede &lt;tbody&gt; in a table"); }
-               else { return; }
-       }
-
-       // Advance down page by half width of top border
-       if ($horf=='H') { // Only if header
-               if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T'];  }
-               else { $adv = $table['max_cell_border_width']['T'] /2 ; }
-               if ($adv) { 
-                  if ($this->table_rotate) {
-                       $this->y += ($adv);
-                  }
-                  else {
-                       $this->DivLn($adv,$this->blklvl,true); 
-                  }
-               }
-       }
-
-
-   $topy = $content[$firstrow][0]['y']-$this->y;
-
-   for ($i=$firstrow ; $i<=$lastrow; $i++) {
-
-    $y = $this->y;
-
-/*-- COLUMNS --*/
-       // If outside columns, this is done in PaintDivBB
-       if ($this->ColActive) {
-       //OUTER FILL BGCOLOR of DIVS
-        if ($this->blklvl > 0) {
-         $firstblockfill = $this->GetFirstBlockFill();
-         if ($firstblockfill && $this->blklvl >= $firstblockfill) {
-               $divh = $content[$i][0]['h'];
-               $bak_x = $this->x;
-               $this->DivLn($divh,-3,false);
-               // Reset current block fill
-               $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
-               $this->SetFColor($bcor);
-               $this->x = $bak_x;
-         }
-        }
-       }
-/*-- END COLUMNS --*/
-
-    $colctr = 0;
-    foreach($content[$i] as $tablehf) {
-       $colctr++;
-       $y = $tablehf['y'] - $topy;
-      $this->y = $y;
-      //Set some cell values
-      $x = $tablehf['x'];
-       if (($this->mirrorMargins) && ($tablestartpage == 'ODD') && (($this->page)%2==0)) {     // EVEN
-               $x = $x +$this->MarginCorrection;
-       }
-       else if (($this->mirrorMargins) && ($tablestartpage == 'EVEN') && (($this->page)%2==1)) {       // ODD
-               $x = $x +$this->MarginCorrection;
-       }
-/*-- COLUMNS --*/
-       // Added to correct for Columns
-       if ($this->ColActive) {
-          if ($this->directionality == 'rtl') {        // *RTL*
-               $x -= ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth+$this->ColGap);   // *RTL*
-          }    // *RTL*
-          else {       // *RTL*
-               $x += ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth+$this->ColGap);
-          }    // *RTL*
-       }
-/*-- END COLUMNS --*/
-
-       if ($colctr==1) { $x0 = $x; }
-
-       // mPDF ITERATION
-       if ($this->iterationCounter) {
-          foreach($tablehf['textbuffer'] AS $k=>$t) {
-               if (!is_array($t[0]) && preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) {        // mPDF 5.5.06
-                       $vname = '__'.$m[1].'_';
-                       if (!isset($this->$vname)) { $this->$vname = 1; }
-                       else { $this->$vname++; }
-                       $tablehf['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $tablehf['textbuffer'][$k][0]);
-               }
-          }
-       }
-
-
-      $w = $tablehf['w'];
-      $h = $tablehf['h'];
-      $va = $tablehf['va'];
-      $R = $tablehf['R'];
-      $mih = $tablehf['mih'];
-      $border = $tablehf['border'];
-      $border_details = $tablehf['border_details'];
-      $padding = $tablehf['padding'];
-       $this->tabletheadjustfinished = true;
-
-      $textbuffer = $tablehf['textbuffer'];
-
-      $align = $tablehf['a'];
-      //Align
-      $this->divalign=$align;
-       $this->x = $x;
-
-       if ($this->ColActive) {
-               if ($table['borders_separate']) { 
-                $tablefill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0;
-                if ($tablefill) {
-                               $color = $this->ConvertColor($tablefill);
-                               if ($color) {
-                                       $xadj = ($table['border_spacing_H']/2);
-                                       $yadj = ($table['border_spacing_V']/2);
-                                       $wadj = $table['border_spacing_H'];
-                                       $hadj = $table['border_spacing_V'];
-                                       if ($i == $firstrow && $horf=='H') {            // Top
-                                               $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
-                                               $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
-                                       }
-                                       if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i+$tablehf['rowspan']) == ($lastrow+1))  || (!isset($tablehf['rowspan']) && ($i+1) == ($lastrow+1))) && $horf=='F') { // Bottom
-                                               $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ;
-                                       }
-                                       if ($colctr == 1) {             // Left
-                                               $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
-                                               $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
-                                       }
-                                       if ($colctr == count($content[$i]) ) {  // Right
-                                               $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ;
-                                       }
-                                       $this->SetFColor($color);
-                                       $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F');
-                               }
-                }
-               }
-       }
-
-       if ($table['empty_cells']!='hide' || !empty($textbuffer) || !$table['borders_separate']) { $paintcell = true; }
-       else { $paintcell = false; } 
-
-       //Vertical align
-       if ($R && INTVAL($R) > 0 && isset($va) && $va!='B') { $va='B';}
-
-       if (!isset($va) || empty($va) || $va=='M') $this->y += ($h-$mih)/2;
-      elseif (isset($va) && $va=='B') $this->y += $h-$mih;
-
-
-       //TABLE ROW OR CELL FILL BGCOLOR
-       $fill = 0;
-       if (isset($tablehf['bgcolor']) && $tablehf['bgcolor'] && $tablehf['bgcolor']!='transparent') { 
-               $fill = $tablehf['bgcolor'];
-               $leveladj = 6;
-       }
-       else if (isset($content[$i][0]['trbgcolor']) && $content[$i][0]['trbgcolor'] && $content[$i][0]['trbgcolor']!='transparent') { // Row color
-               $fill = $content[$i][0]['trbgcolor'];
-               $leveladj = 3;
-       }
-       if ($fill && $paintcell) {
-               $color = $this->ConvertColor($fill);
-               if ($color) {
-                       if ($table['borders_separate']) { 
-                          if ($this->ColActive) {
-                               $this->SetFColor($color);
-                               $this->Rect($x+ ($table['border_spacing_H']/2), $y+ ($table['border_spacing_V']/2), $w- $table['border_spacing_H'], $h- $table['border_spacing_V'], 'F');
-                          }
-                          else {
-                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>($x + ($table['border_spacing_H']/2)), 'y'=>($y + ($table['border_spacing_V']/2)), 'w'=>($w - $table['border_spacing_H']), 'h'=>($h - $table['border_spacing_V']), 'col'=>$color);
-                          }
-                       }
-                       else { 
-                          if ($this->ColActive) {
-                               $this->SetFColor($color);
-                               $this->Rect($x, $y, $w, $h, 'F');
-                          }
-                          else {
-                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color);
-                          }
-                       }
-               }
-       }
-
-
-/*-- BACKGROUNDS --*/
-       if (isset($tablehf['gradient']) && $tablehf['gradient'] && $paintcell){
-               $g = $this->grad->parseBackgroundGradient($tablehf['gradient']);
-               if ($g) {
-                 if ($table['borders_separate']) { 
-                       $px = $x+ ($table['border_spacing_H']/2);
-                       $py = $y+ ($table['border_spacing_V']/2);
-                       $pw = $w- $table['border_spacing_H'];
-                       $ph = $h- $table['border_spacing_V'];
-                 }
-                 else {
-                       $px = $x;
-                       $py = $y;
-                       $pw = $w;
-                       $ph = $h;
-                 }
-                 if ($this->ColActive) {
-                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
-                 }
-                 else {
-                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                 }
-               }
-       }
-
-       if (isset($tablehf['background-image']) && $paintcell){
-         if ($tablehf['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $tablehf['background-image']['gradient'] )) {
-               $g = $this->grad->parseMozGradient( $tablehf['background-image']['gradient'] );
-               if ($g) {
-                 if ($table['borders_separate']) { 
-                       $px = $x+ ($table['border_spacing_H']/2);
-                       $py = $y+ ($table['border_spacing_V']/2);
-                       $pw = $w- $table['border_spacing_H'];
-                       $ph = $h- $table['border_spacing_V'];
-                 }
-                 else {
-                       $px = $x;
-                       $py = $y;
-                       $pw = $w;
-                       $ph = $h;
-                 }
-                 if ($this->ColActive) {
-                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
-                 }
-                 else {
-                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                 }
-               }
-         }
-         else if ($tablehf['background-image']['image_id']) {  // Background pattern
-               $n = count($this->patterns)+1;
-               if ($table['borders_separate']) { 
-                       $px = $x+ ($table['border_spacing_H']/2);
-                       $py = $y+ ($table['border_spacing_V']/2);
-                       $pw = $w- $table['border_spacing_H'];
-                       $ph = $h- $table['border_spacing_V'];
-               }
-               else {
-                       $px = $x;
-                       $py = $y;
-                       $pw = $w;
-                       $ph = $h;
-               }
-               if ($this->ColActive) {
-                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($tablehf['background-image']['orig_w'], $tablehf['background-image']['orig_h'], $pw, $ph, $tablehf['background-image']['resize'], $tablehf['background-image']['x_repeat'] , $tablehf['background-image']['y_repeat']);
-                       $this->patterns[$n] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'pgh'=>$this->h, 'image_id'=>$tablehf['background-image']['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$tablehf['background-image']['x_pos'] , 'y_pos'=>$tablehf['background-image']['y_pos'] , 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$tablehf['background-image']['itype']);
-                       if ($tablehf['background-image']['opacity']>0 && $tablehf['background-image']['opacity']<1) { $opac = $this->SetAlpha($tablehf['background-image']['opacity'],'Normal',true); }
-                       else { $opac = ''; }
-                       $this->_out(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px*_MPDFK, ($this->h-$py)*_MPDFK, $pw*_MPDFK, -$ph*_MPDFK));
-               }
-               else {
-                       $this->tableBackgrounds[$level*9+8][] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'image_id'=>$tablehf['background-image']['image_id'], 'orig_w'=>$tablehf['background-image']['orig_w'], 'orig_h'=>$tablehf['background-image']['orig_h'], 'x_pos'=>$tablehf['background-image']['x_pos'], 'y_pos'=>$tablehf['background-image']['y_pos'], 'x_repeat'=>$tablehf['background-image']['x_repeat'], 'y_repeat'=>$tablehf['background-image']['y_repeat'], 'clippath'=>'', 'resize'=>$tablehf['background-image']['resize'], 'opacity'=>$tablehf['background-image']['opacity'], 'itype'=>$tablehf['background-image']['itype']);
-               }
-         }
-       }
-/*-- END BACKGROUNDS --*/
-
-       //Cell Border
-       if ($table['borders_separate'] && $paintcell && $border) { 
-               $this->_tableRect($x+ ($table['border_spacing_H']/2)+($border_details['L']['w'] /2), $y+ ($table['border_spacing_V']/2)+($border_details['T']['w'] /2), $w-$table['border_spacing_H']-($border_details['L']['w'] /2)-($border_details['R']['w'] /2), $h- $table['border_spacing_V']-($border_details['T']['w'] /2)-($border_details['B']['w']/2), $border, $border_details, false, $table['borders_separate']);
-       }
-       else if ($paintcell && $border) { 
-               $this->_tableRect($x, $y, $w, $h, $border, $border_details, true, $table['borders_separate']);          // true causes buffer
-       }
-
-       //Print cell content
-      //$this->divheight = $this->table_lineheight*$this->lineheight; 
-      if (!empty($textbuffer)) {
-               if ($horf=='F' && preg_match('/{colsum([0-9]*)[_]*}/', $textbuffer[0][0], $m)) {
-                       $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$colctr-1]);
-                       $textbuffer[0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$textbuffer[0][0]);
-               }
-
-               if ($R) {
-                                       $cellPtSize = $textbuffer[0][11] / $this->shrin_k;
-                                       if (!$cellPtSize) { $cellPtSize = $this->default_font_size; }
-                                       $cellFontHeight = ($cellPtSize/_MPDFK);
-                                       $opx = $this->x;
-                                       $opy = $this->y;
-                                       $angle = INTVAL($R);
-                                       // Only allow 45 - 90 degrees (when bottom-aligned) or -90
-                                       if ($angle > 90) { $angle = 90; }
-                                       else if ($angle > 0 && (isset($va) && $va!='B')) { $angle = 90; }
-                                       else if ($angle > 0 && $angle <45) { $angle = 45; }
-                                       else if ($angle < 0) { $angle = -90; }
-                                       $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight);
-                                       if (isset($align) && $align =='R') { 
-                                               $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($padding['R'] + $border_details['R']['w']); 
-                                       }
-                                       else if (!isset($align ) || $align =='C') { 
-                                               $this->x += ($w/2) + ($offset); 
-                                       }
-                                       else { 
-                                               $this->x += ($offset) + ($cellFontHeight/3)+($padding['L'] + $border_details['L']['w']); 
-                                       }
-                                       $str = '';
-                                       foreach($tablehf['textbuffer'] AS $t) { $str .= $t[0].' '; }
-                                       $str = trim($str);
-
-                                       if (!isset($va) || $va=='M') { 
-                                               $this->y -= ($h-$mih)/2; //Undo what was added earlier VERTICAL ALIGN
-                                               if ($angle > 0) { $this->y += (($h-$mih)/2)+($padding['T'] + $border_details['T']['w']) + ($mih-($padding['T'] + $border_details['T']['w']+$border_details['B']['w']+$padding['B'])); }
-                                               else if ($angle < 0) { $this->y += (($h-$mih)/2)+($padding['T'] + $border_details['T']['w']); }
-                                       }
-                                       else if (isset($va) && $va=='B') { 
-                                               $this->y -= $h-$mih; //Undo what was added earlier VERTICAL ALIGN
-                                               if ($angle > 0) { $this->y += $h-($border_details['B']['w']+$padding['B']); }
-                                               else if ($angle < 0) { $this->y += $h-$mih+($padding['T'] + $border_details['T']['w']); }
-                                       }
-                                       else if (isset($va) && $va=='T') { 
-                                               if ($angle > 0) { $this->y += $mih-($border_details['B']['w']+$padding['B']); }
-                                               else if ($angle < 0) { $this->y += ($padding['T'] + $border_details['T']['w']); }
-                                       }
-
-                                       $this->Rotate($angle,$this->x,$this->y);
-                                       $s_fs = $this->FontSizePt;
-                                       $s_f = $this->FontFamily;
-                                       $s_st = $this->FontStyle;
-                                       if (!empty($textbuffer[0][3])) { //Font Color
-                                               $cor = $textbuffer[0][3];
-                                               $this->SetTColor($cor); 
-                                       }
-                                       $s_str = $this->strike;
-                                       $this->strike = $textbuffer[0][8]; //Strikethrough
-                                       $this->SetFont($textbuffer[0][4],$textbuffer[0][2],$cellPtSize,true,true);
-                                       $this->Text($this->x,$this->y,$str);
-                                       $this->Rotate(0);
-                                       $this->SetFont($s_f,$s_st,$s_fs,true,true);
-                                       $this->SetTColor(0);
-                                       $this->strike = $s_str;
-                                       $this->x = $opx;
-                                       $this->y = $opy;
-               }
-               else {
-                       if ($table['borders_separate']) {       // NB twice border width
-                               $xadj = $border_details['L']['w'] + $padding['L'] +($table['border_spacing_H']/2);
-                               $wadj = $border_details['L']['w'] + $border_details['R']['w'] + $padding['L'] +$padding['R'] + $table['border_spacing_H'];
-                               $yadj = $border_details['T']['w'] + $padding['T'] + ($table['border_spacing_H']/2);
-                       }
-                       else {
-                               $xadj = $border_details['L']['w']/2 + $padding['L'];
-                               $wadj = ($border_details['L']['w'] + $border_details['R']['w'])/2 + $padding['L'] + $padding['R'];
-                               $yadj = $border_details['T']['w']/2 + $padding['T'];
-                       }
-
-                       $this->divwidth=$w-($wadj);
-                       $this->x += $xadj;
-                       $this->y += $yadj;
-                       $this->printbuffer($textbuffer,'',true);
-               }
-
-       }
-      $textbuffer = array();
-
-/*-- BACKGROUNDS --*/
-                       if (!$this->ColActive) {
-                         if (isset($content[$i][0]['trgradients']) && ($colctr==1 || $table['borders_separate'])) { 
-                               $g = $this->grad->parseBackgroundGradient($content[$i][0]['trgradients']);
-                               if ($g) {
-                                       $gx = $x0;
-                                       $gy = $y;
-                                       $gh = $h;
-                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                                       if ($table['borders_separate']) { 
-                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
-                                               $s = '';
-                                               $clx = $x+ ($table['border_spacing_H']/2);
-                                               $cly = $y+ ($table['border_spacing_V']/2);
-                                               $clw = $w- $table['border_spacing_H'];
-                                               $clh = $h- $table['border_spacing_V'];
-                                               // Set clipping path
-                                               $s = ' q 0 w '; // Line width=0
-                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
-                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
-                                       }
-                                       else {
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                       }
-                               }
-                           }
-
-                          if (isset($content[$i][0]['trbackground-images']) && ($colctr==1 || $table['borders_separate'])) { 
-                           if ($content[$i][0]['trbackground-images']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $content[$i][0]['trbackground-images']['gradient'] )) {
-                               $g = $this->grad->parseMozGradient( $content[$i][0]['trbackground-images']['gradient'] );
-                               if ($g) {
-                                       $gx = $x0;
-                                       $gy = $y;
-                                       $gh = $h;
-                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                                       if ($table['borders_separate']) { 
-                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
-                                               $s = '';
-                                               $clx = $x+ ($table['border_spacing_H']/2);
-                                               $cly = $y+ ($table['border_spacing_V']/2);
-                                               $clw = $w- $table['border_spacing_H'];
-                                               $clh = $h- $table['border_spacing_V'];
-                                               // Set clipping path
-                                               $s = ' q 0 w '; // Line width=0
-                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
-                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
-                                       }
-                                       else {
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                       }
-                               }
-                           }
-                           else { 
-                               $image_id = $content[$i][0]['trbackground-images']['image_id'];
-                               $orig_w = $content[$i][0]['trbackground-images']['orig_w'];
-                               $orig_h = $content[$i][0]['trbackground-images']['orig_h'];
-                               $x_pos = $content[$i][0]['trbackground-images']['x_pos'];
-                               $y_pos = $content[$i][0]['trbackground-images']['y_pos'];
-                               $x_repeat = $content[$i][0]['trbackground-images']['x_repeat'];
-                               $y_repeat = $content[$i][0]['trbackground-images']['y_repeat'];
-                               $resize = $content[$i][0]['trbackground-images']['resize'];
-                               $opacity = $content[$i][0]['trbackground-images']['opacity'];
-                               $itype = $content[$i][0]['trbackground-images']['itype'];
-
-                               $clippath = '';
-                               $gx = $x0;
-                               $gy = $y;
-                               $gh = $h;
-                               $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                               if ($table['borders_separate']) { 
-                                       $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
-                                       $s = '';
-                                       $clx = $x+ ($table['border_spacing_H']/2);
-                                       $cly = $y+ ($table['border_spacing_V']/2);
-                                       $clw = $w- $table['border_spacing_H'];
-                                       $clh = $h- $table['border_spacing_V'];
-                                       // Set clipping path
-                                       $s = ' q 0 w '; // Line width=0
-                                       $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
-                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
-                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
-                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
-                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
-                                       $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                               }
-                               else {
-                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                               }
-                           }
-                          }
-                       }
-/*-- END BACKGROUNDS --*/
-
-       // TABLE BORDER - if separate OR collapsed and only table border
-       if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { 
-                       $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2);
-                       $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2);
-                       $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2);
-                       $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2);
-                       $tbx = $x;
-                       $tby = $y;
-                       $tbw = $w;
-                       $tbh = $h;
-                       $tab_bord = 0;
-                       $corner = '';
-                       if ($i == $firstrow && $horf=='H') {            // Top
-                               $tby -= $halfspaceT + ($table['border_details']['T']['w']/2);
-                               $tbh += $halfspaceT + ($table['border_details']['T']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_TOP); 
-                               $corner .= 'T';
-                       }
-                       if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i+$tablehf['rowspan']) == ($lastrow+1))) && $horf=='F') {     // Bottom
-                               $tbh += $halfspaceB + ($table['border_details']['B']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_BOTTOM); 
-                               $corner .= 'B';
-                       }
-                       if ($colctr == 1 && $firstSpread) {     // Left
-                               $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2);
-                               $tbw += $halfspaceL + ($table['border_details']['L']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_LEFT); 
-                               $corner .= 'L';
-                       }
-                       if ($colctr == count($content[$i]) && $finalSpread) {   // Right
-                               $tbw += $halfspaceR + ($table['border_details']['R']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_RIGHT); 
-                               $corner .= 'R';
-                       }
-                       $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord , $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H'] );
-       }
-
-
-     }// end column $content
-     $this->y = $y + $h; //Update y coordinate
-   }// end row $i
-   unset($table );
-   $this->colsums = array();
-  }
-}
-/*-- END TABLES --*/
-
-/*-- HTMLHEADERS-FOOTERS --*/
-function SetHTMLHeader($header='',$OE='',$write=false) {
-
-       $height = 0;
-       if (is_array($header) && isset($header['html']) && $header['html']) { 
-               $Hhtml = $header['html']; 
-               if ($this->setAutoTopMargin) {
-                       if (isset($header['h'])) { $height = $header['h']; }
-                       else { $height = $this->_gethtmlheight($Hhtml); }
-               }
-       }
-       else if (!is_array($header) && $header) { 
-               $Hhtml = $header; 
-               if ($this->setAutoTopMargin) { $height = $this->_gethtmlheight($Hhtml); }
-       }
-       else { $Hhtml = ''; }
-
-       if ($OE != 'E') { $OE = 'O'; }
-       if ($OE == 'E') {
-          
-          if ($Hhtml) {
-               $this->HTMLHeaderE['html'] = $Hhtml;
-               $this->HTMLHeaderE['h'] = $height;
-          }
-          else { $this->HTMLHeaderE = ''; }
-       }
-       else {
-          
-          if ($Hhtml) {
-               $this->HTMLHeader['html'] = $Hhtml;
-               $this->HTMLHeader['h'] = $height;
-          }
-          else { $this->HTMLHeader = ''; }
-       }
-       if (!$this->mirrorMargins && $OE == 'E') { return; }
-       if ($Hhtml=='') { return; }
-       if ($OE == 'E') {
-               $this->headerDetails['even'] = array(); // override and clear any other non-HTML header/footer
-       }
-       else {
-               $this->headerDetails['odd'] = array();  // override and clear any non-HTML other header/footer
-       }
-
-       if ($this->setAutoTopMargin=='pad') {
-               $this->tMargin = $this->margin_header + $height + $this->orig_tMargin;
-               if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; }
-       }
-       else if ($this->setAutoTopMargin=='stretch') {
-               $this->tMargin = max($this->orig_tMargin, $this->margin_header + $height + $this->autoMarginPadding);
-               if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; }
-       }
-       if ($write && $this->state!=0 && (($this->mirrorMargins && $OE == 'E' && ($this->page)%2==0) || ($this->mirrorMargins && $OE != 'E' && ($this->page)%2==1) || !$this->mirrorMargins)) { $this->writeHTMLHeaders(); }
-}
-
-function SetHTMLFooter($footer='',$OE='') {
-
-       $height = 0;
-       if (is_array($footer) && isset($footer['html']) && $footer['html']) { 
-               $Fhtml = $footer['html']; 
-               if ($this->setAutoBottomMargin) {
-                       if (isset($footer['h'])) { $height = $footer['h']; }
-                       else { $height = $this->_gethtmlheight($Fhtml); }
-               }
-       }
-       else if (!is_array($footer) && $footer) { 
-               $Fhtml = $footer; 
-               if ($this->setAutoBottomMargin) { $height = $this->_gethtmlheight($Fhtml); }
-       }
-       else { $Fhtml = ''; }
-
-       if ($OE != 'E') { $OE = 'O'; }
-       if ($OE == 'E') {
-          
-          if ($Fhtml) {
-               $this->HTMLFooterE['html'] = $Fhtml;
-               $this->HTMLFooterE['h'] = $height;
-          }
-          else { $this->HTMLFooterE = ''; }
-       }
-       else {
-          
-          if ($Fhtml) {
-               $this->HTMLFooter['html'] = $Fhtml;
-               $this->HTMLFooter['h'] = $height;
-          }
-          else { $this->HTMLFooter = ''; }
-       }
-       if (!$this->mirrorMargins && $OE == 'E') { return; }
-       if ($Fhtml=='') { return false; }
-       if ($OE == 'E') {
-               $this->footerDetails['even'] = array(); // override and clear any other header/footer
-       }
-       else {
-               $this->footerDetails['odd'] = array();  // override and clear any other header/footer
-       }
-
-       if ($this->setAutoBottomMargin=='pad') {
-               $this->bMargin = $this->margin_footer + $height + $this->orig_bMargin;
-               $this->PageBreakTrigger=$this->h-$this->bMargin ;
-               if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; }
-       }
-       else if ($this->setAutoBottomMargin=='stretch') {
-               $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $height + $this->autoMarginPadding);
-               $this->PageBreakTrigger=$this->h-$this->bMargin ;
-               if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; }
-       }
-}
-
-
-function _getHtmlHeight($html) {
-               $save_state = $this->state;
-               if($this->state==0) {
-                       $this->AddPage($this->CurOrientation);
-               }
-               $this->state = 2;
-               $this->Reset();
-               $this->pageoutput[$this->page] = array();
-               $save_x = $this->x;
-               $save_y = $this->y;
-               $this->x = $this->lMargin;
-               $this->y = $this->margin_header;
-               $html = str_replace('{PAGENO}',$this->pagenumPrefix.$this->docPageNum($this->page).$this->pagenumSuffix,$html);
-               $html = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->docPageNumTotal($this->page).$this->nbpgSuffix,$html );
-               $html = str_replace($this->aliasNbPg,$this->page,$html );
-               $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7
-               $this->HTMLheaderPageLinks = array();
-               $this->HTMLheaderPageAnnots = array();
-               $this->HTMLheaderPageForms = array();
-               $savepb = $this->pageBackgrounds;
-               $this->writingHTMLheader = true;
-               $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
-               $this->writingHTMLheader = false;
-               $h = ($this->y - $this->margin_header);
-               $this->Reset();
-               // mPDF 5.7.2 - Clear in case Float used in Header/Footer
-               $this->blk[0]['blockContext'] = 0;
-               $this->blk[0]['float_endpos'] = 0;
-
-               $this->pageoutput[$this->page] = array();
-               $this->headerbuffer = '';
-               $this->pageBackgrounds = $savepb;
-               $this->x = $save_x;
-               $this->y = $save_y;
-               $this->state = $save_state;
-               if($save_state==0) {
-                       unset($this->pages[1]);
-                       $this->page = 0;
-               }
-               return $h;
-}
-
-
-// Called internally from Header
-function writeHTMLHeaders() {
-
-       if ($this->mirrorMargins && ($this->page)%2==0) { $OE = 'E'; }  // EVEN
-       else { $OE = 'O'; }
-       if ($OE == 'E') {
-               $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeaderE['html'] ;
-       }
-       else {
-               $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeader['html'] ;
-       }
-       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
-               $this->saveHTMLHeader[$this->page][$OE]['rotate'] = true;
-               $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->tMargin;
-               $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->bMargin;
-               $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header;
-               $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer;
-               $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->h;
-               $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->w;
-       }
-       else {
-               $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->lMargin;
-               $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->rMargin;
-               $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header;
-               $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer;
-               $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->w;
-               $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->h;
-       }
-}
-
-function writeHTMLFooters() {
-
-       if ($this->mirrorMargins && ($this->page)%2==0) { $OE = 'E'; }  // EVEN
-       else { $OE = 'O'; }
-       if ($OE == 'E') {
-               $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooterE['html'] ;
-       }
-       else {
-               $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooter['html'] ;
-       }
-       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
-               $this->saveHTMLFooter[$this->page][$OE]['rotate'] = true;
-               $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->tMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->bMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->rMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->lMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header;
-               $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer;
-               $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->h;
-               $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->w;
-       }
-       else {
-               $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->lMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->rMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->tMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->bMargin;
-               $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header;
-               $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer;
-               $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->w;
-               $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->h;
-       }
-}
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-function DefHeaderByName($name,$arr) {
-       if (!$name) { $name = '_default'; }
-       $this->pageheaders[$name] = $arr;
-}
-
-function DefFooterByName($name,$arr) {
-       if (!$name) { $name = '_default'; }
-       $this->pagefooters[$name] = $arr;
-}
-
-function SetHeaderByName($name,$side='O',$write=false) {
-       if (!$name) { $name = '_default'; }
-       if ($side=='E') { $this->headerDetails['even'] = $this->pageheaders[$name]; }
-       else { $this->headerDetails['odd'] = $this->pageheaders[$name]; }
-       if ($write) { $this->Header(); }
-}
-
-function SetFooterByName($name,$side='O') {
-       if (!$name) { $name = '_default'; }
-       if ($side=='E') { $this->footerDetails['even'] = $this->pagefooters[$name]; }
-       else { $this->footerDetails['odd'] = $this->pagefooters[$name]; }
-}
-
-/*-- HTMLHEADERS-FOOTERS --*/
-function DefHTMLHeaderByName($name,$html) {
-       if (!$name) { $name = '_default'; }
-
-       $this->pageHTMLheaders[$name]['html'] = $html;
-       $this->pageHTMLheaders[$name]['h'] = $this->_gethtmlheight($html);
-}
-
-function DefHTMLFooterByName($name,$html) {
-       if (!$name) { $name = '_default'; }
-
-       $this->pageHTMLfooters[$name]['html'] = $html;
-       $this->pageHTMLfooters[$name]['h'] = $this->_gethtmlheight($html);
-}
-
-function SetHTMLHeaderByName($name,$side='O',$write=false) {
-       if (!$name) { $name = '_default'; }
-       $this->SetHTMLHeader($this->pageHTMLheaders[$name],$side,$write);
-}
-
-function SetHTMLFooterByName($name,$side='O') {
-       if (!$name) { $name = '_default'; }
-       $this->SetHTMLFooter($this->pageHTMLfooters[$name],$side,$write);
-}
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-
-function SetHeader($Harray=array(),$side='',$write=false) {
-  if (is_string($Harray)) {
-    if (strlen($Harray)==0) {
-       if ($side=='O') { $this->headerDetails['odd'] = array(); }
-       else if ($side=='E') { $this->headerDetails['even'] = array(); }
-       else { $this->headerDetails = array(); }
-   }
-   else if (strpos($Harray,'|') || strpos($Harray,'|')===0) {
-       $hdet = explode('|',$Harray);
-       $this->headerDetails = array (
-               'odd' => array (
-       'L' => array ('content' => $hdet[0], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'C' => array ('content' => $hdet[1], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'R' => array ('content' => $hdet[2], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'line' => $this->defaultheaderline,
-               ),
-               'even' => array (
-       'R' => array ('content' => $hdet[0], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'C' => array ('content' => $hdet[1], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'L' => array ('content' => $hdet[2], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'line' => $this->defaultheaderline,
-               )
-       );
-    }
-    else {
-       $this->headerDetails = array (
-               'odd' => array (
-       'R' => array ('content' => $Harray, 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'line' => $this->defaultheaderline,
-               ),
-               'even' => array (
-       'L' => array ('content' => $Harray, 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
-       'line' => $this->defaultheaderline,
-               )
-       );
-    }
-  }
-  else if (is_array($Harray)) {
-       if ($side=='O') { $this->headerDetails['odd'] = $Harray; }
-       else if ($side=='E') { $this->headerDetails['even'] = $Harray; }
-       else { $this->headerDetails = $Harray; }
-  }
-/*-- HTMLHEADERS-FOOTERS --*/
-  // Overwrite any HTML Header previously set
-  if ($side=='E') { $this->SetHTMLHeader('','E'); }
-  else if ($side=='O') {  $this->SetHTMLHeader(''); }
-  else {
-       $this->SetHTMLHeader('');
-       $this->SetHTMLHeader('','E');
-  }
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-  if ($write) { 
-       $save_y = $this->y;
-       $this->Header();
-       $this->SetY($save_y) ; 
-  }
-}
-
-
-
-
-function SetFooter($Farray=array(),$side='') {
-  if (is_string($Farray)) {
-    if (strlen($Farray)==0) {
-       if ($side=='O') { $this->footerDetails['odd'] = array(); }
-       else if ($side=='E') { $this->footerDetails['even'] = array(); }
-       else { $this->footerDetails = array(); }
-    }
-    else if (strpos($Farray,'|') || strpos($Farray,'|')===0) {
-       $fdet = explode('|',$Farray);
-       $this->footerDetails = array (
-               'odd' => array (
-       'L' => array ('content' => $fdet[0], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'C' => array ('content' => $fdet[1], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'R' => array ('content' => $fdet[2], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'line' => $this->defaultfooterline,
-               ),
-               'even' => array (
-       'R' => array ('content' => $fdet[0], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'C' => array ('content' => $fdet[1], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'L' => array ('content' => $fdet[2], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'line' => $this->defaultfooterline,
-               )
-       );
-    }
-    else {
-       $this->footerDetails = array (
-               'odd' => array (
-       'R' => array ('content' => $Farray, 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'line' => $this->defaultfooterline,
-               ),
-               'even' => array (
-       'L' => array ('content' => $Farray, 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
-       'line' => $this->defaultfooterline,
-               )
-       );
-    }
-  }
-  else if (is_array($Farray)) {
-       if ($side=='O') { $this->footerDetails['odd'] = $Farray; }
-       else if ($side=='E') { $this->footerDetails['even'] = $Farray; }
-       else { $this->footerDetails = $Farray; }
-  }
-/*-- HTMLHEADERS-FOOTERS --*/
-  // Overwrite any HTML Footer previously set
-  if ($side=='E') { $this->SetHTMLFooter('','E'); }
-  else if ($side=='O') {  $this->SetHTMLFooter(''); }
-  else {
-       $this->SetHTMLFooter('');
-       $this->SetHTMLFooter('','E');
-  }
-/*-- END HTMLHEADERS-FOOTERS --*/
-}
-
-/*-- WATERMARK --*/
-function setUnvalidatedText($txt='', $alpha=-1) {
-       if ($alpha>=0) $this->watermarkTextAlpha = $alpha;
-       $this->watermarkText = $txt;
-}
-function SetWatermarkText($txt='', $alpha=-1) {
-       if ($alpha>=0) $this->watermarkTextAlpha = $alpha;
-       $this->watermarkText = $txt;
-}
-
-function SetWatermarkImage($src, $alpha=-1, $size='D', $pos='F') {
-       if ($alpha>=0) $this->watermarkImageAlpha = $alpha;
-       $this->watermarkImage = $src;
-       $this->watermark_size = $size;
-       $this->watermark_pos = $pos;
-}
-/*-- END WATERMARK --*/
-
-
-//Page footer
-function Footer() {
-/*-- CSS-PAGE --*/
-  // PAGED MEDIA - CROP / CROSS MARKS from @PAGE
-  if ($this->show_marks == 'CROP' || $this->show_marks == 'CROPCROSS') {
-       // Show TICK MARKS
-       $this->SetLineWidth(0.1);       // = 0.1 mm
-       $this->SetDColor($this->ConvertColor(0));
-       $l = $this->cropMarkLength;
-       $m = $this->cropMarkMargin;     // Distance of crop mark from margin 
-       $b = $this->nonPrintMargin;     // Non-printable border at edge of paper sheet 
-       $ax1 = $b;
-       $bx = $this->page_box['outer_width_LR'] - $m;
-       $ax = max($ax1, $bx-$l);
-       $cx1 = $this->w - $b;
-       $dx = $this->w - $this->page_box['outer_width_LR'] + $m;
-       $cx = min($cx1, $dx+$l);
-       $ay1 = $b;
-       $by = $this->page_box['outer_width_TB'] - $m;
-       $ay = max($ay1, $by-$l);
-       $cy1 = $this->h - $b;
-       $dy = $this->h - $this->page_box['outer_width_TB'] + $m;
-       $cy = min($cy1, $dy+$l);
-
-       $this->Line($ax, $this->page_box['outer_width_TB'], $bx, $this->page_box['outer_width_TB']);
-       $this->Line($cx, $this->page_box['outer_width_TB'], $dx, $this->page_box['outer_width_TB']);
-       $this->Line($ax, $this->h - $this->page_box['outer_width_TB'], $bx, $this->h - $this->page_box['outer_width_TB']);
-       $this->Line($cx, $this->h - $this->page_box['outer_width_TB'], $dx, $this->h - $this->page_box['outer_width_TB']);
-       $this->Line($this->page_box['outer_width_LR'], $ay, $this->page_box['outer_width_LR'], $by);
-       $this->Line($this->page_box['outer_width_LR'], $cy, $this->page_box['outer_width_LR'], $dy);
-       $this->Line($this->w - $this->page_box['outer_width_LR'], $ay, $this->w - $this->page_box['outer_width_LR'], $by);
-       $this->Line($this->w - $this->page_box['outer_width_LR'], $cy, $this->w - $this->page_box['outer_width_LR'], $dy);
-
-       if ($this->printers_info) {
-               $hd = date('Y-m-d H:i').'  Page '.$this->page.' of {nb}';
-               $this->SetTColor($this->ConvertColor(0));
-               $this->SetFont('arial','',7.5,true,true);
-               $this->x = $this->page_box['outer_width_LR'] + 1.5;
-               $this->y = 1;
-               $this->Cell($headerpgwidth ,$this->FontSize,$hd,0,0,'L',0,'',0,0,0,'M');
-               $this->SetFont($this->default_font,'',$this->original_default_font_size);
-       }
-
-  }
-  if ($this->show_marks == 'CROSS' || $this->show_marks == 'CROPCROSS') {
-       $this->SetLineWidth(0.1);       // = 0.1 mm
-       $this->SetDColor($this->ConvertColor(0));
-       $l = 14 /2;     // longer length of the cross line (half)
-       $w = 6 /2;      // shorter width of the cross line (half)
-       $r = 1.2;       // radius of circle
-       $m = $this->crossMarkMargin;    // Distance of cross mark from margin 
-       $x1 = $this->page_box['outer_width_LR'] - $m;
-       $x2 = $this->w - $this->page_box['outer_width_LR'] + $m;
-       $y1 = $this->page_box['outer_width_TB'] - $m;
-       $y2 = $this->h - $this->page_box['outer_width_TB'] + $m;
-       // Left
-       $this->Circle($x1, $this->h/2, $r, 'S') ;
-       $this->Line($x1-$w, $this->h/2, $x1+$w, $this->h/2);
-       $this->Line($x1, $this->h/2-$l, $x1, $this->h/2+$l);
-       // Right
-       $this->Circle($x2, $this->h/2, $r, 'S') ;
-       $this->Line($x2-$w, $this->h/2, $x2+$w, $this->h/2);
-       $this->Line($x2, $this->h/2-$l, $x2, $this->h/2+$l);
-       // Top
-       $this->Circle($this->w/2, $y1, $r, 'S') ;
-       $this->Line($this->w/2, $y1-$w, $this->w/2, $y1+$w);
-       $this->Line($this->w/2-$l, $y1, $this->w/2+$l, $y1);
-       // Bottom
-       $this->Circle($this->w/2, $y2, $r, 'S') ;
-       $this->Line($this->w/2, $y2-$w, $this->w/2, $y2+$w);
-       $this->Line($this->w/2-$l, $y2, $this->w/2+$l, $y2);
-  }
-
-
-       // If @page set non-HTML headers/footers named, they were not read until later in the HTML code - so now set them
-       if ($this->page==1) {
-               if ($this->firstPageBoxHeader) {
-                       $this->headerDetails['odd'] = $this->pageheaders[$this->firstPageBoxHeader]; 
-                       $this->Header();
-               }
-               if ($this->firstPageBoxFooter) {
-                       $this->footerDetails['odd'] = $this->pagefooters[$this->firstPageBoxFooter];
-               }
-               $this->firstPageBoxHeader='';
-               $this->firstPageBoxFooter='';
-       }
-/*-- END CSS-PAGE --*/
-
-
-
-/*-- HTMLHEADERS-FOOTERS --*/
-  if (($this->mirrorMargins && ($this->page%2==0) && $this->HTMLFooterE) || ($this->mirrorMargins && ($this->page%2==1) && $this->HTMLFooter) || (!$this->mirrorMargins && $this->HTMLFooter)) {
-       $this->writeHTMLFooters(); 
-/*-- WATERMARK --*/
-       if (($this->watermarkText) && ($this->showWatermarkText)) {
-               $this->watermark( $this->watermarkText, 45, 120, $this->watermarkTextAlpha);    // Watermark text
-       }
-       if (($this->watermarkImage) && ($this->showWatermarkImage)) {
-               $this->watermarkImg( $this->watermarkImage, $this->watermarkImageAlpha);        // Watermark image
-       }
-/*-- END WATERMARK --*/
-       return;
-  }
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-  $this->processingHeader=true;
-  $this->ResetMargins();       // necessary after columns
-  $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-/*-- WATERMARK --*/
-  if (($this->watermarkText) && ($this->showWatermarkText)) {
-       $this->watermark( $this->watermarkText, 45, 120, $this->watermarkTextAlpha);    // Watermark text
-  }
-  if (($this->watermarkImage) && ($this->showWatermarkImage)) {
-       $this->watermarkImg( $this->watermarkImage, $this->watermarkImageAlpha);        // Watermark image
-  }
-/*-- END WATERMARK --*/
-  $h = $this->footerDetails;
-  if(count($h)) {
-
-       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
-               $this->_out(sprintf('q 0 -1 1 0 0 %.3F cm ',($this->h*_MPDFK)));
-               $headerpgwidth = $this->h - $this->orig_lMargin - $this->orig_rMargin;
-               if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-                       $headerlmargin = $this->orig_rMargin;
-               }
-               else {
-                       $headerlmargin = $this->orig_lMargin;
-               }
-       }
-       else { 
-               $yadj = 0; 
-               $headerpgwidth = $this->pgwidth;
-               $headerlmargin = $this->lMargin;
-       }
-       $this->SetY(-$this->margin_footer);
-
-       $this->SetTColor($this->ConvertColor(0));
-       $this->SUP = false;
-       $this->SUB = false;
-       $this->bullet = false;
-
-       // only show pagenumber if numbering on
-       $pgno = $this->docPageNum($this->page, true); 
-
-       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-                       $side = 'even';
-       }
-       else {  // ODD  // OR NOT MIRRORING MARGINS/FOOTERS = DEFAULT
-                       $side = 'odd';
-       }
-       $maxfontheight = 0;
-       foreach(array('L','C','R') AS $pos) {
-         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
-               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
-               else { $hfsz = $this->default_font_size; }
-               $maxfontheight = max($maxfontheight,$hfsz);
-         }
-       }
-       // LEFT-CENTER-RIGHT
-       foreach(array('L','C','R') AS $pos) {
-         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
-               $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']);
-               $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd);
-               $hd = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$hd);  // mPDF 5.7
-               if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; }
-               else { $hff = $this->original_default_font; }
-               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
-               else { $hfsz = $this->original_default_font_size; }
-               $maxfontheight = max($maxfontheight,$hfsz);
-               if (isset($h[$side][$pos]['font-style']) && $h[$side][$pos]['font-style']) { $hfst = $h[$side][$pos]['font-style']; }
-               else { $hfst = ''; }
-               if (isset($h[$side][$pos]['color']) && $h[$side][$pos]['color']) { 
-                       $hfcol = $h[$side][$pos]['color']; 
-                       $cor = $this->ConvertColor($hfcol);
-                       if ($cor) { $this->SetTColor($cor); }
-               }
-               else { $hfcol = ''; }
-               $this->SetFont($hff,$hfst,$hfsz,true,true);
-               $this->x = $headerlmargin ;
-               $this->y = $this->h - $this->margin_footer - ($maxfontheight/_MPDFK);
-               $hd = $this->purify_utf8_text($hd);
-               if ($this->text_input_as_HTML) {
-                       $hd = $this->all_entities_to_utf8($hd);
-               }
-               // CONVERT CODEPAGE
-               if ($this->usingCoreFont) { $hd = mb_convert_encoding($hd,$this->mb_enc,'UTF-8'); }
-               // DIRECTIONALITY RTL
-               $this->magic_reverse_dir($hd, true, $this->directionality);     // *RTL*
-               // Font-specific ligature substitution for Indic fonts
-               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($hd);        // *INDIC*
-               $align = $pos;
-               if ($this->directionality == 'rtl') { 
-                       if ($pos == 'L') { $align = 'R'; }
-                       else if ($pos == 'R') { $align = 'L'; }
-               }
-
-               if ($pos!='L' && (strpos($hd,$this->aliasNbPg)!==false || strpos($hd,$this->aliasNbPgGp)!==false)) { 
-                       if (strpos($hd,$this->aliasNbPgGp)!==false) { $type= 'nbpggp'; } else { $type= 'nbpg'; }
-                       $this->_out('{mpdfheader'.$type.' '.$pos.' ff='.$hff.' fs='.$hfst.' fz='.$hfsz.'}'); 
-                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
-                       $this->_out('Q');
-               }
-               else { 
-                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
-               }
-               if ($hfcol) { $this->SetTColor($this->ConvertColor(0)); }
-         }
-       }
-       // Return Font to normal
-       $this->SetFont($this->default_font,'',$this->original_default_font_size);
-
-       // LINE
-
-       if (isset($h[$side]['line']) && $h[$side]['line']) { 
-               $this->SetLineWidth(0.1);
-               $this->SetDColor($this->ConvertColor(0));
-               $this->Line($headerlmargin , $this->y-($maxfontheight*($this->footer_line_spacing)/_MPDFK), $headerlmargin +$headerpgwidth, $this->y-($maxfontheight*($this->footer_line_spacing)/_MPDFK));
-       }
-       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
-               $this->_out('Q');
-       }
-  }
-  $this->processingHeader=false;
-
-}
-
-///////////////////
-// HYPHENATION
-///////////////////
-// mPDF 5.6.21
-// Hard hyphens
-function hardHyphenate($word, $maxWidth) {
-       // Don't hyphenate web addresses
-       if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
-
-       // Get dictionary
-       $poss = array();
-       $softhyphens = array();
-       $offset = 0;
-       $p = true;
-       if ($this->usingCoreFont) {
-               $wl = strlen($word);
-       }
-       else {
-               $wl = mb_strlen($word,'UTF-8');
-       }
-       while($offset < $wl) {
-               if (!$this->usingCoreFont) { 
-                       $p = mb_strpos($word, "-", $offset, 'UTF-8');
-               }
-               else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
-                       $p = strpos($word, "-", $offset);
-               }
-               if ($p !== false) { $poss[] = $p; }     // mPDF 5.7.2
-               else { break; }
-               $offset = $p+1;
-       }
-       $success = false;
-       foreach($poss AS $i) {
-                       if ($this->usingCoreFont) { 
-                               $a = substr($word,0,$i);
-                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
-                               $pre = $a;
-                               $post = substr($word,$i,strlen($word));
-                               $prelength = strlen($pre);
-                       }
-                       else { 
-                               $a = mb_substr($word,0,$i,'UTF-8');
-                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
-                               $pre = $a;
-                               $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8');
-                               $prelength = mb_strlen($pre, 'UTF-8');
-                       }
-                       $success = true;
-       }
-       return array($success,$pre,$post,$prelength);
-}
-
-
-/*-- HYPHENATION --*/
-///////////////////
-///////////////////
-// HYPHENATION
-///////////////////
-// Soft hyphs
-function softHyphenate($word, $maxWidth) {
-       // Don't hyphenate web addresses
-       if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
-
-       // Get dictionary
-       $poss = array();
-       $softhyphens = array();
-       $offset = 0;
-       $p = true;
-       if ($this->usingCoreFont) {
-               $wl = strlen($word);
-       }
-       else {
-               $wl = mb_strlen($word,'UTF-8');
-       }
-       while($offset < $wl) {
-               // Soft Hyphens chr(173)
-               if (!$this->usingCoreFont) { 
-                       $p = mb_strpos($word, "\xc2\xad", $offset, 'UTF-8');
-               }
-               else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
-                       $p = strpos($word, chr(173), $offset);
-               }
-               // mPDF 5.7.2
-               //if ($p !== false) { $poss[] = $p - count($poss); }
-               if ($p !== false) { $poss[] = $p; }
-               else { break; }
-               $offset = $p+1;
-       }
-       $success = false;
-       foreach($poss AS $i) {
-                       if ($this->usingCoreFont) { 
-                               $a = substr($word,0,$i);
-                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
-                               $pre = $a;
-                               $post = substr($word,$i,strlen($word));
-                               $prelength = strlen($pre);
-                       }
-                       else { 
-                               $a = mb_substr($word,0,$i,'UTF-8');
-                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
-                               $pre = $a;
-                               $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8');
-                               $prelength = mb_strlen($pre, 'UTF-8');
-                       }
-                       $success = true;
-       }
-       return array($success,$pre,$post,$prelength);
-}
-
-///////////////////
-// Word hyphenation
-function hyphenateWord($word, $maxWidth) {
-       // Do everything inside this function in utf-8
-       // Don't hyphenate web addresses
-       if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
-
-
-       // Get dictionary
-       if (!$this->loadedSHYdictionary) {
-               if (file_exists(_MPDF_PATH.'patterns/dictionary.txt')) {
-                       $this->SHYdictionary = file(_MPDF_PATH.'patterns/dictionary.txt',FILE_SKIP_EMPTY_LINES);
-                       foreach($this->SHYdictionary as $entry) {
-                               $entry = trim($entry);
-                               $poss = array();
-                               $offset = 0;
-                               $p = true;
-                               $wl = mb_strlen($entry ,'UTF-8');
-                               while($offset < $wl) {
-                                       $p = mb_strpos($entry, '/', $offset, 'UTF-8');
-                                       if ($p !== false) { $poss[] = $p - count($poss); }
-                                       else { break; }
-                                       $offset = $p+1;
-                               }
-                               if (count($poss)) { $this->SHYdictionaryWords[str_replace('/', '', mb_strtolower($entry))] = $poss; }
-                       }
-               }
-               $this->loadedSHYdictionary = true;
-       }
-
-       if (!in_array($this->SHYlang,$this->SHYlanguages)) { return array(false,'','',''); }
-       // If no pattern loaded or not the best one
-       if (count($this->SHYpatterns) < 1  || ($this->loadedSHYpatterns && $this->loadedSHYpatterns != $this->SHYlang)) {
-               include(_MPDF_PATH."patterns/" . $this->SHYlang . ".php"); 
-               $patterns = explode(' ', $patterns);
-               $new_patterns = array();
-               for($i = 0; $i < count($patterns); $i++) {
-                       $value = $patterns[$i];
-                       $new_patterns[preg_replace('/[0-9]/', '', $value)] = $value;
-               }
-               $this->SHYpatterns = $new_patterns;
-               $this->loadedSHYpatterns = $this->SHYlang;
-       }
-
-       if ($this->usingCoreFont) { $word = mb_convert_encoding($word,'UTF-8',$this->mb_enc); }
-
-       $prepre = '';
-       $postpost = '';
-       $startpunctuation = "\xc2\xab\xc2\xbf\xe2\x80\x98\xe2\x80\x9b\xe2\x80\x9c\xe2\x80\x9f";
-       $endpunctuation = "\xe2\x80\x9e\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x99\xc2\xbb";
-       $pre = '';
-       $post = '';
-
-
-       if (preg_match('/^(["\''.$startpunctuation .'])+(.{'.$this->SHYcharmin.',})$/u',$word,$m)) {
-               $prepre = $m[1];
-               $word = $m[2];
-       }
-       if (preg_match('/^(.{'.$this->SHYcharmin.',})([\'\.,;:!?"'.$endpunctuation .']+)$/u',$word,$m)) {
-               $word = $m[1];
-               $postpost = $m[2];
-       }
-       if(mb_strlen($word,'UTF-8') < $this->SHYcharmin) {
-                       return array(false,'','','');
-       }
-       $success = false;
-
-       if(isset($this->SHYdictionaryWords[mb_strtolower($word)])) {
-          foreach($this->SHYdictionaryWords[mb_strtolower($word)] AS $i) {
-                       $a = $prepre . mb_substr($word,0,$i,'UTF-8');
-                       if ($this->usingCoreFont) { $testa = mb_convert_encoding($a,$this->mb_enc,'UTF-8'); }
-                       else { $testa = $a; }
-                       if ($this->GetStringWidth($testa.'-') > $maxWidth) { break ; }
-                       $pre = $a;
-                       $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8') . $postpost;
-                       $success = true;
-          }
-       }
-
-       if (!$success) {
-          $text_word = '_' . $word . '_';
-          $word_length = mb_strlen($text_word,'UTF-8');
-
-          $single_character = preg_split('//u', $text_word);
-
-          $text_word = mb_strtolower($text_word,'UTF-8');
-          $hyphenated_word = array();
-          $numb3rs = array('0' => true, '1' => true, '2' => true, '3' => true, '4' => true, '5' => true, '6' => true, '7' => true, '8' => true, '9' => true);
-          for($position = 0; $position <= ($word_length - $this->SHYcharmin); $position++) {
-               $maxwins = min(($word_length - $position), $this->SHYcharmax);
-               for($win = $this->SHYcharmin; $win <= $maxwins; $win++) {
-                       if(isset($this->SHYpatterns[mb_substr($text_word, $position, $win,'UTF-8')])) {
-                               $pattern = $this->SHYpatterns[mb_substr($text_word, $position, $win,'UTF-8')];
-                               $digits = 1;
-                               $pattern_length = mb_strlen($pattern,'UTF-8');
-                               for($i = 0; $i < $pattern_length; $i++) {
-                                       $char = $pattern[$i];
-                                       if(isset($numb3rs[$char])) {
-                                               $zero = ($i == 0) ? $position - 1 : $position + $i - $digits;
-                                               if(!isset($hyphenated_word[$zero]) || $hyphenated_word[$zero] != $char) $hyphenated_word[$zero] = $char;
-                                               $digits++;
-                                       }
-                               }
-                       }
-               }
-          }
-
-          for($i = $this->SHYleftmin; $i <= (mb_strlen($word,'UTF-8') - $this->SHYrightmin); $i++) {
-               if(isset($hyphenated_word[$i]) && $hyphenated_word[$i] % 2 != 0) {
-                       $a = $prepre . mb_substr($word,0,$i,'UTF-8');
-                       if ($this->usingCoreFont) { $testa = mb_convert_encoding($a,$this->mb_enc,'UTF-8'); }
-                       else { $testa = $a; }
-                       if ($this->GetStringWidth($testa.'-') > $maxWidth + 0.0001) { break ; }
-                       $pre = $a;
-                       $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8') . $postpost;
-                       $success = true;
-               }
-          }
-       }
-       if ($this->usingCoreFont) { 
-               $pre = mb_convert_encoding($pre,$this->mb_enc,'UTF-8'); 
-               $post = mb_convert_encoding($post,$this->mb_enc,'UTF-8'); 
-               $prelength = strlen($pre);
-       }
-       else {
-               $prelength = mb_strlen($pre);
-       }
-       return array($success,$pre,$post,$prelength);
-
-}
-/*-- END HYPHENATION --*/
-
-
-/*-- HTML-CSS --*/
-///////////////////
-/// HTML parser ///
-///////////////////
-function WriteHTML($html,$sub=0,$init=true,$close=true) {
-                               // $sub ADDED - 0 = default; 1=headerCSS only; 2=HTML body (parts) only; 3 - HTML parses only
-                               // 4 - writes HTML headers
-                               // $close Leaves buffers etc. in current state, so that it can continue a block etc.
-                               // $init - Clears and sets buffers to Top level block etc.
-
-       if (empty($html)) { $html = ''; }
-       if ($this->progressBar) { $this->UpdateProgressBar(1,0,'Parsing CSS & Headers'); }      // *PROGRESS-BAR*
-
-       if ($init) {
-               $this->headerbuffer='';
-               $this->textbuffer = array();
-               $this->fixedPosBlockSave = array();
-       }
-       if ($sub == 1) { $html = '<style> '.$html.' </style>'; }        // stylesheet only
-
-       if ($this->allow_charset_conversion) {
-               if ($sub < 1) { 
-                       $this->ReadCharset($html); 
-               }
-               if ($this->charset_in && $sub!=4) {     // mPDF 5.4.14 
-                       $success = iconv($this->charset_in,'UTF-8//TRANSLIT',$html); 
-                       if ($success) { $html = $success; }
-               }
-       }
-       $html = $this->purify_utf8($html,false);
-       if ($init) {
-               $this->blklvl = 0;
-               $this->lastblocklevelchange = 0;
-               $this->blk = array();
-               $this->initialiseBlock($this->blk[0]);
-               $this->blk[0]['width'] =& $this->pgwidth;
-               $this->blk[0]['inner_width'] =& $this->pgwidth;
-               $this->blk[0]['blockContext'] = $this->blockContext;
-       }
-
-       $zproperties = array();
-       if ($sub < 2) { 
-               $this->ReadMetaTags($html); 
-
-               // mPDF 5.6.18
-               if (preg_match('/<base[^>]*href=["\']([^"\'>]*)["\']/i', $html, $m)) {
-                       $this->SetBasePath($m[1]);
-               }
-               // NB default stylesheet now in mPDF.css - read on initialising class
-               $html = $this->cssmgr->ReadCSS($html);
-
-               if ($this->useLang && !$this->usingCoreFont && preg_match('/<html [^>]*lang=[\'\"](.*?)[\'\"]/ism',$html,$m)) { 
-                       $html_lang = $m[1]; 
-               }
-
-               if (preg_match('/<html [^>]*dir=[\'\"]\s*rtl\s*[\'\"]/ism',$html)) { 
-                       $zproperties['DIRECTION'] = 'rtl'; 
-               }
-
-               // allow in-line CSS for body tag to be parsed // Get <body> tag inline CSS
-               if (preg_match('/<body([^>]*)>(.*?)<\/body>/ism',$html,$m) || preg_match('/<body([^>]*)>(.*)$/ism',$html,$m)) { 
-                       $html = $m[2]; 
-                       // Changed to allow style="background: url('bg.jpg')"
-                       if (preg_match('/style=[\"](.*?)[\"]/ism',$m[1],$mm) || preg_match('/style=[\'](.*?)[\']/ism',$m[1],$mm)) { 
-                               $zproperties = $this->cssmgr->readInlineCSS($mm[1]); 
-                       }
-                       if (preg_match('/dir=[\'\"]\s*rtl\s*[\'\"]/ism',$m[1])) { 
-                               $zproperties['DIRECTION'] = 'rtl'; 
-                       }
-                       if (isset($html_lang) && $html_lang) { $zproperties['LANG'] = $html_lang; }
-                       if ($this->useLang && !$this->onlyCoreFonts && preg_match('/lang=[\'\"](.*?)[\'\"]/ism',$m[1],$mm)) {
-                               $zproperties['LANG'] = $mm[1]; 
-                       }
-
-               }
-       }
-       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); 
-       if ($zproperties) { $properties = $this->cssmgr->array_merge_recursive_unique($properties,$zproperties); }
-
-       if (isset($properties['DIRECTION']) && $properties['DIRECTION']) {
-               $this->cssmgr->CSS['BODY']['DIRECTION'] = $properties['DIRECTION'];   
-       }
-       if (!isset($this->cssmgr->CSS['BODY']['DIRECTION'])) {
-               $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality;   
-       }
-       else { $this->SetDirectionality($this->cssmgr->CSS['BODY']['DIRECTION']); }   
-
-       $this->setCSS($properties,'','BODY'); 
-       $this->blk[0]['InlineProperties'] = $this->saveInlineProperties();
-
-       if ($sub == 1) { return ''; }
-       if (!isset($this->cssmgr->CSS['BODY'])) { $this->cssmgr->CSS['BODY'] = array(); }
-
-/*-- BACKGROUNDS --*/
-       if (isset($properties['BACKGROUND-GRADIENT'])) { 
-               $this->bodyBackgroundGradient = $properties['BACKGROUND-GRADIENT'];
-       }
-
-       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE']) {
-               $ret = $this->SetBackground($properties, $this->pgwidth);
-               if ($ret) { $this->bodyBackgroundImage = $ret; }
-       }
-/*-- END BACKGROUNDS --*/
-
-/*-- CSS-PAGE --*/
-       // If page-box is set
-       if ($this->state==0 && isset($this->cssmgr->CSS['@PAGE']) && $this->cssmgr->CSS['@PAGE'] ) {
-               $this->page_box['current'] = ''; 
-               $this->page_box['using'] = true;
-               list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', false, 'O');
-               $this->DefOrientation = $this->CurOrientation = $pborientation; 
-               $this->orig_lMargin = $this->DeflMargin = $pbmgl; 
-               $this->orig_rMargin = $this->DefrMargin = $pbmgr; 
-               $this->orig_tMargin = $this->tMargin = $pbmgt;
-               $this->orig_bMargin = $this->bMargin = $pbmgb;
-               $this->orig_hMargin = $this->margin_header = $pbmgh;
-               $this->orig_fMargin = $this->margin_footer = $pbmgf;
-               list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', true, 'O');      // first page
-               $this->show_marks = $marks;
-               if ($hname && !preg_match('/^html_(.*)$/i',$hname)) $this->firstPageBoxHeader = $hname;
-               if ($fname && !preg_match('/^html_(.*)$/i',$fname)) $this->firstPageBoxFooter = $fname;
-       }
-/*-- END CSS-PAGE --*/
-
-       $parseonly = false; 
-       $this->bufferoutput = false; 
-       if ($sub == 3) { 
-               $parseonly = true; 
-               // Close any open block tags
-               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-               // Output any text left in buffer
-               if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); }
-               $this->textbuffer=array();
-       } 
-       else if ($sub == 4) { 
-               // Close any open block tags
-               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-               // Output any text left in buffer
-               if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); }
-               $this->bufferoutput = true; 
-               $this->textbuffer=array();
-               $this->headerbuffer='';
-               $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
-               $this->setCSS($properties,'','BODY'); 
-       } 
-
-       mb_internal_encoding('UTF-8'); 
-
-       $html = $this->AdjustHTML($html, $this->tabSpaces); //Try to make HTML look more like XHTML
-
-       if ($this->autoFontGroups) { $html = $this->AutoFont($html); }
-
-/*-- HTMLHEADERS-FOOTERS --*/
-       preg_match_all('/<htmlpageheader([^>]*)>(.*?)<\/htmlpageheader>/si',$html,$h);
-       for($i=0;$i<count($h[1]);$i++) {
-               if (preg_match('/name=[\'|\"](.*?)[\'|\"]/',$h[1][$i],$n)) {
-                       $this->pageHTMLheaders[$n[1]]['html'] = $h[2][$i]; 
-                       $this->pageHTMLheaders[$n[1]]['h'] = $this->_gethtmlheight($h[2][$i]); 
-               }
-       }
-       preg_match_all('/<htmlpagefooter([^>]*)>(.*?)<\/htmlpagefooter>/si',$html,$f);
-       for($i=0;$i<count($f[1]);$i++) {
-               if (preg_match('/name=[\'|\"](.*?)[\'|\"]/',$f[1][$i],$n)) {
-                       $this->pageHTMLfooters[$n[1]]['html'] = $f[2][$i]; 
-                       $this->pageHTMLfooters[$n[1]]['h'] = $this->_gethtmlheight($f[2][$i]); 
-               }
-       }
-/*-- END HTMLHEADERS-FOOTERS --*/
-       $html = preg_replace('/<htmlpageheader.*?<\/htmlpageheader>/si','',$html);
-       $html = preg_replace('/<htmlpagefooter.*?<\/htmlpagefooter>/si','',$html);
-
-       if($this->state==0 && $sub!=1 && $sub!=3 && $sub!=4) {
-               $this->AddPage($this->CurOrientation);
-       }
-
-
-/*-- HTMLHEADERS-FOOTERS --*/
-
-       if (isset($hname) && preg_match('/^html_(.*)$/i',$hname,$n)) $this->SetHTMLHeader($this->pageHTMLheaders[$n[1]],'O',true);
-       if (isset($fname) && preg_match('/^html_(.*)$/i',$fname,$n)) $this->SetHTMLFooter($this->pageHTMLfooters[$n[1]],'O');
-
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-       $html=str_replace('<?','< ',$html); //Fix '<?XML' bug from HTML code generated by MS Word
-
-       $this->checkSIP = false;
-       $this->checkSMP = false; 
-       $this->checkCJK = false; 
-       if ($this->onlyCoreFonts) { $html = $this->SubstituteChars($html); }
-       else {
-               if (preg_match("/([".$this->pregRTLchars."])/u", $html)) { $this->biDirectional = true; }       // *RTL*
-               if (preg_match("/([\x{20000}-\x{2FFFF}])/u", $html)) { $this->checkSIP = true; }
-               if (preg_match("/([\x{10000}-\x{1FFFF}])/u", $html)) { $this->checkSMP = true; }
-/*-- CJK-FONTS --*/
-               if (preg_match("/([".$this->pregCJKchars."])/u", $html)) { $this->checkCJK = true; }
-/*-- END CJK-FONTS --*/
-       }
-
-       // Don't allow non-breaking spaces that are converted to substituted chars or will break anyway and mess up table width calc.
-       $html = str_replace('<tta>160</tta>',chr(32),$html); 
-       $html = str_replace('</tta><tta>','|',$html); 
-       $html = str_replace('</tts><tts>','|',$html); 
-       $html = str_replace('</ttz><ttz>','|',$html); 
-
-       //Add new supported tags in the DisableTags function
-       $html=strip_tags($html,$this->enabledtags); //remove all unsupported tags, but the ones inside the 'enabledtags' string
-
-       //Explode the string in order to parse the HTML code
-       $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
-       // ? more accurate regexp that allows e.g. <a name="Silly <name>">
-       // if changing - also change in fn.SubstituteChars()
-       // $a = preg_split ('/<((?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
-
-       if ($this->mb_enc) { 
-               mb_internal_encoding($this->mb_enc); 
-       }
-       $pbc = 0;
-       if ($this->progressBar) { $this->UpdateProgressBar(1,0); }      // *PROGRESS-BAR*
-       $this->subPos = -1;
-       $cnt = count($a);
-       for($i=0;$i<$cnt; $i++) {
-               $e = $a[$i];
-               if($i%2==0) {
-               //TEXT
-                       if ($this->blk[$this->blklvl]['hide']) { continue; }
-                       if ($this->inlineDisplayOff) { continue; }
-                       if ($this->inMeter) { continue; }       // mPDF 5.5.09
-
-                       if ($this->inFixedPosBlock) { $this->fixedPosBlock .= $e; continue; }   // *CSS-POSITION*
-                       if (strlen($e) == 0) { continue; }
-
-                       $e = strcode2utf($e);
-                       $e = $this->lesser_entity_decode($e);
-
-                       if ($this->usingCoreFont) { 
-                               // If core font is selected in document which is not onlyCoreFonts - substitute with non-core font
-                               if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->subPos<$i && !$this->specialcontent) {
-                                       $cnt += $this->SubstituteCharsNonCore($a, $i, $e); 
-                               }
-                               // CONVERT ENCODING
-                               $e = mb_convert_encoding($e,$this->mb_enc,'UTF-8'); 
-                               // mPDF 5.6.41
-                               if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); }
-                               if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); }
-                               if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); }
-                       }
-                       else {
-                               if ($this->checkSIP && $this->CurrentFont['sipext'] && $this->subPos<$i && !$this->specialcontent) { 
-                                       $cnt += $this->SubstituteCharsSIP($a, $i, $e); 
-                               }
-
-                               if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->CurrentFont['type']!='Type0' && $this->subPos<$i && !$this->specialcontent) {
-                                       // mPDF 5.6.62  removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner
-                                       $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e);
-                                       $cnt += $this->SubstituteCharsMB($a, $i, $e); 
-                               }
-                               if ($this->biDirectional)  {    // *RTL*
-                                       // mPDF 5.7+
-                                       $e = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $e );       // *RTL*
-                               }       // *RTL*
-                               // Font-specific ligature substitution for Indic fonts
-                               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($e); // *INDIC*
-
-                               // mPDF 5.6.62  removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner
-                               $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e);
-
-                               if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); }
-                               if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); }
-                               if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); }
-                       }
-                       if (($this->tts) || ($this->ttz) || ($this->tta)) {
-                               $es = explode('|',$e);
-                               $e = '';
-                               foreach($es AS $val) {
-                                       $e .= chr($val);
-                               }
-                       }
-                       //Adjust lineheight
-
-                       //  FORM ELEMENTS
-                       if ($this->specialcontent) {
-/*-- FORMS --*/
-                          //SELECT tag (form element)
-                          if ($this->specialcontent == "type=select") { 
-                               $e = ltrim($e); 
-                               $stringwidth = $this->GetStringWidth($e);
-                               if (!isset($this->selectoption['MAXWIDTH']) || $stringwidth > $this->selectoption['MAXWIDTH']) { $this->selectoption['MAXWIDTH'] = $stringwidth; }
-                               if (!isset($this->selectoption['SELECTED']) || $this->selectoption['SELECTED'] == '') { $this->selectoption['SELECTED'] = $e; }
-                               // mPDD 1.4 Active Forms
-                               if (isset($this->selectoption['ACTIVE']) && $this->selectoption['ACTIVE']) {
-                                       $this->selectoption['ITEMS'][]=array('exportValue'=>$this->selectoption['currentVAL'], 'content'=>$e, 'selected'=>$this->selectoption['currentSEL']);
-                               }
-                          }
-                          // TEXTAREA
-                          else { 
-                               $objattr = unserialize($this->specialcontent);
-                               $objattr['text'] = $e;
-                               $te = "\xbb\xa4\xactype=textarea,objattr=".serialize($objattr)."\xbb\xa4\xac";
-                               if ($this->tdbegin) {
-                                       $this->_saveCellTextBuffer($te, $this->HREF);
-                               }
-                               else {
-                                       $this->_saveTextBuffer($te, $this->HREF);
-                               }
-                          }
-/*-- END FORMS --*/
-                     }
-
-                       // TABLE
-                       else if ($this->tableLevel) {
-/*-- TABLES --*/
-                               if ($this->tdbegin) {
-                                  if (($this->ignorefollowingspaces) && !$this->ispre) { $e = ltrim($e); }
-                                  if ($e || $e==='0') {
-                                     if (($this->blockjustfinished || $this->listjustfinished) && $this->cell[$this->row][$this->col]['s']>0) {
-                                               $this->_saveCellTextBuffer("\n");
-                                               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                                                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-                                               }
-                                               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                                                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];  
-                                               }
-                                               $this->cell[$this->row][$this->col]['s'] = 0;// reset
-                                     }
-                                       $this->blockjustfinished=false;
-                                       $this->listjustfinished=false;
-
-                                       $this->_saveCellTextBuffer($e, $this->HREF);
-
-                                       if (!isset($this->cell[$this->row][$this->col]['R']) || !$this->cell[$this->row][$this->col]['R']) {
-                                               if (isset($this->cell[$this->row][$this->col]['s'])) { 
-                                                       $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($e, false);
-                                               }
-                                               else { $this->cell[$this->row][$this->col]['s'] = $this->GetStringWidth($e, false); }
-                                               if (!empty($this->spanborddet)) { 
-                                                       $this->cell[$this->row][$this->col]['s'] += $this->spanborddet['L']['w'] + $this->spanborddet['R']['w'];
-                                               }
-                                       }
-
-                                       if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."])/u", $e)) { $this->tableCJK = true; }    // *CJK-FONTS*
-
-                                       // mPDF 5.6.13   Decimal mark alignment
-                                       if (substr($this->cell[$this->row][$this->col]['a'],0,1) == 'D') {
-                                               $dp = $this->decimal_align[substr($this->cell[$this->row][$this->col]['a'],0,2)];
-                                               $s = preg_split('/'.preg_quote($dp,'/').'/', $e, 2);    // ? needs to be /u if not core
-                                               $s0 = $this->GetStringWidth($s[0], false);
-                                               if ($s[1]) { $s1 = $this->GetStringWidth(($s[1].$dp), false); }
-                                               else $s1 = 0;
-                                               if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'])) {
-                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = $s0;
-                                               }
-                                               else {
-                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = max($s0, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0']);
-                                               }
-                                               if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'])) {
-                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = $s1;
-                                               }
-                                               else {
-                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = max($s1, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1']);
-                                               }
-                                       }
-
-                                       if ($this->tableLevel==1 && $this->useGraphs) { 
-                                               $this->graphs[$this->currentGraphId]['data'][$this->row][$this->col] = $e;
-                                       }
-                                       $this->nestedtablejustfinished = false;
-                                       $this->linebreakjustfinished=false;
-                                  }
-                               }
-/*-- END TABLES --*/
-                       }
-                       // ALL ELSE
-                       else {
-                               if ($this->ignorefollowingspaces and !$this->ispre) { $e = ltrim($e); }
-                               if ($e || $e==='0') $this->_saveTextBuffer($e, $this->HREF);
-                       }
-               }
-
-
-               else { // TAG **
-                  
-                  if($e[0]=='/') {
-/*-- PROGRESS-BAR --*/
-                       if ($this->progressBar) {       // 10% increments
-                               if (intval($i*10/$cnt) != $pbc) { $pbc = intval($i*10/$cnt); $this->UpdateProgressBar(1,$pbc*10,$tag); }
-                       }
-/*-- END PROGRESS-BAR --*/
-
-
-                   // Check for tags where HTML specifies optional end tags,
-                   // and/or does not allow nesting e.g. P inside P, or 
-                   $endtag = trim(strtoupper(substr($e,1)));   // mPDF 5.4.20
-                   if($this->blk[$this->blklvl]['hide']) { 
-                       if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { 
-                               unset($this->blk[$this->blklvl]);
-                               $this->blklvl--; 
-                       }
-                       continue; 
-                   }
-
-/*-- CSS-POSITION --*/
-                   if ($this->inFixedPosBlock) { 
-                       if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { $this->fixedPosBlockDepth--; }
-                       if ($this->fixedPosBlockDepth == 0) { 
-                               $this->fixedPosBlockSave[] = array($this->fixedPosBlock, $this->fixedPosBlockBBox, $this->page);
-                               $this->fixedPosBlock = '';
-                               $this->inFixedPosBlock = false;
-                               continue; 
-                       }
-                       $this->fixedPosBlock .= '<'.$e.'>'; 
-                       continue; 
-                   }
-/*-- END CSS-POSITION --*/
-                   if ($this->allow_html_optional_endtags && !$parseonly) {
-                       if (($endtag == 'DIV' || $endtag =='FORM' || $endtag =='CENTER') && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); }
-                       if ($this->lastoptionaltag == 'LI' && $endtag == 'OL') { $this->CloseTag($this->lastoptionaltag ); }
-                       if ($this->lastoptionaltag == 'LI' && $endtag == 'UL') { $this->CloseTag($this->lastoptionaltag ); }
-                       if ($this->lastoptionaltag == 'DD' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); }
-                       if ($this->lastoptionaltag == 'DT' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); }
-                       if ($this->lastoptionaltag == 'OPTION' && $endtag == 'SELECT') { $this->CloseTag($this->lastoptionaltag ); }
-/*-- TABLES --*/
-                       if ($endtag == 'TABLE') {
-                               if ($this->lastoptionaltag == 'THEAD' || $this->lastoptionaltag == 'TBODY' || $this->lastoptionaltag == 'TFOOT') { 
-                                       $this->CloseTag($this->lastoptionaltag);
-                               }
-                               if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); }
-                               if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); }
-                       }
-                       if ($endtag == 'THEAD' || $endtag == 'TBODY' || $endtag == 'TFOOT') { 
-                               if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); }
-                               if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); }
-                       }
-                       if ($endtag == 'TR') {
-                               if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); }
-                       }
-/*-- END TABLES --*/
-                   }
-                   $this->CloseTag($endtag); 
-                  }
-
-                  else {       // OPENING TAG
-                       if($this->blk[$this->blklvl]['hide']) { 
-                               if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); }
-                               else { $te = strtoupper($e); } 
-                               if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { 
-                                       $this->blklvl++;
-                                       $this->blk[$this->blklvl]['hide']=true;
-                               }
-                               continue; 
-                       }
-
-/*-- CSS-POSITION --*/
-                       if ($this->inFixedPosBlock) { 
-                               if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); }
-                               else { $te = strtoupper($e); } 
-                               $this->fixedPosBlock .= '<'.$e.'>'; 
-                               if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { $this->fixedPosBlockDepth++; }
-                               continue; 
-                       }
-/*-- END CSS-POSITION --*/
-                       $regexp = '|=\'(.*?)\'|s'; // eliminate single quotes, if any
-               $e = preg_replace($regexp,"=\"\$1\"",$e);
-                       // changes anykey=anyvalue to anykey="anyvalue" (only do this inside [some] tags)
-                       if (substr($e,0,10)!='pageheader' && substr($e,0,10)!='pagefooter' && substr($e,0,12)!='tocpagebreak') {        // mPDF 5.6.69
-                               $regexp = '| (\\w+?)=([^\\s>"]+)|si'; 
-                       $e = preg_replace($regexp," \$1=\"\$2\"",$e);
-                       }
-
-               $e = preg_replace('/ (\\S+?)\s*=\s*"/i', " \\1=\"", $e);
-
-               //Fix path values, if needed
-                       $orig_srcpath = '';
-                       if ((stristr($e,"href=") !== false) or (stristr($e,"src=") !== false) ) {
-                               $regexp = '/ (href|src)\s*=\s*"(.*?)"/i';
-                               preg_match($regexp,$e,$auxiliararray);
-                               if (isset($auxiliararray[2])) { $path = $auxiliararray[2]; }
-                               else { $path = ''; }
-                               if (trim($path) != '' && !(stristr($e,"src=") !== false && substr($path,0,4)=='var:')) { 
-                                       $orig_srcpath = $path;
-                                       $this->GetFullPath($path); 
-                                       $regexp = '/ (href|src)="(.*?)"/i';
-                                       $e = preg_replace($regexp,' \\1="'.$path.'"',$e);
-                               }
-                       }//END of Fix path values
-
-
-                       //Extract attributes
-                       $contents=array();
-                       $contents1=array();     // mPDF 5.5.17
-                       $contents2=array();
-                       // Changed to allow style="background: url('bg.jpg')"
-                       // mPDF 5.5.17  Changed to improve performance; maximum length of \S (attribute) = 16
-                       // mPDF 5.6.30  Increase allowed attribute name to 32 - cutting off "toc-even-header-name" etc.
-                       preg_match_all('/\\S{1,32}=["][^"]*["]/',$e,$contents1);
-                       preg_match_all('/\\S{1,32}=[\'][^\']*[\']/i',$e,$contents2);
-
-                       $contents = array_merge($contents1, $contents2);
-                       preg_match('/\\S+/',$e,$a2);
-                       $tag=strtoupper($a2[0]);
-                       $attr=array();
-                       if ($orig_srcpath) { $attr['ORIG_SRC'] = $orig_srcpath; }
-                       if (!empty($contents)) {
-                               foreach($contents[0] as $v) {
-                                       // Changed to allow style="background: url('bg.jpg')"
-                                       if(preg_match('/^([^=]*)=["]?([^"]*)["]?$/',$v,$a3) || preg_match('/^([^=]*)=[\']?([^\']*)[\']?$/',$v,$a3)) {
-                                               if (strtoupper($a3[1])=='ID' || strtoupper($a3[1])=='CLASS') {  // 4.2.013 Omits STYLE
-                                                       $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2]));
-                                               }
-                                               // includes header-style-right etc. used for <pageheader>
-                                               else if (preg_match('/^(HEADER|FOOTER)-STYLE/i',$a3[1])) {
-                                                       $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2]));
-                                               }
-                                               else {
-                                                       $attr[strtoupper($a3[1])]=trim($a3[2]);
-                                               }
-                                       }
-                               }
-                       }
-                       $this->OpenTag($tag,$attr);
-/*-- CSS-POSITION --*/
-                       if ($this->inFixedPosBlock) { 
-                               $this->fixedPosBlockBBox = array($tag,$attr, $this->x, $this->y); 
-                               $this->fixedPosBlock = ''; 
-                               $this->fixedPosBlockDepth = 1; 
-                       }
-/*-- END CSS-POSITION --*/
-                     // mPDF 5.5.09
-                     if (preg_match('/\/$/',$e)) { $this->closeTag($tag); }
-
-                  }
-
-               } // end TAG
-       } //end of      foreach($a as $i=>$e)
-
-       if ($close) {
-
-               // Close any open block tags
-               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-
-               // Output any text left in buffer
-               if (count($this->textbuffer) && !$parseonly) { $this->printbuffer($this->textbuffer); }
-               if (!$parseonly) $this->textbuffer=array();
-
-/*-- CSS-FLOAT --*/
-               // If ended with a float, need to move to end page
-               $currpos = $this->page*1000 + $this->y;
-               if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) {
-                       $old_page = $this->page;
-                       $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000);
-                       if ($old_page != $new_page) {
-                               $s = $this->PrintPageBackgrounds();
-                               // Writes after the marker so not overwritten later by page background etc.
-                               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-                               $this->pageBackgrounds = array();
-                               $this->page = $new_page;
-                               $this->ResetMargins();
-                               $this->Reset();
-                               $this->pageoutput[$this->page] = array();
-                       }
-                       $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000;  // mod changes operands to integers before processing
-               }
-/*-- END CSS-FLOAT --*/
-
-/*-- CSS-IMAGE-FLOAT --*/
-               $this->printfloatbuffer();
-/*-- END CSS-IMAGE-FLOAT --*/
-
-               //Create Internal Links, if needed
-               if (!empty($this->internallink) ) {
-                       foreach($this->internallink as $k=>$v) {
-                               if (strpos($k,"#") !== false ) { continue; } //ignore
-                               $ypos = $v['Y'];
-                               $pagenum = $v['PAGE'];
-                               $sharp = "#";
-                               while (array_key_exists($sharp.$k,$this->internallink)) {
-                                       $internallink = $this->internallink[$sharp.$k];
-                                       $this->SetLink($internallink,$ypos,$pagenum);
-                                       $sharp .= "#";
-                               }
-                       }
-               }
-
-               $this->linemaxfontsize = '';
-               $this->lineheight_correction = $this->default_lineheight_correction;
-
-               $this->bufferoutput = false; 
-
-/*-- CSS-POSITION --*/
-               if (count($this->fixedPosBlockSave) && $sub != 4) {
-                 foreach($this->fixedPosBlockSave AS $fpbs) {
-                       $old_page = $this->page;
-                       $this->page = $fpbs[2];
-                       $this->WriteFixedPosHTML($fpbs[0], 0, 0, 100, 100,'auto', $fpbs[1]);  // 0,0,10,10 are overwritten by bbox
-                       $this->page = $old_page;
-                 }
-               }
-/*-- END CSS-POSITION --*/
-
-       }
-}
-
-/*-- CSS-POSITION --*/
-
-function WriteFixedPosHTML($html='',$x, $y, $w, $h, $overflow='visible', $bounding=array()) {
-       // $overflow can be 'hidden', 'visible' or 'auto' - 'auto' causes autofit to size
-       // Annotations disabled - enabled in mPDF 5.0
-       // Links do work
-       // Will always go on current page (or start Page 1 if required)
-       // Probably INCOMPATIBLE WITH keep with table, columns etc.
-       // Called externally or interally via <div style="position: [fixed|absolute]">
-       // When used internally, $x $y $w $h and $overflow are all overridden by $bounding
-
-       $overflow = strtolower($overflow);
-       if($this->state==0) { 
-               $this->AddPage($this->CurOrientation);
-       }
-       $save_y = $this->y;
-       $save_x = $this->x;
-       $this->fullImageHeight = $this->h;
-       $save_cols = false;
-/*-- COLUMNS --*/
-       if ($this->ColActive) {
-               $save_cols = true;
-               $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
-               $this->SetColumns(0);
-       }
-/*-- END COLUMNS --*/
-       $save_annots = $this->title2annots;     // *ANNOTATIONS*
-       $this->writingHTMLheader = true;        // a FIX to stop pagebreaks etc.
-       $this->writingHTMLfooter = true;
-       $this->InFooter = true; // suppresses autopagebreaks
-       $save_bgs = $this->pageBackgrounds;
-       $checkinnerhtml = preg_replace('/\s/','',$html);
-
-       if ($w > $this->w) { $x = 0; $w = $this->w; }
-       if ($h > $this->h) { $y = 0; $h = $this->h; }
-       if ($x > $this->w) { $x = $this->w - $w; }
-       if ($y > $this->h) { $y = $this->h - $h; }
-
-       if (!empty($bounding)) {
-               // $cont_ containing block = full physical page (position: absolute) or page inside margins (position: fixed)
-               // $bbox_ Bounding box is the <div> which is positioned absolutely/fixed 
-               // top/left/right/bottom/width/height/background*/border*/padding*/margin* are taken from bounding
-               // font*[family/size/style/weight]/line-height/text*[align/decoration/transform/indent]/color are transferred to $inner
-               // as an enclosing <div> (after having checked ID/CLASS)
-               // $x, $y, $w, $h are inside of $bbox_ = containing box for $inner_
-               // $inner_ InnerHTML is the contents of that block to be output 
-               $tag = $bounding[0];
-               $attr = $bounding[1];
-               $orig_x0 = $bounding[2];
-               $orig_y0 = $bounding[3];
-
-               // As in WriteHTML() initialising
-               $this->blklvl = 0;
-               $this->lastblocklevelchange = 0;
-               $this->blk = array();
-               $this->initialiseBlock($this->blk[0]);
-
-               $this->blk[0]['width'] =& $this->pgwidth;
-               $this->blk[0]['inner_width'] =& $this->pgwidth;
-
-               $this->blk[0]['blockContext'] = $this->blockContext;
-
-               $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
-               $this->setCSS($properties,'','BODY'); 
-               $this->blklvl = 1;
-               $this->initialiseBlock($this->blk[1]);
-               $this->blk[1]['tag'] = $tag;
-               $this->blk[1]['attr'] = $attr;
-               $this->Reset();
-               $p = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
-               if (isset($p['ROTATE']) && ($p['ROTATE']==90 || $p['ROTATE']==-90)) { $rotate = $p['ROTATE']; }
-               else { $rotate = 0; }
-               if (isset($p['OVERFLOW'])) { $overflow = strtolower($p['OVERFLOW']); }
-               if (strtolower($p['POSITION']) == 'fixed') {
-                       $cont_w = $this->pgwidth;       // $this->blk[0]['inner_width'];
-                       $cont_h = $this->h - $this->tMargin - $this->bMargin;
-                       $cont_x = $this->lMargin;
-                       $cont_y = $this->tMargin;
-               }
-               else {
-                       $cont_w = $this->w;     // ABSOLUTE;
-                       $cont_h = $this->h;
-                       $cont_x = 0;
-                       $cont_y = 0;
-               }
-
-               // Pass on in-line properties to the innerhtml
-               $css = '';
-               if (isset($p['TEXT-ALIGN'])) { $css .= 'text-align: '.strtolower($p['TEXT-ALIGN']).'; '; }
-               if (isset($p['TEXT-TRANSFORM'])) { $css .= 'text-transform: '.strtolower($p['TEXT-TRANSFORM']).'; '; }
-               if (isset($p['TEXT-INDENT'])) { $css .= 'text-indent: '.strtolower($p['TEXT-INDENT']).'; '; }
-               if (isset($p['TEXT-DECORATION'])) { $css .= 'text-decoration: '.strtolower($p['TEXT-DECORATION']).'; '; }
-               if (isset($p['FONT-FAMILY'])) { $css .= 'font-family: '.strtolower($p['FONT-FAMILY']).'; '; }
-               if (isset($p['FONT-STYLE'])) { $css .= 'font-style: '.strtolower($p['FONT-STYLE']).'; '; }
-               if (isset($p['FONT-WEIGHT'])) { $css .= 'font-weight: '.strtolower($p['FONT-WEIGHT']).'; '; }
-               if (isset($p['FONT-SIZE'])) { $css .= 'font-size: '.strtolower($p['FONT-SIZE']).'; '; }
-               if (isset($p['LINE-HEIGHT'])) { $css .= 'line-height: '.strtolower($p['LINE-HEIGHT']).'; '; }
-               if (isset($p['TEXT-SHADOW'])) { $css .= 'text-shadow: '.strtolower($p['TEXT-SHADOW']).'; '; }
-               if (isset($p['LETTER-SPACING'])) { $css .= 'letter-spacing: '.strtolower($p['LETTER-SPACING']).'; '; }
-               if (isset($p['FONT-VARIANT'])) { $css .= 'font-variant: '.strtolower($p['FONT-VARIANT']).'; '; }
-               if (isset($p['COLOR'])) { $css .= 'color: '.strtolower($p['COLOR']).'; '; }
-               if (isset($p['Z-INDEX'])) { $css .= 'z-index: '.$p['Z-INDEX'].'; '; }   // mPDF 5.6.01
-               if ($css) {
-                       $html = '<div style="'.$css.'">'.$html.'</div>';
-               }
-               // Copy over (only) the properties to set for border and background
-               $pb = array();
-               $pb['MARGIN-TOP'] = $p['MARGIN-TOP']; 
-               $pb['MARGIN-RIGHT'] = $p['MARGIN-RIGHT']; 
-               $pb['MARGIN-BOTTOM'] = $p['MARGIN-BOTTOM']; 
-               $pb['MARGIN-LEFT'] = $p['MARGIN-LEFT']; 
-               $pb['PADDING-TOP'] = $p['PADDING-TOP']; 
-               $pb['PADDING-RIGHT'] = $p['PADDING-RIGHT']; 
-               $pb['PADDING-BOTTOM'] = $p['PADDING-BOTTOM']; 
-               $pb['PADDING-LEFT'] = $p['PADDING-LEFT']; 
-               $pb['BORDER-TOP'] = $p['BORDER-TOP']; 
-               $pb['BORDER-RIGHT'] = $p['BORDER-RIGHT']; 
-               $pb['BORDER-BOTTOM'] = $p['BORDER-BOTTOM']; 
-               $pb['BORDER-LEFT'] = $p['BORDER-LEFT']; 
-               $pb['BORDER-TOP-LEFT-RADIUS-H'] = $p['BORDER-TOP-LEFT-RADIUS-H'];
-               $pb['BORDER-TOP-LEFT-RADIUS-V'] = $p['BORDER-TOP-LEFT-RADIUS-V'];
-               $pb['BORDER-TOP-RIGHT-RADIUS-H'] = $p['BORDER-TOP-RIGHT-RADIUS-H'];
-               $pb['BORDER-TOP-RIGHT-RADIUS-V'] = $p['BORDER-TOP-RIGHT-RADIUS-V'];
-               $pb['BORDER-BOTTOM-LEFT-RADIUS-H'] = $p['BORDER-BOTTOM-LEFT-RADIUS-H'];
-               $pb['BORDER-BOTTOM-LEFT-RADIUS-V'] = $p['BORDER-BOTTOM-LEFT-RADIUS-V'];
-               $pb['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-H'];
-               $pb['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-V'];
-               if (isset($p['BACKGROUND-COLOR'])) { $pb['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; }
-               if (isset($p['BOX-SHADOW'])) { $pb['BOX-SHADOW'] = $p['BOX-SHADOW']; }
-/*-- BACKGROUNDS --*/
-               if (isset($p['BACKGROUND-IMAGE'])) { $pb['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; }
-               if (isset($p['BACKGROUND-IMAGE-RESIZE'])) { $pb['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; }
-               if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $pb['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; }
-               if (isset($p['BACKGROUND-REPEAT'])) { $pb['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; }
-               if (isset($p['BACKGROUND-POSITION'])) { $pb['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; }
-               if (isset($p['BACKGROUND-GRADIENT'])) { $pb['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; }
-               if (isset($p['BACKGROUND-SIZE'])) { $pb['BACKGROUND-SIZE'] = $p['BACKGROUND-SIZE']; }   // mPDF 5.6.12
-               if (isset($p['BACKGROUND-ORIGIN'])) { $pb['BACKGROUND-ORIGIN'] = $p['BACKGROUND-ORIGIN']; }     // mPDF 5.6.12
-               if (isset($p['BACKGROUND-CLIP'])) { $pb['BACKGROUND-CLIP'] = $p['BACKGROUND-CLIP']; }   // mPDF 5.6.12
-
-/*-- END BACKGROUNDS --*/
-
-               $this->setCSS($pb,'BLOCK',$tag);
-
-               //================================================================
-               $bbox_br = $this->blk[1]['border_right']['w'];
-               $bbox_bl = $this->blk[1]['border_left']['w'];
-               $bbox_bt = $this->blk[1]['border_top']['w'];
-               $bbox_bb = $this->blk[1]['border_bottom']['w'];
-               $bbox_pr = $this->blk[1]['padding_right'];
-               $bbox_pl = $this->blk[1]['padding_left'];
-               $bbox_pt = $this->blk[1]['padding_top'];
-               $bbox_pb = $this->blk[1]['padding_bottom'];
-               $bbox_mr = $this->blk[1]['margin_right'];
-               if (strtolower($p['MARGIN-RIGHT'])=='auto') { $bbox_mr = 'auto'; }
-               $bbox_ml = $this->blk[1]['margin_left'];
-               if (strtolower($p['MARGIN-LEFT'])=='auto') { $bbox_ml = 'auto'; }
-               $bbox_mt = $this->blk[1]['margin_top'];
-               if (strtolower($p['MARGIN-TOP'])=='auto') { $bbox_mt = 'auto'; }
-               $bbox_mb = $this->blk[1]['margin_bottom'];
-               if (strtolower($p['MARGIN-BOTTOM'])=='auto') { $bbox_mb = 'auto'; }
-               if (isset($p['LEFT']) && strtolower($p['LEFT'])!='auto') { $bbox_left = $this->ConvertSize($p['LEFT'], $cont_w, $this->FontSize,false); }
-               else { $bbox_left = 'auto'; }
-               if (isset($p['TOP']) && strtolower($p['TOP'])!='auto') { $bbox_top = $this->ConvertSize($p['TOP'], $cont_h, $this->FontSize,false); }
-               else { $bbox_top = 'auto'; }
-               if (isset($p['RIGHT']) && strtolower($p['RIGHT'])!='auto') { $bbox_right = $this->ConvertSize($p['RIGHT'], $cont_w, $this->FontSize,false); }
-               else { $bbox_right = 'auto'; }
-               if (isset($p['BOTTOM']) && strtolower($p['BOTTOM'])!='auto') { $bbox_bottom = $this->ConvertSize($p['BOTTOM'], $cont_h, $this->FontSize,false); }
-               else { $bbox_bottom = 'auto'; }
-               if (isset($p['WIDTH']) && strtolower($p['WIDTH'])!='auto') { $inner_w = $this->ConvertSize($p['WIDTH'], $cont_w, $this->FontSize,false); }
-               else { $inner_w = 'auto'; }
-               if (isset($p['HEIGHT']) && strtolower($p['HEIGHT'])!='auto') { $inner_h = $this->ConvertSize($p['HEIGHT'], $cont_h, $this->FontSize,false); }
-               else { $inner_h = 'auto'; }
-
-               // If bottom or right pos are set and not left / top - save this to adjust rotated block later
-               if ($rotate) {
-                       if ($bbox_left === 'auto' && $bbox_right !== 'auto') { $rot_rpos = $bbox_right; }
-                       else { $rot_rpos = false; }
-                       if ($bbox_top === 'auto' && $bbox_bottom !== 'auto') { $rot_bpos = $bbox_bottom; }
-                       else { $rot_bpos = false; }
-               }
-
-               //================================================================
-               if ($checkinnerhtml=='' && $inner_h==='auto') { $inner_h = 0.0001; }
-               if ($checkinnerhtml=='' && $inner_w==='auto') { $inner_w = 2*$this->GetCharWidth('W',false); }
-               //================================================================
-               // Algorithm from CSS2.1  See http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
-               // mPD 5.3.14
-               // Special case (not CSS) if all not specified, centre vertically on page
-               if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto' && $bbox_mt==='auto' && $bbox_mb==='auto') {
-                       $bbox_top_orig = $bbox_top; 
-                       if ($bbox_mt==='auto') { $bbox_mt = 0; }
-                       if ($bbox_mb==='auto') { $bbox_mb = 0; }
-                       $bbox_top = $orig_y0 - $bbox_mt - $cont_y;
-                       // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
-               }
-               // mPD 5.3.14
-               else if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto') {
-                       $bbox_top_orig = $bbox_top = $orig_y0 - $cont_y; 
-                       if ($bbox_mt==='auto') { $bbox_mt = 0; }
-                       if ($bbox_mb==='auto') { $bbox_mb = 0; }
-                       // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
-               }
-               else if ($bbox_top!=='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') {
-                       if ($bbox_mt==='auto' && $bbox_mb==='auto') {
-                               $x = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom;
-                               $bbox_mt = $bbox_mb = ($x/2);
-                       }
-                       else if ($bbox_mt==='auto') {
-                               $bbox_mt = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
-                       }
-                       else if ($bbox_mb==='auto') {
-                               $bbox_mb = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom;
-                       }
-                       else {
-                               $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
-                       }
-               }
-               else {
-                 if ($bbox_mt==='auto') { $bbox_mt = 0; }
-                 if ($bbox_mb==='auto') { $bbox_mb = 0; }
-                 if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom!=='auto') {
-                       // solve for $bbox_top when content_h known - $inner_h=='auto' && $bbox_top =='auto'
-                 }
-                 else if ($bbox_top==='auto' && $bbox_bottom==='auto' && $inner_h!=='auto') {
-                       $bbox_top = $orig_y0 - $bbox_mt - $cont_y;
-                       $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
-                 }
-                 else if ($inner_h==='auto' && $bbox_bottom==='auto' && $bbox_top!=='auto') {
-                       // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
-                 }
-                 else if ($bbox_top==='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') {
-                       $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom;
-                 }
-                 else if ($inner_h==='auto' && $bbox_top!=='auto' && $bbox_bottom!=='auto') {
-                       $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom;
-                 }
-                 else if ($bbox_bottom==='auto' && $bbox_top!=='auto' && $inner_h!=='auto') {
-                       $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
-                 }
-               }
-
-               // THEN DO SAME FOR WIDTH
-               // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
-               if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right==='auto') {
-                       if ($bbox_ml==='auto') { $bbox_ml = 0; }
-                       if ($bbox_mr==='auto') { $bbox_mr = 0; }
-                       // IF containing element RTL, should set $bbox_right
-                       $bbox_left = $orig_x0 - $bbox_ml - $cont_x;
-                       // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto'
-               }
-               else if ($bbox_left!=='auto' && $inner_w!=='auto' && $bbox_right!=='auto') {
-                       if ($bbox_ml==='auto' && $bbox_mr==='auto') {
-                               $x = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right;
-                               $bbox_ml = $bbox_mr = ($x/2);
-                       }
-                       else if ($bbox_ml==='auto') {
-                               $bbox_ml = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right;
-                       }
-                       else if ($bbox_mr==='auto') {
-                               $bbox_mr = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right;
-                       }
-                       else {
-                               $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
-                       }
-               }
-               else {
-                 if ($bbox_ml==='auto') { $bbox_ml = 0; }
-                 if ($bbox_mr==='auto') { $bbox_mr = 0; }
-                 if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right!=='auto') {
-                       // solve for $bbox_left when content_w known - $inner_w=='auto' && $bbox_left =='auto'
-                 }
-                 else if ($bbox_left==='auto' && $bbox_right==='auto' && $inner_w!=='auto') {
-                       // IF containing element RTL, should set $bbox_right
-                       $bbox_left = $orig_x0 - $bbox_ml - $cont_x;
-                       $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
-                 }
-                 else if ($inner_w==='auto' && $bbox_right==='auto' && $bbox_left!=='auto') {
-                       // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto'
-                 }
-                 else if ($bbox_left==='auto' && $inner_w!=='auto' && $bbox_right!=='auto') {
-                       $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
-                 }
-                 else if ($inner_w==='auto' && $bbox_left!=='auto' && $bbox_right!=='auto') {
-                       $inner_w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
-                 }
-                 else if ($bbox_right==='auto' && $bbox_left!=='auto' && $inner_w!=='auto') {
-                       $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
-                 }
-               }
-
-               //================================================================
-               //================================================================
-/*-- BACKGROUNDS --*/
-               if (isset($pb['BACKGROUND-IMAGE']) && $pb['BACKGROUND-IMAGE']) { 
-                       $ret = $this->SetBackground($pb, $this->blk[1]['inner_width']);
-                       if ($ret) { $this->blk[1]['background-image'] = $ret; }
-               }
-/*-- END BACKGROUNDS --*/
-
-               //================================================================
-               $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt;
-               $h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
-               $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl;
-               $w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right;
-               // Set (temporary) values for x y w h to do first paint, if values are auto
-               if ($inner_h==='auto' && $bbox_top==='auto') {
-                       $y = $cont_y + $bbox_mt + $bbox_bt + $bbox_pt;
-                       $h = $cont_h - ($bbox_bottom + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb);
-               }
-               else if ($inner_h==='auto' && $bbox_bottom==='auto') {
-                       $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt;
-                       $h = $cont_h - ($bbox_top + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb);
-               }
-               if ($inner_w==='auto' && $bbox_left==='auto') {
-                       $x = $cont_x + $bbox_ml + $bbox_bl + $bbox_pl;
-                       $w = $cont_w - ($bbox_right + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr);
-               }
-               else if ($inner_w==='auto' && $bbox_right==='auto') {
-                       $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl;
-                       $w = $cont_w - ($bbox_left + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr);
-               }
-               $bbox_y = $cont_y + $bbox_top + $bbox_mt;
-               $bbox_x = $cont_x + $bbox_left + $bbox_ml;
-               $saved_block1 = $this->blk[1];
-               unset($p);
-               unset($pb);
-               //================================================================
-               if ($inner_w==='auto') { // do a first write
-                       $this->lMargin=$x;
-                       $this->rMargin=$this->w - $w - $x;
-                       // SET POSITION & FONT VALUES
-                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-                       $this->pageoutput[$this->page]=array();
-                       $this->x = $x;
-                       $this->y = $y;
-                       $this->HTMLheaderPageLinks = array();
-                       $this->HTMLheaderPageAnnots = array();
-                       $this->HTMLheaderPageForms = array();
-                       $this->pageBackgrounds = array();
-                       $this->maxPosR = 0;
-                       $this->maxPosL = $this->w;      // For RTL
-                       $this->WriteHTML($html , 4);
-                       $inner_w = $this->maxPosR - $this->lMargin;
-                       if ($bbox_right==='auto') {
-                               $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
-                       }
-                       else if ($bbox_left==='auto') {
-                               $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
-                               $bbox_x = $cont_x + $bbox_left + $bbox_ml ;
-                               $inner_x = $bbox_x + $bbox_bl + $bbox_pl;
-                               $x = $inner_x;
-                       }
-                       $w = $inner_w;
-                       $bbox_y = $cont_y + $bbox_top + $bbox_mt;
-                       $bbox_x = $cont_x + $bbox_left + $bbox_ml;
-               }
-
-               if ($inner_h==='auto') { // do a first write
-                       $this->lMargin=$x;
-                       $this->rMargin=$this->w - $w - $x;
-                       // SET POSITION & FONT VALUES
-                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-                       $this->pageoutput[$this->page]=array();
-                       $this->x = $x;
-                       $this->y = $y;
-                       $this->HTMLheaderPageLinks = array();
-                       $this->HTMLheaderPageAnnots = array();
-                       $this->HTMLheaderPageForms = array();
-                       $this->pageBackgrounds = array();
-                       $this->WriteHTML($html , 4);
-                       $inner_h = $this->y - $y;
-                       if ($overflow!='hidden' && $overflow!='visible') {      // constrained
-                               if (($this->y + $bbox_pb + $bbox_bb) > ($cont_y + $cont_h)) {
-                                       $adj = ($this->y + $bbox_pb + $bbox_bb) - ($cont_y + $cont_h);
-                                       $inner_h -= $adj;
-                               }
-                       }
-                       if ($bbox_bottom==='auto' && $bbox_top_orig==='auto') {
-                               $bbox_bottom = $bbox_top = ($cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb)/2;
-                               if ($overflow!='hidden' && $overflow!='visible') {      // constrained
-                                       if ($bbox_top < 0) {
-                                               $bbox_top = 0;
-                                               $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
-                                       }
-                               }
-                               $bbox_y = $cont_y + $bbox_top + $bbox_mt;
-                               $inner_y = $bbox_y + $bbox_bt + $bbox_pt;
-                               $y = $inner_y;
-
-                       }
-                       else if ($bbox_bottom==='auto') {
-                               $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb;
-                       }
-                       else if ($bbox_top==='auto') {
-                               $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
-                               if ($overflow!='hidden' && $overflow!='visible') {      // constrained
-                                       if ($bbox_top < 0) {
-                                               $bbox_top = 0;
-                                               $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
-                                       }
-                               }
-                               $bbox_y = $cont_y + $bbox_top + $bbox_mt;
-                               $inner_y = $bbox_y + $bbox_bt + $bbox_pt;
-                               $y = $inner_y;
-                       }
-                       $h = $inner_h;
-                       $bbox_y = $cont_y + $bbox_top + $bbox_mt;
-                       $bbox_x = $cont_x + $bbox_left + $bbox_ml;
-               }
-               $inner_w = $w;
-               $inner_h = $h;
-
-       }
-       $this->lMargin=$x;
-       $this->rMargin=$this->w - $w - $x;
-       // SET POSITION & FONT VALUES
-       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-       $this->pageoutput[$this->page]=array();
-       $this->x = $x;
-       $this->y = $y;
-       $this->HTMLheaderPageLinks = array();
-       $this->HTMLheaderPageAnnots = array();
-       $this->HTMLheaderPageForms = array();
-       $this->pageBackgrounds = array();
-       $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
-       $actual_h = $this->y - $y;
-       $use_w = $w;
-       $use_h = $h;
-       $ratio = $actual_h / $use_w;
-
-       if ($overflow!='hidden' && $overflow!='visible') {
-               $target = $h/$w;
-               if (($ratio / $target ) > 1) {
-                       $nl = CEIL($actual_h / $this->lineheight);
-                       $l = $use_w * $nl;
-                       $est_w = sqrt(($l * $this->lineheight) / $target) * 0.8;
-                       $use_w += ($est_w - $use_w) - ($w/100);
-               }
-               $bpcstart = ($ratio / $target);
-               $bpcctr = 1;
-               while(($ratio / $target ) > 1) {
-
-                       if ($this->progressBar) { $this->UpdateProgressBar(4,intval(100/($ratio/$target)),('Auto-sizing fixed-position block: '.$bpcctr++)); }  // *PROGRESS-BAR*
-
-                       $this->x = $x;
-                       $this->y = $y;
-
-                       if (($ratio / $target) > 1.5 || ($ratio / $target) < 0.6) {
-                               $use_w += ($w/$this->incrementFPR1);
-                       }
-                       else if (($ratio / $target) > 1.2 || ($ratio / $target) < 0.85) {
-                               $use_w += ($w/$this->incrementFPR2);
-                       }
-                       else if (($ratio / $target) > 1.1 || ($ratio / $target) < 0.91) {
-                               $use_w += ($w/$this->incrementFPR3);
-                       }
-                       else {
-                               $use_w += ($w/$this->incrementFPR4);
-                       }
-
-                       $use_h = $use_w * $target ;
-                       $this->rMargin=$this->w - $use_w - $x;
-                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-                       $this->HTMLheaderPageLinks = array();
-                       $this->HTMLheaderPageAnnots = array();
-                       $this->HTMLheaderPageForms = array();
-                       $this->pageBackgrounds = array();
-                       $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
-                       $actual_h = $this->y - $y;
-                       $ratio = $actual_h / $use_w;
-               }
-               if ($this->progressBar) { $this->UpdateProgressBar(4,'100',' '); }      // *PROGRESS-BAR*
-       }
-       $shrink_f = $w/$use_w;
-
-       //================================================================
-
-       $this->pages[$this->page] .= '___BEFORE_BORDERS___';
-       $block_s = $this->PrintPageBackgrounds();       // Save to print later inside clipping path
-       $this->pageBackgrounds = array();
-
-       //================================================================
-
-       if ($rotate) {
-               $prerotw = $bbox_bl + $bbox_pl + $inner_w + $bbox_pr + $bbox_br;
-               $preroth = $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb;
-               $rot_start = " q\n";
-               if ($rotate == 90) { 
-                       if ($rot_rpos !== false) { $adjw = $prerotw; }  // width before rotation
-                       else { $adjw = $preroth; }      // height before rotation
-                       if ($rot_bpos !== false) { $adjh = -$prerotw + $preroth; }
-                       else { $adjh = 0; }
-               }
-               else { 
-                       if ($rot_rpos !== false) { $adjw = $prerotw - $preroth; }
-                       else { $adjw = 0; }
-                       if ($rot_bpos !== false) { $adjh = $preroth; }  // height before rotation
-                       else { $adjh = $prerotw; }      // width before rotation
-               }
-               $rot_start .= $this->transformTranslate($adjw, $adjh, true)."\n"; 
-               $rot_start .= $this->transformRotate($rotate, $bbox_x, $bbox_y, true)."\n";
-               $rot_end = " Q\n";
-       }
-       else {
-               $rot_start = '';
-               $rot_end = '';
-       }
-
-       //================================================================
-       if (!empty($bounding)) {
-               // WHEN HEIGHT // BOTTOM EDGE IS KNOWN and $this->y is set to the bottom
-               // Re-instate saved $this->blk[1]
-               $this->blk[1] = $saved_block1;
-
-               // These are only needed when painting border/background
-               $this->blk[1]['width'] = $bbox_w = $cont_w - $bbox_left - $bbox_ml - $bbox_mr - $bbox_right;
-               $this->blk[1]['x0'] = $bbox_x;
-               $this->blk[1]['y0'] = $bbox_y;
-               $this->blk[1]['startpage'] = $this->page;
-               $this->blk[1]['y1'] = $bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ;
-               $this->_out($rot_start);        // mPDF 5.0
-               $this->PaintDivBB('',0,1);      // Prints borders and sets backgrounds in $this->pageBackgrounds 
-               $this->_out($rot_end);
-       }
-
-       $s = $this->PrintPageBackgrounds();
-       $s = $rot_start.$s.$rot_end;
-       $this->pages[$this->page] = preg_replace('/___BEFORE_BORDERS___/', "\n".$s."\n", $this->pages[$this->page]);
-       $this->pageBackgrounds = array();
-
-       $this->_out($rot_start);
-
-       // Clipping Output
-       if ($overflow=='hidden') {
-               //Bounding rectangle to clip
-               $clip_y1 = $this->y;
-               if (!empty($bounding) && ($this->y + $bbox_pb + $bbox_bb) > ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb )) {
-                       $clip_y1 = ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ) - ($bbox_pb + $bbox_bb);
-               }
-               //$op = 'W* n'; // Clipping
-               $op = 'W n';    // Clipping alternative mode
-               $this->_out("q");
-               $ch = $clip_y1 - $y;
-               $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op));
-               if (!empty($block_s)) {
-                       $tmp = "q\n".sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op);
-                       $tmp .= "\n".$block_s."\nQ";
-                       $block_s = $tmp ;
-               }
-       }
-
-
-       if (!empty($block_s)) {
-               if ($shrink_f != 1) {   // i.e. autofit has resized the box
-                       $tmp = "q\n".$this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y, true);
-                       $tmp .= "\n".$block_s."\nQ";
-                       $block_s = $tmp ;
-               }
-               $this->_out($block_s);
-       }
-
-
-
-       if ($shrink_f != 1) {   // i.e. autofit has resized the box
-               $this->StartTransform();
-               $this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y);
-       }
-
-       $this->_out($this->headerbuffer);
-
-       if ($shrink_f != 1) {   // i.e. autofit has resized the box
-               $this->StopTransform();
-       }
-
-       if ($overflow=='hidden') {
-               //End clipping
-               $this->_out("Q");
-       }
-
-       $this->_out($rot_end);
-
-
-       // Page Links
-       foreach($this->HTMLheaderPageLinks AS $lk) {
-               if ($rotate) {
-                       $tmp = $lk[2];  // Switch h - w
-                       $lk[2] = $lk[3];
-                       $lk[3] = $tmp;
-
-                       $lx1 = (($lk[0]/_MPDFK));
-                       $ly1 = (($this->h-($lk[1]/_MPDFK)));
-                       if ($rotate == 90) {
-                               $adjx = -($lx1-$bbox_x) + ($preroth - ($ly1-$bbox_y));
-                               $adjy = -($ly1-$bbox_y) + ($lx1-$bbox_x);
-                               $lk[2] = -$lk[2];
-                       }
-                       else if ($rotate == -90) {
-                               $adjx = -($lx1-$bbox_x) + ($ly1-$bbox_y);
-                               $adjy = -($ly1-$bbox_y) - ($lx1-$bbox_x) + $prerotw;
-                               $lk[3] = -$lk[3];
-                       }
-                       if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; }
-                       if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; }
-                       $lx1 += $adjx;
-                       $ly1 += $adjy;
-
-                       $lk[0] = $lx1*_MPDFK;
-                       $lk[1] = ($this->h-$ly1)*_MPDFK;
-               }
-               if ($shrink_f != 1) {   // i.e. autofit has resized the box
-                       $lx1 = (($lk[0]/_MPDFK)-$x);
-                       $lx2 = $x + ($lx1 * $shrink_f);
-                       $lk[0] = $lx2*_MPDFK;
-                       $ly1 = (($this->h-($lk[1]/_MPDFK))-$y);
-                       $ly2 = $y + ($ly1 * $shrink_f);
-                       $lk[1] = ($this->h-$ly2)*_MPDFK;
-                       $lk[2] *= $shrink_f;    // width
-                       $lk[3] *= $shrink_f;    // height
-               }
-               $this->PageLinks[$this->page][]=$lk;
-       }
-
-       foreach($this->HTMLheaderPageForms AS $n=>$f) {
-               if ($shrink_f != 1) {   // i.e. autofit has resized the box
-                       $f['x'] = $x + (($f['x'] -$x) * $shrink_f);
-                       $f['y'] = $y + (($f['y'] -$y) * $shrink_f);
-                       $f['w'] *= $shrink_f;
-                       $f['h'] *= $shrink_f;
-                       $f['style']['fontsize'] *= $shrink_f;
-               }
-               $this->form->forms[$f['n']] = $f;
-       }
-       // Page Annotations
-       foreach($this->HTMLheaderPageAnnots AS $lk) {
-               if ($rotate) {
-                       if ($rotate == 90) {
-                               $adjx = -($lk['x']-$bbox_x) + ($preroth - ($lk['y']-$bbox_y));
-                               $adjy = -($lk['y']-$bbox_y) + ($lk['x']-$bbox_x);
-                       }
-                       else if ($rotate == -90) {
-                               $adjx = -($lk['x']-$bbox_x) + ($lk['y']-$bbox_y);
-                               $adjy = -($lk['y']-$bbox_y) - ($lk['x']-$bbox_x) + $prerotw;
-                       }
-                       if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; }
-                       if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; }
-                       $lk['x'] += $adjx;
-                       $lk['y'] += $adjy;
-               }
-               if ($shrink_f != 1) {   // i.e. autofit has resized the box
-                       $lk['x'] = $x + (($lk['x']-$x) * $shrink_f);
-                       $lk['y'] = $y + (($lk['y']-$y) * $shrink_f);
-               }
-               $this->PageAnnots[$this->page][]=$lk;
-       }
-
-       // Restore
-       $this->headerbuffer = '';
-       $this->HTMLheaderPageLinks = array();
-       $this->HTMLheaderPageAnnots = array();
-       $this->HTMLheaderPageForms = array();
-       $this->pageBackgrounds = $save_bgs;
-       $this->writingHTMLheader = false;
-
-       $this->writingHTMLfooter = false;
-       $this->fullImageHeight = false;
-       $this->ResetMargins();
-       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-       $this->SetXY($save_x,$save_y) ; 
-       $this->title2annots = $save_annots;     // *ANNOTATIONS*
-       $this->InFooter = false;        // turns back on autopagebreaks
-       $this->pageoutput[$this->page]=array();
-       $this->pageoutput[$this->page]['Font']='';
-/*-- COLUMNS --*/
-       if ($save_cols) {
-               $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
-       }
-/*-- END COLUMNS --*/
-}
-/*-- END CSS-POSITION --*/
-
-
-
-function initialiseBlock(&$blk) {
-       $blk['margin_top'] = 0;
-       $blk['margin_left'] = 0;
-       $blk['margin_bottom'] = 0;
-       $blk['margin_right'] = 0;
-       $blk['padding_top'] = 0;
-       $blk['padding_left'] = 0;
-       $blk['padding_bottom'] = 0;
-       $blk['padding_right'] = 0;
-       $blk['border_top']['w'] = 0;
-       $blk['border_left']['w'] = 0;
-       $blk['border_bottom']['w'] = 0;
-       $blk['border_right']['w'] = 0;
-       $blk['hide'] = false; 
-       $blk['outer_left_margin'] = 0; 
-       $blk['outer_right_margin'] = 0; 
-       $blk['cascadeCSS'] = array(); 
-       $blk['block-align'] = false; 
-       $blk['bgcolor'] = false; 
-       $blk['page_break_after_avoid'] = false; 
-       $blk['keep_block_together'] = false; 
-       $blk['float'] = false; 
-       $blk['line_height'] = ''; 
-       $blk['margin_collapse'] = false; 
-}
-
-
-function border_details($bd) {
-       $prop = preg_split('/\s+/',trim($bd));
-
-       if (isset($this->blk[$this->blklvl]['inner_width'])) { $refw = $this->blk[$this->blklvl]['inner_width']; }
-       else if (isset($this->blk[$this->blklvl-1]['inner_width'])) { $refw = $this->blk[$this->blklvl-1]['inner_width']; }
-       else { $refw = $this->w; }
-       if ( count($prop) == 1 ) { 
-               $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false);
-               if ($bsize > 0) {
-                       return array('s' => 1, 'w' => $bsize, 'c' => $this->ConvertColor(0), 'style'=>'solid');
-               }
-               else { return array('w' => 0, 's' => 0); }
-       }
-
-       else if (count($prop) == 2 ) { 
-               // 1px solid 
-               if (in_array($prop[1],$this->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $prop[2] = ''; }
-               // solid #000000 
-               else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $prop[0] = ''; $prop[1] = $prop[0]; $prop[2] = $prop[1]; }
-               // 1px #000000 
-               else { $prop[1] = ''; $prop[2] = $prop[1]; }
-       }
-       else if ( count($prop) == 3 ) {
-               // Change #000000 1px solid to 1px solid #000000 (proper)
-               if (substr($prop[0],0,1) == '#') { $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $prop[2]; $prop[2] = $tmp; }
-               // Change solid #000000 1px to 1px solid #000000 (proper)
-               else if (substr($prop[0],1,1) == '#') { $tmp = $prop[1]; $prop[0] = $prop[2]; $prop[1] = $prop[0]; $prop[2] = $tmp; }
-               // Change solid 1px #000000 to 1px solid #000000 (proper)
-               else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { 
-                       $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $tmp; 
-               }
-       }
-       else { return array(); } 
-       // Size
-       $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false);
-       //color
-       $coul = $this->ConvertColor($prop[2]);  // returns array
-       // Style
-       $prop[1] = strtolower($prop[1]);
-       if (in_array($prop[1],$this->borderstyles) && $bsize > 0) { $on = 1; } 
-       else if ($prop[1] == 'hidden') { $on = 1; $bsize = 0; $coul = ''; } 
-       else if ($prop[1] == 'none') { $on = 0; $bsize = 0; $coul = ''; } 
-       else { $on = 0; $bsize = 0; $coul = ''; $prop[1] = ''; }
-       return array('s' => $on, 'w' => $bsize, 'c' => $coul, 'style'=> $prop[1] );
-}
-
-
-
-/*-- END HTML-CSS --*/
-
-
-// Return either a number (factor) - based on current set fontsize (if % or em) - or exact lineheight (with 'mm' after it)
-function fixLineheight($v) {
-       $lh = false;
-       if (preg_match('/^[0-9\.,]*$/',$v) && $v >= 0) { return ($v + 0); }
-       else if (strtoupper($v) == 'NORMAL') { 
-               return $this->normalLineheight; 
-       }
-       else { 
-               $tlh = $this->ConvertSize($v,$this->FontSize,$this->FontSize,true); 
-               if ($tlh) { return ($tlh.'mm'); }
-       }
-       return $this->normalLineheight;
-}
-
-
-/*-- BORDER-RADIUS --*/
-function _borderPadding($a, $b, &$px, &$py) {
-       // $px and py are padding long axis (x) and short axis (y)
-       $added = 0;     // extra padding
-
-       $x = $a-$px;
-       $y = $b-$py;
-       // Check if Falls within ellipse of border radius
-       if ( ( (($x+$added)*($x+$added))/($a*$a) + (($y+$added)*($y+$added))/($b*$b) ) <=1 ) { return false; }
-
-       $t = atan2($y,$x);
-
-       $newx = $b / sqrt((($b*$b)/($a*$a)) + ( tan($t) * tan($t) )  );
-       $newy = $a / sqrt((($a*$a)/($b*$b)) + ( (1/tan($t)) * (1/tan($t)) )  );
-       $px = max($px, $a - $newx + $added);
-       $py = max($py, $b - $newy + $added);
-}
-/*-- END BORDER-RADIUS --*/
-
-
-
-/*-- HTML-CSS --*/
-
-
-/*-- CSS-PAGE --*/
-function SetPagedMediaCSS($name='', $first, $oddEven) {
-       if ($oddEven == 'E') { 
-               if ($this->directionality=='rtl') { $side = 'R'; }
-               else { $side = 'L'; }
-       }
-       else  { 
-               if ($this->directionality=='rtl') { $side = 'L'; }
-               else { $side = 'R'; }
-       }
-       $name = strtoupper($name);
-       $p = array();
-       $p['SIZE'] = 'AUTO';
-
-       // Uses mPDF original margins as default
-       $p['MARGIN-RIGHT'] = strval($this->orig_rMargin).'mm';
-       $p['MARGIN-LEFT'] = strval($this->orig_lMargin).'mm';
-       $p['MARGIN-TOP'] = strval($this->orig_tMargin).'mm';
-       $p['MARGIN-BOTTOM'] = strval($this->orig_bMargin).'mm';
-       $p['MARGIN-HEADER'] = strval($this->orig_hMargin).'mm';
-       $p['MARGIN-FOOTER'] = strval($this->orig_fMargin).'mm';
-
-       // Basic page + selector
-       if (isset($this->cssmgr->CSS['@PAGE'])) { $zp = $this->cssmgr->CSS['@PAGE']; }
-       else { $zp = array(); }
-       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-
-       if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') { 
-               $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']);
-       }
-       if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') { 
-               $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']);
-       }
-       if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') { 
-               $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']);
-       }
-       if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') { 
-               $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']);
-       }
-
-       // If right/Odd page
-       if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']) && $side=='R') { 
-               $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']; 
-       }
-       else { $zp = array(); }
-       if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
-       if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
-       // Disallow margin-left or -right on :LEFT or :RIGHT
-       if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
-       if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
-       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-
-       // If left/Even page
-       if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']) && $side=='L') {  
-               $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']; 
-       }
-       else { $zp = array(); }
-       if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
-       if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
-       // Disallow margin-left or -right on :LEFT or :RIGHT
-       if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
-       if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
-       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp);  }
-
-       // If first page
-       if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']; } 
-       else { $zp = array(); }
-       if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
-       if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
-       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-
-       // If named page
-       if ($name) {
-               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name])) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name]; } 
-               else { $zp = array(); }
-               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-
-               if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') { 
-                       $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']);
-               }
-               if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') { 
-                       $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']);
-               }
-               if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') { 
-                       $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']);
-               }
-               if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') { 
-                       $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']);
-               }
-
-               // If named right/Odd page
-               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']) && $side=='R') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']; } 
-               else { $zp = array(); }
-               if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
-               if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
-               // Disallow margin-left or -right on :LEFT or :RIGHT
-               if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
-               if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
-               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-
-               // If named left/Even page
-               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']) && $side=='L') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']; } 
-               else { $zp = array(); }
-               if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
-               if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
-               // Disallow margin-left or -right on :LEFT or :RIGHT
-               if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
-               if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
-               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-
-               // If named first page
-               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']; } 
-               else { $zp = array(); }
-               if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
-               if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
-               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
-       }
-
-       $orientation = $mgl = $mgr = $mgt = $mgb = $mgh = $mgf = '';
-       $header = $footer = '';
-       $resetpagenum = $pagenumstyle = $suppress = '';
-       $marks = ''; 
-       $bg = array();
-       $newformat = '';
-
-       if (isset($p['SHEET-SIZE']) && is_array($p['SHEET-SIZE'])) {
-               $newformat = $p['SHEET-SIZE'];
-               if ($newformat[0] > $newformat[1]) { // landscape
-                       $newformat = array_reverse($newformat);
-                       $p['ORIENTATION'] = 'L';
-               }
-               else { $p['ORIENTATION'] = 'P'; }
-               $this->_setPageSize($newformat, $p['ORIENTATION']);
-       }
-
-       if (isset($p['SIZE']) && is_array($p['SIZE']) && !$newformat) {
-               if ($p['SIZE']['W'] > $p['SIZE']['H']) { $p['ORIENTATION'] = 'L'; }
-               else { $p['ORIENTATION'] = 'P'; }
-       }
-       if (is_array($p['SIZE'])) {
-               if ($p['SIZE']['W'] > $this->fw) { $p['SIZE']['W'] = $this->fw; }       // mPD 4.2 use fw not fPt
-               if ($p['SIZE']['H'] > $this->fh) { $p['SIZE']['H'] = $this->fh; }
-               if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) { 
-                       $outer_width_LR = ($this->fw - $p['SIZE']['W'])/2;
-                       $outer_width_TB = ($this->fh - $p['SIZE']['H'])/2;
-               }
-               else {
-                       $outer_width_LR = ($this->fh - $p['SIZE']['W'])/2;
-                       $outer_width_TB = ($this->fw - $p['SIZE']['H'])/2;
-               }
-               $pgw = $p['SIZE']['W'];
-               $pgh = $p['SIZE']['H'];
-       }
-       else {  // AUTO LANDSCAPE PORTRAIT
-               $outer_width_LR = 0;
-               $outer_width_TB = 0;
-               if (!$newformat) {
-                       if (strtoupper($p['SIZE']) == 'AUTO') { $p['ORIENTATION']=$this->DefOrientation; }
-                       else if (strtoupper($p['SIZE']) == 'LANDSCAPE') { $p['ORIENTATION']='L'; }
-                       else { $p['ORIENTATION']='P'; }
-               }
-               if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) { 
-                       $pgw = $this->fw;
-                       $pgh = $this->fh;
-               }
-               else {
-                       $pgw = $this->fh;
-                       $pgh = $this->fw;
-               }
-       }
-
-       if (isset($p['HEADER']) && $p['HEADER']) { $header = $p['HEADER']; }
-       if (isset($p['FOOTER']) && $p['FOOTER']) { $footer = $p['FOOTER']; }
-       if (isset($p['RESETPAGENUM']) && $p['RESETPAGENUM']) { $resetpagenum = $p['RESETPAGENUM']; }
-       if (isset($p['PAGENUMSTYLE']) && $p['PAGENUMSTYLE']) { $pagenumstyle = $p['PAGENUMSTYLE']; }
-       if (isset($p['SUPPRESS']) && $p['SUPPRESS']) { $suppress = $p['SUPPRESS']; }
-
-       if (preg_match('/cross/i', $p['MARKS']) && preg_match('/crop/i', $p['MARKS'])) { $marks = 'CROPCROSS'; }
-       else if (strtoupper($p['MARKS']) == 'CROP') { $marks = 'CROP'; }
-       else if (strtoupper($p['MARKS']) == 'CROSS') { $marks = 'CROSS'; }
-
-
-       if (isset($p['BACKGROUND-COLOR']) && $p['BACKGROUND-COLOR']) { $bg['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; }
-/*-- BACKGROUNDS --*/
-       if (isset($p['BACKGROUND-GRADIENT']) && $p['BACKGROUND-GRADIENT']) { $bg['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; }
-       if (isset($p['BACKGROUND-IMAGE']) && $p['BACKGROUND-IMAGE']) { $bg['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; }
-       if (isset($p['BACKGROUND-REPEAT']) && $p['BACKGROUND-REPEAT']) { $bg['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; }
-       if (isset($p['BACKGROUND-POSITION']) && $p['BACKGROUND-POSITION']) { $bg['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; }
-       if (isset($p['BACKGROUND-IMAGE-RESIZE']) && $p['BACKGROUND-IMAGE-RESIZE']) { $bg['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; }
-       if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $bg['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; }
-/*-- END BACKGROUNDS --*/
-
-       if (isset($p['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($p['MARGIN-LEFT'],$pgw) + $outer_width_LR; }
-       if (isset($p['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($p['MARGIN-RIGHT'],$pgw) + $outer_width_LR; }
-       if (isset($p['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($p['MARGIN-BOTTOM'],$pgh) + $outer_width_TB; }
-       if (isset($p['MARGIN-TOP'])) { $mgt = $this->ConvertSize($p['MARGIN-TOP'],$pgh) + $outer_width_TB; }
-       if (isset($p['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($p['MARGIN-HEADER'],$pgh) + $outer_width_TB; }
-       if (isset($p['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($p['MARGIN-FOOTER'],$pgh) + $outer_width_TB; }
-
-       if (isset($p['ORIENTATION']) && $p['ORIENTATION']) { $orientation = $p['ORIENTATION']; }
-       $this->page_box['outer_width_LR'] = $outer_width_LR;    // Used in MARKS:crop etc.
-       $this->page_box['outer_width_TB'] = $outer_width_TB;
-       return array($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$header,$footer,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat);
-}
-/*-- END CSS-PAGE --*/
-
-
-
-/*-- CSS-FLOAT --*/
-// Added mPDF 3.0 Float DIV - CLEAR
-function ClearFloats($clear, $blklvl=0) {
-       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($blklvl,true);
-       $end = $currpos = ($this->page*1000 + $this->y);
-       if ($clear == 'BOTH' && ($l_exists || $r_exists)) {
-               $this->pageoutput[$this->page] = array();
-               $end = max($l_max, $r_max, $currpos);
-       }
-       else if ($clear == 'RIGHT' && $r_exists) {
-               $this->pageoutput[$this->page] = array();
-               $end = max($r_max, $currpos);
-       }
-       else if ($clear == 'LEFT' && $l_exists ) {
-               $this->pageoutput[$this->page] = array();
-               $end = max($l_max, $currpos);
-       }
-       else { return; }
-       $old_page = $this->page;
-       $new_page = intval($end/1000);
-       if ($old_page != $new_page) {
-               $s = $this->PrintPageBackgrounds();
-               // Writes after the marker so not overwritten later by page background etc.
-               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-               $this->pageBackgrounds = array();
-               $this->page = $new_page;
-       }
-       $this->ResetMargins();
-       $this->pageoutput[$this->page] = array();
-       $this->y = (($end*1000) % 1000000)/1000;        // mod changes operands to integers before processing
-}
-
-
-// Added mPDF 3.0 Float DIV
-function GetFloatDivInfo($blklvl=0,$clear=false) {
-       // If blklvl specified, only returns floats at that level - for ClearFloats
-       $l_exists = false;
-       $r_exists = false;
-       $l_max = 0;
-       $r_max = 0;
-       $l_width = 0;
-       $r_width = 0;
-       if (count($this->floatDivs)) {
-         $currpos = ($this->page*1000 + $this->y);
-         foreach($this->floatDivs AS $f) {
-           if (($clear && $f['blockContext'] == $this->blk[$blklvl]['blockContext']) || (!$clear && $currpos >= $f['startpos'] && $currpos < ($f['endpos']-0.001) && $f['blklvl'] > $blklvl && $f['blockContext'] == $this->blk[$blklvl]['blockContext'])) {
-               if ($f['side']=='L') {
-                       $l_exists= true;
-                       $l_max = max($l_max, $f['endpos']);
-                       $l_width = max($l_width , $f['w']);
-               }
-               if ($f['side']=='R') {
-                       $r_exists= true;
-                       $r_max = max($r_max, $f['endpos']);
-                       $r_width = max($r_width , $f['w']);
-               }
-           }
-         }
-       }
-       return array($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width);
-}
-/*-- END CSS-FLOAT --*/
-
-
-
-
-function OpenTag($tag,$attr)
-{
-
-  // What this gets: < $tag $attr['WIDTH']="90px" > does not get content here </closeTag here>
-  // Correct tags where HTML specifies optional end tags,
-  // and/or does not allow nesting e.g. P inside P, or 
-  if ($this->allow_html_optional_endtags) {
-    if (($tag == 'P' || $tag == 'DIV' || $tag == 'H1' || $tag == 'H2' || $tag == 'H3' || $tag == 'H4' || $tag == 'H5' || $tag == 'H6' || $tag == 'UL' || $tag == 'OL' || $tag == 'TABLE' || $tag=='PRE' || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DL' || $tag == 'HR' ) && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); }
-    if ($tag == 'DD' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); }
-    if ($tag == 'DD' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); }
-    if ($tag == 'DT' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); }
-    if ($tag == 'DT' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); }
-    if ($tag == 'LI' && $this->lastoptionaltag == 'LI') { $this->CloseTag($this->lastoptionaltag ); }
-    if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag ); }        // *TABLES*
-    if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); }        // *TABLES*
-    if ($tag == 'TR' && $this->lastoptionaltag == 'TR') { $this->CloseTag($this->lastoptionaltag ); }  // *TABLES*
-    if ($tag == 'TR' && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag );  $this->CloseTag('TR'); $this->CloseTag('THEAD'); }        // *TABLES*
-    if ($tag == 'TR' && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag );  $this->CloseTag('TR'); $this->CloseTag('THEAD'); }        // *TABLES*
-    if ($tag == 'OPTION' && $this->lastoptionaltag == 'OPTION') { $this->CloseTag($this->lastoptionaltag ); }
-  }
-
-  $align = array('left'=>'L','center'=>'C','right'=>'R','top'=>'T','text-top'=>'TT','middle'=>'M','baseline'=>'BS','bottom'=>'B','text-bottom'=>'TB','justify'=>'J');
-
-  $this->ignorefollowingspaces=false;
-
-  //Opening tag
-  switch($tag){
-
-     case 'DOTTAB': 
-       $objattr = array();
-       $objattr['type'] = 'dottab';
-       $dots=str_repeat('.', 3)."  ";  // minimum number of dots
-       $objattr['width'] = $this->GetStringWidth($dots);
-       $objattr['margin_top'] = 0;
-       $objattr['margin_bottom'] = 0;
-       $objattr['margin_left'] = 0;
-       $objattr['margin_right'] = 0;
-       $objattr['height'] = 0;
-       $objattr['colorarray'] = $this->colorarray;
-       $objattr['border_top']['w'] = 0;
-       $objattr['border_bottom']['w'] = 0;
-       $objattr['border_left']['w'] = 0;
-       $objattr['border_right']['w'] = 0;
-
-       // mPDF 5.6.19
-       $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);     // mPDF 5.6.33
-       if (isset($properties['OUTDENT'])) {    // mPDF 5.6.33
-               $objattr['outdent'] = $this->ConvertSize($properties['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       else if (isset($attr['OUTDENT'])) {
-               $objattr['outdent'] = $this->ConvertSize($attr['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       else { $objattr['outdent'] = 0; }
-
-       $objattr['fontfamily'] = $this->FontFamily;
-       $objattr['fontsize'] = $this->FontSizePt;
-
-       $e = "\xbb\xa4\xactype=dottab,objattr=".serialize($objattr)."\xbb\xa4\xac";
-/*-- TABLES --*/
-       // Output it to buffers
-       if ($this->tableLevel) {
-               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
-               }
-               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-               }
-               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
-               $this->_saveCellTextBuffer($e);
-       }
-       else {
-/*-- END TABLES --*/
-               $this->_saveTextBuffer($e);
-       }       // *TABLES*
-       break;
-
-     case 'PAGEHEADER': 
-     case 'PAGEFOOTER':
-       $this->ignorefollowingspaces = true; 
-       if ($attr['NAME']) { $pname = $attr['NAME']; }
-       else { $pname = '_default'; }
-
-               if ($tag=='PAGEHEADER') { $p = &$this->pageheaders[$pname]; }
-               else { $p = &$this->pagefooters[$pname]; }
-
-               $p['L']=array();
-               $p['C']=array();
-               $p['R']=array();
-               $p['L']['font-style'] = ''; 
-               $p['C']['font-style'] = ''; 
-               $p['R']['font-style'] = ''; 
-
-               if (isset($attr['CONTENT-LEFT'])) {
-                       $p['L']['content'] = $attr['CONTENT-LEFT'];
-               }
-               if (isset($attr['CONTENT-CENTER'])) {
-                       $p['C']['content'] = $attr['CONTENT-CENTER'];
-               }
-               if (isset($attr['CONTENT-RIGHT'])) {
-                       $p['R']['content'] = $attr['CONTENT-RIGHT'];
-               }
-
-               if (isset($attr['HEADER-STYLE']) || isset($attr['FOOTER-STYLE'])) {     // font-family,size,weight,style,color
-                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE']); }
-                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE']); }
-                       if (isset($properties['FONT-FAMILY'])) { 
-                               $p['L']['font-family'] = $properties['FONT-FAMILY']; 
-                               $p['C']['font-family'] = $properties['FONT-FAMILY']; 
-                               $p['R']['font-family'] = $properties['FONT-FAMILY']; 
-                       }
-                       if (isset($properties['FONT-SIZE'])) { 
-                               $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; 
-                               $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; 
-                               $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; 
-                       }
-                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') {
-                               $p['L']['font-style'] = 'B'; 
-                               $p['C']['font-style'] = 'B'; 
-                               $p['R']['font-style'] = 'B'; 
-                       }
-                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { 
-                               $p['L']['font-style'] .= 'I'; 
-                               $p['C']['font-style'] .= 'I'; 
-                               $p['R']['font-style'] .= 'I'; 
-                       }
-                       if (isset($properties['COLOR'])) { 
-                               $p['L']['color'] = $properties['COLOR']; 
-                               $p['C']['color'] = $properties['COLOR']; 
-                               $p['R']['color'] = $properties['COLOR']; 
-                       }
-               }
-               if (isset($attr['HEADER-STYLE-LEFT']) || isset($attr['FOOTER-STYLE-LEFT'])) {
-                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-LEFT']); }
-                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-LEFT']); }
-                       if (isset($properties['FONT-FAMILY'])) { $p['L']['font-family'] = $properties['FONT-FAMILY']; }
-                       if (isset($properties['FONT-SIZE'])) { $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
-                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['L']['font-style'] ='B'; }
-                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['L']['font-style'] .='I'; }
-                       if (isset($properties['COLOR'])) { $p['L']['color'] = $properties['COLOR']; }
-               }
-               if (isset($attr['HEADER-STYLE-CENTER']) || isset($attr['FOOTER-STYLE-CENTER'])) {
-                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-CENTER']); }
-                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-CENTER']); }
-                       if (isset($properties['FONT-FAMILY'])) { $p['C']['font-family'] = $properties['FONT-FAMILY']; }
-                       if (isset($properties['FONT-SIZE'])) { $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
-                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['C']['font-style'] = 'B'; }
-                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['C']['font-style'] .= 'I'; }
-                       if (isset($properties['COLOR'])) { $p['C']['color'] = $properties['COLOR']; }
-               }
-               if (isset($attr['HEADER-STYLE-RIGHT']) || isset($attr['FOOTER-STYLE-RIGHT'])) {
-                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-RIGHT']); }
-                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-RIGHT']); }
-                       if (isset($properties['FONT-FAMILY'])) { $p['R']['font-family'] = $properties['FONT-FAMILY']; }
-                       if (isset($properties['FONT-SIZE'])) { $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
-                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['R']['font-style'] = 'B'; }
-                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['R']['font-style'] .= 'I'; }
-                       if (isset($properties['COLOR'])) { $p['R']['color'] = $properties['COLOR']; }
-               }
-               if (isset($attr['LINE']) && $attr['LINE']) {    // 0|1|on|off
-                       if ($attr['LINE']=='1' || strtoupper($attr['LINE'])=='ON') { $lineset=1; }
-                       else { $lineset=0; }
-                       $p['line'] = $lineset;
-               }
-       break;
-
-
-/*-- HTMLHEADERS-FOOTERS --*/
-     case 'SETHTMLPAGEHEADER': 
-     case 'SETHTMLPAGEFOOTER':
-       $this->ignorefollowingspaces = true; 
-       if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; }
-       else { $pname = '_default'; }
-       if (isset($attr['PAGE']) && $attr['PAGE']) {    // O|odd|even|E|ALL|[blank]
-               if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; }
-               else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; }
-               else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; }
-               else { $side='odd'; }
-       }
-       else { $side='odd'; }
-       if (isset($attr['VALUE']) && $attr['VALUE']) {  // -1|1|on|off
-               if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; }
-               else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; }
-               else { $set=1; }
-       }
-       else { $set=1; }
-       if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETHTMLPAGEHEADER') { $write = 1; }
-       else { $write = 0; }
-       if ($side=='odd' || $side=='both') {
-               if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'O',$write); }
-               else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'O'); }
-               else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','O'); }
-               else { $this->SetHTMLFooter('','O'); }
-       }
-       if ($side=='even' || $side=='both') {
-               if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'E',$write); }
-               else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'E'); }
-               else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','E'); }
-               else { $this->SetHTMLFooter('','E'); }
-       }
-       break;
-/*-- END HTMLHEADERS-FOOTERS --*/
-
-     case 'SETPAGEHEADER': 
-     case 'SETPAGEFOOTER':
-       $this->ignorefollowingspaces = true; 
-       if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; }
-       else { $pname = '_default'; }
-       if (isset($attr['PAGE']) && $attr['PAGE']) {    // O|odd|even|E|ALL|[blank]
-               if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; }
-               else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; }
-               else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; }
-               else { $side='odd'; }
-       }
-       else { $side='odd'; }
-       if (isset($attr['VALUE']) && $attr['VALUE']) {  // -1|1|on|off
-               if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; }
-               else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; }
-               else { $set=1; }
-       }
-       else { $set=1; }
-       if ($side=='odd' || $side=='both') {
-               if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = $this->pageheaders[$pname]; }
-               else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['odd'] = $this->pagefooters[$pname]; }
-               else if ($tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = array(); }
-               else { $this->footerDetails['odd'] = array(); }
-               if (!$this->mirrorMargins || ($this->page)%2!=0) {      // ODD
-                       if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['odd'],$this->HTMLHeader); }
-                       if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['odd'],$this->HTMLFooter); }
-               }
-       }
-       if ($side=='even' || $side=='both') {
-               if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['even'] = $this->pageheaders[$pname]; }
-               else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['even'] = $this->pagefooters[$pname]; }
-               else if ($tag=='SETPAGEHEADER') { $this->headerDetails['even'] = array(); }
-               else { $this->footerDetails['even'] = array(); }
-               if ($this->mirrorMargins && ($this->page)%2==0) {       // EVEN
-                       if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['even'],$this->HTMLHeaderE); }
-                       if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['even'],$this->HTMLFooterE); }
-               }
-       }
-       if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETPAGEHEADER') {
-               $this->Header();
-       }
-       break;
-
-
-/*-- TOC --*/
-     case 'TOC': //added custom-tag - set Marker for insertion later of ToC
-       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
-       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
-       $this->tocontents->openTagTOC($attr);
-       break;
-
-
-
-     case 'TOCPAGEBREAK': // custom-tag - set Marker for insertion later of ToC AND adds PAGEBREAK
-       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
-       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
-       list($isbreak,$toc_id) = $this->tocontents->openTagTOCPAGEBREAK($attr);
-       if ($isbreak) break;
-       // No break - continues as PAGEBREAK...
-/*-- END TOC --*/
-
-
-    case 'PAGE_BREAK': //custom-tag
-    case 'PAGEBREAK': //custom-tag
-    case 'NEWPAGE': //custom-tag
-    case 'FORMFEED': //custom-tag
-
-       $save_blklvl = $this->blklvl;
-       $save_blk = $this->blk;
-       $save_silp = $this->saveInlineProperties();
-       $save_spanlvl = $this->spanlvl;
-       $save_ilp = $this->InlineProperties;
-
-       // Close any open block tags
-       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-       if(!empty($this->textbuffer))  {        //Output previously buffered content
-               $this->printbuffer($this->textbuffer);
-               $this->textbuffer=array(); 
-      }
-       $this->ignorefollowingspaces = true;
-       $save_cols = false;
-/*-- COLUMNS --*/
-       if ($this->ColActive) {
-               $save_cols = true;
-               $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
-               $this->SetColumns(0);
-       }
-/*-- END COLUMNS --*/
-
-
-       if (isset($attr['SHEET-SIZE']) && $tag != 'FORMFEED' && !$this->restoreBlockPageBreaks) { 
-               // Convert to same types as accepted in initial mPDF() A4, A4-L, or array(w,h)
-               $prop = preg_split('/\s+/',trim($attr['SHEET-SIZE']));
-               if (count($prop) == 2 ) {
-                       $newformat = array($this->ConvertSize($prop[0]), $this->ConvertSize($prop[1]));
-               }
-               else { $newformat = $attr['SHEET-SIZE']; }
-       }
-       else { $newformat = ''; }
-
-       $mgr = $mgl = $mgt = $mgb = $mgh = $mgf = '';
-       if (isset($attr['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($attr['MARGIN-RIGHT'],$this->w,$this->FontSize,false); }
-       if (isset($attr['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($attr['MARGIN-LEFT'],$this->w,$this->FontSize,false); }
-       if (isset($attr['MARGIN-TOP'])) { $mgt = $this->ConvertSize($attr['MARGIN-TOP'],$this->w,$this->FontSize,false); }
-       if (isset($attr['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($attr['MARGIN-BOTTOM'],$this->w,$this->FontSize,false); }
-       if (isset($attr['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($attr['MARGIN-HEADER'],$this->w,$this->FontSize,false); }
-       if (isset($attr['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($attr['MARGIN-FOOTER'],$this->w,$this->FontSize,false); }
-       $ohname = $ehname = $ofname = $efname = '';
-       if (isset($attr['ODD-HEADER-NAME'])) { $ohname = $attr['ODD-HEADER-NAME']; }
-       if (isset($attr['EVEN-HEADER-NAME'])) { $ehname = $attr['EVEN-HEADER-NAME']; }
-       if (isset($attr['ODD-FOOTER-NAME'])) { $ofname = $attr['ODD-FOOTER-NAME']; }
-       if (isset($attr['EVEN-FOOTER-NAME'])) { $efname = $attr['EVEN-FOOTER-NAME']; }
-       $ohvalue = $ehvalue = $ofvalue = $efvalue = 0;
-       if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='1' || strtoupper($attr['ODD-HEADER-VALUE'])=='ON')) { $ohvalue = 1; }
-       else if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='-1' || strtoupper($attr['ODD-HEADER-VALUE'])=='OFF')) { $ohvalue = -1; }
-       if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='ON')) { $ehvalue = 1; }
-       else if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='OFF')) { $ehvalue = -1; }
-       if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='ON')) { $ofvalue = 1; }
-       else if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='OFF')) { $ofvalue = -1; }
-       if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='ON')) { $efvalue = 1; }
-       else if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='OFF')) { $efvalue = -1; }
-
-       if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='L' || strtoupper($attr['ORIENTATION'])=='LANDSCAPE')) { $orient = 'L'; }
-       else if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='P' || strtoupper($attr['ORIENTATION'])=='PORTRAIT')) { $orient = 'P'; }
-       else { $orient = $this->CurOrientation; }
-
-       if (isset($attr['PAGE-SELECTOR']) && $attr['PAGE-SELECTOR']) { $pagesel = $attr['PAGE-SELECTOR']; }
-       else { $pagesel = ''; }
-
-       $resetpagenum = '';
-       $pagenumstyle = '';
-       $suppress = '';
-       if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; }
-       if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; }
-       if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; }
-
-       if ($tag == 'TOCPAGEBREAK') { $type = 'NEXT-ODD'; }
-       else if(isset($attr['TYPE'])) { $type = strtoupper($attr['TYPE']); }
-       else { $type = ''; }
-
-       if ($type == 'E' || $type == 'EVEN') { $this->AddPage($orient,'E', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
-       else if ($type == 'O' || $type == 'ODD') { $this->AddPage($orient,'O', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
-       else if ($type == 'NEXT-ODD') { $this->AddPage($orient,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
-       else if ($type == 'NEXT-EVEN') { $this->AddPage($orient,'NEXT-EVEN', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
-       else { $this->AddPage($orient,'', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
-
-/*-- TOC --*/
-       if ($tag == 'TOCPAGEBREAK') { 
-               if ($toc_id) { $this->tocontents->m_TOC[$toc_id]['TOCmark'] = $this->page; }
-               else { $this->tocontents->TOCmark = $this->page; }
-       }
-/*-- END TOC --*/
-
-/*-- COLUMNS --*/
-       if ($save_cols) {
-               // Restore columns
-               $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
-       }
-/*-- END COLUMNS --*/
-       if (($tag == 'FORMFEED' || $this->restoreBlockPagebreaks) && !$this->tableLevel && !$this->listlvl) {
-               $this->blk = $save_blk;
-               // Re-open block tags
-               $t = $this->blk[0]['tag'];
-               $a = $this->blk[0]['attr'];
-               $this->blklvl = 0; 
-               for ($b=0; $b<=$save_blklvl;$b++) {
-                       $tc = $t;
-                       $ac = $a;
-                       $t = $this->blk[$b+1]['tag'];
-                       $a = $this->blk[$b+1]['attr'];
-                       unset($this->blk[$b+1]);
-                       $this->OpenTag($tc,$ac); 
-               }
-               $this->spanlvl = $save_spanlvl;
-               $this->InlineProperties = $save_ilp;
-               $this->restoreInlineProperties($save_silp);
-       }
-
-       break;
-
-
-/*-- TOC --*/
-     case 'TOCENTRY':
-       if (isset($attr['CONTENT']) && $attr['CONTENT']) {
-               $objattr = array();
-               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
-               $objattr['type'] = 'toc';
-               if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['toclevel'] = $attr['LEVEL']; } else { $objattr['toclevel'] = 0; }
-               if (isset($attr['NAME']) && $attr['NAME']) { $objattr['toc_id'] = $attr['NAME']; } else { $objattr['toc_id'] = 0; }
-               $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
-               if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
-               else  { // *TABLES*
-                       $this->textbuffer[] = array($e);
-               }       // *TABLES*
-       }
-       break;
-/*-- END TOC --*/
-
-/*-- INDEX --*/
-     case 'INDEXENTRY':
-       if (isset($attr['CONTENT']) && $attr['CONTENT']) {
-               if (isset($attr['XREF']) && $attr['XREF']) {
-                       $this->IndexEntry(htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES),$attr['XREF']);
-                       break;
-               }
-               $objattr = array();
-               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
-               $objattr['type'] = 'indexentry';
-               $e = "\xbb\xa4\xactype=indexentry,objattr=".serialize($objattr)."\xbb\xa4\xac";
-               if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
-               else  { // *TABLES*
-                       $this->textbuffer[] = array($e);
-               }       // *TABLES*
-       }
-       break;
-
-     
-     case 'INDEXINSERT':
-       if (isset($attr['FONT-SIZE'])) { $reffontsize = $attr['FONT-SIZE']; } else { $reffontsize = ''; }
-       if (isset($attr['LINE-SPACING']) && $attr['LINE-SPACING']) { $linespacing = $attr['LINE-SPACING']; } else { $linespacing = ''; }
-       if (isset($attr['DIV-FONT-SIZE']) && $attr['DIV-FONT-SIZE']) { $divlettfontsize = $attr['DIV-FONT-SIZE']; } else { $divlettfontsize = ''; }
-       if (isset($attr['FONT']) && $attr['FONT']) { $reffont = $attr['FONT']; } else { $reffont = ''; }
-       if (isset($attr['DIV-FONT']) && $attr['DIV-FONT']) { $divlettfont = $attr['DIV-FONT']; } else { $divlettfont = ''; }
-       if (isset($attr['COLS']) && $attr['COLS']) { $cols = $attr['COLS']; } else { $cols = 1; }
-       if (isset($attr['OFFSET']) && $attr['OFFSET']) { $offset = $attr['OFFSET']; } else { $offset = 3; }
-       if (isset($attr['GAP']) && $attr['GAP']) { $gap = $attr['GAP']; } else { $gap = 5; }
-
-       if (isset($attr['USEDIVLETTERS']) && (strtoupper($attr['USEDIVLETTERS'])=='OFF' || $attr['USEDIVLETTERS']==-1 || $attr['USEDIVLETTERS']==='0')) { $usedivletters = 0; }
-       else { $usedivletters = 1; }
-
-       if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; }
-       else { $links = false; }
-       $this->CreateIndex($cols, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont,$divlettfont, $links);
-       break;
-/*-- END INDEX --*/
-
-/*-- WATERMARK --*/
-     
-     case 'WATERMARKTEXT':
-       if (isset($attr['CONTENT']) && $attr['CONTENT']) { $txt = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); } else { $txt = ''; }
-       if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; }
-       $this->SetWatermarkText($txt, $alpha);
-       break;
-
-     
-     case 'WATERMARKIMAGE':
-       if (isset($attr['SRC'])) { $src = $attr['SRC']; } else { $src = ''; }
-       if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; }
-       if (isset($attr['SIZE']) && $attr['SIZE']) { 
-               $size = $attr['SIZE']; 
-               if (strpos($size,',')) { $size = explode(',',$size); }
-       } 
-       else { $size = 'D'; }
-       if (isset($attr['POSITION']) && $attr['POSITION']) {    // mPDF 5.7.2
-               $pos = $attr['POSITION']; 
-               if (strpos($pos,',')) { $pos = explode(',',$pos); }
-       } 
-       else { $pos = 'P'; }
-       $this->SetWatermarkImage($src, $alpha, $size, $pos);
-       break;
-/*-- END WATERMARK --*/
-
-/*-- BOOKMARKS --*/
-     case 'BOOKMARK':
-       if (isset($attr['CONTENT'])) {
-               $objattr = array();
-               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
-               $objattr['type'] = 'bookmark';
-               if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; }
-               $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac";
-               if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
-               else  { // *TABLES*
-                       $this->textbuffer[] = array($e);
-               }       // *TABLES*
-       }
-       break;
-/*-- END BOOKMARKS --*/
-
-/*-- ANNOTATIONS --*/
-     case 'ANNOTATION':
-
-       //if (isset($attr['CONTENT']) && !$this->writingHTMLheader && !$this->writingHTMLfooter) {      // Stops annotations in FixedPos
-       if (isset($attr['CONTENT'])) {
-               $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
-               $objattr['type'] = 'annot';
-               $objattr['POPUP'] = ''; 
-       }
-       else { break; }
-       if (isset($attr['POS-X'])) { $objattr['POS-X'] = $attr['POS-X']; } else { $objattr['POS-X'] = 0; }
-       if (isset($attr['POS-Y'])) { $objattr['POS-Y'] = $attr['POS-Y']; } else { $objattr['POS-Y'] = 0; }
-       if (isset($attr['ICON'])) { $objattr['ICON'] = $attr['ICON']; } else { $objattr['ICON'] = 'Note'; }
-       if (isset($attr['AUTHOR'])) { $objattr['AUTHOR'] = $attr['AUTHOR']; } 
-       else if (isset($attr['TITLE'])) { $objattr['AUTHOR'] = $attr['TITLE']; } else  { $objattr['AUTHOR'] = ''; }
-       if (isset($attr['FILE'])) { $objattr['FILE'] = $attr['FILE']; } else  { $objattr['FILE'] = ''; }
-       if (isset($attr['SUBJECT'])) { $objattr['SUBJECT'] = $attr['SUBJECT']; } else  { $objattr['SUBJECT'] = ''; }
-       if (isset($attr['OPACITY']) && $attr['OPACITY']>0 && $attr['OPACITY']<=1) { $objattr['OPACITY'] = $attr['OPACITY']; } 
-       else if ($this->annotMargin) { $objattr['OPACITY'] = 1; }
-       else { $objattr['OPACITY'] = $this->annotOpacity; }
-       if (isset($attr['COLOR'])) { 
-               $cor = $this->ConvertColor($attr['COLOR']);
-               if ($cor) {  $objattr['COLOR'] = $cor; }
-               else  { $objattr['COLOR'] = $this->ConvertColor('yellow'); }
-       } 
-       else  { $objattr['COLOR'] = $this->ConvertColor('yellow'); }
-
-       if (isset($attr['POPUP']) && !empty($attr['POPUP'])) { 
-               $pop = preg_split('/\s+/',trim($attr['POPUP']));
-               if (count($pop)>1) { $objattr['POPUP'] = $pop; }
-               else { $objattr['POPUP'] = true; }
-       } 
-       $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
-       if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
-       else  { // *TABLES*
-               $this->textbuffer[] = array($e);
-       }       // *TABLES*
-       break;
-/*-- END ANNOTATIONS --*/
-
-
-/*-- COLUMNS --*/
-    case 'COLUMNS': //added custom-tag
-       if (isset($attr['COLUMN-COUNT']) && ($attr['COLUMN-COUNT'] || $attr['COLUMN-COUNT']==='0')) {
-               // Close any open block tags
-               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-               if(!empty($this->textbuffer))  {        //Output previously buffered content
-                       $this->printbuffer($this->textbuffer);
-               $this->textbuffer=array(); 
-       }
-
-               if (isset($attr['VALIGN']) && $attr['VALIGN']) { 
-                       if ($attr['VALIGN'] == 'J') { $valign = 'J'; }
-                       else { $valign = $align[$attr['VALIGN']]; }
-               }
-               else { $valign = ''; }
-               if (isset($attr['COLUMN-GAP']) && $attr['COLUMN-GAP']) { $this->SetColumns($attr['COLUMN-COUNT'],$valign,$attr['COLUMN-GAP']); }
-               else { $this->SetColumns($attr['COLUMN-COUNT'],$valign); }
-       }
-       $this->ignorefollowingspaces = true;
-       break;
-
-    case 'COLUMN_BREAK': //custom-tag
-    case 'COLUMNBREAK': //custom-tag
-    case 'NEWCOLUMN': //custom-tag
-       $this->ignorefollowingspaces = true;
-       $this->NewColumn();
-       $this->ColumnAdjust = false;    // disables all column height adjustment for the page.
-       break;
-
-/*-- END COLUMNS --*/
-
-
-    case 'BDO':
-       // $this->biDirectional = true;
-       break;
-
-
-    case 'TTZ':
-       $this->ttz = true;
-       $this->InlineProperties[$tag] = $this->saveInlineProperties();
-       $this->setCSS(array('FONT-FAMILY'=>'czapfdingbats','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE');
-       break;
-
-    case 'TTS':
-       $this->tts = true;
-       $this->InlineProperties[$tag] = $this->saveInlineProperties();
-       $this->setCSS(array('FONT-FAMILY'=>'csymbol','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE');
-       break;
-
-    case 'TTA':
-       $this->tta = true;
-       $this->InlineProperties[$tag] = $this->saveInlineProperties();
-
-       if (in_array($this->FontFamily,$this->mono_fonts)) {
-               $this->setCSS(array('FONT-FAMILY'=>'ccourier'),'INLINE');
-       }
-       else if (in_array($this->FontFamily,$this->serif_fonts)) { 
-               $this->setCSS(array('FONT-FAMILY'=>'ctimes'),'INLINE');
-       }
-       else {
-               $this->setCSS(array('FONT-FAMILY'=>'chelvetica'),'INLINE');
-       }
-       break;
-
-
-
-    // INLINE PHRASES OR STYLES
-    case 'SUB':
-    case 'SUP':
-    case 'ACRONYM':
-    case 'BIG':
-    case 'SMALL':
-    case 'INS':
-    case 'S':
-    case 'STRIKE':
-    case 'DEL':
-    case 'STRONG':
-    case 'CITE':
-    case 'Q':
-    case 'EM':
-    case 'B':
-    case 'I':
-    case 'U':
-    case 'SAMP':
-    case 'CODE':
-    case 'KBD':
-    case 'TT':
-    case 'VAR':
-    case 'FONT':
-    case 'MARK':       // mPDF 5.5.09
-    case 'TIME':
-
-    case 'SPAN':
-/*-- ANNOTATIONS --*/
-       if ($this->title2annots && isset($attr['TITLE'])) {
-               $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-
-               $objattr['CONTENT'] = $attr['TITLE'];
-               $objattr['type'] = 'annot';
-               $objattr['POS-X'] = 0;
-               $objattr['POS-Y'] = 0;
-               $objattr['ICON'] = 'Comment';
-               $objattr['AUTHOR'] = '';
-               $objattr['SUBJECT'] = '';
-               $objattr['OPACITY'] = $this->annotOpacity; 
-               $objattr['COLOR'] = $this->ConvertColor('yellow'); 
-               $annot = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
-       }
-/*-- END ANNOTATIONS --*/
-
-       if ($tag == 'SPAN') {
-               $this->spanlvl++;
-               $this->InlineProperties['SPAN'][$this->spanlvl] = $this->saveInlineProperties();
-               if (isset($annot)) { $this->InlineAnnots[$tag][$this->spanlvl] = $annot; }      // *ANNOTATIONS*
-       }
-       else { 
-               if (!isset($this->InlineProperties[$tag])) $this->InlineProperties[$tag] = $this->saveInlineProperties(); // mPDF 5.4.13
-               if (isset($annot)) { $this->InlineAnnots[$tag] = $annot; }      // *ANNOTATIONS*
-       }
-       $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);
-       if (!empty($properties)) $this->setCSS($properties,'INLINE');
-       break;
-
-
-    case 'A':
-       if (isset($attr['NAME']) and $attr['NAME'] != '') { 
-               $e = '';
-/*-- BOOKMARKS --*/
-               if ($this->anchor2Bookmark) { 
-                       $objattr = array();
-                       $objattr['CONTENT'] = htmlspecialchars_decode($attr['NAME'],ENT_QUOTES);
-                       $objattr['type'] = 'bookmark';
-                       if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; }
-                       $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac";
-               }
-/*-- END BOOKMARKS --*/
-               if($this->tableLevel) { // *TABLES*
-                       $this->_saveCellTextBuffer($e, '', $attr['NAME']);      // *TABLES*
-               }       // *TABLES*
-               else  { // *TABLES*
-                       $this->_saveTextBuffer($e, '', $attr['NAME']);  //an internal link (adds a space for recognition)
-               }       // *TABLES*
-       }
-       if (isset($attr['HREF'])) { 
-               $this->InlineProperties['A'] = $this->saveInlineProperties();
-               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-               if (!empty($properties)) $this->setCSS($properties,'INLINE');
-               $this->HREF=htmlspecialchars_decode(urldecode($attr['HREF']));
-       }
-       break;
-
-    case 'LEGEND':     // mPDF 5.4.18
-               $this->InlineProperties['LEGEND'] = $this->saveInlineProperties();
-               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-               if (!empty($properties)) $this->setCSS($properties,'INLINE');
-       break;
-
-
-
-    case 'PROGRESS':   // mPDF 5.5.09
-    case 'METER':      // mPDF 5.5.09
-       $this->inMeter = true;  // mPDF 5.5.09
-
-       if (isset($attr['MAX']) && $attr['MAX']) { $max = $attr['MAX']; }
-       else { $max = 1; }
-       if (isset($attr['MIN']) && $attr['MIN'] && $tag=='METER') { $min = $attr['MIN']; }
-       else { $min = 0; }
-       if ($max < $min) { $max = $min; }
-
-       if (isset($attr['VALUE']) && ($attr['VALUE'] || $attr['VALUE']==='0')) {
-               $value = $attr['VALUE']; 
-               if ($value < $min) { $value = $min; }
-               else if ($value > $max) { $value = $max; }
-       }
-       else { $value = ''; }
-
-       if (isset($attr['LOW']) && $attr['LOW']) { $low = $attr['LOW']; }
-       else { $low = $min; }
-       if ($low < $min) { $low = $min; }
-       else if ($low > $max) { $low = $max; }
-       if (isset($attr['HIGH']) && $attr['HIGH']) { $high = $attr['HIGH']; }
-       else { $high = $max; }
-       if ($high < $low) { $high = $low; }
-       else if ($high > $max) { $high = $max; }
-       if (isset($attr['OPTIMUM']) && $attr['OPTIMUM']) { $optimum = $attr['OPTIMUM']; }
-       else { $optimum = $min + (($max-$min)/2); }
-       if ($optimum < $min) { $optimum = $min; }
-       else if ($optimum > $max) { $optimum = $max; }
-       if (isset($attr['TYPE']) && $attr['TYPE']) { $type = $attr['TYPE']; }
-       else { $type = ''; }
-       $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['padding_top'] = 0;
-               $objattr['padding_bottom'] = 0;
-               $objattr['padding_left'] = 0;
-               $objattr['padding_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-
-               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
-                       return; 
-               }
-               $objattr['visibility'] = 'visible'; 
-               if (isset($properties['VISIBILITY'])) {
-                       $v = strtolower($properties['VISIBILITY']);
-                       if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { 
-                               $objattr['visibility'] = $v; 
-                       }
-               }
-
-               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
-               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
-               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
-               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
-
-               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-               $w = 0;
-               $h = 0;
-               if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-
-               if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-
-               if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
-               if ($this->HREF) {
-                       if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
-                               $href = $this->HREF;
-                               while(array_key_exists($href,$this->internallink)) $href="#".$href;
-                               $this->internallink[$href] = $this->AddLink();
-                               $objattr['link'] = $this->internallink[$href];
-                       }
-                       else { $objattr['link'] = $this->HREF; }
-               }
-               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
-               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
-
-               // Image file
-               if (!class_exists('meter', false)) { 
-                       include(_MPDF_PATH.'classes/meter.php'); 
-               }
-               $this->meter = new meter();
-               $svg = $this->meter->makeSVG(strtolower($tag), $type, $value, $max, $min, $optimum, $low, $high);
-               //Save to local file
-               $srcpath= _MPDF_TEMP_PATH.'_tempSVG'.uniqid(rand(1,100000),true).'_'.strtolower($tag).'.svg';
-               file_put_contents($srcpath, $svg);
-               $orig_srcpath = $srcpath;
-               $this->GetFullPath($srcpath); 
-
-               $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
-               if(!$info) {
-                       $info = $this->_getImage($this->noImageFile);
-                       if ($info) { 
-                               $srcpath = $this->noImageFile; 
-                               $w = ($info['w'] * (25.4/$this->dpi)); 
-                               $h = ($info['h'] * (25.4/$this->dpi));
-                       }
-               }
-               if(!$info) break;
-
-               $objattr['file'] = $srcpath;
-               //Default width and height calculation if needed
-               if($w==0 and $h==0) {
-                       // SVG units are pixels
-                       $w = $this->FontSize/(10/_MPDFK) * abs($info['w'])/_MPDFK;      // mPDF 5.5.21
-                       $h = $this->FontSize/(10/_MPDFK) * abs($info['h'])/_MPDFK;
-               }
-               // IF WIDTH OR HEIGHT SPECIFIED
-               if($w==0)  $w=abs($h*$info['w']/$info['h']); 
-               if($h==0)       $h=abs($w*$info['h']/$info['w']);
-
-               // Resize to maximum dimensions of page
-               $maxWidth = $this->blk[$this->blklvl]['inner_width'];
-               $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ;
-               if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
-               if ($w + $extrawidth > $maxWidth ) {
-                       $w = $maxWidth - $extrawidth;
-                       $h=abs($w*$info['h']/$info['w']);
-               }
-
-               if ($h + $extraheight > $maxHeight ) {
-                       $h = $maxHeight - $extraheight;
-                       $w=abs($h*$info['w']/$info['h']);
-               }
-               $objattr['type'] = 'image';
-               $objattr['itype'] = $info['type'];
-
-               $objattr['orig_h'] = $info['h'];
-               $objattr['orig_w'] = $info['w'];
-               $objattr['wmf_x'] = $info['x'];
-               $objattr['wmf_y'] = $info['y'];
-               $objattr['height'] = $h + $extraheight;
-               $objattr['width'] = $w + $extrawidth;
-               $objattr['image_height'] = $h;
-               $objattr['image_width'] = $w;
-               $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
-               $properties = array();
-               if ($this->tableLevel) {
-                       $this->_saveCellTextBuffer($e, $this->HREF);
-                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
-               }
-               else {
-                       $this->_saveTextBuffer($e, $this->HREF);
-               }
-
-       break;
-
-
-    case 'BR':
-       // Added mPDF 3.0 Float DIV - CLEAR
-       if (isset($attr['STYLE'])) {
-               $properties = $this->cssmgr->readInlineCSS($attr['STYLE']);
-               if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); }        // *CSS-FLOAT*
-       }
-
-
-/*-- TABLES --*/
-       if($this->tableLevel) {
-          
-          if ($this->blockjustfinished || $this->listjustfinished) {
-               $this->_saveCellTextBuffer("\n");
-          }
-
-               $this->_saveCellTextBuffer("\n");
-               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-               }
-               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];  
-               }
-               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
-       }
-       else  {
-/*-- END TABLES --*/
-               if (count($this->textbuffer)) {
-                       $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/ $/','',$this->textbuffer[count($this->textbuffer)-1][0]);
-               }
-               $this->_saveTextBuffer("\n");
-       }       // *TABLES*
-       $this->ignorefollowingspaces = true; 
-       $this->blockjustfinished=false;
-       $this->listjustfinished=false;
-
-       $this->linebreakjustfinished=true;
-       break;
-
-
-       // *********** BLOCKS  ********************
-
-
-    case 'PRE':
-       $this->ispre=true;      // ADDED - Prevents left trim of textbuffer in printbuffer()
-
-    case 'DIV':
-    case 'FORM':
-    case 'CENTER':
-
-    case 'BLOCKQUOTE':
-    case 'ADDRESS': 
-
-    case 'CAPTION':
-    case 'P':
-    case 'H1':
-    case 'H2':
-    case 'H3':
-    case 'H4':
-    case 'H5':
-    case 'H6':
-    case 'DL':
-    case 'DT':
-    case 'DD':
-    case 'FIELDSET':
-    // mPDF 5.5.22
-    case 'DETAILS':
-    case 'SUMMARY':
-    // mPDF 5.5.09
-    case 'ARTICLE':
-    case 'ASIDE':
-    case 'FIGURE':
-    case 'FIGCAPTION':
-    case 'FOOTER':
-    case 'HEADER':
-    case 'HGROUP':
-    case 'NAV':
-    case 'SECTION':
-       $p = $this->cssmgr->PreviewBlockCSS($tag,$attr);
-       if(isset($p['DISPLAY']) && strtolower($p['DISPLAY'])=='none') { 
-               $this->blklvl++;
-               $this->blk[$this->blklvl]['hide'] = true; 
-               return; 
-       }
-       if($tag == 'CAPTION') {
-               // position is written in AdjstHTML
-               if (isset($attr['POSITION']) && strtolower($attr['POSITION'])=='bottom') { $divpos = 'B'; }
-               else { $divpos = 'T'; }
-               if (isset($attr['ALIGN']) && strtolower($attr['ALIGN'])=='bottom') { $cappos = 'B'; }
-               else if (isset($p['CAPTION-SIDE']) && strtolower($p['CAPTION-SIDE'])=='bottom') { $cappos = 'B'; }
-               else { $cappos = 'T'; }
-               if (isset($attr['ALIGN'])) { unset($attr['ALIGN']); }
-               if ($cappos != $divpos) {
-                       $this->blklvl++;
-                       $this->blk[$this->blklvl]['hide'] = true; 
-                       return; 
-               }
-       }
-
-/*-- FORMS --*/
-       if($tag == 'FORM') {
-               if (isset($attr['METHOD']) && strtolower($attr['METHOD'])=='get') { $this->form->formMethod = 'GET'; }
-               else { $this->form->formMethod = 'POST'; }
-               if (isset($attr['ACTION'])) { $this->form->formAction = $attr['ACTION']; }
-               else { $this->form->formAction = ''; }
-       }
-/*-- END FORMS --*/
-
-
-/*-- CSS-POSITION --*/
-       if ((isset($p['POSITION']) && (strtolower($p['POSITION'])=='fixed' || strtolower($p['POSITION'])=='absolute')) && $this->blklvl==0) {
-               if ($this->inFixedPosBlock) {
-                       $this->Error("Cannot nest block with position:fixed or position:absolute"); 
-               }
-               $this->inFixedPosBlock = true;
-               return;
-       }
-/*-- END CSS-POSITION --*/
-       // Start Block
-       $this->ignorefollowingspaces = true; 
-
-       if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; }
-       else { $lastbottommargin = 0; }
-       $this->lastblockbottommargin = 0;
-       $this->blockjustfinished=false;
-
-/*-- LISTS --*/
-       if ($this->listlvl>0) { return; }
-/*-- END LISTS --*/
-
-       $this->InlineProperties = array(); 
-       $this->spanlvl = 0;
-       $this->listjustfinished=false;
-       $this->divbegin=true;
-
-       $this->linebreakjustfinished=false;
-
-/*-- TABLES --*/
-       if ($this->tableLevel) {
-          
-          // If already something on the line
-          if ($this->cell[$this->row][$this->col]['s'] > 0  && !$this->nestedtablejustfinished ) {
-               $this->_saveCellTextBuffer("\n");
-               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
-               }
-               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-               }
-               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
-          }
-          // Cannot set block properties inside table - use Bold to indicate h1-h6
-          if ($tag == 'CENTER' && $this->tdbegin) { $this->cell[$this->row][$this->col]['a'] = $align['center']; }
-
-               $this->InlineProperties['BLOCKINTABLE'] = $this->saveInlineProperties();
-               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-               if (!empty($properties)) $this->setCSS($properties,'INLINE');
-
-
-          break;
-       }
-/*-- END TABLES --*/
-
-       if ($tag == 'P' || $tag == 'DT' || $tag == 'DD') { $this->lastoptionaltag = $tag; } // Save current HTML specified optional endtag
-       else { $this->lastoptionaltag = ''; }
-
-       if ($this->lastblocklevelchange == 1) { $blockstate = 1; }      // Top margins/padding only
-       else if ($this->lastblocklevelchange < 1) { $blockstate = 0; }  // NO margins/padding
-       $this->printbuffer($this->textbuffer,$blockstate);
-       $this->textbuffer=array();
-
-       $save_blklvl = $this->blklvl;
-       $save_blk = $this->blk;
-       $save_silp = $this->saveInlineProperties();
-       $save_spanlvl = $this->spanlvl;
-       $save_ilp = $this->InlineProperties;
-
-       $this->blklvl++;
-
-       $currblk =& $this->blk[$this->blklvl];
-       $this->initialiseBlock($currblk);
-       $prevblk =& $this->blk[$this->blklvl-1];
-
-       $currblk['tag'] = $tag;
-       $currblk['attr'] = $attr;
-
-       $this->Reset();
-       $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
-       $pagesel = ''; 
-/*-- CSS-PAGE --*/
-
-       if (isset($properties['PAGE'])) { $pagesel = $properties['PAGE']; } 
-/*-- END CSS-PAGE --*/
-
-       // If page-box has changed AND/OR PAGE-BREAK-BEFORE
-       $save_cols = false;
-       if (($pagesel && $pagesel != $this->page_box['current']) || (isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) {
-               if ($this->blklvl>1) {
-                       // Close any open block tags
-                       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-                       // Output any text left in buffer
-                       if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
-               }
-/*-- COLUMNS --*/
-               if ($this->ColActive) {
-                       $save_cols = true;
-                       $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
-                       $this->SetColumns(0);
-               }
-/*-- END COLUMNS --*/
-
-
-               // Must Add new page if changed page properties
-               if (isset($properties['PAGE-BREAK-BEFORE'])) {
-                       if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-                       else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-                       else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'ALWAYS') { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-                       else if ($this->page_box['current'] != $pagesel) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }        // *CSS-PAGE*
-               }
-/*-- CSS-PAGE --*/
-               else if ($pagesel != $this->page_box['current']) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-/*-- END CSS-PAGE --*/
-
-               // if using htmlheaders, the headers need to be rewritten when new page
-               // done by calling WriteHTML() within resethtmlheaders
-               // so block is reset to 0 - now we need to resurrect it
-               // As in WriteHTML() initialising
-               if (!($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) {
-                       $this->blklvl = 0;
-                       $this->lastblocklevelchange = 0;
-                       $this->blk = array();
-                       $this->initialiseBlock($this->blk[0]);
-                       $this->blk[0]['width'] =& $this->pgwidth;
-                       $this->blk[0]['inner_width'] =& $this->pgwidth;
-                       $this->blk[0]['blockContext'] = $this->blockContext;
-                       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
-                       $this->setCSS($properties,'','BODY'); 
-                       $this->blklvl++;
-                       $currblk =& $this->blk[$this->blklvl];
-                       $prevblk =& $this->blk[$this->blklvl-1];
-
-                       $this->initialiseBlock($currblk);
-                       $currblk['tag'] = $tag;
-                       $currblk['attr'] = $attr;
-
-                       $this->Reset();
-                       $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
-               }
-/*-- COLUMNS --*/
-               if ($save_cols) {
-                       // Restore columns
-                       $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
-               }
-/*-- END COLUMNS --*/
-               if ($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE']) {
-                       $this->blk = $save_blk;
-                       // Re-open block tags
-                       $t = $this->blk[0]['tag'];
-                       $a = $this->blk[0]['attr'];
-                       $this->blklvl = 0; 
-                       for ($b=0; $b<=$save_blklvl;$b++) {
-                               $tc = $t;
-                               $ac = $a;
-                               $t = $this->blk[$b+1]['tag'];
-                               $a = $this->blk[$b+1]['attr'];
-                               unset($this->blk[$b+1]);
-                               $this->OpenTag($tc,$ac); 
-                       }
-                       $this->spanlvl = $save_spanlvl;
-                       $this->InlineProperties = $save_ilp;
-                       $this->restoreInlineProperties($save_silp);
-               }
-       }
-
-       if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE']) == 'AVOID' && !$this->ColActive && !$this->keep_block_together) {
-               $currblk['keep_block_together'] = 1;
-               $this->kt_y00 = $this->y;
-               $this->kt_p00 = $this->page;
-               $this->keep_block_together = 1;
-               $this->divbuffer = array();
-               $this->ktLinks = array();
-               $this->ktAnnots = array();
-               $this->ktForms = array();
-               $this->ktBlock = array();
-               $this->ktReference = array();
-               $this->ktBMoutlines = array();
-               $this->_kttoc = array();
-       }
-       if ($lastbottommargin && isset($properties['MARGIN-TOP']) && $properties['MARGIN-TOP'] && empty($properties['FLOAT'])) { $currblk['lastbottommargin'] = $lastbottommargin; }
-
-       // mPDF 5.6.01  - LAYERS
-       if (isset($properties['Z-INDEX']) && $this->currentlayer==0) {
-               $v = intval($properties['Z-INDEX']); 
-               if ($v > 0) {
-                       $currblk['z-index'] = $v; 
-                       $this->BeginLayer($v);
-               }
-       }
-
-       $this->setCSS($properties,'BLOCK',$tag); //name(id/class/style) found in the CSS array!
-       $currblk['InlineProperties'] = $this->saveInlineProperties();
-
-       if (isset($properties['VISIBILITY'])) {
-               $v = strtolower($properties['VISIBILITY']);
-               if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible' && !$this->tableLevel) { 
-                       $currblk['visibility'] = $v; 
-                       $this->SetVisibility($v);
-               }
-       }
-
-       if(isset($attr['DIR']) && $attr['DIR']) { $currblk['direction'] = strtolower($attr['DIR']); }
-       if(isset($attr['ALIGN']) && $attr['ALIGN']) { $currblk['block-align'] = $align[strtolower($attr['ALIGN'])]; }
-
-       if (isset($properties['HEIGHT'])) { 
-               $currblk['css_set_height'] = $this->ConvertSize($properties['HEIGHT'],($this->h - $this->tMargin - $this->bMargin),$this->FontSize,false); 
-               if (($currblk['css_set_height'] + $this->y) > $this->PageBreakTrigger && $this->y > $this->tMargin+5 && $currblk['css_set_height'] < ($this->h - ($this->tMargin + $this->bMargin))) { $this->AddPage($this->CurOrientation); }
-       }
-       else { $currblk['css_set_height'] = false; }
-
-
-       // Added mPDF 3.0 Float DIV
-       if (isset($prevblk['blockContext'])) { $currblk['blockContext'] = $prevblk['blockContext'] ; }  // *CSS-FLOAT*
-
-       if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']), $this->blklvl-1); }     // *CSS-FLOAT*
-
-       $container_w = $prevblk['inner_width'];
-       $bdr = $currblk['border_right']['w'];
-       $bdl = $currblk['border_left']['w'];
-       $pdr = $currblk['padding_right'];
-       $pdl = $currblk['padding_left'];
-
-       if (isset($currblk['css_set_width'])) { $setwidth = $currblk['css_set_width']; }
-       else { $setwidth = 0; }
-
-/*-- CSS-FLOAT --*/
-       if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'RIGHT' && !$this->ColActive) {
-               // Cancel Keep-Block-together
-               $currblk['keep_block_together'] = false;
-               $this->kt_y00 = '';
-               $this->keep_block_together = 0;
-
-               $this->blockContext++;
-               $currblk['blockContext'] = $this->blockContext;
-
-               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
-
-               // DIV is too narrow for text to fit!
-               $maxw = $container_w - $l_width - $r_width;
-               if (($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
-                       // Too narrow to fit - try to move down past L or R float
-                       if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('LEFT', $this->blklvl-1); 
-                       }
-                       else if ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)  <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('RIGHT', $this->blklvl-1); 
-                       }
-                       else { $this->ClearFloats('BOTH', $this->blklvl-1); }
-                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
-               }
-
-               if ($r_exists) { $currblk['margin_right'] += $r_width; }
-
-               $currblk['float'] = 'R';
-               $currblk['float_start_y'] = $this->y;
-               if ($currblk['css_set_width']) {
-                       $currblk['margin_left'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
-                       $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
-               }
-               else {
-                       // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width
-                       // and do borders and backgrounds - For now - just set to maximum width left
-
-                       if ($l_exists) { $currblk['margin_left'] += $l_width; }
-                       $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr);
-
-                       $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
-               }
-       }
-       else if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'LEFT' && !$this->ColActive) {
-               // Cancel Keep-Block-together
-               $currblk['keep_block_together'] = false;
-               $this->kt_y00 = '';
-               $this->keep_block_together = 0;
-
-               $this->blockContext++;
-               $currblk['blockContext'] = $this->blockContext;
-
-               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
-
-               // DIV is too narrow for text to fit!
-               $maxw = $container_w - $l_width - $r_width;
-               if (($setwidth + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
-                       // Too narrow to fit - try to move down past L or R float
-                       if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('LEFT', $this->blklvl-1); 
-                       }
-                       else if ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('RIGHT', $this->blklvl-1); 
-                       }
-                       else { $this->ClearFloats('BOTH', $this->blklvl-1); }
-                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
-               }
-
-               if ($l_exists) { $currblk['margin_left'] += $l_width; }
-
-               $currblk['float'] = 'L';
-               $currblk['float_start_y'] = $this->y;
-               if ($setwidth) {
-                       $currblk['margin_right'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
-                       $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
-               }
-               else {
-                       // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width
-                       // and do borders and backgrounds - For now - just set to maximum width left
-
-                       if ($r_exists) { $currblk['margin_right'] += $r_width; }
-                       $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr);
-
-                       $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
-               }
-       }
-
-       else {
-               // Don't allow overlap - if floats present - adjust padding to avoid overlap with Floats
-               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
-               $maxw = $container_w - $l_width - $r_width;
-               if (($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
-                       // Too narrow to fit - try to move down past L or R float
-                       if ($l_max < $r_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('LEFT', $this->blklvl-1); 
-                       }
-                       else if ($r_max < $l_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('RIGHT', $this->blklvl-1); 
-                       }
-                       else { $this->ClearFloats('BOTH', $this->blklvl-1); }
-                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
-               }
-               if ($r_exists) { $currblk['padding_right'] = max(($r_width-$currblk['margin_right']-$bdr), $pdr); }
-               if ($l_exists) { $currblk['padding_left'] = max(($l_width-$currblk['margin_left']-$bdl), $pdl); }
-       }
-/*-- END CSS-FLOAT --*/
-
-
-/*-- BORDER-RADIUS --*/
-       // Automatically increase padding if required for border-radius
-       if ($this->autoPadding && !$this->ColActive && !$this->keep_block_together) {
-         if ($currblk['border_radius_TL_H']>$currblk['padding_left'] && $currblk['border_radius_TL_V']>$currblk['padding_top']) {
-               if ($currblk['border_radius_TL_H']>$currblk['border_radius_TL_V']) {
-                       $this->_borderPadding($currblk['border_radius_TL_H'],$currblk['border_radius_TL_V'], $currblk['padding_left'], $currblk['padding_top']);
-               }
-               else {
-                       $this->_borderPadding($currblk['border_radius_TL_V'],$currblk['border_radius_TL_H'], $currblk['padding_top'], $currblk['padding_left']);
-               }
-         }
-         if ($currblk['border_radius_TR_H']>$currblk['padding_right'] && $currblk['border_radius_TR_V']>$currblk['padding_top']) {
-               if ($currblk['border_radius_TR_H']>$currblk['border_radius_TR_V']) {
-                       $this->_borderPadding($currblk['border_radius_TR_H'],$currblk['border_radius_TR_V'], $currblk['padding_right'], $currblk['padding_top']);
-               }
-               else {
-                       $this->_borderPadding($currblk['border_radius_TR_V'],$currblk['border_radius_TR_H'], $currblk['padding_top'], $currblk['padding_right']);
-               }
-         }
-         if ($currblk['border_radius_BL_H']>$currblk['padding_left'] && $currblk['border_radius_BL_V']>$currblk['padding_bottom']) {
-               if ($currblk['border_radius_BL_H']>$currblk['border_radius_BL_V']) {
-                       $this->_borderPadding($currblk['border_radius_BL_H'],$currblk['border_radius_BL_V'], $currblk['padding_left'], $currblk['padding_bottom']);
-               }
-               else {
-                       $this->_borderPadding($currblk['border_radius_BL_V'],$currblk['border_radius_BL_H'], $currblk['padding_bottom'], $currblk['padding_left']);
-               }
-         }
-         if ($currblk['border_radius_BR_H']>$currblk['padding_right'] && $currblk['border_radius_BR_V']>$currblk['padding_bottom']) {
-               if ($currblk['border_radius_BR_H']>$currblk['border_radius_BR_V']) {
-                       $this->_borderPadding($currblk['border_radius_BR_H'],$currblk['border_radius_BR_V'], $currblk['padding_right'], $currblk['padding_bottom']);
-               }
-               else {
-                       $this->_borderPadding($currblk['border_radius_BR_V'],$currblk['border_radius_BR_H'], $currblk['padding_bottom'], $currblk['padding_right']);
-               }
-         }
-       }
-/*-- END BORDER-RADIUS --*/
-
-
-       // Hanging indent - if negative indent: ensure padding is >= indent
-       if(!isset($currblk['text_indent'])) { $currblk['text_indent'] = null; }
-       if(!isset($currblk['inner_width'])) { $currblk['inner_width'] = null; }
-       $cbti = $this->ConvertSize($currblk['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       if ($cbti < 0) {
-         $hangind = -($cbti);
-         if ($currblk['direction'] == 'rtl') { // *RTL*
-               $currblk['padding_right'] = max($currblk['padding_right'],$hangind);    // *RTL*
-         }     // *RTL*
-         else {        // *RTL*
-               $currblk['padding_left'] = max($currblk['padding_left'],$hangind);
-         }     // *RTL*
-       }
-
-       if (isset($currblk['css_set_width'])) {
-         if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
-                 // Try to reduce margins to accomodate - if still too wide, set margin-right/left=0 (reduces width)
-                 $anyextra = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
-                 if ($anyextra>0) {
-                       $currblk['margin_left'] = $currblk['margin_right'] = $anyextra /2;
-                 }
-                 else {
-                       $currblk['margin_left'] = $currblk['margin_right'] = 0;
-                 }
-         }
-         else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
-                 // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width)
-                 $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_right']);
-                 if ($currblk['margin_left'] < 0) {
-                       $currblk['margin_left'] = 0;
-                 }
-         }
-         else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
-                 // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width)
-                 $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']);
-                 if ($currblk['margin_right'] < 0) {
-                       $currblk['margin_right'] = 0;
-                 }
-         }
-         else { 
-           if ($currblk['direction'] == 'rtl') {       // *RTL*
-               // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width)
-               $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_right']);       // *RTL*
-               if ($currblk['margin_left'] < 0) {      // *RTL*
-                       $currblk['margin_left'] = 0;    // *RTL*
-               }       // *RTL*
-           }   // *RTL*
-           else {      // *RTL*
-                 // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width)
-                 $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']);
-                 if ($currblk['margin_right'] < 0) {
-                       $currblk['margin_right'] = 0;
-                 }
-           }   // *RTL*
-         }
-       }
-
-       $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left'];
-       $currblk['outer_right_margin'] = $prevblk['outer_right_margin']  + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right'];
-
-       $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']);
-       $currblk['inner_width'] = $currblk['width'] - ($currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
-
-       // Check DIV is not now too narrow to fit text
-       $mw = 2*$this->GetCharWidth('W',false);
-       if ($currblk['inner_width'] < $mw) {
-               $currblk['padding_left'] = 0;
-               $currblk['padding_right'] = 0;
-               $currblk['border_left']['w'] = 0.2;
-               $currblk['border_right']['w'] = 0.2;
-               $currblk['margin_left'] = 0;
-               $currblk['margin_right'] = 0;
-               $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left'];
-               $currblk['outer_right_margin'] = $prevblk['outer_right_margin']  + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right'];
-               $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']);
-               $currblk['inner_width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
-//             if ($currblk['inner_width'] < $mw) { $this->Error("DIV is too narrow for text to fit!"); }
-       }
-
-       $this->x = $this->lMargin + $currblk['outer_left_margin'];
-
-/*-- BACKGROUNDS --*/
-       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive && !$this->keep_block_together) {
-               $ret = $this->SetBackground($properties, $currblk['inner_width']);
-               if ($ret) { $currblk['background-image'] = $ret; }
-       }
-/*-- END BACKGROUNDS --*/
-
-/*-- TABLES --*/
-       if ($this->use_kwt && isset($attr['KEEP-WITH-TABLE']) && !$this->ColActive && !$this->keep_block_together) {
-               $this->kwt = true;
-               $this->kwt_y0 = $this->y;
-               $this->kwt_x0 = $this->x;
-               $this->kwt_height = 0;
-               $this->kwt_buffer = array();
-               $this->kwt_Links = array();
-               $this->kwt_Annots = array();
-               $this->kwt_moved = false;
-               $this->kwt_saved = false;
-               $this->kwt_Reference = array();
-               $this->kwt_BMoutlines = array();
-               $this->kwt_toc = array();
-       }
-       else { 
-/*-- END TABLES --*/
-               $this->kwt = false; 
-       }       // *TABLES*
-
-       //Save x,y coords in case we need to print borders...
-       $currblk['y0'] = $this->y;
-       $currblk['x0'] = $this->x;
-       $currblk['startpage'] = $this->page;
-       $this->oldy = $this->y;
-
-       $this->lastblocklevelchange = 1 ;
-
-       break;
-
-    case 'HR':
-       // Added mPDF 3.0 Float DIV - CLEAR
-       if (isset($attr['STYLE'])) {
-               $properties = $this->cssmgr->readInlineCSS($attr['STYLE']);
-               if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); }        // *CSS-FLOAT*
-       }
-
-       $this->ignorefollowingspaces = true; 
-
-       $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-       if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-       if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-       if (isset($properties['WIDTH'])) { $objattr['width'] = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']); }
-       else if(isset($attr['WIDTH']) && $attr['WIDTH'] != '') $objattr['width'] = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
-       if (isset($properties['TEXT-ALIGN'])) { $objattr['align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
-       else if(isset($attr['ALIGN']) && $attr['ALIGN'] != '') $objattr['align'] = $align[strtolower($attr['ALIGN'])];
-
-       if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
-               $objattr['align'] = 'R';
-       }
-       if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
-               $objattr['align'] = 'L';
-               if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto' && isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
-                       $objattr['align'] = 'C';
-               }
-       }
-       if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
-       else if(isset($attr['COLOR']) && $attr['COLOR'] != '') $objattr['color'] = $this->ConvertColor($attr['COLOR']);
-       if (isset($properties['HEIGHT'])) { $objattr['linewidth'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-
-/*-- TABLES --*/
-       if ($this->tableLevel) {
-               $objattr['W-PERCENT'] = 100;
-               if (isset($properties['WIDTH']) && stristr($properties['WIDTH'],'%')) { 
-                       $properties['WIDTH'] += 0;  //make "90%" become simply "90" 
-                       $objattr['W-PERCENT'] = $properties['WIDTH'];
-               }
-               if (isset($attr['WIDTH']) && stristr($attr['WIDTH'],'%')) { 
-                       $attr['WIDTH'] += 0;  //make "90%" become simply "90" 
-                       $objattr['W-PERCENT'] = $attr['WIDTH'];
-               }
-       }
-/*-- END TABLES --*/
-
-       $objattr['type'] = 'hr';
-       $objattr['height'] = $objattr['linewidth'] + $objattr['margin_top'] + $objattr['margin_bottom'];
-       $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
-
-       // Clear properties - tidy up
-       $properties = array();
-
-/*-- TABLES --*/
-       // Output it to buffers
-       if ($this->tableLevel) {
-               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
-               }
-               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-               }
-               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
-               $this->_saveCellTextBuffer($e, $this->HREF);
-       }
-       else {
-/*-- END TABLES --*/
-               $this->_saveTextBuffer($e, $this->HREF);
-       }       // *TABLES*
-
-       break;
-
-
-/*-- BARCODES --*/
-    
-    case 'BARCODE':
-       if(isset($attr['CODE']) && $attr['CODE']) {
-               $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['padding_top'] = 0;
-               $objattr['padding_bottom'] = 0;
-               $objattr['padding_left'] = 0;
-               $objattr['padding_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-               $objattr['code'] = $attr['CODE'];
-
-               if(isset($attr['TYPE'])) {
-                       $objattr['btype'] = trim(strtoupper($attr['TYPE']));
-               }
-               else { $objattr['btype'] = 'EAN13'; }   // default
-               if (preg_match('/^(EAN13|ISBN|ISSN|EAN8|UPCA|UPCE)P([25])$/',$objattr['btype'],$m)) {
-                       $objattr['btype'] = $m[1];
-                       $objattr['bsupp'] = $m[2];
-                       if (preg_match('/^(\S+)\s+(.*)$/',$objattr['code'],$mm)) {
-                               $objattr['code'] = $mm[1];
-                               $objattr['bsupp_code'] = $mm[2];
-                       }
-               }
-               else { $objattr['bsupp'] = 0; }
-
-               if(isset($attr['TEXT']) && $attr['TEXT']==1) { $objattr['showtext'] = 1; }
-               else { $objattr['showtext'] = 0; }
-               if(isset($attr['SIZE']) && $attr['SIZE']>0) { $objattr['bsize'] = $attr['SIZE']; }
-               else { $objattr['bsize'] = 1; }
-               if(isset($attr['HEIGHT']) && $attr['HEIGHT']>0) { $objattr['bheight'] = $attr['HEIGHT']; }
-               else { $objattr['bheight'] = 1; }
-               if(isset($attr['PR']) && $attr['PR']>0) { $objattr['pr_ratio'] = $attr['PR']; }
-               else { $objattr['pr_ratio'] = ''; }
-               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
-                       return; 
-               }
-               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
-               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
-               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
-               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
-
-               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-               if (isset($properties['COLOR']) && $properties['COLOR'] != '') { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
-               else { $objattr['color'] = false; }
-               if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
-               else { $objattr['bgcolor'] = false; }
-
-               if (!class_exists('PDFBarcode', false)) { 
-                       include(_MPDF_PATH.'classes/barcode.php'); 
-               }
-               $this->barcode = new PDFBarcode();
-
-               if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') {
-                       $code = preg_replace('/\-/','',$objattr['code']);
-                       if ($objattr['btype'] == 'ISSN' || $objattr['btype'] == 'ISBN') {
-                               $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13');
-                       }
-                       else { $arrcode = $this->barcode->getBarcodeArray($code, $objattr['btype'] ); }
-                       if ($arrcode === false) { $this->Error('Error in barcode string.'); }
-
-                       if ($objattr['bsupp'] == 2 || $objattr['bsupp'] == 5) { // EAN-2 or -5 Supplement
-                               $supparrcode = $this->barcode->getBarcodeArray($objattr['bsupp_code'], 'EAN'.$objattr['bsupp'] ); 
-                               $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR'] + $supparrcode["maxw"] + $supparrcode['sepM']) * $arrcode['nom-X'] * $objattr['bsize'];
-                       }
-                       else {
-                               $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize'];
-                       }
-                       $h = $arrcode['nom-H'] * $objattr['bsize'] * $objattr['bheight'];
-                       // Add height for ISBN string + margin from top of bars
-                       if (($objattr['showtext'] && $objattr['btype'] == 'EAN13') || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN') { 
-                               $tisbnm = 1.5 * $objattr['bsize'];      // Top margin between TOP TEXT (isbn - if shown) & bars
-                               $isbn_fontsize = 2.1 * $objattr['bsize'];
-                               $h += $isbn_fontsize + $tisbnm  ; 
-                       }
-               }
-               // QR-code
-               else if ($objattr['btype'] == 'QR') {
-                       $w = $h = $objattr['bsize']*25; // Factor of 25mm (default)
-                       $objattr['errorlevel'] = 'L';
-                       if (isset($attr['ERROR'])) { $objattr['errorlevel'] = $attr['ERROR']; }
-               }
-               else if ($objattr['btype'] == 'IMB' || $objattr['btype'] == 'RM4SCC' || $objattr['btype'] == 'KIX' || $objattr['btype'] == 'POSTNET' || $objattr['btype'] == 'PLANET') {
-                       $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'] ); 
-                       if ($arrcode === false) { $this->Error('Error in barcode string.'); }
-                       $w = ($arrcode["maxw"] * $arrcode['nom-X'] * $objattr['bsize']) + $arrcode['quietL'] + $arrcode['quietR'];
-                       $h = ($arrcode['nom-H'] * $objattr['bsize']) + (2*$arrcode['quietTB']);
-               }
-               else if (in_array($objattr['btype'], array('C128A','C128B','C128C','EAN128A','EAN128B','EAN128C','C39','C39+','C39E','C39E+','S25','S25+','I25','I25+','I25B','I25B+','C93','MSI','MSI+','CODABAR','CODE11'))) {
-                       $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'], $objattr['pr_ratio'] );
-                       if ($arrcode === false) { $this->Error('Error in barcode string.'); }
-                       $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize'];
-                       $h = ((2*$arrcode['lightTB'] * $arrcode['nom-X']) + $arrcode['nom-H']) * $objattr['bsize'] * $objattr['bheight'];
-               }
-               else { break; }
-
-               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
-               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
-
-               $objattr['type'] = 'barcode';
-               $objattr['height'] = $h + $extraheight;
-               $objattr['width'] = $w + $extrawidth;
-               $objattr['barcode_height'] = $h;
-               $objattr['barcode_width'] = $w;
-/*-- CSS-IMAGE-FLOAT --*/
-               if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) {
-                 if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) {
-                       $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1);
-                 }
-               }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-               $e = "\xbb\xa4\xactype=barcode,objattr=".serialize($objattr)."\xbb\xa4\xac";
-
-               // Clear properties - tidy up
-               $properties = array();
-
-/*-- TABLES --*/
-               // Output it to buffers
-               if ($this->tableLevel) {
-                       $this->_saveCellTextBuffer($e, $this->HREF);
-                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
-               }
-               else {
-/*-- END TABLES --*/
-                       $this->_saveTextBuffer($e, $this->HREF);
-
-               }       // *TABLES*
-       }
-       break;
-/*-- END BARCODES --*/
-
-
-       // *********** FORM ELEMENTS ********************
-
-/*-- FORMS --*/
-    case 'SELECT':
-       $this->lastoptionaltag = ''; // Save current HTML specified optional endtag
-       $this->InlineProperties[$tag] = $this->saveInlineProperties();
-       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-       if (isset($properties['FONT-FAMILY'])) { 
-               $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
-       }
-       if (isset($properties['FONT-SIZE'])) { 
-               $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
-               $this->SetFontSize($mmsize*_MPDFK,false);
-       }
-       if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') {
-               $this->selectoption['SPELLCHECK'] = true; 
-       }
-
-       if (isset($properties['COLOR'])) { $this->selectoption['COLOR'] = $this->ConvertColor($properties['COLOR']); }
-       $this->specialcontent = "type=select"; 
-       if(isset($attr['DISABLED'])) { $this->selectoption['DISABLED'] = $attr['DISABLED']; }
-       if(isset($attr['READONLY'])) { $this->selectoption['READONLY'] = $attr['READONLY']; }
-       if(isset($attr['REQUIRED'])) { $this->selectoption['REQUIRED'] = $attr['REQUIRED']; }
-       if(isset($attr['EDITABLE'])) { $this->selectoption['EDITABLE'] = $attr['EDITABLE']; }
-       if(isset($attr['TITLE'])) { $this->selectoption['TITLE'] = $attr['TITLE']; }
-       if(isset($attr['MULTIPLE'])) { $this->selectoption['MULTIPLE'] = $attr['MULTIPLE']; }
-       if(isset($attr['SIZE']) && $attr['SIZE']>1) { $this->selectoption['SIZE'] = $attr['SIZE']; }
-       if ($this->useActiveForms) {
-               if(isset($attr['NAME'])) { $this->selectoption['NAME'] = $attr['NAME']; }
-               if (isset($attr['ONCHANGE'])) { $this->selectoption['ONCHANGE'] = $attr['ONCHANGE']; }
-       }
-
-       $properties = array();
-       break;
-
-    case 'OPTION':
-       $this->lastoptionaltag = 'OPTION'; // Save current HTML specified optional endtag
-       $this->selectoption['ACTIVE'] = true;
-       $this->selectoption['currentSEL'] = false;
-       if (empty($this->selectoption)) {
-               $this->selectoption['MAXWIDTH'] = '';
-               $this->selectoption['SELECTED'] = '';
-       }
-       if (isset($attr['SELECTED'])) { 
-               $this->selectoption['SELECTED'] = '';
-               $this->selectoption['currentSEL'] = true;
-       }
-       if(isset($attr['VALUE'])) { 
-               $attr['VALUE'] = strcode2utf($attr['VALUE']);
-               $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']);
-               if ($this->onlyCoreFonts)
-                       $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8'); 
-       }
-       $this->selectoption['currentVAL'] = $attr['VALUE'];
-       break;
-
-    case 'TEXTAREA':
-       $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-       if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; }
-       if(isset($attr['READONLY'])) { $objattr['readonly'] = true; }
-       if(isset($attr['REQUIRED'])) { $objattr['required'] = true; }
-       if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; }
-       if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; }
-       if ($this->onlyCoreFonts)
-               $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8'); 
-       if ($this->useActiveForms) {
-               if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; }
-               $this->form->form_element_spacing['textarea']['outer']['v'] = 0;
-               $this->form->form_element_spacing['textarea']['inner']['v'] = 0;
-               if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; }
-               else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; }
-               if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; }
-               if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; }
-               if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; }
-       }
-       $this->InlineProperties[$tag] = $this->saveInlineProperties();
-       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-       if (isset($properties['FONT-FAMILY'])) { 
-               $this->SetFont($properties['FONT-FAMILY'],'',0,false);
-       }
-       if (isset($properties['FONT-SIZE'])) { 
-               $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
-               $this->SetFontSize($mmsize*_MPDFK,false);
-       }
-       if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
-       $objattr['fontfamily'] = $this->FontFamily;
-       $objattr['fontsize'] = $this->FontSizePt;
-       if ($this->useActiveForms) {
-               if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
-               else if(isset($attr['ALIGN'])) { $objattr['text_align'] =  $align[strtolower($attr['ALIGN'])]; }
-               if (isset($properties['OVERFLOW']) && strtolower($properties['OVERFLOW'])=='hidden') { $objattr['donotscroll'] = true; }
-               if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); }
-               if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
-       }
-       $this->SetLineHeight('',$this->form->textarea_lineheight); 
-       $formLineHeight = $this->lineheight;
-
-       $w = 0;
-       $h = 0;
-       if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-
-       $colsize = 20; //HTML default value 
-       $rowsize = 2; //HTML default value
-       if (isset($attr['COLS'])) $colsize = intval($attr['COLS']);
-       if (isset($attr['ROWS'])) $rowsize = intval($attr['ROWS']);
-
-       $charsize = $this->GetCharWidth('w',false);
-       if ($w) { $colsize = round(($w-($this->form->form_element_spacing['textarea']['outer']['h']*2)-($this->form->form_element_spacing['textarea']['inner']['h']*2))/$charsize); }
-       if ($h) { $rowsize = round(($h-($this->form->form_element_spacing['textarea']['outer']['v']*2)-($this->form->form_element_spacing['textarea']['inner']['v']*2))/$formLineHeight); }
-
-       $objattr['type'] = 'textarea';
-       $objattr['width'] = ($colsize * $charsize) + ($this->form->form_element_spacing['textarea']['outer']['h']*2)+($this->form->form_element_spacing['textarea']['inner']['h']*2);
-       $objattr['height'] = ($rowsize * $formLineHeight) + ($this->form->form_element_spacing['textarea']['outer']['v']*2)+($this->form->form_element_spacing['textarea']['inner']['v']*2);
-       $objattr['rows'] = $rowsize;
-       $objattr['cols'] = $colsize;
-
-       $this->specialcontent = serialize($objattr); 
-
-       if ($this->tableLevel) {        // *TABLES*
-               $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES*
-       }       // *TABLES*
-
-       // Clear properties - tidy up
-       $properties = array();
-       break;
-
-
-
-       // *********** FORM - INPUT ********************
-
-    case 'INPUT':
-       if (!isset($attr['TYPE'])) $attr['TYPE'] == 'TEXT'; 
-       $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-       $objattr['type'] = 'input';
-       if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; }
-       if(isset($attr['READONLY'])) { $objattr['readonly'] = true; }
-       if(isset($attr['REQUIRED'])) { $objattr['required'] = true; }
-       if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; }
-       if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; }
-       else if(isset($attr['ALT'])) { $objattr['title'] = $attr['ALT']; }
-       else $objattr['title'] = '';
-       $objattr['title'] = strcode2utf($objattr['title']);
-       $objattr['title'] = $this->lesser_entity_decode($objattr['title']);
-       if ($this->onlyCoreFonts)
-               $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8'); 
-       if ($this->useActiveForms) {
-               if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; }
-       }
-       if(isset($attr['VALUE'])) { 
-               $attr['VALUE'] = strcode2utf($attr['VALUE']);
-               $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']);
-               if ($this->onlyCoreFonts)
-                       $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8'); 
-               $objattr['value'] = $attr['VALUE']; 
-       }
-
-       $this->InlineProperties[$tag] = $this->saveInlineProperties();
-       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-       $objattr['vertical-align'] = '';
-
-       if (isset($properties['FONT-FAMILY'])) { 
-               $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
-       }
-       if (isset($properties['FONT-SIZE'])) { 
-               $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK));
-               $this->SetFontSize($mmsize*_MPDFK,false);
-       }
-       if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
-       $objattr['fontfamily'] = $this->FontFamily;
-       $objattr['fontsize'] = $this->FontSizePt;
-       if ($this->useActiveForms) {
-               if(isset($attr['ALIGN'])) { $objattr['text_align'] = $align[strtolower($attr['ALIGN'])]; }
-               else if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
-               if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); }
-               if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
-       }
-       $type = '';
-      $texto='';
-       $height = $this->FontSize;
-       $width = 0;
-       $spacesize = $this->GetCharWidth(' ',false);
-
-       $w = 0;
-       if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
-
-       if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-
-       switch(strtoupper($attr['TYPE'])){
-          case 'HIDDEN':
-               $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
-                       if ($this->useActiveForms) {
-                               $this->form->SetFormText( 0, 0, $objattr['fieldname'], $objattr['value'], $objattr['value'], '', 0, '', true );
-                       }
-                       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-                       unset($this->InlineProperties[$tag]);
-                       break 2;
-          case 'CHECKBOX': //Draw Checkbox
-                       $type = 'CHECKBOX';
-                       if (isset($attr['CHECKED'])) { $objattr['checked'] = true; } 
-                       else { $objattr['checked'] = false; }
-                       $width = $this->FontSize;
-                       $height = $this->FontSize;
-                       break;
-
-          case 'RADIO': //Draw Radio button
-                       $type = 'RADIO';
-                       if (isset($attr['CHECKED'])) $objattr['checked'] = true;
-                       $width = $this->FontSize;
-                       $height = $this->FontSize;
-                       break;
-
-/*-- IMAGES-CORE --*/
-          case 'IMAGE': // Draw an Image button
-       if(isset($attr['SRC'])) {
-               $type = 'IMAGE';
-               $srcpath = $attr['SRC'];
-               $orig_srcpath = $attr['ORIG_SRC'];
-               // VSPACE and HSPACE converted to margins in MergeCSS
-               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-
-               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
-               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
-               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
-               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
-
-               $objattr['padding_top'] = 0;
-               $objattr['padding_bottom'] = 0;
-               $objattr['padding_left'] = 0;
-               $objattr['padding_right'] = 0;
-
-               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-
-               $w = 0;
-               $h = 0;
-               if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
-               if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width']);
-
-               $extraheight = $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
-               $extrawidth = $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
-
-               // Image file
-               $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
-               if(!$info) {
-                       $info = $this->_getImage($this->noImageFile);
-                       if ($info) { 
-                               $srcpath = $this->noImageFile; 
-                               $w = ($info['w'] * (25.4/$this->dpi)); 
-                               $h = ($info['h'] * (25.4/$this->dpi));
-                       }
-               }
-               if(!$info) break;
-               if ($info['cs']=='Indexed') { $objattr['Indexed'] = true; }
-               $objattr['file'] = $srcpath;
-               //Default width and height calculation if needed
-               if($w==0 and $h==0) {
-/*-- IMAGES-WMF --*/
-             if ($info['type']=='wmf') { 
-                               // WMF units are twips (1/20pt)
-                               // divide by 20 to get points
-                               // divide by k to get user units
-                               $w = abs($info['w'])/(20*_MPDFK);
-                               $h = abs($info['h']) / (20*_MPDFK);
-                       }
-                       else 
-/*-- END IMAGES-WMF --*/
-             if ($info['type']=='svg') { 
-                               // SVG units are pixels
-                               $w = abs($info['w'])/_MPDFK;
-                               $h = abs($info['h'])/_MPDFK;
-                       }
-                       else {
-                               //Put image at default image dpi
-                               $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
-                               $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
-                       }
-                       if (isset($properties['IMAGE-RESOLUTION'])) { 
-                               if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) {
-                                       $w *= $this->img_dpi / $info['set-dpi'];
-                                       $h *= $this->img_dpi / $info['set-dpi'];
-                               }
-                               else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) {
-                                       $dpi = $m[1]; 
-                                       if ($dpi > 0) {
-                                               $w *= $this->img_dpi / $dpi;
-                                               $h *= $this->img_dpi / $dpi;
-                                       }
-                               }
-                       }
-               }
-               // IF WIDTH OR HEIGHT SPECIFIED
-               if($w==0)       $w=$h*$info['w']/$info['h'];
-               if($h==0)       $h=$w*$info['h']/$info['w'];
-               // Resize to maximum dimensions of page
-               $maxWidth = $this->blk[$this->blklvl]['inner_width'];
-               $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ;
-               if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
-               if ($w + $extrawidth > $maxWidth ) {
-                       $w = $maxWidth - $extrawidth;
-                       $h=$w*$info['h']/$info['w'];
-               }
-               if ($h + $extraheight > $maxHeight ) {
-                       $h = $maxHeight - $extraheight;
-                       $w=$h*$info['w']/$info['h'];
-               }
-               $height = $h + $extraheight;
-               $width = $w + $extrawidth;
-               $objattr['type'] = 'image';
-               $objattr['itype'] = $info['type'];
-               $objattr['orig_h'] = $info['h'];
-               $objattr['orig_w'] = $info['w'];
-/*-- IMAGES-WMF --*/
-               if ($info['type']=='wmf') {
-                       $objattr['wmf_x'] = $info['x'];
-                       $objattr['wmf_y'] = $info['y'];
-               }
-               else 
-/*-- END IMAGES-WMF --*/
-               if ($info['type']=='svg') {
-                       $objattr['wmf_x'] = $info['x'];
-                       $objattr['wmf_y'] = $info['y'];
-               }
-               $objattr['height'] = $h + $extraheight;
-               $objattr['width'] = $w + $extrawidth;
-
-               $objattr['image_height'] = $h;
-               $objattr['image_width'] = $w;
-               $objattr['ID'] = $info['i'];
-               $texto = 'X';
-               if ($this->useActiveForms) {
-                       if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; }
-                       $objattr['type'] = 'input';
-                       $type = 'IMAGE';
-               }
-               break;
-       }
-/*-- END IMAGES-CORE --*/
-
-          case 'BUTTON': // Draw a button
-          case 'SUBMIT': 
-          case 'RESET': 
-                       $type = strtoupper($attr['TYPE']);
-                       if ($type=='IMAGE') { $type = 'BUTTON'; } // src path not found
-                       if(isset($attr['NOPRINT'])) { $objattr['noprint'] = true; }
-                       if (!isset($attr['VALUE'])) {
-                               $objattr['value'] = ucfirst(strtolower($type));
-                       }
-
-                       $texto = " " . $objattr['value'] . " ";
-                       $width = $this->GetStringWidth($texto) + ($this->form->form_element_spacing['button']['outer']['h']*2)+($this->form->form_element_spacing['button']['inner']['h']*2);
-                       $height = $this->FontSize + ($this->form->form_element_spacing['button']['outer']['v']*2)+($this->form->form_element_spacing['button']['inner']['v']*2);
-                       if ($this->useActiveForms) {
-                               if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; }
-                       }
-                       break;
-
-          case 'PASSWORD':
-          case 'TEXT': 
-          default:
-                if ($type == '') { $type = 'TEXT'; }
-                   if(strtoupper($attr['TYPE'])=='PASSWORD') { $type = 'PASSWORD'; }
-                if (isset($attr['VALUE'])) {
-                       if ($type == 'PASSWORD') {
-                    $num_stars = mb_strlen($attr['VALUE'],$this->mb_enc );
-                    $texto = str_repeat('*',$num_stars);
-                       }
-                       else { $texto = $attr['VALUE']; }
-                }
-                   $xw = ($this->form->form_element_spacing['input']['outer']['h']*2)+($this->form->form_element_spacing['input']['inner']['h']*2);
-                   $xh = ($this->form->form_element_spacing['input']['outer']['v']*2)+($this->form->form_element_spacing['input']['inner']['v']*2);
-                   if ($w) { $width = $w + $xw; } 
-                   else { $width = (20 * $spacesize) + $xw; }  // Default width in chars
-                if (isset($attr['SIZE']) and ctype_digit($attr['SIZE']) ) $width = ($attr['SIZE'] * $spacesize) + $xw;
-                   $height = $this->FontSize + $xh;
-                if (isset($attr['MAXLENGTH']) and ctype_digit($attr['MAXLENGTH']) ) $objattr['maxlength'] = $attr['MAXLENGTH'];
-                   if ($this->useActiveForms) {
-                       if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; }
-                       else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; }
-                       if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; }
-                       if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; }
-                       if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; }
-                   }
-                break;
-       }
-
-       $objattr['subtype'] = $type;
-       $objattr['text'] = $texto;
-       $objattr['width'] = $width;
-       $objattr['height'] = $height;
-       $e = "\xbb\xa4\xactype=input,objattr=".serialize($objattr)."\xbb\xa4\xac";
-
-       // Clear properties - tidy up
-       $properties = array();
-
-/*-- TABLES --*/
-       // Output it to buffers
-       if ($this->tableLevel) {
-               $this->_saveCellTextBuffer($e, $this->HREF);
-               $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
-
-       }
-       else {
-/*-- END TABLES --*/
-               $this->_saveTextBuffer($e, $this->HREF);
-       }       // *TABLES*
-
-       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-       unset($this->InlineProperties[$tag]);
-
-       break;  // END of INPUT
-/*-- END FORMS --*/
-
-
-       // *********** GRAPH  ********************
-     case 'JPGRAPH':
-       if (!$this->useGraphs) { break; }
-       if ($attr['TABLE']) { $gid = strtoupper($attr['TABLE']); }
-       else { $gid = '0'; }
-       if (!is_array($this->graphs[$gid]) || count($this->graphs[$gid])==0 ) { break; }
-       include_once(_MPDF_PATH.'graph.php');
-       $this->graphs[$gid]['attr'] = $attr;
-
-
-       if (isset($this->graphs[$gid]['attr']['WIDTH']) && $this->graphs[$gid]['attr']['WIDTH']) { 
-               $this->graphs[$gid]['attr']['cWIDTH']=$this->ConvertSize($this->graphs[$gid]['attr']['WIDTH'],$pgwidth); 
-       }       // mm
-       if (isset($this->graphs[$gid]['attr']['HEIGHT']) && $this->graphs[$gid]['attr']['HEIGHT']) { 
-               $this->graphs[$gid]['attr']['cHEIGHT']=$this->ConvertSize($this->graphs[$gid]['attr']['HEIGHT'],$pgwidth); 
-       }
-
-       $graph_img = print_graph($this->graphs[$gid],$this->blk[$this->blklvl]['inner_width']);
-       if ($graph_img) { 
-               if(isset($attr['ROTATE'])) {
-                  if ($attr['ROTATE']==90 || $attr['ROTATE']==-90) {
-                       $tmpw = $graph_img['w'];
-                       $graph_img['w']= $graph_img['h'];
-                       $graph_img['h']= $tmpw;
-                  }
-               }
-               $attr['SRC'] = $graph_img['file']; 
-               $attr['WIDTH'] = $graph_img['w']; 
-               $attr['HEIGHT'] = $graph_img['h']; 
-       }
-       else { break; }
-
-       // *********** IMAGE  ********************
-/*-- IMAGES-CORE --*/
-    case 'IMG':
-       if ($this->progressBar) { $this->UpdateProgressBar(1,'','IMG'); }       // *PROGRESS-BAR*
-       $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['padding_top'] = 0;
-               $objattr['padding_bottom'] = 0;
-               $objattr['padding_left'] = 0;
-               $objattr['padding_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-       if(isset($attr['SRC'])) {
-               $srcpath = $attr['SRC'];
-               $orig_srcpath = $attr['ORIG_SRC'];
-               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
-               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
-                       return; 
-               }
-               // mPDF 5.6.01  - LAYERS
-               if (isset($properties['Z-INDEX']) && $this->currentlayer==0) {
-                       $v = intval($properties['Z-INDEX']); 
-                       if ($v > 0) {
-                               $objattr['z-index'] = $v; 
-                       }
-               }
-
-               $objattr['visibility'] = 'visible'; 
-               if (isset($properties['VISIBILITY'])) {
-                       $v = strtolower($properties['VISIBILITY']);
-                       if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { 
-                               $objattr['visibility'] = $v; 
-                       }
-               }
-
-               // VSPACE and HSPACE converted to margins in MergeCSS
-               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
-               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
-               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
-               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
-
-               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-               $w = 0;
-               $h = 0;
-               if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               // mPDF 5.5.15          // mPDF 5.6.60
-               $maxw=$maxh=$minw=$minh=false;
-               if(isset($properties['MAX-WIDTH'])) $maxw = $this->ConvertSize($properties['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['MAX-WIDTH'])) $maxw = $this->ConvertSize($attr['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               if(isset($properties['MAX-HEIGHT'])) $maxh = $this->ConvertSize($properties['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['MAX-HEIGHT'])) $maxh = $this->ConvertSize($attr['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               if(isset($properties['MIN-WIDTH'])) $minw = $this->ConvertSize($properties['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['MIN-WIDTH'])) $minw = $this->ConvertSize($attr['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               if(isset($properties['MIN-HEIGHT'])) $minh = $this->ConvertSize($properties['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-               else if(isset($attr['MIN-HEIGHT'])) $minh = $this->ConvertSize($attr['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-
-               if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
-               if ($this->HREF) {
-                       if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
-                               $href = $this->HREF;
-                               while(array_key_exists($href,$this->internallink)) $href="#".$href;
-                               $this->internallink[$href] = $this->AddLink();
-                               $objattr['link'] = $this->internallink[$href];
-                       }
-                       else { $objattr['link'] = $this->HREF; }
-               }
-               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
-               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
-
-/*-- BACKGROUNDS --*/
-               if(isset($properties['GRADIENT-MASK']) && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['GRADIENT-MASK'])) {
-                       $objattr['GRADIENT-MASK'] = $properties['GRADIENT-MASK'];
-               }
-/*-- END BACKGROUNDS --*/
-
-               // Image file
-               $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
-               if(!$info) {
-                       $info = $this->_getImage($this->noImageFile);
-                       if ($info) { 
-                               $srcpath = $this->noImageFile; 
-                               $w = ($info['w'] * (25.4/$this->dpi)); 
-                               $h = ($info['h'] * (25.4/$this->dpi));
-                       }
-               }
-               if(!$info) break;
-
-               if(isset($attr['ROTATE'])) { $image_orientation = $attr['ROTATE']; }
-               else if(isset($properties['IMAGE-ORIENTATION'])) { $image_orientation = $properties['IMAGE-ORIENTATION']; }
-               else { $image_orientation = 0; }
-               if($image_orientation) {
-                  if ($image_orientation==90 || $image_orientation==-90 || $image_orientation==270) {
-                       $tmpw = $info['w'];
-                       $info['w'] = $info['h'];
-                       $info['h'] = $tmpw;
-                  }
-                  $objattr['ROTATE'] = $image_orientation;
-               }
-
-               $objattr['file'] = $srcpath;
-               //Default width and height calculation if needed
-               if($w==0 and $h==0) {
-/*-- IMAGES-WMF --*/
-             if ($info['type']=='wmf') { 
-                               // WMF units are twips (1/20pt)
-                               // divide by 20 to get points
-                               // divide by k to get user units
-                               $w = abs($info['w'])/(20*_MPDFK);
-                               $h = abs($info['h']) / (20*_MPDFK);
-                       }
-                       else 
-/*-- END IMAGES-WMF --*/
-             if ($info['type']=='svg') { 
-                               // SVG units are pixels
-                               $w = abs($info['w'])/_MPDFK;
-                               $h = abs($info['h'])/_MPDFK;
-                       }
-                       else {
-                               //Put image at default image dpi
-                               $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
-                               $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
-                       }
-                       if (isset($properties['IMAGE-RESOLUTION'])) { 
-                               if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) {
-                                       $w *= $this->img_dpi / $info['set-dpi'];
-                                       $h *= $this->img_dpi / $info['set-dpi'];
-                               }
-                               else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) {
-                                       $dpi = $m[1]; 
-                                       if ($dpi > 0) {
-                                               $w *= $this->img_dpi / $dpi;
-                                               $h *= $this->img_dpi / $dpi;
-                                       }
-                               }
-                       }
-               }
-               // IF WIDTH OR HEIGHT SPECIFIED
-               if($w==0) $w=abs($h*$info['w']/$info['h']); 
-               if($h==0) $h=abs($w*$info['h']/$info['w']);
-
-               // mPDF 5.5.15
-               if ($minw && $w<$minw) { $w = $minw; $h=abs($w*$info['h']/$info['w']); }
-               if ($maxw && $w>$maxw) { $w = $maxw; $h=abs($w*$info['h']/$info['w']); }
-               if ($minh && $h<$minh) { $h = $minh; $w=abs($h*$info['w']/$info['h']); }
-               if ($maxh && $h>$maxh) { $h = $maxh; $w=abs($h*$info['w']/$info['h']); }
-
-               // Resize to maximum dimensions of page
-               $maxWidth = $this->blk[$this->blklvl]['inner_width'];
-               $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ;
-               if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
-               if ($w + $extrawidth > $maxWidth ) {
-                       $w = $maxWidth - $extrawidth;
-                       $h=abs($w*$info['h']/$info['w']);
-               }
-
-               if ($h + $extraheight > $maxHeight ) {
-                       $h = $maxHeight - $extraheight;
-                       $w=abs($h*$info['w']/$info['h']);
-               }
-               $objattr['type'] = 'image';
-               $objattr['itype'] = $info['type'];
-
-               $objattr['orig_h'] = $info['h'];
-               $objattr['orig_w'] = $info['w'];
-/*-- IMAGES-WMF --*/
-               if ($info['type']=='wmf') {
-                       $objattr['wmf_x'] = $info['x'];
-                       $objattr['wmf_y'] = $info['y'];
-               }
-               else 
-/*-- END IMAGES-WMF --*/
-               if ($info['type']=='svg') {
-                       $objattr['wmf_x'] = $info['x'];
-                       $objattr['wmf_y'] = $info['y'];
-               }
-               $objattr['height'] = $h + $extraheight;
-               $objattr['width'] = $w + $extrawidth;
-               $objattr['image_height'] = $h;
-               $objattr['image_width'] = $w;
-/*-- CSS-IMAGE-FLOAT --*/
-               if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) {
-                 if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) {
-                       $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1);
-                 }
-               }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-               $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
-
-               // Clear properties - tidy up
-               $properties = array();
-
-/*-- TABLES --*/
-               // Output it to buffers
-               if ($this->tableLevel) {
-                       $this->_saveCellTextBuffer($e, $this->HREF);
-                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
-               }
-               else {
-/*-- END TABLES --*/
-                       $this->_saveTextBuffer($e, $this->HREF);
-               }       // *TABLES*
-/*-- ANNOTATIONS --*/
-               if ($this->title2annots && isset($attr['TITLE'])) {
-                       $objattr = array();
-                       $objattr['margin_top'] = 0;
-                       $objattr['margin_bottom'] = 0;
-                       $objattr['margin_left'] = 0;
-                       $objattr['margin_right'] = 0;
-                       $objattr['width'] = 0;
-                       $objattr['height'] = 0;
-                       $objattr['border_top']['w'] = 0;
-                       $objattr['border_bottom']['w'] = 0;
-                       $objattr['border_left']['w'] = 0;
-                       $objattr['border_right']['w'] = 0;
-                       $objattr['CONTENT'] = $attr['TITLE'];
-                       $objattr['type'] = 'annot';
-                       $objattr['POS-X'] = 0;
-                       $objattr['POS-Y'] = 0;
-                       $objattr['ICON'] = 'Comment';
-                       $objattr['AUTHOR'] = '';
-                       $objattr['SUBJECT'] = '';
-                       $objattr['OPACITY'] = $this->annotOpacity; 
-                       $objattr['COLOR'] = $this->ConvertColor('yellow');
-                       $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
-                       if($this->tableLevel) { // *TABLES*
-                               $this->cell[$this->row][$this->col]['textbuffer'][] = array($e);        // *TABLES*
-                       }       // *TABLES*
-                       else  { // *TABLES*
-                               $this->textbuffer[] = array($e);
-                       }       // *TABLES*
-               }
-/*-- END ANNOTATIONS --*/
-       }
-       break;
-/*-- END IMAGES-CORE --*/
-
-
-       // *********** CIRCULAR TEXT = TEXTCIRCLE  ********************
-    case 'TEXTCIRCLE':
-               $objattr = array();
-               $objattr['margin_top'] = 0;
-               $objattr['margin_bottom'] = 0;
-               $objattr['margin_left'] = 0;
-               $objattr['margin_right'] = 0;
-               $objattr['padding_top'] = 0;
-               $objattr['padding_bottom'] = 0;
-               $objattr['padding_left'] = 0;
-               $objattr['padding_right'] = 0;
-               $objattr['width'] = 0;
-               $objattr['height'] = 0;
-               $objattr['border_top']['w'] = 0;
-               $objattr['border_bottom']['w'] = 0;
-               $objattr['border_left']['w'] = 0;
-               $objattr['border_right']['w'] = 0;
-               $objattr['top-text'] = '';
-               $objattr['bottom-text'] = '';
-               $objattr['r'] = 20;     // radius (default value here for safety)
-               $objattr['space-width'] = 120;
-               $objattr['char-width'] = 100;
-
-               $this->InlineProperties[$tag] = $this->saveInlineProperties();
-               $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);
-
-               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
-                       return; 
-               }
-               if (isset($attr['R'])) { $objattr['r']=$this->ConvertSize($attr['R'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if(isset($attr['TOP-TEXT'])) { 
-                       $objattr['top-text'] = strcode2utf($attr['TOP-TEXT']);
-                       $objattr['top-text'] = $this->lesser_entity_decode($objattr['top-text']);
-                       if ($this->onlyCoreFonts)
-                               $objattr['top-text'] = mb_convert_encoding($objattr['top-text'], $this->mb_enc,'UTF-8'); 
-               }
-               if(isset($attr['BOTTOM-TEXT'])) { 
-                       $objattr['bottom-text'] = strcode2utf($attr['BOTTOM-TEXT']);
-                       $objattr['bottom-text'] = $this->lesser_entity_decode($objattr['bottom-text']);
-                       if ($this->onlyCoreFonts)
-                               $objattr['bottom-text'] = mb_convert_encoding($objattr['bottom-text'], $this->mb_enc,'UTF-8'); 
-               }
-               if(isset($attr['SPACE-WIDTH']) && $attr['SPACE-WIDTH']) { $objattr['space-width'] = $attr['SPACE-WIDTH']; }
-               if(isset($attr['CHAR-WIDTH']) && $attr['CHAR-WIDTH']) { $objattr['char-width'] = $attr['CHAR-WIDTH']; }
-
-               // VISIBILITY
-               $objattr['visibility'] = 'visible'; 
-               if (isset($properties['VISIBILITY'])) {
-                       $v = strtolower($properties['VISIBILITY']);
-                       if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { 
-                               $objattr['visibility'] = $v; 
-                       }
-               }
-               // mPDF 5.5.23
-               if (isset($properties['FONT-SIZE'])) { 
-                 if (strtolower($properties['FONT-SIZE'])=='auto') {
-                       if ($objattr['top-text'] && $objattr['bottom-text']) {
-                               $objattr['fontsize'] = -2;
-                       }
-                       else {
-                               $objattr['fontsize'] = -1;
-                       }
-                 }
-                 else {
-                       $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK));
-                       $this->SetFontSize($mmsize*_MPDFK,false);
-                       $objattr['fontsize'] = $this->FontSizePt;
-                 }
-               }
-               // mPDF 5.5.23
-               if(isset($attr['DIVIDER'])) {
-                       $objattr['divider'] = strcode2utf($attr['DIVIDER']);
-                       $objattr['divider'] = $this->lesser_entity_decode($objattr['divider']);
-                       if ($this->onlyCoreFonts)
-                               $objattr['divider'] = mb_convert_encoding($objattr['divider'], $this->mb_enc,'UTF-8'); 
-
-               }
-
-               if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
-
-               $objattr['fontstyle'] = '';
-               if (isset($properties['FONT-WEIGHT'])) {
-                       if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $objattr['fontstyle'] .= 'B'; }
-               }
-               if (isset($properties['FONT-STYLE'])) {
-                       if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $objattr['fontstyle'] .= 'I'; }
-               }
-
-               if (isset($properties['FONT-FAMILY'])) { 
-                       $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
-               }
-               $objattr['fontfamily'] = $this->FontFamily;
-
-               // VSPACE and HSPACE converted to margins in MergeCSS
-               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
-               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
-               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
-               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
-
-               if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
-               if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
-               else { $objattr['bgcolor'] = false; }
-               if ($this->HREF) {
-                       if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
-                               $href = $this->HREF;
-                               while(array_key_exists($href,$this->internallink)) $href="#".$href;
-                               $this->internallink[$href] = $this->AddLink();
-                               $objattr['link'] = $this->internallink[$href];
-                       }
-                       else { $objattr['link'] = $this->HREF; }
-               }
-               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
-               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
-
-
-               $w = $objattr['r']*2;
-               $h = $w;
-               $objattr['height'] = $h + $extraheight;
-               $objattr['width'] = $w + $extrawidth;
-               $objattr['type'] = 'textcircle';
-
-               $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
-
-               // Clear properties - tidy up
-               $properties = array();
-
-/*-- TABLES --*/
-               // Output it to buffers
-               if ($this->tableLevel) {
-                       $this->_saveCellTextBuffer($e, $this->HREF);
-                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
-               }
-               else {
-/*-- END TABLES --*/
-                       $this->_saveTextBuffer($e, $this->HREF);
-               }       // *TABLES*
-
-               if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-               unset($this->InlineProperties[$tag]);
-
-               break;
-
-
-/*-- TABLES --*/
-
-    case 'TABLE': // TABLE-BEGIN
-       $this->tdbegin = false;
-       $this->lastoptionaltag = '';
-       // Disable vertical justification in columns
-       if ($this->ColActive) { $this->colvAlign = ''; }        // *COLUMNS*
-       if ($this->lastblocklevelchange == 1) { $blockstate = 1; }      // Top margins/padding only
-       else if ($this->lastblocklevelchange < 1) { $blockstate = 0; }  // NO margins/padding
-       // called from block after new div e.g. <div> ... <table> ...    Outputs block top margin/border and padding
-       if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) {
-               $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']);
-               $this->finishFlowingBlock(true);        // true = END of flowing block
-       }
-       else if (!$this->tableLevel && count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); }
-
-       $this->textbuffer=array();
-       $this->lastblocklevelchange = -1;
-       if ($this->tableLevel) {        // i.e. now a nested table coming...
-               // Save current level table
-               // mPDF 5.4.10
-               $this->cell['PARENTCELL'] = $this->saveInlineProperties();
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties']= $this->base_table_properties;
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell;
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'] = $this->row;
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'] = $this->col;
-       }
-       $this->tableLevel++;
-       $this->cssmgr->tbCSSlvl++;
-
-       if ($this->tableLevel>1) {      // inherit table properties from cell in which nested
-               $this->base_table_properties['FONT-KERNING'] = $this->kerning ;
-               $this->base_table_properties['LETTER-SPACING'] = $this->lSpacingCSS ;
-               $this->base_table_properties['WORD-SPACING'] = $this->wSpacingCSS ;
-       }
-
-       if (isset($this->tbctr[$this->tableLevel])) { $this->tbctr[$this->tableLevel]++; }
-       else { $this->tbctr[$this->tableLevel] = 1; }
-
-       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['level'] = $this->tableLevel;
-       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['levelid'] = $this->tbctr[$this->tableLevel];
-
-       if ($this->tableLevel > $this->innermostTableLevel) { $this->innermostTableLevel = $this->tableLevel; }
-       if ($this->tableLevel > 1) { 
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nestedpos'] = array($this->row,$this->col,$this->tbctr[($this->tableLevel-1)]); 
-       }
-       //++++++++++++++++++++++++++++
-
-       $this->cell = array();
-       $this->col=-1; //int
-       $this->row=-1; //int
-       $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]];
-       // New table - any level
-       if ($this->cacheTables) {
-               $this->packTableData = true;    // required for cacheTables
-               $this->simpleTables = false;  // Cannot co-exist with cacheTables
-               $table['cache'] = _MPDF_TEMP_PATH.'_tempTblCache'.uniqid(rand(1,100000),true).'.dat';
-               $fh = fopen($table['cache'] , "wb") or $this->Error("When using cacheTables, you must have read/write access to cache files (".$table['cache'] .")");
-               fwrite($fh, "\x00");
-               fclose($fh);
-               $table['ptr'] = 1 ;     // Must not be 0
-       }
-
-       $table['direction'] = $this->directionality;
-       $table['bgcolor'] = false;
-       $table['va'] = false;
-       $table['txta'] = false;
-       $table['topntail'] = false;
-       $table['thead-underline'] = false;
-       $table['border'] = false;
-       $table['border_details']['R']['w'] = 0;
-       $table['border_details']['L']['w'] = 0;
-       $table['border_details']['T']['w'] = 0;
-       $table['border_details']['B']['w'] = 0;
-       $table['border_details']['R']['style'] = '';
-       $table['border_details']['L']['style'] = '';
-       $table['border_details']['T']['style'] = '';
-       $table['border_details']['B']['style'] = '';
-       $table['max_cell_border_width']['R'] = 0;
-       $table['max_cell_border_width']['L'] = 0;
-       $table['max_cell_border_width']['T'] = 0;
-       $table['max_cell_border_width']['B'] = 0;
-       $table['padding']['L'] = false;
-       $table['padding']['R'] = false;
-       $table['padding']['T'] = false;
-       $table['padding']['B'] = false;
-       $table['margin']['L'] = false;
-       $table['margin']['R'] = false;
-       $table['margin']['T'] = false;
-       $table['margin']['B'] = false;
-       $table['a'] = false;
-       $table['border_spacing_H'] = false;
-       $table['border_spacing_V'] = false;
-       $table['decimal_align'] = false;        // mPDF 5.6.13
-       $this->Reset();
-       $this->InlineProperties = array();
-       $this->spanlvl = 0;
-       $table['nc'] = $table['nr'] = 0;
-       $this->tablethead = 0;
-       $this->tabletfoot = 0;
-       $this->tabletheadjustfinished = false;
-
-
-       if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins && $this->tableLevel==1) { $lastbottommargin = $this->lastblockbottommargin; }
-       else { $lastbottommargin = 0; }
-       $this->lastblockbottommargin = 0;
-       $this->blockjustfinished=false;
-
-       if ($this->tableLevel==1) { 
-               $this->tableCJK = false;
-               $this->table_lineheight = $this->normalLineheight;
-               $table['headernrows'] = 0;
-               $table['footernrows'] = 0; 
-               $this->base_table_properties = array();
-       }
-
-       // ADDED CSS FUNCIONS FOR TABLE 
-       if ($this->cssmgr->tbCSSlvl==1) {
-               $properties = $this->cssmgr->MergeCSS('TOPTABLE',$tag,$attr);
-       }
-       else {
-               $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
-       }
-       $w = '';
-       if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; }
-       else if (isset($attr['WIDTH']) && $attr['WIDTH']) { $w = $attr['WIDTH']; }
-
-
-       if(isset($properties['DIRECTION']) && $properties['DIRECTION']) { $table['direction'] = strtolower($properties['DIRECTION']); }
-       else if(isset($attr['DIR']) && $attr['DIR']) { $table['direction'] = strtolower($attr['DIR']); }
-       else if (!isset($table['direction'])){ $table['direction'] = $this->blk[$this->blklvl]['direction']; }
-
-       if (isset($properties['BACKGROUND-COLOR'])) { $table['bgcolor'][-1] = $properties['BACKGROUND-COLOR'];  }
-       else if (isset($properties['BACKGROUND'])) { $table['bgcolor'][-1] = $properties['BACKGROUND']; }
-       else if (isset($attr['BGCOLOR'])) { $table['bgcolor'][-1]       = $attr['BGCOLOR']; }
-       if (isset($properties['VERTICAL-ALIGN'])) { $table['va'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
-       if (isset($properties['TEXT-ALIGN'])) { $table['txta'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
-       if (isset($attr['ALIGN'])) { $table['a']        = $align[strtolower($attr['ALIGN'])]; }
-       if (!$table['a']) { 
-               if ($table['direction'] == 'rtl' ) { $table['a'] = 'R'; }
-               else { $table['a'] = 'L'; }
-       }
-
-       if (isset($properties['AUTOSIZE']) && $properties['AUTOSIZE'] && $this->tableLevel ==1) { 
-               $this->shrink_this_table_to_fit = $properties['AUTOSIZE']; 
-               if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 0; }
-       }
-       if (isset($properties['ROTATE']) && $properties['ROTATE'] && $this->tableLevel ==1)     { 
-               $this->table_rotate = $properties['ROTATE']; 
-       }
-       if (isset($properties['TOPNTAIL'])) { $table['topntail'] = $properties['TOPNTAIL']; }
-       if (isset($properties['THEAD-UNDERLINE'])) { $table['thead-underline'] = $properties['THEAD-UNDERLINE']; }
-
-       if (isset($properties['BORDER'])) { 
-               $bord = $this->border_details($properties['BORDER']);
-               if ($bord['s']) {
-                       $table['border'] = _BORDER_ALL;
-                       $table['border_details']['R'] = $bord;
-                       $table['border_details']['L'] = $bord;
-                       $table['border_details']['T'] = $bord;
-                       $table['border_details']['B'] = $bord;
-               }
-       }
-       if (isset($properties['BORDER-RIGHT'])) { 
-         if ($table['direction'] == 'rtl') {   // *RTL*
-               $table['border_details']['R'] = $this->border_details($properties['BORDER-LEFT']);      // *RTL*
-         }     // *RTL*
-         else {        // *RTL*
-               $table['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']);
-         }     // *RTL*
-         $this->setBorder($table['border'], _BORDER_RIGHT, $table['border_details']['R']['s']); 
-       }
-       if (isset($properties['BORDER-LEFT'])) { 
-         if ($table['direction'] == 'rtl') {   // *RTL*
-               $table['border_details']['L'] = $this->border_details($properties['BORDER-RIGHT']);     // *RTL*
-         }     // *RTL*
-         else {        // *RTL*
-               $table['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']);
-         }     // *RTL*
-         $this->setBorder($table['border'], _BORDER_LEFT, $table['border_details']['L']['s']); 
-       }
-       if (isset($properties['BORDER-BOTTOM'])) { 
-               $table['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']);
-               $this->setBorder($table['border'], _BORDER_BOTTOM, $table['border_details']['B']['s']); 
-       }
-       if (isset($properties['BORDER-TOP'])) { 
-               $table['border_details']['T'] = $this->border_details($properties['BORDER-TOP']);
-               $this->setBorder($table['border'], _BORDER_TOP, $table['border_details']['T']['s']); 
-       }
-       if ($table['border']){
-                 $this->table_border_css_set = 1;
-       }
-       else {
-         $this->table_border_css_set = 0;
-       }
-
-       if (isset($properties['FONT-FAMILY'])) { 
-               $this->default_font = $properties['FONT-FAMILY'];
-               $this->SetFont($this->default_font,'',0,false);
-       }
-       $this->base_table_properties['FONT-FAMILY'] = $this->FontFamily;        // mPDF 5.4.10
-
-       if (isset($properties['FONT-SIZE'])) { 
-          // mPDF 5.4.10
-          if ($this->tableLevel>1) { $mmsize = $this->ConvertSize($properties['FONT-SIZE'], $this->base_table_properties['FONT-SIZE']); }
-          else { $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); }
-          if ($mmsize) {
-               $this->default_font_size = $mmsize*(_MPDFK);
-               $this->SetFontSize($this->default_font_size,false);
-          }
-       }
-       $this->base_table_properties['FONT-SIZE'] = $this->FontSize.'mm';       // mPDF 5.4.10
-
-       if (isset($properties['FONT-WEIGHT'])) {
-               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->base_table_properties['FONT-WEIGHT'] = 'BOLD'; }
-       }
-       if (isset($properties['FONT-STYLE'])) {
-               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->base_table_properties['FONT-STYLE'] = 'ITALIC'; }
-       }
-       if (isset($properties['COLOR'])) {
-               $this->base_table_properties['COLOR'] = $properties['COLOR'];
-       }
-       if (isset($properties['FONT-KERNING'])) {
-               $this->base_table_properties['FONT-KERNING'] = $properties['FONT-KERNING'];
-       }
-       if (isset($properties['LETTER-SPACING'])) {
-               $this->base_table_properties['LETTER-SPACING'] = $properties['LETTER-SPACING'];
-       }
-       if (isset($properties['WORD-SPACING'])) {
-               $this->base_table_properties['WORD-SPACING'] = $properties['WORD-SPACING'];
-       }
-
-       if (isset($properties['PADDING-LEFT'])) { 
-               $table['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       if (isset($properties['PADDING-RIGHT'])) { 
-               $table['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       if (isset($properties['PADDING-TOP'])) { 
-               $table['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       if (isset($properties['PADDING-BOTTOM'])) { 
-               $table['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-
-       if (isset($properties['MARGIN-TOP'])) { 
-               if ($lastbottommargin) { 
-                       $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-                       if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; }
-                       else { $properties['MARGIN-TOP'] = 0; }
-               }
-               $table['margin']['T'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       }
-
-       if (isset($properties['MARGIN-BOTTOM'])) { 
-               $table['margin']['B'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       }
-       if (isset($properties['MARGIN-LEFT'])) {
-               $table['margin']['L'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       }
-
-       if (isset($properties['MARGIN-RIGHT'])) {
-               $table['margin']['R'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       }
-       if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
-               $table['a'] = 'C'; 
-       }
-       else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
-               $table['a'] = 'R'; 
-       }
-       else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
-               $table['a'] = 'L'; 
-       }
-
-       if (isset($properties['LINE-HEIGHT']) && $this->tableLevel==1) { 
-               $this->table_lineheight = $this->fixLineheight($properties['LINE-HEIGHT']);
-               if (!$this->table_lineheight) { $this->table_lineheight = $this->normalLineheight; }
-       }
-
-       if (isset($properties['BORDER-COLLAPSE']) && strtoupper($properties['BORDER-COLLAPSE'])=='SEPARATE') { 
-               $table['borders_separate'] = true; 
-       }
-       else { 
-               $table['borders_separate'] = false; 
-       }
-
-       if (!$table['borders_separate']) { $table['border_spacing_H'] = $table['border_spacing_V'] = 0; }
-       else if (isset($attr['CELLSPACING'])) { 
-               $table['border_spacing_H'] = $table['border_spacing_V'] = $this->ConvertSize($attr['CELLSPACING'],$this->blk[$this->blklvl]['inner_width']); 
-       }
-       if (isset($properties['BORDER-SPACING-H'])) { 
-               $table['border_spacing_H'] = $this->ConvertSize($properties['BORDER-SPACING-H'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       }
-       if (isset($properties['BORDER-SPACING-V'])) { 
-               $table['border_spacing_V'] = $this->ConvertSize($properties['BORDER-SPACING-V'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-       }
-
-       if (isset($properties['EMPTY-CELLS'])) { 
-               $table['empty_cells'] = strtolower($properties['EMPTY-CELLS']);         // 'hide'  or 'show'
-       }
-       else { $table['empty_cells'] = ''; } 
-
-       if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE'])=='AVOID' && $this->tableLevel==1 && !$this->writingHTMLfooter) {
-               $this->table_keep_together = true; 
-       }
-       else if ($this->tableLevel==1) { 
-               $this->table_keep_together = false; 
-       }
-       if (isset($properties['PAGE-BREAK-AFTER']) && $this->tableLevel==1) {
-               $table['page_break_after'] = strtoupper($properties['PAGE-BREAK-AFTER']);
-       }
-
-/*-- BACKGROUNDS --*/
-       if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $table['gradient'] = $properties['BACKGROUND-GRADIENT']; }
-
-       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) {
-               $ret = $this->SetBackground($properties, $currblk['inner_width']);
-               if ($ret) { $table['background-image'] = $ret; }
-       }
-/*-- END BACKGROUNDS --*/
-
-       if (isset($properties['OVERFLOW']))     { 
-               $table['overflow'] = strtolower($properties['OVERFLOW']);       // 'hidden' 'wrap' or 'visible' or 'auto'
-               if (($this->ColActive || $this->tableLevel>1) && $table['overflow']=='visible') { unset($table['overflow']); }
-       }
-
-       $properties = array();
-
-
-
-       if (isset($attr['CELLPADDING'])) {
-               $table['cell_padding'] = $attr['CELLPADDING'];
-       }
-       else {
-               $table['cell_padding'] = false;
-       }
-
-       if (isset($attr['BORDER']) && $attr['BORDER']=='1') {   // mPDF 5.5.08
-               $this->table_border_attr_set = 1;       // mPDF 5.5.08
-               $bord = $this->border_details('#000000 1px solid');
-               if ($bord['s']) {
-                       $table['border'] = _BORDER_ALL;
-                       $table['border_details']['R'] = $bord;
-                       $table['border_details']['L'] = $bord;
-                       $table['border_details']['T'] = $bord;
-                       $table['border_details']['B'] = $bord;
-               }
-       }
-       else {
-               $this->table_border_attr_set = 0;
-       }
-
-       if ($w) {
-               $maxwidth = $this->blk[$this->blklvl]['inner_width'];
-               if ($table['borders_separate']) { 
-                       $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['border_details']['L']['w']/2 + $table['border_details']['R']['w']/2;
-               }
-               else { 
-                       $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2;
-               }
-               if (strpos($w,'%') && $this->tableLevel == 1 && !$this->ignore_table_percents ) { 
-                       // % needs to be of inner box without table margins etc.
-                       $maxwidth -= $tblblw ;
-                       $wmm = $this->ConvertSize($w,$maxwidth,$this->FontSize,false);
-                       $table['w'] = $wmm + $tblblw ;
-               }
-               if (strpos($w,'%') && $this->tableLevel > 1 && !$this->ignore_table_percents && $this->keep_table_proportions) { 
-                       $table['wpercent'] = $w + 0;    // makes 80% -> 80
-               }
-               if (!strpos($w,'%') && !$this->ignore_table_widths ) {
-                       $wmm = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-                       $table['w'] = $wmm + $tblblw ;
-               }
-               if (!$this->keep_table_proportions) {
-                       if (isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width']) { $table['w'] = $this->blk[$this->blklvl]['inner_width']; }
-               }
-       }
-
-       if (isset($attr['AUTOSIZE']) && $this->tableLevel==1)   { 
-               $this->shrink_this_table_to_fit = $attr['AUTOSIZE']; 
-               if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 1; }
-       }
-       if (isset($attr['ROTATE']) && $this->tableLevel==1)     { 
-               $this->table_rotate = $attr['ROTATE']; 
-       }
-
-       //++++++++++++++++++++++++++++
-       // keeping block together on one page
-       // Autosize is now forced therefore keep block together disabled
-       if ($this->keep_block_together) {
-               $this->keep_block_together = 0;
-               $this->printdivbuffer();
-               $this->blk[$this->blklvl]['keep_block_together'] = 0;
-       }
-       if ($this->table_rotate) {
-               $this->tbrot_Links = array();
-               $this->tbrot_Annots = array();
-               $this->tbrotForms = array();
-               $this->tbrot_Reference = array();
-               $this->tbrot_BMoutlines = array();
-               $this->tbrot_toc = array();
-       }
-
-       if ($this->kwt) {
-               if ($this->table_rotate) { $this->table_keep_together = true; }
-               $this->kwt = false;
-               $this->kwt_saved = true;
-       }
-
-       if ($this->tableLevel==1 && $this->useGraphs) { 
-               if (isset($attr['ID']) && $attr['ID']) { $this->currentGraphId = strtoupper($attr['ID']); }
-               else { $this->currentGraphId = '0'; }
-               $this->graphs[$this->currentGraphId] = array();
-       }
-       //++++++++++++++++++++++++++++
-       $this->plainCell_properties = array();
-       unset($table);
-       break;
-
-    case 'THEAD':
-       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
-       $this->cssmgr->tbCSSlvl++;
-       $this->tablethead = 1;
-       $this->tabletfoot = 0; 
-       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
-       if (isset($properties['FONT-WEIGHT'])) {
-               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->thead_font_weight = 'B'; }
-               else { $this->thead_font_weight = ''; }
-       }
-
-       if (isset($properties['FONT-STYLE'])) {
-               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->thead_font_style = 'I'; }
-               else { $this->thead_font_style = ''; }
-       }
-       if (isset($properties['FONT-VARIANT'])) {
-               if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->thead_font_smCaps = 'S'; }
-               else { $this->thead_font_smCaps = ''; }
-       }
-
-       if (isset($properties['VERTICAL-ALIGN'])) {
-               $this->thead_valign_default = $properties['VERTICAL-ALIGN'];
-       }
-       if (isset($properties['TEXT-ALIGN'])) {
-               $this->thead_textalign_default = $properties['TEXT-ALIGN'];
-       }
-       $properties = array();
-       break;
-
-    case 'TFOOT':
-       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
-       $this->cssmgr->tbCSSlvl++;
-       $this->tabletfoot = 1; 
-       $this->tablethead = 0;
-       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
-       if (isset($properties['FONT-WEIGHT'])) {
-               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->tfoot_font_weight = 'B'; }
-               else { $this->tfoot_font_weight = ''; }
-       }
-
-       if (isset($properties['FONT-STYLE'])) {
-               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->tfoot_font_style = 'I'; }
-               else { $this->tfoot_font_style = ''; }
-       }
-       if (isset($properties['FONT-VARIANT'])) {       
-               if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->tfoot_font_smCaps = 'S'; }
-               else { $this->tfoot_font_smCaps = ''; }
-       }
-
-       if (isset($properties['VERTICAL-ALIGN'])) {
-               $this->tfoot_valign_default = $properties['VERTICAL-ALIGN'];
-       }
-       if (isset($properties['TEXT-ALIGN'])) {
-               $this->tfoot_textalign_default = $properties['TEXT-ALIGN'];
-       }
-       $properties = array();
-       break;
-
-
-    case 'TBODY':
-       $this->tablethead = 0;
-       $this->tabletfoot = 0;
-       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
-       $this->cssmgr->tbCSSlvl++;
-       $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
-       break;
-
-
-    case 'TR':
-       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
-       $this->cssmgr->tbCSSlvl++;
-       $this->row++;
-       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']++;
-       $this->col = -1;
-       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
-
-       if (!$this->simpleTables && (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate']) || !$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate'])) { 
-               if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row] = $properties['BORDER-LEFT']; }
-               if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row] = $properties['BORDER-RIGHT']; }
-               if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-top'][$this->row] = $properties['BORDER-TOP']; }
-               if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-bottom'][$this->row] = $properties['BORDER-BOTTOM']; }
-       }
-
-       if (isset($properties['BACKGROUND-COLOR'])) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $properties['BACKGROUND-COLOR']; }
-       else if (isset($attr['BGCOLOR'])) $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $attr['BGCOLOR'];
-
-/*-- BACKGROUNDS --*/
-       if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$this->row] = $properties['BACKGROUND-GRADIENT']; }
-
-       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) {
-               $ret = $this->SetBackground($properties, $currblk['inner_width']);
-               if ($ret) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$this->row] = $ret; }
-       }
-/*-- END BACKGROUNDS --*/
-
-
-       if (isset($properties['TEXT-ROTATE'])) {
-               $this->trow_text_rotate = $properties['TEXT-ROTATE'];
-       }
-       if (isset($attr['TEXT-ROTATE'])) $this->trow_text_rotate = $attr['TEXT-ROTATE'];
-
-       if ($this->tablethead) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true; }
-       if ($this->tabletfoot) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true; }
-       $properties = array();
-       break;
-
-
-    case 'TH':
-    case 'TD':
-       $this->ignorefollowingspaces = true; 
-       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
-       $this->cssmgr->tbCSSlvl++;
-       $this->InlineProperties = array();
-       $this->spanlvl = 0;
-       $this->tdbegin = true;
-       $this->col++;
-       while (isset($this->cell[$this->row][$this->col])) { $this->col++; }
-
-       //Update number column
-       if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+1; }
-
-       $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]];
-
-       $c = array('a' => false,
-       'R' => false,
-       'nowrap' => false,
-       'bgcolor' => false,
-       'padding' => array('L' => false,
-               'R' => false,
-               'T' => false,
-               'B' => false
-               )
-       );
-
-       if ($this->simpleTables && $this->row==0 && $this->col==0){
-               $table['simple']['border'] = false;
-               $table['simple']['border_details']['R']['w'] = 0;
-               $table['simple']['border_details']['L']['w'] = 0;
-               $table['simple']['border_details']['T']['w'] = 0;
-               $table['simple']['border_details']['B']['w'] = 0;
-               $table['simple']['border_details']['R']['style'] = '';
-               $table['simple']['border_details']['L']['style'] = '';
-               $table['simple']['border_details']['T']['style'] = '';
-               $table['simple']['border_details']['B']['style'] = '';
-       }
-       else if (!$this->simpleTables) {
-       $c['border'] = false;
-       $c['border_details']['R']['w'] = 0;
-       $c['border_details']['L']['w'] = 0;
-       $c['border_details']['T']['w'] = 0;
-       $c['border_details']['B']['w'] = 0;
-       $c['border_details']['mbw']['BL'] = 0;
-       $c['border_details']['mbw']['BR'] = 0;
-       $c['border_details']['mbw']['RT'] = 0;
-       $c['border_details']['mbw']['RB'] = 0;
-       $c['border_details']['mbw']['TL'] = 0;
-       $c['border_details']['mbw']['TR'] = 0;
-       $c['border_details']['mbw']['LT'] = 0;
-       $c['border_details']['mbw']['LB'] = 0;
-       $c['border_details']['R']['style'] = '';
-       $c['border_details']['L']['style'] = '';
-       $c['border_details']['T']['style'] = '';
-       $c['border_details']['B']['style'] = '';
-       $c['border_details']['R']['s'] = 0;
-       $c['border_details']['L']['s'] = 0;
-       $c['border_details']['T']['s'] = 0;
-       $c['border_details']['B']['s'] = 0;
-       $c['border_details']['R']['c'] = $this->ConvertColor(0);
-       $c['border_details']['L']['c'] = $this->ConvertColor(0);
-       $c['border_details']['T']['c'] = $this->ConvertColor(0);
-       $c['border_details']['B']['c'] = $this->ConvertColor(0);
-       $c['border_details']['R']['dom'] = 0;
-       $c['border_details']['L']['dom'] = 0;
-       $c['border_details']['T']['dom'] = 0;
-       $c['border_details']['B']['dom'] = 0;
-       }
-
-
-       if ($table['va']) { $c['va'] = $table['va']; }
-       if ($table['txta']) { $c['a'] = $table['txta']; }
-       if ($this->table_border_attr_set) {
-         if ($table['border_details']) {
-           if (!$this->simpleTables){
-               $c['border_details']['R'] = $table['border_details']['R'];
-               $c['border_details']['L'] = $table['border_details']['L'];
-               $c['border_details']['T'] = $table['border_details']['T'];
-               $c['border_details']['B'] = $table['border_details']['B'];
-               $c['border'] = $table['border']; 
-               $c['border_details']['L']['dom'] = 1; 
-               $c['border_details']['R']['dom'] = 1; 
-               $c['border_details']['T']['dom'] = 1; 
-               $c['border_details']['B']['dom'] = 1; 
-           }
-           else if ($this->simpleTables && $this->row==0 && $this->col==0){
-               $table['simple']['border_details']['R'] = $table['border_details']['R'];
-               $table['simple']['border_details']['L'] = $table['border_details']['L'];
-               $table['simple']['border_details']['T'] = $table['border_details']['T'];
-               $table['simple']['border_details']['B'] = $table['border_details']['B'];
-               $table['simple']['border'] = $table['border']; 
-           }
-         }
-       } 
-       // INHERITED THEAD CSS Properties
-       if ($this->tablethead) { 
-               if ($this->thead_valign_default) $c['va'] = $align[strtolower($this->thead_valign_default)]; 
-               if ($this->thead_textalign_default) $c['a'] = $align[strtolower($this->thead_textalign_default)]; 
-               if ($this->thead_font_weight == 'B') { $this->SetStyle('B',true); }
-               if ($this->thead_font_style == 'I') { $this->SetStyle('I',true); }
-               if ($this->thead_font_smCaps == 'S') { $this->SetStyle('S',true); }
-       }
-
-       // INHERITED TFOOT CSS Properties
-       if ($this->tabletfoot) { 
-               if ($this->tfoot_valign_default) $c['va'] = $align[strtolower($this->tfoot_valign_default)]; 
-               if ($this->tfoot_textalign_default) $c['a'] = $align[strtolower($this->tfoot_textalign_default)]; 
-               if ($this->tfoot_font_weight == 'B') { $this->SetStyle('B',true); }
-               if ($this->tfoot_font_style == 'I') { $this->SetStyle('I',true); }
-               if ($this->tfoot_font_style == 'S') { $this->SetStyle('S',true); }
-       }
-
-
-       if ($this->trow_text_rotate){
-               $c['R'] = $this->trow_text_rotate; 
-       }
-
-       $this->cell_border_dominance_L = 0; 
-       $this->cell_border_dominance_R = 0; 
-       $this->cell_border_dominance_T = 0; 
-       $this->cell_border_dominance_B = 0; 
-
-       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
-       $properties = $this->cssmgr->array_merge_recursive_unique($this->base_table_properties, $properties);
-
-       if (isset($properties['FONT-KERNING']) && (strtoupper($properties['FONT-KERNING'])=='NORMAL' || strtoupper($properties['FONT-KERNING'])=='AUTO')) {
-               $this->kerning = true;
-       }
-       else { $this->kerning = false; }
-
-       if (isset($properties['LETTER-SPACING']) && ($properties['LETTER-SPACING'] || $properties['LETTER-SPACING']==='0') && strtoupper($properties['LETTER-SPACING']) != 'NORMAL') {
-               $this->lSpacingCSS = strtoupper($properties['LETTER-SPACING']);
-               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); 
-       }
-       else { 
-               $this->lSpacingCSS = '';
-               $this->fixedlSpacing = false; 
-       }
-       if (isset($properties['WORD-SPACING']) && strtoupper($properties['WORD-SPACING']) != 'NORMAL') { 
-               $this->wSpacingCSS = strtoupper($properties['WORD-SPACING']);
-               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); 
-       }
-       else { 
-               $this->minwSpacing = 0; 
-               $this->wSpacingCSS = '';
-       }
-       // mPDF 5.6.08
-       if (isset($properties['HYPHENS']) && $properties['HYPHENS']) {
-               if (strtoupper($properties['HYPHENS']) == 'NONE') { $this->textparam['hyphens'] = 2; }
-               else if (strtoupper($properties['HYPHENS']) == 'AUTO') { $this->textparam['hyphens'] = 1; }
-               else if (strtoupper($properties['HYPHENS']) == 'MANUAL') { $this->textparam['hyphens'] = 0; }
-       }
-
-       if (isset($properties['BACKGROUND-COLOR'])) { $c['bgcolor'] = $properties['BACKGROUND-COLOR']; }
-       else if (isset($properties['BACKGROUND'])) { $c['bgcolor'] = $properties['BACKGROUND']; }
-       else if (isset($attr['BGCOLOR'])) $c['bgcolor'] = $attr['BGCOLOR'];
-
-
-
-/*-- BACKGROUNDS --*/
-       if (isset($properties['BACKGROUND-GRADIENT'])) { $c['gradient'] = $properties['BACKGROUND-GRADIENT']; }
-       else { $c['gradient'] = false; }
-
-       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->keep_block_together) {
-               $ret = $this->SetBackground($properties, $this->blk[$this->blklvl]['inner_width']);
-               if ($ret) { $c['background-image'] = $ret; }
-       }
-/*-- END BACKGROUNDS --*/
-       if (isset($properties['VERTICAL-ALIGN'])) { $c['va']=$align[strtolower($properties['VERTICAL-ALIGN'])]; }
-       else if (isset($attr['VALIGN'])) $c['va'] = $align[strtolower($attr['VALIGN'])];
-
-
-       // mPDF 5.6.13
-       if (isset($properties['TEXT-ALIGN']) && $properties['TEXT-ALIGN']) {
-               if (substr($properties['TEXT-ALIGN'],0,1)=='D') { $c['a'] = $properties['TEXT-ALIGN']; }
-               else { $c['a'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
-       }
-       // mPDF 5.6.13
-       if (isset($attr['ALIGN']) && $attr['ALIGN']) {
-               if (strtolower($attr['ALIGN']) == 'char') { 
-                       if (isset($attr['CHAR']) && $attr['CHAR']) {
-                               $char = html_entity_decode($attr['CHAR']);
-                               $char = strcode2utf($char);
-                               $d = array_search($char,$this->decimal_align);
-                               if ($d !== false) { $c['a'] = $d.'R'; }
-                       }
-                       else { $c['a'] = 'DPR'; }
-               }
-               else { $c['a'] = $align[strtolower($attr['ALIGN'])]; }
-       }
-
-       if (!$c['a']) {
-               if (isset($table['direction']) && $table['direction'] == 'rtl' ) { $c['a'] = 'R'; }
-               else { $c['a'] = 'L'; }
-       }
-
-
-       if (isset($properties['TEXT-ROTATE']) && ($properties['TEXT-ROTATE'] || $properties['TEXT-ROTATE']==="0")){
-               $c['R'] = $properties['TEXT-ROTATE']; 
-       }
-       if (isset($properties['BORDER'])) { 
-               $bord = $this->border_details($properties['BORDER']);
-               if ($bord['s']) {
-                  if (!$this->simpleTables){
-                       $c['border'] = _BORDER_ALL;
-                       $c['border_details']['R'] = $bord;
-                       $c['border_details']['L'] = $bord;
-                       $c['border_details']['T'] = $bord;
-                       $c['border_details']['B'] = $bord;
-                       $c['border_details']['L']['dom'] = $this->cell_border_dominance_L; 
-                       $c['border_details']['R']['dom'] = $this->cell_border_dominance_R; 
-                       $c['border_details']['T']['dom'] = $this->cell_border_dominance_T; 
-                       $c['border_details']['B']['dom'] = $this->cell_border_dominance_B; 
-                  }
-                  else if ($this->simpleTables && $this->row==0 && $this->col==0){
-                       $table['simple']['border'] = _BORDER_ALL;
-                       $table['simple']['border_details']['R'] = $bord;
-                       $table['simple']['border_details']['L'] = $bord;
-                       $table['simple']['border_details']['T'] = $bord;
-                       $table['simple']['border_details']['B'] = $bord;
-                  }
-               }
-       }
-       if (!$this->simpleTables){
-          if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { 
-               $c['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']);
-               $this->setBorder($c['border'], _BORDER_RIGHT, $c['border_details']['R']['s']); 
-               $c['border_details']['R']['dom'] = $this->cell_border_dominance_R; 
-          }
-          if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { 
-               $c['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']);
-               $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']); 
-               $c['border_details']['L']['dom'] = $this->cell_border_dominance_L; 
-          }
-          if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { 
-               $c['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']);
-               $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']); 
-               $c['border_details']['B']['dom'] = $this->cell_border_dominance_B; 
-          }
-          if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { 
-               $c['border_details']['T'] = $this->border_details($properties['BORDER-TOP']);
-               $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']); 
-               $c['border_details']['T']['dom'] = $this->cell_border_dominance_T; 
-          }
-       }
-       else if ($this->simpleTables && $this->row==0 && $this->col==0){
-          if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { 
-               $bord = $this->border_details($properties['BORDER-LEFT']);
-                       if ($bord['s']) { $table['simple']['border'] = _BORDER_ALL; }
-                       else { $table['simple']['border'] = 0; }
-                       $table['simple']['border_details']['R'] = $bord;
-                       $table['simple']['border_details']['L'] = $bord;
-                       $table['simple']['border_details']['T'] = $bord;
-                       $table['simple']['border_details']['B'] = $bord;
-          }
-       }
-
-       if ($this->simpleTables && $this->row==0 && $this->col==0 && !$table['borders_separate'] && $table['simple']['border'] ){
-               $table['border_details'] = $table['simple']['border_details'];
-               $table['border'] = $table['simple']['border']; 
-       }
-
-       // Border set on TR (if collapsed only)
-       if (!$table['borders_separate'] && !$this->simpleTables && isset($table['trborder-left'][$this->row])) {
-               if ($this->col==0) { 
-                       $left = $this->border_details($table['trborder-left'][$this->row]);
-                       $c['border_details']['L'] = $left;
-                       $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']); 
-               }
-               $c['border_details']['B'] = $this->border_details($table['trborder-bottom'][$this->row]);
-               $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']); 
-               $c['border_details']['T'] = $this->border_details($table['trborder-top'][$this->row]);
-               $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']); 
-       }
-
-       if ($this->packTableData && !$this->simpleTables) {
-               $c['borderbin'] = $this->_packCellBorder($c);
-               unset($c['border']);
-               unset($c['border_details']);
-       }
-
-       if (isset($properties['PADDING-LEFT'])) { 
-               $c['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       if (isset($properties['PADDING-RIGHT'])) { 
-               $c['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       if (isset($properties['PADDING-BOTTOM'])) { 
-               $c['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-       if (isset($properties['PADDING-TOP'])) { 
-               $c['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-       }
-
-       $w = '';
-       if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; }
-       else if (isset($attr['WIDTH'])) { $w = $attr['WIDTH']; }
-       if ($w) { 
-               if (strpos($w,'%') && !$this->ignore_table_percents ) { $c['wpercent'] = $w + 0; }      // makes 80% -> 80
-               else if (!strpos($w,'%') && !$this->ignore_table_widths ) { $c['w'] = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-       }
-
-       if (isset($properties['HEIGHT']) && !strpos($properties['HEIGHT'],'%')) { $c['h'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-       else if (isset($attr['HEIGHT']) && !strpos($attr['HEIGHT'],'%')) $c['h'] = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-
-
-       if (isset($properties['COLOR'])) {
-         $cor = $this->ConvertColor($properties['COLOR']);
-         if ($cor) { 
-               $this->colorarray = $cor;
-               $this->SetTColor($cor); 
-         }
-       }
-       if (isset($properties['FONT-FAMILY'])) {
-               $this->SetFont($properties['FONT-FAMILY'],'',0,false);
-       }
-       if (isset($properties['FONT-SIZE'])) { 
-          $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
-          if ($mmsize) {
-               $this->SetFontSize($mmsize*(_MPDFK),false);
-          }
-       }
-       $c['dfs'] = $this->FontSize;    // Default Font size
-       if (isset($properties['FONT-WEIGHT'])) {
-               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->SetStyle('B',true); }
-       }
-       if (isset($properties['FONT-STYLE'])) {
-               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->SetStyle('I',true); }
-       }
-       if (isset($properties['FONT-VARIANT'])) {
-               if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->SetStyle('S',true); }
-       }
-       if (isset($properties['TEXT-DECORATION'])) {
-               if (strtoupper($properties['TEXT-DECORATION']) == 'LINE-THROUGH') { $this->strike = true; }
-               else if (strtoupper($properties['TEXT-DECORATION']) == 'UNDERLINE') { $this->SetStyle('U',true); }
-       }
-       if (isset($properties['TEXT-SHADOW'])) {
-               $ts = $this->cssmgr->setCSStextshadow($properties['TEXT-SHADOW']);
-               if ($ts) { $this->textshadow = $ts; }
-       }
-       if (isset($properties['TEXT-TRANSFORM'])) {
-               if (strtoupper($properties['TEXT-TRANSFORM']) == 'CAPITALIZE') { $this->capitalize = true; }
-               else if (strtoupper($properties['TEXT-TRANSFORM']) == 'UPPERCASE') { $this->toupper = true; }
-               else if (strtoupper($properties['TEXT-TRANSFORM']) == 'LOWERCASE') { $this->tolower = true; }
-       }
-       if (isset($properties['WHITE-SPACE'])) {
-               if (strtoupper($properties['WHITE-SPACE']) == 'NOWRAP') { $c['nowrap']= 1; }
-       }
-       $properties = array();
-
-       if (isset($attr['TEXT-ROTATE'])) {
-               $c['R'] = $attr['TEXT-ROTATE']; 
-       }
-       if (isset($attr['NOWRAP']) && $attr['NOWRAP']) $c['nowrap']= 1;
-
-       $this->cell[$this->row][$this->col] = $c;
-       unset($c);
-       $this->cell[$this->row][$this->col]['s'] = 0 ;
-
-       $cs = $rs = 1;
-       if (isset($attr['COLSPAN']) && $attr['COLSPAN']>1)      $cs = $this->cell[$this->row][$this->col]['colspan']    = $attr['COLSPAN'];
-       if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+$cs) { 
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+$cs; 
-       }       // following code moved outside if...
-       for($l=$this->col; $l < $this->col+$cs ;$l++) {
-               if ($l-$this->col) $this->cell[$this->row][$l] = 0;
-       }
-       if (isset($attr['ROWSPAN']) && $attr['ROWSPAN']>1)      $rs = $this->cell[$this->row][$this->col]['rowspan']    = $attr['ROWSPAN'];
-       for ($k=$this->row ; $k < $this->row+$rs ;$k++) {
-               for($l=$this->col; $l < $this->col+$cs ;$l++) {
-                       if ($k-$this->row || $l-$this->col)     $this->cell[$k][$l] = 0;
-               }
-       }
-       unset($table);
-       break;
-/*-- END TABLES --*/
-
-
-/*-- LISTS --*/
-    // *********** LISTS ********************
-    case 'OL':
-    case 'UL':
-       $this->listjustfinished = false;
-
-       if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; }
-       else { $lastbottommargin = 0; }
-       $this->lastblockbottommargin = 0;
-       $this->blockjustfinished=false;
-
-       $this->linebreakjustfinished=false;
-       $this->lastoptionaltag = ''; // Save current HTML specified optional endtag
-       $this->cssmgr->listCSSlvl++;
-       if((!$this->tableLevel) && ($this->listlvl == 0)) {
-               $blockstate = 0; 
-               //if ($this->lastblocklevelchange == 1) { $blockstate = -1; }   // Top margins/padding only
-               //else if ($this->lastblocklevelchange < 1) { $blockstate = 0; }        // NO margins/padding
-               // called from block after new div e.g. <div> ... <ol> ...    Outputs block top margin/border and padding
-               if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) {
-                       $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']);
-                       $this->finishFlowingBlock(true);        // true = END of flowing block
-               }
-               else if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); }
-               $this->textbuffer=array();
-               $this->lastblocklevelchange = -1;
-       }
-       // ol and ul types are mixed here
-       if ($this->listlvl == 0) {
-               $this->list_indent = array();
-               $this->list_align = array();
-               $this->list_lineheight = array();
-               $this->InlineProperties['LIST'] = array();
-               $this->InlineProperties['LISTITEM'] = array();
-       }
-
-/*-- TABLES --*/
-       // A simple list for inside a table
-       if($this->tableLevel) {
-               $this->list_indent[$this->listlvl] = 0; // mm default indent for each level
-               if ($tag == 'OL') $this->listtype = '1';
-               else if ($tag == 'UL') $this->listtype = 'disc';
-       if ($this->listlvl > 0) {
-                       $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
-               }
-               $this->listlvl++;
-               // mPDF 5.6.15
-               if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
-               else { $this->listnum = 0; }
-               $this->listlist[$this->listlvl] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
-               break;
-       }
-/*-- END TABLES --*/
-
-
-       if (($this->PDFA || $this->PDFX) && $tag == 'UL') {
-               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "List bullets cannot use core font Zapfdingbats in PDFA1-b or PDFX/1-a. (Substitute characters from current font used if available, otherwise substitutes hyphen '-')"; }
-       }
-
-       if ($this->cssmgr->listCSSlvl==1) {
-               $properties = $this->cssmgr->MergeCSS('TOPLIST',$tag,$attr);
-       }
-       else {
-               $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr);
-       }
-       if (!empty($properties)) $this->setCSS($properties,'LIST');     
-       // List-type
-
-       $this->listtype = '';
-       if (isset($properties['LIST-STYLE-TYPE'])) { 
-               $this->listtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']);
-       }
-       else if (isset($properties['LIST-STYLE'])) { 
-               $this->listtype = $this->_getListStyle($properties['LIST-STYLE']);
-       }
-       else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listtype = $attr['TYPE']; }
-       if (!$this->listtype) {
-               if ($tag == 'OL') $this->listtype = '1';
-               if ($tag == 'UL') {
-                       if ($this->listlvl % 3 == 0) $this->listtype = 'disc';
-                       elseif ($this->listlvl % 3 == 1) $this->listtype = 'circle';
-                       else $this->listtype = 'square';
-               }
-       }
-      if ($this->listlvl == 0) {
-         $this->inherit_lineheight = 0;
-         $this->listlvl++; // first depth level
-         // mPDF 5.6.15
-         if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
-         else { $this->listnum = 0; }
-         $this->listDir = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : null);
-         $occur = $this->listoccur[$this->listlvl] = 1;
-         $this->listlist[$this->listlvl][1] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
-      }
-      else {
-       if (!empty($this->textbuffer))
-        {
-               $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
-               $this->listnum++;
-        }
-         // Save current lineheight to inherit
-         $this->textbuffer = array();
-         $occur = $this->listoccur[$this->listlvl];
-         $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
-         $this->listlvl++;
-         // mPDF 5.6.15
-         if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
-         else { $this->listnum = 0; }
-
-
-         if (!isset($this->listoccur[$this->listlvl]) || $this->listoccur[$this->listlvl] == 0) $this->listoccur[$this->listlvl] = 1;
-         else $this->listoccur[$this->listlvl]++;
-         $occur = $this->listoccur[$this->listlvl];
-         $this->listlist[$this->listlvl][$occur] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
-      }
-
-
-       // TOP LEVEL ONLY
-       if ($this->listlvl == 1) {
-          if (isset($properties['MARGIN-TOP'])) { 
-               if ($lastbottommargin) { 
-                       $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
-                       if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; }
-                       else { $properties['MARGIN-TOP'] = 0; }
-               }
-               $this->DivLn($this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false),$this->blklvl,true,1);        // collapsible
-          }
-          if (isset($properties['MARGIN-BOTTOM'])) { 
-               $this->list_margin_bottom = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
-          }
-          
-          if (isset($this->blk[$this->blklvl]['line_height'])) {
-               $this->list_lineheight[$this->listlvl][$occur] = $this->blk[$this->blklvl]['line_height'];
-          }
-
-          if (isset($properties['DIRECTION']) && $properties['DIRECTION']) { $this->listDir = strtolower($properties['DIRECTION']); }
-          else if (isset($attr['DIR']) && $attr['DIR']) { $this->listDir = strtolower($attr['DIR']); }
-
-       }
-       $this->list_indent[$this->listlvl][$occur] = 5; // mm default indent for each level
-       if (isset($properties['TEXT-INDENT'])) { $this->list_indent[$this->listlvl][$occur] = $this->ConvertSize($properties['TEXT-INDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
-
-       if (isset($properties['TEXT-ALIGN'])) { 
-               $this->list_align[$this->listlvl][$occur] = $align[strtolower($properties['TEXT-ALIGN'])]; 
-       }
-
-
-       if (isset($properties['LINE-HEIGHT'])) { 
-               $this->list_lineheight[$this->listlvl][$occur] = $this->fixLineheight($properties['LINE-HEIGHT']);
-       }
-       else if ($this->listlvl>1 && isset($this->list_lineheight[($this->listlvl - 1)][1])) { 
-               $this->list_lineheight[$this->listlvl][$occur] = end($this->list_lineheight[($this->listlvl - 1)]);
-       }
-       if (!isset($this->list_lineheight[$this->listlvl][$occur]) || !$this->list_lineheight[$this->listlvl][$occur]) { 
-               $this->list_lineheight[$this->listlvl][$occur] = $this->normalLineheight; 
-       }
-
-       $this->InlineProperties['LIST'][$this->listlvl][$occur] = $this->saveInlineProperties();
-       $properties = array();
-     break;
-
-
-
-    case 'LI':
-       // Start Block
-       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
-      $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
-/*-- TABLES --*/
-       // A simple list for inside a table
-       if($this->tableLevel) {
-          $this->blockjustfinished=false;
-
-          // If already something in the Cell
-          if ((isset($this->cell[$this->row][$this->col]['maxs']) && $this->cell[$this->row][$this->col]['maxs'] > 0 ) || $this->cell[$this->row][$this->col]['s'] > 0 ) {
-                       $this->_saveCellTextBuffer("\n");
-                       if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
-                       }
-                       elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-                       }
-                       $this->cell[$this->row][$this->col]['s'] = 0 ;
-               }
-               if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...)
-                       $this->listlvl++; // first depth level
-                       $this->listnum = 0; // reset
-                       $this->listlist[$this->listlvl] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum);
-               }
-
-               $this->listnum++;
-               switch($this->listlist[$this->listlvl]['TYPE']) {
-               case 'A':
-                       $blt = $this->dec2alpha($this->listnum,true).$this->list_number_suffix;
-                       break;
-               case 'a':
-                       $blt = $this->dec2alpha($this->listnum,false).$this->list_number_suffix;
-                       break;
-               case 'I':
-                       $blt = $this->dec2roman($this->listnum,true).$this->list_number_suffix;
-                       break;
-               case 'i':
-                       $blt = $this->dec2roman($this->listnum,false).$this->list_number_suffix;
-                       break;
-               case '1':
-                       $blt = $this->listnum.$this->list_number_suffix;
-               break;
-               default:
-                       if ($this->listlvl % 3 == 1 && $this->_charDefined($this->CurrentFont['cw'],8226)) { $blt = "\xe2\x80\xa2"; }   // &#8226; 
-                       else if ($this->listlvl % 3 == 2 && $this->_charDefined($this->CurrentFont['cw'],9900)) { $blt = "\xe2\x9a\xac"; } // &#9900; 
-                       else if ($this->listlvl % 3 == 0 && $this->_charDefined($this->CurrentFont['cw'],9642)) { $blt = "\xe2\x96\xaa"; } // &#9642; 
-                       else { $blt = '-'; }
-                       break;
-               }
-
-               // change to &nbsp; spaces
-               if ($this->usingCoreFont) { 
-                       $ls = str_repeat(chr(160).chr(160),($this->listlvl-1)*2) . $blt . ' '; 
-               }
-               else {
-                       $ls = str_repeat("\xc2\xa0\xc2\xa0",($this->listlvl-1)*2) . $blt . ' '; 
-               }
-
-               $this->_saveCellTextBuffer($ls, $this->HREF);
-               $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($ls);
-               break;
-       }
-/*-- END TABLES --*/
-       //Observation: </LI> is ignored
-       if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...)
-       //First of all, skip a line
-               $this->listlvl++; // first depth level
-               $this->listnum = 0; // reset
-               $this->listoccur[$this->listlvl] = 1;
-               $this->listlist[$this->listlvl][1] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum);
-       }
-       if ($this->listnum == 0) {
-               $this->listnum++;
-               $this->textbuffer = array();
-       }
-       else {
-               if (!empty($this->textbuffer)) {
-                 if (!$this->listjustfinished) {
-                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
-                       $this->listnum++;
-                 }
-                 else {
-                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype, true);
-                 }
-               }
-               $this->textbuffer = array();
-      }
-       $this->listjustfinished = false;
-
-       $this->cssmgr->listCSSlvl++;
-       $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr);
-       if (!empty($properties)) $this->setCSS($properties,'LIST');
-       $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listoccur[$this->listlvl]][$this->listnum] = $this->saveInlineProperties();
-
-       // List-type
-       if (isset($properties['LIST-STYLE-TYPE'])) { 
-               $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']);
-       }
-       else if (isset($properties['LIST-STYLE'])) { 
-               $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE']);
-       }
-       else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listitemtype = $attr['TYPE']; }
-       else $this->listitemtype = '';
-      break;
-/*-- END LISTS --*/
-
-  }//end of switch
-}
-
-/*-- LISTS --*/
-
-function _getListStyle($ls) {
-       if (stristr($ls,'decimal')) { return '1'; }
-       else if (preg_match('/(disc|circle|square|arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu|cambodian|khmer|lao)/i',$ls,$m)) { 
-               return strtolower(trim($m[1])); 
-       }
-       else if (stristr($ls,'lower-roman')) { return 'i'; }
-       else if (stristr($ls,'upper-roman')) { return 'I'; }
-       else if (stristr($ls,'lower-latin')|| stristr($ls,'lower-alpha')) { return 'a'; }
-       else if (stristr($ls,'upper-latin') || stristr($ls,'upper-alpha')) { return 'A'; }
-       else if (stristr($ls,'none')) { return 'none'; }
-       else if (preg_match('/U\+([a-fA-F0-9]+)/i',$ls)) { return $ls; }
-       else { return ''; }
-}
-/*-- END LISTS --*/
-
-
-
-function CloseTag($tag)
-{
-       $this->ignorefollowingspaces = false; //Eliminate exceeding left-side spaces
-    //Closing tag
-    if($tag=='OPTION') { $this->selectoption['ACTIVE'] = false;        $this->lastoptionaltag = ''; }
-
-    if($tag=='TTS' or $tag=='TTA' or $tag=='TTZ') {
-       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-       unset($this->InlineProperties[$tag]);
-       $ltag = strtolower($tag);
-       $this->$ltag = false;
-    }
-
-
-    if($tag=='FONT' || $tag=='SPAN' || $tag=='CODE' || $tag=='KBD' || $tag=='SAMP' || $tag=='TT' || $tag=='VAR' 
-       || $tag=='INS' || $tag=='STRONG' || $tag=='CITE' || $tag=='SUB' || $tag=='SUP' || $tag=='S' || $tag=='STRIKE' || $tag=='DEL'
-       || $tag=='Q' || $tag=='EM' || $tag=='B' || $tag=='I' || $tag=='U' | $tag=='SMALL' || $tag=='BIG' || $tag=='ACRONYM'
-       || $tag=='MARK'  || $tag=='TIME'  || $tag=='PROGRESS'  || $tag=='METER' 
-       ) {     // mPDF 5.5.09
-
-       if ($tag == 'SPAN') {
-               if (isset($this->InlineProperties['SPAN'][$this->spanlvl]) && $this->InlineProperties['SPAN'][$this->spanlvl]) { $this->restoreInlineProperties($this->InlineProperties['SPAN'][$this->spanlvl]); }
-               unset($this->InlineProperties['SPAN'][$this->spanlvl]);
-               if (isset($this->InlineAnnots['SPAN'][$this->spanlvl]) && $this->InlineAnnots['SPAN'][$this->spanlvl]) { $annot = $this->InlineAnnots['SPAN'][$this->spanlvl]; }        // *ANNOTATIONS*
-               unset($this->InlineAnnots['SPAN'][$this->spanlvl]);     // *ANNOTATIONS*
-               $this->spanlvl--;
-       }
-       else { 
-               if (isset($this->InlineProperties[$tag]) && $this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-               unset($this->InlineProperties[$tag]);
-               if (isset($this->InlineAnnots[$tag]) && $this->InlineAnnots[$tag]) { $annot = $this->InlineAnnots[$tag]; }      // *ANNOTATIONS*
-               unset($this->InlineAnnots[$tag]);       // *ANNOTATIONS*
-       }
-
-/*-- ANNOTATIONS --*/
-       if (isset($annot)) {
-               if($this->tableLevel) { // *TABLES*
-                       $this->cell[$this->row][$this->col]['textbuffer'][] = array($annot);    // *TABLES*
-               }       // *TABLES*
-               else  { // *TABLES*
-                       $this->textbuffer[] = array($annot);
-               }       // *TABLES*
-       }
-/*-- END ANNOTATIONS --*/
-    }
-
-    if($tag=='METER' || $tag=='PROGRESS') {
-       $this->inMeter = false; // mPDF 5.5.09
-    }
-
-
-    if($tag=='A') {
-       $this->HREF=''; 
-       if (isset($this->InlineProperties['A'])) { $this->restoreInlineProperties($this->InlineProperties['A']); }
-       unset($this->InlineProperties['A']);
-    }
-
-    if($tag=='LEGEND') {       // mPDF 5.4.18
-       if (count($this->textbuffer) && !$this->tableLevel) { 
-               $leg = $this->textbuffer[(count($this->textbuffer)-1)]; 
-               unset($this->textbuffer[(count($this->textbuffer)-1)]);
-               $this->textbuffer = array_values($this->textbuffer);
-               $this->blk[$this->blklvl]['border_legend'] = $leg;
-               $this->blk[$this->blklvl]['margin_top'] += ($leg[11]/2)/_MPDFK;
-               $this->blk[$this->blklvl]['padding_top'] += ($leg[11]/2)/_MPDFK;
-       }
-       if (isset($this->InlineProperties['LEGEND'])) { $this->restoreInlineProperties($this->InlineProperties['LEGEND']); }
-       unset($this->InlineProperties['LEGEND']);
-       $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
-    }
-
-
-
-/*-- FORMS --*/
-       // *********** FORM ELEMENTS ********************
-
-    if($tag=='TEXTAREA') {
-       $this->specialcontent = '';
-       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-       unset($this->InlineProperties[$tag]);
-    }
-
-
-    if($tag=='SELECT') {
-       $this->lastoptionaltag = '';
-       $texto = '';
-       if (isset($this->selectoption['SELECTED'])) { $texto = $this->selectoption['SELECTED']; }
-
-       if ($this->useActiveForms) { $w = $this->selectoption['MAXWIDTH']; }
-       else { $w = $this->GetStringWidth($texto); }
-       if ($w == 0) { $w = 5; }
-       $objattr['type'] = 'select';
-       $objattr['text'] = $texto;
-       if (isset($this->selectoption['NAME'])) { $objattr['fieldname'] = $this->selectoption['NAME']; }
-       if (isset($this->selectoption['READONLY'])) { $objattr['readonly'] = true; }
-       if (isset($this->selectoption['REQUIRED'])) { $objattr['required'] = true; }
-       if (isset($this->selectoption['SPELLCHECK'])) { $objattr['spellcheck'] = true; }
-       if (isset($this->selectoption['EDITABLE'])) { $objattr['editable'] = true; }
-       if (isset($this->selectoption['ONCHANGE'])) { $objattr['onChange'] = $this->selectoption['ONCHANGE']; }
-       if (isset($this->selectoption['ITEMS'])) { $objattr['items'] = $this->selectoption['ITEMS']; }
-       if (isset($this->selectoption['MULTIPLE'])) { $objattr['multiple'] = $this->selectoption['MULTIPLE']; }
-       if (isset($this->selectoption['DISABLED'])) { $objattr['disabled'] = $this->selectoption['DISABLED']; }
-       if (isset($this->selectoption['TITLE'])) { $objattr['title'] = $this->selectoption['TITLE']; }
-       if (isset($this->selectoption['COLOR'])) { $objattr['color'] = $this->selectoption['COLOR']; }
-       if (isset($this->selectoption['SIZE'])) { $objattr['size'] = $this->selectoption['SIZE']; }
-       if (isset($objattr['size']) && $objattr['size']>1) { $rows=$objattr['size']; } else { $rows = 1; }
-
-       $objattr['fontfamily'] = $this->FontFamily;
-       $objattr['fontsize'] = $this->FontSizePt;
-
-       $objattr['width'] = $w + ($this->form->form_element_spacing['select']['outer']['h']*2)+($this->form->form_element_spacing['select']['inner']['h']*2) + ($this->FontSize*1.4);
-       $objattr['height'] = ($this->FontSize*$rows) + ($this->form->form_element_spacing['select']['outer']['v']*2)+($this->form->form_element_spacing['select']['inner']['v']*2);
-       $e = "\xbb\xa4\xactype=select,objattr=".serialize($objattr)."\xbb\xa4\xac";
-
-       // Clear properties - tidy up
-       $properties = array();
-
-       // Output it to buffers
-       if ($this->tableLevel) {        // *TABLES*
-               $this->_saveCellTextBuffer($e, $this->HREF);
-               $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES*
-       }       // *TABLES*
-       else {  // *TABLES*
-               $this->_saveTextBuffer($e, $this->HREF);
-       }       // *TABLES*
-
-       $this->selectoption = array();
-       $this->specialcontent = '';
-
-       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
-       unset($this->InlineProperties[$tag]);
-
-    }
-/*-- END FORMS --*/
-
-
-       // *********** BLOCKS ********************
-       // mPDF 5.4.18
-    if($tag=='P' || $tag=='DIV' || $tag=='H1' || $tag=='H2' || $tag=='H3' || $tag=='H4' || $tag=='H5' || $tag=='H6' || $tag=='PRE' 
-        || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DT'  || $tag=='DD'  || $tag=='DL'  
-       || $tag=='CAPTION' || $tag=='FIELDSET' 
-       || $tag=='ARTICLE' || $tag=='ASIDE' || $tag=='FIGURE' || $tag=='FIGCAPTION' || $tag=='FOOTER' || $tag=='HEADER' || $tag=='HGROUP' 
-       || $tag=='NAV' || $tag=='SECTION'  || $tag=='DETAILS' || $tag=='SUMMARY'
-       ) {     // mPDF 5.5.09  // mPDF 5.5.22
-
-       $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
-       $this->blockjustfinished=true;
-
-       $this->lastblockbottommargin = $this->blk[$this->blklvl]['margin_bottom'];
-/*-- LISTS --*/
-       if ($this->listlvl>0) { return; }
-/*-- END LISTS --*/
-
-       // mPDF 5.6.34
-       if (preg_match('/^H\d/',$tag) && !$this->tableLevel && !$this->writingToC) {    // mPDF 5.6.38
-               if (isset($this->h2toc[$tag]) || isset($this->h2bookmarks[$tag])) {
-                       $content = '';
-                       if (count($this->textbuffer)==1) { $content = $this->textbuffer[0][0]; }
-                       else {
-                               for ($i=0;$i<count($this->textbuffer);$i++) {
-                               if (substr($this->textbuffer[$i][0],0,3) != "\xbb\xa4\xac") { //inline object
-                                               $content .= $this->textbuffer[$i][0];
-                                       }
-                               }
-                       }
-/*-- TOC --*/
-                       if (isset($this->h2toc[$tag])) {
-                               $objattr = array();
-                               $objattr['type'] = 'toc';
-                               $objattr['toclevel'] = $this->h2toc[$tag];
-                               $objattr['CONTENT'] = htmlspecialchars($content);       // mPDF 5.6.37
-                               $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
-                               array_unshift($this->textbuffer,array($e));
-                       }
-/*-- END TOC --*/
-/*-- BOOKMARKS --*/
-                       if (isset($this->h2bookmarks[$tag])) {
-                               $objattr = array();
-                               $objattr['type'] = 'bookmark';
-                               $objattr['bklevel'] = $this->h2bookmarks[$tag];
-                               $objattr['CONTENT'] = $content;
-                               $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
-                               array_unshift($this->textbuffer,array($e));
-                       }
-/*-- END BOOKMARKS --*/
-               }
-       }
-
-/*-- TABLES --*/
-       if($this->tableLevel) {
-               if ($this->linebreakjustfinished) { $this->blockjustfinished=false; }
-               if (isset($this->InlineProperties['BLOCKINTABLE'])) { 
-                       if ($this->InlineProperties['BLOCKINTABLE']) { $this->restoreInlineProperties($this->InlineProperties['BLOCKINTABLE']); }
-                       unset($this->InlineProperties['BLOCKINTABLE']);
-               }
-               if($tag=='PRE') { $this->ispre=false; }
-               return;
-       }
-/*-- END TABLES --*/
-       $this->lastoptionaltag = '';
-       $this->divbegin=false;
-
-       $this->linebreakjustfinished=false;
-
-       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
-
-/*-- CSS-FLOAT --*/
-       // If float contained in a float, need to extend bottom to allow for it
-       $currpos = $this->page*1000 + $this->y;
-       if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) {
-               $old_page = $this->page;
-               $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000);
-               if ($old_page != $new_page) {
-                       $s = $this->PrintPageBackgrounds();
-                       // Writes after the marker so not overwritten later by page background etc.
-                       $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-                       $this->pageBackgrounds = array();
-                       $this->page = $new_page;
-                       $this->ResetMargins();
-                       $this->Reset();
-                       $this->pageoutput[$this->page] = array();
-               }
-               $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000;  // mod changes operands to integers before processing
-       }
-/*-- END CSS-FLOAT --*/
-
-
-       //Print content
-       if ($this->lastblocklevelchange == 1) { $blockstate = 3; }      // Top & bottom margins/padding
-       else if ($this->lastblocklevelchange == -1) { $blockstate = 2; }        // Bottom margins/padding only
-       else { $blockstate = 0; }
-       // called from after e.g. </table> </div> </div> ...    Outputs block margin/border and padding
-       if (count($this->textbuffer) && $this->textbuffer[count($this->textbuffer)-1]) {
-         if (substr($this->textbuffer[count($this->textbuffer)-1][0],0,3) != "\xbb\xa4\xac") { // not special content
-          if ($this->usingCoreFont) {
-               $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/', '', $this->textbuffer[count($this->textbuffer)-1][0]);
-          }
-          else {
-               $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/u', '', $this->textbuffer[count($this->textbuffer)-1][0]);         }
-         }
-       }
-
-       if (count($this->textbuffer) == 0 && $this->lastblocklevelchange != 0) {
-               //$this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,2,true, $this->blk[$this->blklvl]['direction']);
-               $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,$blockstate,true, $this->blk[$this->blklvl]['direction']);
-               $this->finishFlowingBlock(true);        // true = END of flowing block
-               $this->PaintDivBB('',$blockstate);
-       }
-       else {
-               $this->printbuffer($this->textbuffer,$blockstate); 
-       }
-
-
-       $this->textbuffer=array();
-
-       if ($this->blk[$this->blklvl]['keep_block_together']) {
-               $this->printdivbuffer(); 
-       }
-
-       if ($this->kwt) {
-               $this->kwt_height = $this->y - $this->kwt_y0;
-       }
-
-/*-- CSS-IMAGE-FLOAT --*/
-       $this->printfloatbuffer();
-/*-- END CSS-IMAGE-FLOAT --*/
-
-       if($tag=='PRE') { $this->ispre=false; }
-
-/*-- CSS-FLOAT --*/
-       if ($this->blk[$this->blklvl]['float'] == 'R') {
-               // If width not set, here would need to adjust and output buffer
-               $s = $this->PrintPageBackgrounds();
-               // Writes after the marker so not overwritten later by page background etc.
-               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-               $this->pageBackgrounds = array();
-               $this->Reset();
-               $this->pageoutput[$this->page] = array();
-
-               for($i=($this->blklvl-1); $i >= 0; $i--) {
-                       if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); }
-                       else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; }
-               }
-
-               $this->floatDivs[] = array(
-                       'side'=>'R',
-                       'startpage'=>$this->blk[$this->blklvl]['startpage'] ,
-                       'y0'=>$this->blk[$this->blklvl]['float_start_y'] ,
-                       'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']),
-                       'endpage'=>$this->page ,
-                       'y1'=>$this->y ,
-                       'endpos'=> ($this->page*1000 + $this->y),
-                       'w'=> $this->blk[$this->blklvl]['float_width'],
-                       'blklvl'=>$this->blklvl,
-                       'blockContext' => $this->blk[$this->blklvl-1]['blockContext']
-               );
-
-               $this->y = $this->blk[$this->blklvl]['float_start_y'] ;
-               $this->page = $this->blk[$this->blklvl]['startpage'] ;
-               $this->ResetMargins();
-               $this->pageoutput[$this->page] = array();
-       }
-       if ($this->blk[$this->blklvl]['float'] == 'L') {
-               // If width not set, here would need to adjust and output buffer
-               $s = $this->PrintPageBackgrounds();
-               // Writes after the marker so not overwritten later by page background etc.
-               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-               $this->pageBackgrounds = array();
-               $this->Reset();
-               $this->pageoutput[$this->page] = array();
-
-               for($i=($this->blklvl-1); $i >= 0; $i--) {
-                       if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); }
-                       else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; }
-               }
-
-               $this->floatDivs[] = array(
-                       'side'=>'L',
-                       'startpage'=>$this->blk[$this->blklvl]['startpage'] ,
-                       'y0'=>$this->blk[$this->blklvl]['float_start_y'] ,
-                       'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']),
-                       'endpage'=>$this->page ,
-                       'y1'=>$this->y ,
-                       'endpos'=> ($this->page*1000 + $this->y),
-                       'w'=> $this->blk[$this->blklvl]['float_width'],
-                       'blklvl'=>$this->blklvl,
-                       'blockContext' => $this->blk[$this->blklvl-1]['blockContext']
-               );
-
-               $this->y = $this->blk[$this->blklvl]['float_start_y'] ;
-               $this->page = $this->blk[$this->blklvl]['startpage'] ;
-               $this->ResetMargins();
-               $this->pageoutput[$this->page] = array();
-       }
-/*-- END CSS-FLOAT --*/
-
-       if (isset($this->blk[$this->blklvl]['visibility']) && $this->blk[$this->blklvl]['visibility']!='visible') {
-               $this->SetVisibility('visible');
-       }
-
-       if (isset($this->blk[$this->blklvl]['page_break_after'])) { $page_break_after = $this->blk[$this->blklvl]['page_break_after']; }
-       else { $page_break_after = ''; }
-
-       //Reset values
-       $this->Reset();
-
-       // mPDF 5.6.01  - LAYERS
-       if (isset($this->blk[$this->blklvl]['z-index']) && $this->blk[$this->blklvl]['z-index'] > 0) {
-               $this->EndLayer();
-       }
-
-       if ($this->blklvl > 0) {        // ==0 SHOULDN'T HAPPEN - NOT XHTML 
-          if ($this->blk[$this->blklvl]['tag'] == $tag) {
-               unset($this->blk[$this->blklvl]);
-               $this->blklvl--;
-          }
-          //else { echo $tag; exit; }  // debug - forces error if incorrectly nested html tags
-       }
-
-       $this->lastblocklevelchange = -1 ;
-       // Reset Inline-type properties
-       if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']); }
-
-       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
-
-       if ($page_break_after) {
-               $save_blklvl = $this->blklvl;
-               $save_blk = $this->blk;
-               $save_silp = $this->saveInlineProperties();
-               $save_spanlvl = $this->spanlvl;
-               $save_ilp = $this->InlineProperties;
-               if ($this->blklvl>1) {
-                       // Close any open block tags
-                       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-                       // Output any text left in buffer
-                       if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
-               }
-/*-- COLUMNS --*/
-               $save_cols = false;
-               if ($this->ColActive) {
-                       $save_cols = true;
-                       $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
-                       $this->SetColumns(0);
-               }
-/*-- END COLUMNS --*/
-               if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-               else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-               else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-               if (!$this->restoreBlockPagebreaks) {
-                       $this->blklvl = 0;
-                       $this->lastblocklevelchange = 0;
-                       $this->blk = array();
-                       $this->initialiseBlock($this->blk[0]);
-                       $this->blk[0]['width'] =& $this->pgwidth;
-                       $this->blk[0]['inner_width'] =& $this->pgwidth;
-                       $this->blk[0]['blockContext'] = $this->blockContext;
-                       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
-                       $this->setCSS($properties,'','BODY'); 
-                       $this->blklvl++;
-                       $currblk =& $this->blk[$this->blklvl];
-                       $prevblk =& $this->blk[$this->blklvl-1];
-
-                       $this->initialiseBlock($currblk);
-                       $currblk['tag'] = $tag;
-                       $currblk['attr'] = $attr;
-
-                       $this->Reset();
-                       $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
-               }
-/*-- COLUMNS --*/
-               if ($save_cols) {
-                       // Restore columns
-                       $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
-               }
-/*-- END COLUMNS --*/
-               if ($this->restoreBlockPagebreaks && !$this->tableLevel && !$this->listlvl) {
-                       $this->blk = $save_blk;
-                       // Re-open block tags
-                       $t = $this->blk[0]['tag'];
-                       $a = $this->blk[0]['attr'];
-                       $this->blklvl = 0; 
-                       for ($b=0; $b<=$save_blklvl;$b++) {
-                               $tc = $t;
-                               $ac = $a;
-                               $t = $this->blk[$b+1]['tag'];
-                               $a = $this->blk[$b+1]['attr'];
-                               unset($this->blk[$b+1]);
-                               $this->OpenTag($tc,$ac); 
-                       }
-                       $this->spanlvl = $save_spanlvl;
-                       $this->InlineProperties = $save_ilp;
-                       $this->restoreInlineProperties($save_silp);
-               }
-       }
-
-    }
-
-
-/*-- TABLES --*/
-
-    if($tag=='TH') $this->SetStyle('B',false);
-
-    if(($tag=='TH' or $tag=='TD') && $this->tableLevel) {
-       $this->lastoptionaltag = 'TR';
-       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
-       $this->cssmgr->tbCSSlvl--;
-       if (!$this->tdbegin) { return; }
-       $this->tdbegin = false;
-       // Added for correct calculation of cell column width - otherwise misses the last line if not end </p> etc.
-       if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-               if (!is_array($this->cell[$this->row][$this->col])) { $this->Error("You may have an error in your HTML code e.g. &lt;/td&gt;&lt;/td&gt;"); }
-               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-       }
-       elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-       }
-
-       // Remove last <br> if at end of cell
-       if (isset($this->cell[$this->row][$this->col]['textbuffer'])) { $ntb = count($this->cell[$this->row][$this->col]['textbuffer']); }
-       else { $ntb = 0; }
-       if ($ntb>1 && $this->cell[$this->row][$this->col]['textbuffer'][$ntb-1][0] == "\n") {
-               unset($this->cell[$this->row][$this->col]['textbuffer'][$ntb-1]);
-       }
-
-       if ($this->cacheTables) {
-               $clen = $this->_cacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache']);
-               $this->cell[$this->row][$this->col] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'];
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'] += $clen;
-       }
-
-       if ($this->tablethead) { 
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true;
-               if ($this->tableLevel==1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] = max($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] , ($this->row+1)); }
-       }
-       if ($this->tabletfoot) { 
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true;
-               if ($this->tableLevel==1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['footernrows'] = max($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['footernrows'] , ($this->row+1 - $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] )); }
-       }
-       $this->Reset();
-    }
-
-    if($tag=='TR' && $this->tableLevel) {
-       // If Border set on TR - Update right border
-       if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row])) {
-               if ($this->cacheTables) {
-                       $c = $this->_uncacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], null);
-               }
-               else { $c =& $this->cell[$this->row][$this->col]; }
-               if ($c) {
-                       if ($this->packTableData) {
-                               $cell = $this->_unpackCellBorder($c['borderbin'] );
-                       }
-                       else { $cell = $c; }
-                       $cell['border_details']['R'] = $this->border_details($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row]);
-                       $this->setBorder($cell['border'], _BORDER_RIGHT, $cell['border_details']['R']['s']); 
-                       if ($this->packTableData) {
-                               $c['borderbin'] = $this->_packCellBorder($cell);
-                               unset($c['border']);
-                               unset($c['border_details']);
-                       }
-                       else { $c = $cell; }
-               }
-               if ($this->cacheTables) {
-                       $fh = fopen($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], "r+b"); 
-                       $this->_cacheUpdateBorder($c, $fh, $this->cell[$this->row][$this->col]);
-                       fclose($fh);
-               }
-       }
-       $this->lastoptionaltag = '';
-       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
-       $this->cssmgr->tbCSSlvl--;
-       $this->trow_text_rotate = '';
-       $this->tabletheadjustfinished = false;
-   }
-
-    if($tag=='TBODY') {
-       $this->lastoptionaltag = '';
-       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
-       $this->cssmgr->tbCSSlvl--;
-    }
-
-    if($tag=='THEAD') {
-       $this->lastoptionaltag = '';
-       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
-       $this->cssmgr->tbCSSlvl--;
-       $this->tablethead = 0;
-       $this->tabletheadjustfinished = true;
-       $this->ResetStyles();
-       $this->thead_font_weight = '';
-       $this->thead_font_style = '';
-       $this->thead_font_smCaps = '';
-
-       $this->thead_valign_default = '';
-       $this->thead_textalign_default = '';
-    }
-
-    if($tag=='TFOOT') {
-       $this->lastoptionaltag = '';
-       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
-       $this->cssmgr->tbCSSlvl--;
-       $this->tabletfoot = 0;
-       $this->ResetStyles();
-       $this->tfoot_font_weight = '';
-       $this->tfoot_font_style = '';
-       $this->tfoot_font_smCaps = '';
-
-       $this->tfoot_valign_default = '';
-       $this->tfoot_textalign_default = '';
-    }
-
-    if($tag=='TABLE') { // TABLE-END (
-       if ($this->progressBar) { $this->UpdateProgressBar(1,'','TABLE'); }     // *PROGRESS-BAR*
-       if ($this->progressBar) { $this->UpdateProgressBar(7,0,''); }   // *PROGRESS-BAR*
-       $this->lastoptionaltag = '';
-       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
-       $this->cssmgr->tbCSSlvl--;
-       $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
-       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell;
-       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['wc'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'],array('miw'=>0,'maw'=>0));
-       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['hr'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr'],0);
-
-       // Move table footer <tfoot> row to end of table
-       if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot']) && count($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'])) {
-               $tfrows = array();
-               foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] AS $r=>$val) {
-                       if ($val) { $tfrows[] = $r; }
-               }
-               $temp = array();
-               $temptf = array();
-               foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] AS $k=>$row) {
-                       if (in_array($k,$tfrows)) {
-                               $temptf[] = $row;
-                       }
-                       else {
-                               $temp[] = $row;
-                       }
-               }
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] = array();
-               for($i=count($temp) ; $i<(count($temp)+count($temptf)); $i++) {
-                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$i] = true;
-               }
-               // Update nestedpos row references
-               if (count($this->table[($this->tableLevel+1)])) {
-                 foreach($this->table[($this->tableLevel+1)] AS $nid=>$nested) {
-                       $this->table[($this->tableLevel+1)][$nid]['nestedpos'][0] -= count($temptf);
-                 }
-               } 
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = array_merge($temp, $temptf);
-
-               // Update other arays set on row number
-               // [trbackground-images] [trgradients]
-               $temptrbgi = array();
-               $temptrbgg = array();
-               $temptrbgc = array();
-               $temptrbgc[-1] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][-1];
-               for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) {
-                       if (!in_array($k,$tfrows)) {
-                               $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k];
-                               $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k];
-                               $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k];
-                       }
-               }
-               for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) {
-                       if (in_array($k,$tfrows)) {
-                               $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k];
-                               $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k];
-                               $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k];
-                       }
-               }
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'] = $temptrbgi;
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'] = $temptrbgg;
-               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'] = $temptrbgc ;
-               // Should Update all other arays set on row number, but cell properties have been set so not needed
-               // [bgcolor] [trborder-left] [trborder-right] [trborder-top] [trborder-bottom]
-       }
-
-       if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']=='rtl') {
-               $this->_reverseTableDir($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]);
-       }
-
-       // Fix Borders *********************************************
-       $this->_fixTableBorders($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]);
-
-       if ($this->progressBar) { $this->UpdateProgressBar(7,10,' '); } // *PROGRESS-BAR*
-
-       if ($this->ColActive) { $this->table_rotate = 0; }      // *COLUMNS*
-       if ($this->table_rotate <> 0) {
-               $this->tablebuffer = '';
-               // Max width for rotated table
-               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 1);
-               $this->tbrot_maxh = $this->blk[$this->blklvl]['inner_width'] ;          // Max width for rotated table
-               $this->tbrot_align = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['a'] ;
-       }
-       $this->shrin_k = 1;
-
-       if ($this->shrink_tables_to_fit < 1) { $this->shrink_tables_to_fit = 1; }
-       if (!$this->shrink_this_table_to_fit) { $this->shrink_this_table_to_fit = $this->shrink_tables_to_fit; }
-
-       if ($this->tableLevel>1) {
-               // deal with nested table
-
-               $this->_tableColumnWidth($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]],true);
-
-               $tmiw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['miw'];
-               $tmaw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['maw'];
-               $tl = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['tl'];
-
-               // Go down to lower table level
-               $this->tableLevel--;
-
-               // Reset lower level table
-               $this->base_table_properties = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties'];
-               $this->cell = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'];
-               // mPDF 5.4.10
-               if (isset($this->cell['PARENTCELL'])) { 
-                       if ($this->cell['PARENTCELL']) { $this->restoreInlineProperties($this->cell['PARENTCELL']); }
-                       unset($this->cell['PARENTCELL']);
-               }
-               $this->row = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'];
-               $this->col = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'];
-               $objattr = array();
-               $objattr['type'] = 'nestedtable';
-               $objattr['nestedcontent'] = $this->tbctr[($this->tableLevel+1)];
-               $objattr['table'] = $this->tbctr[$this->tableLevel];
-               $objattr['row'] = $this->row;
-               $objattr['col'] = $this->col;
-               $objattr['level'] = $this->tableLevel;
-               $e = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac";
-               $this->_saveCellTextBuffer($e);
-               $this->cell[$this->row][$this->col]['s'] += $tl ;
-               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-               }
-               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
-                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
-               }
-               $this->cell[$this->row][$this->col]['s'] = 0;// reset
-               if ((isset($this->cell[$this->row][$this->col]['nestedmaw']) && $this->cell[$this->row][$this->col]['nestedmaw'] < $tmaw) || !isset($this->cell[$this->row][$this->col]['nestedmaw'])) { $this->cell[$this->row][$this->col]['nestedmaw'] = $tmaw ; }
-               if ((isset($this->cell[$this->row][$this->col]['nestedmiw']) && $this->cell[$this->row][$this->col]['nestedmiw'] < $tmiw) || !isset($this->cell[$this->row][$this->col]['nestedmiw'])) { $this->cell[$this->row][$this->col]['nestedmiw'] = $tmiw ; }
-               $this->tdbegin = true;
-               $this->nestedtablejustfinished = true;
-               $this->ignorefollowingspaces = true;
-               return;
-       }
-       $this->cMarginL = 0;
-       $this->cMarginR = 0;
-       $this->cMarginT = 0;
-       $this->cMarginB = 0;
-       $this->cellPaddingL = 0;
-       $this->cellPaddingR = 0;
-       $this->cellPaddingT = 0;
-       $this->cellPaddingB = 0;
-
-       if (isset($this->table[1][1]['overflow']) && $this->table[1][1]['overflow']=='visible') {
-               if ($this->kwt || $this->table_rotate || $this->table_keep_together || $this->ColActive) { 
-                       $this->kwt = false;
-                       $this->table_rotate = 0;
-                       $this->table_keep_together = false;
-                       //die("mPDF Warning: You cannot use CSS overflow:visible together with any of these functions: 'Keep-with-table', rotated tables, page-break-inside:avoid, or columns");
-               }
-               $this->_tableColumnWidth($this->table[1][1],true);
-               $this->_tableWidth($this->table[1][1]);
-       }
-       else {
-         if (!$this->kwt_saved) { $this->kwt_height = 0; }
-
-         list($check,$tablemiw) = $this->_tableColumnWidth($this->table[1][1],true);
-         $save_table = $this->table;   
-         if ($this->cacheTables) { $this->_backupCacheFiles(); }
-         $reset_to_minimum_width = false;
-         $added_page = false;
-
-         if ($check > 1) {
-               if ($check > $this->shrink_this_table_to_fit && $this->table_rotate) { 
-                       if ($this->y != $this->tMargin) {
-                               $this->AddPage($this->CurOrientation);
-                               $this->kwt_moved = true; 
-                       }
-                       $added_page = true;
-                       $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                       //$check = $tablemiw/$this->tbrot_maxw;         // undo any shrink
-                       $check = 1;     // undo any shrink
-               }
-               $reset_to_minimum_width = true;
-         }
-
-         if ($reset_to_minimum_width) {
-
-               $this->shrin_k = $check;
-
-               $this->default_font_size /= $this->shrin_k;
-               $this->SetFontSize($this->default_font_size, false );
-
-               $this->shrinkTable($this->table[1][1],$this->shrin_k);
-
-               $this->_tableColumnWidth($this->table[1][1],false);     // repeat
-
-               // Starting at $this->innermostTableLevel
-               // Shrink table values - and redo columnWidth
-               for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
-                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
-                               $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k);
-                               $this->_tableColumnWidth($this->table[$lvl][$nid],false);
-                       }
-               }
-         }
-
-         // Set table cell widths for top level table
-         // Use $shrin_k to resize but don't change again
-         $this->SetLineHeight('',$this->table_lineheight);
-
-         // Top level table
-         $this->_tableWidth($this->table[1][1]);
-
-       }
-
-
-       // Now work through any nested tables setting child table[w'] = parent cell['w']
-       // Now do nested tables _tableWidth
-       for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
-               for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
-                       // HERE set child table width = cell width
-
-                       list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos'];
-
-                       if ($this->cacheTables) {
-                               $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null);
-                       }
-                       else 
-                               $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol];
-
-                       if (isset($c['colspan']) && $c['colspan']> 1) {
-                          $parentwidth = 0;
-                          for($cs=0;$cs<$c['colspan'] ; $cs++) {
-                               $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs]; 
-                          }
-                       }
-                       else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; }
-
-
-                       //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell
-                       if (!$this->simpleTables){
-                        if ($this->packTableData) {
-                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
-                        }
-                        else { 
-                               $br = $c['border_details']['R']['w'];
-                               $bl = $c['border_details']['L']['w'];
-                        }
-                        if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
-                         $parentwidth -= $br + $bl
-                               + $c['padding']['L']
-                               + $c['padding']['R']
-                               + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
-                        }
-                        else {
-                         $parentwidth -= $br/2 + $bl/2
-                               + $c['padding']['L']
-                               + $c['padding']['R'];
-                        }
-                       }
-                       else if ($this->simpleTables){
-                        if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
-                         $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
-                               + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']
-                               + $c['padding']['L']
-                               + $c['padding']['R']
-                               + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
-                        }
-                        else {
-                         $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']/2
-                               + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']/2
-                               + $c['padding']['L']
-                               + $c['padding']['R'];
-                        }
-                       }
-                       if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) {
-                               $this->table[$lvl][$nid]['w'] = $parentwidth;
-                       }
-                       else if ($parentwidth > $this->table[$lvl][$nid]['maw']) {
-                               $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'];
-                       }
-                       else {
-                               $this->table[$lvl][$nid]['w'] = $parentwidth;
-                       }
-                       unset($c);
-                       $this->_tableWidth($this->table[$lvl][$nid]);
-               }
-       }
-
-       // Starting at $this->innermostTableLevel
-       // Cascade back up nested tables: setting heights back up the tree
-       for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) {
-               for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
-                       list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]);                  }
-       }
-       if ($this->progressBar) { $this->UpdateProgressBar(7,20,' '); } // *PROGRESS-BAR*
-       if ($this->table[1][1]['overflow']=='visible') {
-               if ($maxrowheight > $fullpage) { die("mPDF Warning: A Table row is greater than available height. You cannot use CSS overflow:visible"); }
-               if ($maxfirstrowheight > $remainingpage) { $this->AddPage($this->CurOrientation); }
-               $r = 0; $c = 0; $p = 0; $y = 0;
-               while (!$finished) {
-                       list($finished,$r,$c,$p,$y,$y0) = $this->_tableWrite($this->table[1][1],true,$r,$c,$p,$y);
-                       if (!$finished) { 
-                               $this->AddPage($this->CurOrientation); 
-                               // If printed something on first spread, set same y
-                               if ($r==0 && $y0 > -1) { $this->y = $y0; }
-                       }
-               }
-       }
-       else {
-         $recalculate = 1;
-         $forcerecalc = false;
-         // RESIZING ALGORITHM
-         if ($maxrowheight > $fullpage) { 
-               $recalculate = $this->tbsqrt($maxrowheight / $fullpage, 1); 
-               $forcerecalc = true;
-         }
-         else if ($this->table_rotate) {       // NB $remainingpage == $fullpage == the width of the page
-               if ($tableheight > $remainingpage) { 
-                       // If can fit on remainder of page whilst respecting autsize value..
-                       if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) {
-                               $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); 
-                       }
-                       else if (!$added_page) {
-                               if ($this->y != $this->tMargin) {
-                                       $this->AddPage($this->CurOrientation);
-                                       $this->kwt_moved = true; 
-                               }
-                               $added_page = true;
-                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                               // 0.001 to force it to recalculate
-                               $recalculate = (1 / $this->shrin_k) + 0.001;    // undo any shrink
-                       }
-               }
-               else { $recalculate = 1; }
-         }
-         else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) {  
-               if ($tableheight > $fullpage) { 
-                       if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, 1)) <= $this->shrink_this_table_to_fit) {
-                               $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); 
-                       }
-                       else if ($this->tableMinSizePriority) {
-                               $this->table_keep_together = false; 
-                               $recalculate = 1.001; 
-                       }
-                       else {
-                               if ($this->y != $this->tMargin) {       // mPDF 5.1
-                                       $this->AddPage($this->CurOrientation);
-                                       $this->kwt_moved = true; 
-                               }
-                               $added_page = true;
-                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                               $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); 
-                       }
-               }
-               else if ($tableheight > $remainingpage) { 
-                       // If can fit on remainder of page whilst respecting autsize value..
-                       if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) {
-                               $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); 
-                       }
-                       else {
-                               if ($this->y != $this->tMargin) {
-                                       $this->AddPage($this->CurOrientation);
-                                       $this->kwt_moved = true;
-                               } 
-                               $added_page = true;
-                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                               $recalculate = 1.001; 
-                       }
-               }
-               else { $recalculate = 1; }
-         }
-         else { $recalculate = 1; }
-
-         if ($recalculate > $this->shrink_this_table_to_fit && !$forcerecalc) { $recalculate = $this->shrink_this_table_to_fit; } 
-
-         $iteration = 1;
-
-         // RECALCULATE
-         while($recalculate <> 1) {
-               $this->shrin_k1 = $recalculate ;
-               $this->shrin_k *= $recalculate ;
-               $this->default_font_size /= ($this->shrin_k1) ;
-               $this->SetFontSize($this->default_font_size, false );
-               $this->SetLineHeight('',$this->table_lineheight);
-               $this->table = $save_table;
-               if ($this->cacheTables) { $this->_restoreCacheFiles(); }
-               if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[1][1],$this->shrin_k); }
-               $this->_tableColumnWidth($this->table[1][1],false);     // repeat
-
-               // Starting at $this->innermostTableLevel
-               // Shrink table values - and redo columnWidth
-               for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
-                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
-                               if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k); }
-                               $this->_tableColumnWidth($this->table[$lvl][$nid],false);
-                       }
-               }
-               // Set table cell widths for top level table
-
-               // Top level table
-               $this->_tableWidth($this->table[1][1]);
-
-               // Now work through any nested tables setting child table[w'] = parent cell['w']
-               // Now do nested tables _tableWidth
-               for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
-                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
-                               // HERE set child table width = cell width
-
-                               list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos'];
-                               if ($this->cacheTables) {
-                                       $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null);
-                               }
-                               else 
-                                       $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol];
-
-                               if (isset($c['colspan']) && $c['colspan']> 1) {
-                                  $parentwidth = 0;
-                                  for($cs=0;$cs<$c['colspan'] ; $cs++) {
-                                       $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs]; 
-                                  }
-                               }
-                               else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; }
-
-                               //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell
-                               if (!$this->simpleTables){
-                                if ($this->packTableData) {
-                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
-                                }
-                                else { 
-                                       $br = $c['border_details']['R']['w'];
-                                       $bl = $c['border_details']['L']['w'];
-                                }
-                                if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
-                                 $parentwidth -= $br + $bl
-                                       + $c['padding']['L']
-                                       + $c['padding']['R']
-                                       + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
-                                }
-                                else {
-                                 $parentwidth -= $br/2 + $bl/2
-                                       + $c['padding']['L']
-                                       + $c['padding']['R'];
-                                }
-                               }
-                               else if ($this->simpleTables){
-                                if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
-                                 $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
-                                       + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']
-                                       + $c['padding']['L']
-                                       + $c['padding']['R']
-                                       + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
-                                }
-                                else {
-                                 $parentwidth -= ($this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
-                                       + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']) /2
-                                       + $c['padding']['L']
-                                       + $c['padding']['R'];
-                                }
-                               }
-                               if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) {
-                                       $this->table[$lvl][$nid]['w'] = $parentwidth;
-                               }
-                               else if ($parentwidth > $this->table[$lvl][$nid]['maw']) {
-                                       $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'] ;
-                               }
-                               else {
-                                       $this->table[$lvl][$nid]['w'] = $parentwidth;
-                               }
-                               unset($c);
-                               $this->_tableWidth($this->table[$lvl][$nid]);
-                       }
-               }
-
-               // Starting at $this->innermostTableLevel
-               // Cascade back up nested tables: setting heights back up the tree
-               for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) {
-                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
-                               list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]);                  }
-               }
-
-               // RESIZING ALGORITHM
-
-               if ($maxrowheight > $fullpage) { $recalculate = $this->tbsqrt($maxrowheight / $fullpage, $iteration); $iteration++; }
-               else if ($this->table_rotate && $tableheight > $remainingpage && !$added_page) { 
-                       // If can fit on remainder of page whilst respecting autosize value..
-                       if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) {
-                               $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); $iteration++; 
-                       }
-                       else {
-                               if (!$added_page) { 
-                                       $this->AddPage($this->CurOrientation); 
-                                       $added_page = true;
-                                       $this->kwt_moved = true; 
-                                       $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                               }
-                               // 0.001 to force it to recalculate
-                               $recalculate = (1 / $this->shrin_k) + 0.001;    // undo any shrink
-                       }
-               }
-               else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) {
-                       if ($tableheight > $fullpage) { 
-                               if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, $iteration)) <= $this->shrink_this_table_to_fit) {
-                                       $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; 
-                               }
-                               else if ($this->tableMinSizePriority) {
-                                       $this->table_keep_together = false; 
-                                       $recalculate = (1 / $this->shrin_k) + 0.001; 
-                               }
-                               else {
-                                  if (!$added_page && $this->y != $this->tMargin) {
-                                       $this->AddPage($this->CurOrientation);
-                                       $added_page = true;
-                                       $this->kwt_moved = true; 
-                                       $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                                  }
-                                  $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; 
-                               }
-                       }
-                       else if ($tableheight > $remainingpage) { 
-                               // If can fit on remainder of page whilst respecting autosize value..
-                               if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) {
-                                       $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration);  $iteration++; 
-                               }
-                               else {
-                                       if (!$added_page) { 
-                                               $this->AddPage($this->CurOrientation); 
-                                               $added_page = true;
-                                               $this->kwt_moved = true; 
-                                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
-                                       }
-                                
-                                       //$recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; 
-                                       $recalculate = (1 / $this->shrin_k) + 0.001;    // undo any shrink
-                               }
-                       }
-                       else { $recalculate = 1; }
-               }
-               else { $recalculate = 1; }
-         }
-
-
-         if ($maxfirstrowheight > $remainingpage && !$added_page && !$this->table_rotate && !$this->ColActive && !$this->table_keep_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) {
-               $this->AddPage($this->CurOrientation); 
-               $this->kwt_moved = true;
-         }
-
-         // keep-with-table: if page has advanced, print out buffer now, else done in fn. _Tablewrite()
-         if ($this->kwt_saved && $this->kwt_moved) {
-               $this->printkwtbuffer();
-               $this->kwt_moved = false;
-               $this->kwt_saved = false;
-         }
-
-         if ($this->progressBar) { $this->UpdateProgressBar(7,30,' '); }       // *PROGRESS-BAR*
-         // Recursively writes all tables starting at top level
-         $this->_tableWrite($this->table[1][1]);
-
-         if ($this->table_rotate && $this->tablebuffer) {
-               $this->PageBreakTrigger=$this->h-$this->bMargin;
-               $save_tr = $this->table_rotate;
-               $save_y = $this->y;
-               $this->table_rotate = 0;
-               $this->y = $this->tbrot_y0;
-               $h =    $this->tbrot_w;
-               $this->DivLn($h,$this->blklvl,true);
-
-               $this->table_rotate = $save_tr;
-               $this->y = $save_y;
-
-               $this->printtablebuffer();
-         }
-         $this->table_rotate = 0;
-       }
-
-
-       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
-
-       $this->maxPosR = max($this->maxPosR , ($this->x + $this->table[1][1]['w'])); 
-
-       $this->blockjustfinished=true;
-       $this->lastblockbottommargin = $this->table[1][1]['margin']['B'];
-       //Reset values
-
-       if (isset($this->table[1][1]['page_break_after'])) { $page_break_after = $this->table[1][1]['page_break_after']; }
-       else { $page_break_after = ''; }
-
-       // Keep-with-table
-       $this->kwt = false;
-       $this->kwt_y0 = 0;
-       $this->kwt_x0 = 0;
-       $this->kwt_height = 0;
-       $this->kwt_buffer = array();
-       $this->kwt_Links = array();
-       $this->kwt_Annots = array();
-       $this->kwt_moved = false;
-       $this->kwt_saved = false;
-
-       $this->kwt_Reference = array();
-       $this->kwt_BMoutlines = array();
-       $this->kwt_toc = array();
-
-       $this->shrin_k = 1;
-       $this->shrink_this_table_to_fit = 0;
-
-       unset($this->table);
-       $this->table=array(); //array 
-       $this->tableLevel=0;
-       $this->tbctr=array();
-       $this->innermostTableLevel=0;
-       $this->cssmgr->tbCSSlvl = 0;
-       $this->cssmgr->tablecascadeCSS = array();
-
-       unset($this->cell);
-       $this->cell=array(); //array 
-
-       $this->col=-1; //int
-       $this->row=-1; //int
-       $this->Reset();
-
-       $this->cellPaddingL = 0;
-       $this->cellPaddingT = 0;
-       $this->cellPaddingR = 0;
-       $this->cellPaddingB = 0;
-       $this->cMarginL = 0;
-       $this->cMarginT = 0;
-       $this->cMarginR = 0;
-       $this->cMarginB = 0;
-       $this->default_font_size = $this->original_default_font_size;
-       $this->default_font = $this->original_default_font;
-       $this->SetFontSize($this->default_font_size, false);
-       $this->SetFont($this->default_font,'',0,false);
-       $this->SetLineHeight();
-       if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);}
-       if ($this->progressBar) { $this->UpdateProgressBar(7,100,' '); }        // *PROGRESS-BAR*
-
-       if ($page_break_after) {
-               $save_blklvl = $this->blklvl;
-               $save_blk = $this->blk;
-               $save_silp = $this->saveInlineProperties();
-               $save_spanlvl = $this->spanlvl;
-               $save_ilp = $this->InlineProperties;
-               if ($this->blklvl>1) {
-                       // Close any open block tags
-                       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
-                       // Output any text left in buffer
-                       if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
-               }
-/*-- COLUMNS --*/
-               $save_cols = false;
-               if ($this->ColActive) {
-                       $save_cols = true;
-                       $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
-                       $this->SetColumns(0);
-               }
-/*-- END COLUMNS --*/
-               if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-               else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-               else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
-               if (!$this->restoreBlockPagebreaks) {
-                       $this->blklvl = 0;
-                       $this->lastblocklevelchange = 0;
-                       $this->blk = array();
-                       $this->initialiseBlock($this->blk[0]);
-                       $this->blk[0]['width'] =& $this->pgwidth;
-                       $this->blk[0]['inner_width'] =& $this->pgwidth;
-                       $this->blk[0]['blockContext'] = $this->blockContext;
-                       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
-                       $this->setCSS($properties,'','BODY'); 
-               }
-
-/*-- COLUMNS --*/
-               if ($save_cols) {
-                       // Restore columns
-                       $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
-               }
-/*-- END COLUMNS --*/
-               if ($this->restoreBlockPagebreaks) {
-                       $this->blk = $save_blk;
-                       // Re-open block tags
-                       $t = $this->blk[0]['tag'];
-                       $a = $this->blk[0]['attr'];
-                       $this->blklvl = 0; 
-                       for ($b=0; $b<=$save_blklvl;$b++) {
-                               $tc = $t;
-                               $ac = $a;
-                               $t = $this->blk[$b+1]['tag'];
-                               $a = $this->blk[$b+1]['attr'];
-                               unset($this->blk[$b+1]);
-                               $this->OpenTag($tc,$ac); 
-                       }
-                       $this->spanlvl = $save_spanlvl;
-                       $this->InlineProperties = $save_ilp;
-                       $this->restoreInlineProperties($save_silp);
-               }
-       }
-
-    }
-/*-- END TABLES --*/
-
-/*-- LISTS --*/
-       // *********** LISTS ********************
-
-    if($tag=='LI') { 
-       $this->lastoptionaltag = ''; 
-       unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]);
-       $this->cssmgr->listCSSlvl--;
-       if (isset($this->listoccur[$this->listlvl]) && isset($this->InlineProperties['LIST'][$this->listlvl][$this->listoccur[$this->listlvl]])) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$this->listoccur[$this->listlvl]]); } 
-    }
-
-
-    if(($tag=='UL') or ($tag=='OL')) {
-      $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
-       unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]);
-       $this->cssmgr->listCSSlvl--;
-
-       $this->lastoptionaltag = '';
-/*-- TABLES --*/
-       // A simple list for inside a table
-       if($this->tableLevel) {
-               $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
-               unset($this->listlist[$this->listlvl]);
-               $this->listlvl--;
-               if (isset($this->listlist[$this->listlvl]['MAXNUM'])) { $this->listnum = $this->listlist[$this->listlvl]['MAXNUM']; } // restore previous levels
-               if ($this->listlvl == 0) { $this->listjustfinished = true; }
-               return;
-       }
-/*-- END TABLES --*/
-
-       if ($this->listlvl > 1) { // returning one level
-               $this->listjustfinished=true;
-               if (!empty($this->textbuffer)) { 
-                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
-               }
-               else { 
-                       $this->listnum--;
-               }
-
-               $this->textbuffer = array();
-               $occur = $this->listoccur[$this->listlvl];
-               $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
-               $this->listlvl--;
-               $occur = $this->listoccur[$this->listlvl];
-               $this->listnum = $this->listlist[$this->listlvl][$occur]['MAXNUM']; // recover previous level's number
-               $this->listtype = $this->listlist[$this->listlvl][$occur]['TYPE']; // recover previous level's type
-               if ($this->InlineProperties['LIST'][$this->listlvl][$occur]) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$occur]); }
-
-       }
-       else { // We are closing the last OL/UL tag
-               if (!empty($this->textbuffer)) {
-                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
-               }
-               else { 
-                       $this->listnum--;
-               }
-
-               $occur = $this->listoccur[$this->listlvl]; 
-               $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum;
-               $this->textbuffer = array();
-               $this->listlvl--;
-
-               $this->printlistbuffer();
-               unset($this->InlineProperties['LIST']);
-               // SPACING AFTER LIST (Top level only)
-               $this->Ln(0);
-               if ($this->list_margin_bottom) {
-                       $this->DivLn($this->list_margin_bottom,$this->blklvl,true,1);   // collapsible
-               }
-               if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);}
-               $this->listjustfinished = true; 
-               $this->cssmgr->listCSSlvl = 0;
-               $this->cssmgr->listcascadeCSS = array();
-               $this->blockjustfinished=true;
-               $this->lastblockbottommargin = $this->list_margin_bottom;
-       }
-    }
-/*-- END LISTS --*/
-
-
-}
-
-
-/*-- TABLES --*/
-// This function determines the shrink factor when resizing tables
-// val is the table_height / page_height_available
-// returns a scaling factor used as $shrin_k to resize the table
-// Overcompensating will be quicker but may unnecessarily shrink table too much
-// Undercompensating means it will reiterate more times (taking more processing time)
-function tbsqrt($val, $iteration=3) {
-       $k = 4; // Alters number of iterations until it returns $val itself - Must be > 2
-       // Probably best guess and most accurate
-       if ($iteration==1) return sqrt($val);
-       // Faster than using sqrt (because it won't undercompensate), and gives reasonable results
-       //return 1+(($val-1)/2);
-       $x = 2-(($iteration-2)/($k-2));
-       if ($x == 0) { $ret = $val+0.00001; }
-       else if ($x < 0) { $ret = 1 + ( pow(2, ($iteration-2-$k))/1000   ); }
-       else { $ret = 1+(($val-1)/$x); }
-       return $ret;
-}
-/*-- END TABLES --*/
-
-
-/*-- LISTS --*/
-function printlistbuffer() {
-    //Save x coordinate
-    $x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
-    $this->cMarginL = 0;
-    $this->cMarginR = 0;
-    $currIndentLvl = -1;
-    $lastIndent = array();
-    $bak_page = $this->page;
-    $indent = 0;  
-    foreach($this->listitem as $item)
-    {
-       // COLS
-       $oldcolumn = $this->CurrCol;
-
-       $this->bulletarray = array();
-       //Get list's buffered data
-       $this->listlvl = $lvl = $item[0];
-       $num = $item[1];
-       $this->textbuffer = $item[2];
-       $occur = $item[3];
-       if ($item[4]) { $type = $item[4]; }     // listitemtype
-       else { $type = $this->listlist[$lvl][$occur]['TYPE']; }
-       $maxnum = $this->listlist[$lvl][$occur]['MAXNUM'];
-       $this->restoreInlineProperties($this->InlineProperties['LIST'][$lvl][$occur]);
-       $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); // force to write
-       $clh = $this->FontSize;
-
-       $this->SetLineHeight($this->FontSizePt,$this->list_lineheight[$lvl][$occur]);
-       $this->listOcc = $occur; 
-       $this->listnum = $num; 
-
-       if (isset($this->list_align[$this->listlvl][$occur])) { $this->divalign = $this->list_align[$this->listlvl][$occur]; }
-       else { 
-               if (isset($this->blk[$this->blklvl]['direction']) && $this->blk[$this->blklvl]['direction']=='rtl') { $this->divalign = 'R'; }
-               else { $this->divalign = 'L'; }
-       }
-
-       // Set the bullet fontsize
-       $bullfs = $this->InlineProperties['LISTITEM'][$lvl][$occur][$num]['size'];
-
-       $space_width = $this->GetCharWidth(' ',false) * 1.5;
-
-       //Set default width & height values
-       $this->divwidth = $this->blk[$this->blklvl]['inner_width'];
-       $this->divheight = $this->lineheight;
-       $typefont = $this->FontFamily;
-       if (preg_match('/U\+([a-fA-F0-9]+)/i',$type,$m)) {
-               if ($this->_charDefined($this->CurrentFont['cw'],hexdec($m[1]))) { $list_item_marker = codeHex2utf($m[1]); }
-               else { $list_item_marker = '-'; }
-               $blt_width = $this->GetStringWidth($list_item_marker);
-               $typefont = '';
-               if (preg_match('/rgb\(.*?\)/',$type,$m)) {
-                       $list_item_color = $this->ConvertColor($m[0]); 
-               }
-       }
-       else {
-               $list_item_color = false; 
-
-         switch($type) //Format type
-         {
-          case '1':
-                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; }
-                 else { $list_item_marker = $num . $this->list_number_suffix; }
-               $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix);
-              break;
-          case 'none':
-                 $list_item_marker = '';
-               $blt_width = 0;
-             break;
-          case 'A':
-                 $anum = $this->dec2alpha($num,true);
-                 $maxnum = $this->dec2alpha($maxnum,true);
-                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
-                 else { $list_item_marker = $anum . $this->list_number_suffix; }
-               $blt_width = $this->GetStringWidth(str_repeat('W',strlen($maxnum)).$this->list_number_suffix);
-             break;
-          case 'a':
-              $anum = $this->dec2alpha($num,false);
-                 $maxnum = $this->dec2alpha($maxnum,false);
-                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
-                 else { $list_item_marker = $anum . $this->list_number_suffix; }
-                 $blt_width = $this->GetStringWidth(str_repeat('m',strlen($maxnum)).$this->list_number_suffix);
-             break;
-          case 'I':
-              $anum = $this->dec2roman($num,true);
-                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
-                 else { $list_item_marker = $anum . $this->list_number_suffix; }
-                 
-                 if ($maxnum>87) { $bbit = 87; }
-                 else if ($maxnum>86) { $bbit = 86; }
-                 else if ($maxnum>37) { $bbit = 38; }
-                 else if ($maxnum>36) { $bbit = 37; }
-                 else if ($maxnum>27) { $bbit = 28; }
-                 else if ($maxnum>26) { $bbit = 27; }
-                 else if ($maxnum>17) { $bbit = 18; }
-                 else if ($maxnum>16) { $bbit = 17; }
-                 else if ($maxnum>7) { $bbit = 8; }
-                 else if ($maxnum>6) { $bbit = 7; }
-                 else if ($maxnum>3) { $bbit = 4; }
-                 else { $bbit = $maxnum; }
-              $maxlnum = $this->dec2roman($bbit,true);
-               $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix);
-              break;
-          case 'i':
-              $anum = $this->dec2roman($num,false);
-                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
-                 else { $list_item_marker = $anum . $this->list_number_suffix; }
-                 
-                 if ($maxnum>87) { $bbit = 87; }
-                 else if ($maxnum>86) { $bbit = 86; }
-                 else if ($maxnum>37) { $bbit = 38; }
-                 else if ($maxnum>36) { $bbit = 37; }
-                 else if ($maxnum>27) { $bbit = 28; }
-                 else if ($maxnum>26) { $bbit = 27; }
-                 else if ($maxnum>17) { $bbit = 18; }
-                 else if ($maxnum>16) { $bbit = 17; }
-                 else if ($maxnum>7) { $bbit = 8; }
-                 else if ($maxnum>6) { $bbit = 7; }
-                 else if ($maxnum>3) { $bbit = 4; }
-                 else { $bbit = $maxnum; }
-              $maxlnum = $this->dec2roman($bbit,false);
-                 
-               $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix);
-              break;
-          case 'disc':
-                 if ($this->PDFA || $this->PDFX) {
-                       if ($this->_charDefined($this->CurrentFont['cw'],8226)) { $list_item_marker = "\xe2\x80\xa2"; }         // &#8226; 
-                       else { $list_item_marker = '-'; }
-                       $blt_width = $this->GetCharWidth($list_item_marker);
-                       break;
-                 }
-              $list_item_marker = chr(108); // bullet disc in Zapfdingbats  'l'
-                 $typefont = 'czapfdingbats';
-                 $blt_width = (0.791 * $this->FontSize/2.5); 
-              break;
-          case 'circle':
-                 if ($this->PDFA || $this->PDFX) {
-                       if ($this->_charDefined($this->CurrentFont['cw'],9900)) { $list_item_marker = "\xe2\x9a\xac"; } // &#9900; 
-                       else { $list_item_marker = '-'; }
-                       $blt_width = $this->GetCharWidth($list_item_marker);
-                       break;
-                 }
-              $list_item_marker = chr(109); // circle in Zapfdingbats   'm'
-                 $typefont = 'czapfdingbats';
-                 $blt_width = (0.873 * $this->FontSize/2.5); 
-              break;
-          case 'square':
-                 if ($this->PDFA || $this->PDFX) {
-                       if ($this->_charDefined($this->CurrentFont['cw'],9642)) { $list_item_marker = "\xe2\x96\xaa"; } // &#9642; 
-                       else { $list_item_marker = '-'; }
-                       $blt_width = $this->GetCharWidth($list_item_marker);
-                       break;
-                 }
-              $list_item_marker = chr(110); //black square in Zapfdingbats font   'n'
-                 $typefont = 'czapfdingbats';
-                 $blt_width = (0.761 * $this->FontSize/2.5); 
-              break;
-
-/*  CSS3 list-styles numeric + I added tamil
-arabic-indic | bengali | cambodian | devanagari | gujarati | gurmukhi | kannada | khmer | lao | malayalam | mongolian | myanmar | oriya | persian | telugu | tibetan | thai | urdu 
-*/
-          case 'arabic-indic':
-                 $cp = 0x0660;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $this->list_number_suffix . $rnum;        // RTL
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'persian':
-          case 'urdu':
-                 $cp = 0x06F0;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $this->list_number_suffix . $rnum;        // RTL
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'bengali':
-                 $cp = 0x09E6;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'devanagari':
-                 $cp = 0x0966;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'gujarati':
-                 $cp = 0x0AE6;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'gurmukhi':
-                 $cp = 0x0A66;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'kannada':
-                 $cp = 0x0CE6;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'malayalam':
-                 $cp = 0x0D66;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'oriya':
-                 $cp = 0x0B66;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'telugu':
-                 $cp = 0x0C66;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'tamil':
-                 $cp = 0x0BE6;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(9, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'thai':
-                 $cp = 0x0E50;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(5, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'khmer':
-          case 'cambodian':
-                 $cp = 0x17E0;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-          case 'lao':
-                 $cp = 0x0ED0;
-                 $rnum = $this->dec2other($num, $cp);
-                 $list_item_marker = $rnum . $this->list_number_suffix; 
-               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix);
-                 break;
-           default:
-                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; }
-                 else { $list_item_marker = $num . $this->list_number_suffix; }
-               $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix);
-              break;
-         }
-       }
-
-       if (isset($item[5]) && $item[5]) { $list_item_marker = ''; }
-
-       if ($currIndentLvl < $lvl) {
-               if ($lvl > 1 || $this->list_indent_first_level) { 
-                       $indent += $this->list_indent[$lvl][$occur]; 
-                       $lastIndent[$lvl] = $this->list_indent[$lvl][$occur];
-               }
-       }
-       else if ($currIndentLvl > $lvl) {
-           while ($currIndentLvl > $lvl) {
-               $indent -= $lastIndent[$currIndentLvl];
-               $currIndentLvl--;
-           }
-       }
-       $currIndentLvl = $lvl;
-
-
-/*-- RTL --*/
-
-       if ($this->listDir == 'rtl') { 
-         // list_align_style  Determines alignment of numbers in numbered lists
-         if ($this->list_align_style == 'L') { $lalign = 'R'; }
-         else { $lalign = 'L';  }
-        $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ;
-        $xb = $this->blk[$this->blklvl]['inner_width'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left'] - $indent - $blt_width; //Bullet position (relative)
-        //Output bullet
-         $this->bulletarray = array('w'=>$blt_width,'h'=>$clh,'txt'=>$list_item_marker,'x'=>$xb,'align'=>$lalign,'font'=>$typefont,'level'=>$lvl, 'occur'=>$occur, 'num'=>$num, 'fontsize'=>$bullfs, 'col'=>$list_item_color );
-         $this->x = $x;
-       }
-       else {
-/*-- END RTL --*/
-         
-         if ($this->list_align_style == 'L') { $lalign = 'L'; }
-         else { $lalign = 'R';  }
-        $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ;
-         $xb =  $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] - $blt_width - $space_width; 
-        //Output bullet
-         $this->bulletarray = array('w'=>$blt_width,'h'=>$clh,'txt'=>$list_item_marker,'x'=>$xb,'align'=>$lalign,'font'=>$typefont,'level'=>$lvl, 'occur'=>$occur, 'num'=>$num, 'fontsize'=>$bullfs, 'col'=>$list_item_color );
-         $this->x = $x + $indent + $blt_width + $space_width;
-       }       // *RTL*
-
-      //Print content
-       $this->printbuffer($this->textbuffer,'',false,true);
-      $this->textbuffer=array();
-
-       // Added to correct for OddEven Margins
-       if  ($this->page != $bak_page) {
-               if (($this->page-$bak_page) % 2 == 1) {
-                       $x += $this->MarginCorrection;
-               }
-               $bak_page = $this->page;
-       }
-/*-- COLUMNS --*/
-       // OR COLUMN CHANGE
-       if ($this->CurrCol != $oldcolumn) {
-               if ($this->directionality == 'rtl') {   // *RTL*
-                       $x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);  // *RTL*
-               }       // *RTL*
-               else {  // *RTL*
-                       $x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
-               }       // *RTL*
-               $oldcolumn = $this->CurrCol;
-       }
-/*-- END COLUMNS --*/
-
-    }
-
-    //Reset all used values
-    $this->listoccur = array();
-    $this->listitem = array();
-    $this->listlist = array();
-    $this->listlvl = 0;
-    $this->listnum = 0;
-    $this->listtype = '';
-    $this->textbuffer = array();
-    $this->divwidth = 0;
-    $this->divheight = 0;
-    $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
-}
-/*-- END LISTS --*/
-
-function _saveTextBuffer($t, $link = '', $intlink = '') {
-//     $this->textbuffer[] = array($t,$link,$this->currentfontstyle,$this->colorarray,$this->currentfontfamily,$this->SUP,$this->SUB,$intlink,$this->strike,$this->textparam,$this->spanbgcolorarray,$this->currentfontsize,$this->ReqFontStyle,$this->kerning,$this->lSpacingCSS,$this->wSpacingCSS,$this->spanborddet, $this->textshadow); 
-       // mPDF 5.6.14
-       $arr = array();
-       $arr[0] = $t;
-       if (isset($link) && $link) $arr[1] = $link;
-       $arr[2] = $this->currentfontstyle;
-       if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray;
-       $arr[4] = $this->currentfontfamily;
-       if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP;
-       if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB;
-       if (isset($intlink) && $intlink) $arr[7] = $intlink;
-       if (isset($this->strike) && $this->strike) $arr[8] = $this->strike;
-       if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam;
-       if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray;
-       $arr[11] = $this->currentfontsize;
-       if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle;
-       if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning;
-       if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS;
-       if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS;
-       if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet;
-       if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow;
-       $this->textbuffer[] = $arr;
-}
-
-function _saveCellTextBuffer($t, $link = '', $intlink = '') {
-//      $this->cell[$this->row][$this->col]['textbuffer'][] = array($t,$link,$this->currentfontstyle,$this->colorarray,$this->currentfontfamily,$this->SUP,$this->SUB,$intlink,$this->strike,$this->textparam,$this->spanbgcolorarray,$this->currentfontsize,$this->ReqFontStyle,$this->kerning,$this->lSpacingCSS,$this->wSpacingCSS,$this->spanborddet, $this->textshadow);
-       // mPDF 5.6.14
-       $arr = array();
-       $arr[0] = $t;
-       if (isset($link) && $link) $arr[1] = $link;
-       $arr[2] = $this->currentfontstyle;
-       if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray;
-       $arr[4] = $this->currentfontfamily;
-       if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP;
-       if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB;
-       if (isset($intlink) && $intlink) $arr[7] = $intlink;
-       if (isset($this->strike) && $this->strike) $arr[8] = $this->strike;
-       if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam;
-       if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray;
-       $arr[11] = $this->currentfontsize;
-       if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle;
-       if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning;
-       if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS;
-       if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS;
-       if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet;
-       if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow;
-       $this->cell[$this->row][$this->col]['textbuffer'][] = $arr;
-}
-
-
-function printbuffer($arrayaux,$blockstate=0,$is_table=false,$is_list=false)
-{
-// $blockstate = 0;    // NO margins/padding
-// $blockstate = 1;    // Top margins/padding only
-// $blockstate = 2;    // Bottom margins/padding only
-// $blockstate = 3;    // Top & bottom margins/padding
-       $this->spanbgcolorarray = '';
-       $this->spanbgcolor = false;
-       $this->spanborder = false;
-       $this->spanborddet = array();
-       $paint_ht_corr = 0;
-
-/*-- CSS-FLOAT --*/
-       if (count($this->floatDivs)) {
-               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
-               if (($this->blk[$this->blklvl]['inner_width']-$l_width-$r_width) < (2*$this->GetCharWidth('W',false))) {
-                       // Too narrow to fit - try to move down past L or R float
-                       if ($l_max < $r_max && ($this->blk[$this->blklvl]['inner_width']-$r_width) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('LEFT', $this->blklvl); 
-                       }
-                       else if ($r_max < $l_max && ($this->blk[$this->blklvl]['inner_width']-$l_width) > (2*$this->GetCharWidth('W',false))) {
-                               $this->ClearFloats('RIGHT', $this->blklvl); 
-                       }
-                       else { $this->ClearFloats('BOTH', $this->blklvl); }
-               }
-       }
-/*-- END CSS-FLOAT --*/
-       $bak_y = $this->y;
-       $bak_x = $this->x;
-       $align = '';
-       if (!$is_table && !$is_list) {
-               if (isset($this->blk[$this->blklvl]['align']) && $this->blk[$this->blklvl]['align']) { $align = $this->blk[$this->blklvl]['align']; }
-               // Block-align is set by e.g. <.. align="center"> Takes priority for this block but not inherited
-               if (isset($this->blk[$this->blklvl]['block-align']) && $this->blk[$this->blklvl]['block-align']) { $align = $this->blk[$this->blklvl]['block-align']; }
-               if (isset($this->blk[$this->blklvl]['direction'])) $blockdir = $this->blk[$this->blklvl]['direction'];
-               else $blockdir = "";
-               $this->divwidth = $this->blk[$this->blklvl]['width'];
-       }
-       else {
-               $align = $this->divalign;
-               if ($is_table) { $blockdir = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']; }
-               else { $blockdir = $this->listDir; }
-       }
-       $oldpage = $this->page;
-
-       // ADDED for Out of Block now done as Flowing Block
-       if ($this->divwidth == 0) { 
-               $this->divwidth = $this->pgwidth; 
-       }
-
-       if (!$is_table && !$is_list) { $this->SetLineHeight($this->FontSizePt,$this->blk[$this->blklvl]['line_height']); }
-       $this->divheight = $this->lineheight;
-       $old_height = $this->divheight;
-
-    // As a failsafe - if font has been set but not output to page
-    $this->SetFont($this->default_font,'',$this->default_font_size,true,true); // force output to page
-
-    $array_size = count($arrayaux);
-    $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,true,$blockdir);
-
-       // Added - Otherwise <div><div><p> did not output top margins/padding for 1st/2nd div
-    if ($array_size == 0) { $this->finishFlowingBlock(true); } // true = END of flowing block
-
-    for($i=0;$i < $array_size; $i++)
-    {
-       // COLS
-       $oldcolumn = $this->CurrCol;
-
-       $vetor = $arrayaux[$i];
-       if ($i == 0 and $vetor[0] != "\n" and !$this->ispre) {
-               $vetor[0] = ltrim($vetor[0]);
-       }
-
-       // FIXED TO ALLOW IT TO SHOW '0' 
-       if (empty($vetor[0]) && !($vetor[0]==='0') && empty($vetor[7])) { //Ignore empty text and not carrying an internal link
-               //Check if it is the last element. If so then finish printing the block
-               if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block
-               continue;
-       }
-
-
-       //Activating buffer properties
-       if(isset($vetor[11]) and $vetor[11] != '') {     // Font Size
-               if ($is_table && $this->shrin_k) {
-                       $this->SetFontSize($vetor[11]/$this->shrin_k,false); 
-               }
-               else {
-                       $this->SetFontSize($vetor[11],false); 
-               }
-       }
-
-       if(isset($vetor[17]) && !empty($vetor[17])) { //TextShadow
-               $this->textshadow = $vetor[17];
-       }
-       if(isset($vetor[16]) && !empty($vetor[16])) { //Border
-               $this->spanborddet = $vetor[16];
-               $this->spanborder = true;
-       }
-
-       if(isset($vetor[15])) {          // Word spacing
-               $this->wSpacingCSS = $vetor[15];
-               if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
-                       $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
-               }
-       }
-       if(isset($vetor[14])) {          // Letter spacing
-               $this->lSpacingCSS = $vetor[14]; 
-               if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
-                       $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); 
-               }
-       }
-       if(isset($vetor[13])) {          // Font Kerning
-               $this->kerning = $vetor[13]; 
-       }
-
-
-       if(isset($vetor[10]) and !empty($vetor[10])) //Background color
-       {
-               $this->spanbgcolorarray = $vetor[10];
-               $this->spanbgcolor = true;
-       }
-       if(isset($vetor[9]) and !empty($vetor[9])) // Text parameters - Outline + hyphens
-       {
-               $this->textparam = $vetor[9] ;                  // mPDF 5.6.14
-               $this->SetTextOutline($this->textparam);                // mPDF 5.6.07
-       }
-       if(isset($vetor[8]) and $vetor[8] === true) // strike-through the text
-       {
-           $this->strike = true;
-       }
-       if(isset($vetor[7]) and $vetor[7] != '') // internal target: <a name="anyvalue">
-       {
-         $ily = $this->y; 
-         if ($this->keep_block_together) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); }
-         else if ($this->table_rotate) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); }
-         else if ($this->kwt) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); }
-         else if ($this->ColActive) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); }
-         else
-               $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page );
-         if (empty($vetor[0])) { //Ignore empty text
-               //Check if it is the last element. If so then finish printing the block
-               if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block
-               continue;
-         }
-       }
-       if(isset($vetor[6]) and $vetor[6] === true) // Subscript 
-       {
-               $this->SUB = true;
-       }
-       if(isset($vetor[5]) and $vetor[5] === true) // Superscript
-       {
-               $this->SUP = true;
-       }
-       if(isset($vetor[4]) and $vetor[4] != '') {  // Font Family
-               $font = $this->SetFont($vetor[4],$this->FontStyle,0,false); 
-       }
-       if (!empty($vetor[3])) //Font Color
-       {
-               $cor = $vetor[3];
-               $this->SetTColor($cor); 
-       }
-       if(isset($vetor[2]) and $vetor[2] != '') //Bold,Italic,Underline styles
-       {
-               $this->SetStyles($vetor[2]);
-       }
-
-       if(isset($vetor[12]) and $vetor[12] != '') { //Requested Bold,Italic,Underline
-               $this->ReqFontStyle = $vetor[12];
-       }
-       if(isset($vetor[1]) and $vetor[1] != '') //LINK
-       {
-         if (strpos($vetor[1],".") === false && strpos($vetor[1],"@") !== 0) //assuming every external link has a dot indicating extension (e.g: .html .txt .zip www.somewhere.com etc.) 
-         {
-           //Repeated reference to same anchor?
-           while(array_key_exists($vetor[1],$this->internallink)) $vetor[1]="#".$vetor[1];
-           $this->internallink[$vetor[1]] = $this->AddLink();
-           $vetor[1] = $this->internallink[$vetor[1]];
-         }
-         $this->HREF = $vetor[1];                                      // HREF link style set here ******
-       }
-
-       // SPECIAL CONTENT - IMAGES & FORM OBJECTS
-       //Print-out special content
-
-       if (substr($vetor[0],0,3) == "\xbb\xa4\xac") { //identifier has been identified!
-         
-         $objattr = $this->_getObjAttr($vetor[0]);
-
-/*-- TABLES --*/
-         if ($objattr['type'] == 'nestedtable') {
-               if ($objattr['nestedcontent']) {
-                       $level = $objattr['level'];
-                       $table = &$this->table[$level][$objattr['table']];
-                       if ($this->cacheTables) { 
-                               $fh = fopen($table['cache'], "r+b");
-                               $cell = $this->_uncacheCell($table['cells'][$objattr['row']][$objattr['col']], '', $fh);
-                       }
-                       else {
-                               $fh = null;
-                               $cell = &$table['cells'][$objattr['row']][$objattr['col']];
-                       }
-                       $this->finishFlowingBlock(false,'nestedtable');
-                       $save_dw = $this->divwidth ;
-                       $save_buffer = $this->cellBorderBuffer;
-                       $this->cellBorderBuffer = array();
-                       $ncx = $this->x;
-                       list($dummyx,$w) = $this->_tableGetWidth($table, $objattr['row'], $objattr['col'], $fh);
-                       $ntw = $this->table[($level+1)][$objattr['nestedcontent']]['w'];        // nested table width
-                       if (!$this->simpleTables){
-                               if ($this->packTableData) {
-                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cell['borderbin']);
-                               }
-                               else { 
-                                       $br = $cell['border_details']['R']['w'];
-                                       $bl = $cell['border_details']['L']['w'];
-                               }
-                               if ($table['borders_separate']) { 
-                                       $innerw = $w - $bl - $br - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H'];
-                               }
-                               else {
-                                       $innerw = $w - $bl/2 - $br/2 - $cell['padding']['L'] - $cell['padding']['R'];
-                               }
-                       }
-                       else if ($this->simpleTables){
-                               if ($table['borders_separate']) { 
-                                       $innerw = $w - $table['simple']['border_details']['L']['w'] - $table['simple']['border_details']['R']['w'] - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H'];
-                               }
-                               else {
-                                       $innerw = $w - $table['simple']['border_details']['L']['w']/2 - $table['simple']['border_details']['R']['w']/2 - $cell['padding']['L'] - $cell['padding']['R'];
-                               }
-                       }
-                       if ($cell['a']=='C' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='C') { 
-                               $ncx += ($innerw-$ntw)/2; 
-                       }
-                       elseif ($cell['a']=='R' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='R') {
-                               $ncx += $innerw- $ntw; 
-                       } 
-                       $this->x = $ncx ;
-                       if ($this->cacheTables) { fclose($fh); }
-
-                       $this->_tableWrite($this->table[($level+1)][$objattr['nestedcontent']]);
-                       $this->cellBorderBuffer = $save_buffer;
-                       $this->x = $bak_x ;
-                       $this->divwidth  = $save_dw;
-                       $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
-               }
-         }
-         else {
-/*-- END TABLES --*/
-               if ($is_table) {        // *TABLES*
-                       $maxWidth = $this->divwidth;    // *TABLES*
-               }       // *TABLES*
-               else {  // *TABLES*
-                       $maxWidth = $this->divwidth - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w']); 
-               }       // *TABLES*
-
-/*-- CSS-IMAGE-FLOAT --*/
-               // If float (already) exists at this level
-               if (isset($this->floatmargins['R']) && $this->y <= $this->floatmargins['R']['y1'] && $this->y >= $this->floatmargins['R']['y0']) { $maxWidth -= $this->floatmargins['R']['w']; }
-               if (isset($this->floatmargins['L']) && $this->y <= $this->floatmargins['L']['y1'] && $this->y >= $this->floatmargins['L']['y0']) { $maxWidth -= $this->floatmargins['L']['w']; }
-/*-- END CSS-IMAGE-FLOAT --*/
-
-               list($skipln) = $this->inlineObject($objattr['type'], '', $this->y, $objattr,$this->lMargin, ($this->flowingBlockAttr['contentWidth']/_MPDFK), $maxWidth, $this->flowingBlockAttr['height'], false, $is_table);
-               //  1 -> New line needed because of width
-               // -1 -> Will fit width on line but NEW PAGE REQUIRED because of height
-               // -2 -> Will not fit on line therefore needs new line but thus NEW PAGE REQUIRED
-               $iby = $this->y;
-               $oldpage = $this->page;
-               $oldcol = $this->CurrCol;
-               if (($skipln == 1 || $skipln == -2) && !isset($objattr['float'])) {
-                       $this->finishFlowingBlock(false,$objattr['type']);
-                       $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
-               }
-               $thispage = $this->page;
-               if ($this->CurrCol!=$oldcol) { $changedcol = true; } 
-               else { $changedcol=false; }
-
-               // the previous lines can already have triggered page break or column change
-               if (!$changedcol && $skipln <0 && $this->AcceptPageBreak() && $thispage==$oldpage) {
-
-                       $this->AddPage($this->CurOrientation); 
-
-                       // Added to correct Images already set on line before page advanced
-                       // i.e. if second inline image on line is higher than first and forces new page
-                       if (count($this->objectbuffer)) {
-                               $yadj = $iby - $this->y;
-                               foreach($this->objectbuffer AS $ib=>$val) {
-                                       if ($this->objectbuffer[$ib]['OUTER-Y'] ) $this->objectbuffer[$ib]['OUTER-Y'] -= $yadj;
-                                       if ($this->objectbuffer[$ib]['BORDER-Y']) $this->objectbuffer[$ib]['BORDER-Y'] -= $yadj;
-                                       if ($this->objectbuffer[$ib]['INNER-Y']) $this->objectbuffer[$ib]['INNER-Y'] -= $yadj;
-                               }
-                       }
-               }
-
-               // Added to correct for OddEven Margins
-               if  ($this->page != $oldpage) {
-                       if (($this->page-$oldpage) % 2 == 1) { 
-                               $bak_x += $this->MarginCorrection;
-                       }
-                       $oldpage = $this->page;
-                               $y = $this->tMargin - $paint_ht_corr ;
-                               $this->oldy = $this->tMargin - $paint_ht_corr ;
-                               $old_height = 0;
-               }
-               $this->x = $bak_x;
-/*-- COLUMNS --*/
-               // COLS
-               // OR COLUMN CHANGE
-               if ($this->CurrCol != $oldcolumn) {
-                       if ($this->directionality == 'rtl') {   // *RTL*
-                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
-                       }       // *RTL*
-                       else {  // *RTL*
-                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
-                       }       // *RTL*
-                       $this->x = $bak_x;
-                       $oldcolumn = $this->CurrCol;
-                       $y = $this->y0 - $paint_ht_corr ;
-                       $this->oldy = $this->y0 - $paint_ht_corr ;
-                       $old_height = 0;
-               }
-/*-- END COLUMNS --*/
-
-/*-- CSS-IMAGE-FLOAT --*/
-               if ($objattr['type'] == 'image' && isset($objattr['float'])) { 
-                 $fy = $this->y;
-
-                 // DIV TOP MARGIN/BORDER/PADDING
-                 if ($this->flowingBlockAttr['newblock'] && ($this->flowingBlockAttr['blockstate']==1 || $this->flowingBlockAttr['blockstate']==3) && $this->flowingBlockAttr['lineCount']== 0) { 
-                       $fy += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
-                 }
-
-                 if ($objattr['float']=='R') {
-                       $fx = $this->w - $this->rMargin - $objattr['width'] - ($this->blk[$this->blklvl]['outer_right_margin'] + $this->blk[$this->blklvl]['border_right']['w'] + $this->blk[$this->blklvl]['padding_right']);
-
-
-                 }
-                 else if ($objattr['float']=='L') {
-                       $fx = $this->lMargin + ($this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']);
-                 }
-                 $w = $objattr['width'];
-                 $h = abs($objattr['height']); 
-
-                 $widthLeft = $maxWidth - ($this->flowingBlockAttr['contentWidth']/_MPDFK);
-                 $maxHeight = $this->h - ($this->tMargin + $this->margin_header + $this->bMargin + 10) ;
-                 // For Images
-                 $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right']);
-                 $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom']);
-
-                 if ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg') {
-                       $file = $objattr['file'];
-                       $info=$this->formobjects[$file];
-                 }
-                 else {
-                       $file = $objattr['file'];
-                       $info=$this->images[$file];
-                 }
-                 $img_w = $w - $extraWidth ;
-                 $img_h = $h - $extraHeight ;
-                 if ($objattr['border_left']['w']) {
-                       $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w'] + $objattr['border_right']['w'])/2) ;
-                       $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w'] + $objattr['border_bottom']['w'])/2) ;
-                       $objattr['BORDER-X'] = $fx + $objattr['margin_left'] + (($objattr['border_left']['w'])/2) ;
-                       $objattr['BORDER-Y'] = $fy + $objattr['margin_top'] + (($objattr['border_top']['w'])/2) ;
-                 }
-                 $objattr['INNER-WIDTH'] = $img_w;
-                 $objattr['INNER-HEIGHT'] = $img_h;
-                 $objattr['INNER-X'] = $fx + $objattr['margin_left'] + ($objattr['border_left']['w']);
-                 $objattr['INNER-Y'] = $fy + $objattr['margin_top'] + ($objattr['border_top']['w']) ;
-                 $objattr['ID'] = $info['i'];
-                 $objattr['OUTER-WIDTH'] = $w;
-                 $objattr['OUTER-HEIGHT'] = $h;
-                 $objattr['OUTER-X'] = $fx;
-                 $objattr['OUTER-Y'] = $fy;
-                 if ($objattr['float']=='R') {
-                       // If R float already exists at this level
-                       $this->floatmargins['R']['skipline'] = false;  
-                       if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) {
-                               $this->WriteFlowingBlock($vetor[0]); 
-                       }
-                       // If L float already exists at this level
-                       else if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) {
-                               // Final check distance between floats is not now too narrow to fit text
-                               $mw = 2*$this->GetCharWidth('W',false);
-                               if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['L']['w']) < $mw) {
-                                       $this->WriteFlowingBlock($vetor[0]); 
-                               }
-                               else {
-                                       $this->floatmargins['R']['x'] = $fx;
-                                       $this->floatmargins['R']['w'] = $w;
-                                       $this->floatmargins['R']['y0'] = $fy;
-                                       $this->floatmargins['R']['y1'] = $fy + $h;
-                                       if ($skipln == 1) {
-                                               $this->floatmargins['R']['skipline'] = true;
-                                               $this->floatmargins['R']['id'] = count($this->floatbuffer)+0;
-                                               $objattr['skipline'] = true;
-                                       }
-                                       $this->floatbuffer[] = $objattr;
-                               }
-                       }
-                       else {
-                               $this->floatmargins['R']['x'] = $fx;
-                               $this->floatmargins['R']['w'] = $w;
-                               $this->floatmargins['R']['y0'] = $fy;
-                               $this->floatmargins['R']['y1'] = $fy + $h;
-                               if ($skipln == 1) {
-                                       $this->floatmargins['R']['skipline'] = true;
-                                       $this->floatmargins['R']['id'] = count($this->floatbuffer)+0;
-                                       $objattr['skipline'] = true;
-                               }
-                               $this->floatbuffer[] = $objattr;
-                       }
-                 }
-                 else if ($objattr['float']=='L') {
-                       // If L float already exists at this level
-                       $this->floatmargins['L']['skipline'] = false;  
-                       if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) {
-                               $this->floatmargins['L']['skipline'] = false;  
-                               $this->WriteFlowingBlock($vetor[0]); 
-                       }
-                       // If R float already exists at this level
-                       else if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) {
-                               // Final check distance between floats is not now too narrow to fit text
-                               $mw = 2*$this->GetCharWidth('W',false);
-                               if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['R']['w']) < $mw) {
-                                       $this->WriteFlowingBlock($vetor[0]); 
-                               }
-                               else {
-                                       $this->floatmargins['L']['x'] = $fx + $w;
-                                       $this->floatmargins['L']['w'] = $w;
-                                       $this->floatmargins['L']['y0'] = $fy;
-                                       $this->floatmargins['L']['y1'] = $fy + $h;
-                                       if ($skipln == 1) {
-                                               $this->floatmargins['L']['skipline'] = true;
-                                               $this->floatmargins['L']['id'] = count($this->floatbuffer)+0;
-                                               $objattr['skipline'] = true;
-                                       }
-                                       $this->floatbuffer[] = $objattr;
-                               }
-                       }
-                       else {
-                               $this->floatmargins['L']['x'] = $fx + $w;
-                               $this->floatmargins['L']['w'] = $w;
-                               $this->floatmargins['L']['y0'] = $fy;
-                               $this->floatmargins['L']['y1'] = $fy + $h;
-                               if ($skipln == 1) {
-                                       $this->floatmargins['L']['skipline'] = true;
-                                       $this->floatmargins['L']['id'] = count($this->floatbuffer)+0;
-                                       $objattr['skipline'] = true;
-                               }
-                               $this->floatbuffer[] = $objattr;
-                       }
-                 }
-               }
-               else {
-/*-- END CSS-IMAGE-FLOAT --*/
-                       $this->WriteFlowingBlock($vetor[0]); 
-/*-- CSS-IMAGE-FLOAT --*/
-               }
-/*-- END CSS-IMAGE-FLOAT --*/
-         }     // *TABLES*
-
-       }       // END If special content
-      else { //THE text
-         if ($this->tableLevel) { $paint_ht_corr = 0; }        // To move the y up when new column/page started if div border needed
-         else { $paint_ht_corr = $this->blk[$this->blklvl]['border_top']['w']; }
-
-        if ($vetor[0] == "\n") { //We are reading a <BR> now turned into newline ("\n")
-               if ($this->flowingBlockAttr['content']) {
-                       $this->finishFlowingBlock(false,'br');
-               }
-               else if ($is_table) {
-                       $this->y+= $this->_computeLineheight($this->table_lineheight);
-               }
-               else if (!$is_table) {
-                       $this->DivLn($this->lineheight); 
-                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
-               }
-               // Added to correct for OddEven Margins
-               if  ($this->page != $oldpage) {
-                       if (($this->page-$oldpage) % 2 == 1) {
-                               $bak_x += $this->MarginCorrection;
-                       }
-                       $oldpage = $this->page;
-                               $y = $this->tMargin - $paint_ht_corr ;
-                               $this->oldy = $this->tMargin - $paint_ht_corr ;
-                               $old_height = 0;
-               }
-               $this->x = $bak_x;
-/*-- COLUMNS --*/
-               // COLS
-               // OR COLUMN CHANGE
-               if ($this->CurrCol != $oldcolumn) {
-                       if ($this->directionality == 'rtl') {   // *RTL*
-                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
-                       }       // *RTL*
-                       else {  // *RTL*
-                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
-                       }       // *RTL*
-                       $this->x = $bak_x;
-                       $oldcolumn = $this->CurrCol;
-                       $y = $this->y0 - $paint_ht_corr ;
-                       $this->oldy = $this->y0 - $paint_ht_corr ;
-                       $old_height = 0;
-               }
-/*-- END COLUMNS --*/
-               $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
-         }
-         else {
-               $this->WriteFlowingBlock( $vetor[0]);
-
-                 // Added to correct for OddEven Margins
-                 if  ($this->page != $oldpage) {
-                       if (($this->page-$oldpage) % 2 == 1) {
-                               $bak_x += $this->MarginCorrection;
-                               $this->x = $bak_x;
-                       }
-                       $oldpage = $this->page;
-                               $y = $this->tMargin - $paint_ht_corr ;
-                               $this->oldy = $this->tMargin - $paint_ht_corr ;
-                               $old_height = 0;
-                 }
-/*-- COLUMNS --*/
-               // COLS
-               // OR COLUMN CHANGE
-               if ($this->CurrCol != $oldcolumn) {
-                       if ($this->directionality == 'rtl') {   // *RTL*
-                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
-                       }       // *RTL*
-                       else {  // *RTL*
-                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
-                       }       // *RTL*
-                       $this->x = $bak_x;
-                       $oldcolumn = $this->CurrCol;
-                       $y = $this->y0 - $paint_ht_corr ;
-                       $this->oldy = $this->y0 - $paint_ht_corr ;
-                       $old_height = 0;
-               }
-/*-- END COLUMNS --*/
-           }
-
-
-      }
-
-      //Check if it is the last element. If so then finish printing the block
-      if ($i == ($array_size-1)) {
-               $this->finishFlowingBlock(true);        // true = END of flowing block
-                 // Added to correct for OddEven Margins
-                 if  ($this->page != $oldpage) {
-                       if (($this->page-$oldpage) % 2 == 1) {
-                               $bak_x += $this->MarginCorrection;
-                               $this->x = $bak_x;
-                       }
-                       $oldpage = $this->page;
-                               $y = $this->tMargin - $paint_ht_corr ;
-                               $this->oldy = $this->tMargin - $paint_ht_corr ;
-                               $old_height = 0;
-                 }
-
-/*-- COLUMNS --*/
-               // COLS
-               // OR COLUMN CHANGE
-               if ($this->CurrCol != $oldcolumn) {
-                       if ($this->directionality == 'rtl') {   // *RTL*
-                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
-                       }       // *RTL*
-                       else {  // *RTL*
-                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
-                       }       // *RTL*
-                       $this->x = $bak_x;
-                       $oldcolumn = $this->CurrCol;
-                       $y = $this->y0 - $paint_ht_corr ;
-                       $this->oldy = $this->y0 - $paint_ht_corr ;
-                       $old_height = 0;
-               }
-/*-- END COLUMNS --*/
-
-       }
-
-       // RESETTING VALUES
-       $this->SetTColor($this->ConvertColor(0));
-       $this->SetDColor($this->ConvertColor(0));
-       $this->SetFColor($this->ConvertColor(255));
-       $this->colorarray = ''; 
-       $this->spanbgcolorarray = '';
-       $this->spanbgcolor = false;
-       $this->spanborder = false;
-       $this->spanborddet = array();
-       $this->HREF = '';
-       $this->textparam = array();
-       $this->SetTextOutline();
-       $this->SUP = false;
-       $this->SUB = false;
-
-       $this->strike = false;
-       $this->textshadow = '';
-
-       $this->currentfontfamily = '';  
-       $this->currentfontsize = '';  
-       $this->currentfontstyle = '';  
-/*-- TABLES --*/
-       if ($this->tableLevel) {
-               $this->SetLineHeight('',$this->table_lineheight);       // *TABLES*
-       }
-       else
-/*-- END TABLES --*/
-/*-- LISTS --*/
-       if ($is_list && $this->list_lineheight[$this->listlvl][$this->listOcc]) {
-               $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->listOcc]);        // sets default line height
-       }
-       else
-/*-- END LISTS --*/
-       if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
-               $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']);      // sets default line height
-       }
-       $this->ResetStyles();
-       $this->toupper = false;
-       $this->tolower = false;
-       $this->capitalize = false;
-       $this->kerning = false; 
-       $this->lSpacingCSS = '';
-       $this->wSpacingCSS = '';
-       $this->fixedlSpacing = false;
-       $this->minwSpacing = 0;
-       $this->SetDash(); 
-       $this->dash_on = false;
-       $this->dotted_on = false;
-
-    }//end of for(i=0;i<arraysize;i++)
-
-
-    // PAINT DIV BORDER        // DISABLED IN COLUMNS AS DOESN'T WORK WHEN BROKEN ACROSS COLS??
-    if ((isset($this->blk[$this->blklvl]['border']) || isset($this->blk[$this->blklvl]['bgcolor']) || isset($this->blk[$this->blklvl]['box_shadow'])) && $blockstate  && ($this->y != $this->oldy)) {
-       $bottom_y = $this->y;   // Does not include Bottom Margin
-       if (isset($this->blk[$this->blklvl]['startpage']) && $this->blk[$this->blklvl]['startpage'] != $this->page && $blockstate != 1) {
-               $this->PaintDivBB('pagetop',$blockstate);
-       }
-
-       else if ($blockstate != 1) {
-               $this->PaintDivBB('',$blockstate);
-       }
-       $this->y = $bottom_y; 
-       $this->x = $bak_x;
-    }
-
-    // Reset Font
-    $this->SetFontSize($this->default_font_size,false); 
-
-
-}
-
-function _setDashBorder($style, $div, $cp, $side) {
-       if ($style == 'dashed' && (($side=='L' || $side=='R') || ($side=='T' && $div != 'pagetop' && !$cp) || ($side=='B' && $div!='pagebottom') )) {
-               $dashsize = 2;  // final dash will be this + 1*linewidth
-               $dashsizek = 1.5;       // ratio of Dash/Blank
-               $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2));
-       }
-       else if ($style == 'dotted' || ($side=='T' && ($div == 'pagetop' || $cp)) || ($side=='B' && $div == 'pagebottom')) {
-               //Round join and cap
-               $this->SetLineJoin(1);
-               $this->SetLineCap(1);
-               $this->SetDash(0.001,($this->LineWidth*3));
-       }
-}
-
-function _setBorderLine($b, $k=1) {
-       $this->SetLineWidth($b['w']/$k);
-       $this->SetDColor($b['c']);
-       if ($b['c'][0]==5) {    // RGBa
-               $this->SetAlpha(ord($b['c'][4])/100, 'Normal', false, 'S')."\n";        // mPDF 5.7.2
-       }
-       else if ($b['c'][0]==6) {       // CMYKa
-               $this->SetAlpha(ord($b['c'][5])/100, 'Normal', false, 'S')."\n";        // mPDF 5.7.2
-       }
-}
-
-// mPDF 5.6.52
-function PaintDivBB($divider='',$blockstate=0,$blvl=0) {
-       // Borders & backgrounds are done elsewhere for columns - messes up the repositioning in printcolumnbuffer
-       if ($this->ColActive) { return ; }      // *COLUMNS*
-       $save_y = $this->y;
-       if (!$blvl) { $blvl = $this->blklvl; }
-       $x0 = $x1 = $y0 = $y1 = 0; 
-
-       // Added mPDF 3.0 Float DIV
-       if (isset($this->blk[$blvl]['bb_painted'][$this->page]) && $this->blk[$blvl]['bb_painted'][$this->page]) { return; }    // *CSS-FLOAT*
-
-       if (isset($this->blk[$blvl]['x0'])) { $x0 = $this->blk[$blvl]['x0']; }  // left
-       if (isset($this->blk[$blvl]['y1'])) { $y1 = $this->blk[$blvl]['y1']; }  // bottom
-
-       // Added mPDF 3.0 Float DIV - ensures backgrounds/borders are drawn to bottom of page
-       if ($y1==0) { 
-               if ($divider=='pagebottom') { $y1 = $this->h-$this->bMargin; }
-               else { $y1 = $this->y; }
-       }
-
-       if (isset($this->blk[$blvl]['startpage']) && $this->blk[$blvl]['startpage'] != $this->page) { $continuingpage = true; } else { $continuingpage = false; } 
-
-       if (isset($this->blk[$blvl]['y0'])) { $y0 = $this->blk[$blvl]['y0']; }
-       $h = $y1 - $y0;
-       $w = $this->blk[$blvl]['width'];
-       $x1 = $x0 + $w;
-
-       // Set border-widths as used here
-       $border_top = $this->blk[$blvl]['border_top']['w'];
-       $border_bottom = $this->blk[$blvl]['border_bottom']['w'];
-       $border_left = $this->blk[$blvl]['border_left']['w'];
-       $border_right = $this->blk[$blvl]['border_right']['w'];
-       if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) {
-               $border_top = 0;
-       }
-       if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { 
-               $border_bottom = 0;
-       }
-
-               $brTL_H = 0;
-               $brTL_V = 0;
-               $brTR_H = 0;
-               $brTR_V = 0;
-               $brBL_H = 0;
-               $brBL_V = 0;
-               $brBR_H = 0;
-               $brBR_V = 0;
-
-       $brset = false; 
-/*-- BORDER-RADIUS --*/
-       if (isset($this->blk[$blvl]['border_radius_TL_H'])) { $brTL_H = $this->blk[$blvl]['border_radius_TL_H']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_TL_V'])) { $brTL_V = $this->blk[$blvl]['border_radius_TL_V']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_TR_H'])) { $brTR_H = $this->blk[$blvl]['border_radius_TR_H']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_TR_V'])) { $brTR_V = $this->blk[$blvl]['border_radius_TR_V']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_BR_H'])) { $brBR_H = $this->blk[$blvl]['border_radius_BR_H']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_BR_V'])) { $brBR_V = $this->blk[$blvl]['border_radius_BR_V']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_BL_H'])) { $brBL_H = $this->blk[$blvl]['border_radius_BL_H']; $brset = true; }
-       if (isset($this->blk[$blvl]['border_radius_BL_V'])) { $brBL_V = $this->blk[$blvl]['border_radius_BL_V']; $brset = true; }
-
-       // mPDF 5.4.17
-       //if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage || $this->keep_block_together) {
-       if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) {
-               $brTL_H = 0;
-               $brTL_V = 0;
-               $brTR_H = 0;
-               $brTR_V = 0;
-       }
-       // mPDF 5.4.17
-       //if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom' || $this->keep_block_together) { 
-       if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { 
-               $brBL_H = 0;
-               $brBL_V = 0;
-               $brBR_H = 0;
-               $brBR_V = 0;
-       }
-
-       // Disallow border-radius if it is smaller than the border width.
-       if ($brTL_H < min($border_left, $border_top)) { $brTL_H = $brTL_V = 0; }
-       if ($brTL_V < min($border_left, $border_top)) { $brTL_V = $brTL_H = 0; }
-       if ($brTR_H < min($border_right, $border_top)) { $brTR_H = $brTR_V = 0; }
-       if ($brTR_V < min($border_right, $border_top)) { $brTR_V = $brTR_H = 0; }
-       if ($brBL_H < min($border_left, $border_bottom)) { $brBL_H = $brBL_V = 0; }
-       if ($brBL_V < min($border_left, $border_bottom)) { $brBL_V = $brBL_H = 0; }
-       if ($brBR_H < min($border_right, $border_bottom)) { $brBR_H = $brBR_V = 0; }
-       if ($brBR_V < min($border_right, $border_bottom)) { $brBR_V = $brBR_H = 0; }
-
-       // CHECK FOR radii that sum to > width or height of div ********
-       $f = min($h/($brTL_V + $brBL_V + 0.001), $h/($brTR_V + $brBR_V + 0.001), $w/($brTL_H + $brTR_H + 0.001),  $w/($brBL_H + $brBR_H + 0.001));
-       if ($f < 1) {
-               $brTL_H *= $f;
-               $brTL_V *= $f;
-               $brTR_H *= $f;
-               $brTR_V *= $f;
-               $brBL_H *= $f;
-               $brBL_V *= $f;
-               $brBR_H *= $f;
-               $brBR_V *= $f;
-       }
-/*-- END BORDER-RADIUS --*/
-
-       $tbcol = $this->ConvertColor(255);
-       for($l=0; $l <= $blvl; $l++) {
-               if ($this->blk[$l]['bgcolor']) {
-                       $tbcol = $this->blk[$l]['bgcolorarray'];
-               }
-       }
-
-       // BORDERS
-       if (isset($this->blk[$blvl]['y0']) && $this->blk[$blvl]['y0']) { $y0 = $this->blk[$blvl]['y0']; }
-       $h = $y1 - $y0;
-       $w = $this->blk[$blvl]['width'];
-
-       //if ($this->blk[$blvl]['border_top']) {
-       // Reinstate line above for dotted line divider when block border crosses a page
-       if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
-               $tbd = $this->blk[$blvl]['border_top'];
-
-               // mPDF 5.4.18
-               $legend = '';
-               if (isset($this->blk[$blvl]['border_legend']) && $this->blk[$blvl]['border_legend']) { 
-                       $legend = $this->blk[$blvl]['border_legend'];   // Same structure array as textbuffer
-                       $txt = ltrim($legend[0]);
-
-                       //Set font, size, style, color
-                       $this->SetFont($legend[4],$legend[2],$legend[11]);
-                       if ($legend[3]) { 
-                               $cor = $legend[3];
-                               $this->SetTColor($cor);
-                       }
-                       $stringWidth = $this->GetStringWidth($txt );
-                       $save_x = $this->x;
-                       $save_y = $this->y;
-                       $save_currentfontfamily = $this->FontFamily;
-                       $save_currentfontsize = $this->FontSizePt;
-                       $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
-                       $this->y = $y0 - $this->FontSize/2  + $this->blk[$blvl]['border_top']['w']/2;
-                       $this->x = $x0 + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_left']['w'];
-
-                       // Set the distance from the border line to the text ? make configurable variable
-                       $gap = 0.2 * $this->FontSize;
-
-                       $legbreakL = $this->x - $gap;
-                       $legbreakR = $this->x + $stringWidth + $gap;
-
-                       $this->Cell( $stringWidth, $this->FontSize, $txt , '', 0, 'C', $fill, '', 0, 0,0,'M', $fill);
-                       // Reset 
-                       $this->x = $save_x;
-                       $this->y = $save_y;
-                       $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize);
-                       $this->SetTColor($this->ConvertColor(0));
-               }
-
-               if (isset($tbd['s']) && $tbd['s']) {
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
-                               $this->_out('q');
-                               $this->SetLineWidth(0);
-                               $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK));
-                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
-                       }
-
-                       $this->_setBorderLine($tbd);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
-                               $legbreakL -= $border_top/2;    // because line cap different
-                               $legbreakR += $border_top/2;
-                               $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'T'); 
-                       }
-/*-- BORDER-RADIUS --*/
-                       else if (($brTL_V && $brTL_H) || ($brTR_V && $brTR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) {  // mPDF 5.6.58
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                       }
-                       $s = '';
-                       if ($brTR_H && $brTR_V) {
-                               $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_top/2 , $brTR_V - $border_top/2 , 1, 2, true))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                       }
-/*-- BORDER-RADIUS --*/
-                       if ($brTL_H && $brTL_V ) {
-                               // mPDF 5.4.18
-                               if ($legend) {
-                                       if ($legbreakR < ($x0 + $w - $brTR_H)) {
-                                               $s .= (sprintf('%.3F %.3F l ', $legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                       }
-                                       if ($legbreakL > ($x0 + $brTL_H )) {
-                                               $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                               $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK)."\n");
-                                       }
-                                       else {
-                                               $s .= (sprintf('%.3F %.3F m ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                       }
-                               }
-                               else {
-                                       $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                               }
-                               $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_top/2 , $brTL_V - $border_top/2 , 2, 1))."\n";
-                       }
-                       else {
-/*-- END BORDER-RADIUS --*/
-                               // mPDF 5.4.18
-                               if ($legend) {
-                                       if ($legbreakR < ($x0 + $w)) {
-                                               $s .= (sprintf('%.3F %.3F l ',$legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                       }
-                                       if ($legbreakL > ($x0)) {
-                                               $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                               if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                                                       $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                               }
-                                               else {
-                                                       $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                               }
-                                       }
-                                       else if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                                               $s .= (sprintf('%.3F %.3F m ', ($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                       }
-                                       else {
-                                               $s .= (sprintf('%.3F %.3F m ', ($x0 + $border_top/2)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                                       }
-                               }
-                               else if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                                       $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                               }
-                               else {
-                                       $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
-                               }
-/*-- BORDER-RADIUS --*/
-                       }
-/*-- END BORDER-RADIUS --*/
-                       $s .= 'S'."\n";
-                       $this->_out($s);
-
-                       if ($tbd['style']=='double') {
-                               $this->SetLineWidth($tbd['w']/3);
-                               $this->SetDColor($tbcol);
-                               $this->_out($s);
-                       }
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
-
-                       // Reset Corners and Dash off
-                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
-                       $this->SetDColor($this->ConvertColor(0));
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       //if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1) { 
-       // Reinstate line above for dotted line divider when block border crosses a page
-       if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
-               $tbd = $this->blk[$blvl]['border_bottom'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
-                               $this->_out('q');
-                               $this->SetLineWidth(0);
-                               $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
-                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
-                       }
-
-                       $this->_setBorderLine($tbd);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'B'); }
-/*-- BORDER-RADIUS --*/
-                       else if (($brBL_V && $brBL_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) {  // mPDF 5.6.58
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                       }
-                       $s = '';
-                       if ($brBL_H && $brBL_V) {
-                               $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_bottom/2 , $brBL_V - $border_bottom/2 , 3, 2, true))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
-                       }
-/*-- BORDER-RADIUS --*/
-                       if ($brBR_H && $brBR_V ) {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2) - $brBR_H )*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
-                               $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_bottom/2 , $brBR_V - $border_bottom/2 , 4, 1))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
-                       }
-                       $s .= 'S'."\n";
-                       $this->_out($s);
-
-                       if ($tbd['style']=='double') {
-                               $this->SetLineWidth($tbd['w']/3);
-                               $this->SetDColor($tbcol);
-                               $this->_out($s);
-                       }
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
-
-
-                       // Reset Corners and Dash off
-                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
-                       $this->SetDColor($this->ConvertColor(0));
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($this->blk[$blvl]['border_left']) { 
-               $tbd = $this->blk[$blvl]['border_left'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
-                               $this->_out('q');
-                               $this->SetLineWidth(0);
-                               $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
-                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
-                       }
-
-                       $this->_setBorderLine($tbd);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'L'); }
-/*-- BORDER-RADIUS --*/
-                       else if (($brTL_V && $brTL_H) || ($brBL_V && $brBL_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) {  // mPDF 5.6.58
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                       }
-                       $s = '';
-                       if ($brTL_V && $brTL_H) {
-                               $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_left/2 , $brTL_V - $border_left/2, 2, 2, true))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0))*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + ($border_left/2)))*_MPDFK))."\n";
-                       }
-/*-- BORDER-RADIUS --*/
-                       if ($brBL_V && $brBL_H ) {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)- $brBL_V) )*_MPDFK))."\n";
-                               $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_left/2 , $brBL_V - $border_left/2, 3, 1))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h) )*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)) )*_MPDFK))."\n";
-                       }
-                       $s .= 'S'."\n";
-                       $this->_out($s);
-
-                       if ($tbd['style']=='double') {
-                               $this->SetLineWidth($tbd['w']/3);
-                               $this->SetDColor($tbcol);
-                               $this->_out($s);
-                       }
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
-
-                       // Reset Corners and Dash off
-                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
-                       $this->SetDColor($this->ConvertColor(0));
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($this->blk[$blvl]['border_right']) { 
-               $tbd = $this->blk[$blvl]['border_right'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
-                               $this->_out('q');
-                               $this->SetLineWidth(0);
-                               $this->_out(sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
-                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
-                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
-                       }
-
-                       $this->_setBorderLine($tbd);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'R'); }
-/*-- BORDER-RADIUS --*/
-                       else if (($brTR_V && $brTR_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                       }
-                       $s = '';
-                       if ($brBR_V && $brBR_H) {
-                               $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_right/2 , $brBR_V - $border_right/2, 4, 2, true))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h))*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h - ($border_right/2)))*_MPDFK))."\n";
-                       }
-/*-- BORDER-RADIUS --*/
-                       if ($brTR_V && $brTR_H ) {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2) + $brTR_V) )*_MPDFK))."\n";
-                               $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_right/2 , $brTR_V - $border_right/2, 1, 1))."\n";
-                       }
-                       else 
-/*-- END BORDER-RADIUS --*/
-                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0) )*_MPDFK))."\n";
-                       }
-                       else {
-                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2)) )*_MPDFK))."\n";
-                       }
-                       $s .= 'S'."\n";
-                       $this->_out($s);
-
-                       if ($tbd['style']=='double') {
-                               $this->SetLineWidth($tbd['w']/3);
-                               $this->SetDColor($tbcol);
-                               $this->_out($s);
-                       }
-                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
-
-                       // Reset Corners and Dash off
-                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
-                       $this->SetDColor($this->ConvertColor(0));
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-
-
-       $this->SetDash(); 
-       $this->y = $save_y; 
-
-
-       // BACKGROUNDS are disabled in columns/kbt/headers - messes up the repositioning in printcolumnbuffer
-       if ($this->ColActive || $this->kwt || $this->keep_block_together) { return ; }
-
-
-       $bgx0 = $x0;
-       $bgx1 = $x1;
-       $bgy0 = $y0;
-       $bgy1 = $y1;
-
-       // Defined br values represent the radius of the outer curve - need to take border-width/2 from each radius for drawing the borders
-       if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'padding-box') {
-               $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w']);
-               $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w']);
-               $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w']);
-               $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w']);
-               $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w']);
-               $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w']);
-               $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w']);
-               $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w']);
-               $bgx0 += $this->blk[$blvl]['border_left']['w'];
-               $bgx1 -= $this->blk[$blvl]['border_right']['w'];
-               if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
-                       $bgy0 += $this->blk[$blvl]['border_top']['w'];
-               }
-               if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
-                       $bgy1 -= $this->blk[$blvl]['border_bottom']['w'];
-               }
-       }
-       // mPDF 5.6.09
-       else if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'content-box') {
-               $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']);
-               $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']);
-               $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']);
-               $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']);
-               $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']);
-               $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']);
-               $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']);
-               $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']);
-               $bgx0 +=  $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
-               $bgx1 -= $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right'];
-               if (($this->blk[$blvl]['border_top']['w'] || $this->blk[$blvl]['padding_top']) && $divider != 'pagetop' && !$continuingpage) {
-                       $bgy0 += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
-               }
-               if (($this->blk[$blvl]['border_bottom']['w'] || $this->blk[$blvl]['padding_bottom']) && $blockstate != 1 && $divider != 'pagebottom') { 
-                       $bgy1 -= $this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom'];
-               }
-       }
-       else {
-               $brbgTL_H = $brTL_H;
-               $brbgTL_V = $brTL_V;
-               $brbgTR_H = $brTR_H;
-               $brbgTR_V = $brTR_V;
-               $brbgBL_H = $brBL_H;
-               $brbgBL_V = $brBL_V;
-               $brbgBR_H = $brBR_H;
-               $brbgBR_V = $brBR_V;
-       }
-
-       // Set clipping path
-       $s = ' q 0 w '; // Line width=0
-       $s .= sprintf('%.3F %.3F m ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK);      // start point TL before the arc
-/*-- BORDER-RADIUS --*/
-       if ($brbgTL_H || $brbgTL_V) {
-               $s .= $this->_EllipseArc($bgx0+$brbgTL_H, $bgy0+$brbgTL_V, $brbgTL_H , $brbgTL_V , 2);  // segment 2 TL
-       }
-/*-- END BORDER-RADIUS --*/
-       $s .= sprintf('%.3F %.3F l ', ($bgx0)*_MPDFK, ($this->h-($bgy1-$brbgBL_V ))*_MPDFK);    // line to BL
-/*-- BORDER-RADIUS --*/
-       if ($brbgBL_H || $brbgBL_V) {
-               $s .= $this->_EllipseArc($bgx0+$brbgBL_H, $bgy1-$brbgBL_V, $brbgBL_H , $brbgBL_V , 3);  // segment 3 BL
-       }
-/*-- END BORDER-RADIUS --*/
-       $s .= sprintf('%.3F %.3F l ', ($bgx1-$brbgBR_H )*_MPDFK, ($this->h-($bgy1))*_MPDFK);    // line to BR
-/*-- BORDER-RADIUS --*/
-       if ($brbgBR_H || $brbgBR_V) {
-               $s .= $this->_EllipseArc($bgx1-$brbgBR_H, $bgy1-$brbgBR_V, $brbgBR_H , $brbgBR_V , 4);  // segment 4 BR
-       }
-/*-- END BORDER-RADIUS --*/
-       $s .= sprintf('%.3F %.3F l ', ($bgx1)*_MPDFK, ($this->h-($bgy0+$brbgTR_V))*_MPDFK);     // line to TR
-/*-- BORDER-RADIUS --*/
-       if ($brbgTR_H || $brbgTR_V) {
-               $s .= $this->_EllipseArc($bgx1-$brbgTR_H, $bgy0+$brbgTR_V, $brbgTR_H , $brbgTR_V , 1);  // segment 1 TR
-       }
-/*-- END BORDER-RADIUS --*/
-       $s .= sprintf('%.3F %.3F l ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK);      // line to TL
-
-
-       // Box Shadow
-       $shadow = '';
-       if (isset($this->blk[$blvl]['box_shadow']) && $this->blk[$blvl]['box_shadow'] && $h > 0) {
-               foreach($this->blk[$blvl]['box_shadow'] AS $sh) {
-                       // Colors
-                       if ($sh['col']{0}==1) {
-                               $colspace = 'Gray';
-                               if ($sh['col']{2}==1) { $col1 = '1'.$sh['col'][1].'1'.$sh['col'][3]; }
-                               else { $col1 = '1'.$sh['col'][1].'1'.chr(100); }
-                               $col2 = '1'.$sh['col'][1].'1'.chr(0);
-                       }
-                       else if ($sh['col']{0}==4) {    // CMYK
-                               $colspace = 'CMYK';
-                               $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(100);
-                               $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0);
-                       }
-                       else if ($sh['col']{0}==5) {    // RGBa
-                               $colspace = 'RGB';
-                               $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4];
-                               $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0);
-                       }
-                       else if ($sh['col']{0}==6) {    // CMYKa
-                               $colspace = 'CMYK';
-                               $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].$sh['col'][5];
-                               $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0);
-                       }
-                       else {
-                               $colspace = 'RGB';
-                               $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(100);
-                               $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0);
-                       }
-
-                       // Use clipping path as set above (and rectangle around page) to clip area outside box
-                       $shadow .= $s;  // Use the clipping path with W*
-                       $shadow .= sprintf('0 %.3F m %.3F %.3F l ', $this->h*_MPDFK, $this->w*_MPDFK, $this->h*_MPDFK);
-                       $shadow .= sprintf('%.3F 0 l 0 0 l 0 %.3F l ', $this->w*_MPDFK, $this->h*_MPDFK);
-                       $shadow .= 'W n'."\n";  
-
-                       $sh['blur'] = abs($sh['blur']); // cannot have negative blur value
-                       // Ensure spread/blur do not make effective shadow width/height < 0
-                       // Could do more complex things but this just adjusts spread value
-                       if (-$sh['spread'] + $sh['blur']/2 > min($w/2, $h/2)) { 
-                               $sh['spread'] = $sh['blur']/2 - min($w/2, $h/2) + 0.01;
-                       }
-                       // Shadow Offset
-                       if ($sh['x'] || $sh['y']) $shadow .= sprintf(' q 1 0 0 1 %.4F %.4F cm', $sh['x']*_MPDFK, -$sh['y']*_MPDFK)."\n";
-                       // Set path for INNER shadow
-                       $shadow .= ' q 0 w ';
-                       $shadow .= $this->SetFColor($col1, true)."\n";
-                       if ($col1{0}==5 && ord($col1{4})<100) { // RGBa
-                               $shadow .= $this->SetAlpha(ord($col1{4})/100, 'Normal', true, 'F')."\n"; 
-                       }
-                       else if ($col1{0}==6 && ord($col1{5})<100) {    // CMYKa
-                               $shadow .= $this->SetAlpha(ord($col1{5})/100, 'Normal', true, 'F')."\n"; 
-                       }
-                       else if ($col1{0}==1 && $col1{2}==1 && ord($col1{3})<100) {     // Gray
-                               $shadow .= $this->SetAlpha(ord($col1{3})/100, 'Normal', true, 'F')."\n"; 
-                       }
-
-                       // Blur edges
-                       $mag = 0.551784;        // Bezier Control magic number for 4-part spline for circle/ellipse
-                       $mag2 = 0.551784;       // Bezier Control magic number to fill in edge of blurred rectangle
-                       $d1 = $sh['spread']+$sh['blur']/2;
-                       $d2 = $sh['spread']-$sh['blur']/2;
-                       $bl = $sh['blur'];
-                       $x00 = $x0 - $d1;
-                       $y00 = $y0 - $d1;
-                       $w00 = $w + $d1*2;
-                       $h00 = $h + $d1*2;
-
-                       // If any border-radius is greater width-negative spread(inner edge), ignore radii for shadow or screws up
-                       $flatten = false;
-                       if (max($brbgTR_H, $brbgTL_H, $brbgBR_H, $brbgBL_H) >= $w+$d2) { $flatten = true; }
-                       if (max($brbgTR_V, $brbgTL_V, $brbgBR_V, $brbgBL_V) >= $h+$d2) { $flatten = true; }
-
-
-                       // TOP RIGHT corner
-                       $p1x = $x00+$w00-$d1-$brbgTR_H; $p1c2x = $p1x +($d2+$brbgTR_H)*$mag;
-                       $p1y = $y00+$bl;
-                       $p2x = $x00+$w00-$d1-$brbgTR_H; $p2c2x = $p2x + ($d1+$brbgTR_H)*$mag;
-                       $p2y = $y00;                            $p2c1y = $p2y + $bl/2;
-                       $p3x = $x00+$w00;                               $p3c2x = $p3x - $bl/2;
-                       $p3y = $y00+$d1+$brbgTR_V;              $p3c1y = $p3y - ($d1+$brbgTR_V)*$mag;
-                       $p4x = $x00+$w00-$bl;
-                       $p4y = $y00+$d1+$brbgTR_V;              $p4c2y = $p4y - ($d2+$brbgTR_V)*$mag;
-                       if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
-                               $p1x = $x00+$w00-$bl;   $p1c2x = $p1x;
-                               $p2x = $x00+$w00-$bl;   $p2c2x = $p2x + $bl*$mag2;
-                               $p3y = $y00+$bl;                $p3c1y = $p3y - $bl*$mag2;
-                               $p4y = $y00+$bl;                $p4c2y = $p4y ;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F m ', ($p1x )*_MPDFK, ($this->h-($p1y ))*_MPDFK);
-                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x)*_MPDFK, ($this->h-($p1y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4c2y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
-                       $patch_array[0]['f']=0;
-                       $patch_array[0]['points']=array($p1x,$p1y, $p1x,$p1y,
-                               $p2x,$p2c1y, $p2x,$p2y, $p2c2x,$p2y,
-                               $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y,
-                               $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y,
-                               $p1c2x,$p1y);
-                       $patch_array[0]['colors'] = array($col1,$col2,$col2,$col1);
-
-
-                       // RIGHT
-                       $p1x = $x00+$w00;       // control point only matches p3 preceding
-                       $p1y = $y00+$d1+$brbgTR_V;
-                       $p2x = $x00+$w00-$bl;   // control point only matches p4 preceding
-                       $p2y = $y00+$d1+$brbgTR_V;
-                       $p3x = $x00+$w00-$bl;
-                       $p3y = $y00+$h00-$d1-$brbgBR_V;
-                       $p4x = $x00+$w00;               $p4c1x = $p4x-$bl/2;
-                       $p4y = $y00+$h00-$d1-$brbgBR_V;
-                       if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
-                               $p1y = $y00+$bl;
-                               $p2y = $y00+$bl;
-                       }
-                       if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
-                               $p3y = $y00+$h00-$bl;
-                               $p4y = $y00+$h00-$bl;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
-                       $patch_array[1]['f']=2;
-                       $patch_array[1]['points']=array($p2x,$p2y, 
-                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
-                               $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y,
-                               $p1x,$p1y);
-                       $patch_array[1]['colors'] = array($col1,$col2);
-
-
-                       // BOTTOM RIGHT corner
-                       $p1x = $x00+$w00-$bl;           // control points only matches p3 preceding
-                       $p1y = $y00+$h00-$d1-$brbgBR_V;         $p1c2y = $p1y + ($d2+$brbgBR_V)*$mag;
-                       $p2x = $x00+$w00;                                       // control point only matches p4 preceding
-                       $p2y = $y00+$h00-$d1-$brbgBR_V;         $p2c2y = $p2y + ($d1+$brbgBR_V)*$mag;
-                       $p3x = $x00+$w00-$d1-$brbgBR_H;         $p3c1x = $p3x + ($d1+$brbgBR_H)*$mag;
-                       $p3y = $y00+$h00;                                       $p3c2y = $p3y - $bl/2;
-                       $p4x = $x00+$w00-$d1-$brbgBR_H;         $p4c2x = $p4x + ($d2+$brbgBR_H)*$mag;
-                       $p4y = $y00+$h00-$bl;   
-
-                       if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
-                               $p1y = $y00+$h00-$bl;           $p1c2y = $p1y;
-                               $p2y = $y00+$h00-$bl;           $p2c2y = $p2y + $bl*$mag2;
-                               $p3x = $x00+$w00-$bl;           $p3c1x = $p3x + $bl*$mag2;
-                               $p4x = $x00+$w00-$bl;           $p4c2x = $p4x;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x)*_MPDFK, ($this->h-($p1c2y))*_MPDFK, ($p4c2x)*_MPDFK, ($this->h-($p4y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
-                       $patch_array[2]['f']=2;
-                       $patch_array[2]['points']=array($p2x,$p2c2y,
-                               $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y,
-                               $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y,
-                               $p1x,$p1c2y);
-                       $patch_array[2]['colors'] = array($col2,$col1);
-
-
-
-                       // BOTTOM
-                       $p1x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p3 preceding
-                       $p1y = $y00+$h00;
-                       $p2x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p4 preceding
-                       $p2y = $y00+$h00-$bl;
-                       $p3x = $x00+$d1+$brbgBL_H;
-                       $p3y = $y00+$h00-$bl; 
-                       $p4x = $x00+$d1+$brbgBL_H;
-                       $p4y = $y00+$h00;               $p4c1y = $p4y - $bl/2;
-
-                       if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
-                               $p1x = $x00+$w00-$bl;
-                               $p2x = $x00+$w00-$bl;
-                       }
-                       if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
-                               $p3x = $x00+$bl;
-                               $p4x = $x00+$bl;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
-                       $patch_array[3]['f']=2;
-                       $patch_array[3]['points']=array($p2x,$p2y, 
-                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
-                               $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y,
-                               $p1x,$p1y);
-                       $patch_array[3]['colors'] = array($col1,$col2);
-
-                       // BOTTOM LEFT corner
-                       $p1x = $x00+$d1+$brbgBL_H;              $p1c2x = $p1x - ($d2+$brbgBL_H)*$mag;   // control points only matches p3 preceding
-                       $p1y = $y00+$h00-$bl;
-                       $p2x = $x00+$d1+$brbgBL_H;              $p2c2x = $p2x - ($d1+$brbgBL_H)*$mag;   // control point only matches p4 preceding
-                       $p2y = $y00+$h00;
-                       $p3x = $x00;                            $p3c2x = $p3x + $bl/2;
-                       $p3y = $y00+$h00-$d1-$brbgBL_V; $p3c1y = $p3y + ($d1+$brbgBL_V)*$mag;
-                       $p4x = $x00+$bl;
-                       $p4y = $y00+$h00-$d1-$brbgBL_V; $p4c2y = $p4y + ($d2+$brbgBL_V)*$mag;
-                       if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
-                               $p1x = $x00+$bl;                $p1c2x = $p1x;
-                               $p2x = $x00+$bl;                $p2c2x = $p2x - $bl*$mag2;
-                               $p3y = $y00+$h00-$bl;   $p3c1y = $p3y + $bl*$mag2;
-                               $p4y = $y00+$h00-$bl;   $p4c2y = $p4y;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x)*_MPDFK, ($this->h-($p1y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4c2y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
-                       $patch_array[4]['f']=2;
-                       $patch_array[4]['points']=array($p2c2x,$p2y,
-                               $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y,
-                               $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y,
-                               $p1c2x,$p1y);
-                       $patch_array[4]['colors'] = array($col2,$col1);
-
-
-                       // LEFT - joins on the right (C3-C4 of previous): f = 2
-                       $p1x = $x00;    // control point only matches p3 preceding
-                       $p1y = $y00+$h00-$d1-$brbgBL_V;
-                       $p2x = $x00+$bl;        // control point only matches p4 preceding
-                       $p2y = $y00+$h00-$d1-$brbgBL_V;
-                       $p3x = $x00+$bl;
-                       $p3y = $y00+$d1+$brbgTL_V; 
-                       $p4x = $x00;            $p4c1x = $p4x + $bl/2;
-                       $p4y = $y00+$d1+$brbgTL_V;      
-                       if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
-                               $p1y = $y00+$h00-$bl;
-                               $p2y = $y00+$h00-$bl;
-                       }
-                       if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
-                               $p3y = $y00+$bl; 
-                               $p4y = $y00+$bl;        
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
-                       $patch_array[5]['f']=2;
-                       $patch_array[5]['points']=array($p2x,$p2y, 
-                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
-                               $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y,
-                               $p1x,$p1y);
-                       $patch_array[5]['colors'] = array($col1,$col2);
-
-                       // TOP LEFT corner
-                       $p1x = $x00+$bl;                // control points only matches p3 preceding
-                       $p1y = $y00+$d1+$brbgTL_V;      $p1c2y = $p1y  - ($d2+$brbgTL_V)*$mag;
-                       $p2x = $x00;                    // control point only matches p4 preceding
-                       $p2y = $y00+$d1+$brbgTL_V;      $p2c2y = $p2y - ($d1+$brbgTL_V)*$mag;
-                       $p3x = $x00+$d1+$brbgTL_H;      $p3c1x = $p3x - ($d1+$brbgTL_H)*$mag;
-                       $p3y = $y00;                    $p3c2y = $p3y + $bl/2;
-                       $p4x = $x00+$d1+$brbgTL_H;      $p4c2x = $p4x - ($d2+$brbgTL_H)*$mag;
-                       $p4y = $y00+$bl;
-
-                       if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
-                               $p1y = $y00+$bl;        $p1c2y = $p1y;
-                               $p2y = $y00+$bl;        $p2c2y = $p2y - $bl*$mag2;
-                               $p3x = $x00+$bl;        $p3c1x = $p3x - $bl*$mag2;
-                               $p4x = $x00+$bl;        $p4c2x = $p4x ;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x)*_MPDFK, ($this->h-($p1c2y))*_MPDFK, ($p4c2x)*_MPDFK, ($this->h-($p4y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
-                       $patch_array[6]['f']=2;
-                       $patch_array[6]['points']=array($p2x,$p2c2y,
-                               $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y,
-                               $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y,
-                               $p1x,$p1c2y);
-                       $patch_array[6]['colors'] = array($col2,$col1);
-
-
-                       // TOP - joins on the right (C3-C4 of previous): f = 2
-                       $p1x = $x00+$d1+$brbgTL_H;      // control point only matches p3 preceding
-                       $p1y = $y00;
-                       $p2x = $x00+$d1+$brbgTL_H;      // control point only matches p4 preceding
-                       $p2y = $y00+$bl;
-                       $p3x = $x00+$w00-$d1-$brbgTR_H;
-                       $p3y = $y00+$bl; 
-                       $p4x = $x00+$w00-$d1-$brbgTR_H;
-                       $p4y = $y00;            $p4c1y = $p4y + $bl/2;
-                       if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
-                               $p1x = $x00+$bl;
-                               $p2x = $x00+$bl;
-                       }
-                       if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
-                               $p3x = $x00+$w00-$bl;
-                               $p4x = $x00+$w00-$bl;
-                       }
-
-                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
-                       $patch_array[7]['f']=2;
-                       $patch_array[7]['points']=array($p2x,$p2y, 
-                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
-                               $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y,
-                               $p1x,$p1y);
-                       $patch_array[7]['colors'] = array($col1,$col2);
-
-                       $shadow .= ' h f Q '."\n";      // Close path and Fill the inner solid shadow
-
-                       if ($bl) $shadow .= $this->grad->CoonsPatchMesh($x00,$y00,$w00,$h00,$patch_array,$x00,$x00+$w00,$y00,$y00+$h00, $colspace, true);
-
-                       if ($sh['x'] || $sh['y']) $shadow .= ' Q'."\n";         // Shadow Offset
-                       $shadow .= ' Q'."\n";   // Ends path no-op & Sets the clipping path
-
-               }
-       }
-
-       $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-
-       if ($this->blk[$blvl]['bgcolor']) {
-               $this->pageBackgrounds[$blvl][] = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h, 'col'=>$this->blk[$blvl]['bgcolorarray'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer);   // mPDF 5.6.01
-       }
-       else    if ($shadow) {
-               $this->pageBackgrounds[$blvl][] = array('shadowonly'=>true, 'col'=>'', 'clippath'=>'', 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer);    // mPDF 5.6.01
-       }
-
-/*-- BACKGROUNDS --*/
-       if (isset($this->blk[$blvl]['gradient'])) { 
-               $g = $this->grad->parseBackgroundGradient($this->blk[$blvl]['gradient']);
-               if ($g) {
-                       $gx = $x0;
-                       $gy = $y0;
-                       $this->pageBackgrounds[$blvl][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$w, 'h'=>$h, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer);        // mPDF 5.6.01
-               }
-       }
-       if (isset($this->blk[$blvl]['background-image'])) { 
-          if ($this->blk[$blvl]['background-image']['gradient']  && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->blk[$blvl]['background-image']['gradient'] )) {
-               $g = $this->grad->parseMozGradient( $this->blk[$blvl]['background-image']['gradient'] );
-               if ($g) {
-                       $gx = $x0;
-                       $gy = $y0;
-                       // mPDF 5.6.11
-                       // origin specifies the background-positioning-area (bpa)
-                       if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') {
-                               $gx += $this->blk[$blvl]['border_left']['w'];
-                               $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']);
-                               if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
-                                       $gy += $this->blk[$blvl]['border_top']['w'];
-                               }
-                               if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
-                                       $gy1 = $y1 - $this->blk[$blvl]['border_bottom']['w'];
-                               }
-                               else { $gy1 = $y1; }
-                               $h = $gy1 - $gy;
-                       }
-                       else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') {
-                               $gx += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
-                               $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']);
-                               if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
-                                       $gy += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
-                               }
-                               if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
-                                       $gy1 = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']);
-                               }
-                               else { $gy1 = $y1 - $this->blk[$blvl]['padding_bottom']; }
-                               $h = $gy1 - $gy;
-                       }
-
-                       if (isset($this->blk[$blvl]['background-image']['size']['w']) && $this->blk[$blvl]['background-image']['size']['w']) {
-                               $size = $this->blk[$blvl]['background-image']['size'];
-                               if ($size['w']!='contain' && $size['w']!='cover') {
-                                       if (stristr($size['w'] ,'%')) {
-                                               $size['w'] += 0; 
-                                               $size['w'] /= 100; 
-                                               $w *= $size['w'];
-                                       }
-                                       else if ($size['w']!='auto') {
-                                               $w = $size['w'];
-                                       }
-                                       if (stristr($size['h'] ,'%')) {
-                                               $size['h'] += 0; 
-                                               $size['h'] /= 100; 
-                                               $h *= $size['h'];
-                                       }
-                                       else if ($size['h']!='auto') {
-                                               $h = $size['h'];
-                                       }
-                               }
-                       }
-                       $this->pageBackgrounds[$blvl][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$w, 'h'=>$h, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer);        // mPDF 5.6.01
-               }
-          }
-          else { 
-               $image_id = $this->blk[$blvl]['background-image']['image_id'];
-               $orig_w = $this->blk[$blvl]['background-image']['orig_w'];
-               $orig_h = $this->blk[$blvl]['background-image']['orig_h'];
-               $x_pos = $this->blk[$blvl]['background-image']['x_pos'];
-               $y_pos = $this->blk[$blvl]['background-image']['y_pos'];
-               $x_repeat = $this->blk[$blvl]['background-image']['x_repeat'];
-               $y_repeat = $this->blk[$blvl]['background-image']['y_repeat'];
-               $resize = $this->blk[$blvl]['background-image']['resize'];
-               $opacity = $this->blk[$blvl]['background-image']['opacity'];
-               $itype = $this->blk[$blvl]['background-image']['itype'];
-               $size = $this->blk[$blvl]['background-image']['size'];  // mPDF 5.6.10
-               // mPDF 5.6.10
-               // origin specifies the background-positioning-area (bpa)
-               $bpa = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h);
-               if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') {
-                       $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'];
-                       $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']);
-                       if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
-                               $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'];
-                       }
-                       else { $bpa['y'] = $y0; }
-                       if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
-                               $bpay = $y1 - $this->blk[$blvl]['border_bottom']['w'];
-                       }
-                       else { $bpay = $y1; }
-                       $bpa['h'] = $bpay - $bpa['y'];
-               }
-               // mPDF 5.6.09
-               else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') {
-                       $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
-                       $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']);
-                       if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
-                               $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
-                       }
-                       else { $bpa['y'] = $y0 + $this->blk[$blvl]['padding_top']; }
-                       if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
-                               $bpay = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']);
-                       }
-                       else { $bpay = $y1 - $this->blk[$blvl]['padding_bottom']; }
-                       $bpa['h'] = $bpay - $bpa['y'];
-               }
-               $this->pageBackgrounds[$blvl][] = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer, 'size'=>$size, 'bpa'=>$bpa );     // mPDF 5.6.01  5.6.10
-          }
-       }
-/*-- END BACKGROUNDS --*/
-
-       // Float DIV
-       $this->blk[$blvl]['bb_painted'][$this->page] = true;
-
-}
-
-/*-- BORDER-RADIUS --*/
-
-function _EllipseArc($x0, $y0, $rx, $ry, $seg = 1, $part=false, $start=false) {        // Anticlockwise segment 1-4 TR-TL-BL-BR (part=1 or 2)
-       $s = '';
-       if ($rx<0) { $rx = 0; }
-       if ($ry<0) { $ry = 0; }
-       $rx *= _MPDFK;
-       $ry *= _MPDFK;
-       $astart = 0;
-       if ($seg == 1) {        // Top Right
-               $afinish = 90;
-               $nSeg = 4; 
-       }
-       else if ($seg == 2) {   // Top Left
-               $afinish = 180;
-               $nSeg = 8; 
-       }
-       else if ($seg == 3) {   // Bottom Left
-               $afinish = 270;
-               $nSeg = 12; 
-       }
-       else {                  // Bottom Right
-               $afinish = 360;
-               $nSeg = 16; 
-       }
-       $astart = deg2rad((float) $astart);
-       $afinish = deg2rad((float) $afinish);
-       $totalAngle = $afinish - $astart;
-       $dt = $totalAngle / $nSeg;      // segment angle
-       $dtm = $dt/3;
-       $x0 *= _MPDFK;
-       $y0 = ($this->h - $y0) * _MPDFK;
-       $t1 = $astart;
-       $a0 = $x0 + ($rx * cos($t1));
-       $b0 = $y0 + ($ry * sin($t1));
-       $c0 = -$rx * sin($t1);
-       $d0 = $ry * cos($t1);
-       $op = false;
-       for ($i = 1; $i <= $nSeg; $i++) {
-               // Draw this bit of the total curve
-               $t1 = ($i * $dt) + $astart;
-               $a1 = $x0 + ($rx * cos($t1));
-               $b1 = $y0 + ($ry * sin($t1));
-               $c1 = -$rx * sin($t1);
-               $d1 = $ry * cos($t1);
-               if ($i>($nSeg-4) && (!$part || ($part == 1 && $i<=$nSeg-2) || ($part == 2 && $i>$nSeg-2))) { 
-                       if ($start && !$op) {
-                               $s .= sprintf('%.3F %.3F m ', $a0, $b0);
-                       }
-                       $s .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($a0 + ($c0 * $dtm)), ($b0 + ($d0 * $dtm)), ($a1 - ($c1 * $dtm)) , ($b1 - ($d1 * $dtm)), $a1 , $b1 );
-                       $op = true;
-               }
-               $a0 = $a1;
-               $b0 = $b1;
-               $c0 = $c1;
-               $d0 = $d1;
-       }
-       return $s;
-}
-/*-- END BORDER-RADIUS --*/
-
-
-
-function PaintDivLnBorder($state=0,$blvl=0,$h) {
-       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
-       $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $h; 
-
-       $save_y = $this->y;
-
-       $w = $this->blk[$blvl]['width'];
-       $x0 = $this->x;                         // left
-       $y0 = $this->y;                         // top
-       $x1 = $this->x + $w;                    // bottom
-       $y1 = $this->y + $h;                    // bottom
-
-       if ($this->blk[$blvl]['border_top'] && ($state==1 || $state==3)) {
-               $tbd = $this->blk[$blvl]['border_top'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       $this->_setBorderLine($tbd);
-                       $this->y = $y0 + ($tbd['w']/2);
-                       // mPDF 5.6.56
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
-                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'T'); 
-                               $this->Line($x0 + ($tbd['w']/2) , $this->y , $x0 + $w - ($tbd['w']/2), $this->y);
-                       }
-                       else {
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                               $this->Line($x0, $this->y , $x0 + $w, $this->y);
-                       }
-                       $this->y += $tbd['w'];
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($this->blk[$blvl]['border_left']) { 
-               $tbd = $this->blk[$blvl]['border_left'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       $this->_setBorderLine($tbd);
-                       // mPDF 5.6.56
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
-                               $this->y = $y0 + ($tbd['w']/2);
-                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'L'); 
-                               $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h -($tbd['w']/2));
-                       }
-                       else {
-                               $this->y = $y0;
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                               $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h);
-                       }
-                       $this->y += $tbd['w'];
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($this->blk[$blvl]['border_right']) { 
-               $tbd = $this->blk[$blvl]['border_right'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       $this->_setBorderLine($tbd);
-                       // mPDF 5.6.56
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
-                               $this->y = $y0 + ($tbd['w']/2);
-                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'R'); 
-                               $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h - ($tbd['w']/2));
-                       }
-                       else {
-                               $this->y = $y0;
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                               $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h);
-                       }
-                       $this->y += $tbd['w'];
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($this->blk[$blvl]['border_bottom'] && $state > 1) { 
-               $tbd = $this->blk[$blvl]['border_bottom'];
-               if (isset($tbd['s']) && $tbd['s']) {
-                       $this->_setBorderLine($tbd);
-                       $this->y = $y0 + $h - ($tbd['w']/2);
-                       // mPDF 5.6.56
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
-                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'B'); 
-                               $this->Line($x0 + ($tbd['w']/2) , $this->y, $x0 + $w - ($tbd['w']/2), $this->y);
-                       }
-                       else {
-                               $this->SetLineJoin(0);
-                               $this->SetLineCap(0);
-                               $this->Line($x0, $this->y, $x0 + $w, $this->y);
-                       }
-                       $this->y += $tbd['w'];
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       $this->SetDash(); 
-       $this->y = $save_y; 
-}
-
-
-function PaintImgBorder($objattr,$is_table) {
-       // Borders are disabled in columns - messes up the repositioning in printcolumnbuffer
-       if ($this->ColActive) { return ; }      // *COLUMNS*
-       if ($is_table) { $k = $this->shrin_k; } else { $k = 1; }
-       $h = (isset($objattr['BORDER-HEIGHT']) ? $objattr['BORDER-HEIGHT'] : 0);
-       $w = (isset($objattr['BORDER-WIDTH']) ? $objattr['BORDER-WIDTH'] : 0);
-       $x0 = (isset($objattr['BORDER-X']) ? $objattr['BORDER-X'] : 0);
-       $y0 = (isset($objattr['BORDER-Y']) ? $objattr['BORDER-Y'] : 0);
-
-       // BORDERS
-       if ($objattr['border_top']) { 
-               $tbd = $objattr['border_top'];
-               if (!empty($tbd['s'])) {
-                       $this->_setBorderLine($tbd,$k);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','T'); }
-                       $this->Line($x0, $y0, $x0 + $w, $y0);
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($objattr['border_left']) { 
-               $tbd = $objattr['border_left'];
-               if (!empty($tbd['s'])) {
-                       $this->_setBorderLine($tbd,$k);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','L'); }
-                       $this->Line($x0, $y0, $x0, $y0 + $h);
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($objattr['border_right']) { 
-               $tbd = $objattr['border_right'];
-               if (!empty($tbd['s'])) {
-                       $this->_setBorderLine($tbd,$k);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','R'); }
-                       $this->Line($x0 + $w, $y0, $x0 + $w, $y0 + $h);
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       if ($objattr['border_bottom']) { 
-               $tbd = $objattr['border_bottom'];
-               if (!empty($tbd['s'])) {
-                       $this->_setBorderLine($tbd,$k);
-                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','B'); }
-                       $this->Line($x0, $y0 + $h, $x0 + $w, $y0 + $h);
-                       // Reset Corners and Dash off
-                       $this->SetLineJoin(2);
-                       $this->SetLineCap(2);
-                       $this->SetDash(); 
-               }
-       }
-       $this->SetDash(); 
-       $this->SetAlpha(1);
-}
-
-/*-- END HTML-CSS --*/
-
-
-
-
-function Reset() {
-       $this->SetTColor($this->ConvertColor(0));
-       $this->SetDColor($this->ConvertColor(0));
-       $this->SetFColor($this->ConvertColor(255));
-       $this->SetAlpha(1);
-       $this->colorarray = ''; 
-
-       $this->spanbgcolorarray = '';
-       $this->spanbgcolor = false;
-       $this->spanborder = false;
-       $this->spanborddet = array();
-
-       $this->ResetStyles();
-
-       $this->HREF = '';
-       $this->textparam = array();
-       $this->SetTextOutline();
-
-       $this->SUP = false;
-       $this->SUB = false;
-       $this->strike = false;
-       $this->textshadow = '';
-
-       $this->SetFont($this->default_font,'',0,false);
-       $this->SetFontSize($this->default_font_size,false);
-
-       $this->currentfontfamily = '';  
-       $this->currentfontsize = '';  
-
-/*-- TABLES --*/
-       if ($this->tableLevel) {
-               $this->SetLineHeight('',$this->table_lineheight);       // *TABLES*
-       }
-       else
-/*-- END TABLES --*/
-/*-- LISTS --*/
-
-       if ($this->listlvl && $this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]) {
-               $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]);   // sets default line height
-       }
-       else
-/*-- END LISTS --*/
-       if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
-               $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']);      // sets default line height
-       }
-
-       $this->toupper = false;
-       $this->tolower = false;
-       $this->kerning = false; 
-       $this->lSpacingCSS = '';
-       $this->wSpacingCSS = '';
-       $this->fixedlSpacing = false;   
-       $this->minwSpacing = 0;
-       $this->capitalize = false;
-       $this->SetDash(); //restore to no dash
-       $this->dash_on = false;
-       $this->dotted_on = false;
-       $this->divwidth = 0;
-       $this->divheight = 0;
-       $this->divalign = '';
-       $this->divrevert = false;
-       $this->oldy = -1;
-
-       $bodystyle = array();
-       if (isset($this->cssmgr->CSS['BODY']['FONT-STYLE'])) { $bodystyle['FONT-STYLE'] = $this->cssmgr->CSS['BODY']['FONT-STYLE']; }
-       if (isset($this->cssmgr->CSS['BODY']['FONT-WEIGHT'])) { $bodystyle['FONT-WEIGHT'] = $this->cssmgr->CSS['BODY']['FONT-WEIGHT']; }
-       if (isset($this->cssmgr->CSS['BODY']['COLOR'])) { $bodystyle['COLOR'] = $this->cssmgr->CSS['BODY']['COLOR']; }
-       if (isset($bodystyle)) { $this->setCSS($bodystyle,'BLOCK','BODY'); }
-
-}
-
-/*-- HTML-CSS --*/
-function ReadMetaTags($html) {
-       // changes anykey=anyvalue to anykey="anyvalue" (only do this when this happens inside tags)
-       $regexp = '/ (\\w+?)=([^\\s>"]+)/si'; 
-       $html = preg_replace($regexp," \$1=\"\$2\"",$html);
-       if (preg_match('/<title>(.*?)<\/title>/si',$html,$m)) {
-               $this->SetTitle($m[1]); 
-       }
-       preg_match_all('/<meta [^>]*?(name|content)="([^>]*?)" [^>]*?(name|content)="([^>]*?)".*?>/si',$html,$aux);
-       $firstattr = $aux[1];
-       $secondattr = $aux[3];
-       for( $i = 0 ; $i < count($aux[0]) ; $i++) {
-
-               $name = ( strtoupper($firstattr[$i]) == "NAME" )? strtoupper($aux[2][$i]) : strtoupper($aux[4][$i]);
-               $content = ( strtoupper($firstattr[$i]) == "CONTENT" )? $aux[2][$i] : $aux[4][$i];
-               switch($name) {
-                       case "KEYWORDS": $this->SetKeywords($content); break;
-                       case "AUTHOR": $this->SetAuthor($content); break;
-                       case "DESCRIPTION": $this->SetSubject($content); break;
-               }
-       }
-}
-
-
-function ReadCharset($html) {
-       // Charset conversion
-       if ($this->allow_charset_conversion) {
-          if (preg_match('/<head.*charset=([^\'\"\s]*).*<\/head>/si',$html,$m)) {
-               if (strtoupper($m[1]) != 'UTF-8') {
-                       $this->charset_in = strtoupper($m[1]); 
-               }
-          }
-       }
-}
-
-function setCSS($arrayaux,$type='',$tag='') {  // type= INLINE | BLOCK | LIST // tag= BODY
-       if (!is_array($arrayaux)) return; //Removes PHP Warning
-       // Set font size first so that e.g. MARGIN 0.83em works on font size for this element
-       if (isset($arrayaux['FONT-SIZE'])) {
-               $v = $arrayaux['FONT-SIZE'];
-               if(is_numeric($v[0])) {
-                       if ($type == 'BLOCK' && $this->blklvl>0 && isset($this->blk[$this->blklvl-1]['InlineProperties']) && isset($this->blk[$this->blklvl-1]['InlineProperties']['size'])) {
-                               $mmsize = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['InlineProperties']['size']);
-                       }
-                       else {
-                               $mmsize = $this->ConvertSize($v,$this->FontSize);
-                       }
-                       $this->SetFontSize( $mmsize*(_MPDFK),false ); //Get size in points (pt)
-               }
-               else{
-                       $v = strtoupper($v);
-                       if (isset($this->fontsizes[$v])) { 
-                               $this->SetFontSize( $this->fontsizes[$v]* $this->default_font_size,false);
-                       }
-               }
-               if ($tag == 'BODY') { $this->SetDefaultFontSize($this->FontSizePt); }
-       }
-
-
-       if ($this->useLang && !$this->usingCoreFont) { 
-          if (isset($arrayaux['LANG']) && $arrayaux['LANG'] && $arrayaux['LANG'] != $this->default_lang && ((strlen($arrayaux['LANG']) == 5 && $arrayaux['LANG'] != 'UTF-8') || strlen($arrayaux['LANG']) == 2)) {
-               list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($arrayaux['LANG'], $this->useAdobeCJK);
-               if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); }
-               else { $this->RestrictUnicodeFonts($this->default_available_fonts ); }
-               if ($tag == 'BODY') {
-                       $this->currentLang = $arrayaux['LANG'];
-                       $this->default_lang = $arrayaux['LANG'];
-                       if ($mpdf_pdf_unifonts) { $this->default_available_fonts = $mpdf_pdf_unifonts; }
-               }
-          }
-          else { 
-               $this->RestrictUnicodeFonts($this->default_available_fonts ); 
-          }
-       }
-
-       // FOR INLINE and BLOCK OR 'BODY'
-       if (isset($arrayaux['FONT-FAMILY'])) {
-               $v = $arrayaux['FONT-FAMILY'];
-               //If it is a font list, get all font types
-               $aux_fontlist = explode(",",$v);
-               $found = 0;
-               foreach($aux_fontlist AS $f) {
-                       $fonttype = trim($f);
-                       $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
-                       $fonttype = preg_replace('/ /','',$fonttype);
-                       $v = strtolower(trim($fonttype));
-                       if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; }
-                       if ((!$this->onlyCoreFonts && in_array($v,$this->available_unifonts)) || 
-                               in_array($v,array('ccourier','ctimes','chelvetica')) ||
-                               ($this->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) || 
-                               in_array($v, array('sjis','uhc','big5','gb'))) { 
-                               $fonttype = $v; 
-                               $found = 1;
-                               break;
-                       }
-               }
-               if (!$found) {
-                  foreach($aux_fontlist AS $f) {
-                       $fonttype = trim($f);
-                       $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
-                       $fonttype = preg_replace('/ /','',$fonttype);
-                       $v = strtolower(trim($fonttype));
-                       if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; }
-                       if (in_array($v,$this->sans_fonts) || in_array($v,$this->serif_fonts) || in_array($v,$this->mono_fonts) ) { 
-                               $fonttype = $v; 
-                               break;
-                       }
-                  }
-               }
-
-               if ($tag == 'BODY') { 
-                       $this->SetDefaultFont($fonttype); 
-               }
-               $this->SetFont($fonttype,$this->currentfontstyle,0,false);
-       }
-       else { 
-               $this->SetFont($this->currentfontfamily,$this->currentfontstyle,0,false); 
-       }
-
-   foreach($arrayaux as $k => $v) {
-       if ($type != 'INLINE' && $tag != 'BODY' && $type != 'LIST') {
-         switch($k){
-               // BORDERS
-               case 'BORDER-TOP':
-                       $this->blk[$this->blklvl]['border_top'] = $this->border_details($v);
-                       if ($this->blk[$this->blklvl]['border_top']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
-                       break;
-               case 'BORDER-BOTTOM':
-                       $this->blk[$this->blklvl]['border_bottom'] = $this->border_details($v);
-                       if ($this->blk[$this->blklvl]['border_bottom']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
-                       break;
-               case 'BORDER-LEFT':
-                       $this->blk[$this->blklvl]['border_left'] = $this->border_details($v);
-                       if ($this->blk[$this->blklvl]['border_left']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
-                       break;
-               case 'BORDER-RIGHT':
-                       $this->blk[$this->blklvl]['border_right'] = $this->border_details($v);
-                       if ($this->blk[$this->blklvl]['border_right']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
-                       break;
-
-               // PADDING
-               case 'PADDING-TOP':
-                       $this->blk[$this->blklvl]['padding_top'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'PADDING-BOTTOM':
-                       $this->blk[$this->blklvl]['padding_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'PADDING-LEFT':
-                       $this->blk[$this->blklvl]['padding_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'PADDING-RIGHT':
-                       $this->blk[$this->blklvl]['padding_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-
-               // MARGINS
-               case 'MARGIN-TOP':
-                       $tmp = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       if (isset($this->blk[$this->blklvl]['lastbottommargin'])) {
-                               if ($tmp > $this->blk[$this->blklvl]['lastbottommargin']) {
-                                       $tmp -= $this->blk[$this->blklvl]['lastbottommargin'];
-                               }
-                               else { 
-                                       $tmp = 0;
-                               }
-                       }
-                       $this->blk[$this->blklvl]['margin_top'] = $tmp;
-                       break;
-               case 'MARGIN-BOTTOM':
-                       $this->blk[$this->blklvl]['margin_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'MARGIN-LEFT':
-                       $this->blk[$this->blklvl]['margin_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'MARGIN-RIGHT':
-                       $this->blk[$this->blklvl]['margin_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-
-/*-- BORDER-RADIUS --*/
-               case 'BORDER-TOP-LEFT-RADIUS-H':
-                       $this->blk[$this->blklvl]['border_radius_TL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-TOP-LEFT-RADIUS-V':
-                       $this->blk[$this->blklvl]['border_radius_TL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-TOP-RIGHT-RADIUS-H':
-                       $this->blk[$this->blklvl]['border_radius_TR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-TOP-RIGHT-RADIUS-V':
-                       $this->blk[$this->blklvl]['border_radius_TR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-BOTTOM-LEFT-RADIUS-H':
-                       $this->blk[$this->blklvl]['border_radius_BL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-BOTTOM-LEFT-RADIUS-V':
-                       $this->blk[$this->blklvl]['border_radius_BL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-BOTTOM-RIGHT-RADIUS-H':
-                       $this->blk[$this->blklvl]['border_radius_BR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-               case 'BORDER-BOTTOM-RIGHT-RADIUS-V':
-                       $this->blk[$this->blklvl]['border_radius_BR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
-                       break;
-/*-- END BORDER-RADIUS --*/
-
-               case 'BOX-SHADOW':
-                       $bs = $this->cssmgr->setCSSboxshadow($v);
-                       if ($bs) { $this->blk[$this->blklvl]['box_shadow'] = $bs; }
-                       break;
-
-               case 'BACKGROUND-CLIP':
-                       if (strtoupper($v) == 'PADDING-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'padding-box'; }
-                       else if (strtoupper($v) == 'CONTENT-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'content-box'; }     // mPDF 5.6.09
-                       break;
-
-               case 'PAGE-BREAK-AFTER':
-                       if (strtoupper($v) == 'AVOID') { $this->blk[$this->blklvl]['page_break_after_avoid'] = true; }
-                       else if (strtoupper($v) == 'ALWAYS' || strtoupper($v) == 'LEFT' || strtoupper($v) == 'RIGHT') { $this->blk[$this->blklvl]['page_break_after'] = strtoupper($v) ; }
-                       break;
-
-               case 'WIDTH':
-                       if (strtoupper($v) != 'AUTO') { 
-                               $this->blk[$this->blklvl]['css_set_width'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); 
-                       }
-                       break;
-
-               case 'TEXT-INDENT':
-                       // Left as raw value (may include 1% or 2em)
-                       $this->blk[$this->blklvl]['text_indent'] = $v;
-                       break;
-
-         }//end of switch($k)
-       }
-
-
-       if ($type != 'INLINE' && $type != 'LIST') {     // includes BODY tag
-         switch($k){
-
-               case 'MARGIN-COLLAPSE': // Custom tag to collapse margins at top and bottom of page
-                       if (strtoupper($v) == 'COLLAPSE') { $this->blk[$this->blklvl]['margin_collapse'] = true; }
-                       break;
-
-               case 'LINE-HEIGHT':
-                       $this->blk[$this->blklvl]['line_height'] = $this->fixLineheight($v);
-                       if (!$this->blk[$this->blklvl]['line_height'] ) { $this->blk[$this->blklvl]['line_height'] = $this->normalLineheight; }
-                       break;
-
-               case 'TEXT-ALIGN': //left right center justify
-                       switch (strtoupper($v)) {
-                               case 'LEFT': 
-                        $this->blk[$this->blklvl]['align']="L";
-                        break;
-                               case 'CENTER': 
-                        $this->blk[$this->blklvl]['align']="C";
-                        break;
-                               case 'RIGHT': 
-                        $this->blk[$this->blklvl]['align']="R";
-                        break;
-                               case 'JUSTIFY': 
-                        $this->blk[$this->blklvl]['align']="J";
-                        break;
-                       }
-                       break;
-
-/*-- BACKGROUNDS --*/
-               case 'BACKGROUND-GRADIENT': 
-                       if ($type  == 'BLOCK') {
-                               $this->blk[$this->blklvl]['gradient'] = $v;
-                       }
-                       break;
-/*-- END BACKGROUNDS --*/
-
-               case 'DIRECTION': 
-                       if ($v) { $this->blk[$this->blklvl]['direction'] = strtolower($v); }
-                       break;
-
-         }//end of switch($k)
-       }
-
-       // FOR INLINE ONLY
-       if ($type == 'INLINE' || $type == 'LIST') {
-         switch($k){
-               case 'DISPLAY': // Custom tag to collapse margins at top and bottom of page
-                       if (strtoupper($v) == 'NONE') { $this->inlineDisplayOff = true; }
-                       break;
-               case 'DIRECTION': 
-                       break;
-         }//end of switch($k)
-       }
-       // FOR INLINE ONLY
-       if ($type == 'INLINE') {
-         switch($k){
-               // BORDERS
-               case 'BORDER-TOP':
-                       $this->spanborddet['T'] = $this->border_details($v);
-                       $this->spanborder = true;
-                       break;
-               case 'BORDER-BOTTOM':
-                       $this->spanborddet['B'] = $this->border_details($v);
-                       $this->spanborder = true;
-                       break;
-               case 'BORDER-LEFT':
-                       $this->spanborddet['L'] = $this->border_details($v);
-                       $this->spanborder = true;
-                       break;
-               case 'BORDER-RIGHT':
-                       $this->spanborddet['R'] = $this->border_details($v);
-                       $this->spanborder = true;
-                       break;
-               // mPDF 5.6.26
-               case 'VISIBILITY':      // block is set in OpenTag
-                       $v = strtolower($v);
-                       if ($v == 'visible' || $v == 'hidden' || $v == 'printonly' || $v == 'screenonly') { 
-                               $this->textparam['visibility'] = $v;
-                       }
-                       break;
-         }//end of switch($k)
-       }
-
-
-       // FOR INLINE and BLOCK
-         switch($k){
-               case 'TEXT-ALIGN': //left right center justify
-                       if (strtoupper($v) == 'NOJUSTIFY' && $this->blk[$this->blklvl]['align']=="J") {
-                        $this->blk[$this->blklvl]['align']="";
-                       }
-                       break;
-               // bgcolor only - to stay consistent with original html2fpdf
-               case 'BACKGROUND': 
-               case 'BACKGROUND-COLOR': 
-                       $cor = $this->ConvertColor($v);
-                       if ($cor) { 
-                          if ($tag  == 'BODY') {
-                               $this->bodyBackgroundColor = $cor;
-                          }
-                          else if ($type == 'INLINE' || $type == 'LIST') {
-                               $this->spanbgcolorarray = $cor;
-                               $this->spanbgcolor = true;
-                          }
-                          else {
-                               $this->blk[$this->blklvl]['bgcolorarray'] = $cor;
-                               $this->blk[$this->blklvl]['bgcolor'] = true;
-                          }
-                       }
-                       else if ($type != 'INLINE' && $type != 'LIST') {
-                               if ($this->ColActive || $this->keep_block_together) { 
-                                       $this->blk[$this->blklvl]['bgcolorarray'] = $this->blk[$this->blklvl-1]['bgcolorarray'] ;
-                                       $this->blk[$this->blklvl]['bgcolor'] = $this->blk[$this->blklvl-1]['bgcolor'] ;
-                               }
-                       }
-                       break;
-
-               // auto | normal | none
-               case 'FONT-KERNING': 
-                       if ((strtoupper($v) == 'NORMAL' || strtoupper($v) == 'AUTO') && $this->useKerning) { $this->kerning = true; }
-                       else if (strtoupper($v) == 'NONE') { $this->kerning = false; }
-                       break;
-
-
-               // normal | <length>
-               case 'LETTER-SPACING': 
-                       $this->lSpacingCSS = $v;
-                       if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { 
-                               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
-                       }
-                       break;
-
-               // normal | <length>
-               case 'WORD-SPACING': 
-                       $this->wSpacingCSS = $v;
-                       if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
-                               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
-                       }
-                       break;
-
-               case 'FONT-STYLE': // italic normal oblique
-                       switch (strtoupper($v)) {
-                               case 'ITALIC': 
-                               case 'OBLIQUE': 
-                               $this->SetStyle('I',true);
-                                       break;
-                               case 'NORMAL': 
-                               $this->SetStyle('I',false);
-                                       break;
-                       }
-                       break;
-
-               case 'FONT-WEIGHT': // normal bold //Does not support: bolder, lighter, 100..900(step value=100)
-                       switch (strtoupper($v)) {
-                               case 'BOLD': 
-                               $this->SetStyle('B',true);
-                                       break;
-                               case 'NORMAL': 
-                               $this->SetStyle('B',false);
-                                       break;
-                       }
-                       break;
-
-               case 'VERTICAL-ALIGN': //super and sub only dealt with here e.g. <SUB> and <SUP>
-                       switch (strtoupper($v)) {
-                               case 'SUPER': 
-                        $this->SUP=true;
-                        $this->SUB=false;      // mPDF 5.6.07
-                       break;
-                               case 'SUB': 
-                        $this->SUB=true;
-                        $this->SUP=false;      // mPDF 5.6.07
-                       break;
-                               case 'BASELINE':        // mPDF 5.6.07
-                        $this->SUB=false;
-                        $this->SUP=false;
-                       break;
-                       }
-                       break;
-
-               case 'TEXT-DECORATION': // none underline line-through (strikeout) //Does not support: overline, blink
-                       if (stristr($v,'LINE-THROUGH')) {
-                                       $this->strike = true;
-                       }
-                       else if (stristr($v,'UNDERLINE')) {
-                               $this->SetStyle('U',true);
-                       }
-                       else if (stristr($v,'NONE')) {
-                               $this->SetStyle('U',false);
-                                       $this->strike = false;  // mPDF 5.6.07
-                       }
-                       break;
-
-               case 'FONT-VARIANT': 
-                       switch (strtoupper($v)) {
-                               case 'SMALL-CAPS': 
-                                       $this->SetStyle('S',true);
-                                       break;
-                               case 'NORMAL': 
-                                       $this->SetStyle('S',false);
-                                       break;
-                       }
-                       break;
-
-               case 'TEXT-TRANSFORM': // none uppercase lowercase //Does support: capitalize
-                       switch (strtoupper($v)) { //Not working 100%
-                               case 'CAPITALIZE':
-                                       $this->capitalize=true; 
-                                       break;
-                               case 'UPPERCASE':
-                                       $this->toupper=true;
-                                       break;
-                               case 'LOWERCASE':
-                                       $this->tolower=true;
-                                       break;
-                               case 'NONE': break;
-                       }
-                       break;
-
-               case 'TEXT-SHADOW':
-                       $ts = $this->cssmgr->setCSStextshadow($v);
-                       if ($ts) { $this->textshadow = $ts; }
-                       break;
-
-               case 'HYPHENS': // mPDF 5.6.08
-                       if (strtoupper($v)=='NONE') {
-                               $this->textparam['hyphens'] = 2;
-                       }
-                       else if (strtoupper($v)=='AUTO') {
-                               $this->textparam['hyphens'] = 1;
-                       }
-                       else if (strtoupper($v)=='MANUAL') {
-                               $this->textparam['hyphens'] = 0;
-                       }
-                       break;
-
-               case 'TEXT-OUTLINE':    // mPDF 5.6.07
-                       if (strtoupper($v)=='NONE') {
-                               $this->textparam['outline-s'] = false;
-                       }
-                       break;
-
-               case 'TEXT-OUTLINE-WIDTH':      // mPDF 5.6.07
-               case 'OUTLINE-WIDTH': 
-                       switch(strtoupper($v)) {
-                               case 'THIN': $v = '0.03em'; break;
-                               case 'MEDIUM': $v = '0.05em'; break;
-                               case 'THICK': $v = '0.07em'; break;
-                       }
-                       $w = $this->ConvertSize($v,$this->blk[$this->blklvl]['inner_width'],$this->FontSize);
-                       if ($w) {
-                               $this->textparam['outline-WIDTH'] = $w;
-                               $this->textparam['outline-s'] = true;
-                       }
-                       else { $this->textparam['outline-s'] = false; }
-                       break;
-
-               case 'TEXT-OUTLINE-COLOR':      // mPDF 5.6.07
-               case 'OUTLINE-COLOR': 
-                       if (strtoupper($v) == 'INVERT') {
-                          if ($this->colorarray) {
-                               $cor = $this->colorarray;
-                               $this->textparam['outline-COLOR'] = $this->_invertColor($cor);
-                          }
-                          else {
-                               $this->textparam['outline-COLOR'] = $this->ConvertColor(255);
-                          }
-                       }
-                       else { 
-                         $cor = $this->ConvertColor($v);
-                         if ($cor) { $this->textparam['outline-COLOR'] = $cor ; }        
-                       }
-                       break;
-
-               case 'COLOR': // font color
-                       $cor = $this->ConvertColor($v);
-                       if ($cor) { 
-                               $this->colorarray = $cor;
-                               $this->SetTColor($cor); 
-                       }
-                 break;
-
-
-         }//end of switch($k)
-
-
-   }//end of foreach
-}
-
-/*-- END HTML-CSS --*/
-
-
-function SetStyle($tag,$enable) {
-       $this->$tag=$enable;
-       $style='';
-       foreach(array('B','I','U','S') as $s) {
-               if($this->$s) {
-                       $style.=$s;
-               }
-       }
-       if ($this->S && empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); }
-       $this->currentfontstyle=$style;
-       $this->SetFont('',$style,0,false);
-}
-
-// Set multiple styles at one $str e.g. "BIS"
-function SetStylesArray($arr) {
-       $style='';
-       foreach(array('B','I','U','S') as $s) {
-         if (isset($arr[$s])) {
-               if ($arr[$s]) {
-                       $this->$s = true;
-                       $style.=$s;
-               }
-               else { $this->$s = false; }
-         }
-         else if ($this->$s) { $style.=$s; }
-       }
-       $this->currentfontstyle=$style;
-       $this->SetFont('',$style,0,false);
-}
-
-// Set multiple styles at one $str e.g. "BIS"
-function SetStyles($str) {
-       $style='';
-       foreach(array('B','I','U','S') as $s) {
-               if (strpos($str,$s) !== false) {
-                       $this->$s = true;
-                       $style.=$s;
-               }
-               else { $this->$s = false; }
-       }
-       $this->currentfontstyle=$style;
-       $this->SetFont('',$style,0,false);
-}
-
-function ResetStyles() {
-       foreach(array('B','I','U','S') as $s) {
-               $this->$s = false;
-       }
-       $this->currentfontstyle='';
-       $this->SetFont('','',0,false);
-}
-
-
-function DisableTags($str='')
-{
-  if ($str == '') //enable all tags
-  {
-       //Insert new supported tags in the long string below.
-       $this->enabledtags = "<span><s><strike><del><bdo><big><small><ins><cite><acronym><font><sup><sub><b><u><i><a><strong><em><code><samp><tt><kbd><var><q><table><thead><tfoot><tbody><tr><th><td><ol><ul><li><dl><dt><dd><form><input><select><textarea><option><div><p><h1><h2><h3><h4><h5><h6><pre><center><blockquote><address><hr><img><br><indexentry><indexinsert><bookmark><watermarktext><watermarkimage><tts><ttz><tta><column_break><columnbreak><newcolumn><newpage><page_break><pagebreak><formfeed><columns><toc><tocentry><tocpagebreak><pageheader><pagefooter><setpageheader><setpagefooter><sethtmlpageheader><sethtmlpagefooter><annotation><template><jpgraph><barcode><dottab><caption><textcircle><fieldset><legend><article><aside><figure><figcaption><footer><header><hgroup><nav><section><mark><details><summary><meter><progress><time>";       // mPDF 5.5.09
-  }
-  else
-  {
-    $str = explode(",",$str);
-    foreach($str as $v) $this->enabledtags = str_replace(trim($v),'',$this->enabledtags);
-  }
-}
-
-
-/*-- TABLES --*/
-
-function finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight) {
-       $af = 0;        // Above font
-       $bf = 0;        // Below font
-       $mta = 0;       // Maximum top-aligned 
-       $mba = 0;       // Maximum bottom-aligned 
-       if ($lhxt['BS']) {
-               $af = max($af, ($lhxt['BS'] - ($maxfontsize * (0.5 + $this->baselineC))));
-       }
-       if ($lhxt['M']) { 
-               $af = max($af, ($lhxt['M'] - $maxfontsize)/2);
-               $bf = max($bf, ($lhxt['M'] - $maxfontsize)/2);
-       }
-       if ($lhxt['TT']) { 
-               $bf = max($bf, ($lhxt['TT'] - $maxfontsize));
-       }
-       if ($lhxt['TB']) { 
-               $af = max($af, ($lhxt['TB'] - $maxfontsize));
-       }
-       if ($lhxt['T']) { 
-               $mta = max($mta, $lhxt['T']);
-       }
-       if ($lhxt['B']) { 
-               $mba = max($mba, $lhxt['B']);
-       }
-       if ((!$lhfixed || !$forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
-               $maxlineHeight = $maxfontsize + $af + $bf;
-       }
-       else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
-       if ($mta > $maxlineHeight) { 
-               $bf += ($mta - $maxlineHeight);
-               $maxlineHeight = $mta;
-       }
-       if ($mba > $maxlineHeight) { 
-               $af += ($mba - $maxlineHeight);
-               $maxlineHeight = $mba;
-       }
-       return $maxlineHeight; 
-}
-
-function TableWordWrap($maxwidth, $forcewrap = 0, $textbuffer = '', $def_fontsize, $returnarray=false) {       // NB ** returnarray used in flowchart
-   $biggestword=0;
-   $toonarrow=false;
-
-   $textbuffer[0][0] = preg_replace('/^[ ]*/','',$textbuffer[0][0]);
-   if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; }
-
-   $text = '';
-   $lhfixed = false; 
-   if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; }
-   if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);}
-   else { $def_lineheight = 0; }
-   // START OF NEW LINE
-   // Initialise lineheight variables
-   $maxfontsize = 0;
-   $forceExactLineheight = true;
-   $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-   $maxlineHeight = $def_lineheight ;
-   $ch = 0;
-   $width = 0;
-   $ln = 1;    // Counts line number
-   $mxw = $this->GetCharWidth('W',false);
-   for($cctr=0;$cctr<count($textbuffer);$cctr++) {     // mPDF 5.6.22
-       $chunk = $textbuffer[$cctr];    // mPDF 5.6.22
-       $line = $chunk[0];
-       //IMAGE
-      if (substr($line,0,3) == "\xbb\xa4\xac") { //identifier has been identified!
-               $objattr = $this->_getObjAttr($line);
-               if ($objattr['type'] == 'nestedtable') {
-                       // END OF LINE
-                       // Finalise & add lineheight
-                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-                       $level = $objattr['level'];
-                       $ih = $this->table[($level+1)][$objattr['nestedcontent']]['h']; // nested table width
-                       $ch += $ih;
-                       // START OF NEW LINE
-                       // Initialise lineheight variables
-                       $ln++;
-                       $maxfontsize = 0;
-                       $forceExactLineheight = true;
-                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                       $maxlineHeight = $def_lineheight ;
-                       $width = 0;
-                       $text = "";
-                       continue;
-               }
-
-               list($skipln,$iw,$ih) = $this->inlineObject((isset($specialcontent['type']) ? $specialcontent['type'] : null),0,0, $objattr, $this->lMargin,$width,$maxwidth,$maxlineHeight,false,true);
-               if ($objattr['type'] == 'hr') {
-                       // END OF LINE
-                       // Finalise & add lineheight 
-                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-                       // Add HR height
-                       $ch += $ih;
-                       // START OF NEW LINE
-                       // Initialise lineheight variables
-                       $ln++;
-                       $maxfontsize = 0;
-                       $forceExactLineheight = true;
-                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                       $maxlineHeight = $def_lineheight ;
-                       $width = 0;
-                       $text = "";
-                       continue;
-               }
-
-               if ($skipln==1 || $skipln==-2) {
-                       // Finish last line
-                       // END OF LINE
-                       // Finalise & add lineheight 
-                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-                       // START OF NEW LINE
-                       // Initialise lineheight variables
-                       $maxfontsize = 0;
-                       $forceExactLineheight = true;
-                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                       $maxlineHeight = $def_lineheight ;
-                       $ln++;
-                       $width = 0;
-                       $text = "";
-               }
-               $va = (isset($objattr['vertical-align']) ? $objattr['vertical-align'] : null); 
-               if ($va) {
-                       $lhxt[$va] = max($lhxt[$va], $ih);
-               }
-               if ($lhfixed && $ih > $def_fontsize) { $forceExactLineheight = false; }
-               $maxlineHeight = max($maxlineHeight ,$ih);
-               $width += $iw;
-               continue;
-       }
-
-       // SET FONT SIZE/STYLE from $chunk[n]
-       // FONTSIZE
-       if(isset($chunk[11]) and $chunk[11] != '') { 
-          if ($this->shrin_k) {
-               $this->SetFontSize($chunk[11]/$this->shrin_k,false); 
-          }
-          else {
-               $this->SetFontSize($chunk[11],false); 
-          }
-       }
-       if ($line == "\n") {
-               // END OF LINE
-               $maxfontsize = max($maxfontsize,$this->FontSize); 
-               $fh = $this->_computeLineheight($this->table_lineheight);
-               if ($lhfixed && $this->FontSize > $def_fontsize) {
-                       $fh = $this->FontSize;
-                       $forceExactLineheight = false; 
-               }
-               $maxlineHeight = max($maxlineHeight,$fh); 
-
-               // Finalise & add lineheight 
-               $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-               // START OF NEW LINE
-               // Initialise lineheight variables
-               $maxfontsize = 0;
-               $forceExactLineheight = true;
-               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-               $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
-               $ln++;
-               $text = "";
-               $width = 0;
-               if(isset($chunk[11]) and $chunk[11] != '') { 
-                       $this->SetFontSize($this->default_font_size,false);
-               }
-               continue;
-       }
-
-       $lbw = $rbw = 0;        // Border widths
-       if(isset($chunk[16]) && !empty($chunk[16])) {   //Border
-               $this->spanborddet = $chunk[16];
-               if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w'];
-               if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w'];
-       }
-      if(isset($chunk[15])) {   // Word spacing
-               $this->wSpacingCSS = $chunk[15]; 
-               if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
-                       $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); 
-               }
-       }
-      if(isset($chunk[14])) {   // Letter spacing
-               $this->lSpacingCSS = $chunk[14]; 
-               if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
-                       $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
-               }
-       }
-      if(isset($chunk[13])) {   // Font Kerning
-               $this->kerning = $chunk[13]; 
-       }
-      if(isset($chunk[9])) {    // Text params - Outline, hyphens      // mPDF 5.6.08
-               $this->textparam = $chunk[9]; 
-       }
-       // FONTFAMILY
-       if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); }
-
-       // FONT STYLE B I U
-       if(isset($chunk[2]) and $chunk[2] != '') {
-               $this->SetStyles($chunk[2]);
-       }
-
-       $space = $this->GetCharWidth(' ',false);
-
-       if (mb_substr($line,0,1,$this->mb_enc ) == ' ') {       // line (chunk) starts with a space
-               $width += $space;
-               $text .= ' ';
-       }
-
-       if (mb_substr($line,(mb_strlen($line,$this->mb_enc )-1),1,$this->mb_enc ) == ' ') { $lsend = true; }    // line (chunk) ends with a space
-       else { $lsend = false; }
-       $line= trim($line);
-       if ($line == '') { continue; }
-
-       // mPDF ITERATION
-       if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line);
-
-       $words = explode(' ', $line);
-
-       foreach ($words as $k=>$word) {
-               $word = trim($word);
-               $wordwidth = $this->GetStringWidth($word);
-               if ($k==0) { $wordwidth += $lbw; }
-               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
-               //maxwidth is insufficient for one word
-               if ($wordwidth > $maxwidth + 0.0001) {
-                       $firstchunk=true;
-                       while($wordwidth > $maxwidth + 0.0001) {
-                               $chw = 0;       // check width
-                               $oneCJKorphan = false;
-                               $mlen = mb_strlen($word, $this->mb_enc );
-                               for ( $i = 0; $i < $mlen; $i++ ) {
-                                       $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc ));
-                                       if ($k==0) { $chw += $lbw; }
-                                       if ($k==(count($words)-1)) { $chw += $rbw; }
-                                       if ($chw > $maxwidth) {
-                                               if ($i==0 && $firstchunk) {
-                                                       // If first letter of line does not fit
-                                                       $wordwidth = $maxwidth - 0.0001;
-                                                       if ($this->debug) { $this->Error("Table cell width calculated less than that needed for one character!"); }
-                                                       break;
-                                               }
-/*-- CJK-FONTS --*/
-                                               // mPDF 5.6.40  mPDF 5.6.44
-                                               if ($this->checkCJK && !$this->usingCoreFont && preg_match("/[".$this->pregCJKchars."]/u", $word)) {    // mPDF 5.6.44
-                                                       if (!$oneCJKorphan && preg_match('/['.$this->CJKoverflow.']$/u',mb_substr($word,0,$i+1,$this->mb_enc )) && $this->allowCJKorphans) {
-                                                               $wordwidth = $maxwidth - 0.0001;
-                                                               $oneCJKorphan = true; 
-                                                               continue;
-                                                       }
-                                                       $cjkfix = 0;
-                                                       // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line
-                                                       if ($i>0 && preg_match("/[".$this->CJKleading."$]/u", mb_substr($word,0,$i,$this->mb_enc ))) {
-                                                               $cjkfix = 1;
-                                                       }
-                                                       // Next character is not allowed to start a new line
-                                                       else if (preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i,1,$this->mb_enc ))) {
-                                                               // try squeezing another character(s) onto this line = Oikomi
-                                                               if ($this->allowCJKorphans && !$oneCJKorphan) {
-                                                                       //if lookahead is not another following char
-                                                                       if ($i==($mlen-1) || ($i<($mlen-1) && !preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i+1,1,$this->mb_enc )))) {
-                                                                               $wordwidth = $maxwidth - 0.0001;
-                                                                               $oneCJKorphan = true; 
-                                                                               continue;
-                                                                       }
-                                                               }
-                                                               // or move lastchar(s) to next line
-                                                               $cjkfix = 2;
-                                                       }
-                                                       // mPDF 5.6.42
-                                                       // CJK numerals kept together
-                                                       else if (preg_match("/([".$this->pregCJKchars."]+[0-9\x{ff10}-\x{ff19}]+$)/u", mb_substr($word,0,$i,$this->mb_enc )) && preg_match("/^([0-9\x{ff10}-\x{ff19}]+[".$this->pregCJKchars."]+)/u", mb_substr($word,$i,16,$this->mb_enc ))) {
-                                                               $cjkfix = 3;
-                                                       }
-                                                       if ($cjkfix) {
-                                                               //move lastchar(s) to next line
-                                                               $m0 = mb_substr($word,$i-1,1,$this->mb_enc );   // chars to move
-                                                               $m1 = mb_substr($word,0,$i-1,$this->mb_enc );   // str after stripped chars to move
-                                                               $mi = $i - 1;
-                                                               if ($cjkfix == 3) { $match = "0-9\x{ff10}-\x{ff19}"; }
-                                                               else { $match = $this->CJKleading; }
-                                                               while(preg_match("/[".$match."$]/u", $m1) && mb_strlen($m1, $this->mb_enc)>2) {
-                                                                       $m0 = mb_substr($m1,$mi-1,1,$this->mb_enc ).$m0;        // chars to move
-                                                                       $m1 = mb_substr($m1,0,$mi-1,$this->mb_enc );   // str after stripped chars to move
-                                                                       $mi--;
-                                                               }
-                                                               // Insert $m0 into $word at $i
-                                                               $word =  mb_substr($word,0,$i,$this->mb_enc ) . $m0 .  mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
-                                                               $mlen = mb_strlen($word, $this->mb_enc );       // increment max for loop counter
-                                                       }
-
-
-
-                                               }
-/*-- END CJK-FONTS --*/
-
-                                               if ($text && $firstchunk) {
-                                                       // END OF LINE
-                                                       // Finalise & add lineheight 
-                                                       $maxfontsize = max($maxfontsize,$this->FontSize); 
-                                                       $fh = $this->_computeLineheight($this->table_lineheight);
-                                                       if ($lhfixed && $this->FontSize > $def_fontsize) {
-                                                               $fh = $this->FontSize;
-                                                               $forceExactLineheight = false; 
-                                                       }
-                                                       $maxlineHeight = max($maxlineHeight,$fh); 
-                                                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-                                                       // START OF NEW LINE
-                                                       // Initialise lineheight variables
-                                                       $maxfontsize = $this->FontSize;
-                                                       $forceExactLineheight = true;
-                                                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                                                       $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
-                                                       $ln++;
-                                               }
-                                               // END OF LINE
-                                               // Finalise & add lineheight 
-                                               $maxfontsize = max($maxfontsize,$this->FontSize); 
-                                               $fh = $this->_computeLineheight($this->table_lineheight);
-                                               if ($lhfixed && $this->FontSize > $def_fontsize) {
-                                                       $fh = $this->FontSize;
-                                                       $forceExactLineheight = false; 
-                                               }
-                                               $maxlineHeight = max($maxlineHeight,$fh); 
-                                               $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-                                               // START OF NEW LINE
-                                               // Initialise lineheight variables
-                                               $maxfontsize = $this->FontSize;
-                                               $forceExactLineheight = true;
-                                               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                                               $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
-                                               $ln++;
-                                               $mxw = $maxwidth;
-                                               $text = mb_substr($word,0,$i,$this->mb_enc );
-                                               $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
-                                               $wordwidth = $this->GetStringWidth($word);
-                                               $width = 0; 
-                                               $firstchunk=false;
-                                               break;
-                                       }
-                               }
-                               if (mb_strlen($word, $this->mb_enc )<2 && $wordwidth > $maxwidth + 0.0001) {
-                                       $wordwidth = $maxwidth - 0.0001;
-                                       if ($this->debug) { $this->Error("Table cell width calculated less than that needed for single character!"); }
-                               }
-                               $firstchunk=false;
-                       }
-               }
-               // Word fits on line...
-               if ($width + $wordwidth  < $maxwidth + 0.0001) {
-                       $mxw = max($mxw, ($width+$wordwidth));
-                       $width += $wordwidth + $space;
-                       $text .= $word.' ';
-               }
-               // Word does not fit on line...
-               else {
-                               // mPDF 5.6.21  hard hyphens
-                               if ($this->textparam['hyphens'] != 2 && preg_match('/\-/',$word)) {
-                                       list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($word, ($maxwidth - $width)-$this->GetCharWidth("-", false));
-                                       if ($hardsuccess) { 
-                                               $text .= $pre.'-';
-                                               $word = $post;
-                                               $wordwidth = $this->GetStringWidth($word);
-                                               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
-                                       }
-                               }
-/*-- HYPHENATION --*/
-                               // Soft Hyphens chr(173)
-                               else if ($this->textparam['hyphens'] != 2 && (!$this->usingCoreFont && preg_match("/\xc2\xad/",$word)) || ($this->usingCoreFont && preg_match("/".chr(173)."/",$word) && ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats')) ) {      // mPDF 5.6.06  5.6.08
-                                       list($success,$pre,$post,$prelength) = $this->softHyphenate($word, ($maxwidth - $width));
-                                       if ($success) { 
-                                               $text .= $pre.'-';
-                                               $word = $post;
-                                               $wordwidth = $this->GetStringWidth($word);
-                                               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
-                                       }
-                               }
-                               else if ($this->textparam['hyphens'] == 1) {    // mPDF 5.6.06   5.6.08
-                                       list($success,$pre,$post,$prelength) = $this->hyphenateWord($word, ($maxwidth - $width));
-                                       if ($success) { 
-                                               $text .= $pre.'-';
-                                               $word = $post;
-                                               $wordwidth = $this->GetStringWidth($word);
-                                               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
-                                       }
-                               }
-/*-- END HYPHENATION --*/
-
-
-                               // mPDF 5.6.22
-                               if (    count($textbuffer)>1 && $cctr > 0 && $k==0
-                                       && (substr($textbuffer[$cctr][0],0,3) != "\xbb\xa4\xac")
-                                       && (substr($textbuffer[$cctr-1][0],0,3) != "\xbb\xa4\xac")
-                                       && substr($textbuffer[$cctr-1][0],-1,1) != ' '
-                                       && substr($textbuffer[$cctr][0],0,1) != ' '
-                                       ) {
-                                       // Go back to find a space in a previous chunk of content
-                                       $found = false;
-                                       for ($ix=$cctr-1;$ix>=0;$ix--) {
-                                               if (preg_match('/[ ]/',$textbuffer[$ix][0])) { $found = $ix; break; }           
-                                       }
-                                       if ($found !== false) {
-                                               $charpos = strrpos($textbuffer[$found][0],' ');
-                                               // mPDF 5.6.24
-                                               $a1 = $a2 = $textbuffer[$found];
-                                               $a1[0] = "\n";
-                                               $a2[0] = substr($textbuffer[$found][0], $charpos+1, strlen($textbuffer[$found][0])-$charpos);
-                                               $textbuffer[$found][0] = substr($textbuffer[$found][0], 0, $charpos);
-                                               array_insert($textbuffer, $a1, $found+1);
-                                               array_insert($textbuffer, $a2, $found+2);
-                                               // Initialise all variables
-                                               $biggestword=0;
-                                               $toonarrow=false;
-                                               $lhfixed = false; 
-                                               if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; }
-                                               if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);}
-                                               else { $def_lineheight = 0; }
-                                               $maxfontsize = 0;
-                                               $forceExactLineheight = true;
-                                               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                                               $maxlineHeight = $def_lineheight ;
-                                               $ch = 0;
-                                               $width = 0;
-                                               $ln = 1;        // Counts line number
-                                               $mxw = $this->GetCharWidth('W',false);
-                                               $text = '';
-
-                                               $cctr = -1;
-                                               break;
-                                       }
-                               }
-
-                               // END OF LINE
-                               // Finalise & add lineheight 
-                               $maxfontsize = max($maxfontsize,$this->FontSize); 
-                               $fh = $this->_computeLineheight($this->table_lineheight);
-                               if ($lhfixed && $this->FontSize > $def_fontsize) {
-                                       $fh = $this->FontSize;
-                                       $forceExactLineheight = false; 
-                               }
-                               $maxlineHeight = max($maxlineHeight,$fh); 
-                               $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-                               $mxw = $maxwidth;
-                               // START OF NEW LINE
-                               // Initialise lineheight variables
-                               $maxfontsize = $this->FontSize;
-                               $forceExactLineheight = true;
-                               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
-                               $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
-                               $ln++;
-                               $width = $wordwidth + $space;
-                               $text = $word.' ';
-          }
-               $maxfontsize = max($maxfontsize,$this->FontSize); 
-               $fh = $this->_computeLineheight($this->table_lineheight);
-               if ($lhfixed && $this->FontSize > $def_fontsize) {
-                       $fh = $this->FontSize;
-                       $forceExactLineheight = false; 
-               }
-               $maxlineHeight = max($maxlineHeight,$fh); 
-       }
-
-       // End of textbuffer chunk
-       if (!$lsend) {
-               $width -= $space;
-               $text = rtrim($text);
-       }
-
-       // RESET FONT SIZE/STYLE
-       // RESETTING VALUES
-       //Now we must deactivate what we have used
-       if(isset($chunk[2]) and $chunk[2] != '') {
-               $this->ResetStyles();
-       }
-       if(isset($chunk[4]) and $chunk[4] != '') {
-               $this->SetFont($this->default_font,$this->FontStyle,0,false);
-       }
-       if(isset($chunk[11]) and $chunk[11] != '') { 
-               $this->SetFontSize($this->default_font_size,false);
-       }
-       $this->spanborddet = array();
-       $this->kerning = false; 
-       $this->lSpacingCSS = '';
-       $this->wSpacingCSS = '';
-       $this->fixedlSpacing = false;
-       $this->minwSpacing = 0; 
-   }
-   // Finalise lineheight if something output on line and add
-   if ($width) {
-       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
-   }
-   if ($returnarray) { return array($ch,$ln,$mxw); }
-   else { return $ch; }
-
-}
-
-
-function TableCheckMinWidth($maxwidth, $forcewrap = 0, $textbuffer) {
-       $biggestword=0;
-       $toonarrow=false;
-       if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; }
-
-       foreach ($textbuffer as $chunk) {
-
-               $line = $chunk[0];
-               // mPDF ITERATION
-               if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line);
-
-               // IMAGES & FORM ELEMENTS
-       if (substr($line,0,3) == "\xbb\xa4\xac") { //inline object - FORM element or IMAGE!
-                       $objattr = $this->_getObjAttr($line);
-                       if ($objattr['type']!='hr' && isset($objattr['width']) && ($objattr['width']/$this->shrin_k) > ($maxwidth + 0.0001) ) { 
-                               if (($objattr['width']/$this->shrin_k) > $biggestword) { $biggestword = ($objattr['width']/$this->shrin_k); }
-                               $toonarrow=true;
-                       }
-                       continue;
-               }
-
-               if ($line == "\n") {
-                       continue;
-               }
-               $line = trim($line );
-               // SET FONT SIZE/STYLE from $chunk[n]
-
-               // FONTSIZE
-             if(isset($chunk[11]) and $chunk[11] != '') { 
-                  if ($this->shrin_k) {
-                       $this->SetFontSize($chunk[11]/$this->shrin_k,false); 
-                  }
-                  else {
-                       $this->SetFontSize($chunk[11],false); 
-                  }
-               }
-               // FONTFAMILY
-             if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); }
-               // B I U
-             if(isset($chunk[2]) and $chunk[2] != '') {
-                       $this->SetStyles($chunk[2]);
-             }
-
-               $lbw = $rbw = 0;        // Border widths
-               if(isset($chunk[16]) && !empty($chunk[16])) { //Border
-                       $this->spanborddet = $chunk[16];
-                       $lbw = $this->spanborddet['L']['w'];
-                       $rbw = $this->spanborddet['R']['w'];
-               }
-             if(isset($chunk[15])) {    // Word spacing
-                       $this->wSpacingCSS = $chunk[15]; 
-                       if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
-                               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
-                       }
-               }
-             if(isset($chunk[14])) {    // Letter spacing
-                       $this->lSpacingCSS = $chunk[14]; 
-                       if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
-                               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); 
-                       }
-               }
-             if(isset($chunk[13])) {    // Font Kerning
-                       $this->kerning = $chunk[13]; 
-               }
-
-               $words = explode(' ', $line);
-               foreach ($words as $k=>$word) {
-                       $word = trim($word);
-                       $wordwidth = $this->GetStringWidth($word);
-                       if ($k==0) { $wordwidth += $lbw; }
-                       if ($k==(count($words)-1)) { $wordwidth += $rbw; }
-
-                       //Warn user that maxwidth is insufficient
-                       if ($wordwidth > $maxwidth + 0.0001) {
-                               if ($wordwidth > $biggestword) { $biggestword = $wordwidth; }
-                               $toonarrow=true;
-                       }
-               }
-
-               // RESET FONT SIZE/STYLE
-               // RESETTING VALUES
-               //Now we must deactivate what we have used
-               if(isset($chunk[2]) and $chunk[2] != '') {
-                       $this->ResetStyles();
-               }
-               if(isset($chunk[4]) and $chunk[4] != '') {
-                       $this->SetFont($this->default_font,$this->FontStyle,0,false);
-               }
-               if(isset($chunk[11]) and $chunk[11] != '') { 
-                       $this->SetFontSize($this->default_font_size,false);
-               }
-               $this->spanborddet = array();
-               $this->kerning = false;
-               $this->lSpacingCSS = '';
-               $this->wSpacingCSS = '';
-               $this->fixedlSpacing = false;
-               $this->minwSpacing = 0;
-       }
-
-       //Return -(wordsize) if word is bigger than maxwidth 
-       // ADDED
-      if (($toonarrow) && ($this->table_error_report)) {
-               $this->Error("Word is too long to fit in table - ".$this->table_error_report_param); 
-       }
-       if ($toonarrow) return -$biggestword;
-       else return 1;
-}
-
-function shrinkTable(&$table,$k) {
-               $table['border_spacing_H'] /= $k;
-               $table['border_spacing_V'] /= $k;
-
-               $table['padding']['T'] /= $k;
-               $table['padding']['R'] /= $k;
-               $table['padding']['B'] /= $k;
-               $table['padding']['L'] /= $k;
-
-               $table['margin']['T'] /= $k;
-               $table['margin']['R'] /= $k;
-               $table['margin']['B'] /= $k;
-               $table['margin']['L'] /= $k;
-
-               $table['border_details']['T']['w'] /= $k;
-               $table['border_details']['R']['w'] /= $k;
-               $table['border_details']['B']['w'] /= $k;
-               $table['border_details']['L']['w'] /= $k;
-
-               if (isset($table['max_cell_border_width']['T'])) $table['max_cell_border_width']['T'] /= $k;
-               if (isset($table['max_cell_border_width']['R'])) $table['max_cell_border_width']['R'] /= $k;
-               if (isset($table['max_cell_border_width']['B'])) $table['max_cell_border_width']['B'] /= $k;
-               if (isset($table['max_cell_border_width']['L'])) $table['max_cell_border_width']['L'] /= $k;
-
-               if ($this->simpleTables){
-                       $table['simple']['border_details']['T']['w'] /= $k;
-                       $table['simple']['border_details']['R']['w'] /= $k;
-                       $table['simple']['border_details']['B']['w'] /= $k;
-                       $table['simple']['border_details']['L']['w'] /= $k;
-               }
-
-               $table['miw'] /= $k;
-               $table['maw'] /= $k;
-
-               if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-
-               for($j = 0 ; $j < $table['nc'] ; $j++ ) { //columns
-
-                  $table['wc'][$j]['miw'] /= $k;
-                  $table['wc'][$j]['maw'] /= $k;
-
-                  // mPDF 5.6.13
-                  if (isset($table['decimal_align'][$j]['maxs0']) && $table['decimal_align'][$j]['maxs0']) { $table['decimal_align'][$j]['maxs0'] /= $k; }
-                  if (isset($table['decimal_align'][$j]['maxs1']) && $table['decimal_align'][$j]['maxs1']) { $table['decimal_align'][$j]['maxs1'] /= $k; }
-
-                  if (isset($table['wc'][$j]['absmiw']) && $table['wc'][$j]['absmiw'] ) $table['wc'][$j]['absmiw'] /= $k;
-
-                  for($i = 0 ; $i < $table['nr']; $i++ ) { //rows
-                       if ($this->cacheTables) {
-                               $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                       }
-                       else 
-                               $c = &$table['cells'][$i][$j];
-                       if (isset($c) && $c)  {
-                               if (!$this->simpleTables){
-                                 if ($this->packTableData) {
-                                       $cell = $this->_unpackCellBorder($c['borderbin'] );
-                                       $cell['border_details']['T']['w'] /= $k;
-                                       $cell['border_details']['R']['w'] /= $k;
-                                       $cell['border_details']['B']['w'] /= $k;
-                                       $cell['border_details']['L']['w'] /= $k;
-                                       $cell['border_details']['mbw']['TL'] /= $k;
-                                       $cell['border_details']['mbw']['TR'] /= $k;
-                                       $cell['border_details']['mbw']['BL'] /= $k;
-                                       $cell['border_details']['mbw']['BR'] /= $k;
-                                       $cell['border_details']['mbw']['LT'] /= $k;
-                                       $cell['border_details']['mbw']['LB'] /= $k;
-                                       $cell['border_details']['mbw']['RT'] /= $k;
-                                       $cell['border_details']['mbw']['RB'] /= $k;
-                                       $c['borderbin'] = $this->_packCellBorder($cell);
-                                 }
-                                 else {
-                                       $c['border_details']['T']['w'] /= $k;
-                                       $c['border_details']['R']['w'] /= $k;
-                                       $c['border_details']['B']['w'] /= $k;
-                                       $c['border_details']['L']['w'] /= $k;
-                                       $c['border_details']['mbw']['TL'] /= $k;
-                                       $c['border_details']['mbw']['TR'] /= $k;
-                                       $c['border_details']['mbw']['BL'] /= $k;
-                                       $c['border_details']['mbw']['BR'] /= $k;
-                                       $c['border_details']['mbw']['LT'] /= $k;
-                                       $c['border_details']['mbw']['LB'] /= $k;
-                                       $c['border_details']['mbw']['RT'] /= $k;
-                                       $c['border_details']['mbw']['RB'] /= $k;
-                                 }
-                               }
-                               $c['padding']['T'] /= $k;
-                               $c['padding']['R'] /= $k;
-                               $c['padding']['B'] /= $k;
-                               $c['padding']['L'] /= $k;
-                               $c['maxs'] /= $k;
-                               if (isset($c['w'])) { $c['w'] /= $k; }
-                               $c['s'] /= $k;
-                               $c['maw'] /= $k;
-                               $c['miw'] /= $k;
-                               if (isset($c['absmiw'])) $c['absmiw'] /= $k;
-                               if (isset($c['nestedmaw'])) $c['nestedmaw'] /= $k;
-                               if (isset($c['nestedmiw'])) $c['nestedmiw'] /= $k;
-                               if (isset($c['textbuffer'])) {
-                                       foreach($c['textbuffer'] AS $n=>$tb) {
-                                               if (!empty($tb[16])) { 
-                                                       $c['textbuffer'][$n][16]['T']['w'] /= $k;
-                                                       $c['textbuffer'][$n][16]['B']['w'] /= $k;
-                                                       $c['textbuffer'][$n][16]['L']['w'] /= $k;
-                                                       $c['textbuffer'][$n][16]['R']['w'] /= $k;
-                                               }
-                                       }
-                               }
-                               if ($this->cacheTables) {
-                                       $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]);
-                               }
-                               unset($c);
-                       }
-                  }//rows
-               }//columns
-               if ($this->cacheTables) { fclose($fh); }
-}
-
-function _cacheCell($c, $file, $mode="A", $fh=null, $offset=0) {       // mode = Append or (over)Write (needs offset and fh)
-       // Requires either $file OR $fh (file_handle)
-       if (!is_array($c) || !isset($c)) { return ''; }
-
-       if(isset($c['w'])) { $cw = $c['w']; } else { $cw = -1; }
-       if(isset($c['w0'])) { $cw0 = $c['w0']; } else { $cw0 = -1; }
-       if(isset($c['h0'])) { $ch0 = $c['h0']; } else { $ch0 = -1; }
-
-       $data = pack("n2d19A1A1n2sA32A128",
-               $c['colspan'],          /* n  (16 bit; 2 bytes) [pos 0] */
-               $c['rowspan'],          /* n (16 bit; 2 bytes) [pos 2] */
-               $c['s'],                        /* d NB machine-dependent size (64 bit; 8 bytes on test winOS) [pos 4] */
-               $c['maxs'],                     /* d NB machine-dependent size [pos 4 + 1*D] */
-               $c['nestedmaw'],                /* d NB machine-dependent size [pos 4 + 2*D] */
-               $c['nestedmiw'],                /* d NB machine-dependent size [pos 4 + 3*D] */
-               $c['padding']['L'],     /* d NB machine-dependent size [pos 4 + 4*D] */
-               $c['padding']['R'],     /* d NB machine-dependent size [pos 4 + 5*D] */
-               $c['padding']['T'],     /* d NB machine-dependent size [pos 4 + 6*D] */
-               $c['padding']['B'],     /* d NB machine-dependent size [pos 4 + 7*D] */
-               $c['dfs'],                      /* d NB machine-dependent size [pos 4 + 8*D] */
-               $cw,                            /* d NB machine-dependent size [pos 4 + 9*D] */
-               $c['h'],                        /* d NB machine-dependent size [pos 4 + 10*D] */
-               $c['absmiw'],           /* d NB machine-dependent size [pos 4 + 11*D] */
-               $c['maw'],                      /* d NB machine-dependent size [pos 4 + 12*D] */
-               $c['miw'],                      /* d NB machine-dependent size [pos 4 + 13*D] */
-               $c['mih'],                      /* d NB machine-dependent size [pos 4 + 14*D] */
-               $c['x0'],                       /* d NB machine-dependent size [pos 4 + 15*D] */
-               $cw0,                           /* d NB machine-dependent size [pos 4 + 16*D] */
-               $c['y0'],                       /* d NB machine-dependent size [pos 4 + 17*D] */
-               $ch0,                           /* d NB machine-dependent size [pos 4 + 18*D] */
-               $c['a'],                        /* A1 (1 byte) [pos 4 + 19*D] */
-               $c['va'],                       /* A1 (1 byte) [pos 5 + 19*D] */
-               $c['nowrap'],           /* 1 or blank  n (16 bit; 2 bytes) [pos 6 + 19*D] */
-               $c['wpercent'],         /* 0 - 100  n (16 bit; 2 bytes) [pos 8 + 19*D] */
-               $c['R'],                        /* 90 or -90 s (16 bit; 2 bytes) [pos 10 + 19*D] */
-               $c['bgcolor'],          /* A32 (32 bytes) [pos 12 + 19*D] */
-               $c['gradient']          /* A128 (128 bytes) [pos 44 + 19*D] */
-       );
-
-       if ($c['background-image']) { 
-               $data .= pack("n2d2A6A6n3dA4A128",
-               strlen($data),          /* offset in main data to start of bgimage data */
-               $c['background-image']['image_id'],     /* n */
-               $c['background-image']['orig_w'],       /* d NB machine-dependent size */
-               $c['background-image']['orig_h'],       /* d NB machine-dependent size */
-               $c['background-image']['x_pos'],        /* A6 calc size or "50%" */
-               $c['background-image']['y_pos'],        /* A6 calc size or "50%" */
-               $c['background-image']['x_repeat'],     /* n true or false*/
-               $c['background-image']['y_repeat'],     /* n true or false */
-               $c['background-image']['resize'],       /* n 0 - 6 */
-               $c['background-image']['opacity'],      /* d  0-1 */
-               $c['background-image']['itype'],        /* A4 jpg etc */
-               $c['background-image']['gradient']      /* A128 CSS string */
-               );
-       }
-       else $data .= pack("n",0);
-       $tb_offset = 2 + 186 + 2 + strlen($data);
-       $stb = serialize($c['textbuffer']).'        ';  // buffer to allow updating in reverseTableDir
-       $lentb = strlen($stb);
-       $data2 = pack("nA".$lentb, $lentb, $stb);
-
-       $tempfh = true; 
-       if ($mode=="W" && $offset) {
-               if (!$fh) { $fh = fopen($file, "r+b"); }        // Overwrite (but not truncate)
-               else $tempfh = false;
-               fseek($fh, $offset);
-       }
-       else {
-               $fh = fopen($file, "ab");       // APPEND
-       }
-       fwrite($fh, pack("n",$tb_offset));              // Offset to Text buffer 2 bytes
-       fwrite($fh, $c['borderbin']);                   // border details 186 bytes
-       fwrite($fh, pack("n",strlen($data)));   // Length of Main data
-       fwrite($fh, $data);                             // Main data
-       fwrite($fh, $data2);                            // Text buffer (starts with "n" length of text buffer)
-       if ($tempfh) fclose($fh);
-       return ($tb_offset + 2 + $lentb);
-}
-
-function _cacheUpdateTxB($c, $fh, $offset) {
-       fseek($fh, $offset);
-       $tb_offset = $this->read_short($fh);            // First entry = Offset to Text buffer  2 bytes
-       fseek($fh, ($tb_offset-2), SEEK_CUR);
-       $lentb = $this->read_short($fh);                        // First entry in textbuffer = Length of serialized textbuffer - do not update
-       $stb = serialize($c['textbuffer']);
-       fwrite($fh, pack("A".$lentb, $stb)); 
-}
-
-function _cacheUpdateBorder($c, $fh, $offset) {
-       $offset += 2;
-       fseek($fh, $offset);
-       fwrite($fh, $c['borderbin']); 
-}
-
-function _cacheUpdateMtx($c, $fh, $offset, $var) {
-       if ($var=='mih') { $offset += (2 + 186 + 2 + 4 + 14*_DSIZE); }
-       else if ($var=='x0') { $offset += (2 + 186 + 2 + 4 + 15*_DSIZE); }      // x0 and w0
-       else if ($var=='y0') { $offset += (2 + 186 + 2 + 4 + 17*_DSIZE); }      // y0 and h0
-       fseek($fh, $offset);
-       if ($var=='mih') { fwrite($fh, pack("d",$c['mih'])); }
-       else if ($var=='x0') { fwrite($fh, pack("d2",$c['x0'],$c['w0'])); }
-       else if ($var=='y0') { fwrite($fh, pack("d2",$c['y0'],$c['h0'])); }
-}
-
-function _uncacheCell($ptr, $file, $fh) {
-       // Requires either $file or $fh (file_handle)
-       if ($ptr==0) { return null; }
-       if (is_array($ptr)) { $this->Error("Probable cause - missing end tag &lt;/td&gt;. You may be able to change the configurable variable: allow_html_optional_endtags "); }
-       $tempfh = true; 
-       if (!$fh) { $fh = fopen($file, "rb"); }
-       else $tempfh = false;
-       fseek($fh, $ptr);
-       $c = array();
-       $tb_offset = $this->read_short($fh);            // First entry = Offset to Text buffer  2 bytes
-       $c['borderbin'] = fread($fh,186);                       // border details 186 bytes
-       $maindatalen = $this->read_short($fh);          // Length of Main data (2 bytes)
-       $str = fread($fh,$maindatalen );                        // Main data
-       $data = unpack("ncolspan/nrowspan/ds/dmaxs/dnmaw/dnmiw/dpl/dpr/dpt/dpb/ddfs/dw/dh/dabsmiw/dmaw/dmiw/dmih/dx0/dw0/dy0/dh0/A1a/A1va/nnowrap/nwpercent/sR/A32bgcol/A128grad/nbgimage", $str);
-
-               if ($data['colspan']>0) $c['colspan'] = $data['colspan'];               /* n */
-               if ($data['rowspan']>0) $c['rowspan'] = $data['rowspan'];               /* n */
-               $c['s'] = $data['s'];                           /* d NB machine-dependent size */
-               $c['maxs'] = $data['maxs'];                     /* d NB machine-dependent size */
-               if ($data['nmaw']>0) $c['nestedmaw'] = $data['nmaw'];           /* d NB machine-dependent size */
-               if ($data['nmiw']>0) $c['nestedmiw'] = $data['nmiw'];           /* d NB machine-dependent size */
-               $c['padding']['L'] = $data['pl'];               /* d NB machine-dependent size */
-               $c['padding']['R'] = $data['pr'];               /* d NB machine-dependent size */
-               $c['padding']['T'] = $data['pt'];               /* d NB machine-dependent size */
-               $c['padding']['B'] = $data['pb'];               /* d NB machine-dependent size */
-               $c['dfs'] = $data['dfs'];                       /* d NB machine-dependent size */
-               if ($data['w']>=0) $c['w'] = $data['w'];        /* d NB machine-dependent size */
-               if ($data['h']>0) $c['h'] = $data['h']; /* d NB machine-dependent size */
-               if ($data['absmiw']>0) $c['absmiw'] = $data['absmiw'];  /* d NB machine-dependent size */
-               if ($data['maw']>0) $c['maw'] = $data['maw'];   /* d NB machine-dependent size */
-               if ($data['miw']>0) $c['miw'] = $data['miw'];   /* d NB machine-dependent size */
-               if ($data['mih']>0) $c['mih'] = $data['mih'];   /* d NB machine-dependent size */
-               if ($data['w0']>=0) { $c['w0'] = $data['w0'];   /* d NB machine-dependent size */
-                       $c['x0'] = $data['x0']; }       /* d NB machine-dependent size */
-               if ($data['h0']>=0) { $c['h0'] = $data['h0'];   /* d NB machine-dependent size */
-                       $c['y0'] = $data['y0']; }       /* d NB machine-dependent size */
-               $c['a'] = trim($data['a']);                     /* A1 */
-               $c['va'] = trim($data['va']);                   /* A1 */
-               if ($data['nowrap']) $c['nowrap'] = $data['nowrap'];            /* 1 or blank  n */
-                       else $c['nowrap'] = false; 
-               if ($data['wpercent']>0) $c['wpercent'] = $data['wpercent'];    /* 0 - 100  n */
-               if ($data['R']<>0) $c['R'] = $data['R'];                                /* 90 or -90 s */
-                       else $c['R'] = false;
-               $c['bgcolor'] = trim($data['bgcol']);                   /* A32 */
-               if (trim($data['grad'])) 
-                       $c['gradient'] = trim($data['grad']);           /* A128 */
-                 else $c['gradient'] = false;
-               if ($data['bgimage']>0) {
-                       $bgidata = substr($str, ($data['bgimage']+2));
-                       $c['background-image'] = unpack("nimage_id/dorig_w/dorig_h/A6x_pos/A6y_pos/nx_repeat/ny_repeat/nresize/dopacity/A4itype/A128gradient", $bgidata);
-               }
-
-       $tblen = $this->read_short($fh);                                // Length of Textbuffer
-       $tbsp = fread($fh,$tblen);                                      // Textbuffer (serialised and packed)
-       $tbs = unpack("A".$tblen."textbuffer",$tbsp);           // Textbuffer unpacked
-       $c['textbuffer'] = unserialize(trim($tbs['textbuffer']));       // Textbuffer unserialized
-
-       if ($tempfh) { fclose($fh); }
-       return ($c);
-}
-function read_short(&$fh) {
-               $s = fread($fh,2);
-               $a = (ord($s[0])<<8) + ord($s[1]);
-               if ($a & (1 << 15) ) { 
-                       $a = ($a - (1 << 16)); 
-               }
-               return $a;
-}
-function _backupCacheFiles() {
-       foreach($this->table AS $lvl=>$t) {
-               foreach($this->table[$lvl] AS $c=>$t2) {
-///////////////////////////if (!file_exists($t2['cache'])) { echo $lvl; echo $c; print_r($this->table); exit; }
-                       copy( $t2['cache'], $t2['cache'].'.bak');
-               }
-       }
-}
-function _restoreCacheFiles() {
-       foreach($this->table AS $lvl=>$t) {
-               foreach($this->table[$lvl] AS $c=>$t2) {
-                       copy( $t2['cache'].'.bak', $t2['cache']);
-               }
-       }
-}
-
-
-function _packCellBorder($cell) {
-       if (!is_array($cell) || !isset($cell)) { return ''; }
-
-       if (!$this->packTableData) { return $cell; }
-       // = 186 bytes
-       $bindata = pack("nnda6A10nnda6A10nnda6A10nnda6A10nd9",
-       $cell['border'],
-       $cell['border_details']['R']['s'],
-       $cell['border_details']['R']['w'],
-       $cell['border_details']['R']['c'],
-       $cell['border_details']['R']['style'],
-       $cell['border_details']['R']['dom'],
-
-       $cell['border_details']['L']['s'],
-       $cell['border_details']['L']['w'],
-       $cell['border_details']['L']['c'],
-       $cell['border_details']['L']['style'],
-       $cell['border_details']['L']['dom'],
-
-       $cell['border_details']['T']['s'],
-       $cell['border_details']['T']['w'],
-       $cell['border_details']['T']['c'],
-       $cell['border_details']['T']['style'],
-       $cell['border_details']['T']['dom'],
-
-       $cell['border_details']['B']['s'],
-       $cell['border_details']['B']['w'],
-       $cell['border_details']['B']['c'],
-       $cell['border_details']['B']['style'],
-       $cell['border_details']['B']['dom'],
-
-       $cell['border_details']['mbw']['BL'],
-       $cell['border_details']['mbw']['BR'],
-       $cell['border_details']['mbw']['RT'],
-       $cell['border_details']['mbw']['RB'],
-       $cell['border_details']['mbw']['TL'],
-       $cell['border_details']['mbw']['TR'],
-       $cell['border_details']['mbw']['LT'],
-       $cell['border_details']['mbw']['LB'],
-
-       $cell['border_details']['cellposdom']
-       );
-       return $bindata;
-}
-
-
-
-function _getBorderWidths($bindata) {
-       if (!$bindata) { return array(0,0,0,0); }
-       if (!$this->packTableData) { return array($bindata['border_details']['T']['w'], $bindata['border_details']['R']['w'], $bindata['border_details']['B']['w'], $bindata['border_details']['L']['w']); }
-
-       $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata);
-       $cell['border_details']['R']['w'] = $bd['rw'];
-       $cell['border_details']['L']['w'] = $bd['lw'];
-       $cell['border_details']['T']['w'] = $bd['tw'];
-       $cell['border_details']['B']['w'] = $bd['bw'];
-       return array($bd['tw'], $bd['rw'], $bd['bw'], $bd['lw']);
-}
-
-
-function _unpackCellBorder($bindata) {
-       if (!$bindata) { return array(); }
-       if (!$this->packTableData) { return $bindata; }
-
-       $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata);
-
-       $cell['border'] = $bd['bord'];
-       $cell['border_details']['R']['s'] = $bd['rs'];
-       $cell['border_details']['R']['w'] = $bd['rw'];
-       $cell['border_details']['R']['c'] = $bd['rca'];
-       $cell['border_details']['R']['style'] = trim($bd['rst']);
-       $cell['border_details']['R']['dom'] = $bd['rd'];
-
-       $cell['border_details']['L']['s'] = $bd['ls'];
-       $cell['border_details']['L']['w'] = $bd['lw'];
-       $cell['border_details']['L']['c'] = $bd['lca'];
-       $cell['border_details']['L']['style'] = trim($bd['lst']);
-       $cell['border_details']['L']['dom'] = $bd['ld'];
-
-       $cell['border_details']['T']['s'] = $bd['ts'];
-       $cell['border_details']['T']['w'] = $bd['tw'];
-       $cell['border_details']['T']['c'] = $bd['tca'];
-       $cell['border_details']['T']['style'] = trim($bd['tst']);
-       $cell['border_details']['T']['dom'] = $bd['td'];
-
-       $cell['border_details']['B']['s'] = $bd['bs'];
-       $cell['border_details']['B']['w'] = $bd['bw'];
-       $cell['border_details']['B']['c'] = $bd['bca'];
-       $cell['border_details']['B']['style'] = trim($bd['bst']);
-       $cell['border_details']['B']['dom'] = $bd['bd'];
-
-       $cell['border_details']['mbw']['BL'] = $bd['mbl'];
-       $cell['border_details']['mbw']['BR'] = $bd['mbr'];
-       $cell['border_details']['mbw']['RT'] = $bd['mrt'];
-       $cell['border_details']['mbw']['RB'] = $bd['mrb'];
-       $cell['border_details']['mbw']['TL'] = $bd['mtl'];
-       $cell['border_details']['mbw']['TR'] = $bd['mtr'];
-       $cell['border_details']['mbw']['LT'] = $bd['mlt'];
-       $cell['border_details']['mbw']['LB'] = $bd['mlb'];
-       $cell['border_details']['cellposdom'] = $bd['cpd'];
-
-       return($cell);
-}
-
-
-////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
-////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
-////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
-//table                Array of (w, h, bc, nr, wc, hr, cells)
-//w                    Width of table
-//h                    Height of table
-//nc                   Number column
-//nr                   Number row
-//hr                   List of height of each row
-//wc                   List of width of each column
-//cells                List of cells of each rows, cells[i][j] is a cell in the table
-function _tableColumnWidth(&$table,$firstpass=false){
-       $cs = &$table['cells'];
-
-       $nc = $table['nc'];
-       $nr = $table['nr'];
-       $listspan = array();
-
-       if ($table['borders_separate']) { 
-               $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] +  $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H'];
-       }
-       else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; }
-
-       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-       else { $fh = null; }
-
-       // ADDED table['l'][colno] 
-       // = total length of text approx (using $c['s']) in that column - used to approximately distribute col widths in _tableWidth
-       //
-       for($j = 0 ; $j < $nc ; $j++ ) { //columns
-               $wc = &$table['wc'][$j];
-               for($i = 0 ; $i < $nr ; $i++ ) { //rows
-                       if (isset($cs[$i][$j]) && $cs[$i][$j])  {
-                               if ($this->cacheTables) {
-                                       $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                               }
-                               else 
-                                       $c = &$cs[$i][$j];
-
-                               if ($this->simpleTables){
-                                          if ($table['borders_separate']) {    // NB twice border width
-                                               $extrcw = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
-                                          }
-                                          else {
-                                               $extrcw = $table['simple']['border_details']['L']['w']/2 + $table['simple']['border_details']['R']['w']/2 + $c['padding']['L'] + $c['padding']['R'];
-                                          }
-                               }
-                               else {
-                                  if ($this->packTableData) {
-                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
-                                  }
-                                  else { 
-                                       $br = $c['border_details']['R']['w'];
-                                       $bl = $c['border_details']['L']['w'];
-                                  }
-                                  if ($table['borders_separate']) {    // NB twice border width
-                                       $extrcw = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
-                                  }
-                                  else {
-                                       $extrcw = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R'];
-                                  }
-                               }
-
-                               //$mw = $this->GetStringWidth('W') + $extrcw ;
-                               $mw = 0;
-                               // mPDF 5.6.13  Decimal point alignment
-                               if(substr($c['a'],0,1) == 'D') {
-                                       $mw = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'] + $extrcw ;
-                               }
-
-                               $c['absmiw'] = $mw;
-
-                               if (isset($c['R']) && $c['R']) {
-                                       $c['maw'] = $c['miw'] = $this->FontSize + $extrcw ;
-                                       if (isset($c['w'])) {   // If cell width is specified
-                                               if ($c['miw'] <$c['w']) { $c['miw'] = $c['w']; }
-                                       }
-                                       if (!isset($c['colspan'])) {
-                                               if ($wc['miw'] < $c['miw']) { $wc['miw']        = $c['miw']; }
-                                               if ($wc['maw'] < $c['maw']) { $wc['maw']        = $c['maw']; }
-
-                                               if ($firstpass) { 
-                                                  if (isset($table['l'][$j]) ) { 
-                                                       $table['l'][$j] += $c['miw'] ;
-                                                  }
-                                                  else {
-                                                       $table['l'][$j] = $c['miw'] ;
-                                                  }
-                                               }
-                                       }
-                                       if ($c['miw'] > $wc['miw']) { $wc['miw'] = $c['miw']; } 
-                                       if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; }
-                                       continue;
-                               }
-
-                               if ($firstpass) {
-                                       if (isset($c['s'])) { $c['s'] += $extrcw; }
-                                       if (isset($c['maxs'])) { $c['maxs'] += $extrcw; }
-                                       if (isset($c['nestedmiw'])) { $c['nestedmiw'] += $extrcw; }
-                                       if (isset($c['nestedmaw'])) { $c['nestedmaw'] += $extrcw; }
-                               }
-
-
-                               // If minimum width has already been set by a nested table or inline object (image/form), use it
-                               if (isset($c['nestedmiw']) && $this->table[1][1]['overflow']!='visible') { $miw = $c['nestedmiw']; }
-                               else  { $miw = $mw; }
-
-                               if (isset($c['maxs']) && $c['maxs'] != '') { $c['s'] = $c['maxs']; }
-
-                               // If maximum width has already been set by a nested table, use it
-                               if (isset($c['nestedmaw'])) { $c['maw'] = $c['nestedmaw']; }
-                               else $c['maw'] = $c['s'];
-
-                               if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) {
-                                       if (($c['maw'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { 
-                                               $c['maw'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw;
-                                       }
-                               }
-
-                               if (isset($c['nowrap']) && $c['nowrap']) { $miw = $c['maw']; }
-
-                               if (isset($c['wpercent']) && $firstpass) {
-                                       if (isset($c['colspan'])) {     // Not perfect - but % set on colspan is shared equally on cols.
-                                          for($k=0;$k<$c['colspan'];$k++) {
-                                               $table['wc'][($j+$k)]['wpercent'] = $c['wpercent'] / $c['colspan'];
-                                          }
-                                       }
-                                       else {
-                                               if (isset($table['w']) && $table['w']) { $c['w'] = $c['wpercent']/100 * ($table['w'] - $tblbw ); }
-                                               $wc['wpercent'] = $c['wpercent'];
-                                       }
-                               }
-
-                               if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) {
-                                       if (($c['w'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { 
-                                               $c['w'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw;
-                                       }
-                               }
-
-
-                               if (isset($c['w'])) {   // If cell width is specified
-                                       if ($miw<$c['w'])       { $c['miw'] = $c['w']; }        // Cell min width = that specified
-                                       if ($miw>$c['w'])       { $c['miw'] = $c['w'] = $miw; } // If width specified is less than minimum allowed (W) increase it
-                                       if (!isset($wc['w'])) { $wc['w'] = 1; }         // If the Col width is not specified = set it to 1
-
-                               }
-                               else { $c['miw'] = $miw; }      // If cell width not specified -> set Cell min width it to minimum allowed (W)
-
-                               if ($c['maw']  < $c['miw']) { $c['maw'] = $c['miw']; }  // If Cell max width < Minwidth - increase it to =
-                               if (!isset($c['colspan'])) {
-                                       if ($wc['miw'] < $c['miw']) { $wc['miw']        = $c['miw']; }  // Update Col Minimum and maximum widths
-                                       if ($wc['maw'] < $c['maw']) { $wc['maw']        = $c['maw']; }
-                                       if ((isset($wc['absmiw']) && $wc['absmiw'] < $c['absmiw']) || !isset($wc['absmiw'])) { $wc['absmiw'] = $c['absmiw']; }  // Update Col Minimum and maximum widths
-
-                                       if (isset($table['l'][$j]) ) { 
-                                               $table['l'][$j] += $c['s'];
-                                       }
-                                       else {
-                                               $table['l'][$j] = $c['s'];
-                                       }
-
-                               }
-                               else { 
-                                       $listspan[] = array($i,$j);
-                               }
-
-                               //Check if minimum width of the whole column is big enough for largest word to fit
-                               if (isset($c['textbuffer']) && (!isset($table['overflow']) || $table['overflow']!='wrap')) {    // mPDF 5.5.11
-                                       $minwidth = $this->TableCheckMinWidth($wc['miw']- $extrcw ,0,$c['textbuffer']);
-                               }
-                               else { $minwidth = 0; }
-                               if ($minwidth < 0) { 
-                                       //increase minimum width
-                                       if (!isset($c['colspan'])) {
-                                               $wc['miw'] = max($wc['miw'],((-$minwidth) + $extrcw) );  
-                                       }
-                                       else {
-                                               $c['miw'] = max($c['miw'],((-$minwidth) + $extrcw) );  
-                                       }
-                               }
-                               if (!isset($c['colspan'])) {
-                                       if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; } //update maximum width, if needed
-                               }
-                               if ($this->cacheTables) {
-                                       $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]);
-                               }
-                       }
-                       unset($c);
-               }//rows
-       }//columns
-
-
-       // COLUMN SPANS
-       $wc = &$table['wc'];
-       foreach ($listspan as $span) {
-               list($i,$j) = $span;
-               if ($this->cacheTables) {
-                       $c = $this->_uncacheCell($cs[$i][$j], '', $fh);
-               }
-               else 
-                       $c = &$cs[$i][$j];
-               $lc = $j + $c['colspan'];
-               if ($lc > $nc) { $lc = $nc; }
-               $wis = $wisa = 0;
-               $was = $wasa = 0;
-               $list = array();
-               for($k=$j;$k<$lc;$k++) {
-                       if (isset($table['l'][$k]) ) { 
-                               if ($c['R']) { $table['l'][$k] += $c['miw']/$c['colspan'] ; }
-                               else { $table['l'][$k] += $c['s']/$c['colspan']; }
-                       }
-                       else {
-                               if ($c['R']) { $table['l'][$k] = $c['miw']/$c['colspan'] ; }
-                               else { $table['l'][$k] = $c['s']/$c['colspan']; }
-                       }
-                       $wis += $wc[$k]['miw'];
-                       $was += $wc[$k]['maw'];
-                       if (!isset($c['w'])) {
-                               $list[] = $k;
-                               $wisa += $wc[$k]['miw'];
-                               $wasa += $wc[$k]['maw'];
-                       }
-               }
-               if ($c['miw'] > $wis) {
-                       if (!$wis) {
-                               for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] = $c['miw']/$c['colspan']; }
-                       }
-                       else if (!count($list)) {
-                               $wi = $c['miw'] - $wis;
-                               for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wis)*$wi; }
-                       }
-                       else {
-                               $wi = $c['miw'] - $wis;
-                               foreach ($list as $k) { if (!isset($wc[$k]['w']) || !$wc[$k]['w']) $wc[$k]['miw'] += ($wc[$k]['miw']/$wisa)*$wi; }      // mPDF 5.7.2
-                       }
-               }
-               if ($c['maw'] > $was) {
-                       if (!$wis) {
-                               for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] = $c['maw']/$c['colspan']; }
-                       }
-                       else if (!count($list)) {
-                               $wi = $c['maw'] - $was;
-                               for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] += ($wc[$k]['maw']/$was)*$wi; }
-                       }
-                       else {
-                               $wi = $c['maw'] - $was;
-                               foreach ($list as $k) { $wc[$k]['maw'] += ($wc[$k]['maw']/$wasa)*$wi; }
-                       }
-               }
-               unset($c);
-       }
-
-       if ($this->cacheTables) { fclose($fh); }
-
-       $checkminwidth = 0;
-       $checkmaxwidth = 0;
-       $totallength = 0;
-
-       for( $i = 0 ; $i < $nc ; $i++ ) {
-               $checkminwidth += $table['wc'][$i]['miw'];
-               $checkmaxwidth += $table['wc'][$i]['maw'];
-               $totallength += $table['l'][$i];
-       }
-
-       if (!isset($table['w']) && $firstpass) {
-          $sumpc = 0;
-          $notset = 0;
-          for( $i = 0 ; $i < $nc ; $i++ ) {
-                 if (isset($table['wc'][$i]['wpercent']) && $table['wc'][$i]['wpercent']) {
-                       $sumpc += $table['wc'][$i]['wpercent'];
-                 }
-                 else { $notset++; }
-          }
-
-          // If sum of widths as %  >= 100% and not all columns are set
-               // Set a nominal width of 1% for unset columns
-          if ($sumpc >= 100 && $notset) {
-               for( $i = 0 ; $i < $nc ; $i++ ) {
-                 if ((!isset($table['wc'][$i]['wpercent']) || !$table['wc'][$i]['wpercent']) &&
-                       (!isset($table['wc'][$i]['w']) || !$table['wc'][$i]['w'])) {
-                       $table['wc'][$i]['wpercent'] = 1;
-                 }
-               }
-          }
-
-
-          if ($sumpc) {        // if any percents are set
-               $sumnonpc = (100 - $sumpc);
-               $sumpc = max($sumpc,100);
-             $miwleft = 0;
-               $miwleftcount = 0;
-               $miwsurplusnonpc = 0;
-               $maxcalcmiw  = 0;
-             $mawleft = 0;
-               $mawleftcount = 0;
-               $mawsurplusnonpc = 0;
-               $maxcalcmaw  = 0;
-               for( $i = 0 ; $i < $nc ; $i++ ) {
-                 if (isset($table['wc'][$i]['wpercent'])) {
-                       $maxcalcmiw = max($maxcalcmiw, ($table['wc'][$i]['miw'] * $sumpc /$table['wc'][$i]['wpercent']) );
-                       $maxcalcmaw = max($maxcalcmaw, ($table['wc'][$i]['maw'] * $sumpc /$table['wc'][$i]['wpercent']) );
-                 }
-                 else {
-                       $miwleft += $table['wc'][$i]['miw'];
-                       $mawleft += $table['wc'][$i]['maw'];
-                       if (!isset($table['wc'][$i]['w'])) { $miwleftcount++; $mawleftcount++; }
-                 }
-               }
-               if ($miwleft && $sumnonpc > 0) { $miwnon = $miwleft * 100 / $sumnonpc; }
-               if ($mawleft && $sumnonpc > 0) { $mawnon = $mawleft * 100 / $sumnonpc; }
-               if (($miwnon > $checkminwidth || $maxcalcmiw > $checkminwidth) && $this->keep_table_proportions) {
-                       if ($miwnon > $maxcalcmiw) { 
-                               $miwsurplusnonpc = round((($miwnon * $sumnonpc / 100) - $miwleft),3); 
-                               $checkminwidth = $miwnon; 
-                       }
-                       else { $checkminwidth = $maxcalcmiw; }
-                       for( $i = 0 ; $i < $nc ; $i++ ) {
-                         if (isset($table['wc'][$i]['wpercent'])) {
-                               $newmiw = $checkminwidth * $table['wc'][$i]['wpercent']/100;
-                               if ($table['wc'][$i]['miw'] < $newmiw) {
-                                 $table['wc'][$i]['miw'] = $newmiw;
-                               }
-                               $table['wc'][$i]['w'] = 1;
-                         }
-                         else if ($miwsurplusnonpc && !$table['wc'][$i]['w']) {
-                               $table['wc'][$i]['miw'] +=  $miwsurplusnonpc / $miwleftcount;
-                         }
-                       }
-               }
-               if (($mawnon > $checkmaxwidth || $maxcalcmaw > $checkmaxwidth )) {
-                       if ($mawnon > $maxcalcmaw) { 
-                               $mawsurplusnonpc = round((($mawnon * $sumnonpc / 100) - $mawleft),3); 
-                               $checkmaxwidth = $mawnon; 
-                       }
-                       else { $checkmaxwidth = $maxcalcmaw; }
-                       for( $i = 0 ; $i < $nc ; $i++ ) {
-                         if (isset($table['wc'][$i]['wpercent'])) {
-                               $newmaw = $checkmaxwidth * $table['wc'][$i]['wpercent']/100;
-                               if ($table['wc'][$i]['maw'] < $newmaw) {
-                                 $table['wc'][$i]['maw'] = $newmaw;
-                               }
-                               $table['wc'][$i]['w'] = 1;
-                         }
-                         else if ($mawsurplusnonpc && !$table['wc'][$i]['w']) {
-                               $table['wc'][$i]['maw'] +=  $mawsurplusnonpc / $mawleftcount;
-                         }
-                         if ($table['wc'][$i]['maw'] < $table['wc'][$i]['miw']) { $table['wc'][$i]['maw'] = $table['wc'][$i]['miw']; }
-                       }
-               }
-               if ($checkminwidth > $checkmaxwidth) { $checkmaxwidth = $checkminwidth; }
-          }
-       }
-
-       if (isset($table['wpercent']) && $table['wpercent']) {
-               $checkminwidth *= (100 / $table['wpercent']);
-               $checkmaxwidth *= (100 / $table['wpercent']);
-       }
-
-
-       $checkminwidth += $tblbw ;
-       $checkmaxwidth += $tblbw ;
-
-       // Table['miw'] set by percent in first pass may be larger than sum of column miw
-       if ((isset($table['miw']) && $checkminwidth > $table['miw']) || !isset($table['miw'])) {  $table['miw'] = $checkminwidth; }
-       if ((isset($table['maw']) && $checkmaxwidth > $table['maw']) || !isset($table['maw'])) { $table['maw'] = $checkmaxwidth; }
-       $table['tl'] = $totallength ;
-
-
-       if (!$this->tableCJK) {
-               if ($this->table_rotate) {
-                       $mxw = $this->tbrot_maxw;
-               }
-               else {
-                       $mxw = $this->blk[$this->blklvl]['inner_width'];
-               }
-               if(!isset($table['overflow'])) { $table['overflow'] = null; }
-               if ($table['overflow']=='visible') { 
-                       return array(0,0); 
-               }
-               else if ($table['overflow']=='hidden' && !$this->table_rotate && !$this->ColActive && $checkminwidth > $mxw) {
-                       $table['w'] = $table['miw']; 
-                       return array(0,0);
-               }
-               else if ($table['overflow']=='wrap') { return array(0,0); }
-
-               if (isset($table['w']) && $table['w'] ) {
-                       if ($table['w'] >= $checkminwidth && $table['w'] <= $mxw) { $table['maw'] = $mxw = $table['w']; }
-                       else if ($table['w'] >= $checkminwidth && $table['w'] > $mxw && $this->keep_table_proportions) { $checkminwidth = $table['w']; }
-                       else {  
-                               unset($table['w']); 
-                       }
-               }
-               $ratio = $checkminwidth/$mxw;
-               if ($checkminwidth > $mxw) { return array(($ratio +0.001),$checkminwidth); }    // 0.001 to allow for rounded numbers when resizing
-       }
-       unset($cs); 
-       return array(0,0);
-}
-
-
-
-function _tableWidth(&$table){
-       $widthcols = &$table['wc'];
-       $numcols = $table['nc'];
-       $tablewidth = 0;
-       if ($table['borders_separate']) { 
-               $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] +  $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H'];
-       }
-       else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; }
-
-       if ($table['level']>1 && isset($table['w'])) { 
-               if (isset($table['wpercent']) && $table['wpercent']) { 
-                       $table['w'] = $temppgwidth = (($table['w']-$tblbw) * $table['wpercent'] / 100) + $tblbw ;  
-               }
-               else { 
-                       $temppgwidth = $table['w'] ;  
-               }
-       }
-       else if ($this->table_rotate) {
-               $temppgwidth = $this->tbrot_maxw;
-               // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin)
-               // then allow for this
-               $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'];
-               if ($enddiv/$temppgwidth <0.05) { $temppgwidth -= $enddiv; }
-       }
-       else {
-               if (isset($table['w']) && $table['w']< $this->blk[$this->blklvl]['inner_width']) { 
-                       $notfullwidth = 1;
-                       $temppgwidth = $table['w'] ;  
-               }
-               else if ($table['overflow']=='visible' && $table['level'] ==1) {
-                       $temppgwidth = null;
-               }
-               else if ($table['overflow']=='hidden' && !$this->ColActive && isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width'] && $table['w']==$table['miw']) {
-                       //$temppgwidth = $this->blk[$this->blklvl]['inner_width'];  
-                       $temppgwidth = $table['w'] ;
-               }
-               else { $temppgwidth = $this->blk[$this->blklvl]['inner_width']; }
-       }
-
-
-       $totaltextlength = 0;   // Added - to sum $table['l'][colno]
-       $totalatextlength = 0;  // Added - to sum $table['l'][colno] for those columns where width not set
-       $percentages_set = 0; 
-       for ( $i = 0 ; $i < $numcols ; $i++ ) {
-               if (isset($widthcols[$i]['wpercent']))  { $tablewidth += $widthcols[$i]['maw']; $percentages_set = 1; }
-               else if (isset($widthcols[$i]['w']))  { $tablewidth += $widthcols[$i]['miw']; }
-               else { $tablewidth += $widthcols[$i]['maw']; }
-               $totaltextlength += $table['l'][$i];
-       }
-       if (!$totaltextlength) { $totaltextlength =1; }
-       $tablewidth += $tblbw;  // Outer half of table borders
-
-       if ($tablewidth > $temppgwidth) { 
-               $table['w'] = $temppgwidth; 
-       }
-       // if any widths set as percentages and max width fits < page width
-       else if ($tablewidth < $temppgwidth && !isset($table['w']) && $percentages_set) {
-               $table['w'] = $table['maw'];
-       }
-       // if table width is set and is > allowed width
-       if (isset($table['w']) && $table['w'] > $temppgwidth) { $table['w'] = $temppgwidth; }
-       // IF the table width is now set - Need to distribute columns widths
-       if (isset($table['w'])) {
-               $wis = $wisa = 0;
-               $list = array();
-               $notsetlist = array();
-               for( $i = 0 ; $i < $numcols ; $i++ ) {
-                       $wis += $widthcols[$i]['miw'];
-                       if (!isset($widthcols[$i]['w']) || ($widthcols[$i]['w'] && $table['w'] > $temppgwidth && !$this->keep_table_proportions && !$notfullwidth )){ 
-                               $list[] = $i;  
-                               $wisa += $widthcols[$i]['miw'];
-                               $totalatextlength += $table['l'][$i];
-                       }
-               }
-               if (!$totalatextlength) { $totalatextlength =1; }
-
-               // Allocate spare (more than col's minimum width) across the cols according to their approx total text length
-               // Do it by setting minimum width here
-               if ($table['w'] > $wis + $tblbw) {
-                       // First set any cell widths set as percentages
-                       if ($table['w'] < $temppgwidth || $this->keep_table_proportions) {
-                               for($k=0;$k<$numcols;$k++) {
-                                       if (isset($widthcols[$k]['wpercent'])) {
-                                               $curr = $widthcols[$k]['miw'];
-                                               $widthcols[$k]['miw'] = ($table['w']-$tblbw) * $widthcols[$k]['wpercent']/100;
-                                               $wis += $widthcols[$k]['miw'] - $curr;
-                                               $wisa += $widthcols[$k]['miw'] - $curr;
-                                       }
-                               }
-                       }
-                       // Now allocate surplus up to maximum width of each column
-                       $surplus = 0;  $ttl = 0;        // number of surplus columns
-                       if (!count($list)) {
-                               $wi = ($table['w']-($wis + $tblbw));    //      i.e. extra space to distribute
-                               for($k=0;$k<$numcols;$k++) {
-                                       $spareratio = ($table['l'][$k] / $totaltextlength); //  gives ratio to divide up free space
-                                       // Don't allocate more than Maximum required width - save rest in surplus
-                                       if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) {
-                                               $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']);
-                                               $widthcols[$k]['miw'] = $widthcols[$k]['maw'];
-                                       }
-                                       else { 
-                                               $notsetlist[] = $k;  
-                                               $ttl += $table['l'][$k];
-                                               $widthcols[$k]['miw'] += ($wi * $spareratio); 
-                                       }
-
-                               }
-                       }
-                       else {
-                               $wi = ($table['w'] - ($wis + $tblbw));  //      i.e. extra space to distribute
-                               foreach ($list as $k) {
-                                       $spareratio = ($table['l'][$k] / $totalatextlength); //  gives ratio to divide up free space
-                                       // Don't allocate more than Maximum required width - save rest in surplus
-                                       if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) {
-                                               $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']);
-                                               $widthcols[$k]['miw'] = $widthcols[$k]['maw'];
-                                       }
-                                       else { 
-                                               $notsetlist[] = $k;  
-                                               $ttl += $table['l'][$k];
-                                               $widthcols[$k]['miw'] += ($wi * $spareratio); 
-                                       }
-                               }
-                       }
-                       // If surplus still left over apportion it across columns
-                       if ($surplus) { 
-                          // if some are set only add to remaining - otherwise add to all of them
-                          if (count($notsetlist) && count($notsetlist) < $numcols) {
-                               foreach ($notsetlist AS $i) {
-                                       if ($ttl) $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl ;
-                               }
-                          }
-                          // If some widths are defined, and others have been added up to their maxmum
-                          else if (count($list) && count($list) < $numcols) {
-                               foreach ($list AS $i) {
-                                       $widthcols[$i]['miw'] += $surplus / count($list) ;
-                               }
-                          }
-                          else if ($numcols) { // If all columns
-                               $ttl = array_sum($table['l']);
-                               for ($i=0;$i<$numcols;$i++) {
-                                       $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl;
-                               }
-                          }
-                       }
-
-               }
-
-               // This sets the columns all to minimum width (which has been increased above if appropriate)
-               for ($i=0;$i<$numcols;$i++) {
-                       $widthcols[$i] = $widthcols[$i]['miw'];
-               }
-
-               // TABLE NOT WIDE ENOUGH EVEN FOR MINIMUM CONTENT WIDTH
-               // If sum of column widths set are too wide for table
-               $checktablewidth = 0;
-               for ( $i = 0 ; $i < $numcols ; $i++ ) {
-                       $checktablewidth += $widthcols[$i];
-               }
-               if ($checktablewidth > ($temppgwidth + 0.001 - $tblbw)) { 
-                  $usedup = 0; $numleft = 0;
-                  for ($i=0;$i<$numcols;$i++) {
-                       if ((isset($widthcols[$i]) && $widthcols[$i] > (($temppgwidth - $tblbw) / $numcols)) && (!isset($widthcols[$i]['w']))) { 
-                               $numleft++; 
-                               unset($widthcols[$i]); 
-                       }
-                       else { $usedup += $widthcols[$i]; }
-                  }
-                  for ($i=0;$i<$numcols;$i++) {
-                       if (!isset($widthcols[$i]) || !$widthcols[$i]) { 
-                               $widthcols[$i] = ((($temppgwidth - $tblbw) - $usedup)/ ($numleft)); 
-                       }
-                  }
-               }
-
-       }
-       else { //table has no width defined
-               $table['w'] = $tablewidth;  
-               for ( $i = 0 ; $i < $numcols ; $i++) {
-                       if (isset($widthcols[$i]['wpercent']) && $this->keep_table_proportions)  { $colwidth = $widthcols[$i]['maw']; }
-                       else if (isset($widthcols[$i]['w']))  { $colwidth = $widthcols[$i]['miw']; }
-                       else { $colwidth = $widthcols[$i]['maw']; }
-                       unset($widthcols[$i]);
-                       $widthcols[$i] = $colwidth;
-               }
-       }
-
-       if ($table['overflow']=='visible' && $table['level'] ==1) {
-               if ($tablewidth > $this->blk[$this->blklvl]['inner_width']) {
-                 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-                 else { $fh = null; }
-                 for ($j = 0 ; $j < $numcols; $j++) { //columns
-                       for ($i = 0 ; $i < $table['nr']; $i++) { //rows
-                               if (isset($table['cells'][$i][$j]) && $table['cells'][$i][$j]) {
-                                 if ($this->cacheTables) {
-                                       $cc = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                                       $colspan = $cc['colspan'];
-                                 }
-                                 else 
-                                       $colspan = $table['cells'][$i][$j]['colspan'];
-                                 if ($colspan > 1) {
-                                       $w = 0;
-                                       for ($c = $j; $c < ($j + $colspan); $c++) {
-                                               $w += $widthcols[$c];
-                                       }
-                                       if ($w > $this->blk[$this->blklvl]['inner_width']) {
-                                               $diff = $w - ($this->blk[$this->blklvl]['inner_width'] - $tblbw);
-                                               for ($c = $j; $c < ($j + $colspan); $c++) {
-                                                       $widthcols[$c] -= $diff * ($widthcols[$c]/$w);
-                                               }
-                                               $table['w'] -= $diff;
-                                               $table['csp'][$j] = $w - $diff;
-                                       }
-                                 }
-                               }
-
-                       }
-                 }
-                 if ($this->cacheTables) { fclose($fh); }
-               }
-               $pgNo = 0;
-               $currWc = 0;
-               for ($i = 0 ; $i < $numcols; $i++) { //columns
-                       if (isset($table['csp'][$i])) { 
-                               $w = $table['csp'][$i]; 
-                               unset($table['csp'][$i]);
-                       }
-                       else { $w = $widthcols[$i]; }
-                       if (($currWc + $w + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { 
-                               $pgNo++;
-                               $currWc = $widthcols[$i] ;
-                       }
-                       else { $currWc += $widthcols[$i] ; }
-                       $table['colPg'][$i] = $pgNo;
-               }
-       }
-}
-
-
-
-function _tableHeight(&$table){
-       $level = $table['level'];
-       $levelid = $table['levelid'];
-       $cells = &$table['cells'];
-       $numcols = $table['nc'];
-       $numrows = $table['nr'];
-       $listspan = array();
-       $checkmaxheight = 0;
-       $headerrowheight = 0;
-       $checkmaxheightplus = 0;
-       $headerrowheightplus = 0;
-       $firstrowheight = 0;
-
-       $footerrowheight = 0;
-       $footerrowheightplus = 0;
-       if ($this->table_rotate) {
-               $temppgheight = $this->tbrot_maxh;
-               $remainingpage = $this->tbrot_maxh;
-       }
-       else {
-               $temppgheight = ($this->h - $this->bMargin - $this->tMargin) - $this->kwt_height;
-               $remainingpage = ($this->h - $this->bMargin - $this->y) - $this->kwt_height;
-
-               // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin)
-               // then allow for this
-               $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $table['margin']['B'];
-               if ($remainingpage > $enddiv && $enddiv/$remainingpage <0.05) { $remainingpage -= $enddiv; }
-               else if ($remainingpage == 0) { $remainingpage = 0.001; }
-               if ($temppgheight > $enddiv && $enddiv/$temppgheight <0.05) { $temppgheight -= $enddiv; }
-               else if ($temppgheight == 0) { $temppgheight = 0.001; }
-       }
-       if ($remainingpage < 0) { $remainingpage = 0.001; }     // mPDF 5.6.64
-       if ($temppgheight < 0) { $temppgheight = 0.001; }       // mPDF 5.6.64
-
-       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-       else { $fh = null; }
-
-       for( $i = 0 ; $i < $numrows ; $i++ ) { //rows
-               $heightrow = &$table['hr'][$i];
-               for( $j = 0 ; $j < $numcols ; $j++ ) { //columns
-                       if (isset($cells[$i][$j]) && $cells[$i][$j]) {
-                               if ($this->cacheTables) {
-                                       $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                               }
-                               else 
-                                       $c = &$cells[$i][$j];
-
-                               if ($this->simpleTables){
-                                  if ($table['borders_separate']) {    // NB twice border width
-                                       $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w']) + ($c['padding']['L']+$c['padding']['R'])+$table['border_spacing_H'];
-                                       $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w']) + ($c['padding']['T']+$c['padding']['B'])+$table['border_spacing_V'];
-                                  }
-                                  else {
-                                       $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w'])/2 + ($c['padding']['L']+$c['padding']['R']);
-                                       $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w'])/2 + ($c['padding']['T']+$c['padding']['B']);
-                                  }
-                               }
-                               else  {
-                                  if ($this->packTableData) {
-                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
-                                  }
-                                  else { 
-                                       $bt = $c['border_details']['T']['w'];
-                                       $bb = $c['border_details']['B']['w'];
-                                       $br = $c['border_details']['R']['w'];
-                                       $bl = $c['border_details']['L']['w'];
-                                  }
-                                  if ($table['borders_separate']) {    // NB twice border width
-                                       $extraWLR = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
-                                       $extrh = $bt + $bb + $c['padding']['T'] + $c['padding']['B'] + $table['border_spacing_V'];
-                                  }
-                                  else {
-                                       $extraWLR = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R'];
-                                       $extrh = $bt/2 + $bb/2 + $c['padding']['T']+$c['padding']['B'];
-                                  }
-                               }
-
-                               if ($table['overflow']=='visible' && $level==1) 
-                                       list($x,$cw) = $this->_splitTableGetWidth($table, $i,$j, $fh);
-                               else 
-                                       list($x,$cw) = $this->_tableGetWidth($table, $i,$j, $fh);
-
-                               // Get CELL HEIGHT 
-                               // ++ extra parameter forces wrap to break word
-                               if ($c['R'] && isset($c['textbuffer'])) {       // mPDF 5.4.01
-                                       $str = '';
-                                       foreach($c['textbuffer'] AS $t) { $str .= $t[0].' '; }
-                                       $str = trim($str);
-                                       $s_fs = $this->FontSizePt;
-                                       $s_f = $this->FontFamily;
-                                       $s_st = $this->FontStyle;
-                                       $this->SetFont($c['textbuffer'][0][4],$c['textbuffer'][0][2],$c['textbuffer'][0][11] / $this->shrin_k,true,true);
-                               $tempch = $this->GetStringWidth($str);
-                                       if ($c['R'] >= 45 && $c['R'] < 90) {
-                                               $tempch = ((sin(deg2rad($c['R']))) * $tempch ) + ((sin(deg2rad($c['R']))) * (($c['textbuffer'][0][11]/_MPDFK) / $this->shrin_k));
-                                       } 
-                                       $this->SetFont($s_f,$s_st,$s_fs,true,true);
-                                       $ch = ($tempch ) + $extrh ;  
-                               }
-                               else {
-                                  if (isset($c['textbuffer'])) {
-                                       $tempch = $this->TableWordWrap(($cw-$extraWLR),1,$c['textbuffer'], $c['dfs']);
-                                  }
-                                  else { $tempch = 0; }
-
-                                       // Added cellpadding top and bottom. (Lineheight already adjusted to table_lineheight)
-                                       $ch = $tempch + $extrh ;
-                               }
-                               //If height is defined and it is bigger than calculated $ch then update values
-                               if (isset($c['h']) && $c['h'] > $ch) {
-                                       $c['mih'] = $ch; //in order to keep valign working
-                                       $ch = $c['h'];
-                               }
-                               else $c['mih'] = $ch;
-                               if ($this->cacheTables) {
-                                       $this->_cacheUpdateMtx($c, $fh, $table['cells'][$i][$j], 'mih');
-                               }
-                               if (isset($c['rowspan']))       $listspan[] = array($i,$j);
-                               elseif ($heightrow < $ch) $heightrow = $ch;
-
-                               // this is the extra used in _tableWrite to determine whether to trigger a page change
-                               if ($table['borders_separate']) { 
-                                 if ($i == ($numrows-1) || (isset($c['rowspan']) && ($i+$c['rowspan']) == ($numrows)) ) {
-                                       $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
-                                 }
-                                 else {
-                                       $extra = $table['border_spacing_V']/2; 
-                                 }
-                               }
-                               else { 
-                                       if (!$this->simpleTables){
-                                               $extra = $bb/2; 
-                                       }
-                                       else if ($this->simpleTables){
-                                               $extra = $table['simple']['border_details']['B']['w'] /2; 
-                                       }
-                               }
-                               if (isset($table['is_thead'][$i]) && $table['is_thead'][$i]) {
-                                  if ($j==0) {
-                                       $headerrowheight += $ch;
-                                       $headerrowheightplus += $ch+$extra;
-                                  }
-                               }
-                               else if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) {
-                                  if ($j==0) {
-                                       $footerrowheight += $ch;
-                                       $footerrowheightplus += $ch+$extra;
-                                  }
-                               }
-                               else {
-                                       $checkmaxheight = max($checkmaxheight,$ch);
-                                       $checkmaxheightplus = max($checkmaxheightplus,$ch+$extra);
-                               }
-                               if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($ch,$firstrowheight); }
-                               unset($c);
-                       }
-               }//end of columns
-       }//end of rows
-
-       $heightrow = &$table['hr'];
-       foreach ($listspan as $span) {
-               list($i,$j) = $span;
-               if ($this->cacheTables) {
-                       $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-               }
-               else 
-                       $c = &$cells[$i][$j];
-               $lr = $i + $c['rowspan'];
-               if ($lr > $numrows) $lr = $numrows;
-               $hs = $hsa = 0;
-               $list = array();
-               for($k=$i;$k<$lr;$k++) {
-                       $hs += $heightrow[$k];
-                       if (!isset($c['h'])) {
-                               $list[] = $k;
-                               $hsa += $heightrow[$k];
-                       }
-               }
-
-               if ($table['borders_separate']) { 
-                 if ($i == ($numrows-1) || ($i+$c['rowspan']) == ($numrows) ) {
-                       $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
-                 }
-                 else {
-                       $extra = $table['border_spacing_V']/2; 
-                 }
-               }
-               else { 
-                       if (!$this->simpleTables){
-                               if ($this->packTableData) {
-                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
-                               }
-                               else { 
-                                       $bb = $c['border_details']['B']['w'];
-                               }
-                               $extra = $bb/2; 
-                       }
-                       else if ($this->simpleTables){
-                               $extra = $table['simple']['border_details']['B']['w'] /2; 
-                       }
-               }
-               if (!empty($table['is_thead'][$i])) {
-                       $headerrowheight = max($headerrowheight,$hs);
-                       $headerrowheightplus = max($headerrowheightplus,$hs+$extra);
-               }
-               else if (!empty($table['is_tfoot'][$i])) {
-                       $footerrowheight = max($footerrowheight,$hs);
-                       $footerrowheightplus = max($footerrowheightplus,$hs+$extra);
-               }
-               else {
-                       $checkmaxheight = max($checkmaxheight,$hs);
-                       $checkmaxheightplus = max($checkmaxheightplus,$hs+$extra);
-               }
-               if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($hs,$firstrowheight); }
-
-               if ($c['mih'] > $hs) {
-                       if (!$hs) {
-                               for($k=$i;$k<$lr;$k++) $heightrow[$k] = $c['mih']/$c['rowspan'];
-                       }
-                       elseif (!count($list)) {
-                               $hi = $c['mih'] - $hs;
-                               for($k=$i;$k<$lr;$k++) $heightrow[$k] += ($heightrow[$k]/$hs)*$hi;
-                       }
-                       else {
-                               $hi = $c['mih'] - $hsa;
-                               foreach ($list as $k) $heightrow[$k] += ($heightrow[$k]/$hsa)*$hi;
-                       }
-               }
-               unset($c);
-
-               // If rowspans overlap so that one or more rows do not have a height set...
-               // i.e. for one or more rows, the only cells (explicit) in that row have rowspan>1
-               // so heightrow is still == 0
-               if ($heightrow[$i]==0) {
-                       // Get row extent to analyse above and below
-                       $top = $i;
-                       foreach ($listspan as $checkspan) {
-                               list($cki,$ckj) = $checkspan;
-                               if ($this->cacheTables) {
-                                       $c = $this->_uncacheCell($table['cells'][$cki][$ckj], '', $fh);
-                               }
-                               else 
-                                       $c = &$cells[$cki][$ckj];
-                               if (isset($c['rowspan']) && $c['rowspan']>1) {
-                                       if (($cki + $c['rowspan']-1) >= $i) { $top = min($top, $cki); }
-                               }
-                       }
-                       $bottom = $i + $c['rowspan']-1;
-                       // Check for overconstrained conditions
-                       for ($k=$top; $k<=$bottom; $k++) {
-                               // if ['hr'] for any of the others is also 0, then abort (too complicated)
-                               if ($k != $i && $heightrow[$k]==0) { break(1); }
-                               // check again that top and bottom are not crossed by rowspans - or abort (too complicated)
-                               if ($k==$top) {
-                                       // ???? take account of colspan as well???
-                                       for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
-                                               if (!isset($cells[$k][$m]) || $cells[$k][$m]==0) {
-                                                       break(2); 
-                                               }
-                                       }
-                               }
-                               else if ($k==$bottom) {
-                                       // ???? take account of colspan as well???
-                                       for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
-                                               if ($this->cacheTables) {
-                                                       $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh);
-                                               }
-                                               else 
-                                                       $c = &$cells[$k][$m];
-                                               if (isset($c['rowspan']) && $c['rowspan']>1) {
-                                                       break(2); 
-                                               }
-                                       }
-                               }
-                       }
-                       // By columns add up col height using ['h'] if set or ['mih'] if not
-                       // Intentionally do not substract border-spacing
-                       $colH = array();
-                       $extH = 0;
-                       $newhr = array();
-                       for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
-                          for ($k=$top; $k<=$bottom; $k++) {
-                               if (isset($cells[$k][$m]) && $cells[$k][$m]!=0) { 
-                                       if ($this->cacheTables) {
-                                               $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh);
-                                       }
-                                       else 
-                                               $c = &$cells[$k][$m];
-                                       if (isset($c['h']) && $c['h']) { 
-                                               $useh = $c['h'];
-                                       }
-                                       // ???? take account of colspan as well???
-                                       else { 
-                                               $useh = $c['mih']; 
-                                       }
-                                       $colH[$m] += $useh; 
-                                       if (!isset($c['rowspan']) || $c['rowspan']<2) { $newhr[$k] = max($newhr[$k], $useh); }
-                               }
-                          }
-                          $extH = max($tabH, $colH[$m]);
-                       }
-                       $newhr[$i] = $extH - array_sum($newhr);
-                       for ($k=$top; $k<=$bottom; $k++) { $heightrow[$k] = $newhr[$k]; }
-               }
-
-
-               unset($c);
-       }
-
-       $table['h'] = array_sum($heightrow);
-       unset($heightrow);
-
-       if ($this->cacheTables) { fclose($fh); }
-
-       if ($table['borders_separate']) { 
-               $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['border_details']['T']['w'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] + $table['padding']['T'] +  $table['padding']['B'];
-       }
-       else { 
-               $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['max_cell_border_width']['T']/2 + $table['max_cell_border_width']['B']/2;
-       }
-
-       $maxrowheight = $checkmaxheightplus + $headerrowheightplus + $footerrowheightplus;
-       $maxfirstrowheight = $firstrowheight + $headerrowheightplus + $footerrowheightplus;     // includes thead, 1st row and tfoot
-       return array($table['h'],$maxrowheight,$temppgheight,$remainingpage,$maxfirstrowheight);
-}
-
-function _tableGetWidth(&$table, $i,$j, $fh){
-       if ($this->cacheTables) {
-               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-       }
-       else 
-               $cell = &$table['cells'][$i][$j];
-       if ($cell) {
-               if (isset($cell['x0'])) { return array($cell['x0'], $cell['w0']); }
-               $x = 0;
-               $widthcols = &$table['wc'];
-               for( $k = 0 ; $k < $j ; $k++ ) $x += $widthcols[$k];
-               $w = $widthcols[$j];
-               if (isset($cell['colspan'])) {
-                        for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- )    $w += $widthcols[$k];
-               }
-               $cell['x0'] = $x;
-               $cell['w0'] = $w;
-               if ($this->cacheTables) {
-                       $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0');
-               }
-               return array($x, $w);
-       }
-       return array(0,0);
-}
-
-function _splitTableGetWidth(&$table, $i,$j, $fh){
-       if ($this->cacheTables) {
-               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-       }
-       else 
-               $cell = &$table['cells'][$i][$j];
-       if ($cell) {
-               if (isset($cell['x0'])) return array($cell['x0'], $cell['w0']);
-               $x = 0;
-               $widthcols = &$table['wc'];
-               $pg = $table['colPg'][$j];
-               for( $k = 0 ; $k < $j ; $k++ ) {
-                       if ($table['colPg'][$k]==$pg) $x += $widthcols[$k];
-               }
-               $w = $widthcols[$j];
-               if (isset($cell['colspan'])) {
-                        for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- )    if ($table['colPg'][$k]==$pg) $w += $widthcols[$k];
-               }
-               $cell['x0'] = $x;
-               $cell['w0'] = $w;
-               if ($this->cacheTables) {
-                       $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0');
-               }
-               return array($x, $w);
-       }
-       return array(0,0);
-}
-
-
-function _tableGetHeight(&$table, $i,$j, $fh){
-       if ($this->cacheTables) {
-               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-       }
-       else 
-               $cell = &$table['cells'][$i][$j];
-       if ($cell){
-               if (isset($cell['y0'])) return array($cell['y0'], $cell['h0']);
-               $y = 0;
-               $heightrow = &$table['hr'];
-               for ($k=0;$k<$i;$k++) $y += $heightrow[$k];
-               $h = $heightrow[$i];
-               if (isset($cell['rowspan'])){
-                       for ($k=$i+$cell['rowspan']-1;$k>$i;$k--)
-                               $h += $heightrow[$k];
-               }
-               $cell['y0'] = $y;
-               $cell['h0'] = $h;
-               if ($this->cacheTables) {
-                       $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'y0');
-               }
-               return array($y, $h);
-       }
-       return array(0,0);
-}
-
-function _tableGetMaxRowHeight($table, $row, $fh) {
-       if ($row==$table['nc']-1) { return $table['hr'][$row]; }
-       $maxrowheight = $table['hr'][$row];
-       for ($i=$row+1;$i<$table['nr'];$i++) {
-               $cellsset = 0;
-               for ($j=0;$j<$table['nc'];$j++) {
-                       if ($this->cacheTables) {
-                               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                               if ($cell) {
-                                       if (isset($cell['colspan'])) {  $cellsset += $cell['colspan']; }
-                                       else $cellsset += 1; 
-                               }
-                       }
-                       else {
-                               if ($table['cells'][$i][$j]) { 
-                                       if (isset($table['cells'][$i][$j]['colspan'])) {  $cellsset += $table['cells'][$i][$j]['colspan']; }
-                                       else $cellsset += 1; 
-                               }
-                       }
-               }
-               if ($cellsset == $table['nc']) { return $maxrowheight; }
-               else { $maxrowheight += $table['hr'][$i]; }
-       }
-       return $maxrowheight;
-}
-
-
-// CHANGED TO ALLOW TABLE BORDER TO BE SPECIFIED CORRECTLY - added border_details
-function _tableRect($x, $y, $w, $h, $bord=-1, $details=array(), $buffer=false, $bSeparate=false, $cort='cell', $tablecorner='', $bsv=0, $bsh=0) {
-       $cellBorderOverlay = array();
-
-       if ($bord==-1) { $this->Rect($x, $y, $w, $h); }
-       else if ($this->simpleTables && ($cort=='cell')) {
-               $this->SetLineWidth($details['L']['w']);
-               if ($details['L']['c']) { 
-                       $this->SetDColor($details['L']['c']);
-               }
-               else { $this->SetDColor($this->ConvertColor(0)); }
-               $this->SetLineJoin(0);
-               $this->Rect($x, $y, $w, $h); 
-       }
-       else if ($bord){
-          if (!$bSeparate && $buffer) {
-               $priority = 'LRTB';
-               for($p=0;$p<strlen($priority);$p++) {
-                       $side = $priority[$p];
-                       $details['p'] = $side ;
-
-                       $dom = 0;
-                       if (isset($details[$side]['w'])) { $dom += ($details[$side]['w'] * 100000); }
-                       if (isset($details[$side]['style'])) { $dom += (array_search($details[$side]['style'],$this->borderstyles)*100) ; }
-                       if (isset($details[$side]['dom'])) { $dom += ($details[$side]['dom']*10); }
-
-                       // Precedence to darker colours at joins
-                       $coldom = 0;
-                       if (isset($details[$side]['c']) && is_array($details[$side]['c'])) { 
-                               if ($details[$side]['c']{0}==3) {       // RGB
-                                       $coldom = 10-(((ord($details[$side]['c']{1})*1.00)+(ord($details[$side]['c']{2})*1.00)+(ord($details[$side]['c']{3})*1.00))/76.5); 
-                               }
-                       } // 10 black - 0 white
-                       if ($coldom) { $dom += $coldom; }
-                       // Lastly precedence to RIGHT and BOTTOM cells at joins
-                       if (isset($details['cellposdom'])) { $dom += $details['cellposdom']; } 
-
-                       $save = false;
-                       if ($side == 'T' && $this->issetBorder($bord, _BORDER_TOP)) { $cbord = _BORDER_TOP; $save = true; }
-                       else if ($side == 'L' && $this->issetBorder($bord, _BORDER_LEFT)) { $cbord = _BORDER_LEFT; $save = true; }
-                       else if ($side == 'R' && $this->issetBorder($bord, _BORDER_RIGHT)) { $cbord = _BORDER_RIGHT; $save = true; }
-                       else if ($side == 'B' && $this->issetBorder($bord, _BORDER_BOTTOM)) { $cbord = _BORDER_BOTTOM; $save = true; }
-
-                       if ($save) {
-                               $this->cellBorderBuffer[] = pack("A16nCnda6A10d14",
-                                       str_pad(sprintf("%08.7f", $dom),16,"0",STR_PAD_LEFT),
-                                       $cbord,
-                                       ord($side),
-                                       $details[$side]['s'],
-                                       $details[$side]['w'],
-                                       $details[$side]['c'],
-                                       $details[$side]['style'], 
-                                       $x, $y, $w, $h,
-                                       $details['mbw']['BL'],
-                                       $details['mbw']['BR'],
-                                       $details['mbw']['RT'],
-                                       $details['mbw']['RB'],
-                                       $details['mbw']['TL'],
-                                       $details['mbw']['TR'],
-                                       $details['mbw']['LT'],
-                                       $details['mbw']['LB'],
-                                       $details['cellposdom'],
-                                       0
-                               );
-                          if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset' || $details[$side]['style'] == 'double' ) {
-                               $details[$side]['overlay'] = true;
-                               $this->cellBorderBuffer[] = pack("A16nCnda6A10d14",
-                                       str_pad(sprintf("%08.7f", ($dom+4)),16,"0",STR_PAD_LEFT),
-                                       $cbord,
-                                       ord($side),
-                                       $details[$side]['s'],
-                                       $details[$side]['w'],
-                                       $details[$side]['c'],
-                                       $details[$side]['style'], 
-                                       $x, $y, $w, $h,
-                                       $details['mbw']['BL'],
-                                       $details['mbw']['BR'],
-                                       $details['mbw']['RT'],
-                                       $details['mbw']['RB'],
-                                       $details['mbw']['TL'],
-                                       $details['mbw']['TR'],
-                                       $details['mbw']['LT'],
-                                       $details['mbw']['LB'],
-                                       $details['cellposdom'],
-                                       1
-                               );
-                          }
-                       }
-               }
-               return;
-          }
-
-          if (isset($details['p']) && strlen($details['p'])>1) { $priority = $details['p']; }
-          else { $priority='LTRB'; }
-          $Tw = 0; 
-          $Rw = 0; 
-          $Bw = 0; 
-          $Lw = 0; 
-               if (isset($details['T']['w'])) { $Tw = $details['T']['w']; }
-               if (isset($details['R']['w'])) { $Rw = $details['R']['w']; }
-               if (isset($details['B']['w'])) { $Bw = $details['B']['w']; }
-               if (isset($details['L']['w'])) { $Lw = $details['L']['w']; }
-
-          $x2 = $x + $w; $y2 = $y + $h;
-          $oldlinewidth = $this->LineWidth;
-
-          for($p=0;$p<strlen($priority);$p++) {
-               $side = $priority[$p];
-               $xadj = 0;
-               $xadj2 = 0;
-               $yadj = 0;
-               $yadj2 = 0;
-               $print = false;
-               if ($Tw && $side=='T' && $this->issetBorder($bord, _BORDER_TOP)) {      // TOP
-                       $ly1 = $y;
-                       $ly2 = $y;
-                       $lx1 = $x;
-                       $lx2 = $x2;
-                       $this->SetLineWidth($Tw);
-                       if ($cort == 'cell' || strpos($tablecorner,'L')!==false) {
-                               if ($Tw > $Lw) $xadj = ($Tw - $Lw)/2;
-                               if ($Tw < $Lw) $xadj = ($Tw + $Lw)/2;
-                       }
-                       else { $xadj = $Tw/2 - $bsh/2; }
-                       if ($cort == 'cell' || strpos($tablecorner,'R')!==false) {
-                               if ($Tw > $Rw) $xadj2 = ($Tw - $Rw)/2;
-                               if ($Tw < $Rw) $xadj2 = ($Tw + $Rw)/2;
-                       }
-                       else { $xadj2 = $Tw/2 - $bsh/2; }
-                       if (!$bSeparate && $details['mbw']['TL']) {
-                               $xadj = ($Tw - $details['mbw']['TL'])/2 ;
-                       }
-                       if (!$bSeparate && $details['mbw']['TR']) {
-                               $xadj2 = ($Tw - $details['mbw']['TR'])/2;
-                       }
-                       $print = true;
-               }
-               if ($Lw && $side=='L' && $this->issetBorder($bord, _BORDER_LEFT)) {     // LEFT
-                       $ly1 = $y;
-                       $ly2 = $y2;
-                       $lx1 = $x;
-                       $lx2 = $x;
-                       $this->SetLineWidth($Lw);
-                       if ($cort == 'cell' || strpos($tablecorner,'T')!==false) {
-                               if ($Lw > $Tw) $yadj = ($Lw - $Tw)/2;
-                               if ($Lw < $Tw) $yadj = ($Lw + $Tw)/2;
-                       }
-                       else { $yadj = $Lw/2 - $bsv/2; }
-                       if ($cort == 'cell' || strpos($tablecorner,'B')!==false) {
-                               if ($Lw > $Bw) $yadj2 = ($Lw - $Bw)/2;
-                               if ($Lw < $Bw) $yadj2 = ($Lw + $Bw)/2;
-                       }
-                       else { $yadj2 = $Lw/2 - $bsv/2; }
-                       if (!$bSeparate && $details['mbw']['LT']) {
-                               $yadj = ($Lw - $details['mbw']['LT'])/2;
-                       }
-                       if (!$bSeparate && $details['mbw']['LB']) {
-                               $yadj2 = ($Lw - $details['mbw']['LB'])/2;
-                       }
-                       $print = true;
-               }
-               if ($Rw && $side=='R' && $this->issetBorder($bord, _BORDER_RIGHT)) {    // RIGHT
-                       $ly1 = $y;
-                       $ly2 = $y2;
-                       $lx1 = $x2;
-                       $lx2 = $x2;
-                       $this->SetLineWidth($Rw);
-                       if ($cort == 'cell' || strpos($tablecorner,'T')!==false) {
-                               if ($Rw < $Tw) $yadj = ($Rw + $Tw)/2;
-                               if ($Rw > $Tw) $yadj = ($Rw - $Tw)/2;
-                       }
-                       else { $yadj = $Rw/2 - $bsv/2; }
-
-                       if ($cort == 'cell' || strpos($tablecorner,'B')!==false) {
-                               if ($Rw > $Bw) $yadj2 = ($Rw - $Bw)/2;
-                               if ($Rw < $Bw) $yadj2 = ($Rw + $Bw)/2;
-                       }
-                       else { $yadj2 = $Rw/2 - $bsv/2; }
-
-                       if (!$bSeparate && $details['mbw']['RT']) {
-                               $yadj = ($Rw - $details['mbw']['RT'])/2;
-                       }
-                       if (!$bSeparate && $details['mbw']['RB']) {
-                               $yadj2 = ($Rw - $details['mbw']['RB'])/2;
-                       }
-                       $print = true;
-               }
-               if ($Bw && $side=='B' && $this->issetBorder($bord, _BORDER_BOTTOM)) {   // BOTTOM
-                       $ly1 = $y2;
-                       $ly2 = $y2;
-                       $lx1 = $x;
-                       $lx2 = $x2;
-                       $this->SetLineWidth($Bw);
-                       if ($cort == 'cell' || strpos($tablecorner,'L')!==false) {
-                               if ($Bw > $Lw) $xadj = ($Bw - $Lw)/2;
-                               if ($Bw < $Lw) $xadj = ($Bw + $Lw)/2;
-                       }
-                       else { $xadj = $Bw/2 - $bsh/2; }
-                       if ($cort == 'cell' || strpos($tablecorner,'R')!==false) {
-                               if ($Bw > $Rw) $xadj2 = ($Bw - $Rw)/2;
-                               if ($Bw < $Rw) $xadj2 = ($Bw + $Rw)/2;
-                       }
-                       else { $xadj2 = $Bw/2 - $bsh/2; }
-                       if (!$bSeparate && $details['mbw']['BL']) {
-                               $xadj = ($Bw - $details['mbw']['BL'])/2;
-                       }
-                       if (!$bSeparate && $details['mbw']['BR']) {
-                               $xadj2 = ($Bw - $details['mbw']['BR'])/2;
-                       }
-                       $print = true;
-               }
-
-               // Now draw line
-               if ($print) {
-/*-- TABLES-ADVANCED-BORDERS --*/
-                if ($details[$side]['style'] == 'double') {
-                  if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) {
-                       if ($details[$side]['c']) { 
-                               $this->SetDColor($details[$side]['c']);
-                       }
-                       else { $this->SetDColor($this->ConvertColor(0)); }
-                       $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
-                  }
-                  if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) {
-                       if ($bSeparate && $cort=='table') {
-                               if ($side=='T') {
-                                  $xadj -= $this->LineWidth/2;
-                                  $xadj2 -= $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
-                                       $xadj += $this->LineWidth/2; 
-                                  }
-                                  if ($this->issetBorder($bord, _BORDER_RIGHT)) {
-                                       $xadj2 += $this->LineWidth; 
-                                  }
-                               }
-                               if ($side=='L') {
-                                  $yadj -= $this->LineWidth/2;
-                                  $yadj2 -= $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
-                                       $yadj += $this->LineWidth/2; 
-                                  }
-                                  if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
-                                       $yadj2 += $this->LineWidth; 
-                                  }
-                               }
-                               if ($side=='B') {
-                                  $xadj -= $this->LineWidth/2;
-                                  $xadj2 -= $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
-                                       $xadj += $this->LineWidth/2;
-                                  }
-                                  if ($this->issetBorder($bord, _BORDER_RIGHT)) {
-                                       $xadj2 += $this->LineWidth; 
-                                  }
-                               }
-                               if ($side=='R') {
-                                  $yadj -= $this->LineWidth/2;
-                                  $yadj2 -= $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
-                                       $yadj += $this->LineWidth/2;
-                                  }
-                                  if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
-                                       $yadj2 += $this->LineWidth; 
-                                  }
-                               }
-                       }
-
-                       $this->SetLineWidth($this->LineWidth/3);
-
-                       $tbcol = $this->ConvertColor(255);
-                       for($l=0; $l <= $this->blklvl; $l++) {
-                               if ($this->blk[$l]['bgcolor']) {
-                                       $tbcol = ($this->blk[$l]['bgcolorarray']);      // mPDF 5.6.53
-                               }
-                       }
-
-                       if ($bSeparate) {
-                          $cellBorderOverlay[] = array(
-                               'x' => $lx1 + $xadj, 
-                               'y' => $ly1 + $yadj, 
-                               'x2' => $lx2 - $xadj2, 
-                               'y2' => $ly2 - $yadj2,
-                               'col' => $tbcol, 
-                               'lw' => $this->LineWidth,
-                          );
-                       }
-                       else { 
-                               $this->SetDColor($tbcol);
-                               $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
-                       }
-                  }
-                }
-
-
-                else if (isset($details[$side]['style']) && ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset')) {
-                  if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) {
-                       if ($details[$side]['c']) { 
-                               $this->SetDColor($details[$side]['c']);
-                       }
-                       else { $this->SetDColor($this->ConvertColor(0)); }
-                       if ($details[$side]['style'] == 'outset' || $details[$side]['style'] == 'groove') {
-                               $nc = $this->_darkenColor($details[$side]['c']);
-                               $this->SetDColor($nc); 
-                       }
-                       else if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') {
-                               $nc = $this->_lightenColor($details[$side]['c']);
-                               $this->SetDColor($nc);
-                       }
-                       $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
-                  }
-                  if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) {
-                       if ($details[$side]['c']) { 
-                               $this->SetDColor($details[$side]['c']);
-                       }
-                       else { $this->SetDColor($this->ConvertColor(0)); }
-                       $doubleadj = ($this->LineWidth)/3;
-                       $this->SetLineWidth($this->LineWidth/2);
-                       $xadj3 = $yadj3 = $wadj3 = $hadj3 = 0;
-
-                       if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') {
-                          $nc = $this->_darkenColor($details[$side]['c']);
-
-                          if ($bSeparate && $cort=='table') {
-                               if ($side=='T') {
-                                  $yadj3 = $this->LineWidth/2; 
-                                  $xadj3 = -$this->LineWidth/2;
-                                  $wadj3 = $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
-                                       $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; 
-                                  }
-                                  if ($this->issetBorder($bord, _BORDER_RIGHT)) {
-                                       $wadj3 -= $this->LineWidth*2; 
-                                  }
-                               }
-                               if ($side=='L') {
-                                  $xadj3 = $this->LineWidth/2; 
-                                  $yadj3 = -$this->LineWidth/2;
-                                  $hadj3 = $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
-                                       $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; 
-                                  }
-                                  if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
-                                       $hadj3 -= $this->LineWidth*2; 
-                                  }
-                               }
-                               if ($side=='B') {
-                                  $yadj3 = $this->LineWidth/2; 
-                                  $xadj3 = -$this->LineWidth/2;
-                                  $wadj3 = $this->LineWidth;
-                               }
-                               if ($side=='R') {
-                                  $xadj3 = $this->LineWidth/2; 
-                                  $yadj3 = -$this->LineWidth/2;
-                                  $hadj3 = $this->LineWidth;
-                               }
-                          }
-
-                          else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; $wadj3 = -$this->LineWidth*2; }
-                          else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; $hadj3 = -$this->LineWidth*2; }
-
-                          else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $wadj3 = $this->LineWidth/2; }
-                          else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $hadj3 = $this->LineWidth/2; }
-
-                          else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
-                          else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
-                       }
-                       else {
-                          $nc = $this->_lightenColor($details[$side]['c']);
-
-                          if ($bSeparate && $cort=='table') {
-                               if ($side=='T') {
-                                  $yadj3 = $this->LineWidth/2; 
-                                  $xadj3 = -$this->LineWidth/2;
-                                  $wadj3 = $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
-                                       $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; 
-                                  }
-                               }
-                               if ($side=='L') {
-                                  $xadj3 = $this->LineWidth/2; 
-                                  $yadj3 = -$this->LineWidth/2;
-                                  $hadj3 = $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
-                                       $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; 
-                                  }
-                               }
-                               if ($side=='B') {
-                                  $yadj3 = $this->LineWidth/2; 
-                                  $xadj3 = -$this->LineWidth/2;
-                                  $wadj3 = $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
-                                       $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; 
-                                  }
-                               }
-                               if ($side=='R') {
-                                  $xadj3 = $this->LineWidth/2; 
-                                  $yadj3 = -$this->LineWidth/2;
-                                  $hadj3 = $this->LineWidth;
-                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
-                                       $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; 
-                                  }
-                               }
-                          }
-
-                          else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
-                          else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
-
-                          else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
-                          else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
-
-                          else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = -$this->LineWidth/2; $wadj3 = $this->LineWidth; }
-                          else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = -$this->LineWidth/2;  $hadj3 = $this->LineWidth; }
-
-                       }
-
-                       if ($bSeparate) {
-                          $cellBorderOverlay[] = array(
-                               'x' => $lx1 + $xadj + $xadj3, 
-                               'y' => $ly1 + $yadj + $yadj3, 
-                               'x2' => $lx2 - $xadj2 + $xadj3 + $wadj3, 
-                               'y2' => $ly2 - $yadj2 + $yadj3 + $hadj3,
-                               'col' => $nc,
-                               'lw' => $this->LineWidth,
-                          );
-                       }
-                       else { 
-                          $this->SetDColor($nc);
-                          $this->Line($lx1 + $xadj + $xadj3, $ly1 + $yadj + $yadj3, $lx2 - $xadj2 + $xadj3 + $wadj3, $ly2 - $yadj2 + $yadj3 + $hadj3);
-                       }
-                  }
-                }
-
-
-                else {
-/*-- END TABLES-ADVANCED-BORDERS --*/
-                  if ($details[$side]['style'] == 'dashed') {
-                       $dashsize = 2;  // final dash will be this + 1*linewidth
-                       $dashsizek = 1.5;       // ratio of Dash/Blank
-                       $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2));
-                  }
-                  else if ($details[$side]['style'] == 'dotted') {
-                       $this->SetLineJoin(1);
-                       $this->SetLineCap(1);
-                       $this->SetDash(0.001,($this->LineWidth*2));
-                  }
-                  if ($details[$side]['c']) { 
-                       $this->SetDColor($details[$side]['c']);
-                  }
-                  else { $this->SetDColor($this->ConvertColor(0)); }
-                  $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
-/*-- TABLES-ADVANCED-BORDERS --*/
-                }
-/*-- END TABLES-ADVANCED-BORDERS --*/
-
-                 // Reset Corners
-                 $this->SetDash(); 
-                 //BUTT style line cap
-                 $this->SetLineCap(2);
-               }
-          }
-
-          if ($bSeparate && count($cellBorderOverlay)) {
-               foreach($cellBorderOverlay AS $cbo) {
-                       $this->SetLineWidth($cbo['lw']);
-                       $this->SetDColor($cbo['col']); 
-                       $this->Line($cbo['x'], $cbo['y'], $cbo['x2'], $cbo['y2']);
-               }
-          }
-
-          // $this->SetLineWidth($oldlinewidth);
-          // $this->SetDColor($this->ConvertColor(0));
-       }
-}
-
-
-/*-- TABLES --*/
-/*-- TABLES-ADVANCED-BORDERS --*/
-function _lightenColor($c) {
-       if (is_array($c)) { die('Color error in _lightencolor'); }
-       if ($c{0}==3 || $c{0}==5) {     // RGB
-               list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255);
-               $l += ((1 - $l)*0.8);
-               list($r,$g,$b) = $this->hsl2rgb($h,$s,$l);
-               $ret = array(3,$r,$g,$b);
-       }
-       else if ($c{0}==4 || $c{0}==6) {        // CMYK
-               $ret = array(4, max(0,(ord($c{1})-20)), max(0,(ord($c{2})-20)), max(0,(ord($c{3})-20)), max(0,(ord($c{4})-20)) );
-       }
-       else if ($c{0}==1) {    // Grayscale
-               $ret = array(1,min(255,(ord($c{1})+32)));
-       }
-       $c = array_pad($ret, 6, 0);
-       $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); 
-       return $cstr;
-}
-
-
-function _darkenColor($c) {
-       if (is_array($c)) { die('Color error in _darkenColor'); }
-       if ($c{0}==3 || $c{0}==5) {     // RGB
-               list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255);
-               $s *= 0.25;
-               $l *= 0.75;
-               list($r,$g,$b) = $this->hsl2rgb($h,$s,$l);
-               $ret = array(3,$r,$g,$b);
-       }
-       else if ($c{0}==4 || $c{0}==6) {        // CMYK
-               $ret = array(4, min(100,(ord($c{1})+20)), min(100,(ord($c{2})+20)), min(100,(ord($c{3})+20)), min(100,(ord($c{4})+20)) );
-       }
-       else if ($c{0}==1) {    // Grayscale
-               $ret = array(1,max(0,(ord($c{1})-32)));
-       }
-       $c = array_pad($ret, 6, 0);
-       $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); 
-       return $cstr;
-}
-
-/*-- END TABLES-ADVANCED-BORDERS --*/
-
-
-
-function setBorder(&$var, $flag, $set = true) {
-       $flag = intval($flag);
-       if ($set) { $set = true; }
-       $var = intval($var);
-       $var = $set ? ($var | $flag) : ($var & ~$flag);
-}
-function issetBorder($var, $flag) {
-       $flag = intval($flag);
-       $var = intval($var);
-       return (($var & $flag) == $flag);
-}
-
-
-function _table2cellBorder(&$tableb, &$cbdb, &$cellb, $bval) {
-       if ($tableb && $tableb['w'] > $cbdb['w']) {
-               $cbdb = $tableb;
-               $this->setBorder($cellb, $bval); 
-       }
-       else if ($tableb && $tableb['w'] == $cbdb['w'] 
-               && array_search($tableb['style'],$this->borderstyles) > array_search($cbdb['style'],$this->borderstyles)) {
-               $cbdb = $tableb;
-               $this->setBorder($cellb, $bval); 
-       }
-}
-
-// FIX BORDERS ********************************************
-function _fixTableBorders(&$table){
-       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-       else { $fh = null; }
-
-       if (!$table['borders_separate'] && $table['border_details']['L']['w']) {
-               $table['max_cell_border_width']['L'] = $table['border_details']['L']['w']; 
-       }
-       if (!$table['borders_separate'] && $table['border_details']['R']['w']) {
-               $table['max_cell_border_width']['R'] = $table['border_details']['R']['w']; 
-       }
-       if (!$table['borders_separate'] && $table['border_details']['T']['w']) {
-               $table['max_cell_border_width']['T'] = $table['border_details']['T']['w']; 
-       }
-       if (!$table['borders_separate'] && $table['border_details']['B']['w']) {
-               $table['max_cell_border_width']['B'] = $table['border_details']['B']['w']; 
-       }
-       if ($this->simpleTables) { return; }
-       $cells = &$table['cells'];
-       $numcols = $table['nc'];
-       $numrows = $table['nr'];
-/*-- TABLES-ADVANCED-BORDERS --*/
-       if (isset($table['topntail']) && $table['topntail']) { $tntborddet = $this->border_details($table['topntail']); }
-       if (isset($table['thead-underline']) && $table['thead-underline']) { $thuborddet = $this->border_details($table['thead-underline']); } 
-/*-- END TABLES-ADVANCED-BORDERS --*/
-
-       for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows
-         for( $j = 0 ; $j < $numcols ; $j++ ) { //Columns
-               if (isset($cells[$i][$j]) && $cells[$i][$j]) {
-                       if ($this->cacheTables) {
-                               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                       }
-                       else 
-                               $cell = &$cells[$i][$j];
-                       if ($this->packTableData) {     // includes $this->cacheTables
-                               $cbord = $this->_unpackCellBorder($cell['borderbin']);
-                       }
-                       else {
-                               $cbord = &$cells[$i][$j];
-                       }
-
-                       if (!$cbord['border'] && isset($table['border']) && $table['border'] && $this->table_border_attr_set) {
-                               $cbord['border'] = $table['border'];
-                               $cbord['border_details'] = $table['border_details'];
-                       }
-
-                       if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; }
-                       else { $ccolsp = 1; }
-                       if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; }
-                       else { $crowsp = 1; }
-
-                       $cbord['border_details']['cellposdom'] = ((($i+1)/$numrows) / 10000 ) + ((($j+1)/$numcols) / 10 );
-                       // Inherit Cell border from Table border
-                       if ($this->table_border_css_set && !$table['borders_separate']) {
-                               if ($i == 0) {
-                                 $this->_table2cellBorder($table['border_details']['T'], $cbord['border_details']['T'], $cbord['border'], _BORDER_TOP);
-                               }
-                               if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) {
-                                 $this->_table2cellBorder($table['border_details']['B'], $cbord['border_details']['B'], $cbord['border'], _BORDER_BOTTOM);
-                               }
-                               if ($j == 0) {
-                                 $this->_table2cellBorder($table['border_details']['L'], $cbord['border_details']['L'], $cbord['border'], _BORDER_LEFT);
-                               }
-                               if ($j == ($numcols-1) || ($j+$ccolsp) == ($numcols) ) {
-                                 $this->_table2cellBorder($table['border_details']['R'], $cbord['border_details']['R'], $cbord['border'], _BORDER_RIGHT);
-                               }
-                       }
-
-/*-- TABLES-ADVANCED-BORDERS --*/
-                       $fixbottom = true;
-                       if (isset($table['topntail']) && $table['topntail']) {
-                               if ($i == 0) {
-                                 $cbord['border_details']['T'] = $tntborddet;
-                                 $this->setBorder($cbord['border'], _BORDER_TOP); 
-                               }
-                               if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) {
-                                       $cbord['border_details']['B'] = $tntborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
-                                       $fixbottom = false;
-                               }
-                               else if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']) {
-                                 if (!$table['borders_separate']) {
-                                       $cbord['border_details']['T'] = $tntborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
-                                 }
-                               }
-                               if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows']-1)) {
-                                 if (!$table['borders_separate']) {
-                                       $cbord['border_details']['B'] = $tntborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
-                                       $fixbottom = false;
-                                 }
-                               }
-                               else if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows'])) {
-                                       $cbord['border_details']['T'] = $tntborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
-                               }
-                               if ($this->tabletheadjustfinished) {    // $this->tabletheadjustfinished called from tableheader
-                                 if (!$table['borders_separate']) {
-                                       $cbord['border_details']['T'] = $tntborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
-                                 }
-                               }
-                               if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) {
-                                       $cbord['border_details']['B'] = $tntborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
-                               }
-                       }
-                       if (isset($table['thead-underline']) && $table['thead-underline']) {
-                               if ($table['borders_separate']) {
-                                 if ($i == 0) {
-                                       $cbord['border_details']['B'] = $thuborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
-                                       $fixbottom = false;
-                                 }
-                               }
-                               else  {
-                                 if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) {
-                                       $cbord['border_details']['T'] = $thuborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
-                                 }
-                                 else if ($this->tabletheadjustfinished) {     // $this->tabletheadjustfinished called from tableheader
-                                       $cbord['border_details']['T'] = $thuborddet;
-                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
-                                 }
-                               }
-                       }
-
-                       // Collapse Border - Algorithm for conflicting borders
-                       // Hidden >> Width >> double>solid>dashed>dotted... >> style set on cell>table >> top/left>bottom/right
-                       // Do not turn off border which is overridden
-                       // Needed for page break for TOP/BOTTOM both to be defined in Collapsed borders
-                       // Means it is painted twice. (Left/Right can still disable overridden border)
-                       if (!$table['borders_separate']) {
-                         if (($i < ($numrows-1)  || ($i+$crowsp) < $numrows ) && $fixbottom ) {        // Bottom
-                          for ($cspi = 0; $cspi<$ccolsp; $cspi++) {
-                               // already defined Top for adjacent cell below
-                               if (isset($cells[($i+$crowsp)][$j+$cspi])) {
-                                  if ($this->packTableData) {
-                                       if ($this->cacheTables) {
-                                               $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j+$cspi], '', $fh);
-                                       }
-                                       else { $adjc = $cells[($i+$crowsp)][$j+$cspi]; }
-                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
-                                  }
-                                  else { $celladj =& $cells[($i+$crowsp)][$j+$cspi]; }
-                               }
-                               else { $celladj = false; }
-                               if ($celladj && $celladj['border_details']['T']['s'] == 1)  {
-                                  $csadj = $celladj['border_details']['T']['w'];
-                                  $csthis = $cbord['border_details']['B']['w'];
-                                  // Hidden
-                                  if ($cbord['border_details']['B']['style']=='hidden') {
-                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
-                                       $this->setBorder($celladj['border'] , _BORDER_TOP, false); 
-                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false); 
-                                  }
-                                  else if ($celladj['border_details']['T']['style']=='hidden') {
-                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
-                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false); 
-                                       $this->setBorder($celladj['border'] , _BORDER_TOP, false); 
-                                  }
-                                  // Width
-                                  else if ($csthis > $csadj) {
-                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
-                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM); 
-                                   }
-                                  }
-                                  else if ($csadj > $csthis) {
-                                   if ($ccolsp < 2) {  // don't overwrite this cell if it spans
-                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
-                                       $this->setBorder($celladj['border'] , _BORDER_TOP); 
-                                   }
-                                  }
-
-                                  // double>solid>dashed>dotted... 
-                                  else if (array_search($cbord['border_details']['B']['style'],$this->borderstyles) > array_search($celladj['border_details']['T']['style'],$this->borderstyles)) {
-                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
-                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM ); 
-                                   }
-                                  }
-                                  else if (array_search($celladj['border_details']['T']['style'],$this->borderstyles) > array_search($cbord['border_details']['B']['style'],$this->borderstyles)) {
-                                   if ($ccolsp < 2) {  // don't overwrite this cell if it spans
-                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
-                                       $this->setBorder($celladj['border'] , _BORDER_TOP); 
-                                   }
-                                  }
-
-
-
-                                  // Style set on cell vs. table
-                                  else if ($celladj['border_details']['T']['dom'] > $cbord['border_details']['B']['dom']) {
-                                   if ($ccolsp < 2) {  // don't overwrite this cell if it spans
-                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
-                                       $this->setBorder($celladj['border'] , _BORDER_TOP); 
-                                   }
-                                  }
-                                  // Style set on cell vs. table  - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT
-                                  else {
-                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
-                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM ); 
-                                   }
-                                  }
-                               }
-                               else if ($celladj) {
-                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
-                                   }
-                               }
-                               if ($celladj && $this->packTableData) { 
-                                       $celladj['borderbin'] = $this->_packCellBorder($celladj); 
-                                       unset($celladj['border']);
-                                       unset($celladj['border_details']);
-                               }
-                               if ($this->cacheTables) {
-                                       $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$crowsp][$j+$cspi]);
-                               }
-                               unset($celladj);
-                          }
-                         }
-
-                         if ($j < ($numcols-1)  || ($j+$ccolsp) < $numcols ) { // Right-Left
-                          for ($cspi = 0; $cspi<$crowsp; $cspi++) {
-                               // already defined Left for adjacent cell to R
-                               if (isset($cells[($i+$cspi)][$j+$ccolsp])) {
-                                  if ($this->packTableData) {
-                                       if ($this->cacheTables) {
-                                               $adjc = $this->_uncacheCell($table['cells'][$i+$cspi][$j+$ccolsp], '', $fh);
-                                       }
-                                       else { $adjc = $cells[($i+$cspi)][$j+$ccolsp]; }
-                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
-                                  }
-                                  else { $celladj =& $cells[$i+$cspi][$j+$ccolsp]; }
-                               }
-                               else { $celladj = false; }
-                               if ($celladj && $celladj['border_details']['L']['s'] == 1) {
-                                  $csadj = $celladj['border_details']['L']['w'];
-                                  $csthis = $cbord['border_details']['R']['w'];
-                                  // Hidden
-                                  if ($cbord['border_details']['R']['style']=='hidden') {
-                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); 
-                                  }
-                                  else if ($celladj['border_details']['L']['style']=='hidden') {
-                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); 
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
-                                  }
-                                  // Width
-                                  else if ($csthis > $csadj) {
-                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT); 
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
-                                   }
-                                  }
-                                  else if ($csadj > $csthis) {
-                                   if ($crowsp < 2) {  // don't overwrite this cell if it spans
-                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT, false); 
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT); 
-                                   }
-                                  }
-
-                                  // double>solid>dashed>dotted... 
-                                  else if (array_search($cbord['border_details']['R']['style'],$this->borderstyles) > array_search($celladj['border_details']['L']['style'],$this->borderstyles)) {
-                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT); 
-                                   }
-                                  }
-                                  else if (array_search($celladj['border_details']['L']['style'],$this->borderstyles) > array_search($cbord['border_details']['R']['style'],$this->borderstyles)) {
-                                   if ($crowsp < 2) {  // don't overwrite this cell if it spans
-                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); 
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT); 
-                                   }
-                                  }
-
-
-                                  // Style set on cell vs. table
-                                  else if ($celladj['border_details']['L']['dom'] > $cbord['border_details']['R']['dom']) {
-                                   if ($crowsp < 2) {  // don't overwrite this cell if it spans
-                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
-                                       $this->setBorder($celladj['border'] , _BORDER_LEFT); 
-                                   }
-                                  }
-                                  // Style set on cell vs. table  - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT
-                                  else {
-                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
-                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT); 
-                                   }
-                                  }
-                               }
-                               else if ($celladj) {
-                                  // if right-cell border is not set
-                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
-                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
-                                   }
-                               }
-                               if ($celladj && $this->packTableData) { 
-                                       $celladj['borderbin'] = $this->_packCellBorder($celladj); 
-                                       unset($celladj['border']);
-                                       unset($celladj['border_details']);
-                               }
-                               if ($this->cacheTables) {
-                                       $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$cspi][$j+$ccolsp]);
-                               }
-                               unset($celladj);
-                          }
-                         }
-                       }
-
-
-                       // Set maximum cell border width meeting at LRTB edges of cell - used for extended cell border
-                       // ['border_details']['mbw']['LT'] = meeting border width - Left border - Top end
-                       if (!$table['borders_separate']) {
-                         $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $cbord['border_details']['L']['w']);
-                         $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $cbord['border_details']['R']['w']);
-                         $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $cbord['border_details']['T']['w']);
-                         $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $cbord['border_details']['B']['w']);
-                         $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $cbord['border_details']['L']['w']);
-                         $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $cbord['border_details']['R']['w']);
-                         $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $cbord['border_details']['T']['w']);
-                         $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $cbord['border_details']['B']['w']);
-                         if (($i+$crowsp) < $numrows && isset($cells[$i+$crowsp][$j])) {       // Has Bottom adjoining cell
-                               if ($this->packTableData) {
-                                       if ($this->cacheTables) {
-                                               $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j], '', $fh);
-                                       }
-                                       else { $adjc = $cells[$i+$crowsp][$j]; }
-                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
-                               }
-                               else { $celladj =& $cells[$i+$crowsp][$j]; }
-                               $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['TL']);
-                               $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['TR']);
-                               $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['mbw']['LT']);
-                               $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['mbw']['RT']);
-                               unset($celladj);
-                         }
-                         if (($j+$ccolsp) < $numcols && isset($cells[$i][$j+$ccolsp])) {       // Has Right adjoining cell
-                               if ($this->packTableData) {
-                                       if ($this->cacheTables) {
-                                               $adjc = $this->_uncacheCell($table['cells'][$i][$j+$ccolsp], '', $fh);
-                                       }
-                                       else { $adjc = $cells[$i][$j+$ccolsp]; }
-                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
-                               }
-                               else { $celladj =& $cells[$i][$j+$ccolsp]; }
-                               $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['LT']);
-                               $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['LB']);
-                               $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['mbw']['TL']);
-                               $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['mbw']['BL']);
-                               unset($celladj);
-                         }
-
-                         if ($i > 0 && isset($cells[$i-1][$j]) && (($this->packTableData && $cells[$i-1][$j]['borderbin']) || $cells[$i-1][$j]['border'])) {   // Has Top adjoining cell
-                               if ($this->packTableData) {
-                                       if ($this->cacheTables) {
-                                               $adjc = $this->_uncacheCell($table['cells'][$i-1][$j], '', $fh);
-                                       }
-                                       else { $adjc = $cells[$i-1][$j]; }
-                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
-                               }
-                               else { $celladj =& $cells[$i-1][$j]; }
-                               $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['BL']);
-                               $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['BR']);
-                               $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['mbw']['LB']);
-                               $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['mbw']['RB']);
-
-                               if ($celladj['border_details']['mbw']['BL']) {
-                                       $celladj['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['BL']);
-                               }
-                               if ($celladj['border_details']['mbw']['BR'] ) {
-                                       $celladj['border_details']['mbw']['BR'] = max($celladj['border_details']['mbw']['BR'], $cbord['border_details']['mbw']['TR']);
-                               }
-                               if ($this->packTableData) { $cells[$i-1][$j]['borderbin'] = $this->_packCellBorder($celladj); }
-                               unset($celladj);
-                         }
-                         if ($j > 0 && isset($cells[$i][$j-1]) && (($this->packTableData && $cells[$i][$j-1]['borderbin']) || $cells[$i][$j-1]['border'])) {   // Has Left adjoining cell
-                               if ($this->packTableData) {
-                                       if ($this->cacheTables) {
-                                               $adjc = $this->_uncacheCell($table['cells'][$i][$j-1], '', $fh);
-                                       }
-                                       else { $adjc = $cells[$i][$j-1]; }
-                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
-                               }
-                               else { $celladj =& $cells[$i][$j-1]; }
-                               $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['RT']);
-                               $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['RB']);
-                               $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['mbw']['BR']);
-                               $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['TR']);
-
-                               if ($celladj['border_details']['mbw']['RT']) {
-                                       $celladj['border_details']['mbw']['RT'] = max($celladj['border_details']['mbw']['RT'], $cbord['border_details']['mbw']['LT']);
-                               }
-                               if ($celladj['border_details']['mbw']['RB']) {
-                                       $celladj['border_details']['mbw']['RB'] = max($celladj['border_details']['mbw']['RB'], $cbord['border_details']['mbw']['LB']);
-                               }
-                               if ($this->packTableData) { $cells[$i][$j-1]['borderbin'] = $this->_packCellBorder($celladj); }
-                               unset($celladj);
-                         }
-
-
-                         // Update maximum cell border width at LRTB edges of table - used for overall table width
-                         if ($j == 0 && $cbord['border_details']['L']['w']) {
-                               $table['max_cell_border_width']['L'] = max($table['max_cell_border_width']['L'],$cbord['border_details']['L']['w']); 
-                         }
-                         if (($j == ($numcols-1) || ($j+$ccolsp) == $numcols ) && $cbord['border_details']['R']['w']) {
-                               $table['max_cell_border_width']['R'] = max($table['max_cell_border_width']['R'],$cbord['border_details']['R']['w']); 
-                         }
-                         if ($i == 0 && $cbord['border_details']['T']['w']) {
-                               $table['max_cell_border_width']['T'] = max($table['max_cell_border_width']['T'],$cbord['border_details']['T']['w']); 
-                         }
-                         if (($i == ($numrows-1) || ($i+$crowsp) == $numrows ) && $cbord['border_details']['B']['w']) {
-                               $table['max_cell_border_width']['B'] = max($table['max_cell_border_width']['B'],$cbord['border_details']['B']['w']); 
-                         }
-                       }
-/*-- END TABLES-ADVANCED-BORDERS --*/
-
-                       if ($this->packTableData) { $cell['borderbin'] = $this->_packCellBorder($cbord); }
-
-                       if ($this->cacheTables) {
-                               $this->_cacheUpdateBorder($cell, $fh, $table['cells'][$i][$j]);
-                       }
-                       unset($cbord );
-                       unset($cell );
-               }
-         }
-       }
-       if ($this->cacheTables) { fclose($fh); }
-       unset($cell );
-}
-// END FIX BORDERS ************************************************************************************
-
-
-function _reverseTableDir(&$table) {
-       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-       $cells = &$table['cells'];
-       $numcols = $table['nc'];
-       $numrows = $table['nr'];
-       for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows
-               $row = array();
-               for( $j = ($numcols-1) ; $j >= 0 ; $j-- ) { //Columns
-                       if (isset($cells[$i][$j]) && $cells[$i][$j]) {
-                               if ($this->cacheTables) {
-                                       $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                               }
-                               else 
-                                       $cell = &$cells[$i][$j];
-                               $col = $numcols - $j - 1;
-                               if (isset($cell['colspan']) && $cell['colspan'] > 1) { $col -= ($cell['colspan']-1); }
-                               // Nested content
-                               for ($n=0; $n < count($cell['textbuffer']); $n++) {
-                                       $t = $cell['textbuffer'][$n][0];
-                                       if (substr($t,0,19) == "\xbb\xa4\xactype=nestedtable") {
-                                               $objattr = $this->_getObjAttr($t);
-                                               $objattr['col'] = $col;
-                                               $cell['textbuffer'][$n][0] = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac";
-                                               $this->table[($this->tableLevel+1)][$objattr['nestedcontent']]['nestedpos'][1] = $col;
-                                               if ($this->cacheTables) {
-                                                       $this->_cacheUpdateTxB($cell, $fh, $table['cells'][$i][$j]);
-                                               }
-                                       }
-                               }
-                               $row[$col] = $cells[$i][$j];
-                               unset($cell);
-                       }
-               }
-               for($f=0; $f < $numcols; $f++) { 
-                       if (!isset($row[$f])) { $row[$f] = 0; }
-               }
-               $table['cells'][$i] = $row;
-       }
-       if ($this->cacheTables) { fclose($fh); }
-}
-
-
-function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0, $rety = 0){
-       $level = $table['level'];
-       $levelid = $table['levelid'];
-
-       $cells = &$table['cells'];
-       $numcols = $table['nc'];
-       $numrows = $table['nr'];
-
-       if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
-
-       if (!$split || ($startrow==0 && $splitpg==0) || $startrow>0){
-               // TABLE TOP MARGIN
-               if ($table['margin']['T']) {
-                  if (!$this->table_rotate && $level==1) {
-                       $this->DivLn($table['margin']['T'],$this->blklvl,true,1);       // collapsible
-                  }
-                  else {
-                       $this->y += ($table['margin']['T']);
-                  }
-               }
-               // Advance down page by half width of top border
-               if ($table['borders_separate']) { 
-                       if ($startrow>0 && (!isset($table['is_thead']) || count($table['is_thead'])==0))
-                               $adv = $table['border_spacing_V']/2; 
-                       else 
-                               $adv = $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; 
-               }
-               else { 
-                       $adv = $table['max_cell_border_width']['T']/2; 
-               }
-               if (!$this->table_rotate && $level==1) { $this->DivLn($adv); }
-               else { $this->y += $adv; }
-       }
-
-       if ($level==1) {
-               $this->x = $this->lMargin  + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'];
-               $x0 = $this->x; 
-               $y0 = $this->y;
-               $right = $x0 + $this->blk[$this->blklvl]['inner_width'];
-               $outerfilled = $this->y;        // Keep track of how far down the outer DIV bgcolor is painted (NB rowspans)
-               $this->outerfilled = $this->y;
-               $this->colsums = array();
-       }
-       else {
-               $x0 = $this->x; 
-               $y0 = $this->y;
-               $right = $x0 + $table['w'];
-       }
-
-       if ($this->table_rotate) {
-               $temppgwidth = $this->tbrot_maxw;
-               $this->PageBreakTrigger = $pagetrigger = $y0 + ($this->blk[$this->blklvl]['inner_width']);
-          if ($level==1) {
-               $this->tbrot_y0 = $this->y - $adv - $table['margin']['T'] ;
-               $this->tbrot_x0 = $this->x;
-               $this->tbrot_w = $table['w'];
-               if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; }
-               else { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['max_cell_border_width']['T']; }
-          }
-       }
-       else {
-               $this->PageBreakTrigger = $pagetrigger = ($this->h - $this->bMargin);
-               if ($level==1) {
-                       $temppgwidth = $this->blk[$this->blklvl]['inner_width'];
-                       if (isset($table['a']) and ($table['w'] < $this->blk[$this->blklvl]['inner_width'])) {
-                               if ($table['a']=='C') { $x0 += ((($right-$x0) - $table['w'])/2); }
-                               else if ($table['a']=='R') { $x0 = $right - $table['w']; }
-                       }
-               }
-               else {
-                       $temppgwidth = $table['w'];
-               }
-       }
-       if(!isset($table['overflow'])) { $table['overflow'] = null; }
-       if ($table['overflow']=='hidden' && $level==1 && !$this->table_rotate && !$this->ColActive) {
-               //Bounding rectangle to clip
-               $this->tableClipPath = sprintf('q %.3F %.3F %.3F %.3F re W n',$x0*_MPDFK,$this->h*_MPDFK,$this->blk[$this->blklvl]['inner_width']*_MPDFK,-$this->h*_MPDFK);
-               $this->_out($this->tableClipPath);
-       }
-       else { $this->tableClipPath = ''; }
-
-
-       if ($table['borders_separate']) { $indent = $table['margin']['L'] + $table['border_details']['L']['w'] + $table['padding']['L'] + $table['border_spacing_H']/2; }
-       else { $indent = $table['margin']['L'] + $table['max_cell_border_width']['L']/2; }
-       $x0 += $indent;
-
-       $returny = 0;
-       $lastCol = 0;
-       $tableheader = array();
-       $tablefooter = array();
-       $tableheaderrowheight = 0; 
-       $tablefooterrowheight = 0;
-       $footery = 0;
-
-       // mPD 3.0 Set the Page & Column where table starts
-       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-               $tablestartpage = 'EVEN'; 
-       }
-       else if (($this->mirrorMargins) && (($this->page)%2==1)) {      // ODD
-               $tablestartpage = 'ODD'; 
-       }
-       else { $tablestartpage = ''; }
-       if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; }
-       else { $tablestartcolumn = ''; }
-
-       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
-       else { $fh = null; }
-
-       $y = $h = 0;
-       for( $i = 0; $i < $numrows ; $i++ ) { //Rows
-         if ($this->progressBar) { $this->UpdateProgressBar(7,intval(30 + ($i*40/$numrows)),' '); }    // *PROGRESS-BAR*
-         if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i] && $level==1) { 
-               $tablefooterrowheight += $table['hr'][$i]; 
-               $tablefooter[$i][0]['trbackground-images'] = $table['trbackground-images'][$i];
-               $tablefooter[$i][0]['trgradients'] = $table['trgradients'][$i];
-               $tablefooter[$i][0]['trbgcolor'] = $table['bgcolor'][$i];
-               for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns
-                       if (isset($cells[$i][$j]) && $cells[$i][$j]) {
-                               if ($this->cacheTables) {
-                                       $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                               }
-                               else 
-                                       $cell = &$cells[$i][$j];
-                               if ($split) { 
-                                       if ($table['colPg'][$j] != $splitpg) { continue; }
-                                       list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh); 
-                                       $js = $j - $startcol;
-                               }
-                               else { 
-                                       list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); 
-                                       $js = $j;
-                               }
-
-                               list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh);  
-                               $x += $x0;
-                               $y += $y0;
-                               //Get info of tfoot ==>> table footer
-                               $tablefooter[$i][$js]['x'] = $x;
-                               $tablefooter[$i][$js]['y'] = $y;
-                               $tablefooter[$i][$js]['h'] = $h;
-                               $tablefooter[$i][$js]['w'] = $w;
-                               if (isset($cell['textbuffer'])) { $tablefooter[$i][$js]['textbuffer'] = $cell['textbuffer']; }
-                               else { $tablefooter[$i][$js]['textbuffer'] = ''; }
-                               $tablefooter[$i][$js]['a'] = $cell['a'];
-                               $tablefooter[$i][$js]['R'] = $cell['R'];
-                               $tablefooter[$i][$js]['va'] = $cell['va'];
-                               $tablefooter[$i][$js]['mih'] = $cell['mih'];
-                               $tablefooter[$i][$js]['gradient'] = $cell['gradient'];  // *BACKGROUNDS*
-                               $tablefooter[$i][$js]['background-image'] = $cell['background-image'];  // *BACKGROUNDS*
-                               //CELL FILL BGCOLOR
-                               if (!$this->simpleTables){
-                                       if ($this->packTableData) {
-                                               $c = $this->_unpackCellBorder($cell['borderbin']);
-                                               $tablefooter[$i][$js]['border'] = $c['border'];
-                                               $tablefooter[$i][$js]['border_details'] = $c['border_details'];
-                                       }
-                                       else {
-                                               $tablefooter[$i][$js]['border'] = $cell['border'];
-                                               $tablefooter[$i][$js]['border_details'] = $cell['border_details'];
-                                       }
-                               }
-                               else if ($this->simpleTables){
-                                       $tablefooter[$i][$js]['border'] = $table['simple']['border'];
-                                       $tablefooter[$i][$js]['border_details'] = $table['simple']['border_details'];
-                               }
-                               $tablefooter[$i][$js]['bgcolor'] = $cell['bgcolor'];
-                               $tablefooter[$i][$js]['padding'] = $cell['padding'];
-                               $tablefooter[$i][$js]['rowspan'] = $cell['rowspan'];
-                               $tablefooter[$i][$js]['colspan'] = $cell['colspan'];
-                       }
-               }
-         }
-       }
-
-       if ($level==1) { $this->_out('___TABLE___BACKGROUNDS'.$this->uniqstr); }
-       $tableheaderadj = 0;
-       $tablefooteradj = 0;
-
-       $tablestartpageno = $this->page;
-
-       //Draw Table Contents and Borders
-       for( $i = 0; $i < $numrows ; $i++ ) { //Rows
-         if ($split && $startrow > 0) { 
-               $thnr = (isset($table['is_thead']) ? count($table['is_thead']) : 0);
-               if ($i >= $thnr && $i < $startrow) { continue; }
-               if ($i == $startrow){ $returny = $rety - $tableheaderrowheight; }
-         }
-
-         // Get Maximum row/cell height in row - including rowspan>1 + 1 overlapping
-         $maxrowheight = $this->_tableGetMaxRowHeight($table, $i, $fh);
-
-         $skippage = false;
-         $newpagestarted = false;
-         for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns
-               if ($split) { 
-                       if ($table['colPg'][$j] > $splitpg) { break; }
-                       $lastCol = $j; 
-               }
-               if (isset($cells[$i][$j]) && $cells[$i][$j]) {
-                       if ($this->cacheTables) {
-                               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
-                       }
-                       else 
-                               $cell = &$cells[$i][$j];
-                       if ($split) { 
-                               $lastCol = $j + (isset($cell['colspan']) ? ($cell['colspan']-1) : 0) ; 
-                               list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh); 
-                       }
-                       else { list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); }
-
-                       list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh);
-                       $x += $x0;
-                       $y += $y0;
-                       $y -= $returny;
-
-                       if ($table['borders_separate']) { 
-                         if (!empty($tablefooter) || $i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)  || (!isset($cell['rowspan']) && ($i+1) == $numrows) ) {
-                               $extra = $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
-                               //$extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
-                         }
-                         else {
-                               $extra = $table['border_spacing_V']/2; 
-                         }
-                       }
-                       else { $extra = $table['max_cell_border_width']['B']/2; }
-
-                       if ($j==$startcol  && ((($y + $maxrowheight + $extra ) > ($pagetrigger+0.001)) || (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && ($y + $maxrowheight + $tablefooterrowheight + $extra) > $pagetrigger) && ($this->tableLevel==1 && $i < ($numrows - $table['headernrows']))) && ($y0 >0 || $x0 > 0) && !$this->InFooter && $this->autoPageBreak ) {
-
-                               if (!$skippage) {
-                                       $finalSpread = true;
-                                       $firstSpread = true; 
-                                       if ($split) {
-                                               for($t=$startcol; $t<$numcols; $t++) {
-                                                       // Are there more columns to print on a next page?
-                                                       if ($table['colPg'][$t] > $splitpg) {
-                                                               $finalSpread = false;
-                                                               break;
-                                                       }
-                                               }
-                                               if ($startcol>0) { $firstSpread = false; }
-                                       }
-
-                               if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) { 
-                                               $this->y = $y;
-                                               $ya = $this->y;
-                                               $this->TableHeaderFooter($tablefooter,$tablestartpage,$tablestartcolumn,'F',$level, $firstSpread, $finalSpread);
-                                               if ($this->table_rotate) {
-                                                       $this->tbrot_h += $this->y - $ya ;
-                                               }
-                                               $tablefooteradj = $this->y - $ya ;
-                                       }
-                                       $y -= $y0;
-                                       $returny += $y;
-
-                                       $oldcolumn = $this->CurrCol;
-                                       if ($this->AcceptPageBreak()) {
-                                               $newpagestarted = true;
-                                               $this->y = $y + $y0;
-
-                                               // Move down to account for border-spacing or 
-                                               // extra half border width in case page breaks in middle
-                                               if($i>0 && !$this->table_rotate && $level==1 && !$this->ColActive) {
-                                                       if ($table['borders_separate']) { 
-                                                               $adv = $table['border_spacing_V']/2; 
-                                                               // If table footer
-                                                               if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) { 
-                                                                       $adv += ($table['padding']['B'] + $table['border_details']['B']['w']); 
-                                                               }
-                                                       }
-                                                       else { 
-                                                               $maxbwtop = 0;
-                                                               $maxbwbottom = 0;
-                                                               if (!$this->simpleTables){
-                                                                       if (!empty($tablefooter)) { $maxbwbottom = $table['max_cell_border_width']['B']; }
-                                                                       else { 
-                                                                          $brow = $i-1; 
-                                                                          for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
-                                                                               if (isset($cells[$brow][$ctj]) && $cells[$brow][$ctj]) {
-                                                                                       if ($this->cacheTables) {
-                                                                                               $cadj = $this->_uncacheCell($table['cells'][$brow][$ctj], '', $fh);
-                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']);
-                                                                                       }
-                                                                                       else if ($this->packTableData) {
-                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$brow][$ctj]['borderbin']);
-                                                                                       }
-                                                                                       else {
-                                                                                               $bb = $cells[$brow][$ctj]['border_details']['B']['w'];
-                                                                                       }
-                                                                                       $maxbwbottom = max($maxbwbottom , $bb); 
-                                                                               }
-                                                                          }
-                                                                       }
-                                                                       if (!empty($tableheader)) { $maxbwtop = $table['max_cell_border_width']['T']; }
-                                                                       else { 
-                                                                          $trow = $i-1; 
-                                                                          for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
-                                                                               if (isset($cells[$trow][$ctj]) && $cells[$trow][$ctj]) {
-                                                                                       if ($this->cacheTables) {
-                                                                                               $cadj = $this->_uncacheCell($table['cells'][$trow][$ctj], '', $fh);
-                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']);
-                                                                                       }
-                                                                                       else if ($this->packTableData) {
-                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$trow][$ctj]['borderbin']);
-                                                                                       }
-                                                                                       else {
-                                                                                               $bt = $cells[$trow][$ctj]['border_details']['T']['w'];
-                                                                                       }
-                                                                                       $maxbwtop = max($maxbwtop , $bt);
-                                                                               }
-                                                                          }
-                                                                       }
-                                                               }
-                                                               else if ($this->simpleTables){
-                                                                       $maxbwtop = $table['simple']['border_details']['T']['w'];
-                                                                       $maxbwbottom = $table['simple']['border_details']['B']['w']; 
-                                                               }
-                                                               $adv = $maxbwbottom /2;
-                                                       }
-                                                       $this->y += $adv;
-                                               }
-
-                                               // Rotated table split over pages - needs this->y for borders/backgrounds
-                                               if($i>0 && $this->table_rotate && $level==1) {
-                               //                      $this->y = $y0 + $this->tbrot_w;
-                                               }
-
-                                               if ($this->tableClipPath ) { $this->_out("Q"); }
-
-                                               $bx = $x0;
-                                               $by = $y0;
-
-                                               if ($table['borders_separate']) { 
-                                                       $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2); 
-                                                       if ($tablestartpageno != $this->page) { // IF already broken across a previous pagebreak
-                                                               $by += $table['max_cell_border_width']['T']/2; 
-                                                               if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); }
-                                                       }
-                                                       else { 
-                                                               $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2); 
-                                                       }
-                                               }
-
-                                               else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; }     
-       
-                                               $by -= $tableheaderadj;
-                                               $bh = $this->y - $by + $tablefooteradj;
-                                               if (!$table['borders_separate']) { $bh -= $adv ; }
-                                               if ($split) { 
-                                                       $bw = 0;
-                                                       for($t=$startcol; $t<$numcols; $t++) {
-                                                               if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; }
-                                                               if ($table['colPg'][$t] > $splitpg) { break; }
-                                                       }
-                                                       if ($table['borders_separate']) { 
-                                                               if ($firstSpread) { 
-                                                                       $bw += $table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']; 
-                                                               }
-                                                               else {
-                                                                       $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); 
-                                                                       $bw += $table['border_spacing_H']; 
-                                                               }
-                                                               if ($finalSpread) { 
-                                                                       $bw += $table['padding']['R'] + $table['border_details']['R']['w']/2 + $table['border_spacing_H']; 
-                                                               }
-                                                       }
-                                               }
-                                               else {
-                                                       $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                                               }
-
-                                               // mPDF 5.4.16
-                                       if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tablefooter) && $i > 0 && $table['border_details']['B']['w']) {
-                                                       $prevDrawColor = $this->DrawColor;
-                                                       $lw = $this->LineWidth;
-                                                       $this->SetLineWidth($this->splitTableBorderWidth);
-                                                       $this->SetDColor($table['border_details']['B']['c']);   
-                                                       $this->SetLineJoin(0);
-                                                       $this->SetLineCap(0);
-                                                       $blx = $bx;
-                                                       $blw = $bw;
-                                                       if (!$table['borders_separate']) { 
-                                                               $blx -= ($table['max_cell_border_width']['L']/2);
-                                                               $blw += ($table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2);
-                                                       }
-                                                       $this->Line($blx,$this->y+($this->splitTableBorderWidth/2),$blx+$blw,$this->y+($this->splitTableBorderWidth/2));
-                                                       $this->DrawColor = $prevDrawColor;
-                                                       $this->_out($this->DrawColor);
-                                                       $this->SetLineWidth($lw);
-                                                       $this->SetLineJoin(2);
-                                                       $this->SetLineCap(2);
-                                               } 
-
-                                               if (!$this->ColActive && ($i > 0 || $j > 0)) {
-                                                       if (isset($table['bgcolor'][-1])) { 
-                                                               $color = $this->ConvertColor($table['bgcolor'][-1]);
-                                                               if ($color) {
-                                                                  if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; }
-                                                                  $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color);
-                                                               }
-                                                       }
-
-/*-- BACKGROUNDS --*/
-                                                       if (isset($table['gradient'])) { 
-                                                               $g = $this->grad->parseBackgroundGradient($table['gradient']);
-                                                               if ($g) {
-                                                                  $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                                               }
-                                                       }
-
-                                                       if (isset($table['background-image'])) { 
-                                                          if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) {
-                                                               $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] );
-                                                               if ($g) {
-                                                                  $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                                               }
-                                                          }
-                                                          else { 
-                                                               $image_id = $table['background-image']['image_id'];
-                                                               $orig_w = $table['background-image']['orig_w'];
-                                                               $orig_h = $table['background-image']['orig_h'];
-                                                               $x_pos = $table['background-image']['x_pos'];
-                                                               $y_pos = $table['background-image']['y_pos'];
-                                                               $x_repeat = $table['background-image']['x_repeat'];
-                                                               $y_repeat = $table['background-image']['y_repeat'];
-                                                               $resize = $table['background-image']['resize'];
-                                                               $opacity = $table['background-image']['opacity'];
-                                                               $itype = $table['background-image']['itype'];
-                                                               $this->tableBackgrounds[$level*9+2][] = array('x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                                                          }
-                                                       }
-/*-- END BACKGROUNDS --*/
-                                               }
-
-                                               // $this->AcceptPageBreak() has moved tablebuffer to $this->pages content
-                                               if ($this->tableBackgrounds) {
-                                                  $s = $this->PrintTableBackgrounds();
-                                                  if ($this->bufferoutput) {
-                                                       $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->headerbuffer);
-                                                       $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->headerbuffer );
-                                                  }
-                                                  else {
-                                                       $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-                                                       $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->pages[$this->page]);
-                                                  }
-                                                  $this->tableBackgrounds = array();
-                                               }
-
-                                               if ($split) {
-                                                       if ($i == 0 && $j == 0) { $y0 = -1; }
-                                                       else if ($finalSpread) { 
-                                                               $splitpg = 0;
-                                                               $startcol = 0;
-                                                               $startrow = $i;
-                                                       }
-                                                       else {
-                                                               $splitpg++;
-                                                               $startcol = $t;
-                                                               $returny -= $y;
-                                                       }
-                                                       return array(false, $startrow, $startcol, $splitpg, $returny, $y0);
-                                               }
-
-                                               $this->AddPage($this->CurOrientation);
-
-                                               $this->_out('___TABLE___BACKGROUNDS'.$this->uniqstr);
-
-
-                                               if ($this->tableClipPath ) { $this->_out($this->tableClipPath); }
-
-                                               // Added to correct for OddEven Margins
-                                               $x= $x + $this->MarginCorrection;
-                                               $x0= $x0 + $this->MarginCorrection;
-
-                                               // mPDF 5.4.16
-                                       if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tableheader) && $i > 0 && $table['border_details']['T']['w'] ) {
-                                                       $prevDrawColor = $this->DrawColor;
-                                                       $lw = $this->LineWidth;
-                                                       $this->SetLineWidth($this->splitTableBorderWidth);
-                                                       $this->SetDColor($table['border_details']['T']['c']);   
-                                                       $this->SetLineJoin(0);
-                                                       $this->SetLineCap(0);
-                                                       $blx += $this->MarginCorrection;
-                                                       $this->Line($blx,$this->y-($this->splitTableBorderWidth/2),$blx+$blw,$this->y-($this->splitTableBorderWidth/2));
-                                                       $this->DrawColor = $prevDrawColor;
-                                                       $this->_out($this->DrawColor);
-                                                       $this->SetLineWidth($lw);
-                                                       $this->SetLineJoin(2);
-                                                       $this->SetLineCap(2);
-                                               } 
-
-                                               // Move down to account for half of top border-spacing or 
-                                               // extra half border width in case page was broken in middle
-                                               if($i>0 && !$this->table_rotate && $level==1 && $table['headernrows']==0) {
-                                                       if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2; }
-                                                       else { 
-                                                               $maxbwtop = 0;
-                                                               for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
-                                                                       if (isset($cells[$i][$ctj]) && $cells[$i][$ctj]) {
-                                                                               if (!$this->simpleTables){
-                                                                                       if ($this->cacheTables) {
-                                                                                               $celltj = $this->_uncacheCell($table['cells'][$i][$ctj], '', $fh);
-                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($celltj['borderbin']);
-                                                                                       }
-                                                                                       else if ($this->packTableData) {
-                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$i][$ctj]['borderbin']);
-                                                                                       }
-                                                                                       else {
-                                                                                               $bt = $cells[$i][$ctj]['border_details']['T']['w'];
-                                                                                       }
-                                                                                       $maxbwtop = max($maxbwtop, $bt); 
-                                                                               }
-                                                                               else if ($this->simpleTables){
-                                                                                       $maxbwtop = max($maxbwtop, $table['simple']['border_details']['T']['w']); 
-                                                                               }
-                                                                       }
-                                                               }
-                                                               $adv = $maxbwtop /2;
-                                                       }
-                                                       $this->y += $adv;
-                                               }
-
-
-                                               if ($this->table_rotate) {
-                                                       $this->tbrot_x0 = $this->lMargin  + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'];
-                                                       if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; }
-                                                       else { $this->tbrot_h = $table['margin']['T'] + $table['max_cell_border_width']['T'] ; }
-                                                       $this->tbrot_y0 = $this->y;
-                                                       $pagetrigger = $y0 - $tableheaderadj + ($this->blk[$this->blklvl]['inner_width']);
-                                               }
-                                               else {
-                                                       $pagetrigger = $this->PageBreakTrigger;
-                                               }
-
-                                               if ($this->kwt_saved && $level==1) {
-                                                       $this->kwt_moved = true;
-                                               }
-
-
-                                               // Disable Table header repeat if Keep Block together
-                                       if (!$this->keep_block_together && !empty($tableheader)) {
-                                                       $ya = $this->y;
-                                                       $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level);
-                                                       if ($this->table_rotate) {
-                                                               $this->tbrot_h = $this->y - $ya ;
-                                                       }
-                                                       $tableheaderadj = $this->y - $ya ;
-                                               }
-
-                                               else if ($i==0 && !$this->keep_block_together && !$this->table_rotate && $level==1 && !$this->ColActive) {
-                                                       // Advance down page
-                                                       if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T'];  }
-                                                       else { $adv = $table['max_cell_border_width']['T'] /2 ; }
-                                                       if ($adv) { 
-                                                          if ($this->table_rotate) {
-                                                               $this->y += ($adv);
-                                                          }
-                                                          else {
-                                                               $this->DivLn($adv,$this->blklvl,true); 
-                                                          }
-                                                       }
-                                               }
-
-                                               $outerfilled = 0;
-                                               $y = $y0 = $this->y;
-                                       }
-
-/*-- COLUMNS --*/
-                                       // COLS
-                                       // COLUMN CHANGE
-                                       if ($this->CurrCol != $oldcolumn) {
-                                               // Added to correct for Columns
-                                               $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-                                               $x0 += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
-                                               if ($this->CurrCol == 0) {      // just added a page - possibly with tableheader
-                                                       $y0 = $this->y;         // this->y0 is global used by Columns - $y0 is internal to tablewrite
-                                               }
-                                               else {
-                                                       $y0 = $this->y0;        // this->y0 is global used by Columns - $y0 is internal to tablewrite
-                                               }
-                                               $y = $y0;
-                                               $outerfilled = 0;
-                                       if ($this->CurrCol != 0 && ($this->keepColumns && $this->ColActive) && !empty($tableheader) && $i > 0 ) { 
-                                                       $this->x = $x; 
-                                                       $this->y = $y;
-                                                       $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level);
-                                                       $y0 = $y=$this->y;
-                                               }
-                                       }
-/*-- END COLUMNS --*/
-                               }
-                               $skippage = true;
-                       }
-
-                       $this->x = $x; 
-                       $this->y = $y;
-
-                       if ($this->kwt_saved && $level==1) {
-                               $this->printkwtbuffer();
-                               $x0 = $x = $this->x; 
-                               $y0 = $y = $this->y;
-                               $this->kwt_moved = false;
-                               $this->kwt_saved = false;
-                       }
-
-
-                       // Set the Page & Column where table actually starts
-                       if ($i==0 && $j==0 && $level==1) {
-                               if (($this->mirrorMargins) && (($this->page)%2==0)) {                           // EVEN
-                                       $tablestartpage = 'EVEN'; 
-                               }
-                               else if (($this->mirrorMargins) && (($this->page)%2==1)) {                              // ODD
-                                       $tablestartpage = 'ODD'; 
-                               }
-                               else { $tablestartpage = ''; }
-                               $tablestartpageno = $this->page;
-                               if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; }   // *COLUMNS*
-                       }
-
-
-                       //ALIGN
-                       $align = $cell['a'];
-
-
-/*-- COLUMNS --*/
-                       // If outside columns, this is done in PaintDivBB
-                       if ($this->ColActive) {
-                        //OUTER FILL BGCOLOR of DIVS
-                        if ($this->blklvl > 0 && ($j==0) && !$this->table_rotate && $level==1) {
-                         $firstblockfill = $this->GetFirstBlockFill();
-                         if ($firstblockfill && $this->blklvl >= $firstblockfill) {
-                          $divh = $maxrowheight;
-                          // Last row
-                          if ((!isset($cell['rowspan']) && $i == $numrows-1) || (isset($cell['rowspan']) && (($i == $numrows-1 && $cell['rowspan']<2) || ($cell['rowspan']>1 && ($i + $cell['rowspan']-1) == $numrows-1)))) {  // mPDF 5.6.54
-                               if ($table['borders_separate']) { 
-                                       $adv = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
-                               }
-                               else { 
-                                       $adv = $table['margin']['B'] + $table['max_cell_border_width']['B']/2; 
-                               }
-                               $divh += $adv;  //last row: fill bottom half of bottom border (y advanced at end)
-                          }
-
-                          if (($this->y + $divh) > $outerfilled ) {    // if not already painted by previous rowspan
-                               $bak_x = $this->x;
-                               $bak_y = $this->y;
-                               if ($outerfilled > $this->y) { 
-                                       $divh = ($this->y + $divh) - $outerfilled;
-                                       $this->y = $outerfilled; 
-                               }
-
-                               $this->DivLn($divh,-3,false);
-                               $outerfilled = $this->y + $divh;
-                               // Reset current block fill
-                               $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
-                               if ($bcor ) $this->SetFColor($bcor);
-                               $this->x = $bak_x;
-                               $this->y = $bak_y;
-                           }
-                         }
-                        }
-                       }
-
-
-                       //TABLE BACKGROUND FILL BGCOLOR - for cellSpacing
-                       if ($this->ColActive) {
-                        if ($table['borders_separate']) { 
-                          $fill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0;
-                          if ($fill) {
-                               $color = $this->ConvertColor($fill);
-                               if ($color) {
-                                       $xadj = ($table['border_spacing_H']/2);
-                                       $yadj = ($table['border_spacing_V']/2);
-                                       $wadj = $table['border_spacing_H'];
-                                       $hadj = $table['border_spacing_V'];
-                                       if ($i == 0) {          // Top
-                                               $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
-                                               $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
-                                       }
-                                       if ($j == 0) {          // Left
-                                               $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
-                                               $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
-                                       }
-                                       if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)  || (!isset($cell['rowspan']) && ($i+1) == $numrows)) {        // Bottom
-                                               $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ;
-                                       }
-                                       if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols)  || (!isset($cell['colspan']) && ($j+1) == $numcols)) {        // Right
-                                               $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ;
-                                       }
-                                       $this->SetFColor($color);
-                                       $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F');
-                               }
-                          }
-                        }
-                       }
-/*-- END COLUMNS --*/
-
-                       if ($table['empty_cells']!='hide' || !empty($cell['textbuffer']) || (isset($cell['nestedcontent']) && $cell['nestedcontent']) || !$table['borders_separate']  ) { $paintcell = true; }
-                       else { $paintcell = false; } 
-
-                       //Set Borders
-                       $bord = 0; 
-                       $bord_det = array();
-
-                       if (!$this->simpleTables){
-                               if ($this->packTableData) {
-                                  if ($cell['borderbin']) {
-                                       $c = $this->_unpackCellBorder($cell['borderbin']);
-                                       $bord = $c['border'];
-                                       $bord_det = $c['border_details'];
-                                  }
-                               }
-                               else if ($cell['border']) {
-                                       $bord = $cell['border'];
-                                       $bord_det = $cell['border_details'];
-                               }
-                       }
-                       else if ($this->simpleTables){
-                               if ($table['simple']['border']) {
-                                       $bord = $table['simple']['border'];
-                                       $bord_det = $table['simple']['border_details'];
-                               }
-                       }
-
-                       //TABLE ROW OR CELL FILL BGCOLOR
-                       $fill = 0;
-                       if (isset($cell['bgcolor']) && $cell['bgcolor'] && $cell['bgcolor']!='transparent') { 
-                               $fill = $cell['bgcolor'];
-                               $leveladj = 6;
-                       }
-                       else if (isset($table['bgcolor'][$i]) && $table['bgcolor'][$i] && $table['bgcolor'][$i]!='transparent') { // Row color
-                               $fill = $table['bgcolor'][$i];
-                               $leveladj = 3;
-                       }
-                       if ($fill && $paintcell) {
-                               $color = $this->ConvertColor($fill);
-                               if ($color) {
-                                       if ($table['borders_separate']) { 
-                                          if ($this->ColActive) {
-                                               $this->SetFColor($color);
-                                               $this->Rect($x+ ($table['border_spacing_H']/2), $y+ ($table['border_spacing_V']/2), $w- $table['border_spacing_H'], $h- $table['border_spacing_V'], 'F');
-                                          }
-                                          else {
-                                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>($x + ($table['border_spacing_H']/2)), 'y'=>($y + ($table['border_spacing_V']/2)), 'w'=>($w - $table['border_spacing_H']), 'h'=>($h - $table['border_spacing_V']), 'col'=>$color);
-                                          }
-                                       }
-                                       else { 
-                                          if ($this->ColActive) {
-                                               $this->SetFColor($color);
-                                               $this->Rect($x, $y, $w, $h, 'F');
-                                          }
-                                          else {
-                                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color);
-                                          }
-                                       }
-                               }
-                       }
-
-/*-- BACKGROUNDS --*/
-                       if (isset($cell['gradient']) && $cell['gradient'] && $paintcell){
-                               $g = $this->grad->parseBackgroundGradient($cell['gradient']);
-                               if ($g) {
-                                 if ($table['borders_separate']) { 
-                                       $px = $x+ ($table['border_spacing_H']/2);
-                                       $py = $y+ ($table['border_spacing_V']/2);
-                                       $pw = $w- $table['border_spacing_H'];
-                                       $ph = $h- $table['border_spacing_V'];
-                                 }
-                                 else {
-                                       $px = $x;
-                                       $py = $y;
-                                       $pw = $w;
-                                       $ph = $h;
-                                 }
-                                 if ($this->ColActive) {
-                                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
-                                 }
-                                 else {
-                                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                 }
-                               }
-                       }
-
-                       if (isset($cell['background-image']) && $paintcell) {
-                         if ($cell['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $cell['background-image']['gradient'] )) {
-                               $g = $this->grad->parseMozGradient( $cell['background-image']['gradient'] );
-                               if ($g) {
-                                 if ($table['borders_separate']) { 
-                                       $px = $x+ ($table['border_spacing_H']/2);
-                                       $py = $y+ ($table['border_spacing_V']/2);
-                                       $pw = $w- $table['border_spacing_H'];
-                                       $ph = $h- $table['border_spacing_V'];
-                                 }
-                                 else {
-                                       $px = $x;
-                                       $py = $y;
-                                       $pw = $w;
-                                       $ph = $h;
-                                 }
-                                 if ($this->ColActive) {
-                                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
-                                 }
-                                 else {
-                                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                 }
-                               }
-                         }
-                         else if ($cell['background-image']['image_id']) {     // Background pattern
-                               $n = count($this->patterns)+1;
-                               if ($table['borders_separate']) { 
-                                       $px = $x+ ($table['border_spacing_H']/2);
-                                       $py = $y+ ($table['border_spacing_V']/2);
-                                       $pw = $w- $table['border_spacing_H'];
-                                       $ph = $h- $table['border_spacing_V'];
-                               }
-                               else {
-                                       $px = $x;
-                                       $py = $y;
-                                       $pw = $w;
-                                       $ph = $h;
-                               }
-                               if ($this->ColActive) {
-                                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($cell['background-image']['orig_w'], $cell['background-image']['orig_h'], $pw, $ph, $cell['background-image']['resize'], $cell['background-image']['x_repeat'], $cell['background-image']['y_repeat']);
-                                       $this->patterns[$n] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'pgh'=>$this->h, 'image_id'=>$cell['background-image']['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$cell['background-image']['x_pos'] , 'y_pos'=>$cell['background-image']['y_pos'] , 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat);
-                                       if ($cell['background-image']['opacity']>0 && $cell['background-image']['opacity']<1) { $opac = $this->SetAlpha($cell['background-image']['opacity'],'Normal',true); }
-                                       else { $opac = ''; }
-                                       $this->_out(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px*_MPDFK, ($this->h-$py)*_MPDFK, $pw*_MPDFK, -$ph*_MPDFK));
-                               }
-                               else {
-                                       $image_id = $cell['background-image']['image_id'];
-                                       $orig_w = $cell['background-image']['orig_w'];
-                                       $orig_h = $cell['background-image']['orig_h'];
-                                       $x_pos = $cell['background-image']['x_pos'];
-                                       $y_pos = $cell['background-image']['y_pos'];
-                                       $x_repeat = $cell['background-image']['x_repeat'];
-                                       $y_repeat = $cell['background-image']['y_repeat'];
-                                       $resize = $cell['background-image']['resize'];
-                                       $opacity = $cell['background-image']['opacity'];
-                                       $itype = $cell['background-image']['itype'];
-                                       $this->tableBackgrounds[$level*9+8][] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                               }
-                         }
-                       }
-/*-- END BACKGROUNDS --*/
-
-                        if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; }
-                        else { $ccolsp = 1; }
-                        if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; }
-                        else { $crowsp = 1; }
-
-
-                       // but still need to do this for repeated headers...
-                       if (!$table['borders_separate'] && $this->tabletheadjustfinished && !$this->simpleTables){
-                         if (isset($table['topntail']) && $table['topntail']) {
-                                       $bord_det['T'] = $this->border_details($table['topntail']);
-                                       $bord_det['T']['w'] /= $this->shrin_k;
-                                       $this->setBorder($bord, _BORDER_TOP); 
-                         }
-                         if (isset($table['thead-underline']) && $table['thead-underline']) {
-                                       $bord_det['T'] = $this->border_details($table['thead-underline']);
-                                       $bord_det['T']['w'] /= $this->shrin_k;
-                                       $this->setBorder($bord, _BORDER_TOP); 
-                         }
-                       }
-
-
-                       //Get info of first row ==>> table header
-                       //Use > 1 row if THEAD
-                       if (isset($table['is_thead'][$i]) && $table['is_thead'][$i] && $level==1) {
-                               if ($j==0) $tableheaderrowheight += $table['hr'][$i]; 
-                               $tableheader[$i][0]['trbackground-images'] = (isset($table['trbackground-images'][$i]) ? $table['trbackground-images'][$i] : null);
-                               $tableheader[$i][0]['trgradients'] = (isset($table['trgradients'][$i]) ? $table['trgradients'][$i] : null);
-                               $tableheader[$i][0]['trbgcolor'] = (isset($table['bgcolor'][$i]) ? $table['bgcolor'][$i] : null);
-                               $tableheader[$i][$j]['x'] = $x;
-                               $tableheader[$i][$j]['y'] = $y;
-                               $tableheader[$i][$j]['h'] = $h;
-                               $tableheader[$i][$j]['w'] = $w;
-                               if (isset($cell['textbuffer'])) { $tableheader[$i][$j]['textbuffer'] = $cell['textbuffer']; }
-                               else { $tableheader[$i][$j]['textbuffer'] = ''; }
-                               $tableheader[$i][$j]['a'] = $cell['a'];
-                               $tableheader[$i][$j]['R'] = $cell['R'];
-
-                               $tableheader[$i][$j]['va'] = $cell['va'];
-                               $tableheader[$i][$j]['mih'] = $cell['mih'];
-                               $tableheader[$i][$j]['gradient'] = (isset($cell['gradient']) ? $cell['gradient'] : null);       // *BACKGROUNDS*
-                               $tableheader[$i][$j]['background-image'] = (isset($cell['background-image']) ? $cell['background-image'] : null);       // *BACKGROUNDS*
-                               $tableheader[$i][$j]['rowspan'] = (isset($cell['rowspan']) ? $cell['rowspan'] : null);
-                               $tableheader[$i][$j]['colspan'] = (isset($cell['colspan']) ? $cell['colspan'] : null);
-                               $tableheader[$i][$j]['bgcolor'] = $cell['bgcolor'];
-
-                               if (!$this->simpleTables){
-                                       $tableheader[$i][$j]['border'] = $bord;
-                                       $tableheader[$i][$j]['border_details'] = $bord_det;
-                               }
-                               else if ($this->simpleTables){
-                                       $tableheader[$i][$j]['border'] = $table['simple']['border'];
-                                       $tableheader[$i][$j]['border_details'] = $table['simple']['border_details'];
-                               }
-                               $tableheader[$i][$j]['padding'] = $cell['padding'];
-                       }
-
-                       // CELL BORDER
-                       if ($bord || $bord_det) { 
-                               if ($table['borders_separate'] && $paintcell) {
-                                       $this->_tableRect($x + ($table['border_spacing_H']/2)+($bord_det['L']['w'] /2), $y+ ($table['border_spacing_V']/2)+($bord_det['T']['w'] /2), $w-$table['border_spacing_H']-($bord_det['L']['w'] /2)-($bord_det['R']['w'] /2), $h- $table['border_spacing_V']-($bord_det['T']['w'] /2)-($bord_det['B']['w']/2), $bord, $bord_det, false, $table['borders_separate']);
-                               }
-                               else if (!$table['borders_separate']) { 
-                                       $this->_tableRect($x, $y, $w, $h, $bord, $bord_det, true, $table['borders_separate']);  // true causes buffer
-                               }
-
-                       }
-
-                       //VERTICAL ALIGN
-                       if ($cell['R'] && INTVAL($cell['R']) > 0 && INTVAL($cell['R']) < 90 && isset($cell['va']) && $cell['va']!='B') { $cell['va']='B';}
-                       if (!isset($cell['va']) || $cell['va']=='M') $this->y += ($h-$cell['mih'])/2;
-                       elseif (isset($cell['va']) && $cell['va']=='B') $this->y += $h-$cell['mih'];
-
-                       // NESTED CONTENT 
-
-                       // TEXT (and nested tables)
-                       $this->divalign=$align;
-
-                       $this->divwidth=$w;
-                       if (!empty($cell['textbuffer'])) {
-                               if ($level==1) {
-                                       if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) {
-                                               if (preg_match('/{colsum([0-9]*)[_]*}/', $cell['textbuffer'][0][0], $m)) {
-                                                       $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$j]);
-                                                       $cell['textbuffer'][0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$cell['textbuffer'][0][0]);
-                                               }
-                                       }
-                                       else if (!isset($table['is_thead'][$i])) { $this->colsums[$j] += floatval(preg_replace('/^[^0-9\.\,]*/','',$cell['textbuffer'][0][0])); }       // mPDF 5.6.66
-                               }
-                               $opy = $this->y;
-                               // mPDF ITERATION
-                               if ($this->iterationCounter) {
-                                  foreach($cell['textbuffer'] AS $k=>$t) {
-                                       if (preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) {
-                                               $vname = '__'.$m[1].'_';
-                                               if (!isset($this->$vname)) { $this->$vname = 1; }
-                                               else { $this->$vname++; }
-                                               $cell['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $cell['textbuffer'][$k][0]);
-                                       }
-                                  }
-                               }
-
-
-                               if ($cell['R']) {
-                                       $cellPtSize = $cell['textbuffer'][0][11] / $this->shrin_k;
-                                       if (!$cellPtSize) { $cellPtSize = $this->default_font_size; }
-                                       $cellFontHeight = ($cellPtSize/_MPDFK);
-                                       $opx = $this->x;
-                                       $angle = INTVAL($cell['R']);
-                                       // Only allow 45 to 89 degrees (when bottom-aligned) or exactly 90 or -90
-                                       if ($angle > 90) { $angle = 90; }
-                                       else if ($angle > 0 && $angle <45) { $angle = 45; }
-                                       else if ($angle < 0) { $angle = -90; }
-                                       $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight);
-                                       if (isset($cell['a']) && $cell['a']=='R') { 
-                                               $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($cell['padding']['R'] + ($table['border_spacing_H']/2)); 
-                                       }
-                                       else if (!isset($cell['a']) || $cell['a']=='C') { 
-                                               $this->x += ($w/2) + ($offset); 
-                                       }
-                                       else { 
-                                               $this->x += ($offset) + ($cellFontHeight/3)+($cell['padding']['L'] +($table['border_spacing_H']/2)); 
-                                       }
-                                       $str = '';
-                                       foreach($cell['textbuffer'] AS $t) { $str .= $t[0].' '; }
-                                       $str = trim($str);
-                                       if (!isset($cell['va']) || $cell['va']=='M') { 
-                                               $this->y -= ($h-$cell['mih'])/2; //Undo what was added earlier VERTICAL ALIGN
-                                               if ($angle > 0) { $this->y += (($h-$cell['mih'])/2) + $cell['padding']['T'] + ($cell['mih']-($cell['padding']['T'] + $cell['padding']['B'])); }
-                                               else if ($angle < 0) { $this->y += (($h-$cell['mih'])/2)+ ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
-                                       }
-                                       elseif (isset($cell['va']) && $cell['va']=='B') { 
-                                               $this->y -= $h-$cell['mih']; //Undo what was added earlier VERTICAL ALIGN
-                                               if ($angle > 0) { $this->y += $h-($cell['padding']['B'] + ($table['border_spacing_V']/2)); }
-                                               else if ($angle < 0) { $this->y += $h-$cell['mih'] + ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
-                                       }
-                                       elseif (isset($cell['va']) && $cell['va']=='T') { 
-                                               if ($angle > 0) { $this->y += $cell['mih']-($cell['padding']['B'] + ($table['border_spacing_V']/2)); }
-                                               else if ($angle < 0) { $this->y += ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
-                                       }
-                                       $this->Rotate($angle,$this->x,$this->y);
-                                       $s_fs = $this->FontSizePt;
-                                       $s_f = $this->FontFamily;
-                                       $s_st = $this->FontStyle;
-                                       if (!empty($cell['textbuffer'][0][3])) { //Font Color
-                                               $cor = $cell['textbuffer'][0][3];
-                                               $this->SetTColor($cor); 
-                                       }
-                                       $s_str = $this->strike;
-                                       $this->strike = $cell['textbuffer'][0][8]; //Strikethrough
-                                       $this->SetFont($cell['textbuffer'][0][4],$cell['textbuffer'][0][2],$cellPtSize,true,true);
-                                       $this->Text($this->x,$this->y,$str);
-                                       $this->Rotate(0);
-                                       $this->SetFont($s_f,$s_st,$s_fs,true,true);
-                                       $this->SetTColor(0);
-                                       $this->strike = $s_str;
-                                       $this->x = $opx;
-                               }
-                               else {
-
-                                       if (!$this->simpleTables){
-                                          if ($bord_det) { 
-                                               $btlw = $bord_det['L']['w']; 
-                                               $btrw = $bord_det['R']['w']; 
-                                               $bttw = $bord_det['T']['w']; 
-                                          }
-                                          else { 
-                                               $btlw = 0; 
-                                               $btrw = 0; 
-                                               $bttw = 0; 
-                                          }
-                                          if ($table['borders_separate']) {
-                                               $xadj = $btlw + $cell['padding']['L'] +($table['border_spacing_H']/2);
-                                               $wadj = $btlw + $btrw + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H'];
-                                               $yadj = $bttw + $cell['padding']['T'] + ($table['border_spacing_H']/2);
-                                          }
-                                          else {
-                                               $xadj = $btlw/2 + $cell['padding']['L'];
-                                               $wadj = ($btlw + $btrw)/2 + $cell['padding']['L'] + $cell['padding']['R'];
-                                               $yadj = $bttw/2 + $cell['padding']['T'];
-                                          }
-                                       }
-                                       else if ($this->simpleTables){
-                                          if ($table['borders_separate']) {    // NB twice border width
-                                               $xadj = $table['simple']['border_details']['L']['w'] + $cell['padding']['L'] +($table['border_spacing_H']/2);
-                                               $wadj = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H'];
-                                               $yadj = $table['simple']['border_details']['T']['w'] + $cell['padding']['T'] + ($table['border_spacing_H']/2);
-                                          }
-                                          else {
-                                               $xadj = $table['simple']['border_details']['L']['w']/2 + $cell['padding']['L'];
-                                               $wadj = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'])/2 + $cell['padding']['L'] + $cell['padding']['R'];
-                                               $yadj = $table['simple']['border_details']['T']['w']/2 + $cell['padding']['T'];
-                                          }
-                                       }
-                                       // mPDF 5.6.13
-                                       $this->decimal_offset = 0;
-                                       if(substr($cell['a'],0,1) == 'D') {
-                                               if ($cell['colspan'] > 1) { $this->divalign = $c['a'] = substr($cell['a'],2,1); }
-                                               else {
-                                                       $smax = $table['decimal_align'][$j]['maxs0'];
-                                                       $d_content = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'];
-                                                       $this->decimal_offset = $smax;
-                                                       $extra = ($w - $d_content - $wadj);
-                                                       if ($extra > 0) {
-                                                               if(substr($cell['a'],2,1) == 'R') { $this->decimal_offset += $extra; }
-                                                               else if(substr($cell['a'],2,1) == 'C') { $this->decimal_offset += ($extra)/2; }
-                                                       }
-                                               }
-                                       }
-                                       $this->divwidth=$w-$wadj;
-                                       if ($this->divwidth == 0) { $this->divwidth = 0.0001; }
-                                       $this->x += $xadj;
-                                       $this->y += $yadj;
-                                       $this->printbuffer($cell['textbuffer'],'',true);
-                               }
-                               $this->y = $opy;
-                       }
-
-/*-- BACKGROUNDS --*/
-                       if (!$this->ColActive) {
-                         if (isset($table['trgradients'][$i]) && ($j==0 || $table['borders_separate'])) {
-                               $g = $this->grad->parseBackgroundGradient($table['trgradients'][$i]);
-                               if ($g) {
-                                       $gx = $x0;
-                                       $gy = $y;
-                                       $gh = $h;
-                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                                       if ($table['borders_separate']) { 
-                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
-                                               $s = '';
-                                               $clx = $x+ ($table['border_spacing_H']/2);
-                                               $cly = $y+ ($table['border_spacing_V']/2);
-                                               $clw = $w- $table['border_spacing_H'];
-                                               $clh = $h- $table['border_spacing_V'];
-                                               // Set clipping path
-                                               $s = ' q 0 w '; // Line width=0
-                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
-                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
-                                       }
-                                       else {
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                       }
-                               }
-                           }
-                           if (isset($table['trbackground-images'][$i]) && ($j==0 || $table['borders_separate'])) {
-                           if ($table['trbackground-images'][$i]['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['trbackground-images'][$i]['gradient'] )) {
-                               $g = $this->grad->parseMozGradient( $table['trbackground-images'][$i]['gradient'] );
-                               if ($g) {
-                                       $gx = $x0;
-                                       $gy = $y;
-                                       $gh = $h;
-                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                                       if ($table['borders_separate']) { 
-                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
-                                               $s = '';
-                                               $clx = $x+ ($table['border_spacing_H']/2);
-                                               $cly = $y+ ($table['border_spacing_V']/2);
-                                               $clw = $w- $table['border_spacing_H'];
-                                               $clh = $h- $table['border_spacing_V'];
-                                               // Set clipping path
-                                               $s = ' q 0 w '; // Line width=0
-                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
-                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
-                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
-                                       }
-                                       else {
-                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                                       }
-                               }
-                           }
-                           else {
-                               $image_id = $table['trbackground-images'][$i]['image_id'];
-                               $orig_w = $table['trbackground-images'][$i]['orig_w'];
-                               $orig_h = $table['trbackground-images'][$i]['orig_h'];
-                               $x_pos = $table['trbackground-images'][$i]['x_pos'];
-                               $y_pos = $table['trbackground-images'][$i]['y_pos'];
-                               $x_repeat = $table['trbackground-images'][$i]['x_repeat'];
-                               $y_repeat = $table['trbackground-images'][$i]['y_repeat'];
-                               $resize = $table['trbackground-images'][$i]['resize'];
-                               $opacity = $table['trbackground-images'][$i]['opacity'];
-                               $itype = $table['trbackground-images'][$i]['itype'];
-                               $clippath = '';
-                               $gx = $x0;
-                               $gy = $y;
-                               $gh = $h;
-                               $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-                               if ($table['borders_separate']) { 
-                                       $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
-                                       $s = '';
-                                       $clx = $x + ($table['border_spacing_H']/2);
-                                       $cly = $y + ($table['border_spacing_V']/2);
-                                       $clw = $w - $table['border_spacing_H'];
-                                       $clh = $h - $table['border_spacing_V'];
-                                       // Set clipping path
-                                       $s = ' q 0 w '; // Line width=0
-                                       $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL 
-                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
-                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
-                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
-                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
-                                       $s .= ' W n ';  // Ends path no-op & Sets the clipping path
-                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                               }
-                               else {
-                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                               }
-                           }
-                          }
-                       }
-
-/*-- END BACKGROUNDS --*/
-
-                       // TABLE BORDER - if separate
-                       if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { 
-                          $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2);
-                          $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2);
-                          $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2);
-                          $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2);
-                          $tbx = $x;
-                          $tby = $y;
-                          $tbw = $w;
-                          $tbh = $h;
-                          $tab_bord = 0;
-                          
-                          $corner = '';
-                          if ($i == 0) {               // Top
-                               $tby -= $halfspaceT + ($table['border_details']['T']['w']/2);
-                               $tbh += $halfspaceT + ($table['border_details']['T']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_TOP); 
-                               $corner .= 'T';
-                          }
-                          if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)) {  // Bottom
-                               $tbh += $halfspaceB + ($table['border_details']['B']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_BOTTOM); 
-                               $corner .= 'B';
-                          }
-                          if ($j == 0) {               // Left
-                               $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2);
-                               $tbw += $halfspaceL + ($table['border_details']['L']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_LEFT); 
-                               $corner .= 'L';
-                          }
-                          if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols)) {  // Right
-                               $tbw += $halfspaceR + ($table['border_details']['R']['w']/2);
-                               $this->setBorder($tab_bord , _BORDER_RIGHT); 
-                               $corner .= 'R';
-                          }
-                          $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord , $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H'] );
-                       }
-
-                       unset($cell );
-                       //Reset values
-                       $this->Reset();
-
-               }//end of (if isset(cells)...)
-         }// end of columns
-
-         $newpagestarted = false;
-         $this->tabletheadjustfinished = false;
-
-         if ($this->ColActive && $i < $numrows-1 && $level==1) { $this->breakpoints[$this->CurrCol][] = $y + $h; }     // *COLUMNS*
-
-/*-- COLUMNS --*/
-         if ($this->ColActive) {
-               if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }
-         }
-/*-- END COLUMNS --*/
-
-         if ($i == $numrows-1) { $this->y = $y + $h; } //last row jump (update this->y position)
-         if ($this->table_rotate && $level==1) {
-               $this->tbrot_h += $h;
-         }
-
-
-
-       }// end of rows
-
-       if ($this->progressBar) { $this->UpdateProgressBar(7,70,' '); } // *PROGRESS-BAR*
-
-       if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }
-
-       if ($this->tableClipPath ) { $this->_out("Q"); }
-       $this->tableClipPath = '';
-
-       // Advance down page by half width of bottom border
-       if ($table['borders_separate']) { $this->y += $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; }
-       else { $this->y += $table['max_cell_border_width']['B']/2; }
-
-       if ($table['borders_separate'] && $level==1) { $this->tbrot_h += $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; }
-       else if ($level==1) { $this->tbrot_h += $table['margin']['B'] + $table['max_cell_border_width']['B']/2; }
-
-       $bx = $x0;
-       $by = $y0;
-       if ($table['borders_separate']) { 
-               $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2); 
-               if ($tablestartpageno != $this->page) { // IF broken across page
-                       $by += $table['max_cell_border_width']['T']/2;
-                       if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); }
-               }
-               else if ($split && $startrow > 0 && empty($tableheader)) { 
-                       $by -= ($table['border_spacing_V']/2); 
-               }
-               else {
-                       $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2); 
-               }
-       }
-       else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; }     
-       $by -= $tableheaderadj;
-       $bh = $this->y - $by;
-       if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; }
-
-       if ($split) {
-               $bw = 0;
-               $finalSpread = true;
-               for($t=$startcol; $t<$numcols; $t++) {
-                       if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; }
-                       if ($table['colPg'][$t] > $splitpg) { $finalSpread = false; break; }
-               }
-               if ($startcol==0) { $firstSpread = true; }
-               else { $firstSpread = false; }
-               if ($table['borders_separate']) {
-                       $bw += $table['border_spacing_H']; 
-                       if ($firstSpread) { 
-                               $bw += $table['padding']['L'] + $table['border_details']['L']['w']; 
-                       }
-                       else {
-                               $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); 
-                       }
-                       if ($finalSpread) { 
-                               $bw += $table['padding']['R'] + $table['border_details']['R']['w']; 
-                       }
-               }
-       }
-       else {
-               $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
-       }
-
-       if (!$this->ColActive) {
-               if (isset($table['bgcolor'][-1])) { 
-                       $color = $this->ConvertColor($table['bgcolor'][-1]);
-                       if ($color) {
-                          $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color);
-                       }
-               }
-
-/*-- BACKGROUNDS --*/
-               if (isset($table['gradient'])) { 
-                       $g = $this->grad->parseBackgroundGradient($table['gradient']);
-                       if ($g) {
-                          $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                       }
-               }
-
-               if (isset($table['background-image'])) { 
-                  if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) {
-                       $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] );
-                       if ($g) {
-                          $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
-                       }
-                  }
-                  else { 
-                       $image_id = $table['background-image']['image_id'];
-                       $orig_w = $table['background-image']['orig_w'];
-                       $orig_h = $table['background-image']['orig_h'];
-                       $x_pos = $table['background-image']['x_pos'];
-                       $y_pos = $table['background-image']['y_pos'];
-                       $x_repeat = $table['background-image']['x_repeat'];
-                       $y_repeat = $table['background-image']['y_repeat'];
-                       $resize = $table['background-image']['resize'];
-                       $opacity = $table['background-image']['opacity'];
-                       $itype = $table['background-image']['itype'];
-                       $this->tableBackgrounds[$level*9+2][] = array('x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
-                  }
-               }
-/*-- END BACKGROUNDS --*/
-       }
-
-       if ($this->tableBackgrounds && $level == 1) {
-          $s = $this->PrintTableBackgrounds();
-          if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) {
-               $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->tablebuffer);
-               if ($level == 1) { $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->tablebuffer); }
-          }
-          else if ($this->bufferoutput) {
-               $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->headerbuffer);
-               if ($level == 1) { $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->headerbuffer ); }
-          }
-          else {
-               $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
-               if ($level == 1) { $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->pages[$this->page]); }
-          }
-          $this->tableBackgrounds = array();
-       }
-
-
-       // TABLE BOTTOM MARGIN
-       if ($table['margin']['B']) {
-         if (!$this->table_rotate && $level==1) {
-               $this->DivLn($table['margin']['B'],$this->blklvl,true);         // collapsible
-         }
-         else {
-               $this->y += ($table['margin']['B']);
-         }
-       }
-
-       if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
-
-       if ($this->cacheTables) { fclose($fh); }
-
-       if ($split) { 
-               // Are there more columns to print on a next page?
-               if ($lastCol < $numcols-1) {
-                       $splitpg++;
-                       $startcol = $lastCol + 1;
-                       return array(false, $startrow, $startcol, $splitpg, $returny, $y0);
-               }
-               else {
-                       if ($this->cacheTables) { 
-                               unlink($table['cache']); 
-                               @unlink($table['cache'].'.bak'); 
-                       }
-                       return array(true,0,0,0);
-               }
-       }
-       if ($this->cacheTables) { 
-               unlink($table['cache']); 
-               @unlink($table['cache'].'.bak'); 
-       }
-
-}//END OF FUNCTION _tableWrite()
-
-
-/////////////////////////END OF TABLE CODE//////////////////////////////////
-/*-- END TABLES --*/
-
-function _putextgstates() {
-       for ($i = 1; $i <= count($this->extgstates); $i++) {
-            $this->_newobj();
-            $this->extgstates[$i]['n'] = $this->n;
-            $this->_out('<</Type /ExtGState');
-            foreach ($this->extgstates[$i]['parms'] as $k=>$v)
-                $this->_out('/'.$k.' '.$v);
-            $this->_out('>>');
-            $this->_out('endobj');
-       }
-}
-
-function _putocg() {
-       if ($this->hasOC) {     // mPDF 5.6.01
-               $this->_newobj();
-               $this->n_ocg_print=$this->n;
-               $this->_out('<</Type /OCG /Name '.$this->_textstring('Print only'));
-               $this->_out('/Usage <</Print <</PrintState /ON>> /View <</ViewState /OFF>>>>>>');
-               $this->_out('endobj');
-               $this->_newobj();
-               $this->n_ocg_view=$this->n;
-               $this->_out('<</Type /OCG /Name '.$this->_textstring('Screen only'));
-               $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /ON>>>>>>');
-               $this->_out('endobj');
-               $this->_newobj();
-               $this->n_ocg_hidden=$this->n;
-               $this->_out('<</Type /OCG /Name '.$this->_textstring('Hidden'));
-               $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /OFF>>>>>>');
-               $this->_out('endobj');
-       }
-       // mPDF 5.6.01  Add Layers
-       if (count($this->layers)) {
-               ksort($this->layers);
-               foreach($this->layers as $id=>$layer) {
-                       $this->_newobj();
-                       $this->layers[$id]['n'] = $this->n;
-                       // mPDF 5.6.28
-                       if (isset($this->layerDetails[$id]['name']) && $this->layerDetails[$id]['name']) {
-                               $name = $this->layerDetails[$id]['name'];
-                       }
-                       else { $name = $layer['name']; }
-                       $this->_out('<</Type /OCG /Name '.$this->_UTF16BEtextstring($name).'>>');
-                       $this->_out('endobj');
-               }
-       }
-}
-
-
-/*-- IMPORTS --*/
-
-       // from mPDFI
-       function _putimportedobjects() {
-               if (is_array($this->parsers) && count($this->parsers) > 0) {
-                       foreach($this->parsers AS $filename => $p) {
-                               $this->current_parser =& $this->parsers[$filename];
-                               if (is_array($this->_obj_stack[$filename])) {
-                                       while($n = key($this->_obj_stack[$filename])) {
-                                               $nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]);
-                                               $this->_newobj($this->_obj_stack[$filename][$n][0]);
-                                               if ($nObj[0] == PDF_TYPE_STREAM) {
-                                                       $this->pdf_write_value($nObj);
-                                               } 
-                                               else {
-                                                       $this->pdf_write_value($nObj[1]);
-                                               }
-                                               $this->_out('endobj');
-                                               $this->_obj_stack[$filename][$n] = null; // free memory
-                                               unset($this->_obj_stack[$filename][$n]);
-                                               reset($this->_obj_stack[$filename]);
-                                       }
-                               }
-                       }
-               }
-       }
-
-
-       function _putformxobjects() {
-               $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-               reset($this->tpls);
-               foreach($this->tpls AS $tplidx => $tpl) {
-                       $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
-                       $this->_newobj();
-                       $this->tpls[$tplidx]['n'] = $this->n;
-                       $this->_out('<<'.$filter.'/Type /XObject');
-                       $this->_out('/Subtype /Form');
-                       $this->_out('/FormType 1');
-                       // Left/Bottom/Right/Top
-                       $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]',
-                               $tpl['box']['x']*_MPDFK,
-                               $tpl['box']['y']*_MPDFK,
-                               ($tpl['box']['x'] + $tpl['box']['w'])*_MPDFK,
-                               ($tpl['box']['y'] + $tpl['box']['h'])*_MPDFK  )
-                       );
-
-
-                       if (isset($tpl['box']))
-                               $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]',-$tpl['box']['x']*_MPDFK, -$tpl['box']['y']*_MPDFK));
-                       $this->_out('/Resources ');
-
-                       if (isset($tpl['resources'])) {
-                               $this->current_parser =& $tpl['parser'];
-                               $this->pdf_write_value($tpl['resources']);
-                       } else {
-                               $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
-                                       if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
-                                               $this->_out('/Font <<');
-                                               foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
-                                                       $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
-                                               $this->_out('>>');
-                               }
-                                       if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || 
-                                          isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
-                                       {
-                                               $this->_out('/XObject <<');
-                                               if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
-                                                       foreach($this->_res['tpl'][$tplidx]['images'] as $image)
-                                                               $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
-                                               }
-                                               if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
-                                                       foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $itpl)
-                                                               $this->_out($this->tplprefix.$i.' '.$itpl['n'].' 0 R');
-                                               }
-                                               $this->_out('>>');
-                                       }
-                                       $this->_out('>>');
-                       }
-
-                       $this->_out('/Length '.strlen($p).' >>');
-                       $this->_putstream($p);
-                       $this->_out('endobj');
-               }
-       }
-
-/*-- END IMPORTS --*/
-
-
-function _putpatterns() {
-       for ($i = 1; $i <= count($this->patterns); $i++) {
-               $x = $this->patterns[$i]['x'];
-               $y = $this->patterns[$i]['y']; 
-               $w = $this->patterns[$i]['w'];
-               $h = $this->patterns[$i]['h']; 
-               $pgh = $this->patterns[$i]['pgh']; 
-               $orig_w = $this->patterns[$i]['orig_w'];
-               $orig_h = $this->patterns[$i]['orig_h']; 
-               $image_id = $this->patterns[$i]['image_id'];
-               $itype = $this->patterns[$i]['itype'];
-               $bpa = $this->patterns[$i]['bpa'];      // mPDF 5.6.10  background positioning area
-
-               if ($this->patterns[$i]['x_repeat']) { $x_repeat = true; } 
-               else { $x_repeat = false; }
-               if ($this->patterns[$i]['y_repeat']) { $y_repeat = true; }
-               else { $y_repeat = false; }
-               $x_pos = $this->patterns[$i]['x_pos'];
-               if (stristr($x_pos ,'%') ) { 
-                       $x_pos += 0; 
-                       $x_pos /= 100; 
-                       if (isset($bpa['w']) && $bpa['w']) $x_pos = ($bpa['w'] * $x_pos) - ($orig_w/_MPDFK * $x_pos);   // mPDF 5.6.10
-                       else $x_pos = ($w * $x_pos) - ($orig_w/_MPDFK * $x_pos);
-               }
-               $y_pos = $this->patterns[$i]['y_pos'];
-               if (stristr($y_pos ,'%') ) { 
-                       $y_pos += 0; 
-                       $y_pos /= 100; 
-                       if (isset($bpa['h']) && $bpa['h']) $y_pos = ($bpa['h'] * $y_pos) - ($orig_h/_MPDFK * $y_pos);   // mPDF 5.6.10
-                       else $y_pos = ($h * $y_pos) - ($orig_h/_MPDFK * $y_pos);
-               }
-               if (isset($bpa['x']) && $bpa['x']) $adj_x = ($x_pos + $bpa['x']) *_MPDFK;       // mPDF 5.6.10
-               else $adj_x = ($x_pos + $x) *_MPDFK;
-               if (isset($bpa['y']) && $bpa['y']) $adj_y = (($pgh - $y_pos - $bpa['y'])*_MPDFK) - $orig_h ;    // mPDF 5.6.10
-               else $adj_y = (($pgh - $y_pos - $y)*_MPDFK) - $orig_h ;
-               $img_obj = false;
-               if ($itype == 'svg' || $itype == 'wmf') {
-                       foreach($this->formobjects AS $fo) {
-                               if ($fo['i'] == $image_id) { 
-                                       $img_obj = $fo['n']; 
-                                       $fo_w = $fo['w'];
-                                       $fo_h = -$fo['h'];
-                                       $wmf_x = $fo['x'];
-                                       $wmf_y = $fo['y']; 
-                                       break; 
-                               }
-                       }
-               }
-               else {
-                       foreach($this->images AS $img) {
-                               if ($img['i'] == $image_id) { $img_obj = $img['n']; break; }
-                       }
-               }
-               if (!$img_obj ) { echo "Problem: Image object not found for background pattern ".$img['i']; exit; }
-
-            $this->_newobj();
-            $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
-               if ($itype == 'svg' || $itype == 'wmf') {
-                       $this->_out('/XObject <</FO'.$image_id.' '.$img_obj.' 0 R >>');
-                       // ******* ADD ANY ExtGStates, Shading AND Fonts needed for the FormObject
-                       // Set in classes/svg array['fo'] = true
-                       // Required that _putshaders comes before _putpatterns in _putresources
-                       // This adds any resources associated with any FormObject to every Formobject - overkill but works!
-                       if (count($this->extgstates)) {
-                               $this->_out('/ExtGState <<');
-                               foreach($this->extgstates as $k=>$extgstate)
-                                  if (isset($extgstate['fo']) && $extgstate['fo']) {
-                                       if (isset($extgstate['trans']))  $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R');
-                                       else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
-                                  }
-                               $this->_out('>>');
-                       }
-/*-- BACKGROUNDS --*/
-                       if (isset($this->gradients) AND (count($this->gradients) > 0)) {
-                               $this->_out('/Shading <<');
-                               foreach ($this->gradients as $id => $grad) {
-                                  if (isset($grad['fo']) && $grad['fo']) {
-                                       $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R');
-                                  }
-                               }
-                               $this->_out('>>');
-                       }
-/*-- END BACKGROUNDS --*/
-                       $this->_out('/Font <<');
-                       foreach($this->fonts as $font) {
-                               if (!$font['used'] && $font['type']=='TTF') { continue; }
-                               if (isset($font['fo']) && $font['fo']) {
-                                  if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) {
-                                       foreach($font['n'] AS $k => $fid) {
-                                               $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R');
-                                       }
-                                  }
-                                  else { 
-                                       $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
-                                  }
-                               }
-                       }
-                       $this->_out('>>');
-               }
-               else {
-               $this->_out('/XObject <</I'.$image_id.' '.$img_obj.' 0 R >>');
-               }
-            $this->_out('>>');
-            $this->_out('endobj');
-
-               $this->_newobj();
-               $this->patterns[$i]['n'] = $this->n;
-               $this->_out('<< /Type /Pattern /PatternType 1 /PaintType 1 /TilingType 2');
-               $this->_out('/Resources '. ($this->n-1) .' 0 R');
-
-               $this->_out(sprintf('/BBox [0 0 %.3F %.3F]',$orig_w,$orig_h));
-               if ($x_repeat) { $this->_out(sprintf('/XStep %.3F',$orig_w)); }
-               else { $this->_out(sprintf('/XStep %d',99999)); }
-               if ($y_repeat) { $this->_out(sprintf('/YStep %.3F',$orig_h)); }
-               else { $this->_out(sprintf('/YStep %d',99999)); }
-
-               if ($itype == 'svg' || $itype == 'wmf') {
-                       $this->_out(sprintf('/Matrix [1 0 0 -1 %.3F %.3F]', $adj_x, ($adj_y+$orig_h)));
-                       $s = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q",($orig_w/$fo_w), (-$orig_h/$fo_h), -($orig_w/$fo_w)*$wmf_x, ($orig_w/$fo_w)*$wmf_y, $image_id);
-               }
-               else {
-                       $this->_out(sprintf('/Matrix [1 0 0 1 %.3F %.3F]',$adj_x,$adj_y));
-                       $s = sprintf("q %.3F 0 0 %.3F 0 0 cm /I%d Do Q",$orig_w,$orig_h,$image_id);
-               }
-
-            if ($this->compress) {
-                       $this->_out('/Filter /FlateDecode');
-                       $s = gzcompress($s);
-               }
-               $this->_out('/Length '.strlen($s).'>>');
-               $this->_putstream($s);
-               $this->_out('endobj');
-       }
-}
-
-/*-- BACKGROUNDS --*/
-function _putshaders() {
-                       $maxid = count($this->gradients); //index for transparency gradients
-                       foreach ($this->gradients as $id => $grad) {  
-                               if (($grad['type'] == 2 || $grad['type'] == 3) && empty($grad['is_mask'])) {
-                                       $this->_newobj();
-                                       $this->_out('<<');
-                                       $this->_out('/FunctionType 3');
-                                       $this->_out('/Domain [0 1]');
-                                       $fn = array();
-                                       $bd = array();
-                                       $en = array();
-                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
-                                               $fn[] = ($this->n+1+$i).' 0 R';
-                                               $en[] = '0 1';
-                                               if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); }
-                                       }
-                                       $this->_out('/Functions ['.implode(' ',$fn).']');
-                                       $this->_out('/Bounds ['.implode(' ',$bd).']');
-                                       $this->_out('/Encode ['.implode(' ',$en).']');
-                                       $this->_out('>>');
-                                       $this->_out('endobj');
-                                       $f1 = $this->n;
-                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
-                                               $this->_newobj();
-                                               $this->_out('<<');
-                                               $this->_out('/FunctionType 2');
-                                               $this->_out('/Domain [0 1]');
-                                               $this->_out('/C0 ['.$grad['stops'][$i]['col'].']');
-                                               $this->_out('/C1 ['.$grad['stops'][$i+1]['col'].']');
-                                               $this->_out('/N 1');
-                                               $this->_out('>>');
-                                               $this->_out('endobj');
-                                       }
-                               }
-                               if ($grad['type'] == 2 || $grad['type'] == 3) {
-                                 if (isset($grad['trans']) && $grad['trans']) {
-                                       $this->_newobj();
-                                       $this->_out('<<');
-                                       $this->_out('/FunctionType 3');
-                                       $this->_out('/Domain [0 1]');
-                                       $fn = array();
-                                       $bd = array();
-                                       $en = array();
-                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
-                                               $fn[] = ($this->n+1+$i).' 0 R';
-                                               $en[] = '0 1';
-                                               if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); }
-                                       }
-                                       $this->_out('/Functions ['.implode(' ',$fn).']');
-                                       $this->_out('/Bounds ['.implode(' ',$bd).']');
-                                       $this->_out('/Encode ['.implode(' ',$en).']');
-                                       $this->_out('>>');
-                                       $this->_out('endobj');
-                                       $f2 = $this->n;
-                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
-                                               $this->_newobj();
-                                               $this->_out('<<');
-                                               $this->_out('/FunctionType 2');
-                                               $this->_out('/Domain [0 1]');
-                                               $this->_out(sprintf('/C0 [%.3F]', $grad['stops'][$i]['opacity']));
-                                               $this->_out(sprintf('/C1 [%.3F]', $grad['stops'][$i+1]['opacity']));
-                                               $this->_out('/N 1');
-                                               $this->_out('>>');
-                                               $this->_out('endobj');
-                                       }
-                                  }
-                               }
-
-                               if (empty($grad['is_mask'])) {
-                                       $this->_newobj();
-                                       $this->_out('<<');
-                                       $this->_out('/ShadingType '.$grad['type']);
-                                       if (isset($grad['colorspace'])) {
-                                               $this->_out('/ColorSpace /Device'.$grad['colorspace']);         // Can use CMYK if all C0 and C1 above have 4 values
-                                       } else {
-                                               $this->_out('/ColorSpace /DeviceRGB');
-                                       }
-                                       if ($grad['type'] == 2) {
-                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]));
-                                               $this->_out('/Function '.$f1.' 0 R');
-                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
-                                               $this->_out('>>');
-                                       }
-                                       else if ($grad['type'] == 3) {
-                                               //x0, y0, r0, x1, y1, r1
-                                               //at this this time radius of inner circle is 0
-                                               $ir = 0;
-                                               if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; }
-                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4]));
-                                               $this->_out('/Function '.$f1.' 0 R');
-                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
-                                               $this->_out('>>');
-                                       }
-                                       else if ($grad['type']==6) {
-                                               $this->_out('/BitsPerCoordinate 16');
-                                               $this->_out('/BitsPerComponent 8');
-                                               if ($grad['colorspace'] == 'CMYK') { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1 0 1]'); }
-                                               else if ($grad['colorspace'] == 'Gray') { $this->_out('/Decode[0 1 0 1 0 1]'); }
-                                               else { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1]'); }
-                                               $this->_out('/BitsPerFlag 8');
-                                               $this->_out('/Length '.strlen($grad['stream']));
-                                               $this->_out('>>');
-                                               $this->_putstream($grad['stream']);
-                                       }
-                                       $this->_out('endobj');
-                               }
-
-                               $this->gradients[$id]['id'] = $this->n;
-
-                               // set pattern object
-                               $this->_newobj();
-                               $out = '<< /Type /Pattern /PatternType 2';
-                               $out .= ' /Shading '.$this->gradients[$id]['id'].' 0 R';
-                               $out .= ' >>';
-                               $out .= "\n".'endobj';
-                               $this->_out($out);
-
-
-                               $this->gradients[$id]['pattern'] = $this->n;
-
-                               if (isset($grad['trans']) && $grad['trans']) {
-                                       // luminosity pattern
-                                       $transid = $id + $maxid;
-                                       $this->_newobj();
-                                       $this->_out('<<');
-                                       $this->_out('/ShadingType '.$grad['type']);
-                                       $this->_out('/ColorSpace /DeviceGray');
-                                       if ($grad['type'] == 2) {
-                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]));
-                                               $this->_out('/Function '.$f2.' 0 R');
-                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
-                                               $this->_out('>>');
-                                       }
-                                       else if ($grad['type'] == 3) {
-                                               //x0, y0, r0, x1, y1, r1
-                                               //at this this time radius of inner circle is 0
-                                               $ir = 0;
-                                               if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; }
-                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4]));
-                                               $this->_out('/Function '.$f2.' 0 R');
-                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
-                                               $this->_out('>>');
-                                       }
-                                       else if ($grad['type']==6) {
-                                               $this->_out('/BitsPerCoordinate 16');
-                                               $this->_out('/BitsPerComponent 8');
-                                               $this->_out('/Decode[0 1 0 1 0 1]');
-                                               $this->_out('/BitsPerFlag 8');
-                                               $this->_out('/Length '.strlen($grad['stream_trans']));
-                                               $this->_out('>>');
-                                               $this->_putstream($grad['stream_trans']);
-                                       }
-                                       $this->_out('endobj');
-
-                                       $this->gradients[$transid]['id'] = $this->n;
-                                       $this->_newobj();
-                                       $this->_out('<< /Type /Pattern /PatternType 2');
-                                       $this->_out('/Shading '.$this->gradients[$transid]['id'].' 0 R');
-                                       $this->_out('>>');
-                                       $this->_out('endobj');
-                                       $this->gradients[$transid]['pattern'] = $this->n;
-                                       $this->_newobj();
-                                       // Need to extend size of viewing box in case of transformations
-                                       $str = 'q /a0 gs /Pattern cs /p'.$transid.' scn -'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).' re f Q'; 
-                                       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
-                                       $p=($this->compress) ? gzcompress($str) : $str;
-                                       $this->_out('<< /Type /XObject /Subtype /Form /FormType 1 '.$filter);
-                                       $this->_out('/Length '.strlen($p));
-                                       $this->_out('/BBox [-'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).']');   
-                                       $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >>');
-                                       $this->_out('/Resources <<');
-                                       $this->_out('/ExtGState << /a0 << /ca 1 /CA 1 >> >>');
-                                       $this->_out('/Pattern << /p'.$transid.' '.$this->gradients[$transid]['pattern'].' 0 R >>');
-                                       $this->_out('>>');
-                                       $this->_out('>>');
-                                       $this->_putstream($p);
-                                       $this->_out('endobj');
-                                       $this->_newobj();
-                                       $this->_out('<< /Type /Mask /S /Luminosity /G '.($this->n - 1).' 0 R >>'."\n".'endobj');
-                                       $this->_newobj();
-                                       $this->_out('<< /Type /ExtGState /SMask '.($this->n - 1).' 0 R /AIS false >>'."\n".'endobj');
-                                       if ($grad['fo']) { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id, 'fo'=>true); }
-                                       else { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id); }
-                               }
-                       }
-}
-/*-- END BACKGROUNDS --*/
-
-function _putspotcolors() {
-       foreach($this->spotColors as $name=>$color) {
-               $this->_newobj();
-               $this->_out('[/Separation /'.str_replace(' ','#20',$name));
-               $this->_out('/DeviceCMYK <<');
-               $this->_out('/Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0] ');
-               $this->_out(sprintf('/C1 [%.3F %.3F %.3F %.3F] ',$color['c']/100,$color['m']/100,$color['y']/100,$color['k']/100));
-               $this->_out('/FunctionType 2 /Domain [0 1] /N 1>>]');
-               $this->_out('endobj');
-               $this->spotColors[$name]['n']=$this->n;
-       }
-}
-
-
-function _putresources() {
-       if ($this->hasOC || count($this->layers))       // mPDF 5.6.01
-               $this->_putocg();
-       $this->_putextgstates();
-       $this->_putspotcolors();
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'40','Compiling Fonts'); } // *PROGRESS-BAR*
-       $this->_putfonts();
-       if ($this->progressBar) { $this->UpdateProgressBar(2,'50','Compiling Images'); }        // *PROGRESS-BAR*
-       $this->_putimages();
-       $this->_putformobjects();       // *IMAGES-CORE*
-
-/*-- IMPORTS --*/
-       if ($this->enableImports) {
-               $this->_putformxobjects();
-               $this->_putimportedobjects();
-       }
-/*-- END IMPORTS --*/
-
-/*-- BACKGROUNDS --*/
-       $this->_putshaders();
-       $this->_putpatterns();
-/*-- END BACKGROUNDS --*/
-
-
-       //Resource dictionary
-       $this->offsets[2]=strlen($this->buffer);
-       $this->_out('2 0 obj');
-       $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
-
-       $this->_out('/Font <<');
-       foreach($this->fonts as $font) {
-               if (!$font['used'] && $font['type']=='TTF') { continue; }
-               if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) {
-                       foreach($font['n'] AS $k => $fid) {
-                               $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R');
-                       }
-               }
-               else { 
-                       $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
-               }
-       }
-       $this->_out('>>');
-
-       if (count($this->spotColors)) {
-               $this->_out('/ColorSpace <<');
-               foreach($this->spotColors as $color)
-                       $this->_out('/CS'.$color['i'].' '.$color['n'].' 0 R');
-               $this->_out('>>');
-       }
-
-       if (count($this->extgstates)) {
-               $this->_out('/ExtGState <<');
-               foreach($this->extgstates as $k=>$extgstate)
-                       if (isset($extgstate['trans']))  $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R');
-                       else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
-               $this->_out('>>');
-       }
-
-/*-- BACKGROUNDS --*/
-       if (isset($this->gradients) AND (count($this->gradients) > 0)) {
-               $this->_out('/Shading <<');
-               foreach ($this->gradients as $id => $grad) {
-                       $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R');
-               }
-               $this->_out('>>');
-
-/*
-               // ??? Not needed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-               $this->_out('/Pattern <<');
-               foreach ($this->gradients as $id => $grad) {
-                       $this->_out('/P'.$id.' '.$grad['pattern'].' 0 R');
-               }
-               $this->_out('>>');
-*/
-       }
-/*-- END BACKGROUNDS --*/
-
-       if(count($this->images) || count($this->formobjects) || ($this->enableImports && count($this->tpls))) {
-               $this->_out('/XObject <<');
-               foreach($this->images as $image)
-                       $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
-            foreach($this->formobjects as $formobject)
-                $this->_out('/FO'.$formobject['i'].' '.$formobject['n'].' 0 R');
-/*-- IMPORTS --*/
-               if ($this->enableImports && count($this->tpls)) {
-                       foreach($this->tpls as $tplidx => $tpl) {
-                               $this->_out($this->tplprefix.$tplidx.' '.$tpl['n'].' 0 R');
-                       }
-               }
-/*-- END IMPORTS --*/
-               $this->_out('>>');
-       }
-
-/*-- BACKGROUNDS --*/
-
-       if (count($this->patterns)) {
-               $this->_out('/Pattern <<');
-               foreach($this->patterns as $k=>$patterns)
-                       $this->_out('/P'.$k.' '.$patterns['n'].' 0 R');
-               $this->_out('>>');
-       }
-/*-- END BACKGROUNDS --*/
-
-       // mPDF 5.6.01
-       if ($this->hasOC || count($this->layers)) { 
-               $this->_out('/Properties <<');
-               if ($this->hasOC) { 
-                       $this->_out('/OC1 '.$this->n_ocg_print.' 0 R /OC2 '.$this->n_ocg_view.' 0 R /OC3 '.$this->n_ocg_hidden.' 0 R ');
-               }
-               if (count($this->layers)) {
-                       foreach($this->layers as $id=>$layer)
-                               $this->_out('/ZI'.$id.' '.$layer['n'].' 0 R');
-               }
-               $this->_out('>>');
-       }
-
-       $this->_out('>>');
-       $this->_out('endobj');  // end resource dictionary
-
-       $this->_putbookmarks();         // *BOOKMARKS*
-
-       if (isset($this->js) && $this->js) {
-               $this->_putjavascript();
-       }
-
-/*-- ENCRYPTION --*/
-       if ($this->encrypted) {
-               $this->_newobj();
-               $this->enc_obj_id = $this->n;
-               $this->_out('<<');
-               $this->_putencryption();
-               $this->_out('>>');
-               $this->_out('endobj');
-       }
-/*-- END ENCRYPTION --*/
-}
-
-
-function _putjavascript() {
-       $this->_newobj();
-       $this->n_js = $this->n;
-       $this->_out('<<');
-       $this->_out('/Names [(EmbeddedJS) '.(1 + $this->n).' 0 R ]');
-       $this->_out('>>');
-       $this->_out('endobj');
-
-       $this->_newobj();
-       $this->_out('<<');
-       $this->_out('/S /JavaScript');
-       $this->_out('/JS '.$this->_textstring($this->js));
-       $this->_out('>>');
-       $this->_out('endobj');
-}
-
-
-
-
-/*-- ENCRYPTION --*/
-function _putencryption()      {
-       $this->_out('/Filter /Standard');
-       if ($this->useRC128encryption) {
-               $this->_out('/V 2');
-               $this->_out('/R 3');
-               $this->_out('/Length 128');
-       }
-       else  {
-               $this->_out('/V 1');
-               $this->_out('/R 2');
-       }
-       $this->_out('/O ('.$this->_escape($this->Ovalue).')');
-       $this->_out('/U ('.$this->_escape($this->Uvalue).')');
-       $this->_out('/P '.$this->Pvalue);
-}
-/*-- END ENCRYPTION --*/
-
-function _puttrailer() {
-       $this->_out('/Size '.($this->n+1));
-       $this->_out('/Root '.$this->n.' 0 R');
-       $this->_out('/Info '.$this->InfoRoot.' 0 R');
-/*-- ENCRYPTION --*/
-       if ($this->encrypted) {
-               $this->_out('/Encrypt '.$this->enc_obj_id.' 0 R');
-               $this->_out('/ID [<'.$this->uniqid.'> <'.$this->uniqid.'>]');
-       }
-       else {
-/*-- END ENCRYPTION --*/
-               $uniqid = md5(time() .  $this->buffer);
-               $this->_out('/ID [<'.$uniqid.'> <'.$uniqid.'>]');
-/*-- ENCRYPTION --*/
-       }
-/*-- END ENCRYPTION --*/
-}
-
-/*-- ENCRYPTION --*/
-function SetProtection($permissions=array(),$user_pass='',$owner_pass=null, $length=40)        {
-               $this->encrypted=false;
-               if (is_string($permissions) && strlen($permissions)>0) { $permissions = array($permissions); }
-               else if (!is_array($permissions)) { return 0; }
-               $this->last_rc4_key='';
-               $this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08".
-                                               "\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
-
-               $options = array(
-                       'print' => 4, // bit 3
-                       'modify' => 8, // bit 4
-                       'copy' => 16, // bit 5
-                       'annot-forms' => 32, // bit 6
-                       'fill-forms' => 256, // bit 9
-                       'extract' => 512, // bit 10
-                       'assemble' => 1024,// bit 11
-                       'print-highres' => 2048 // bit 12
-                       );
-               // bit 31 = 1073741824
-               // bit 32 = 2147483648
-               // bits 13-31 = 2147479552
-               // bits 13-32 = 4294963200 + 192 = 4294963392
-               $protection = 4294963392; // bits 7,8,13-32
-               foreach ($permissions as $permission) {
-                       if (!isset($options[$permission]))
-                               $this->Error('Incorrect permission: '.$permission);
-                       if ($options[$permission] > 32) { $this->useRC128encryption = true; }
-                       if (isset($options[$permission])) $protection += $options[$permission];
-               }
-               if ($length==128) { $this->useRC128encryption = true; }
-               if ($owner_pass === null)
-                       $owner_pass = uniqid(rand());
-               $this->encrypted = true;
-               $this->_generateencryptionkey($user_pass, $owner_pass, $protection);
-}
-
-
-// Compute key depending on object number where the encrypted data is stored
-function _objectkey($n) {
-       if ($this->useRC128encryption)
-               $len = 16;
-       else
-               $len = 10;
-       return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,$len);
-}
-
-// RC4 is the standard encryption algorithm used in PDF format
-function _RC4($key, $text) {
-       if ($this->last_rc4_key != $key) {
-               $k = str_repeat($key, 256/strlen($key)+1);
-               $rc4 = range(0,255);
-               $j = 0;
-               for ($i=0; $i<256; $i++){
-                       $t = $rc4[$i];
-                       $j = ($j + $t + ord($k[$i])) % 256;
-                       $rc4[$i] = $rc4[$j];
-                       $rc4[$j] = $t;
-               }
-               $this->last_rc4_key = $key;
-               $this->last_rc4_key_c = $rc4;
-       } else {
-               $rc4 = $this->last_rc4_key_c;
-       }
-
-       $len = strlen($text);
-       $a = 0;
-       $b = 0;
-       $out = '';
-       for ($i=0; $i<$len; $i++){
-               $a = ($a+1)%256;
-               $t= $rc4[$a];
-               $b = ($b+$t)%256;
-               $rc4[$a] = $rc4[$b];
-               $rc4[$b] = $t;
-               $k = $rc4[($rc4[$a]+$rc4[$b])%256];
-               $out.= chr(ord($text[$i]) ^ $k);
-       }
-       return $out;
-}
-
-// Get MD5 as binary string
-function _md5_16($string) {
-       return pack('H*',md5($string));
-}
-
-// Compute O value
-function _Ovalue($user_pass, $owner_pass) {
-       $tmp = $this->_md5_16($owner_pass);
-       if ($this->useRC128encryption) {
-               for ($i = 0; $i < 50; ++$i) {
-                       $tmp = $this->_md5_16($tmp);
-               }
-       }
-       if ($this->useRC128encryption)
-               $keybytelen = (128 / 8);
-       else 
-               $keybytelen = (40 / 8);
-       $owner_RC4_key = substr($tmp,0,$keybytelen);
-       $enc = $this->_RC4($owner_RC4_key, $user_pass);
-       if ($this->useRC128encryption) {
-               $len = strlen($owner_RC4_key);
-               for ($i = 1; $i <= 19; ++$i) {
-                       $key = '';
-                       for ($j = 0; $j < $len; ++$j) {
-                               $key .= chr(ord($owner_RC4_key{$j}) ^ $i);
-                       }
-                       $enc = $this->_RC4($key, $enc);
-               }
-       }
-       return $enc;
-}
-
-// Compute U value
-function _Uvalue() {
-       if ($this->useRC128encryption) {
-               $tmp = $this->_md5_16($this->padding.$this->_hexToString($this->uniqid));
-               $enc = $this->_RC4($this->encryption_key, $tmp);
-               $len = strlen($tmp);
-               for ($i=1; $i<=19; ++$i) {
-                       $key = '';
-                       for ($j=0; $j<$len; ++$j) {
-                               $key .= chr(ord($this->encryption_key{$j}) ^ $i);
-                       }
-                       $enc = $this->_RC4($key, $enc);
-               }
-               $enc .= str_repeat("\x00", 16);
-               return substr($enc, 0, 32);
-       }
-       else {
-               return $this->_RC4($this->encryption_key, $this->padding);
-       }
-}
-
-// Compute encryption key
-function _generateencryptionkey($user_pass, $owner_pass, $protection) {
-       // Pad passwords
-       $user_pass = substr($user_pass.$this->padding,0,32);
-       $owner_pass = substr($owner_pass.$this->padding,0,32);
-       $chars = 'ABCDEF1234567890';
-       $id = '';
-       for ($i=0; $i<32; $i++) { $id .= $chars{rand(0, 15)}; }
-       $this->uniqid = md5($id);
-       // Compute O value
-       $this->Ovalue = $this->_Ovalue($user_pass,$owner_pass);
-       // Compute encyption key
-       if ($this->useRC128encryption)
-               $keybytelen = (128/8);
-       else 
-               $keybytelen = (40/8);
-       $prot = sprintf('%032b', $protection);
-       $perms = chr(bindec(substr($prot,24,8)));
-       $perms .= chr(bindec(substr($prot,16,8)));
-       $perms .= chr(bindec(substr($prot,8,8)));
-       $perms .= chr(bindec(substr($prot,0,8)));
-       $tmp = $this->_md5_16($user_pass.$this->Ovalue.$perms.$this->_hexToString($this->uniqid));
-       if ($this->useRC128encryption) {
-               for ($i=0; $i<50; ++$i) {
-                       $tmp = $this->_md5_16(substr($tmp, 0, $keybytelen));
-               }
-       }
-       $this->encryption_key = substr($tmp,0,$keybytelen);
-       // Compute U value
-       $this->Uvalue = $this->_Uvalue();
-       // Compute P value
-       $this->Pvalue = $protection;
-}
-
-
-function _hexToString($hs) {
-       $s = '';
-       $len = strlen($hs);
-       if (($len % 2) != 0) {
-               $hs .= '0';
-               ++$len;
-       }
-       for ($i = 0; $i < $len; $i += 2) {
-               $s .= chr(hexdec($hs{$i}.$hs{($i + 1)}));
-       }
-       return $s;
-}
-
-/*-- END ENCRYPTION --*/
-
-//=========================================
-/*-- BOOKMARKS --*/
-// FROM class PDF_Bookmark
-
-function Bookmark($txt,$level=0,$y=0) {
-       $txt = $this->purify_utf8_text($txt);
-       if ($this->text_input_as_HTML) {
-               $txt = $this->all_entities_to_utf8($txt);
-       }
-       if($y==-1) {
-               if (!$this->ColActive){ $y=$this->y; }
-               else { $y = $this->y0; }        // If columns are on - mark top of columns
-       }
-       // else y is used as set, or =0 i.e. top of page
-       // DIRECTIONALITY RTL
-       $bmo = array('t'=>$txt,'l'=>$level,'y'=>$y,'p'=>$this->page);
-       if ($this->keep_block_together) {
-               $this->ktBMoutlines[]= $bmo;
-       }
-/*-- TABLES --*/
-       else if ($this->table_rotate) {
-               $this->tbrot_BMoutlines[]= $bmo;
-       }
-       else if ($this->kwt) {
-               $this->kwt_BMoutlines[]= $bmo;
-       }
-/*-- END TABLES --*/
-       else if ($this->ColActive) {    // *COLUMNS*
-               $this->col_BMoutlines[]= $bmo;  // *COLUMNS*
-       }       // *COLUMNS*
-       else {
-               $this->BMoutlines[]= $bmo;
-       }
-}
-
-
-function _putbookmarks()
-{
-       $nb=count($this->BMoutlines);
-       if($nb==0)
-               return;
-
-       // mPDF 5.6.36
-       $bmo = $this->BMoutlines;
-       $this->BMoutlines = array();
-       $lastlevel = -1;
-       for($i=0;$i<count($bmo);$i++) {
-               if ($bmo[$i]['l']>0) {
-                       while($bmo[$i]['l']-$lastlevel > 1) {   // If jump down more than one level, insert a new entry
-                               $new = $bmo[$i];
-                               $new['t']="[".$new['t']."]";    // Put [] around text/title to highlight
-                               $new['l']=$lastlevel+1;
-                               $lastlevel++;
-                               $this->BMoutlines[] = $new;
-                       }
-               }
-               $this->BMoutlines[] = $bmo[$i];
-               $lastlevel = $bmo[$i]['l'];
-       }
-       $nb=count($this->BMoutlines);
-
-       $lru=array();
-       $level=0;
-       foreach($this->BMoutlines as $i=>$o) {
-               if($o['l']>0) {
-                       $parent=$lru[$o['l']-1];
-                       //Set parent and last pointers
-                       $this->BMoutlines[$i]['parent']=$parent;
-                       $this->BMoutlines[$parent]['last']=$i;
-                       if($o['l']>$level) {
-                               //Level increasing: set first pointer
-                               $this->BMoutlines[$parent]['first']=$i;
-                       }
-               }
-               else {
-                       $this->BMoutlines[$i]['parent']=$nb;
-               }
-               if($o['l']<=$level and $i>0) {
-                       //Set prev and next pointers
-                       $prev=$lru[$o['l']];
-                       $this->BMoutlines[$prev]['next']=$i;
-                       $this->BMoutlines[$i]['prev']=$prev;
-               }
-               $lru[$o['l']]=$i;
-               $level=$o['l'];
-       }
-
-
-       //Outline items
-       $n=$this->n+1;
-       foreach($this->BMoutlines as $i=>$o) {
-               $this->_newobj();
-               $this->_out('<</Title '.$this->_UTF16BEtextstring($o['t']));
-               $this->_out('/Parent '.($n+$o['parent']).' 0 R');
-               if(isset($o['prev']))
-                       $this->_out('/Prev '.($n+$o['prev']).' 0 R');
-               if(isset($o['next']))
-                       $this->_out('/Next '.($n+$o['next']).' 0 R');
-               if(isset($o['first']))
-                       $this->_out('/First '.($n+$o['first']).' 0 R');
-               if(isset($o['last']))
-                       $this->_out('/Last '.($n+$o['last']).' 0 R');
-
-
-               if (isset($this->pageDim[$o['p']]['h'])) { $h=$this->pageDim[$o['p']]['h']; }
-               else { $h = 0; }
-
-               $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.3F null]',1+2*($o['p']),($h-$o['y'])*_MPDFK));
-               if (isset($this->bookmarkStyles) && isset($this->bookmarkStyles[$o['l']])) {
-                       // font style
-                       $bms = $this->bookmarkStyles[$o['l']]['style'];
-                       $style = 0;
-                       if (strpos($bms,'B') !== false) { $style += 2; }
-                       if (strpos($bms,'I') !== false) { $style += 1; }
-                       $this->_out(sprintf('/F %d', $style));
-                       // Colour
-                       $col = $this->bookmarkStyles[$o['l']]['color'];
-                       if (isset($col) && is_array($col) && count($col)==3) {
-                               $this->_out(sprintf('/C [%.3F %.3F %.3F]', ($col[0]/255), ($col[1]/255), ($col[2]/255)));
-                       } 
-               }
-
-               $this->_out('/Count 0>>');
-               $this->_out('endobj');
-       }
-       //Outline root
-       $this->_newobj();
-       $this->OutlineRoot=$this->n;
-       $this->_out('<</Type /BMoutlines /First '.$n.' 0 R');
-       $this->_out('/Last '.($n+$lru[0]).' 0 R>>');
-       $this->_out('endobj');
-}
-/*-- END BOOKMARKS --*/
-
-
-
-//======================================================
-
-
-// DEPRACATED but included for backwards compatability
-function startPageNums() {
-}
-
-//======================================================
-/*-- TOC --*/
-// ToC TABLE OF CONTENTS
-
-// Initiate, and Mark a place for the Table of Contents to be inserted
-function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') {  // mPDF 5.6.19
-       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
-       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
-       $this->tocontents->TOC($tocfont, $tocfontsize, $tocindent, $resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $TOCusePaging, $TOCuseLinking, $toc_id, $tocoutdent);  // mPDF 5.6.19
-}
-
-
-function TOCpagebreakByArray($a) {
-       if (!is_array($a)) { $a = array(); }
-       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
-       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
-       $tocoutdent = (isset($a['tocoutdent']) ? $a['tocoutdent'] : (isset($a['outdent']) ? $a['outdent'] : ''));
-       $TOCusePaging = (isset($a['TOCusePaging']) ? $a['TOCusePaging'] : (isset($a['paging']) ? $a['paging'] : true));
-       $TOCuseLinking = (isset($a['TOCuseLinking']) ? $a['TOCuseLinking'] : (isset($a['links']) ? $a['links'] : ''));
-       $toc_orientation = (isset($a['toc_orientation']) ? $a['toc_orientation'] : (isset($a['toc-orientation']) ? $a['toc-orientation'] : ''));
-       $toc_mgl = (isset($a['toc_mgl']) ? $a['toc_mgl'] : (isset($a['toc-margin-left']) ? $a['toc-margin-left'] : ''));
-       $toc_mgr = (isset($a['toc_mgr']) ? $a['toc_mgr'] : (isset($a['toc-margin-right']) ? $a['toc-margin-right'] : ''));
-       $toc_mgt = (isset($a['toc_mgt']) ? $a['toc_mgt'] : (isset($a['toc-margin-top']) ? $a['toc-margin-top'] : ''));
-       $toc_mgb = (isset($a['toc_mgb']) ? $a['toc_mgb'] : (isset($a['toc-margin-bottom']) ? $a['toc-margin-bottom'] : ''));
-       $toc_mgh = (isset($a['toc_mgh']) ? $a['toc_mgh'] : (isset($a['toc-margin-header']) ? $a['toc-margin-header'] : ''));
-       $toc_mgf = (isset($a['toc_mgf']) ? $a['toc_mgf'] : (isset($a['toc-margin-footer']) ? $a['toc-margin-footer'] : ''));
-       $toc_ohname = (isset($a['toc_ohname']) ? $a['toc_ohname'] : (isset($a['toc-odd-header-name']) ? $a['toc-odd-header-name'] : ''));
-       $toc_ehname = (isset($a['toc_ehname']) ? $a['toc_ehname'] : (isset($a['toc-even-header-name']) ? $a['toc-even-header-name'] : ''));
-       $toc_ofname = (isset($a['toc_ofname']) ? $a['toc_ofname'] : (isset($a['toc-odd-footer-name']) ? $a['toc-odd-footer-name'] : ''));
-       $toc_efname = (isset($a['toc_efname']) ? $a['toc_efname'] : (isset($a['toc-even-footer-name']) ? $a['toc-even-footer-name'] : ''));
-       $toc_ohvalue = (isset($a['toc_ohvalue']) ? $a['toc_ohvalue'] : (isset($a['toc-odd-header-value']) ? $a['toc-odd-header-value'] : 0));
-       $toc_ehvalue = (isset($a['toc_ehvalue']) ? $a['toc_ehvalue'] : (isset($a['toc-even-header-value']) ? $a['toc-even-header-value'] : 0));
-       $toc_ofvalue = (isset($a['toc_ofvalue']) ? $a['toc_ofvalue'] : (isset($a['toc-odd-footer-value']) ? $a['toc-odd-footer-value'] : 0));
-       $toc_efvalue = (isset($a['toc_efvalue']) ? $a['toc_efvalue'] : (isset($a['toc-even-footer-value']) ? $a['toc-even-footer-value'] : 0));
-       $toc_preHTML = (isset($a['toc_preHTML']) ? $a['toc_preHTML'] : (isset($a['toc-preHTML']) ? $a['toc-preHTML'] : ''));
-       $toc_postHTML = (isset($a['toc_postHTML']) ? $a['toc_postHTML'] : (isset($a['toc-postHTML']) ? $a['toc-postHTML'] : ''));
-       $toc_bookmarkText = (isset($a['toc_bookmarkText']) ? $a['toc_bookmarkText'] : (isset($a['toc-bookmarkText']) ? $a['toc-bookmarkText'] : ''));
-       $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
-       $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
-       $suppress = (isset($a['suppress']) ? $a['suppress'] : '');
-       $orientation = (isset($a['orientation']) ? $a['orientation'] : '');
-       $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
-       $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
-       $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
-       $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
-       $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
-       $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
-       $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
-       $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
-       $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
-       $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
-       $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
-       $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
-       $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
-       $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
-       $toc_id = (isset($a['toc_id']) ? $a['toc_id'] : (isset($a['name']) ? $a['name'] : 0));
-       $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
-       $toc_pagesel = (isset($a['toc_pagesel']) ? $a['toc_pagesel'] : (isset($a['toc-pageselector']) ? $a['toc-pageselector'] : ''));
-       $sheetsize = (isset($a['sheetsize']) ? $a['sheetsize'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
-       $toc_sheetsize = (isset($a['toc_sheetsize']) ? $a['toc_sheetsize'] : (isset($a['toc-sheet-size']) ? $a['toc-sheet-size'] : ''));
-
-       $this->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent);      // mPDF 5.6.19
-
-}
-
-function TOCpagebreak($tocfont='', $tocfontsize='', $tocindent='', $TOCusePaging=true, $TOCuseLinking='', $toc_orientation='', $toc_mgl='',$toc_mgr='',$toc_mgt='',$toc_mgb='',$toc_mgh='',$toc_mgf='',$toc_ohname='',$toc_ehname='',$toc_ofname='',$toc_efname='',$toc_ohvalue=0,$toc_ehvalue=0,$toc_ofvalue=0, $toc_efvalue=0, $toc_preHTML='', $toc_postHTML='', $toc_bookmarkText='', $resetpagenum='', $pagenumstyle='', $suppress='', $orientation='', $mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0, $toc_id=0, $pagesel='', $toc_pagesel='', $sheetsize='', $toc_sheetsize='', $tocoutdent='') {     // mPDF 5.6.19) {
-               if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
-               if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
-               //Start a new page
-               if($this->state==0) $this->AddPage();
-               if ($this->y == $this->tMargin && (!$this->mirrorMargins ||($this->mirrorMargins && $this->page % 2==1))) {
-                       // Don't add a page
-                       if ($this->page==1 && count($this->PageNumSubstitutions)==0) { 
-                               if (!$suppress) { $suppress = 'off'; }
-                               if (!$resetpagenum) { $resetpagenum= 1; }
-                               //$this->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
-                       }
-                       $this->PageNumSubstitutions[] = array('from'=>$this->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress); 
-               }
-               else {
-                       $this->AddPage($orientation,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$sheetsize);
-               }
-
-               $this->tocontents->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent);  // mPDF 5.6.19
-}
-
-function TOC_Entry($txt, $level=0, $toc_id=0) {
-               // mPDF 5.7.2
-               if ($this->ColActive) { $ily = $this->y0; } else { $ily = $this->y; }   // use top of columns
-
-               if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
-               if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
-               $linkn = $this->AddLink();
-               $uid = '__mpdfinternallink_' . $linkn ;
-               if ($this->keep_block_together) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); }
-               else if ($this->table_rotate) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); }
-               else if ($this->kwt) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); }
-               else if ($this->ColActive) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); }
-               else    $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page );
-               $this->internallink['#'.$uid] = $linkn;
-               $this->SetLink($linkn,$ily,$this->page);
-
-/*-- RTL --*/
-               if ($this->biDirectional)  {
-                       $txt = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $txt );   // mPDF 5.7+
-               }
-/*-- END RTL --*/
-               if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
-               else if (!$toc_id) { $toc_id = 0; }
-               else { $toc_id = strtolower($toc_id); }
-               $btoc = array('t'=>$txt,'l'=>$level,'p'=>$this->page, 'link'=>$linkn, 'toc_id'=>$toc_id);
-               if ($this->keep_block_together) {
-                       $this->_kttoc[]= $btoc;
-               }
-/*-- TABLES --*/
-               else if ($this->table_rotate) {
-                       $this->tbrot_toc[]= $btoc;
-               }
-               else if ($this->kwt) {
-                       $this->kwt_toc[]= $btoc;
-               }
-/*-- END TABLES --*/
-               else if ($this->ColActive) {            // *COLUMNS*
-                       $this->col_toc[]= $btoc;        // *COLUMNS*
-               }                                               // *COLUMNS*
-               else {
-                       $this->tocontents->_toc[]= $btoc;
-               }
-}
-
-/*-- END TOC --*/
-
-//======================================================
-function MovePages($target_page, $start_page, $end_page=-1) {
-       // move a page/pages EARLIER in the document
-               if ($end_page<1) { $end_page = $start_page; }
-               $n_toc = $end_page - $start_page + 1;
-
-               // Set/Update PageNumSubstitutions changes before moving anything
-               if (count($this->PageNumSubstitutions)) {
-                       $tp_present = false;
-                       $sp_present = false;
-                       $ep_present = false;
-                       foreach($this->PageNumSubstitutions AS $k=>$v) {
-                         if ($this->PageNumSubstitutions[$k]['from']==$target_page) {
-                               $tp_present = true;
-                               if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { 
-                                       $this->PageNumSubstitutions[$k]['suppress']='off';
-                               }
-                         }
-                         if ($this->PageNumSubstitutions[$k]['from']==$start_page) {
-                               $sp_present = true;
-                               if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { 
-                                       $this->PageNumSubstitutions[$k]['suppress']='off';
-                               }
-                         }
-                         if ($this->PageNumSubstitutions[$k]['from']==($end_page+1)) {
-                               $ep_present = true;
-                               if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { 
-                                       $this->PageNumSubstitutions[$k]['suppress']='off';
-                               }
-                         }
-                       }
-
-                       if (!$tp_present) { 
-                               list($tp_type, $tp_suppress, $tp_reset) = $this->docPageSettings($target_page);
-                       }
-                       if (!$sp_present) { 
-                               list($sp_type, $sp_suppress, $sp_reset) = $this->docPageSettings($start_page);
-                       }
-                       if (!$ep_present) { 
-                               list($ep_type, $ep_suppress, $ep_reset) = $this->docPageSettings($start_page-1);
-                       }
-
-               }
-
-               $last = array();
-               //store pages
-               for($i = $start_page;$i <= $end_page ;$i++)
-                       $last[]=$this->pages[$i];
-               //move pages
-               for($i=$start_page - 1;$i>=($target_page);$i--) {
-                       $this->pages[$i+$n_toc]=$this->pages[$i];
-               }
-               //Put toc pages at insert point
-               for($i = 0;$i < $n_toc;$i++) {
-                       $this->pages[$target_page + $i]=$last[$i];
-               }
-
-/*-- BOOKMARKS --*/
-               // Update Bookmarks
-               foreach($this->BMoutlines as $i=>$o) {
-                       if($o['p']>=$target_page) {
-                               $this->BMoutlines[$i]['p'] += $n_toc;
-                       }
-               }
-/*-- END BOOKMARKS --*/
-
-               // Update Page Links
-               if (count($this->PageLinks)) {
-                  $newarr = array();
-                  foreach($this->PageLinks as $i=>$o) {
-                       foreach($this->PageLinks[$i] as $key => $pl) {
-                               if (strpos($pl[4],'@')===0) {
-                                       $p=substr($pl[4],1);
-                                       if($p>=$start_page && $p<=$end_page) {
-                                               $this->PageLinks[$i][$key][4] = '@'.($p + ($target_page - $start_page));
-                                       }
-                                       else if($p>=$target_page && $p<$start_page) {
-                                               $this->PageLinks[$i][$key][4] = '@'.($p+$n_toc);
-                                       }
-                               }
-                       }
-                       if($i>=$start_page && $i<=$end_page) {
-                               $newarr[($i + ($target_page - $start_page))] = $this->PageLinks[$i];
-                       }
-                       else if($i>=$target_page && $i<$start_page) {
-                               $newarr[($i + $n_toc)] = $this->PageLinks[$i];
-                       }
-                       else {
-                               $newarr[$i] = $this->PageLinks[$i];
-                       }
-                  }
-                  $this->PageLinks = $newarr;
-               }
-
-               // OrientationChanges
-               if (count($this->OrientationChanges)) {
-                       $newarr = array();
-                       foreach($this->OrientationChanges AS $p=>$v) {
-                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->OrientationChanges[$p]; }
-                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->OrientationChanges[$p]; }
-                               else { $newarr[$p] = $this->OrientationChanges[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->OrientationChanges = $newarr;
-               }
-
-               // Page Dimensions
-               if (count($this->pageDim)) {
-                       $newarr = array();
-                       foreach($this->pageDim AS $p=>$v) {
-                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->pageDim[$p]; }
-                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->pageDim[$p]; }
-                               else { $newarr[$p] = $this->pageDim[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->pageDim = $newarr;
-               }
-
-               // HTML Headers & Footers
-               if (count($this->saveHTMLHeader)) {
-                       $newarr = array();
-                       foreach($this->saveHTMLHeader AS $p=>$v) {
-                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLHeader[$p]; }
-                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLHeader[$p]; }
-                               else { $newarr[$p] = $this->saveHTMLHeader[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->saveHTMLHeader = $newarr;
-               }
-               if (count($this->saveHTMLFooter)) {
-                       $newarr = array();
-                       foreach($this->saveHTMLFooter AS $p=>$v) {
-                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLFooter[$p]; }
-                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLFooter[$p]; }
-                               else { $newarr[$p] = $this->saveHTMLFooter[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->saveHTMLFooter = $newarr;
-               }
-
-               // Update Internal Links
-               if (count($this->internallink)) {
-                  foreach($this->internallink as $key=>$o) {
-                       if($o['PAGE']>=$start_page && $o['PAGE']<=$end_page) {
-                               $this->internallink[$key]['PAGE'] += ($target_page - $start_page);
-                       }
-                       else if($o['PAGE']>=$target_page && $o['PAGE']<$start_page) {
-                               $this->internallink[$key]['PAGE'] += $n_toc;
-                       }
-                  }
-               }
-
-               // Update Links
-               if (count($this->links)) {
-                  foreach($this->links as $key=>$o) {
-                       if($o[0]>=$start_page && $o[0]<=$end_page) {
-                               $this->links[$key][0] += ($target_page - $start_page);
-                       }
-                       if($o[0]>=$target_page && $o[0]<$start_page) {
-                               $this->links[$key][0] += $n_toc;
-                       }
-                  }
-               }
-
-               // Update Form fields
-               if (count($this->form->forms)) {
-                  foreach($this->form->forms as $key=>$f) {
-                       if($f['page']>=$start_page && $f['page']<=$end_page) {
-                               $this->form->forms[$key]['page'] += ($target_page - $start_page);
-                       }
-                       if($f['page']>=$target_page && $f['page']<$start_page) {
-                               $this->form->forms[$key]['page'] += $n_toc;
-                       }
-                  }
-               }
-
-/*-- ANNOTATIONS --*/
-               // Update Annotations
-               if (count($this->PageAnnots)) {
-                  $newarr = array();
-                  foreach($this->PageAnnots as $p=>$anno) {
-                       if($p>=$start_page && $p<=$end_page) {
-                               $np = $p + ($target_page - $start_page);
-                               foreach($anno as $o) {
-                                       $newarr[$np][] = $o;
-                               }
-                       }
-                       else if($p>=$target_page && $p<$start_page) {
-                               $np = $p + $n_toc;
-                               foreach($anno as $o) {
-                                       $newarr[$np][] = $o;
-                               }
-                     }
-                       else {
-                               $newarr[$p] = $this->PageAnnots[$p];
-                       }
-                  }
-                  $this->PageAnnots = $newarr;
-                  unset($newarr);
-               }
-/*-- END ANNOTATIONS --*/
-
-               // Update PageNumSubstitutions
-               if (count($this->PageNumSubstitutions)) {
-                       $newarr = array();
-                       foreach($this->PageNumSubstitutions AS $k=>$v) {
-                               if($this->PageNumSubstitutions[$k]['from']>=$start_page && $this->PageNumSubstitutions[$k]['from']<=$end_page) { 
-                                       $this->PageNumSubstitutions[$k]['from'] += ($target_page - $start_page); 
-                                       $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; 
-                               }
-                               else if($this->PageNumSubstitutions[$k]['from']>=$target_page && $this->PageNumSubstitutions[$k]['from']<$start_page) {
-                                       $this->PageNumSubstitutions[$k]['from'] += $n_toc;
-                                       $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; 
-                               }
-                               else {
-                                       $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; 
-                               }
-                       }
-
-                       if (!$sp_present) {
-                                       $newarr[$target_page] = array('from'=>$target_page, 'suppress'=>$sp_suppress, 'reset'=>$sp_reset, 'type'=>$sp_type); 
-                       }
-                       if (!$tp_present) {
-                                       $newarr[($target_page + $n_toc)] = array('from'=>($target_page+$n_toc), 'suppress'=>$tp_suppress, 'reset'=>$tp_reset, 'type'=>$tp_type); 
-                       }
-                       if (!$ep_present && $end_page>count($this->pages)) {
-                                       $newarr[($end_page+1)] = array('from'=>($end_page+1), 'suppress'=>$ep_suppress, 'reset'=>$ep_reset, 'type'=>$ep_type); 
-                       }
-                       ksort($newarr);
-                       $this->PageNumSubstitutions = array();
-                       foreach($newarr as $v) {
-                               $this->PageNumSubstitutions[] = $v;
-                       }
-               }
-}
-
-//======================================================
-function DeletePages($start_page, $end_page=-1) {
-       // move a page/pages EARLIER in the document
-               if ($end_page<1) { $end_page = $start_page; }
-               $n_tod = $end_page - $start_page + 1;
-               $last_page = count($this->pages);
-               $n_atend = $last_page - $end_page + 1;
-
-               //move pages
-               for($i=0;$i<$n_atend;$i++) {
-                       $this->pages[$start_page+$i]=$this->pages[$end_page+1+$i];
-               }
-               //delete pages
-               for($i = 0;$i < $n_tod ;$i++)
-                       unset($this->pages[$last_page-$i]);
-
-
-/*-- BOOKMARKS --*/
-               // Update Bookmarks
-               foreach($this->BMoutlines as $i=>$o) {
-                       if($o['p']>=$end_page) { $this->BMoutlines[$i]['p'] -= $n_tod; }
-                       else if($p<$start_page) { unset($this->BMoutlines[$i]); }
-               }
-/*-- END BOOKMARKS --*/
-
-               // Update Page Links
-               if (count($this->PageLinks)) {
-                  $newarr = array();
-                  foreach($this->PageLinks as $i=>$o) {
-                       foreach($this->PageLinks[$i] as $key => $pl) {
-                               if (strpos($pl[4],'@')===0) {
-                                       $p=substr($pl[4],1);
-                                       if($p>$end_page) { $this->PageLinks[$i][$key][4] = '@'.($p - $n_tod); }
-                                       else if($p<$start_page) { unset($this->PageLinks[$i][$key]); }
-                               }
-                       }
-                       if($i>$end_page) { $newarr[($i - $n_tod)] = $this->PageLinks[$i]; }
-                       else if($p<$start_page) { $newarr[$i] = $this->PageLinks[$i]; }
-                  }
-                  $this->PageLinks = $newarr;
-               }
-
-               // OrientationChanges
-               if (count($this->OrientationChanges)) {
-                       $newarr = array();
-                       foreach($this->OrientationChanges AS $p=>$v) {
-                               if($p>$end_page) { $newarr[($p - $t_tod)] = $this->OrientationChanges[$p]; }
-                               else if($p<$start_page) { $newarr[$p] = $this->OrientationChanges[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->OrientationChanges = $newarr;
-               }
-
-               // Page Dimensions
-               if (count($this->pageDim)) {
-                       $newarr = array();
-                       foreach($this->pageDim AS $p=>$v) {
-                               if($p>$end_page) { $newarr[($p - $n_tod)] = $this->pageDim[$p]; }
-                               else if($p<$start_page) { $newarr[$p] = $this->pageDim[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->pageDim = $newarr;
-               }
-
-               // HTML Headers & Footers
-               if (count($this->saveHTMLHeader)) {
-                       foreach($this->saveHTMLHeader AS $p=>$v) {
-                               if($p>end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLHeader[$p]; }
-                               else if($p<$start_page) { $newarr[$p] = $this->saveHTMLHeader[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->saveHTMLHeader = $newarr;
-               }
-               if (count($this->saveHTMLFooter)) {
-                       $newarr = array();
-                       foreach($this->saveHTMLFooter AS $p=>$v) {
-                               if($p>$end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLFooter[$p]; }
-                               else if($p<$start_page) { $newarr[$p] = $this->saveHTMLFooter[$p]; }
-                       }
-                       ksort($newarr);
-                       $this->saveHTMLFooter = $newarr;
-               }
-
-               // Update Internal Links
-               foreach($this->internallink as $key=>$o) {
-                       if($o['PAGE']>$end_page) { $this->internallink[$key]['PAGE'] -= $n_tod; }
-                       else if($o['PAGE']<$start_page) { unset($this->internallink[$key]); }
-               }
-
-               // Update Links
-               foreach($this->links as $key=>$o) {
-                       if($o[0]>$end_page) { $this->links[$key][0] -= $n_tod; }
-                       else if($o[0]<$start_page) { unset($this->links[$key]); }
-               }
-
-               // Update Form fields
-               foreach($this->form->forms as $key=>$f) {
-                       if($f['page']>$end_page) { $this->form->forms[$key]['page'] -= $n_tod; }
-                       else if($f['page']<$start_page) { unset($this->form->forms[$key]); }
-               }
-
-/*-- ANNOTATIONS --*/
-               // Update Annotations
-               if (count($this->PageAnnots)) {
-                  $newarr = array();
-                  foreach($this->PageAnnots as $p=>$anno) {
-                       if($p>$end_page) { foreach($anno as $o) { $newarr[($p - $n_tod)][] = $o; } }
-                       else if($p<$start_page) { $newarr[$p] = $this->PageAnnots[$p]; }
-                  }
-                  ksort($newarr);
-                  $this->PageAnnots = $newarr;
-               }
-/*-- END ANNOTATIONS --*/
-
-               // Update PageNumSubstitutions
-               foreach($this->PageNumSubstitutions AS $k=>$v) {
-                       if($this->PageNumSubstitutions[$k]['from']>$end_page) { $this->PageNumSubstitutions[$k]['from'] -= $n_tod; }
-                       else if($this->PageNumSubstitutions[$k]['from']<$start_page) { unset($this->PageNumSubstitutions[$k]); }
-               }
-
-       unset($newarr);
-       $this->page = count($this->pages);
-}
-
-
-//======================================================
-/*-- INDEX --*/
-// FROM class PDF_Ref == INDEX
-
-function Reference($txt) {
-       $this->IndexEntry($txt);
-}
-
-
-function IndexEntry($txt, $xref='') {
-       if ($xref) { 
-               $this->IndexEntrySee($txt,$xref);
-               return;
-       }
-       $txt = strip_tags($txt);
-       $txt = $this->purify_utf8_text($txt);
-       if ($this->text_input_as_HTML) {
-               $txt = $this->all_entities_to_utf8($txt);
-       }
-       if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
-
-       $Present=0;
-       $size=sizeof($this->Reference);
-
-       if ($this->directionality == 'rtl') {   // *RTL*
-               $txt = str_replace(':',' - ',$txt);     // *RTL*
-       }       // *RTL*
-       else {  // *RTL*
-               $txt = str_replace(':',', ',$txt);
-       }       // *RTL*
-
-
-       //Search the reference (AND Ref/PageNo) in the array
-       for ($i=0;$i<$size;$i++){
-               if ($this->keep_block_together) {
-                       if (isset($this->ktReference[$i]['t']) && $this->ktReference[$i]['t']==$txt){
-                               $Present=1;
-                               if ($this->page != $this->ktReference[$i]['op']) {      // mPDF 5.7.2
-                                       $this->ktReference[$i]['op'] = $this->page;
-                               }
-                       }
-               }
-/*-- TABLES --*/
-               else if ($this->table_rotate) {
-                       if (isset($this->tbrot_Reference[$i]['t']) && $this->tbrot_Reference[$i]['t']==$txt){
-                               $Present=1;
-                               if ($this->page != $this->tbrot_Reference[$i]['op']) {  // mPDF 5.7.2
-                                       $this->tbrot_Reference[$i]['op'] = $this->page;
-                               }
-                       }
-               }
-               else if ($this->kwt) {
-                       if (isset($this->kwt_Reference[$i]['t']) && $this->kwt_Reference[$i]['t']==$txt){
-                               $Present=1;
-                               if ($this->page != $this->kwt_Reference[$i]['op']) {    // mPDF 5.7.2
-                                       $this->kwt_Reference[$i]['op'] = $this->page;
-                               }
-                       }
-               }
-/*-- END TABLES --*/
-/*-- COLUMNS --*/
-               else if ($this->ColActive) {
-                       if (isset($this->col_Reference[$i]['t']) && $this->col_Reference[$i]['t']==$txt){
-                               $Present=1;
-                               if ($this->page != $this->col_Reference[$i]['op']) {    // mPDF 5.7.2
-                                       $this->col_Reference[$i]['op'] = $this->page;
-                               }
-                       }
-               }
-/*-- END COLUMNS --*/
-               else {
-                       if (isset($this->Reference[$i]['t']) && $this->Reference[$i]['t']==$txt){
-                               $Present=1;
-                               if (!in_array($this->page,$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $this->page;
-                               }
-                       }
-               }
-       }
-       //If not found, add it
-       if ($Present==0) {
-               $opr = array('t'=>$txt, 'op'=>$this->page);
-               if ($this->keep_block_together) {
-                       $this->ktReference[]= $opr;
-               }
-/*-- TABLES --*/
-               else if ($this->table_rotate) {
-                       $this->tbrot_Reference[]= $opr;
-               }
-               else if ($this->kwt) {
-                       $this->kwt_Reference[]= $opr;
-               }
-/*-- END TABLES --*/
-/*-- COLUMNS --*/
-               else if ($this->ColActive) {
-                       $this->col_Reference[]= $opr;
-               }
-/*-- END COLUMNS --*/
-               else {
-                       $this->Reference[]=array('t'=>$txt,'p'=>array($this->page));
-               }
-       }
-}
-
-// Added function to add a reference "Elephants. See Chickens"
-function ReferenceSee($txta,$txtb) {
-       $this->IndexEntrySee($txta,$txtb);
-}
-
-function IndexEntrySee($txta,$txtb) {
-       $txta = strip_tags($txta);
-       $txtb = strip_tags($txtb);
-       $txta = $this->purify_utf8_text($txta);
-       $txtb = $this->purify_utf8_text($txtb);
-       if ($this->text_input_as_HTML) {
-               $txta = $this->all_entities_to_utf8($txta);
-               $txtb = $this->all_entities_to_utf8($txtb);
-       }
-       if ($this->usingCoreFont) { 
-               $txta = mb_convert_encoding($txta,$this->mb_enc,'UTF-8'); 
-               $txtb = mb_convert_encoding($txtb,$this->mb_enc,'UTF-8'); 
-       }
-       if ($this->directionality == 'rtl') {   // *RTL*
-               $txta = str_replace(':',' - ',$txta);   // *RTL*
-               $txtb = str_replace(':',' - ',$txtb);   // *RTL*
-       }       // *RTL*
-       else {  // *RTL*
-               $txta = str_replace(':',', ',$txta);
-               $txtb = str_replace(':',', ',$txtb);
-       }       // *RTL*
-       $this->Reference[]=array('t'=>$txta.' - see '.$txtb,'p'=>array());
-}
-
-function CreateReference($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) {
-       $this->CreateIndex($NbCol, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont, $divlettfont, $useLinking);
-}
-
-function CreateIndex($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) {
-       if (!$reffontsize) { $reffontsize = $this->default_font_size; }
-       if (!$divlettfontsize) { $divlettfontsize = ($this->default_font_size * 1.8); }
-       if (!$reffont) { $reffont = $this->default_font; }
-       if (!$divlettfont) { $divlettfont = $reffont; }
-       if (!$linespacing) { $linespacing= $this->default_lineheight_correction; }
-       if ($this->ColActive) { $this->SetColumns(0); } // *COLUMNS*
-       $size=sizeof($this->Reference);
-       if ($size == 0) { return false; }
-
-
-       if ($NbCol<2) { 
-               $NbCol = 1; 
-               $colWidth = $this->pgwidth;
-       }
-       else { 
-               $this->SetColumns($NbCol,'',$gap); 
-               $colWidth = $this->ColWidth;
-       }
-       if ($this->directionality == 'rtl') { $align = 'R'; }
-       else { $align = 'L'; }
-       $lett = '';
-       if (!function_exists('cmp')) {
-               function cmp ($a, $b) {
-                   return strnatcmp(strtolower($a['t']), strtolower($b['t']));
-               }
-       }
-       //Alphabetic sort of the references
-       usort($this->Reference, 'cmp');
-       $size=sizeof($this->Reference);
-       $this->breakpoints[$this->CurrCol][] = $this->y;        // *COLUMNS*
-
-       $divlettjuststarted = false;
-
-       $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; '));
-
-       $last_lett = '';
-       for ($i=0;$i<$size;$i++){
-               if ($this->Reference[$i]['t']) { 
-                       if ($usedivletters) {
-                          
-                          $lett = mb_strtoupper(mb_substr($this->Reference[$i]['t'],0,1,$this->mb_enc ),$this->mb_enc );
-                          if ($lett != $last_lett) {
-
-                               $save_bp = $this->breakpoints[$this->CurrCol];  // *COLUMNS*
-                               $divlettjuststarted = true;
-
-                               if ($i>0) { 
-                                       $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; margin-top: 0.5em; margin-collapse: collapse; '));
-                               }
-                               else { 
-                                       $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; '));
-                               }
-                               $this->_saveTextBuffer($lett);
-                               $this->CloseTag('DIV');
-                          }
-                       }
-
-                       $this->OpenTag('DIV',array('STYLE'=>'text-indent: -'.$offset.'mm; line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; '));
-
-/*-- RTL --*/
-                       // Change Arabic + Persian. to Presentation Forms
-                       if ($this->biDirectional)  {
-                               $this->Reference[$i]['t'] = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $this->Reference[$i]['t'] ); // mPDF 5.7+
-                       }
-/*-- END RTL --*/
-
-                       // Font-specific ligature substitution for Indic fonts
-                       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($this->Reference[$i]['t']);  // *INDIC*
-
-                       $this->_saveTextBuffer($this->Reference[$i]['t']);
-                       $ppp = $this->Reference[$i]['p'];       // = array of page numbers to point to
-                       if (count($ppp)) { 
-                        sort($ppp);
-                        $newarr = array();
-                        $range_start = $ppp[0];
-                        $range_end = 0;
-
-                        if (!$this->usingCoreFont) { $spacer = "\xc2\xa0 "; }
-                        else { $spacer = chr(160).' '; }
-                        $this->_saveTextBuffer($spacer);
-                        if ($this->directionality == 'rtl') { $sep = '.'; $joiner = '-'; }
-                        else { $sep = ', '; $joiner = '-'; }
-                        for ($zi=1;$zi<count($ppp);$zi++) {
-                         // RTL - Each number separately 
-                         if ($this->directionality == 'rtl') {
-/*-- RTL --*/
-                               if ($zi<count($ppp)-1) {
-                                       $txt =  $sep . $this->docPageNum($ppp[$zi]);
-                                       if ($useLinking) { $href = '@'.$ppp[$zi]; } 
-                                       else { $href = ''; }
-                                       $this->_saveTextBuffer($txt, $href);
-                               }
-/*-- END RTL --*/
-                         }
-
-                         else if ($ppp[$zi] == ($ppp[($zi-1)]+1)) {
-                               $range_end = $ppp[$zi];
-                         }
-                         else {
-                               if ($range_end) {
-                                       if ($range_end == $range_start+1) { 
-                                               if ($useLinking) { $href = '@'.$range_start; } 
-                                               else { $href = ''; }
-                                               $txt = $this->docPageNum($range_start) . $sep;
-                                               $this->_saveTextBuffer($txt, $href);
-                                               if ($useLinking) { $href = '@'.$ppp[$zi-1]; } 
-                                               else { $href = ''; }
-                                               $txt = $this->docPageNum($ppp[$zi-1]) . $sep;
-                                               $this->_saveTextBuffer($txt, $href);
-                                       }
-                                       else { 
-                                               if ($useLinking) { $href = '@'.$range_start; } 
-                                               else { $href = ''; }
-                                       }
-                               }
-                               else {
-                                       if ($useLinking) { $href = '@'.$ppp[$zi-1]; } 
-                                       else { $href = ''; }
-                                       $txt = $this->docPageNum($ppp[$zi-1]) . $sep;
-                                       $this->_saveTextBuffer($txt, $href);
-                               }
-                               $range_start = $ppp[$zi];
-                               $range_end = 0;
-                         }
-                        }
-
-                        if ($range_end) {
-                               if ($range_end == $range_start+1) { 
-                                       if ($useLinking) { $href = '@'.$range_start; } 
-                                       else { $href = ''; }
-                                       $txt = $this->docPageNum($range_start) . $sep;
-                                       $this->_saveTextBuffer($txt, $href);
-                                       if ($useLinking) { $href = '@'.$range_end; } 
-                                       else { $href = ''; }
-                                       $txt = $this->docPageNum($range_end);
-                                       $this->_saveTextBuffer($txt, $href);
-                               }
-                               else {
-                                       if ($useLinking) { $href = '@'.$range_start; } 
-                                       else { $href = ''; }
-                                       $txt = $this->docPageNum($range_start) . $joiner;
-                                       $this->_saveTextBuffer($txt, $href);
-                                       if ($useLinking) { $href = '@'.$range_end; } 
-                                       else { $href = ''; }
-                                       $txt = $this->docPageNum($range_end);
-                                       $this->_saveTextBuffer($txt, $href);
-                               }
-                        }
-                        else {
-                               if ($useLinking) { $href = '@'.$ppp[(count($ppp)-1)]; } 
-                               else { $href = ''; }
-                               $txt = $this->docPageNum($ppp[(count($ppp)-1)]);
-                               $this->_saveTextBuffer($txt, $href);
-                        }
-                       }
-               }
-               $this->CloseTag('DIV');
-
-               if ($divlettjuststarted) { $this->breakpoints[$this->CurrCol] = $save_bp; }     // *COLUMNS*
-               $divlettjuststarted = false;
-
-               $this->breakpoints[$this->CurrCol][] = $this->y;        // *COLUMNS*
-               $last_lett = $lett;
-       }
-       $this->CloseTag('DIV');
-       $this->breakpoints[$this->CurrCol][] = $this->y;        // *COLUMNS*
-       if ($this->ColActive) { $this->SetColumns(0);  }        // *COLUMNS*
-}
-/*-- END INDEX --*/
-
-
-function AcceptPageBreak() {
-       if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }       // *TABLES*
-/*-- COLUMNS --*/
-       if ($this->ColActive==1) {
-           if($this->CurrCol<$this->NbCol-1) {
-               //Go to the next column
-               $this->CurrCol++;
-               $this->SetCol($this->CurrCol);
-               $this->y=$this->y0;
-               $this->ChangeColumn=1;  // Number (and direction) of columns changed +1, +2, -2 etc.
-               // DIRECTIONALITY RTL
-               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
-               //Stay on the page
-               return false;
-          }
-          else {
-               //Go back to the first column - NEW PAGE
-               if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
-               $this->SetCol(0);
-               $this->y0 = $this->tMargin;
-               $this->ChangeColumn= -($this->NbCol-1);
-               // DIRECTIONALITY RTL
-               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
-               //Page break
-               return true;
-          }
-       }
-/*-- END COLUMNS --*/
-/*-- TABLES --*/
-       else if ($this->table_rotate) {
-               if ($this->tablebuffer) { $this->printtablebuffer(); }
-               return true;
-       }
-/*-- END TABLES --*/
-       else {  // *COLUMNS*
-               $this->ChangeColumn=0;
-               return $this->autoPageBreak;
-       }       // *COLUMNS*
-       return $this->autoPageBreak;
-}
-
-
-//----------- COLUMNS ---------------------
-/*-- COLUMNS --*/
-
-function SetColumns($NbCol,$vAlign='',$gap=5) {
-// NbCol = number of columns
-// CurrCol = Number of the current column starting at 0
-// Called externally to set columns on/off and number
-// Integer 2 upwards sets columns on to that number
-// Anything less than 2 turns columns off
-       if ($NbCol<2) { // SET COLUMNS OFF
-               if ($this->ColActive) { 
-                       $this->ColActive=0;
-                       if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
-                       $this->NbCol=1;
-                       $this->ResetMargins(); 
-                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
-                       $this->divwidth = 0;
-                       $this->Ln(); 
-               }
-               $this->ColActive=0;
-               $this->columnbuffer = array();
-               $this->ColDetails = array();
-               $this->columnLinks = array();
-               $this->columnAnnots = array();
-               $this->columnForms = array();
-               $this->col_Reference = array();
-               $this->col_BMoutlines = array();
-               $this->col_toc = array();
-               $this->breakpoints = array();
-       }
-       else {  // SET COLUMNS ON
-               if ($this->ColActive) { 
-                       $this->ColActive=0;
-                       if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
-                       $this->ResetMargins(); 
-               }
-               if (isset($this->y) && $this->y>$this->tMargin) $this->Ln();
-               $this->NbCol=$NbCol;
-               $this->ColGap = $gap;
-               $this->divwidth = 0;
-               $this->ColActive=1;
-               $this->ColumnAdjust = true;     // enables column height adjustment for the page
-               $this->columnbuffer = array();
-               $this->ColDetails = array();
-               $this->columnLinks = array();
-               $this->columnAnnots = array();
-               $this->columnForms = array();
-               $this->col_Reference = array();
-               $this->col_BMoutlines = array();
-               $this->col_toc = array();
-               $this->breakpoints = array();
-               if ((strtoupper($vAlign) == 'J') || (strtoupper($vAlign) == 'JUSTIFY')) { $vAlign = 'J'; } 
-               else { $vAlign = ''; }
-               $this->colvAlign = $vAlign;
-               //Save the ordinate
-               $absL = $this->DeflMargin-($gap/2);
-               $absR = $this->DefrMargin-($gap/2);
-               $PageWidth = $this->w-$absL-$absR;      // virtual pagewidth for calculation only
-               $ColWidth = (($PageWidth - ($gap * ($NbCol)))/$NbCol);
-               $this->ColWidth = $ColWidth;
-/*-- RTL --*/
-
-               if ($this->directionality == 'rtl') { 
-                       for ($i=0;$i<$this->NbCol;$i++) {
-                               $this->ColL[$i] = $absL + ($gap/2) + (($NbCol - ($i+1))*($PageWidth/$NbCol)) ;
-                               $this->ColR[$i] = $this->ColL[$i] + $ColWidth;  // NB This is not R margin -> R pos
-                       }
-               } 
-               else { 
-/*-- END RTL --*/
-                       for ($i=0;$i<$this->NbCol;$i++) {
-                               $this->ColL[$i] = $absL + ($gap/2) + ($i* ($PageWidth/$NbCol)   );
-                               $this->ColR[$i] = $this->ColL[$i] + $ColWidth;  // NB This is not R margin -> R pos
-                       }
-               }       // *RTL*
-               $this->pgwidth = $ColWidth;
-               $this->SetCol(0);
-               $this->y0=$this->y;
-       }
-       $this->x = $this->lMargin;
-}
-
-function SetCol($CurrCol) {
-// Used internally to set column by number: 0 is 1st column
-       //Set position on a column
-       $this->CurrCol=$CurrCol;
-       $x = $this->ColL[$CurrCol];
-       $xR = $this->ColR[$CurrCol];    // NB This is not R margin -> R pos
-       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
-               $x += $this->MarginCorrection ;
-               $xR += $this->MarginCorrection ;
-       }
-       $this->SetMargins($x,($this->w - $xR),$this->tMargin);
-}
-
-function AddColumn() {
-       $this->NewColumn();
-       $this->ColumnAdjust = false;    // disables all column height adjustment for the page.
-}
-function NewColumn() {
-       if ($this->ColActive==1) {
-           if($this->CurrCol<$this->NbCol-1) {
-               //Go to the next column
-               $this->CurrCol++;
-               $this->SetCol($this->CurrCol);
-               $this->y = $this->y0;
-               $this->ChangeColumn=1;
-               // DIRECTIONALITY RTL
-               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
-               //Stay on the page
-               }
-               else {
-               //Go back to the first column
-               //Page break
-               if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
-               $this->AddPage($this->CurOrientation);
-               $this->SetCol(0);
-               $this->y0 = $this->tMargin;
-               $this->ChangeColumn= -($this->NbCol-1);
-               // DIRECTIONALITY RTL
-               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
-               }
-               $this->x = $this->lMargin;
-       }
-       else {
-               $this->AddPage($this->CurOrientation);
-       }
-}
-
-function printcolumnbuffer() {
-   // Columns ended (but page not ended) -> try to match all columns - unless disabled by using a custom column-break
-   if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) {      // mPDF 5.7.2
-       // Calculate adjustment to add to each column to calculate rel_y value
-       $this->ColDetails[0]['add_y'] = 0;
-       $last_col = 0;
-       // Recursively add previous column's height
-       for($i=1;$i<$this->NbCol;$i++) { 
-               if (isset($this->ColDetails[$i]['bottom_margin']) && $this->ColDetails[$i]['bottom_margin']) { // If any entries in the column
-                       $this->ColDetails[$i]['add_y'] = ($this->ColDetails[$i-1]['bottom_margin'] - $this->y0) + $this->ColDetails[$i-1]['add_y'];
-                       $last_col = $i;         // Last column actually printed
-               }
-       }
-
-       // Calculate value for each position sensitive entry as though for one column
-       foreach($this->columnbuffer AS $key=>$s) { 
-               $t = $s['s'];
-               if ($t == 'ACROFORM') {
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-                       $this->columnbuffer[$key]['s'] = '';
-               }
-               else if (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) {
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-               }
-               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) {
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-               }
-               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) {
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-               }
-               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) {
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-               }
-               else if (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) { 
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-               }
-               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) {
-                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
-               }
-       }
-       foreach($this->internallink AS $key => $f) {
-         if (is_array($f) && isset($f['col'])) {
-               $this->internallink[$key]['rel_y'] = $f['Y'] + $this->ColDetails[$f['col']]['add_y'] - $this->y0;
-         }
-       }
-
-       $breaks = array();
-       foreach($this->breakpoints AS $c => $bpa) { 
-               foreach($bpa AS $rely) {
-                       $breaks[] = $rely + $this->ColDetails[$c]['add_y'] - $this->y0;
-               }
-       }
-
-       if (isset($this->ColDetails[$last_col]['bottom_margin'])) { $lcbm = $this->ColDetails[$last_col]['bottom_margin']; }
-       else { $lcbm = 0; }
-       $sum_h = $this->ColDetails[$last_col]['add_y'] + $lcbm - $this->y0;
-       //$sum_h = max($this->ColDetails[$last_col]['add_y'] + $this->ColDetails[$last_col]['bottom_margin'] - $this->y0, end($breaks));
-       $target_h = ($sum_h / $this->NbCol);
-
-       $cbr = array();
-       for($i=1;$i<$this->NbCol;$i++) { 
-               $th = ($sum_h * $i / $this->NbCol);
-               foreach($breaks AS $bk=>$val) {
-                       if ($val > $th) {
-                               if (($val-$th) < ($th-$breaks[$bk-1])) { $cbr[$i-1] = $val; }
-                               else  { $cbr[$i-1] = $breaks[$bk-1]; }
-                               break;
-                       }
-               }
-       }
-       $cbr[($this->NbCol-1)] = $sum_h;
-
-       // Now update the columns - divide into columns of approximately equal value
-       $last_new_col = 0; 
-       $yadj = 0;      // mm
-       $xadj = 0;
-       $last_col_bottom = 0;
-       $lowest_bottom_y = 0;
-       $block_bottom = 0;
-       $newcolumn = 0;
-       foreach($this->columnbuffer AS $key=>$s) { 
-         if (isset($s['rel_y'])) {     // only process position sensitive data
-               if ($s['rel_y'] >= $cbr[$newcolumn]) {
-                       $newcolumn++;
-               }
-               else {
-                       $newcolumn = $last_new_col ;
-               }
-
-
-               $block_bottom = max($block_bottom,($s['rel_y']+$s['h']));
-
-               if ($this->directionality == 'rtl') {   // *RTL*
-                       $xadj = -(($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap));        // *RTL*
-               }       // *RTL*
-               else {  // *RTL*
-                       $xadj = ($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap);
-               }       // *RTL*
-
-               if ($last_new_col != $newcolumn) {      // Added new column
-                       $last_col_bottom = $this->columnbuffer[$key]['rel_y'];
-                       $block_bottom = 0;
-               }
-               $yadj = ($s['rel_y'] - $s['y']) - ($last_col_bottom)+$this->y0;
-               // callback function
-               $t = $s['s'];
-
-               // mPDF 5.7+
-               $t = $this->columnAdjustPregReplace('Td', $xadj, $yadj, '/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/', $t);
-               $t = $this->columnAdjustPregReplace('re', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/', $t);
-               $t = $this->columnAdjustPregReplace('l', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) l/', $t);
-               $t = $this->columnAdjustPregReplace('img', $xadj, $yadj, '/q (\d+\.\d\d+) 0 0 (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) cm \/(I|FO)/', $t);
-               $t = $this->columnAdjustPregReplace('draw', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) m/', $t);
-               $t = $this->columnAdjustPregReplace('bezier',$xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) c/', $t);
-
-               $this->columnbuffer[$key]['s'] = $t;
-               $this->columnbuffer[$key]['newcol'] = $newcolumn;
-               $this->columnbuffer[$key]['newy'] = $s['y'] + $yadj;
-               $last_new_col = $newcolumn;
-               $clb = $s['y'] + $yadj + $s['h'] ;      // bottom_margin of current
-               if ((isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb > $this->ColDetails[$newcolumn]['max_bottom']) || (!isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb)) { $this->ColDetails[$newcolumn]['max_bottom'] = $clb; }
-               if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
-               // Adjust LINKS
-               if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->PageLinks[$this->page][$ref][0] += ($xadj*_MPDFK);
-                       $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);
-                       unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-               }
-               // Adjust FORM FIELDS
-               if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->form->forms[$ref]['x'] += ($xadj);
-                       $this->form->forms[$ref]['y'] += ($yadj);
-                       unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-               }
-/*-- ANNOTATIONS --*/
-               if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       if ($this->PageAnnots[$this->page][$ref]['x'] < 0) {
-                                $this->PageAnnots[$this->page][$ref]['x'] -= ($xadj);
-                       }
-                       else {
-                                $this->PageAnnots[$this->page][$ref]['x'] += ($xadj);
-                       }
-                       $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);   // unlike PageLinks, Page annots has y values from top in mm
-                       unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-               }
-/*-- END ANNOTATIONS --*/
-         }
-       }
-
-/*-- BOOKMARKS --*/
-       // Adjust Bookmarks
-       foreach($this->col_BMoutlines AS $v) {
-               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']);
-       }
-/*-- END BOOKMARKS --*/
-
-/*-- INDEX --*/
-       // Adjust Reference (index)
-       foreach($this->col_Reference AS $v) {
-               $Present=0;
-               //Search the reference (AND Ref/PageNo) in the array
-               for ($i=0;$i<count($this->Reference);$i++){
-                       if ($this->Reference[$i]['t']==$v['t']){
-                               $Present=1;
-                               if (!in_array($v['op'],$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $v['op'];
-                               }
-                       }
-               }
-               if ($Present==0) {
-                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
-               }
-       }
-/*-- END INDEX --*/
-
-/*-- TOC --*/
-        
-        // Adjust ToC
-        foreach($this->col_toc AS $v) {
-               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-               $this->links[$v['link']][1] = $this->y0; 
-        }
-/*-- END TOC --*/
-
-       // Adjust column length to be equal
-       if ($this->colvAlign == 'J') {
-        foreach($this->columnbuffer AS $key=>$s) { 
-          if (isset($s['rel_y'])) {    // only process position sensitive data
-           // Set ratio to expand y values or heights
-           if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom']  && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) {
-               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0));
-           }
-           else { $ratio = 1; }
-           if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
-               $yadj = ($s['newy'] - $this->y0) * ($ratio - 1);
-
-               // Adjust LINKS
-               if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);       // y value
-                       $this->PageLinks[$this->page][$ref][3] *= $ratio;       // height
-                       unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-               }
-               // Adjust FORM FIELDS
-               if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->form->forms[$ref]['x'] += ($xadj);
-                       $this->form->forms[$ref]['y'] += ($yadj);
-                       unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-               }
-/*-- ANNOTATIONS --*/
-               if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);
-                       unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-               }
-/*-- END ANNOTATIONS --*/
-           }
-         }
-        }
-       foreach($this->internallink AS $key => $f) {
-         if (is_array($f) && isset($f['col'])) {
-               $last_col_bottom = 0;
-               for ($nbc=0; $nbc<$this->NbCol; $nbc++) {
-                       if ($f['rel_y'] >= $cbr[$nbc]) { $last_col_bottom = $cbr[$nbc]; }
-               }
-               $yadj = ($f['rel_y'] - $f['Y']) - $last_col_bottom + $this->y0;
-               $f['Y'] += $yadj;
-               unset($f['col']);
-               unset($f['rel_y']);
-               $this->internallink[$key] = $f;
-         }
-       }
-
-        $last_col = -1;
-        $trans_on = false;
-        foreach($this->columnbuffer AS $key=>$s) { 
-               if (isset($s['rel_y'])) {       // only process position sensitive data
-                       // Set ratio to expand y values or heights
-                       if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom']  && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) { 
-                               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0));
-                       }
-                       else { $ratio = 1; }
-                       if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
-                               //Start Transformation
-                               $this->pages[$this->page] .= $this->StartTransform(true)."\n";
-                               $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n";
-                               $trans_on = true;
-                       }
-               }
-               // Now output the adjusted values
-               $this->pages[$this->page] .= $s['s']."\n"; 
-               if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) {     // only process position sensitive data
-                       //Stop Transformation
-                       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
-                       $trans_on = false;
-               }
-        }
-        if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; }
-       }
-       else {  // if NOT $this->colvAlign == 'J' 
-               // Now output the adjusted values
-               foreach($this->columnbuffer AS $s) { 
-                       $this->pages[$this->page] .= $s['s']."\n"; 
-               }
-       }
-       if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
-   }
-
-   // Columns not ended but new page -> align columns (can leave the columns alone - just tidy up the height)
-   else if ($this->colvAlign == 'J' && $this->ColumnAdjust && !$this->keepColumns)  {
-       // calculate the lowest bottom margin
-       $lowest_bottom_y = 0;
-       foreach($this->columnbuffer AS $key=>$s) { 
-          // Only process output data
-          $t = $s['s'];
-          if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) ||
-               (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) || 
-               (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) || 
-               (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) || 
-               (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) { 
-
-               $clb = $s['y'] + $s['h'];
-               if ((isset($this->ColDetails[$s['col']]['max_bottom']) && $clb > $this->ColDetails[$s['col']]['max_bottom']) || !isset($this->ColDetails[$s['col']]['max_bottom'])) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; }
-               if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
-               $this->columnbuffer[$key]['rel_y'] = $s['y'];   // Marks position sensitive data to process later
-               if ($t == 'ACROFORM') { $this->columnbuffer[$key]['s'] = ''; }
-          }
-       }
-       // Adjust column length equal
-        foreach($this->columnbuffer AS $key=>$s) { 
-           // Set ratio to expand y values or heights
-           if (isset($this->ColDetails[$s['col']]['max_bottom']) && $this->ColDetails[$s['col']]['max_bottom']) { 
-               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0));
-           }
-           else { $ratio = 1; }
-           if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
-               $yadj = ($s['y'] - $this->y0) * ($ratio - 1);
-
-               // Adjust LINKS
-               if (isset($s['rel_y'])) {       // only process position sensitive data
-                  // otherwise triggers for all entries in column buffer (.e.g. formatting) and makes below adjustments more than once
-                  if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);       // y value
-                       $this->PageLinks[$this->page][$ref][3] *= $ratio;       // height
-                       unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); 
-                  }
-                  // Adjust FORM FIELDS
-                  if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->form->forms[$ref]['x'] += ($xadj);
-                       $this->form->forms[$ref]['y'] += ($yadj);
-                       unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-                  }
-/*-- ANNOTATIONS --*/
-                  if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
-                       $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
-                       $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);
-                       unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
-                  }
-/*-- END ANNOTATIONS --*/
-               }
-           }
-        }
-
-/*-- BOOKMARKS --*/
-
-       // Adjust Bookmarks
-       foreach($this->col_BMoutlines AS $v) {
-               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']);
-       }
-/*-- END BOOKMARKS --*/
-
-/*-- INDEX --*/
-
-       // Adjust Reference (index)
-       foreach($this->col_Reference AS $v) {
-               $Present=0;
-               //Search the reference (AND Ref/PageNo) in the array
-               for ($i=0;$i<count($this->Reference);$i++){
-                       if ($this->Reference[$i]['t']==$v['t']){
-                               $Present=1;
-                               if (!in_array($v['op'],$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $v['op'];
-                               }
-                       }
-               }
-               if ($Present==0) {
-                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
-               }
-       }
-/*-- END INDEX --*/
-
-/*-- TOC --*/
-        
-        // Adjust ToC
-        foreach($this->col_toc AS $v) {
-               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-               $this->links[$v['link']][1] = $this->y0; 
-        }
-/*-- END TOC --*/
-        $trans_on = false;
-        foreach($this->columnbuffer AS $key=>$s) { 
-               if (isset($s['rel_y'])) {       // only process position sensitive data
-                       // Set ratio to expand y values or heights
-                       if ($this->ColDetails[$s['col']]['max_bottom']) { 
-                               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0));
-                       }
-                       else { $ratio = 1; }
-                       if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
-                               //Start Transformation
-                               $this->pages[$this->page] .= $this->StartTransform(true)."\n";
-                               $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n";
-                               $trans_on = true;
-                       }
-               }
-               // Now output the adjusted values
-               $this->pages[$this->page] .= $s['s']."\n"; 
-               if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
-                       //Stop Transformation
-                       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
-                       $trans_on = false;      // mPDF 5.1.001
-               }
-        }
-        if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; }
-
-       if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
-   }
-
-
-   // Just reproduce the page as it was
-   else {
-       // If page has not ended but height adjustment was disabled by custom column-break - adjust y
-       $lowest_bottom_y = 0;
-       if (!$this->ColActive && (!$this->ColumnAdjust || $this->keepColumns)) {
-               // calculate the lowest bottom margin
-               foreach($this->columnbuffer AS $key=>$s) { 
-                  // Only process output data
-                  $t = $s['s'];
-                  if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) ||
-                       (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) || 
-                       (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) || 
-                       (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) || 
-                       (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) { 
-
-                       $clb = $s['y'] + $s['h'];
-                       if ($clb > $this->ColDetails[$s['col']]['max_bottom']) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; }
-                       if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
-                  }
-               }
-       }
-       foreach($this->columnbuffer AS $key=>$s) { 
-               if ($s['s'] != 'ACROFORM') 
-                       $this->pages[$this->page] .= $s['s']."\n"; 
-       }
-       if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
-/*-- INDEX --*/
-
-       // Output Reference (index)
-       foreach($this->col_Reference AS $v) {
-               $Present=0;
-               for ($i=0;$i<count($this->Reference);$i++){
-                       if ($this->Reference[$i]['t']==$v['t']){
-                               $Present=1;
-                               if (!in_array($v['op'],$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $v['op'];
-                               }
-                       }
-               }
-               if ($Present==0) {
-                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
-               }
-     }
-/*-- END INDEX --*/
-/*-- BOOKMARKS --*/
-      // Output Bookmarks
-      foreach($this->col_BMoutlines AS $v) {
-               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
-      }
-/*-- END BOOKMARKS --*/
-/*-- TOC --*/
-      // Output ToC
-      foreach($this->col_toc AS $v) {
-               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-      }
-/*-- END TOC --*/
-   }
-   foreach($this->internallink AS $key => $f) {
-       if (isset($this->internallink[$key]['col'])) unset($this->internallink[$key]['col']);
-       if (isset($this->internallink[$key]['rel_y'])) unset($this->internallink[$key]['rel_y']);
-   }
-
-   $this->columnbuffer = array();
-   $this->ColDetails = array();
-   $this->columnLinks = array();
-   $this->columnAnnots = array();
-   $this->columnForms = array();
-   
-   $this->col_Reference = array();
-   $this->col_BMoutlines = array();
-   $this->col_toc = array();
-   $this->breakpoints = array();
-}
-
-// mPDF 5.7+
-function columnAdjustPregReplace($type, $xadj, $yadj, $pattern, $subject) {
-       preg_match($pattern, $subject, $matches);
-       if (!isset($matches[3])) { $matches[3] = 0; }
-       if (!isset($matches[4])) { $matches[4] = 0; }
-       if (!isset($matches[5])) { $matches[5] = 0; }
-       if (!isset($matches[6])) { $matches[6] = 0; }
-       return str_replace($matches[0], $this->columnAdjustAdd($type, _MPDFK, $xadj, $yadj, $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]), $subject);
-}
-
-/*-- END COLUMNS --*/
-
-
-//==================================================================
-/*-- TABLES --*/
-function printcellbuffer() {
-       if (count($this->cellBorderBuffer )) {
-               sort($this->cellBorderBuffer);
-               foreach($this->cellBorderBuffer AS $cbb) {
-                       $cba = unpack("A16dom/nbord/A1side/ns/dbw/a6ca/A10style/dx/dy/dw/dh/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd/dover/", $cbb);
-                       $side = $cba['side'];
-                       $details = array();
-                       $details[$side]['dom'] = (float) $cba['dom'];
-                       $details[$side]['s'] = $cba['s'];
-                       $details[$side]['w'] = $cba['bw'];
-                       $details[$side]['c'] = $cba['ca'];
-                       $details[$side]['style'] = trim($cba['style']);
-                       $details['mbw']['BL'] = $cba['mbl'];
-                       $details['mbw']['BR'] = $cba['mbr'];
-                       $details['mbw']['RT'] = $cba['mrt'];
-                       $details['mbw']['RB'] = $cba['mrb'];
-                       $details['mbw']['TL'] = $cba['mtl'];
-                       $details['mbw']['TR'] = $cba['mtr'];
-                       $details['mbw']['LT'] = $cba['mlt'];
-                       $details['mbw']['LB'] = $cba['mlb'];
-                       $details['cellposdom'] = $cba['cpd'];
-                       $details['p'] = $side;
-                       if ($cba['over']==1) { $details[$side]['overlay'] = true;  }
-                       else { $details[$side]['overlay'] = false; }
-                       $this->_tableRect($cba['x'],$cba['y'],$cba['w'],$cba['h'],$cba['bord'],$details, false, false);
-
-               }
-               $this->cellBorderBuffer = array();
-       }
-}
-//==================================================================
-function printtablebuffer() {
-
-       if (!$this->table_rotate) { 
-               $this->pages[$this->page] .= $this->tablebuffer;
-               foreach($this->tbrot_Links AS $p => $l) {
-                  foreach($l AS $v) {
-                       $this->PageLinks[$p][] = $v;
-                  }
-               }
-               $this->tbrot_Links = array();
-/*-- ANNOTATIONS --*/
-               foreach($this->tbrot_Annots AS $p => $l) {
-                  foreach($l AS $v) {
-                       $this->PageAnnots[$p][] = $v;
-                  }
-               }
-               $this->tbrot_Annots = array();
-/*-- END ANNOTATIONS --*/
-
-/*-- INDEX --*/
-             // Output Reference (index)
-             foreach($this->tbrot_Reference AS $v) {
-                       $Present=0;
-                       for ($i=0;$i<count($this->Reference);$i++){
-                               if ($this->Reference[$i]['t']==$v['t']){
-                                       $Present=1;
-                                       if (!in_array($v['op'],$this->Reference[$i]['p'])) {
-                                               $this->Reference[$i]['p'][] = $v['op'];
-                                       }
-                               }
-                       }
-                       if ($Present==0) {
-                               $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
-                       }
-             }
-               $this->tbrot_Reference = array();
-/*-- END INDEX --*/
-
-/*-- BOOKMARKS --*/
-             // Output Bookmarks
-             foreach($this->tbrot_BMoutlines AS $v) {
-                       $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
-             }
-               $this->tbrot_BMoutlines = array();
-/*-- END BOOKMARKS --*/
-
-/*-- TOC --*/
-             // Output ToC
-             foreach($this->tbrot_toc AS $v) {
-                       $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-             }
-               $this->tbrot_toc = array();
-/*-- END TOC --*/
-
-               return; 
-       }
-       // else if rotated
-       $lm = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left'];
-       $pw = $this->blk[$this->blklvl]['inner_width'];
-       //Start Transformation
-       $this->pages[$this->page] .= $this->StartTransform(true)."\n";
-
-       if ($this->table_rotate > 1) {  // clockwise
-          if ($this->tbrot_align == 'L') {
-               $xadj = $this->tbrot_h ;        // align L (as is)
-          }
-          else if ($this->tbrot_align == 'R') {
-               $xadj = $lm-$this->tbrot_x0+($pw) ;     // align R
-          }
-          else {
-               $xadj = $lm-$this->tbrot_x0+(($pw + $this->tbrot_h)/2) ;        // align C
-          }
-          $yadj = 0;
-       }
-       else {  // anti-clockwise
-          if ($this->tbrot_align == 'L') {
-               $xadj = 0 ;     // align L (as is)
-          }
-          else if ($this->tbrot_align == 'R') {
-               $xadj = $lm-$this->tbrot_x0+($pw - $this->tbrot_h) ;    // align R
-          }
-          else {
-               $xadj = $lm-$this->tbrot_x0+(($pw - $this->tbrot_h)/2) ;        // align C
-          }
-          $yadj = $this->tbrot_w;
-       }
-
-
-       $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n";
-       $this->pages[$this->page] .= $this->transformRotate($this->table_rotate, $this->tbrot_x0 , $this->tbrot_y0 , true)."\n";
-
-       // Now output the adjusted values
-       $this->pages[$this->page] .= $this->tablebuffer; 
-
-
-       foreach($this->tbrot_Links AS $p => $l) {
-           foreach($l AS $v) {
-               $w = $v[2]/_MPDFK;
-               $h = $v[3]/_MPDFK;
-               $ax = ($v[0]/_MPDFK) - $this->tbrot_x0;
-               $ay = (($this->hPt-$v[1])/_MPDFK) - $this->tbrot_y0;
-               if ($this->table_rotate > 1) {  // clockwise
-                       $bx = $this->tbrot_x0+$xadj-$ay-$h;
-                       $by = $this->tbrot_y0+$yadj+$ax;
-               }
-               else {
-                       $bx = $this->tbrot_x0+$xadj+$ay;
-                       $by = $this->tbrot_y0+$yadj-$ax-$w;
-               }
-               $v[0] = $bx*_MPDFK;
-               $v[1] = ($this->h-$by)*_MPDFK;
-               $v[2] = $h*_MPDFK;      // swap width and height
-               $v[3] = $w*_MPDFK;
-               $this->PageLinks[$p][] = $v;
-           }
-       }
-       $this->tbrot_Links = array();
-       foreach($this->internallink AS $key => $f) {
-               if (is_array($f) && isset($f['tbrot'])) {
-                       $f['Y'] = $this->tbrot_y0;
-                       $f['PAGE'] = $this->page;
-                       unset($f['tbrot']);
-                       $this->internallink[$key] = $f;
-               }
-       }
-/*-- ANNOTATIONS --*/
-       foreach($this->tbrot_Annots AS $p => $l) {
-           foreach($l AS $v) {
-               $ax = abs($v['x']) - $this->tbrot_x0;   // abs because -ve values are internally set and held for reference if annotMargin set
-               $ay = $v['y'] - $this->tbrot_y0;
-               if ($this->table_rotate > 1) {  // clockwise
-                       $bx = $this->tbrot_x0+$xadj-$ay;
-                       $by = $this->tbrot_y0+$yadj+$ax;
-               }
-               else {
-                       $bx = $this->tbrot_x0+$xadj+$ay;
-                       $by = $this->tbrot_y0+$yadj-$ax;
-               }
-               if ($v['x'] < 0) {
-                       $v['x'] = -$bx;
-               }
-               else {
-                       $v['x'] = $bx;
-               }
-               $v['y'] = ($by);
-               $this->PageAnnots[$p][] = $v;
-           }
-       }
-       $this->tbrot_Annots = array();
-/*-- END ANNOTATIONS --*/
-
-
-/*-- BOOKMARKS --*/
-
-       // Adjust Bookmarks
-       foreach($this->tbrot_BMoutlines AS $v) {
-               $v['y'] = $this->tbrot_y0;
-               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page);
-       }
-/*-- END BOOKMARKS --*/
-
-/*-- INDEX --*/
-
-       // Adjust Reference (index)
-       foreach($this->tbrot_Reference AS $v) {
-               $Present=0;
-               //Search the reference (AND Ref/PageNo) in the array
-               for ($i=0;$i<count($this->Reference);$i++){
-                       if ($this->Reference[$i]['t']==$v['t']){
-                               $Present=1;
-                               if (!in_array($this->page,$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $this->page;
-                               }
-                       }
-               }
-               if ($Present==0) {
-                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page));
-               }
-       }
-/*-- END INDEX --*/
-
-/*-- TOC --*/
-
-       // Adjust ToC - uses document page number
-       foreach($this->tbrot_toc AS $v) {
-               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-               $this->links[$v['link']][1] = $this->tbrot_y0; 
-       }
-/*-- END TOC --*/
-
-
-
-       $this->tbrot_Reference = array();
-       $this->tbrot_BMoutlines = array();
-       $this->tbrot_toc = array();
-
-       //Stop Transformation
-       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
-
-
-       $this->y = $this->tbrot_y0 + $this->tbrot_w;
-       $this->x = $this->lMargin;
-
-       $this->tablebuffer = '';
-}
-
-//==================================================================
-// Keep-with-table This buffers contents of h1-6 to keep on page with table
-function printkwtbuffer() {
-       if (!$this->kwt_moved) { 
-               foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; }
-               foreach($this->kwt_Links AS $p => $l) {
-                  foreach($l AS $v) {
-                       $this->PageLinks[$p][] = $v;
-                  }
-               }
-               $this->kwt_Links = array();
-/*-- ANNOTATIONS --*/
-               foreach($this->kwt_Annots AS $p => $l) {
-                  foreach($l AS $v) {
-                       $this->PageAnnots[$p][] = $v;
-                  }
-               }
-               $this->kwt_Annots = array();
-/*-- END ANNOTATIONS --*/
-
-/*-- INDEX --*/
-             // Output Reference (index)
-             foreach($this->kwt_Reference AS $v) {
-                       $Present=0;
-                       for ($i=0;$i<count($this->Reference);$i++){
-                               if ($this->Reference[$i]['t']==$v['t']){
-                                       $Present=1;
-                                       if (!in_array($v['op'],$this->Reference[$i]['p'])) {
-                                               $this->Reference[$i]['p'][] = $v['op'];
-                                       }
-                               }
-                       }
-                       if ($Present==0) {
-                               $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
-                       }
-             }
-               $this->kwt_Reference = array();
-/*-- END INDEX --*/
-
-/*-- BOOKMARKS --*/
-             // Output Bookmarks
-             foreach($this->kwt_BMoutlines AS $v) {
-                       $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
-             }
-               $this->kwt_BMoutlines = array();
-/*-- END BOOKMARKS --*/
-
-/*-- TOC --*/
-             // Output ToC
-             foreach($this->kwt_toc AS $v) {
-                       $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-             }
-               $this->kwt_toc = array();
-/*-- END TOC --*/
-
-               return; 
-       }
-
-       //Start Transformation
-       $this->pages[$this->page] .= $this->StartTransform(true)."\n";
-       $xadj = $this->lMargin - $this->kwt_x0 ;
-       //$yadj = $this->y - $this->kwt_y0 ;
-       $yadj = $this->tMargin - $this->kwt_y0 ;
-
-       $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n";
-
-       // Now output the adjusted values
-       foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; }
-
-       // Adjust hyperLinks
-       foreach($this->kwt_Links AS $p => $l) {
-           foreach($l AS $v) {
-               $bx = $this->kwt_x0+$xadj;
-               $by = $this->kwt_y0+$yadj;
-               $v[0] = $bx*_MPDFK;
-               $v[1] = ($this->h-$by)*_MPDFK;
-               $this->PageLinks[$p][] = $v;
-           }
-       }
-       foreach($this->internallink AS $key => $f) {
-               if (is_array($f) && isset($f['kwt'])) {
-                       $f['Y'] += $yadj;
-                       $f['PAGE'] = $this->page;
-                       unset($f['kwt']);
-                       $this->internallink[$key] = $f;
-               }
-       }
-/*-- ANNOTATIONS --*/
-       foreach($this->kwt_Annots AS $p => $l) {
-           foreach($l AS $v) {
-               $bx = $this->kwt_x0+$xadj;
-               $by = $this->kwt_y0+$yadj;
-               if ($v['x'] < 0) {
-                       $v['x'] = -$bx;
-               }
-               else {
-                       $v['x'] = $bx;
-               }
-               $v['y'] = $by;
-               $this->PageAnnots[$p][] = $v;
-           }
-       }
-/*-- END ANNOTATIONS --*/
-
-/*-- BOOKMARKS --*/
-
-       // Adjust Bookmarks
-       foreach($this->kwt_BMoutlines AS $v) {
-               if ($v['y'] != 0) { $v['y'] += $yadj; }
-               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page);
-       }
-/*-- END BOOKMARKS --*/
-
-/*-- INDEX --*/
-
-       // Adjust Reference (index)
-       foreach($this->kwt_Reference AS $v) {
-               $Present=0;
-               //Search the reference (AND Ref/PageNo) in the array
-               for ($i=0;$i<count($this->Reference);$i++){
-                       if ($this->Reference[$i]['t']==$v['t']){
-                               $Present=1;
-                               if (!in_array($this->page,$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $this->page;
-                               }
-                       }
-               }
-               if ($Present==0) {
-                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page));
-               }
-       }
-/*-- END INDEX --*/
-
-/*-- TOC --*/
-
-       // Adjust ToC
-       foreach($this->kwt_toc AS $v) {
-               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-               $this->links[$v['link']][0] = $this->page;
-               $this->links[$v['link']][1] += $yadj;
-       }
-/*-- END TOC --*/
-
-
-       $this->kwt_Links = array();
-       $this->kwt_Annots = array();
-
-       $this->kwt_Reference = array();
-       $this->kwt_BMoutlines = array();
-       $this->kwt_toc = array();
-       //Stop Transformation
-       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
-
-       $this->kwt_buffer = array();
-
-       $this->y += $this->kwt_height;
-}
-
-/*-- END TABLES --*/
-
-
-//==================================================================
-
-function printfloatbuffer() {
-       if (count($this->floatbuffer)) {
-               $this->objectbuffer = $this->floatbuffer;
-               $this->printobjectbuffer(false);
-               $this->objectbuffer = array();
-               $this->floatbuffer = array();
-               $this->floatmargins = array();
-       }
-}
-//==================================================================
-
-function printdivbuffer() {
-       $p1 = $this->blk[$this->blklvl]['startpage'];
-       $p2 = $this->page;
-       $bottom[$p1] = $this->ktBlock[$p1]['bottom_margin'];
-       $bottom[$p2] = $this->y;        // $this->ktBlock[$p2]['bottom_margin'];
-       $top[$p1] = $this->kt_y00;
-
-       $top2 = $this->h;
-       foreach($this->divbuffer AS $key=>$s) { 
-               if ($s['page'] == $p2) {
-                       $top2 = MIN($s['y'], $top2);
-               }
-       }
-       $top[$p2] = $top2;
-       $height[$p1] = ($bottom[$p1] - $top[$p1]);
-       $height[$p2] = ($bottom[$p2] - $top[$p2]);
-       $xadj[$p1] = $this->MarginCorrection;
-       $yadj[$p1] = -($top[$p1] - $top[$p2]);
-       $xadj[$p2] = 0;
-       $yadj[$p2] = $height[$p1];
-
-       // Output without any transformation
-       if ($this->ColActive || !$this->keep_block_together || $this->blk[$this->blklvl]['startpage'] == $this->page || ($this->page - $this->blk[$this->blklvl]['startpage']) > 1 || ($height[$p1]+$height[$p2]) > $this->h) { 
-               foreach($this->divbuffer AS $s) { $this->pages[$s['page']] .= $s['s']."\n"; }
-               foreach($this->ktLinks AS $p => $l) {
-                  foreach($l AS $v) {
-                       $this->PageLinks[$p][] = $v;
-                  }
-               }
-               foreach($this->ktForms AS $key => $f) {
-                       $this->form->forms[$f['n']] = $f;
-               }
-/*-- ANNOTATIONS --*/
-               foreach($this->ktAnnots AS $p => $l) {
-                  foreach($l AS $v) {
-                       $this->PageAnnots[$p][] = $v;
-                  }
-               }
-/*-- END ANNOTATIONS --*/
-/*-- INDEX --*/
-             // Adjust Reference (index)
-             foreach($this->ktReference AS $v) {
-                       $Present=0;
-                       //Search the reference (AND Ref/PageNo) in the array
-                       for ($i=0;$i<count($this->Reference);$i++){
-                               if ($this->Reference[$i]['t']==$v['t']){
-                                       $Present=1;
-                                       if (!in_array($p2,$this->Reference[$i]['p'])) {
-                                               $this->Reference[$i]['p'][] = $p2;
-                                       }
-                               }
-                       }
-                       //If not found, add it
-                       if ($Present==0) {
-                               $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2));
-                       }
-             }
-/*-- END INDEX --*/
-
-/*-- BOOKMARKS --*/
-             // Adjust Bookmarks
-             foreach($this->ktBMoutlines AS $v) {
-                       $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
-             }
-/*-- END BOOKMARKS --*/
-
-/*-- TOC --*/
-             // Adjust ToC
-             foreach($this->_kttoc AS $v) {
-                       $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-             }
-/*-- END TOC --*/
-
-               $this->divbuffer = array();
-               $this->ktLinks = array();
-               $this->ktAnnots = array();
-               $this->ktForms = array();
-               $this->ktBlock = array();
-               $this->ktReference = array();
-               $this->ktBMoutlines = array();
-               $this->_kttoc = array();
-               $this->keep_block_together = 0;
-               return; 
-       }
-       else {
-       // Output with transformation
-          // mPDF 5.6.17
-          $np = '';
-          $lastpage = -1;
-          foreach($this->divbuffer AS $key=>$s) { 
-               // callback function
-               $t = $s['s'];
-               $p = $s['page'];
-               if ($p != $lastpage) {
-                       $q = '';
-                       if ($lastpage != -1) { $q =  ' Q'."\n"; }
-                       $t = $q . $this->StartTransform(true)."\n" . $this->transformTranslate($xadj[$p], $yadj[$p] , true)."\n" . $t;
-                       $lastpage = $p;
-               }
-               $np .= $t."\n";
-          }
-          if ($lastpage != -1) { $np .=  ' Q'."\n"; }
-
-          $this->pages[$this->page] .= $np;
-
-          // Adjust hyperLinks
-          foreach($this->ktLinks AS $p => $l) {
-           foreach($l AS $v) {
-               $v[0] += ($xadj[$p]*_MPDFK);
-               $v[1] -= ($yadj[$p]*_MPDFK);
-               $this->PageLinks[$p2][] = $v;
-           }
-          }
-          foreach($this->ktForms AS $key => $f) {
-               $p = $f['page'];
-               $f['x'] += ($xadj[$p]);
-               $f['y'] += ($yadj[$p]);
-               $f['page'] = $p2;
-               $this->form->forms[$f['n']] = $f;
-          }
-          foreach($this->internallink AS $key => $f) {
-               if (is_array($f) && isset($f['kt'])) {
-                       $f['Y'] += ($yadj[$f['PAGE']]);
-                       $f['PAGE'] = $p2;
-                       unset($f['kt']);
-                       $this->internallink[$key] = $f;
-               }
-          }
-/*-- ANNOTATIONS --*/
-          foreach($this->ktAnnots AS $p => $l) {
-           foreach($l AS $v) {
-               if ($v['x']>0) { $v['x'] += $xadj[$p]; }
-               else if ($v['x']<0) { $v['x'] -= $xadj[$p]; }
-               $v['y'] += $yadj[$p];
-               $this->PageAnnots[$p2][] = $v;
-           }
-          }
-/*-- END ANNOTATIONS --*/
-
-/*-- BOOKMARKS --*/
-          // Adjust Bookmarks
-          foreach($this->ktBMoutlines AS $v) {
-               if ($v['y'] != 0) { $v['y'] += ($yadj[$v['p']]); }
-               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$p2);
-          }
-/*-- END BOOKMARKS --*/
-
-/*-- INDEX --*/
-          // Adjust Reference (index)
-          foreach($this->ktReference AS $v) {
-               $Present=0;
-               //Search the reference (AND Ref/PageNo) in the array
-               for ($i=0;$i<count($this->Reference);$i++){
-                       if ($this->Reference[$i]['t']==$v['t']){
-                               $Present=1;
-                               if (!in_array($p2,$this->Reference[$i]['p'])) {
-                                       $this->Reference[$i]['p'][] = $p2;
-                               }
-                       }
-               }
-               //If not found, add it
-               if ($Present==0) {
-                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2));
-               }
-          }
-/*-- END INDEX --*/
-
-/*-- TOC --*/
-          // Adjust ToC
-          foreach($this->_kttoc AS $v) {
-               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$p2,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
-               $this->links[$v['link']][0] = $p2;
-               $this->links[$v['link']][1] += $yadj[$v['p']];
-          }
-/*-- END TOC --*/
-
-          $this->y = $top[$p2] + $height[$p1] + $height[$p2];
-          $this->x = $this->lMargin;
-
-          $this->divbuffer = array();
-          $this->ktLinks = array();
-          $this->ktAnnots = array();
-          $this->ktForms = array();
-          $this->ktBlock = array();
-          $this->ktReference = array();
-          $this->ktBMoutlines = array();
-          $this->_kttoc = array();
-          $this->keep_block_together = 0;
-       }
-}
-
-
-//==================================================================
-// Added ELLIPSES and CIRCLES
-function Circle($x,$y,$r,$style='S') {
-       $this->Ellipse($x,$y,$r,$r,$style);
-}
-
-function Ellipse($x,$y,$rx,$ry,$style='S') {
-       if($style=='F') { $op='f'; }
-       elseif($style=='FD' or $style=='DF') { $op='B'; }
-       else { $op='S'; }
-       $lx=4/3*(M_SQRT2-1)*$rx;
-       $ly=4/3*(M_SQRT2-1)*$ry;
-       $h=$this->h;
-       $this->_out(sprintf('%.3F %.3F m %.3F %.3F %.3F %.3F %.3F %.3F c', ($x+$rx)*_MPDFK,($h-$y)*_MPDFK, ($x+$rx)*_MPDFK,($h-($y-$ly))*_MPDFK, ($x+$lx)*_MPDFK,($h-($y-$ry))*_MPDFK, $x*_MPDFK,($h-($y-$ry))*_MPDFK));
-       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x-$lx)*_MPDFK,($h-($y-$ry))*_MPDFK,    ($x-$rx)*_MPDFK,($h-($y-$ly))*_MPDFK,   ($x-$rx)*_MPDFK,($h-$y)*_MPDFK)); 
-       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x-$rx)*_MPDFK,($h-($y+$ly))*_MPDFK, ($x-$lx)*_MPDFK,($h-($y+$ry))*_MPDFK, $x*_MPDFK,($h-($y+$ry))*_MPDFK)); 
-       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c %s', ($x+$lx)*_MPDFK,($h-($y+$ry))*_MPDFK, ($x+$rx)*_MPDFK,($h-($y+$ly))*_MPDFK, ($x+$rx)*_MPDFK,($h-$y)*_MPDFK, $op));
-}
-
-/*-- DIRECTW --*/
-// Added adaptation of shaded_box = AUTOSIZE-TEXT
-function AutosizeText($text,$w,$font,$style,$szfont=72) {
-       $text = $this->purify_utf8_text($text);
-       if ($this->text_input_as_HTML) {
-               $text = $this->all_entities_to_utf8($text);
-       }
-       if ($this->usingCoreFont) { $text = mb_convert_encoding($text,$this->mb_enc,'UTF-8'); }
-       $text = ' '.$text.' ';
-       $width = $this->ConvertSize($w);
-       $loop   = 0;
-       while ( $loop == 0 ) {
-               $this->SetFont($font,$style,$szfont);
-               $sz = $this->GetStringWidth( $text );
-               if ( $sz > $w ) { $szfont --; }
-               else { $loop ++; }
-       }
-       $this->SetFont($font,$style,$szfont);
-       $this->Cell($w, 0, $text, 0, 0, "C");
-}
-/*-- END DIRECTW --*/
-
-
-
-
-
-// ====================================================
-// ====================================================
-/*-- RTL --*/
-function reverse_letters($str) {
-       $str = strtr($str, '{}[]()', '}{][)(');
-       return $this->mb_strrev($str, $this->mb_enc); 
-}
-
-// mPDF 5.7+
-function reverse_letters_preg_callback($matches) {
-       return $this->reverse_letters($matches[1]);
-}
-
-function magic_reverse_dir(&$chunk, $join=true, $dir) { 
-   if ($this->usingCoreFont) { return 0; }
-   if ($this->biDirectional)  {
-       // mPDF 5.4.05 Include PUA for non-indexed Arabic glyphs
-       $pregRTLchars = $this->pregRTLchars;
-       if ($this->CurrentFont['unAGlyphs']) { $pregRTLchars .= "\x{F500}-\x{F7FF}"; }
-
-       // Change Arabic + Persian. to Presentation Forms
-       if ($join) {
-               $chunk = preg_replace_callback("/([".$pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $chunk );     // mPDF 5.7+
-       }
-       $contains_rtl = false;
-       $all_rtl = true;
-       $initSpace = false; 
-       $endSpace = false; 
-       $nonDirchars = "\x{A0}\"\'\(\)\{\}\[\].,:\\/-=";        // mPDF 5.6.32
-       // mPDF 5.6.43
-       $bdo=array();
-       preg_match_all('/([\x{202A}\x{202B}])(.*?)([\x{202C}])/u',$chunk,$m);
-       if (count($m[0])) {
-               for($i=0;$i<count($m[0]);$i++) {
-                       if ($m[1][$i]=="\xe2\x80\xab") {        // Right-to-Left Embedding [RLE] U+202B &#8235; 
-                               $mark = code2utf(0xf800+$i);
-                               $bdo[$i] = $this->reverse_letters($m[2][$i]);
-                       }
-                       else if ($m[1][$i]=="\xe2\x80\xaa") {   // Left-to-Right Embedding [LRE] U+202A &#8234;
-                               $mark = code2utf(0xf880+$i);
-                               $bdo[$i] = $m[2][$i];
-                       }
-                       $chunk = preg_replace('/'.preg_quote($m[0][$i],'/').'/u',$mark,$chunk);
-               }
-               $pregRTLchars .= "\x{F800}-\x{F87F}";
-       }
-       if (preg_match("/[".$pregRTLchars."]/u",$chunk)) {      // Chunk contains RTL characters
-               if (preg_match("/^[ ]/",$chunk)) { $initSpace = true; $chunk = preg_replace("/^[ ]/",'',$chunk); }
-               if (preg_match("/[ ]$/",$chunk)) { $endSpace = true; $chunk = preg_replace("/[ ]$/",'',$chunk); }
-
-               if (preg_match("/[^".$pregRTLchars.$nonDirchars." ]/u",$chunk)) {       // Chunk also contains LTR characters
-                       $all_rtl = false;
-                       if ($dir == 'rtl') {
-                               $chunk = preg_replace("/([^".$pregRTLchars.$nonDirchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[^".$pregRTLchars.$nonDirchars."])/u","\\1\x07\\2",$chunk);
-                       }
-                       $chunk = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$chunk);
-                       $bits = explode(' ',$chunk);
-                       foreach($bits AS $bitkey=>$bit) {
-                               $bit = preg_replace("/\x07/"," ",$bit);
-                               if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$bit)) {
-                                       $bits[$bitkey] = $this->reverse_letters($bit); 
-                               }
-                               else if (preg_match("/[".$pregRTLchars."]/u",$bit)) {
-                                       if ($dir == 'rtl') {
-                                               $bit = preg_replace("/([^".$pregRTLchars.$nonDirchars." ])([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$bit );
-                                               $bit = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*)([^".$pregRTLchars.$nonDirchars." ])/u","\\1\x07\\2",$bit );
-                                       }
-                                       else {
-                                               $bit = preg_replace("/([^".$pregRTLchars." ][".$nonDirchars."]*)([".$pregRTLchars." ])/u","\\1\x07\\2",$bit );
-                                               $bit = preg_replace("/([".$pregRTLchars." ])([".$nonDirchars."]*[^".$pregRTLchars." ])/u","\\1\x07\\2",$bit );
-                                       }
-                                       $sbits = explode("\x07",$bit );
-                                       foreach($sbits AS $sbitkey=>$sbit) {
-                                               $sbit = preg_replace("/\x07/","",$sbit);
-                                               if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$sbit)) {
-                                                       $sbits[$sbitkey] = $this->reverse_letters($sbit); 
-                                               }
-                                               else if (preg_match("/[".$pregRTLchars."]/u",$sbit) && $dir=='rtl') {
-                                                       $sbits[$sbitkey] = $this->reverse_letters($sbit); 
-                                               }
-                                               else { 
-                                                       // Reverse numerals only to RTL
-                                                       $sbit = preg_replace_callback("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/u", array($this, 'reverse_letters_preg_callback'), $sbit );       // mPDF 5.7+
-                                                       $sbits[$sbitkey] = $sbit; 
-                                               }
-                                       }
-                                       if ($dir == 'rtl') { $sbits = array_reverse($sbits,false); }
-                                       $bits[$bitkey] = implode('',$sbits); 
-                               }
-                               else if (preg_match("/[".$pregRTLchars."]/u",$bit) && $dir=='rtl') {
-                                       $bits[$bitkey] = $this->reverse_letters($bit); 
-                               }
-                               else { 
-                                       // Reverse numerals only to RTL
-                                       $bit = preg_replace_callback("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/u", array($this, 'reverse_letters_preg_callback'), $bit ); // mPDF 5.7+
-                                       $bits[$bitkey] = $bit; 
-                               }
-                       }
-                       if ($dir == 'rtl') { $bits = array_reverse($bits,false); }
-                       $chunk = implode(' ',$bits);
-               }
-               else { $chunk = $this->reverse_letters($chunk); }
-               $contains_rtl = true;
-
-               // Un-Reverse numerals back to ltr
-               $chunk = preg_replace_callback("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/u", array($this, 'reverse_letters_preg_callback'), $chunk );     // mPDF 5.7+
-               if ($dir == 'rtl') {
-                       if ($endSpace) { $chunk = ' '.$chunk; }
-                       if ($initSpace) { $chunk .= ' '; }
-               }
-               else {
-                       if ($initSpace) { $chunk = ' '.$chunk; }
-                       if ($endSpace) { $chunk .= ' '; }
-               }
-       }
-       else { $all_rtl = false; }
-
-       // mPDF 5.6.43
-       if (count($bdo)) {
-               for($i=0;$i<count($bdo);$i++) {
-                       $chunk = preg_replace('/[\x{'.dechex(intval(0xf800+$i)).'}\x{'.dechex(intval(0xf880+$i)).'}]/u',$bdo[$i],$chunk);
-               }
-       }
-
-       if ($all_rtl) { return 2; }
-       else if ($contains_rtl) { return 1; }
-       else { return 0; }
-   }
-   return 0;
-}
-/*-- END RTL --*/
-
-// 
-// ****************************
-// ****************************
-
-
-function SetSubstitutions() {
-       $subsarray = array();
-       @include(_MPDF_PATH.'includes/subs_win-1252.php');
-       $this->substitute = array();
-       foreach($subsarray AS $key => $val) {
-               $this->substitute[code2utf($key)] = $val;
-       }
-}
-
-
-function SubstituteChars($html) {
-       // only substitute characters between tags
-       if (count($this->substitute)) {
-               $a=preg_split('/(<.*?>)/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
-               $html = '';
-               foreach($a as $i => $e) {
-                       if($i%2==0) {
-                          $e = strtr($e, $this->substitute);
-                       }
-                       $html .= $e;
-               }
-       }
-       return $html;
-}
-
-
-function SubstituteCharsSIP(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
-       if (preg_match("/^(.*?)([\x{20000}-\x{2FFFF}]+)(.*)/u", $writehtml_e, $m)) { 
-          if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) {
-               $font = $this->CurrentFont['sipext']; 
-               if (!in_array($font, $this->available_unifonts)) { return 0; }
-               $writehtml_a[$writehtml_i] = $writehtml_e = $m[1];
-               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
-               $this->subPos = $writehtml_i;
-               return 4;
-          }
-       }
-       return 0; 
-}
-
-// If core font is selected in document which is not onlyCoreFonts - substitute with non-core font
-function SubstituteCharsNonCore(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
-       if (mb_convert_encoding(mb_convert_encoding($writehtml_e, $this->mb_enc, "UTF-8"), "UTF-8", $this->mb_enc) == $writehtml_e) {
-               return 0;
-       }
-       $cw = &$this->CurrentFont['cw'];
-       $unicode = $this->UTF8StringToArray($writehtml_e, false);
-       $start = -1;
-       $end = 0;
-       $flag = 0;
-       $ftype = '';
-       $u = array();
-       if (!$this->subArrMB) { 
-               include(_MPDF_PATH.'includes/subs_core.php'); 
-               $this->subArrMB['a'] = $aarr;
-               $this->subArrMB['s'] = $sarr;
-               $this->subArrMB['z'] = $zarr;
-       }
-       foreach($unicode AS $c => $char) {
-               if (($char> 127 || ($flag==1 && $char==32)) && $char != 173 && (!isset($this->subArrMB['a'][$char]) || ($flag==1 && $char==32)) && ($char<1536 ||  ($char>1791 && $char < 2304) || $char>3455)) { 
-                       if ($flag==0) { $start=$c; }
-                       $flag=1; 
-                       $u[] = $char;
-               }
-               else if ($flag>0) { $end=$c-1; break; }
-       }
-       if ($flag>0 && !$end) { $end=count($unicode)-1; }
-       if ($start==-1) { return 0; }
-       // TRY IN BACKUP SUBS FONT
-       if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); }
-       foreach($this->backupSubsFont AS $bsfctr=>$bsf) {
-               if ($this->fonttrans[$bsf] == 'chelvetica' || $this->fonttrans[$bsf] == 'ctimes' || $this->fonttrans[$bsf] == 'ccourier') { continue; }
-               $font = $bsf; 
-               unset($cw);
-               $cw = '';
-               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
-               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
-               else {
-
-                       $prevFontFamily = $this->FontFamily;
-                       $prevFontStyle = $this->currentfontstyle;
-                       $prevFontSizePt = $this->FontSizePt;
-                       $this->SetFont($bsf, '', '', false);
-                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
-                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
-               }
-               if (!$cw) { continue; }
-               $l = 0;
-               foreach($u AS $char) {
-                       if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) {
-                               $l++;
-                       }
-                       else {
-                               if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) {     // Not found even in last backup font
-                                       $cont = mb_substr($writehtml_e, $start+1);
-                                       $writehtml_e = mb_substr($writehtml_e, 0, $start+1, 'UTF-8');
-                                       array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont));
-                                       $this->subPos = $writehtml_i+1;
-                                       return 2;
-                               }
-                               else { break; }
-                       }
-               }
-               if ($l > 0) {
-                       $patt = mb_substr($writehtml_e, $start, $l, 'UTF-8');
-                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
-                               $writehtml_e = $m[1];
-                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
-                               $this->subPos = $writehtml_i+3;
-                               return 4;
-                       }
-               }
-       }
-
-       unset($cw); 
-       return 0;
-}
-
-
-function SubstituteCharsMB(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
-       $cw = &$this->CurrentFont['cw'];
-       $unicode = $this->UTF8StringToArray($writehtml_e, false);
-       $start = -1;
-       $end = 0;
-       $flag = 0;
-       $ftype = '';
-       $u = array();
-       foreach($unicode AS $c => $char) {
-               if (($flag == 0 || $flag==2) && (!$this->_charDefined($cw,$char) || ($flag==2 && $char==32)) && $this->checkSIP && $char > 131071) {    // Unicode Plane 2 (SIP)
-                       if (in_array($this->FontFamily ,$this->available_CJK_fonts)) { return 0; }
-                       if ($flag==0) { $start=$c; }
-                       $flag=2; 
-                       $u[] = $char;
-               }
-               //else if (($flag == 0 || $flag==1) && $char != 173 && !$this->_charDefined($cw,$char) && ($char<1423 ||  ($char>3583 && $char < 11263))) { 
-               else if (($flag == 0 || $flag==1) && $char != 173 && (!$this->_charDefined($cw,$char) || ($flag==1 && $char==32)) && ($char<1536 ||  ($char>1791 && $char < 2304) || $char>3455)) { 
-                       if ($flag==0) { $start=$c; }
-                       $flag=1; 
-                       $u[] = $char;
-               }
-               else if ($flag>0) { $end=$c-1; break; }
-       }
-       if ($flag>0 && !$end) { $end=count($unicode)-1; }
-       if ($start==-1) { return 0; }
-       if ($flag == 2) {       // SIP
-               // Check if current CJK font has a ext-B related font
-          if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) {
-               $font = $this->CurrentFont['sipext']; 
-               unset($cw);
-               $cw = '';
-               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
-               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
-               else {
-                       $prevFontFamily = $this->FontFamily;
-                       $prevFontStyle = $this->currentfontstyle;
-                       $prevFontSizePt = $this->FontSizePt;
-                       $this->SetFont($font, '', '', false);
-                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
-                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
-               }
-               if (!$cw) { return 0; }
-               $l = 0;
-               foreach($u AS $char) {
-                       if ($this->_charDefined($cw,$char) || $char > 131071) {
-                               $l++;
-                       }
-                       else { break; }
-               }
-               if ($l > 0) {
-                       $patt = mb_substr($writehtml_e, $start, $l);
-                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
-                               $writehtml_e = $m[1];
-                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
-                               $this->subPos = $writehtml_i+3;
-                               return 4;
-                       }
-               }
-          }
-               // Check Backup SIP font (defined in config_fonts.php)
-          if (isset($this->backupSIPFont) && $this->backupSIPFont) {
-               if ($this->currentfontfamily != $this->backupSIPFont) { $font = $this->backupSIPFont; }
-               else { unset($cw); return 0; }
-               unset($cw);
-               $cw = '';
-               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
-               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
-               else {
-                       $prevFontFamily = $this->FontFamily;
-                       $prevFontStyle = $this->currentfontstyle;
-                       $prevFontSizePt = $this->FontSizePt;
-                       $this->SetFont($this->backupSIPFont, '', '', false);
-                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
-                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
-               }
-               if (!$cw) { return 0; }
-               $l = 0;
-               foreach($u AS $char) {
-                       if ($this->_charDefined($cw,$char) || $char > 131071) {
-                               $l++;
-                       }
-                       else { break; }
-               }
-               if ($l > 0) {
-                       $patt = mb_substr($writehtml_e, $start, $l);
-                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
-                               $writehtml_e = $m[1];
-                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
-                               $this->subPos = $writehtml_i+3;
-                               return 4;
-                       }
-               }
-          }
-          return 0; 
-       }
-
-
-       // FIRST TRY CORE FONTS
-       if (!$this->PDFA && !$this->PDFX) { 
-         $repl = array();
-         if (!$this->subArrMB) { 
-               include(_MPDF_PATH.'includes/subs_core.php'); 
-               $this->subArrMB['a'] = $aarr;
-               $this->subArrMB['s'] = $sarr;
-               $this->subArrMB['z'] = $zarr;
-         }
-         if (isset($this->subArrMB['a'][$u[0]])) { 
-               $font = 'tta'; $ftype = 'C'; 
-               foreach($u AS $char) {
-                       if ($this->subArrMB['a'][$char]) { $repl[] = $this->subArrMB['a'][$char]; }
-                       else { break; }
-               }
-         }
-         else if (isset($this->subArrMB['z'][$u[0]])) { 
-               $font = 'ttz'; $ftype = 'C'; 
-               foreach($u AS $char) {
-                       if ($this->subArrMB['z'][$char]) { $repl[] = $this->subArrMB['z'][$char]; }
-                       else { break; }
-               }
-         }
-         else if (isset($this->subArrMB['s'][$u[0]])) { 
-               $font = 'tts'; $ftype = 'C'; 
-               foreach($u AS $char) {
-                       if ($this->subArrMB['s'][$char]) { $repl[] = $this->subArrMB['s'][$char]; }
-                       else { break; }
-               }
-         }
-         if ($ftype=='C') {
-               $patt = mb_substr($writehtml_e, $start, count($repl));
-               if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
-                       $writehtml_e = $m[1];
-                       array_splice($writehtml_a, $writehtml_i+1, 0, array($font, implode('|', $repl), '/'.$font, $m[3]));     // e.g. <tts>
-                       $this->subPos = $writehtml_i+3;
-                       return 4;
-               }
-               return 0;
-         }
-       }
-
-       // FIND IN DEFAULT FONT - removed mPDF 5.0
-
-       // LASTLY TRY IN BACKUP SUBS FONT
-       if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); }
-       foreach($this->backupSubsFont AS $bsfctr=>$bsf) {
-               if ($this->currentfontfamily != $bsf) { $font = $bsf; }
-               else { continue; }
-               unset($cw);
-               $cw = '';
-               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
-               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
-               else {
-                       $prevFontFamily = $this->FontFamily;
-                       $prevFontStyle = $this->currentfontstyle;
-                       $prevFontSizePt = $this->FontSizePt;
-                       $this->SetFont($bsf, '', '', false);
-                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
-                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
-               }
-               if (!$cw) { continue; }
-               $l = 0;
-               foreach($u AS $char) {
-                       if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) {      // Arabic and Indic 
-                               $l++;
-                       }
-                       else {
-                               if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) {     // Not found even in last backup font
-                                       $cont = mb_substr($writehtml_e, $start+1);
-                                       $writehtml_e = mb_substr($writehtml_e, 0, $start+1);
-                                       array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont));
-                                       $this->subPos = $writehtml_i+1;
-                                       return 2;
-                               }
-                               else { break; }
-                       }
-               }
-               if ($l > 0) {
-                       $patt = mb_substr($writehtml_e, $start, $l);
-                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
-                               $writehtml_e = $m[1];
-                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
-                               $this->subPos = $writehtml_i+3;
-                               return 4;
-                       }
-               }
-       }
-
-       unset($cw); 
-       return 0;
-}
-
-
-function setHiEntitySubstitutions() {
-       $entarr = array (
-  'nbsp' => '160',  'iexcl' => '161',  'cent' => '162',  'pound' => '163',  'curren' => '164',  'yen' => '165',  'brvbar' => '166',  'sect' => '167',
-  'uml' => '168',  'copy' => '169',  'ordf' => '170',  'laquo' => '171',  'not' => '172',  'shy' => '173',  'reg' => '174',  'macr' => '175',
-  'deg' => '176',  'plusmn' => '177',  'sup2' => '178',  'sup3' => '179',  'acute' => '180',  'micro' => '181',  'para' => '182',  'middot' => '183',
-  'cedil' => '184',  'sup1' => '185',  'ordm' => '186',  'raquo' => '187',  'frac14' => '188',  'frac12' => '189',  'frac34' => '190',
-  'iquest' => '191',  'Agrave' => '192',  'Aacute' => '193',  'Acirc' => '194',  'Atilde' => '195',  'Auml' => '196',  'Aring' => '197',
-  'AElig' => '198',  'Ccedil' => '199',  'Egrave' => '200',  'Eacute' => '201',  'Ecirc' => '202',  'Euml' => '203',  'Igrave' => '204',
-  'Iacute' => '205',  'Icirc' => '206',  'Iuml' => '207',  'ETH' => '208',  'Ntilde' => '209',  'Ograve' => '210',  'Oacute' => '211',
-  'Ocirc' => '212',  'Otilde' => '213',  'Ouml' => '214',  'times' => '215',  'Oslash' => '216',  'Ugrave' => '217',  'Uacute' => '218',
-  'Ucirc' => '219',  'Uuml' => '220',  'Yacute' => '221',  'THORN' => '222',  'szlig' => '223',  'agrave' => '224',  'aacute' => '225',
-  'acirc' => '226',  'atilde' => '227',  'auml' => '228',  'aring' => '229',  'aelig' => '230',  'ccedil' => '231',  'egrave' => '232',
-  'eacute' => '233',  'ecirc' => '234',  'euml' => '235',  'igrave' => '236',  'iacute' => '237',  'icirc' => '238',  'iuml' => '239',
-  'eth' => '240',  'ntilde' => '241',  'ograve' => '242',  'oacute' => '243',  'ocirc' => '244',  'otilde' => '245',  'ouml' => '246',
-  'divide' => '247',  'oslash' => '248',  'ugrave' => '249',  'uacute' => '250',  'ucirc' => '251',  'uuml' => '252',  'yacute' => '253',
-  'thorn' => '254',  'yuml' => '255',  'OElig' => '338',  'oelig' => '339',  'Scaron' => '352',  'scaron' => '353',  'Yuml' => '376',
-  'fnof' => '402',  'circ' => '710',  'tilde' => '732',  'Alpha' => '913',  'Beta' => '914',  'Gamma' => '915',  'Delta' => '916',
-  'Epsilon' => '917',  'Zeta' => '918',  'Eta' => '919',  'Theta' => '920',  'Iota' => '921',  'Kappa' => '922',  'Lambda' => '923',
-  'Mu' => '924',  'Nu' => '925',  'Xi' => '926',  'Omicron' => '927',  'Pi' => '928',  'Rho' => '929',  'Sigma' => '931',  'Tau' => '932',
-  'Upsilon' => '933',  'Phi' => '934',  'Chi' => '935',  'Psi' => '936',  'Omega' => '937',  'alpha' => '945',  'beta' => '946',  'gamma' => '947',
-  'delta' => '948',  'epsilon' => '949',  'zeta' => '950',  'eta' => '951',  'theta' => '952',  'iota' => '953',  'kappa' => '954',
-  'lambda' => '955',  'mu' => '956',  'nu' => '957',  'xi' => '958',  'omicron' => '959',  'pi' => '960',  'rho' => '961',  'sigmaf' => '962',
-  'sigma' => '963',  'tau' => '964',  'upsilon' => '965',  'phi' => '966',  'chi' => '967',  'psi' => '968',  'omega' => '969',
-  'thetasym' => '977',  'upsih' => '978',  'piv' => '982',  'ensp' => '8194',  'emsp' => '8195',  'thinsp' => '8201',  'zwnj' => '8204',
-  'zwj' => '8205',  'lrm' => '8206',  'rlm' => '8207',  'ndash' => '8211',  'mdash' => '8212',  'lsquo' => '8216',  'rsquo' => '8217',
-  'sbquo' => '8218',  'ldquo' => '8220',  'rdquo' => '8221',  'bdquo' => '8222',  'dagger' => '8224',  'Dagger' => '8225',  'bull' => '8226',
-  'hellip' => '8230',  'permil' => '8240',  'prime' => '8242',  'Prime' => '8243',  'lsaquo' => '8249',  'rsaquo' => '8250',  'oline' => '8254',
-  'frasl' => '8260',  'euro' => '8364',  'image' => '8465',  'weierp' => '8472',  'real' => '8476',  'trade' => '8482',  'alefsym' => '8501',
-  'larr' => '8592',  'uarr' => '8593',  'rarr' => '8594',  'darr' => '8595',  'harr' => '8596',  'crarr' => '8629',  'lArr' => '8656',
-  'uArr' => '8657',  'rArr' => '8658',  'dArr' => '8659',  'hArr' => '8660',  'forall' => '8704',  'part' => '8706',  'exist' => '8707',
-  'empty' => '8709',  'nabla' => '8711',  'isin' => '8712',  'notin' => '8713',  'ni' => '8715',  'prod' => '8719',  'sum' => '8721',
-  'minus' => '8722',  'lowast' => '8727',  'radic' => '8730',  'prop' => '8733',  'infin' => '8734',  'ang' => '8736',  'and' => '8743',
-  'or' => '8744',  'cap' => '8745',  'cup' => '8746',  'int' => '8747',  'there4' => '8756',  'sim' => '8764',  'cong' => '8773',
-  'asymp' => '8776',  'ne' => '8800',  'equiv' => '8801',  'le' => '8804',  'ge' => '8805',  'sub' => '8834',  'sup' => '8835',  'nsub' => '8836',
-  'sube' => '8838',  'supe' => '8839',  'oplus' => '8853',  'otimes' => '8855',  'perp' => '8869',  'sdot' => '8901',  'lceil' => '8968',
-  'rceil' => '8969',  'lfloor' => '8970',  'rfloor' => '8971',  'lang' => '9001',  'rang' => '9002',  'loz' => '9674',  'spades' => '9824',
-  'clubs' => '9827',  'hearts' => '9829',  'diams' => '9830',
- );
-       foreach($entarr AS $key => $val) {
-               $this->entsearch[] = '&'.$key.';';
-               $this->entsubstitute[] = code2utf($val);
-       }
-}
-
-function SubstituteHiEntities($html) {
-       // converts html_entities > ASCII 127 to unicode
-       // Leaves in particular &lt; to distinguish from tag marker
-       if (count($this->entsearch)) {
-               $html = str_replace($this->entsearch,$this->entsubstitute,$html);
-       }
-       return $html;
-}
-
-
-// Edited v1.2 Pass by reference; option to continue if invalid UTF-8 chars
-function is_utf8(&$string) {
-       if ($string === mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {
-               return true;
-       } 
-       else {
-         if ($this->ignore_invalid_utf8) {
-               $string = mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") ;
-               return true;
-         }
-         else {
-               return false;
-         }
-       }
-} 
-
-
-function purify_utf8($html,$lo=true) {
-       // For HTML
-       // Checks string is valid UTF-8 encoded
-       // converts html_entities > ASCII 127 to UTF-8
-       // Only exception - leaves low ASCII entities e.g. &lt; &amp; etc.
-       // Leaves in particular &lt; to distinguish from tag marker
-       if (!$this->is_utf8($html)) { 
-               echo "<p><b>HTML contains invalid UTF-8 character(s)</b></p>"; 
-               while (mb_convert_encoding(mb_convert_encoding($html, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") != $html) {
-                       $a = iconv('UTF-8', 'UTF-8', $html);
-                       echo ($a);
-                       $pos = $start = strlen($a);
-                       $err = '';
-                       while ( ord(substr($html,$pos,1)) > 128 ) {
-                               $err .= '[[#'.ord(substr($html,$pos,1)).']]';
-                               $pos++;
-                       }
-                       echo '<span style="color:red; font-weight:bold">'.$err.'</span>';
-                       $html = substr($html, $pos);
-               }
-               echo $html;
-               $this->Error(""); 
-       }
-       $html = preg_replace("/\r/", "", $html );
-
-       // converts html_entities > ASCII 127 to UTF-8 
-       // Leaves in particular &lt; to distinguish from tag marker
-       $html = $this->SubstituteHiEntities($html);
-
-       // converts all &#nnn; or &#xHHH; to UTF-8 multibyte
-       // If $lo==true then includes ASCII < 128
-       $html = strcode2utf($html,$lo);
-       return ($html);
-}
-
-function purify_utf8_text($txt) {
-       // For TEXT
-       // Make sure UTF-8 string of characters
-       if (!$this->is_utf8($txt)) { $this->Error("Text contains invalid UTF-8 character(s)"); }
-
-       $txt = preg_replace("/\r/", "", $txt );
-
-       return ($txt);
-}
-function all_entities_to_utf8($txt) {
-       // converts txt_entities > ASCII 127 to UTF-8 
-       // Leaves in particular &lt; to distinguish from tag marker
-       $txt = $this->SubstituteHiEntities($txt);
-
-       // converts all &#nnn; or &#xHHH; to UTF-8 multibyte
-       $txt = strcode2utf($txt);
-
-       $txt = $this->lesser_entity_decode($txt);
-       return ($txt);
-}
-
-
-// ====================================================
-/*-- BARCODES --*/
-// UPC/EAN barcode
-// EAN13, EAN8, UPCA, UPCE, ISBN, ISSN
-// Accepts 12 or 13 digits with or without - hyphens
-function WriteBarcode($code, $showtext=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2, $height=1, $bgcol=false, $col=false, $btype='ISBN', $supplement='0', $supplement_code='', $k=1) {
-                       if (empty($code)) {
-                               return;
-                       }
-                       $codestr = $code;
-                       $code = preg_replace('/\-/','',$code);
-
-                       if (!class_exists('PDFBarcode', false)) { 
-                               include(_MPDF_PATH.'classes/barcode.php'); 
-                       }
-                       $this->barcode = new PDFBarcode();
-                       if ($btype == 'ISSN' || $btype == 'ISBN') {
-                               $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13');
-                       }
-                       else { $arrcode = $this->barcode->getBarcodeArray($code, $btype); }
-
-                       if ($arrcode === false) { $this->Error('Error in barcode string: '.$codestr); }
-                       if((($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') && strlen($code) == 12) || ($btype=='UPCA' && strlen($code) == 11)
-                               || ($btype=='UPCE' && strlen($code) == 11) || ($btype=='EAN8' && strlen($code) == 7)) {
-                               $code .= $arrcode['checkdigit'];
-                               if (stristr($codestr,'-')) { $codestr .= '-' . $arrcode['checkdigit']; }
-                               else { $codestr .= $arrcode['checkdigit']; }
-                       }
-                       if ($btype == 'ISBN') { $codestr = 'ISBN '.$codestr; }
-                       if ($btype == 'ISSN') { $codestr = 'ISSN '.$codestr; }
-
-                       if (empty($x)) {
-                               $x = $this->x;
-                       }
-                       if (empty($y)) {
-                               $y = $this->y;
-                       }
-                       // set foreground color
-                       $prevDrawColor = $this->DrawColor;
-                       $prevTextColor = $this->TextColor;
-                       $prevFillColor = $this->FillColor;
-                       $lw = $this->LineWidth;
-                       $this->SetLineWidth(0.01);
-
-                       $size /= $k;    // in case resized in a table
-
-                       $xres = $arrcode['nom-X'] * $size;
-                       $llm = $arrcode['lightmL'] * $arrcode['nom-X'] * $size; // Left Light margin
-                       $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin
-
-                       $bcw = ($arrcode["maxw"] * $xres);      // Barcode width = Should always be 31.35mm * $size
-
-                       $fbw = $bcw + $llm + $rlm;      // Full barcode width incl. light margins
-                       $ow = $fbw + $paddingL + $paddingR;     // Full overall width incl. user-defined padding
-
-                       $fbwi = $fbw - 2;       // Full barcode width incl. light margins - 2mm - for isbn string
-
-                       // cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
-                       $num_height = 3 * $size;                                        // Height of numerals
-                       $fbh = $arrcode['nom-H'] * $size * $height;             // Full barcode height incl. numerals
-                       $bch = $fbh - (1.5 * $size);                                    // Barcode height of bars        (3mm for numerals)
-
-                       if (($btype=='EAN13' && $showtext) || $btype == 'ISSN' || $btype == 'ISBN') { // Add height for ISBN string + margin from top of bars
-                               $tisbnm = 1.5 * $size;  // Top margin between isbn (if shown) & bars
-                               $codestr_fontsize = 2.1 * $size;
-                               $paddingT += $codestr_fontsize + $tisbnm  ; 
-                       }
-                       $oh = $fbh + $paddingT + $paddingB;             // Full overall height incl. user-defined padding
-
-                       // PRINT border background color
-                       $xpos = $x;
-                       $ypos = $y;
-                       if ($col) {
-                               $this->SetDColor($col);
-                               $this->SetTColor($col); 
-                       }
-                       else {
-                               $this->SetDColor($this->ConvertColor(0));
-                               $this->SetTColor($this->ConvertColor(0));
-                       }
-                       if ($bgcol) {
-                               $this->SetFColor($bgcol);
-                       }
-                       else { $this->SetFColor($this->ConvertColor(255)); }
-                       if (!$bgcol && !$col) { // fn. called directly - not via HTML
-                               if ($border) { $fillb = 'DF'; } else { $fillb = 'F'; }
-                               $this->Rect($xpos, $ypos, $ow, $oh, $fillb);
-                       }
-
-
-                       // PRINT BARS
-                       $xpos = $x + $paddingL + $llm ;
-                       $ypos = $y + $paddingT;
-                       if ($col) { $this->SetFColor($col); }
-                       else { $this->SetFColor($this->ConvertColor(0)); }
-                       if ($arrcode !== false) {
-                               foreach ($arrcode["bcode"] AS $v) {
-                                       $bw = ($v["w"] * $xres);
-                                       if ($v["t"]) {
-                                               // draw a vertical bar
-                                               $this->Rect($xpos, $ypos, $bw, $bch, 'F');
-                                       }
-                                       $xpos += $bw;
-                               }
-                       }
-
-
-                       // print text
-                       $prevFontFamily = $this->FontFamily;
-                       $prevFontStyle = $this->FontStyle;
-                       $prevFontSizePt = $this->FontSizePt;
-
-                       // ISBN string
-                       if (($btype=='EAN13' && $showtext) || $btype=='ISBN' || $btype=='ISSN') {
-                          if ($this->onlyCoreFonts) {
-                               $this->SetFont('chelvetica');
-                          }
-                          else {
-                               $this->SetFont('sans');
-                          }
-                          
-                          if ($bgcol) { $this->SetFColor($bgcol); }
-                          else { $this->SetFColor($this->ConvertColor(255)); }
-                          $this->x = $x + $paddingL + 1;       // 1mm left margin (cf. $fbwi above)
-                          // max width is $fbwi 
-                          $loop = 0;
-                          while ( $loop == 0 ) {
-                               $this->SetFontSize($codestr_fontsize*1.4*_MPDFK, false);        // don't write
-                               $sz = $this->GetStringWidth( $codestr );
-                               if ($sz > $fbwi)
-                                       $codestr_fontsize -= 0.1;
-                               else
-                                       $loop ++;
-                          }
-                          $this->SetFont('','',$codestr_fontsize*1.4*_MPDFK, true, true);      // * 1.4 because font height is only 7/10 of given mm
-                          // WORD SPACING
-                          if ($fbwi > $sz) {
-                               $xtra =  $fbwi - $sz;
-                               $charspacing = $xtra / (strlen($codestr)-1);
-                               if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); }
-                          }
-                          $this->y = $y + $paddingT - ($codestr_fontsize ) - $tisbnm ; 
-                          $this->Cell($fbw , $codestr_fontsize, $codestr);
-                          if ($charspacing) { $this->_out('BT 0 Tc ET'); }
-                       }
-
-
-                       // Bottom NUMERALS
-                       if ($this->onlyCoreFonts) {
-                               $this->SetFont('mono'); 
-                       }
-                       else {
-                               if (in_array('ocrb',$this->available_unifonts)) { $this->SetFont('ocrb'); }
-                               else { $this->SetFont('mono'); }
-                       }
-                       if (isset($this->CurrentFont['desc']['CapHeight'])) { $fh = (1000/$this->CurrentFont['desc']['CapHeight']); }
-                       else if (isset($this->CurrentFont['desc']['Ascent'])) { $fh = (1000/$this->CurrentFont['desc']['Ascent']); }
-                       else { $fh = 1.2; }
-
-                       $charRO = '';
-                       if ($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') {
-                               $outerfontsize = 3;     // Inner fontsize = 3
-                               $outerp = $xres * 4;
-                               $innerp = $xres * 2.5;
-                               $textw = ($bcw*0.5) - $outerp - $innerp;
-                               $chars = 6; // number of numerals in each half
-                               $charLO = substr($code,0,1); // Left Outer
-                               $charLI = substr($code,1,6); // Left Inner
-                               $charRI = substr($code,7,6); // Right Inner
-                               if (!$supplement) $charRO = '>'; // Right Outer
-                       }
-                       else if ($btype=='UPCA') {
-                               $outerfontsize = 2.3;   // Inner fontsize = 3
-                               $outerp = $xres * 10;
-                               $innerp = $xres * 2.5;
-                               $textw = ($bcw*0.5) - $outerp - $innerp;
-                               $chars = 5; 
-                               $charLO = substr($code,0,1); // Left Outer
-                               $charLI = substr($code,1,5); // Left Inner
-                               $charRI = substr($code,6,5); // Right Inner
-                               $charRO = substr($code,11,1); // Right Outer
-                       }
-                       else if ($btype=='UPCE') {
-                               $outerfontsize = 2.3;   // Inner fontsize = 3
-                               $outerp = $xres * 4;
-                               $innerp = 0;
-                               $textw = ($bcw*0.5) - $outerp - $innerp;
-                               $chars = 3; 
-                               $upce_code = $arrcode['code'];
-                               $charLO = substr($code,0,1); // Left Outer
-                               $charLI = substr($upce_code,0,3); // Left Inner
-                               $charRI = substr($upce_code,3,3); // Right Inner
-                               $charRO = substr($code,11,1); // Right Outer
-                       }
-                       else if ($btype=='EAN8') {
-                               $outerfontsize = 3;     // Inner fontsize = 3
-                               $outerp = $xres * 4;
-                               $innerp = $xres * 2.5;
-                               $textw = ($bcw*0.5) - $outerp - $innerp;
-                               $chars = 4; 
-                               $charLO = '<'; // Left Outer
-                               $charLI = substr($code,0,4); // Left Inner
-                               $charRI = substr($code,4,4); // Right Inner
-                               if (!$supplement) $charRO = '>'; // Right Outer
-                       }
-
-                       $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK);      // 3mm numerals (FontSize is larger to account for space above/below characters)
-
-                       if (!$this->usingCoreFont) { $cw = $this->_getCharWidth($this->CurrentFont['cw'],32)*3*$fh*$size/1000; }        // character width at 3mm
-                       else { $cw = $this->_getCharWidth($this->CurrentFont['cw'],48)*3*$fh*$size/1000; }              // 48 == char "0"
-
-                       // Outer left character
-                       $y_text = $y + $paddingT + $bch - ($num_height/2); 
-                       $y_text_outer = $y + $paddingT + $bch - ($num_height*($outerfontsize/3)/2); 
-
-                       $this->x = $x + $paddingL - ($cw*($outerfontsize/3)*0.1); // 0.1 is correction as char does not fill full width;
-                       $this->y = $y_text_outer; 
-                       $this->Cell($cw, $num_height, $charLO );
-
-                       // WORD SPACING for inner chars
-                       $xtra =  $textw - ($cw*$chars);
-                       $charspacing = $xtra / ($chars-1);
-                       if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); }
-
-                       if ($bgcol) { $this->SetFColor($bgcol); }       
-                       else { $this->SetFColor($this->ConvertColor(255)); }
-
-                       $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
-
-                       // Inner left half characters
-                       $this->x = $x + $paddingL + $llm + $outerp;
-                       $this->y = $y_text; 
-                       $this->Cell($textw, $num_height, $charLI , 0, 0, '', 1);
-
-                       // Inner right half characters
-                       $this->x = $x + $paddingL + $llm + ($bcw*0.5) + $innerp;
-                       $this->y = $y_text; 
-                       $this->Cell($textw, $num_height, $charRI , 0, 0, '', 1);
-
-                       if ($charspacing) { $this->_out('BT 0 Tc ET'); }
-
-                       // Outer Right character
-                       $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK);      // 3mm numerals (FontSize is larger to account for space above/below characters)
-
-                       $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*($outerfontsize/3)*0.9); // 0.9 is correction as char does not fill full width
-                       $this->y = $y_text_outer; 
-                       $this->Cell($cw*($outerfontsize/3), $num_height, $charRO , 0, 0, 'R');
-
-                       if ($supplement) { // EAN-2 or -5 Supplement
-                               // PRINT BARS
-                               $supparrcode = $this->barcode->getBarcodeArray($supplement_code, 'EAN'.$supplement);
-                               if ($supparrcode === false) { $this->Error('Error in barcode string (supplement): '.$codestr.' '.$supplement_code); }
-                               if(strlen($supplement_code) != $supplement) {
-                                       $this->Error('Barcode supplement incorrect: '.$supplement_code);
-                               }
-                               $llm = $fbw - (($arrcode['lightmR'] - $supparrcode['sepM'])  * $arrcode['nom-X'] * $size);      // Left Light margin
-                               $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin
-
-                               $bcw = ($supparrcode["maxw"] * $xres);  // Barcode width = Should always be 31.35mm * $size
-
-                               $fbw = $bcw + $llm + $rlm;      // Full barcode width incl. light margins
-                               $ow = $fbw + $paddingL + $paddingR;     // Full overall width incl. user-defined padding
-                               $bch = $fbh - (1.5 * $size) - ($num_height + 0.5);              // Barcode height of bars        (3mm for numerals)
-
-                               $xpos = $x + $paddingL + $llm ;
-                               $ypos = $y + $paddingT + $num_height + 0.5;
-                               if ($col) { $this->SetFColor($col); }
-                               else { $this->SetFColor($this->ConvertColor(0)); }
-                               if ($supparrcode !== false) {
-                                       foreach ($supparrcode["bcode"] AS $v) {
-                                               $bw = ($v["w"] * $xres);
-                                               if ($v["t"]) {
-                                                       // draw a vertical bar
-                                                       $this->Rect($xpos, $ypos, $bw, $bch, 'F');
-                                               }
-                                               $xpos += $bw;
-                                       }
-                               }
-
-                               // Characters
-                               if ($bgcol) { $this->SetFColor($bgcol); }
-                               else { $this->SetFColor($this->ConvertColor(255)); }
-                               $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
-                               $this->x = $x + $paddingL + $llm;
-                               $this->y = $y + $paddingT; 
-                               $this->Cell($bcw, $num_height, $supplement_code, 0, 0, 'C');
-
-                               // Outer Right character (light margin)
-                               $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK);      // 3mm numerals (FontSize is larger to account for space above/below characters)
-                               $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*0.9); // 0.9 is correction as char does not fill full width
-                               $this->y = $y + $paddingT; 
-                               $this->Cell($cw*($outerfontsize/3), $num_height, '>', 0, 0, 'R');
-                       }
-
-
-
-                       // Restore **************
-                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt);
-                       $this->DrawColor = $prevDrawColor;
-                       $this->TextColor = $prevTextColor;
-                       $this->FillColor = $prevFillColor;
-                       $this->SetLineWidth($lw);
-                       $this->SetY($y);
-}
-
-
-
-// ====================================================
-// POSTAL and OTHER barcodes
-function WriteBarcode2($code, $x='', $y='', $size=1, $height=1, $bgcol=false, $col=false, $btype='IMB', $print_ratio='', $k=1) {
-                       if (empty($code)) { return; }
-                       if (!class_exists('PDFBarcode', false)) { 
-                               include(_MPDF_PATH.'classes/barcode.php'); 
-                       }
-                       $this->barcode = new PDFBarcode();
-                       $arrcode = $this->barcode->getBarcodeArray($code, $btype, $print_ratio); 
-
-                       if ($arrcode === false) { $this->Error('Error in barcode string: '.$code); }
-                       if (empty($x)) { $x = $this->x; }
-                       if (empty($y)) { $y = $this->y; }
-                       $prevDrawColor = $this->DrawColor;
-                       $prevTextColor = $this->TextColor;
-                       $prevFillColor = $this->FillColor;
-                       $lw = $this->LineWidth;
-                       $this->SetLineWidth(0.01);
-                       $size /= $k;    // in case resized in a table
-                       $xres = $arrcode['nom-X'] * $size;
-
-                       if ($btype == 'IMB' || $btype == 'RM4SCC' || $btype == 'KIX' || $btype == 'POSTNET' || $btype == 'PLANET') {
-                               $llm = $arrcode['quietL'] / $k; // Left Quiet margin
-                               $rlm = $arrcode['quietR'] / $k; // Right Quiet margin
-                               $tlm = $blm = $arrcode['quietTB'] / $k;
-                               $height=1;              // Overrides
-                       }
-                       else if (in_array($btype, array('C128A','C128B','C128C','EAN128A','EAN128B','EAN128C','C39','C39+','C39E','C39E+','S25','S25+','I25','I25+','I25B','I25B+','C93','MSI','MSI+','CODABAR','CODE11'))) {
-                               $llm = $arrcode['lightmL'] * $xres;     // Left Quiet margin
-                               $rlm = $arrcode['lightmR'] * $xres;     // Right Quiet margin
-                               $tlm = $blm = $arrcode['lightTB'] * $xres * $height;
-                       }
-
-
-                       $bcw = ($arrcode["maxw"] * $xres);
-                       $fbw = $bcw + $llm + $rlm;              // Full barcode width incl. light margins
-
-                       $bch = ($arrcode["nom-H"] * $size * $height);
-                       $fbh = $bch + $tlm + $blm;              // Full barcode height
-
-                       // PRINT border background color
-                       $xpos = $x;
-                       $ypos = $y;
-                       if ($col) {
-                               $this->SetDColor($col); 
-                               $this->SetTColor($col); 
-                       }
-                       else {
-                               $this->SetDColor($this->ConvertColor(0));       
-                               $this->SetTColor($this->ConvertColor(0));       
-                       }
-                       if ($bgcol) {
-                               $this->SetFColor($bgcol);
-                       }
-                       else { $this->SetFColor($this->ConvertColor(255)); }    
-
-                       // PRINT BARS
-                       if ($col) { $this->SetFColor($col); }
-                       else { $this->SetFColor($this->ConvertColor(0)); }
-                       $xpos = $x + $llm ;
-
-                       if ($arrcode !== false) {
-                               foreach ($arrcode["bcode"] AS $v) {
-                                       $bw = ($v["w"] * $xres);
-                                       if ($v["t"]) {
-                                               $ypos = $y + $tlm + ($bch * $v['p'] / $arrcode['maxh']);
-                                               $this->Rect($xpos, $ypos, $bw, ($v['h'] * $bch / $arrcode['maxh']), 'F');
-                                       }
-                                       $xpos += $bw;
-                               }
-                       }
-
-                       // PRINT BEARER BARS
-                       if ($btype == 'I25B' || $btype == 'I25B+') {
-                               $this->Rect($x, $y, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F');
-                               $this->Rect($x, $y+$tlm+$bch, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F');
-                       } 
-
-                       // Restore **************
-                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt);
-                       $this->DrawColor = $prevDrawColor;
-                       $this->TextColor = $prevTextColor;
-                       $this->FillColor = $prevFillColor;
-                       $this->SetLineWidth($lw);
-                       $this->SetY($y);
-}
-
-/*-- END BARCODES --*/
-
-// ====================================================
-// ====================================================
-
-function StartTransform($returnstring=false) {
-         if ($returnstring) { return('q'); }
-         else { $this->_out('q'); }
-}
-function StopTransform($returnstring=false) {
-         if ($returnstring) { return('Q'); }
-         else { $this->_out('Q'); }
-}
-function transformScale($s_x, $s_y, $x='', $y='', $returnstring=false) {
-       if ($x === '') {
-               $x=$this->x;
-       }
-       if ($y === '') {
-               $y=$this->y;
-       }
-       if (($s_x == 0) OR ($s_y == 0)) {
-               $this->Error('Please do not use values equal to zero for scaling');
-       }
-       $y = ($this->h - $y) * _MPDFK;
-       $x *= _MPDFK;
-       //calculate elements of transformation matrix
-       $s_x /= 100;
-       $s_y /= 100;
-       $tm[0] = $s_x;
-       $tm[1] = 0;
-       $tm[2] = 0;
-       $tm[3] = $s_y;
-       $tm[4] = $x * (1 - $s_x);
-       $tm[5] = $y * (1 - $s_y);
-       //scale the coordinate system
-       if ($returnstring) { return($this->_transform($tm, true)); }
-       else { $this->_transform($tm); }
-}
-function transformTranslate($t_x, $t_y, $returnstring=false) {
-       //calculate elements of transformation matrix
-       $tm[0] = 1;
-       $tm[1] = 0;
-       $tm[2] = 0;
-       $tm[3] = 1;
-       $tm[4] = $t_x * _MPDFK;
-       $tm[5] = -$t_y * _MPDFK;
-       //translate the coordinate system
-       if ($returnstring) { return($this->_transform($tm, true)); }
-       else { $this->_transform($tm); }
-}
-function transformRotate($angle, $x='', $y='', $returnstring=false) {
-       if ($x === '') {
-               $x=$this->x;
-       }
-       if ($y === '') {
-               $y=$this->y;
-       }
-       $angle = -$angle;
-       $y = ($this->h - $y) * _MPDFK;
-       $x *= _MPDFK;
-       //calculate elements of transformation matrix
-       $tm[0] = cos(deg2rad($angle));
-       $tm[1] = sin(deg2rad($angle));
-       $tm[2] = -$tm[1];
-       $tm[3] = $tm[0];
-       $tm[4] = $x + $tm[1] * $y - $tm[0] * $x;
-       $tm[5] = $y - $tm[0] * $y - $tm[1] * $x;
-       //rotate the coordinate system around ($x,$y)
-       if ($returnstring) { return($this->_transform($tm, true)); }
-       else { $this->_transform($tm); }
-}
-function _transform($tm, $returnstring=false) {
-       if ($returnstring) { return(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); }
-       else { $this->_out(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); }
-}
-
-
-
-/*-- INDIC --*/
-// INDIC ============================
-// This conversion can only be done when font is set
-function ConvertIndic(&$str) {
-       if (preg_match('/^ind_([a-z]{2})_/',$this->currentfontfamily, $m)) {
-               if (!class_exists('indic', false)) { include(_MPDF_PATH.'classes/indic.php'); }
-               if (empty($this->indic)) { $this->indic = new indic($this); }
-               $earr = $this->UTF8StringToArray($str, false);
-               $str = $this->indic->substituteIndic($earr, $m[1], $this->currentfontfamily);
-       }
-}
-/*-- END INDIC --*/
-
-// AUTOFONT =========================
-function AutoFont($html) {
-       if ($this->onlyCoreFonts) { return $html; }
-       $this->useLang = true;
-       if ($this->autoFontGroupSize == 1) { $extra = $this->pregASCIIchars1; }
-       else if ($this->autoFontGroupSize == 3) { $extra = $this->pregASCIIchars3; }
-       else {  $extra = $this->pregASCIIchars2; }
-       $n = '';
-       $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
-       foreach($a as $i => $e) {
-          if($i%2==0) {
-               $e = strcode2utf($e);
-               $e = $this->lesser_entity_decode($e);
-
-               // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
-               // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
-
-/*-- CJK-FONTS --*/
-               if ($this->autoFontGroups & AUTOFONT_CJK) {
-                       $e = preg_replace_callback("/([".$this->pregCJKchars .$extra."]*[".$this->pregCJKchars ."][".$this->pregCJKchars .$extra."]*)/u", array($this, 'replaceCJKPregCallback'), $e ); // mPDF 5.7+
-               }
-/*-- END CJK-FONTS --*/
-
-/*-- RTL --*/
-               if ($this->autoFontGroups & AUTOFONT_RTL) {
-                       // HEBREW
-                       $e = preg_replace("/([".$this->pregHEBchars .$extra."]*[".$this->pregHEBchars ."][".$this->pregHEBchars .$extra."]*)/u", "\xef\xbf\xb0span lang=\"he\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); 
-                       // All Arabic
-                       $e = preg_replace_callback("/([".$this->pregARABICchars .$extra."]*[".$this->pregARABICchars ."][".$this->pregARABICchars .$extra."]*)/u", array($this, 'replaceArabicPregCallback'), $e );     // mPDF 5.7+
-               }
-/*-- END RTL --*/
-
-/*-- INDIC --*/
-               // INDIC
-               if ($this->autoFontGroups & AUTOFONT_INDIC) {
-                       // Bengali
-                       $e = preg_replace("/([".$this->pregBNchars .$this->pregINDextra."]*[".$this->pregBNchars ."][".$this->pregBNchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"bn\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Devanagari (= script for Hindi, Nepali + Sindhi)
-                       $e = preg_replace("/([".$this->pregHIchars .$this->pregINDextra."]*[".$this->pregHIchars ."][".$this->pregHIchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"hi\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Gujarati
-                       $e = preg_replace("/([".$this->pregGUchars .$this->pregINDextra."]*[".$this->pregGUchars ."][".$this->pregGUchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"gu\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Malayalam
-                       $e = preg_replace("/([".$this->pregMLchars .$this->pregINDextra."]*[".$this->pregMLchars ."][".$this->pregMLchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"ml\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Kannada
-                       $e = preg_replace("/([".$this->pregKNchars .$this->pregINDextra."]*[".$this->pregKNchars ."][".$this->pregKNchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"kn\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Oriya
-                       $e = preg_replace("/([".$this->pregORchars .$this->pregINDextra."]*[".$this->pregORchars ."][".$this->pregORchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"or\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Punjabi ?= Gurmuhki 
-                       $e = preg_replace("/([".$this->pregPAchars .$this->pregINDextra."]*[".$this->pregPAchars ."][".$this->pregPAchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"pa\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Tamil
-                       $e = preg_replace("/([".$this->pregTAchars .$this->pregINDextra."]*[".$this->pregTAchars ."][".$this->pregTAchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"ta\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Telugu
-                       $e = preg_replace("/([".$this->pregTEchars .$this->pregINDextra."]*[".$this->pregTEchars ."][".$this->pregTEchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"te\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-               }
-/*-- END INDIC --*/
-
-
-               if ($this->autoFontGroups & AUTOFONT_THAIVIET) {
-                       // THAI
-                       $e = preg_replace("/([\x{0E00}-\x{0E7F}".$extra."]*[\x{0E00}-\x{0E7F}][\x{0E00}-\x{0E7F}".$extra."]*)/u", "\xef\xbf\xb0span lang=\"th\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-                       // Vietnamese
-                       $e = preg_replace("/([".$this->pregVIETchars .$this->pregVIETPluschars ."]*[".$this->pregVIETchars ."][".$this->pregVIETchars .$this->pregVIETPluschars ."]*)/u", "\xef\xbf\xb0span lang=\"vi\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
-               }
-
-               $e = preg_replace('/[&]/','&amp;',$e);
-               $e = preg_replace('/[<]/','&lt;',$e);
-               $e = preg_replace('/[>]/','&gt;',$e);
-               $e = preg_replace("/(\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1)\s+/",' \\1',$e);
-               $e = preg_replace("/[ ]+(\xef\xbf\xb0\/span\xef\xbf\xb1)/",'\\1 ',$e);
-
-               $e = preg_replace("/\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1/","\xef\xbf\xb0span lang=\"\\1\" class=\"lang_\\1\"\xef\xbf\xb1",$e);
-
-               $e = preg_replace("/\xef\xbf\xb0/",'<',$e);
-               $e = preg_replace("/\xef\xbf\xb1/",'>',$e);
-
-               $a[$i] = $e;
-          }
-          else {
-               $a[$i] = '<'.$e.'>'; 
-          }
-       }
-       $n = implode('',$a);
-       return $n;
-}
-
-
-/*-- CJK-FONTS --*/
-function replaceCJK($str) {
-       // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
-       // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
-       if (preg_match("/[".$this->pregUHCchars."]/u", $str)) { 
-               return "\xef\xbf\xb0span lang=\"ko\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
-       }
-       else if (preg_match("/[".$this->pregSJISchars."]/u", $str)) { 
-               return "\xef\xbf\xb0span lang=\"ja\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
-       }
-       // if in Unicode Plane 2, probably HKCS (incl in BIG5) if not Japanese
-       else if (preg_match("/[\x{20000}-\x{2FFFF}]/u", $str)) { 
-               return "\xef\xbf\xb0span lang=\"zh-HK\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
-       }
-       else{ 
-               return "\xef\xbf\xb0span lang=\"zh-CN\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
-       }
-       return $str;
-}
-
-// mPDF 5.7+
-function replaceCJKPregCallback($matches) {
-       return $this->replaceCJK(stripslashes($matches[1]));
-}
-/*-- END CJK-FONTS --*/
-
-/*-- RTL --*/
-function replaceArabic($str) {
-       // PASHTO, SINDHI, URDU, ARABIC, PERSIAN
-       $persian = "\x{067E}\x{0686}\x{0698}\x{06AF}";
-
-       $urdu = "\x{0679}\x{0688}\x{0691}\x{06BA}\x{06BE}\x{06C1}\x{06D2}";
-       $pashto = "\x{067C}\x{0681}\x{0685}\x{0689}\x{0693}\x{0696}\x{069A}\x{06BC}\x{06D0}";   // ? and U+06AB, U+06CD
-       $sindhi = "\x{067A}\x{067B}\x{067D}\x{067F}\x{0680}\x{0684}\x{068D}\x{068A}\x{068F}\x{068C}\x{0687}\x{0683}\x{0699}\x{06AA}\x{06A6}\x{06BB}\x{06B1}\x{06B3}";
-       // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
-       // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
-
-       if (preg_match("/[".$this->pregNonARABICchars ."]/u", $str) ) {
-               if (preg_match("/[".$sindhi ."]/u", $str) ) {
-                       return "\xef\xbf\xb0span lang=\"sd\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-               }
-               else if (preg_match("/[".$urdu ."]/u", $str) ) {
-                       return "\xef\xbf\xb0span lang=\"ur\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-               }
-               else if (preg_match("/[".$pashto ."]/u", $str) ) {
-                       return "\xef\xbf\xb0span lang=\"ps\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-               }
-               else if (preg_match("/[".$persian ."]/u", $str) ) {
-                       return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-               }
-               else {
-                       return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-               }
-       }
-       if (preg_match("/[".$persian ."]/u", $str) ) {
-               return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-       }
-       else {
-               return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
-       }
-       return $str;
-}
-
-// mPDF 5.7+
-function replaceArabicPregCallback($matches) {
-       return $this->replaceArabic(stripslashes($matches[1]));
-}
-
-// ARABIC ===========================
-// mPDF 5.4.08
-function InitArabic() {
-
-       // JOIN TO FOLLOWING LETTER IN LOGICAL ORDER (i.e. AS INITIAL)
-       $this->arabPrevLink = "";
-       // U+060c; U+061b; U+061f; U+0626; U+0628;
-       $this->arabPrevLink .= "\xd8\x8c\xd8\x9b\xd8\x9f\xd8\xa6\xd8\xa8";
-       // U+062a; U+062b; U+062c; U+062d; U+062e;
-       $this->arabPrevLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae";
-       // U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063a;
-       $this->arabPrevLink .= "\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba";
-       // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0649; U+064a;
-       $this->arabPrevLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x89\xd9\x8a";
-       // U+0678; U+0679; U+067a; U+067b; U+067c; U+067d; U+067e; U+067f;
-       $this->arabPrevLink .= "\xd9\xb8\xd9\xb9\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf";
-       // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687;
-       $this->arabPrevLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87";
-       // U+069a; U+069b; U+069c; U+069d; U+069e; U+069f;
-       $this->arabPrevLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f";
-       // U+06a0; U+06a1; U+06a2; U+06a3; U+06a4; U+06a5; U+06a6; U+06A7; U+06A8;
-       $this->arabPrevLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8";
-       // U+06a9; U+06aa; U+06ab; U+06ac; U+06ad; U+06ae; U+06af;
-       $this->arabPrevLink .= "\xda\xa9\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf";
-       // U+06b0; U+06b1; U+06b2; U+06b3; U+06b4; U+06b5; U+06b6; U+06b7; U+06b8; U+06b9;
-       $this->arabPrevLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9";
-       // U+06ba; U+06bb; U+06bc; U+06be; U+06bf;
-       $this->arabPrevLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf";
-       // U+06c1; U+06cc; U+06ce; U+06d0; U+06d1;
-       $this->arabPrevLink .= "\xdb\x81\xdb\x8c\xdb\x8e\xdb\x90\xdb\x91";
-
-
-
-
-       // JOIN TO PREVIOUS LETTER IN LOGICAL ORDER (i.e. AS FINAL FORM)
-       $this->arabNextLink = "";
-       // U+0622; U+0623; U+0624; U+0625; U+0626; U+0627; U+0628; U+0629;
-       $this->arabNextLink .= "\xd8\xa2\xd8\xa3\xd8\xa4\xd8\xa5\xd8\xa6\xd8\xa7\xd8\xa8\xd8\xa9";
-       // U+062A; U+062B; U+062C; U+062D; U+062E; U+062F;
-       $this->arabNextLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae\xd8\xaf";
-       // U+0630; U+0631; U+0632; U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063A;
-       $this->arabNextLink .= "\xd8\xb0\xd8\xb1\xd8\xb2\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba";
-       // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0648; U+0649; U+064A;
-       $this->arabNextLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a";
-       // U+0671; U+0672; U+0675; U+0676; U+0677; U+0678; U+0679;
-       $this->arabNextLink .= "\xd9\xb1\xd9\xb2\xd9\xb5\xd9\xb6\xd9\xb7\xd9\xb8\xd9\xb9";
-       // U+067A; U+067B; U+067C; U+067D; U+067E; U+067F;
-       $this->arabNextLink .= "\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf";
-       // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687; U+0688; U+0689;
-       $this->arabNextLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89";
-       // U+068A; U+068B; U+068C; U+068D;  U+068F;U+068F;
-       $this->arabNextLink .= "\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xda\x8e\xda\x8f";
-       // U+0690; U+0691; U+0692; U+0693; U+0694; U+0695; U+0696; U+0697; U+0698; U+0699;
-       $this->arabNextLink .= "\xda\x90\xda\x91\xda\x92\xda\x93\xda\x94\xda\x95\xda\x96\xda\x97\xda\x98\xda\x99";
-       // U+069A; U+069B; U+069C; U+069D; U+069E; U+069F;
-       $this->arabNextLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f";
-       // U+06A0; U+06A1; U+06A2; U+06A3; U+06A4; U+06A5; U+06A6; U+06A7; U+06A8; U+06A9;
-       $this->arabNextLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8\xda\xa9";
-       // U+06AA; U+06AB; U+06AC; U+06AD; U+06AE; U+06AF;
-       $this->arabNextLink .= "\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf";
-       // U+06B0; U+06B1; U+06B2; U+06B3; U+06B4; U+06B5; U+06B6; U+06B7; U+06B8; U+06B9;
-       $this->arabNextLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9";
-       // U+06BA; U+06BB; U+06BC; U+06BE; U+06BF;
-       $this->arabNextLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf";
-       // U+06C0; U+06C1; U+06C2; U+06C3; U+06C4; U+06C5; U+06C6; U+06C7; U+06C8; U+06C9;
-       $this->arabNextLink .= "\xdb\x80\xdb\x81\xdb\x82\xdb\x83\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xdb\x89";
-       // U+06CA; U+06CB; U+06CC; U+06CD; U+06CE; U+06CF;
-       $this->arabNextLink .= "\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xdb\x8f";
-       // U+06D0; U+06d1; U+06D2; U+06D3; 
-       $this->arabNextLink .= "\xdb\x90\xdb\x91\xdb\x92\xdb\x93";
-
-
-       // VOWELS ++
-
-       // U+064b U+064c; U+064d; U+064e; U+064f; U+0650; U+0651; U+0652;
-       $this->arabVowels = "\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92";
-
-       // Added chars that may not be vowels but should not interrupt joining
-       // U+0670; U+0653; 
-       $this->arabVowels .= "\xd9\xb0\xd9\x93";
-       // ? should also add - U+615, 616, 617-61A, 653-65E, 6D6-6DC, 6DF-6E4, 6E7, 6E8, 6EA-6ED
-
-
-
-       // ISOLATED FORM :: FINAL :: INITIAL :: MEDIAL
-       // FB** - FE** = Arabic presentation Forms
-       // F5** F6** F7** = Private use area used by unAGlyphs in mPDF
-       $this->arabGlyphs = array(
-       "\xd8\x8c"=>array("\xd8\x8c", "\xd8\x8c", "\xd8\x8c", "\xd8\x8c"), /* 060C, 060C, 060C, 060C */
-       "\xd8\x9b"=>array("\xd8\x9b", "\xd8\x9b", "\xd8\x9b", "\xd8\x9b"), /* 061B, 061B, 061B, 061B */
-       "\xd8\x9f"=>array("\xd8\x9f", "\xd8\x9f", "\xd8\x9f", "\xd8\x9f"), /* 061F, 061F, 061F, 061F */
-       "\xd8\xa1"=>array("\xd8\xa1", "\xd8\xa1", "\xd8\xa1", "\xd8\xa1"), /* 0621, 0621, 0621, 0621 */
-       "\xd8\xa2"=>array("\xd8\xa2", "\xef\xba\x82", "\xd8\xa2", "\xef\xba\x82"), /* 0622, FE82, 0622, FE82 */
-       "\xd8\xa3"=>array("\xd8\xa3", "\xef\xba\x84", "\xd8\xa3", "\xef\xba\x84"), /* 0623, FE84, 0623, FE84 */
-       "\xd8\xa4"=>array("\xd8\xa4", "\xef\xba\x86", "\xd8\xa4", "\xef\xba\x86"), /* 0624, FE86, 0624, FE86 */
-       "\xd8\xa5"=>array("\xd8\xa5", "\xef\xba\x88", "\xd8\xa5", "\xef\xba\x88"), /* 0625, FE88, 0625, FE88 */
-       "\xd8\xa6"=>array("\xd8\xa6", "\xef\xba\x8a", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0626, FE8A, FE8B, FE8C */
-       "\xd8\xa7"=>array("\xd8\xa7", "\xef\xba\x8e", "\xd8\xa7", "\xef\xba\x8e"), /* 0627, FE8E, 0627, FE8E */
-       "\xd8\xa8"=>array("\xd8\xa8", "\xef\xba\x90", "\xef\xba\x91", "\xef\xba\x92"), /* 0628, FE90, FE91, FE92 */
-       "\xd8\xa9"=>array("\xd8\xa9", "\xef\xba\x94", "\xd8\xa9", "\xef\xba\x94"), /* 0629, FE94, 0629, FE94 */
-       "\xd8\xaa"=>array("\xd8\xaa", "\xef\xba\x96", "\xef\xba\x97", "\xef\xba\x98"), /* 062A, FE96, FE97, FE98 */
-       "\xd8\xab"=>array("\xd8\xab", "\xef\xba\x9a", "\xef\xba\x9b", "\xef\xba\x9c"), /* 062B, FE9A, FE9B, FE9C */
-       "\xd8\xac"=>array("\xd8\xac", "\xef\xba\x9e", "\xef\xba\x9f", "\xef\xba\xa0"), /* 062C, FE9E, FE9F, FEA0 */
-       "\xd8\xad"=>array("\xd8\xad", "\xef\xba\xa2", "\xef\xba\xa3", "\xef\xba\xa4"), /* 062D, FEA2, FEA3, FEA4 */
-       "\xd8\xae"=>array("\xd8\xae", "\xef\xba\xa6", "\xef\xba\xa7", "\xef\xba\xa8"), /* 062E, FEA6, FEA7, FEA8 */
-       "\xd8\xaf"=>array("\xd8\xaf", "\xef\xba\xaa", "\xd8\xaf", "\xef\xba\xaa"), /* 062F, FEAA, 062F, FEAA */
-       "\xd8\xb0"=>array("\xd8\xb0", "\xef\xba\xac", "\xd8\xb0", "\xef\xba\xac"), /* 0630, FEAC, 0630, FEAC */
-       "\xd8\xb1"=>array("\xd8\xb1", "\xef\xba\xae", "\xd8\xb1", "\xef\xba\xae"), /* 0631, FEAE, 0631, FEAE */
-       "\xd8\xb2"=>array("\xd8\xb2", "\xef\xba\xb0", "\xd8\xb2", "\xef\xba\xb0"), /* 0632, FEB0, 0632, FEB0 */
-       "\xd8\xb3"=>array("\xd8\xb3", "\xef\xba\xb2", "\xef\xba\xb3", "\xef\xba\xb4"), /* 0633, FEB2, FEB3, FEB4 */
-       "\xd8\xb4"=>array("\xd8\xb4", "\xef\xba\xb6", "\xef\xba\xb7", "\xef\xba\xb8"), /* 0634, FEB6, FEB7, FEB8 */
-       "\xd8\xb5"=>array("\xd8\xb5", "\xef\xba\xba", "\xef\xba\xbb", "\xef\xba\xbc"), /* 0635, FEBA, FEBB, FEBC */
-       "\xd8\xb6"=>array("\xd8\xb6", "\xef\xba\xbe", "\xef\xba\xbf", "\xef\xbb\x80"), /* 0636, FEBE, FEBF, FEC0 */
-       "\xd8\xb7"=>array("\xd8\xb7", "\xef\xbb\x82", "\xef\xbb\x83", "\xef\xbb\x84"), /* 0637, FEC2, FEC3, FEC4 */
-       "\xd8\xb8"=>array("\xd8\xb8", "\xef\xbb\x86", "\xef\xbb\x87", "\xef\xbb\x88"), /* 0638, FEC6, FEC7, FEC8 */
-       "\xd8\xb9"=>array("\xd8\xb9", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xef\xbb\x8c"), /* 0639, FECA, FECB, FECC */
-       "\xd8\xba"=>array("\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xef\xbb\x90"), /* 063A, FECE, FECF, FED0 */
-       "\xd9\x80"=>array("\xd9\x80", "\xd9\x80", "\xd9\x80", "\xd9\x80"), /* 0640, 0640, 0640, 0640 */
-       "\xd9\x81"=>array("\xd9\x81", "\xef\xbb\x92", "\xef\xbb\x93", "\xef\xbb\x94"), /* 0641, FED2, FED3, FED4 */
-       "\xd9\x82"=>array("\xd9\x82", "\xef\xbb\x96", "\xef\xbb\x97", "\xef\xbb\x98"), /* 0642, FED6, FED7, FED8 */
-       "\xd9\x83"=>array("\xd9\x83", "\xef\xbb\x9a", "\xef\xbb\x9b", "\xef\xbb\x9c"), /* 0643, FEDA, FEDB, FEDC */
-       "\xd9\x84"=>array("\xd9\x84", "\xef\xbb\x9e", "\xef\xbb\x9f", "\xef\xbb\xa0"), /* 0644, FEDE, FEDF, FEE0 */
-       "\xd9\x85"=>array("\xd9\x85", "\xef\xbb\xa2", "\xef\xbb\xa3", "\xef\xbb\xa4"), /* 0645, FEE2, FEE3, FEE4 */
-       "\xd9\x86"=>array("\xd9\x86", "\xef\xbb\xa6", "\xef\xbb\xa7", "\xef\xbb\xa8"), /* 0646, FEE6, FEE7, FEE8 */
-       "\xd9\x87"=>array("\xd9\x87", "\xef\xbb\xaa", "\xef\xbb\xab", "\xef\xbb\xac"), /* 0647, FEEA, FEEB, FEEC */
-       "\xd9\x88"=>array("\xd9\x88", "\xef\xbb\xae", "\xd9\x88", "\xef\xbb\xae"), /* 0648, FEEE, 0648, FEEE */
-
-/* 0649 Alef Maksura should only appear at end of word (in Arabic) So Initial and medial are shown as isolated/final */
-       "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xd9\x89", "\xef\xbb\xb0"), /* 0649, FEF0, 0649, FEF0 */
-
-/* 0649 Alef Maksura Initial and Medial forms as given in Unicode FBE8 and FBE9 for Uighur Kazakh (not in some fonts) */
-       "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xef\xaf\xa8", "\xef\xaf\xa9"), /* 0649, FEF0, FBE8, FBE9 not in most fonts */
-
-       "\xd9\x8a"=>array("\xd9\x8a", "\xef\xbb\xb2", "\xef\xbb\xb3", "\xef\xbb\xb4"), /* 064A, FEF2, FEF3, FEF4 */
-       "\xd9\x8b"=>array("\xd9\x8b", "\xd9\x8b", "\xd9\x8b", "\xd9\x8b"), /* 064B, 064B, 064B, 064B */
-       "\xd9\x8c"=>array("\xd9\x8c", "\xd9\x8c", "\xd9\x8c", "\xd9\x8c"), /* 064C, 064C, 064C, 064C */
-       "\xd9\x8d"=>array("\xd9\x8d", "\xd9\x8d", "\xd9\x8d", "\xd9\x8d"), /* 064D, 064D, 064D, 064D */
-       "\xd9\x8e"=>array("\xd9\x8e", "\xd9\x8e", "\xd9\x8e", "\xd9\x8e"), /* 064E, 064E, 064E, 064E */
-       "\xd9\x8f"=>array("\xd9\x8f", "\xd9\x8f", "\xd9\x8f", "\xd9\x8f"), /* 064F, 064F, 064F, 064F */
-       "\xd9\x90"=>array("\xd9\x90", "\xd9\x90", "\xd9\x90", "\xd9\x90"), /* 0650, 0650, 0650, 0650 */
-       "\xd9\x91"=>array("\xd9\x91", "\xd9\x91", "\xd9\x91", "\xd9\x91"), /* 0651, 0651, 0651, 0651 */
-       "\xd9\x92"=>array("\xd9\x92", "\xd9\x92", "\xd9\x92", "\xd9\x92"), /* 0652, 0652, 0652, 0652 */
-       "\xd9\xb1"=>array("\xd9\xb1", "\xef\xad\x91", "\xd9\xb1", "\xef\xad\x91"), /* 0671, FB51, 0671, FB51 */
-       "\xd9\xb2"=>array("\xd9\xb2", "\xef\x95\xb2", "\xd9\xb2", "\xef\x95\xb2"), /* 0672, F572, 0672, F572 */
-       "\xd9\xb5"=>array("\xd9\xb5", "\xef\x95\xb5", "\xd9\xb5", "\xef\x95\xb5"), /* 0675, F575, 0675, F575 */
-       "\xd9\xb8"=>array("\xd9\xb8", "\xef\x95\xb8", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0678, F578, FE8B, FE8C ( as 0626 ) */
-       "\xd9\xb9"=>array("\xd9\xb9", "\xef\xad\xa7", "\xef\xad\xa8", "\xef\xad\xa9"), /* 0679, FB67, FB68, FB69 */
-       "\xd9\xba"=>array("\xd9\xba", "\xef\xad\x9f", "\xef\xad\xa0", "\xef\xad\xa1"), /* 067A, FB5F, FB60, FB61 */
-       "\xd9\xbb"=>array("\xd9\xbb", "\xef\xad\x93", "\xef\xad\x94", "\xef\xad\x95"), /* 067B, FB53, FB54, FB55 */
-       "\xd9\xbc"=>array("\xd9\xbc", "\xef\x95\xbc", "\xef\x99\xbc", "\xef\x9d\xbc"), /* 067C, F57C, F67C, F77C */
-       "\xd9\xbd"=>array("\xd9\xbd", "\xef\x95\xbd", "\xef\x99\xbd", "\xef\x9d\xbd"), /* 067D, F57D, F67D, F77D */
-       "\xd9\xbe"=>array("\xd9\xbe", "\xef\xad\x97", "\xef\xad\x98", "\xef\xad\x99"), /* 067E, FB57, FB58, FB59 */
-       "\xd9\xbf"=>array("\xd9\xbf", "\xef\xad\xa3", "\xef\xad\xa4", "\xef\xad\xa5"), /* 067F, FB63, FB64, FB65 */
-       "\xda\x80"=>array("\xda\x80", "\xef\xad\x9b", "\xef\xad\x9c", "\xef\xad\x9d"), /* 0680, FB5B, FB5C, FB5D */
-       "\xda\x81"=>array("\xda\x81", "\xef\x96\x81", "\xef\x9a\x81", "\xef\x9e\x81"), /* 0681, F581, F681, F781 */
-       "\xda\x82"=>array("\xda\x82", "\xef\x96\x82", "\xef\x9a\x82", "\xef\x9e\x82"), /* 0682, F582, F682, F782 */
-       "\xda\x83"=>array("\xda\x83", "\xef\xad\xb7", "\xef\xad\xb8", "\xef\xad\xb9"), /* 0683, FB77, FB78, FB79 */
-       "\xda\x84"=>array("\xda\x84", "\xef\xad\xb3", "\xef\xad\xb4", "\xef\xad\xb5"), /* 0684, FB73, FB74, FB75 */
-       "\xda\x85"=>array("\xda\x85", "\xef\x96\x85", "\xef\x9a\x85", "\xef\x9e\x85"), /* 0685, F585, F685, F785 */
-       "\xda\x86"=>array("\xda\x86", "\xef\xad\xbb", "\xef\xad\xbc", "\xef\xad\xbd"), /* 0686, FB7B, FB7C, FB7D */
-       "\xda\x87"=>array("\xda\x87", "\xef\xad\xbf", "\xef\xae\x80", "\xef\xae\x81"), /* 0687, FB7F, FB80, FB81 */
-       "\xda\x88"=>array("\xda\x88", "\xef\xae\x89", "\xda\x88", "\xda\x88"), /* 0688, FB89, 0688, 0688 */
-       "\xda\x89"=>array("\xda\x89", "\xef\x96\x89", "\xda\x89", "\xda\x89"), /* 0689, F589, 0689, 0689 */
-       "\xda\x91"=>array("\xda\x91", "\xef\xae\x8d", "\xda\x91", "\xef\xae\x8d"), /* 0691, FB8D, 0691, FB8D */
-       "\xda\x93"=>array("\xda\x93", "\xef\x96\x93", "\xda\x93", "\xda\x93"), /* 0693, F593, 0693, 0693 */
-       "\xda\x96"=>array("\xda\x96", "\xef\x96\x96", "\xda\x96", "\xda\x96"), /* 0696, F596, 0696, 0696 */
-       "\xda\x98"=>array("\xda\x98", "\xef\xae\x8b", "\xda\x98", "\xef\xae\x8b"), /* 0698, FB8B, 0698, FB8B */
-       "\xda\x9a"=>array("\xda\x9a", "\xef\x96\x9a", "\xef\x9a\x9a", "\xef\x9e\x9a"), /* 069A, F59A, F69A, F79A */
-       "\xda\x9b"=>array("\xda\x9b", "\xef\x96\x9b", "\xef\x9a\x9b", "\xef\x9e\x9b"), /* 069B, F59B, F69B, F79B */
-       "\xda\x9c"=>array("\xda\x9c", "\xef\x96\x9c", "\xef\x9a\x9c", "\xef\x9e\x9c"), /* 069C, F59C, F69C, F79C */
-       "\xda\x9d"=>array("\xda\x9d", "\xef\x96\x9d", "\xef\x9a\x9d", "\xef\x9e\x9d"), /* 069D, F59D, F69D, F79D */
-       "\xda\x9e"=>array("\xda\x9e", "\xef\x96\x9e", "\xef\x9a\x9e", "\xef\x9e\x9e"), /* 069E, F59E, F69E, F79E */
-       "\xda\xa0"=>array("\xda\xa0", "\xef\x96\xa0", "\xef\x9a\xa0", "\xef\x9e\xa0"), /* 06A0, F5A0, F6A0, F7A0 */
-       "\xda\xa1"=>array("\xda\xa1", "\xef\x96\xa1", "\xef\x9a\xa1", "\xef\x9e\xa1"), /* 06A1, F5A1, F6A1, F7A1 */
-       "\xda\xa2"=>array("\xda\xa2", "\xef\x96\xa2", "\xef\x9a\xa2", "\xef\x9e\xa2"), /* 06A2, F5A2, F6A2, F7A2 */
-       "\xda\xa3"=>array("\xda\xa3", "\xef\x96\xa3", "\xef\x9a\xa3", "\xef\x9e\xa3"), /* 06A3, F5A3, F6A3, F7A3 */
-       "\xda\xa4"=>array("\xda\xa4", "\xef\xad\xab", "\xef\xad\xac", "\xef\xad\xad"), /* 06A4, FB6B, FB6C, FB6D */
-       "\xda\xa5"=>array("\xda\xa5", "\xef\x96\xa5", "\xef\x9a\xa5", "\xef\x9e\xa5"), /* 06A5, F5A5, F6A5, F7A5 */
-       "\xda\xa6"=>array("\xda\xa6", "\xef\xad\xaf", "\xef\xad\xb0", "\xef\xad\xb1"), /* 06A6, FB6F, FB70, FB71 */
-       "\xda\xa9"=>array("\xda\xa9", "\xef\xae\x8f", "\xef\xae\x90", "\xef\xae\x91"), /* 06A9, FB8F, FB90, FB91 */
-       "\xda\xaa"=>array("\xda\xaa", "\xef\x96\xaa", "\xef\x9a\xaa", "\xef\x9e\xaa"), /* 06AA, F5AA, F6AA, F7AA */
-       "\xda\xab"=>array("\xda\xab", "\xef\x96\xab", "\xef\x9a\xab", "\xef\x9e\xab"), /* 06AB, F5AB, F6AB, F7AB */
-       "\xda\xac"=>array("\xda\xac", "\xef\x96\xac", "\xef\x9a\xac", "\xef\x9e\xac"), /* 06AC, F5AC, F6AC, F7AC */
-       "\xda\xad"=>array("\xda\xad", "\xef\xaf\x94", "\xef\xaf\x95", "\xef\xaf\x96"), /* 06AD, FBD4, FBD5, FBD6 */
-       "\xda\xae"=>array("\xda\xae", "\xef\x96\xae", "\xef\x9a\xae", "\xef\x9e\xae"), /* 06AE, F5AE, F6AE, F7AE */
-       "\xda\xaf"=>array("\xda\xaf", "\xef\xae\x93", "\xef\xae\x94", "\xef\xae\x95"), /* 06Af, FB93, FB94, FB95 */
-       "\xda\xb0"=>array("\xda\xb0", "\xef\x96\xb0", "\xef\x9a\xb0", "\xef\x9e\xb0"), /* 06B0, F5B0, F6B0, F7B0 */
-       "\xda\xb1"=>array("\xda\xb1", "\xef\xae\x9b", "\xef\xae\x9c", "\xef\xae\x9d"), /* 06B1, FB9B, FB9C, FB9D */
-       "\xda\xb2"=>array("\xda\xb2", "\xef\x96\xb2", "\xef\x9a\xb2", "\xef\x9e\xb2"), /* 06B2, F5B2, F6B2, F7B2 */
-       "\xda\xb3"=>array("\xda\xb3", "\xef\xae\x97", "\xef\xae\x98", "\xef\xae\x99"), /* 06B3, FB97, FB98, FB99 */
-       "\xda\xb4"=>array("\xda\xb4", "\xef\x96\xb4", "\xef\x9a\xb4", "\xef\x9e\xb4"), /* 06B4, F5B4, F6B4, F7B4 */
-       "\xda\xb5"=>array("\xda\xb5", "\xef\x96\xb5", "\xef\x9a\xb5", "\xef\x9e\xb5"), /* 06B5, F5B5, F6B5, F7B5 */
-       "\xda\xb6"=>array("\xda\xb6", "\xef\x96\xb6", "\xef\x9a\xb6", "\xef\x9e\xb6"), /* 06B6, F5B6, F6B6, F7B6 */
-       "\xda\xb7"=>array("\xda\xb7", "\xef\x96\xb7", "\xef\x9a\xb7", "\xef\x9e\xb7"), /* 06B7, F5B7, F6B7, F7B7 */
-       "\xda\xb8"=>array("\xda\xb8", "\xef\x96\xb8", "\xef\x9a\xb8", "\xef\x9e\xb8"), /* 06B8, F5B8, F6B8, F7B8 */
-       "\xda\xb9"=>array("\xda\xb9", "\xef\x96\xb9", "\xef\x9a\xb9", "\xef\x9e\xb9"), /* 06B9, F5B9, F6B9, F7B9 */
-       "\xda\xba"=>array("\xda\xba", "\xef\xae\x9f", "\xda\xba", "\xda\xba"), /* 06BA, FB9F, 06BA, 06BA */
-       "\xda\xbb"=>array("\xda\xbb", "\xef\xae\xa1", "\xef\xae\xa2", "\xef\xae\xa3"), /* 06BB, FBA1, FBA2, FBA3 */
-       "\xda\xbc"=>array("\xda\xbc", "\xef\x96\xbc", "\xef\x9a\xbc", "\xef\x9e\xbc"), /* 06BC, F5BC, F6BC, F7BC */
-       "\xda\xbe"=>array("\xda\xbe", "\xef\xae\xab", "\xef\xae\xac", "\xef\xae\xad"), /* 06BE, FBAB, FBAC, FBAD */
-       "\xda\xbf"=>array("\xda\xbf", "\xef\x96\xbf", "\xef\x9a\xbf", "\xef\x9e\xbf"), /* 06BF, F5BF, F6BF, F7BF */
-       "\xdb\x80"=>array("\xdb\x80", "\xef\xae\xa5", "\xdb\x80", "\xef\xae\xa5"), /* 06C0, FBA5, 06C0, FBA5 */
-       "\xdb\x81"=>array("\xdb\x81", "\xef\xae\xa7", "\xef\xae\xa8", "\xef\xae\xa9"), /* 06C1, FBA7, FBA8, FBA9 */
-       "\xdb\x8c"=>array("\xdb\x8c", "\xef\xaf\xbd", "\xef\xaf\xbe", "\xef\xaf\xbf"), /* 06CC, FBFD, FBFE, FBFF */
-       "\xdb\x8d"=>array("\xdb\x8d", "\xef\x97\x8d", "\xdb\x8d", "\xef\x97\x8d"), /* 06CD, F5CD, 06CD, F5CD */
-       "\xdb\x8e"=>array("\xdb\x8e", "\xef\x97\x8e", "\xef\x9b\x8e", "\xef\x9f\x8e"), /* 06CE, F5CE, F6CE, F7CE */
-       "\xdb\x90"=>array("\xdb\x90", "\xef\xaf\xa5", "\xef\xaf\xa6", "\xef\xaf\xa7"), /* 06D0, FBE5, FBE6, FBE7 */
-       "\xdb\x91"=>array("\xdb\x91", "\xef\x97\x91", "\xef\xad\x98", "\xef\xad\x99"), /* 06D1, F5D1, FB58, FB59 Fudge borrows from 067E */
-       "\xdb\x92"=>array("\xdb\x92", "\xef\xae\xaf", "\xdb\x92", "\xef\xae\xaf"), /* 06D2, FBAF, 06D2, FBAF */
-       "\xdb\x93"=>array("\xdb\x93", "\xef\xae\xb1", "\xdb\x93", "\xef\xae\xb1"), /* 06D3, FBB1, 06D3, FBB1 */
-       );
-
-
-       // LAM with ALEF ligatures (Mandatory ligatures)
-
-       // U+0644; U+0622;   U+0644; U+0623;   U+0644; U+0625;   U+0644; U+0627;
-       $this->arabLigGlyphs = "\xd9\x84\xd8\xa2\xd9\x84\xd8\xa3\xd9\x84\xd8\xa5\xd9\x84\xd8\xa7";
-       $this->arabLigHex = 'FEF5FEF6FEF5FEF6FEF7FEF8FEF7FEF8FEF9FEFAFEF9FEFAFEFBFEFCFEFBFEFC';
-
-}
-
-// mPDF 5.4.08
-function ArabJoin($str) {
-       if (!$this->arabGlyphs) { $this->InitArabic(); }
-       $crntChar = null;
-       $prevChar = null;
-       $nextChar = null;
-       $output = array();
-       $chars = preg_split('//u', $str);
-       $max = count($chars);
-       for ($i = $max - 1; $i >= 0; $i--) {
-               $crntChar = $chars[$i];
-               if ($i > 0){ $prevChar = $chars[$i - 1]; }
-               else{ $prevChar = NULL; }
-               if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) {
-                       $prevChar = $chars[$i - 2];
-                       if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) {
-                               $prevChar = $chars[$i - 3];
-                       }
-               }
-               if ($crntChar && mb_strpos($this->arabVowels, $crntChar, 0, 'utf-8') !== false) {
-                       // If next_char = nextLink && prev_char = prevLink:
-                       // Added && $prevchar (defined) else error on mb_strpos()
-                       if ($chars[$i + 1] && (mb_strpos($this->arabNextLink, $chars[$i + 1], 0, 'utf-8') !== false)  && $prevChar && (mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false)) {
-                               $output[] = $this->get_arab_glyphs($crntChar, 1);       // <final> form
-                       } 
-                       else {
-                               $output[] = $this->get_arab_glyphs($crntChar, 0);  // <isolated> form
-                       }
-                       continue;
-               }
-               // NB = &#x622 &#x623; &#x625; &#x627;     &#x644;
-               if (isset($chars[$i + 1]) && in_array($chars[$i + 1], array("\xd8\xa2","\xd8\xa3","\xd8\xa5","\xd8\xa7")) && $crntChar == "\xd9\x84"){
-                       continue;
-               }
-               if (ord($crntChar) < 128) {
-                       $output[] = $crntChar;
-                       $nextChar = $crntChar;
-                       continue;
-               }
-               $form = 0;
-               if ($prevChar == "\xd9\x84" && ($crntChar == "\xd8\xa2" || $crntChar == "\xd8\xa3" || $crntChar == "\xd8\xa5" || $crntChar == "\xd8\xa7")) {
-                       if ($chars[$i - 2] && mb_strpos($this->arabPrevLink, $chars[$i - 2], 0, 'utf-8') !== false) {
-                               $form++;        // <final> form
-                       }
-                       $pos = mb_strpos($this->arabLigGlyphs, ($prevChar . $crntChar), 0, 'utf-8');
-                       $pos = $pos*8 + $form*4;
-                       $pres = (mb_substr($this->arabLigHex, $pos, 4, 'utf-8'));
-                       // If presentation forms for mandatory ligatures with diacritics not present (even if remapped from e.g. uni0644uni0625)
-                       // try replacing with mandatory ligature Alef/lam isolated/final FEFB/FEFC + diacritic glyph
-                       if (!$this->_charDefined($this->CurrentFont['cw'], hexdec($pres)) && $this->_charDefined($this->CurrentFont['cw'], hexdec('FEFB'))) { 
-                               if ($pres=='FEF5') { $output[] = strcode2utf('&#xFEFB;&#x0653;'); }
-                               else if ($pres=='FEF6') { $output[] = strcode2utf('&#xFEFC;&#x0653;'); }
-                               else if ($pres=='FEF7') { $output[] = strcode2utf('&#xFEFB;&#x0654;'); }
-                               else if ($pres=='FEF8') { $output[] = strcode2utf('&#xFEFC;&#x0654;'); }
-                               else if ($pres=='FEF9') { $output[] = strcode2utf('&#xFEFB;&#x0655;'); }
-                               else if ($pres=='FEFA') { $output[] = strcode2utf('&#xFEFC;&#x0655;'); }
-                       }
-                       else {
-                               $output[] = strcode2utf('&#x' . $pres . ';');
-                       }
-                       $nextChar = $prevChar;
-                       continue;
-               }
-               if ($prevChar && mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false) {
-                       $form++;
-               }
-               if ($nextChar && mb_strpos($this->arabNextLink, $nextChar, 0, 'utf-8') !== false) {
-                       $form += 2;
-               }
-               $output[] = $this->get_arab_glyphs($crntChar, $form) ;
-               $nextChar = $crntChar;
-       }
-       $ra = array_reverse($output);
-       $s = implode($ra);
-       return $s;
-}
-
-// mPDF 5.7+
-function arabJoinPregCallback($matches) {
-       return $this->ArabJoin(stripslashes($matches[1]));
-}
-
-// mPDF 5.4.08
-function get_arab_glyphs($char, $type) {
-       if ($type>0 && isset($this->arabGlyphs[$char])) {
-               // If presentation form specified FB** - FE** = Arabic presentation Forms
-               if (preg_match("/[\x{FB50}-\x{FEFF}]/u",$this->arabGlyphs[$char][$type])) {
-                       $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false);
-                       if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; }
-                       else if (isset($this->CurrentFont['unAGlyphs'])) {
-                               $uni = $this->UTF8StringToArray($char, false);
-                               $pua = $uni[0] - 1536 + 62464 + 256*$type ;
-                               if ($this->_charDefined($this->CurrentFont['cw'], $pua)) { return strcode2utf('&#x' . dechex($pua) . ';'); }
-                               else return $char;
-                       }
-                       else return $char;
-               }
-               // If PUA form specified and unAGlphs font set F5** F6** F7** = Private use area used by unAGlyphs in mPDF
-               if (preg_match("/[\x{F500}-\x{F7FF}]/u",$this->arabGlyphs[$char][$type]) && isset($this->CurrentFont['unAGlyphs'])) {
-                       $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false);
-                       if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; }
-                       else return $char;
-               }
-               return $this->arabGlyphs[$char][$type]; 
-       }
-       else return $char;
-}
-/*-- END RTL --*/
-
-
-
-//===========================
-// Functions originally in htmltoolkit - moved mPDF 4.0
-
-// Call-back function Used for usort in fn _tableWrite
-
-function _cmpdom($a, $b) {
-    return ($a["dom"] < $b["dom"]) ? -1 : 1;
-}
-
-function mb_strrev($str, $enc = 'utf-8'){
-       $ch = array();
-       $ch = preg_split('//u',$str);
-       $revch = array_reverse($ch);
-       return implode('',$revch);
-}
-
-/*-- COLUMNS --*/
-// Callback function from function printcolumnbuffer in mpdf
-function columnAdjustAdd($type,$k,$xadj,$yadj,$a,$b,$c=0,$d=0,$e=0,$f=0) {
-   if ($type == 'Td') {        // xpos,ypos
-       $a += ($xadj * $k);
-       $b -= ($yadj * $k);
-       return 'BT '.sprintf('%.3F %.3F',$a,$b).' Td'; 
-   }
-   else if ($type == 're') {   // xpos,ypos,width,height
-       $a += ($xadj * $k);
-       $b -= ($yadj * $k);
-       return sprintf('%.3F %.3F %.3F %.3F',$a,$b,$c,$d).' re'; 
-   }
-   else if ($type == 'l') {    // xpos,ypos,x2pos,y2pos
-       $a += ($xadj * $k);
-       $b -= ($yadj * $k);
-       return sprintf('%.3F %.3F l',$a,$b); 
-   }
-   else if ($type == 'img') {  // width,height,xpos,ypos
-       $c += ($xadj * $k);
-       $d -= ($yadj * $k);
-       return sprintf('q %.3F 0 0 %.3F %.3F %.3F',$a,$b,$c,$d).' cm /'.$e;  
-   }
-   else if ($type == 'draw') {         // xpos,ypos
-       $a += ($xadj * $k);
-       $b -= ($yadj * $k);
-       return sprintf('%.3F %.3F m',$a,$b); 
-   }
-   else if ($type == 'bezier') {       // xpos,ypos,x2pos,y2pos,x3pos,y3pos
-       $a += ($xadj * $k);
-       $b -= ($yadj * $k);
-       $c += ($xadj * $k);
-       $d -= ($yadj * $k);
-       $e += ($xadj * $k);
-       $f -= ($yadj * $k);
-       return sprintf('%.3F %.3F %.3F %.3F %.3F %.3F',$a,$b,$c,$d,$e,$f).' c'; 
-   }
-}
-/*-- END COLUMNS --*/
-
-
-
-function ConvertColor($color="#000000"){
-       $color = trim(strtolower($color));
-       $c = false;
-       if ($color=='transparent') { return false; }
-       else if ($color=='inherit') { return false; }
-       else if (isset($this->SVGcolors[$color])) $color = $this->SVGcolors[$color];
-
-       if (preg_match('/^[\d]+$/',$color)) { $c = (array(1,$color)); } // i.e. integer only
-       else if ($color[0] == '#') { //case of #nnnnnn or #nnn
-               $cor = preg_replace('/\s+.*/','',$color);       // in case of Background: #CCC url() x-repeat etc.
-               if (strlen($cor) == 4) { // Turn #RGB into #RRGGBB
-                         $cor = "#" . $cor[1] . $cor[1] . $cor[2] . $cor[2] . $cor[3] . $cor[3];
-               }  
-               $r = hexdec(substr($cor, 1, 2));
-               $g = hexdec(substr($cor, 3, 2));
-               $b = hexdec(substr($cor, 5, 2));
-               $c = array(3,$r,$g,$b);
-       }
-       else if (preg_match('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\((.*?)\)/',$color,$m)) {     // mPDF 5.6.05
-               $type= $m[1];
-               $cores = explode(",", $m[2]);
-               $ncores = count($cores);
-               if (stristr($cores[0],'%') ) { 
-                       $cores[0] += 0; 
-                       if ($type=='rgb' || $type=='rgba') { $cores[0] = intval($cores[0]*255/100); }
-               }
-               if ($ncores>1 && stristr($cores[1],'%') ) { 
-                       $cores[1] += 0; 
-                       if ($type=='rgb' || $type=='rgba') { $cores[1] = intval($cores[1]*255/100); }
-                       if ($type=='hsl' || $type=='hsla') { $cores[1] = $cores[1]/100; }
-               }
-               if ($ncores>2 && stristr($cores[2],'%') ) { 
-                       $cores[2] += 0; 
-                       if ($type=='rgb' || $type=='rgba') { $cores[2] = intval($cores[2]*255/100); }
-                       if ($type=='hsl' || $type=='hsla') { $cores[2] = $cores[2]/100; }
-               }
-               if ($ncores>3 && stristr($cores[3],'%') ) { 
-                       $cores[3] += 0; 
-               }
-
-               if ($type=='rgb') { $c = array(3,$cores[0],$cores[1],$cores[2]); }
-               else if ($type=='rgba') { $c = array(5,$cores[0],$cores[1],$cores[2],$cores[3]*100); }
-               else if ($type=='cmyk' || $type=='device-cmyk') { $c = array(4,$cores[0],$cores[1],$cores[2],$cores[3]); }      // mPDF 5.6.05
-               else if ($type=='cmyka' || $type=='device-cmyka') { $c = array(6,$cores[0],$cores[1],$cores[2],$cores[3],$cores[4]*100); }      // mPDF 5.6.05
-               else if ($type=='hsl' || $type=='hsla') { 
-                       $conv = $this->hsl2rgb($cores[0]/360,$cores[1],$cores[2]);
-                       if ($type=='hsl') { $c = array(3,$conv[0],$conv[1],$conv[2]); }
-                       else if ($type=='hsla') { $c = array(5,$conv[0],$conv[1],$conv[2],$cores[3]*100); }
-               }
-               else if ($type=='spot') { 
-                       $name = strtoupper(trim($cores[0]));
-                       // mPDF 5.6.59
-                       if(!isset($this->spotColors[$name])) {
-                               if (isset($cores[5])) { $this->AddSpotColor($cores[0],$cores[2],$cores[3],$cores[4],$cores[5]); }
-                               else { $this->Error('Undefined spot color: '.$name); }
-                       }
-                       $c = array(2,$this->spotColors[$name]['i'],$cores[1]); 
-               }
-       }
-
-
-       // $this->restrictColorSpace
-       // 1 - allow GRAYSCALE only [convert CMYK/RGB->gray]
-       // 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB]
-       // 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK]
-       if ($this->PDFA || $this->PDFX || $this->restrictColorSpace) {
-               if ($c[0]==1) { // GRAYSCALE
-               }
-               else if ($c[0]==2) {    // SPOT COLOR
-                       if (!isset($this->spotColorIDs[$c[1]])) { die('Error: Spot colour has not been defined - '.$this->spotColorIDs[$c[1]]); }
-                       if ($this->PDFA) { 
-                               if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "Spot color specified '".$this->spotColorIDs[$c[1]]."' (converted to process color)"; }
-                               if ($this->restrictColorSpace!=3) { 
-                                       $sp = $this->spotColors[$this->spotColorIDs[$c[1]]]; 
-                                       $c = $this->cmyk2rgb(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k'])); 
-                               }
-                       }
-                       else if ($this->restrictColorSpace==1) { 
-                               $sp = $this->spotColors[$this->spotColorIDs[$c[1]]]; 
-                               $c = $this->cmyk2gray(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k'])); 
-                       }
-               }
-               else if ($c[0]==3) {    // RGB
-                       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { 
-                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color specified '".$color."' (converted to CMYK)"; }
-                               $c = $this->rgb2cmyk($c); 
-                       }
-                       else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); }
-                       else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); }
-               }
-               else if ($c[0]==4) {    // CMYK
-                       if ($this->PDFA && $this->restrictColorSpace!=3) { 
-                               if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "CMYK color specified '".$color."' (converted to RGB)"; }
-                               $c = $this->cmyk2rgb($c); 
-                       }
-                       else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); }
-                       else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); }
-               }
-               else if ($c[0]==5) {    // RGBa
-                       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { 
-                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to CMYK without transparency)"; }
-                               $c = $this->rgb2cmyk($c); 
-                               $c = array(4, $c[1], $c[2], $c[3], $c[4]);
-                       }
-                       else if ($this->PDFA && $this->restrictColorSpace!=3) { 
-                               if (!$this->PDFAauto) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to RGB without transparency)"; }
-                               $c = $this->rgb2cmyk($c); 
-                               $c = array(4, $c[1], $c[2], $c[3], $c[4]);
-                       }
-                       else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); }
-                       else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); }
-               }
-               else if ($c[0]==6) {    // CMYKa
-                       if ($this->PDFA && $this->restrictColorSpace!=3) { 
-                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to RGB without transparency)"; }
-                               $c = $this->cmyk2rgb($c); 
-                               $c = array(3, $c[1], $c[2], $c[3]);
-                       }
-                       else if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { 
-                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to CMYK without transparency)"; }
-                               $c = $this->cmyk2rgb($c); 
-                               $c = array(3, $c[1], $c[2], $c[3]);
-                       }
-                       else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); }
-                       else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); }
-               }
-       }
-       if (is_array($c)) {
-               $c = array_pad($c, 6, 0);
-               $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); 
-       }
-       return $cstr;
-}
-
-function rgb2gray($c) {
-       if (isset($c[4])) { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07)), ord(1), $c[4]); }
-       else { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07))); }
-}
-
-function cmyk2gray($c) {
-       $rgb = $this->cmyk2rgb($c);
-       return $this->rgb2gray($rgb);
-}
-
-function rgb2cmyk($c) {
-       $cyan = 1 - ($c[1] / 255);
-       $magenta = 1 - ($c[2] / 255);
-       $yellow = 1 - ($c[3] / 255);
-       $min = min($cyan, $magenta, $yellow);
-
-       if ($min == 1) {
-               if ($c[0]==5) { return array (6,100,100,100,100, $c[4]); }
-               else { return array (4,100,100,100,100); }
-               // For K-Black
-               //if ($c[0]==5) { return array (6,0,0,0,100, $c[4]); }
-               //else { return array (4,0,0,0,100); }
-       }
-       $K = $min;
-       $black = 1 - $K;
-       if ($c[0]==5) { return array (6,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100, $c[4]); }
-       else { return array (4,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100); }
-}
-
-
-function cmyk2rgb($c) {
-       $rgb = array();
-       $colors = 255 - ($c[4]*2.55);
-       $rgb[0] = intval($colors * (255 - ($c[1]*2.55))/255);
-       $rgb[1] = intval($colors * (255 - ($c[2]*2.55))/255);
-       $rgb[2] = intval($colors * (255 - ($c[3]*2.55))/255);
-       if ($c[0]==6) { return array (5,$rgb[0],$rgb[1],$rgb[2], $c[5]); }
-       else { return array (3,$rgb[0],$rgb[1],$rgb[2]); }
-}
-
-function rgb2hsl($var_r, $var_g, $var_b) {
-    $var_min = min($var_r,$var_g,$var_b);
-    $var_max = max($var_r,$var_g,$var_b);
-    $del_max = $var_max - $var_min;
-    $l = ($var_max + $var_min) / 2;
-    if ($del_max == 0) {
-            $h = 0;
-            $s = 0;
-    }
-    else {
-            if ($l < 0.5) { $s = $del_max / ($var_max + $var_min); }
-            else { $s = $del_max / (2 - $var_max - $var_min); }
-            $del_r = ((($var_max - $var_r) / 6) + ($del_max / 2)) / $del_max;
-            $del_g = ((($var_max - $var_g) / 6) + ($del_max / 2)) / $del_max;
-            $del_b = ((($var_max - $var_b) / 6) + ($del_max / 2)) / $del_max;
-            if ($var_r == $var_max) { $h = $del_b - $del_g; }
-            elseif ($var_g == $var_max)  { $h = (1 / 3) + $del_r - $del_b; }
-            elseif ($var_b == $var_max)  { $h = (2 / 3) + $del_g - $del_r; };
-            if ($h < 0) { $h += 1; }
-            if ($h > 1) { $h -= 1; }
-    }
-    return array($h,$s,$l);
-}
-
-
-function hsl2rgb($h2,$s2,$l2) {
-       // Input is HSL value of complementary colour, held in $h2, $s, $l as fractions of 1
-       // Output is RGB in normal 255 255 255 format, held in $r, $g, $b
-       // Hue is converted using function hue_2_rgb, shown at the end of this code
-       if ($s2 == 0) {
-               $r = $l2 * 255;
-               $g = $l2 * 255;
-               $b = $l2 * 255;
-       }
-       else {
-               if ($l2 < 0.5) { $var_2 = $l2 * (1 + $s2); }
-               else { $var_2 = ($l2 + $s2) - ($s2 * $l2); }
-               $var_1 = 2 * $l2 - $var_2;
-               $r = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 + (1 / 3)));
-               $g = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2));
-               $b = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 - (1 / 3)));
-       }
-       return array($r,$g,$b);
-}
-
-function hue_2_rgb($v1,$v2,$vh) {
-       // Function to convert hue to RGB, called from above
-       if ($vh < 0) { $vh += 1; };
-       if ($vh > 1) { $vh -= 1; };
-       if ((6 * $vh) < 1) { return ($v1 + ($v2 - $v1) * 6 * $vh); };
-       if ((2 * $vh) < 1) { return ($v2); };
-       if ((3 * $vh) < 2) { return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6)); };
-       return ($v1);
-}
-
-function _invertColor($cor) {
-       if ($cor[0]==3 || $cor[0]==5) { // RGB
-               return array(3, (255-$cor[1]), (255-$cor[2]), (255-$cor[3]));
-       }
-       else if ($cor[0]==4 || $cor[0]==6) {    // CMYK
-               return array(4, (100-$cor[1]), (100-$cor[2]), (100-$cor[3]), (100-$cor[4]));
-       }
-       else if ($cor[0]==1) {  // Grayscale
-               return array(1, (255-$cor[1]));
-       }       
-       // Cannot cope with non-RGB colors at present
-       die('Error in _invertColor - trying to invert non-RGB color');
-}
-
-function _colAtoString($cor) {
-       $s = '';
-       if ($cor{0}==1) $s = 'rgb('.ord($cor{1}).','.ord($cor{1}).','.ord($cor{1}).')';
-       else if ($cor{0}==2) $s = 'spot('.ord($cor{1}).','.ord($cor{2}).')';            // SPOT COLOR
-       else if ($cor{0}==3) $s = 'rgb('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).')';
-       else if ($cor{0}==4) $s = 'cmyk('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).')';
-       else if ($cor{0}==5) $s = 'rgba('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.sprintf('%0.2F',ord($cor{4})/100).')';
-       else if ($cor{0}==6) $s = 'cmyka('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).','.sprintf('%0.2F',ord($cor{5})/100).')';
-       return $s;
-}
-
-function ConvertSize($size=5,$maxsize=0,$fontsize=false,$usefontsize=true){
-// usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
-// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
-// For text $maxsize = Fontsize
-// Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
-  //Identify size (remember: we are using 'mm' units here)
-       $size = trim(strtolower($size));
-
-  if ( $size == 'thin' ) $size = 1*(25.4/$this->dpi); //1 pixel width for table borders
-  elseif ( stristr($size,'px') ) $size *= (25.4/$this->dpi); //pixels
-  elseif ( stristr($size,'cm') ) $size *= 10; //centimeters
-  elseif ( stristr($size,'mm') ) $size += 0; //millimeters
-  elseif ( stristr($size,'pt') ) $size *= 25.4/72; //72 pts/inch
-  elseif ( stristr($size,'rem') ) {    // mPDF 5.6.12
-       $size += 0; //make "0.83rem" become simply "0.83" 
-       $size *= ($this->default_font_size / _MPDFK);
-  }
-  elseif ( stristr($size,'em') ) {
-       $size += 0; //make "0.83em" become simply "0.83" 
-       if ($fontsize) { $size *= $fontsize; }
-       else { $size *= $maxsize; }
-  }
-  elseif ( stristr($size,'%') ) {
-       $size += 0; //make "90%" become simply "90" 
-       if ($fontsize && $usefontsize) { $size *= $fontsize/100; }
-       else { $size *= $maxsize/100; }
-  }
-  elseif ( stristr($size,'in') ) $size *= 25.4; //inches 
-  elseif ( stristr($size,'pc') ) $size *= 38.1/9; //PostScript picas 
-  elseif ( stristr($size,'ex') ) {     // Approximates "ex" as half of font height
-       $size += 0; //make "3.5ex" become simply "3.5" 
-       if ($fontsize) { $size *= $fontsize/2; }
-       else { $size *= $maxsize/2; }
-  }
-  elseif ( $size == 'medium' ) $size = 3*(25.4/$this->dpi); //3 pixel width for table borders
-  elseif ( $size == 'thick' ) $size = 5*(25.4/$this->dpi); //5 pixel width for table borders
-  elseif ($size == 'xx-small') {
-       if ($fontsize) { $size *= $fontsize*0.7; }
-       else { $size *= $maxsize*0.7; }
-  }
-  elseif ($size == 'x-small') {
-       if ($fontsize) { $size *= $fontsize*0.77; }
-       else { $size *= $maxsize*0.77; }
-  }
-  elseif ($size == 'small') {
-       if ($fontsize) { $size *= $fontsize*0.86; }
-       else { $size *= $maxsize*0.86; }
-  }
-  elseif ($size == 'medium') {
-       if ($fontsize) { $size *= $fontsize; }
-       else { $size *= $maxsize; }
-  }
-  elseif ($size == 'large') {
-       if ($fontsize) { $size *= $fontsize*1.2; }
-       else { $size *= $maxsize*1.2; }
-  }
-  elseif ($size == 'x-large') {
-       if ($fontsize) { $size *= $fontsize*1.5; }
-       else { $size *= $maxsize*1.5; }
-  }
-  elseif ($size == 'xx-large') {
-       if ($fontsize) { $size *= $fontsize*2; }
-       else { $size *= $maxsize*2; }
-  }
-  else $size *= (25.4/$this->dpi); //nothing == px
-  
-  return $size;
-}
-
-
-function lesser_entity_decode($html) {
-  //supports the most used entity codes (only does ascii safe characters)
-       //$html = str_replace("&nbsp;"," ",$html);      // mPDF 5.3.59
-       $html = str_replace("&lt;","<",$html);
-       $html = str_replace("&gt;",">",$html);
-
-       $html = str_replace("&apos;","'",$html);
-       $html = str_replace("&quot;",'"',$html);
-       $html = str_replace("&amp;","&",$html);
-       return $html;
-}
-
-function AdjustHTML($html, $tabSpaces=8) {
-       //Try to make the html text more manageable (turning it into XHTML)
-       if (PHP_VERSION_ID < 50307) {
-               if (strlen($html) > 100000) {
-                       if (PHP_VERSION_ID < 50200) $this->Error("The HTML code is more than 100,000 characters. You should use WriteHTML() with smaller string lengths.");
-                       else ini_set("pcre.backtrack_limit","1000000");
-               }
-       }
-
-/*-- ANNOTATIONS --*/
-       preg_match_all("/(<annotation.*?>)/si", $html, $m);
-       if (count($m[1])) { 
-               for($i=0;$i<count($m[1]);$i++) {
-                       $sub = preg_replace("/\n/si", "\xbb\xa4\xac", $m[1][$i]);
-                       $html = preg_replace('/'.preg_quote($m[1][$i], '/').'/si', $sub, $html); 
-               }
-       }
-/*-- END ANNOTATIONS --*/
-
-       preg_match_all("/(<svg.*?<\/svg>)/si", $html, $svgi);
-       if (count($svgi[0])) { 
-               for($i=0;$i<count($svgi[0]);$i++) {
-                       $file = _MPDF_TEMP_PATH.'_tempSVG'.uniqid(rand(1,100000),true).'_'.$i.'.svg';
-                       //Save to local file
-                       file_put_contents($file, $svgi[0][$i]);
-                       $html = str_replace($svgi[0][$i], '<img src="'.$file.'" />', $html);    // mPDF 5.5.18
-               }
-       }
-
-       //Remove javascript code from HTML (should not appear in the PDF file)
-       $html = preg_replace('/<script.*?<\/script>/is','',$html);
-
-       //Remove special comments
-       $html = preg_replace('/<!--mpdf/i','',$html);
-       $html = preg_replace('/mpdf-->/i','',$html);
-
-       //Remove comments from HTML (should not appear in the PDF file)
-       $html = preg_replace('/<!--.*?-->/s','',$html);
-
-       $html = preg_replace('/\f/','',$html); //replace formfeed by nothing
-       $html = preg_replace('/\r/','',$html); //replace carriage return by nothing
-
-       // Well formed XHTML end tags
-       $html = preg_replace('/<(br|hr)\/>/i',"<\\1 />",$html);
-       // Get rid of empty <thead></thead>
-       $html = preg_replace('/<thead>\s*<\/thead>/i','',$html);
-       $html = preg_replace('/<tfoot>\s*<\/tfoot>/i','',$html);
-       $html = preg_replace('/<table[^>]*>\s*<\/table>/i','',$html);
-       $html = preg_replace('/<tr>\s*<\/tr>/i','',$html);
-
-       // Remove spaces at end of table cells
-       $html = preg_replace("/[ \n\r]+<\/t(d|h)/",'</t\\1',$html);             // mPDF 5.5.09
-
-       $html = preg_replace("/[ ]*<dottab\s*[\/]*>[ ]*/",'<dottab />',$html);
-
-       // Concatenates any Substitute characters from symbols/dingbats
-       $html = str_replace('</tts><tts>','|',$html);
-       $html = str_replace('</ttz><ttz>','|',$html);
-       $html = str_replace('</tta><tta>','|',$html);
-
-       $html = preg_replace('/<br \/>\s*/is',"<br />",$html);
-
-       $html = preg_replace('/<wbr[ \/]*>\s*/is',"&#173;",$html);      // mPDF 5.6.04
-
-       // Preserve '\n's in content between the tags <pre> and </pre>
-       if (preg_match('/<pre/',$html)) {
-               $html_a = preg_split('/(\<\/?pre[^\>]*\>)/', $html, -1, 2);
-               $h = array();
-               $c=0;
-               foreach($html_a AS $s) {
-                       if ($c>1 && preg_match('/^<\/pre/i',$s)) { $c--; $s=preg_replace('/<\/pre/i','</innerpre',$s); }
-                       else if ($c>0 && preg_match('/^<pre/i',$s)) { $c++; $s=preg_replace('/<pre/i','<innerpre',$s); }
-                       else if (preg_match('/^<pre/i',$s)) { $c++; }
-                       else if (preg_match('/^<\/pre/i',$s)) { $c--; }
-                       array_push($h, $s);
-               }
-               $html = implode("", $h);
-       }
-       $thereispre = preg_match_all('#<pre(.*?)>(.*?)</pre>#si',$html,$temp);
-       // Preserve '\n's in content between the tags <textarea> and </textarea>
-       $thereistextarea = preg_match_all('#<textarea(.*?)>(.*?)</textarea>#si',$html,$temp2);
-       $html = preg_replace('/[\n]/',' ',$html); //replace linefeed by spaces
-       $html = preg_replace('/[\t]/',' ',$html); //replace tabs by spaces
-
-       // Converts < to &lt; when not a tag
-       $html = preg_replace('/<([^!\/a-zA-Z])/i','&lt;\\1',$html);
-       $html = preg_replace("/[ ]+/",' ',$html);
-
-       $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li></\\1l',$html);
-       $html = preg_replace('/\/(u|o)l>\s+<\/li/i','/\\1l></li',$html);
-       $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li></\\1l',$html);
-       $html = preg_replace('/\/li>\s+<li/i','/li><li',$html);
-       $html = preg_replace('/<(u|o)l([^>]*)>[ ]+/i','<\\1l\\2>',$html);
-       $html = preg_replace('/[ ]+<(u|o)l/i','<\\1l',$html);
-
-       $iterator = 0;
-       while($thereispre) //Recover <pre attributes>content</pre>
-       {
-               $temp[2][$iterator] = preg_replace('/<([^a-zA-Z_:])/','&lt;\\1',$temp[2][$iterator]);   // mPDF 5.7.2
-               $temp[2][$iterator] = preg_replace_callback("/^([^\n\t]*?)\t/m", array($this, 'tabs2spaces_callback'), $temp[2][$iterator]);    // mPDF 5.7+
-               $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]);
-
-               $temp[2][$iterator] = preg_replace('/\n/',"<br />",$temp[2][$iterator]);
-               $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]);
-               //$html = preg_replace('#<pre(.*?)>(.*?)</pre>#si','<erp'.$temp[1][$iterator].'>'.$temp[2][$iterator].'</erp>',$html,1);
-               $html = preg_replace('#<pre(.*?)>(.*?)</pre>#si','<erp'.$temp[1][$iterator].'>'.str_replace('$','\$',$temp[2][$iterator]).'</erp>',$html,1);    // mPDF 5.7+
-               $thereispre--;
-               $iterator++;
-       }
-       $iterator = 0;
-       while($thereistextarea) //Recover <textarea attributes>content</textarea>
-       {
-               $temp2[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp2[2][$iterator]);
-               $temp2[2][$iterator] = str_replace('\\',"\\\\",$temp2[2][$iterator]);   // mPDF 5.3.88
-               $html = preg_replace('#<textarea(.*?)>(.*?)</textarea>#si','<aeratxet'.$temp2[1][$iterator].'>'.trim($temp2[2][$iterator]) .'</aeratxet>',$html,1);
-               $thereistextarea--;
-               $iterator++;
-       }
-       //Restore original tag names
-       $html = str_replace("<erp","<pre",$html);
-       $html = str_replace("</erp>","</pre>",$html);
-       $html = str_replace("<aeratxet","<textarea",$html);
-       $html = str_replace("</aeratxet>","</textarea>",$html);
-       $html = str_replace("</innerpre","</pre",$html); 
-       $html = str_replace("<innerpre","<pre",$html); 
-
-       $html = preg_replace('/<textarea([^>]*)><\/textarea>/si','<textarea\\1> </textarea>',$html);
-       $html = preg_replace('/(<table[^>]*>)\s*(<caption)(.*?<\/caption>)(.*?<\/table>)/si','\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3',$html);      // *TABLES*
-       $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*<table)/si','<\\1\\2 keep-with-table="1"\\3',$html);        // *TABLES*
-       $html = preg_replace("/\xbb\xa4\xac/", "\n", $html);
-
-       return $html;
-}
-// mPDF 5.7+
-function tabs2spaces_callback($matches) {
-       return (stripslashes($matches[1]) . str_repeat(' ', $this->tabSpaces - (mb_strlen(stripslashes($matches[1])) % $this->tabSpaces)));
-}
-// mPDF 5.7+
-function date_callback($matches) {
-       return date($matches[1]);
-}
-
-/*-- LISTS --*/
-function dec2other($num, $cp) {
-       $nstr = (string) $num;
-       $rnum = '';
-       for ($i=0;$i<strlen($nstr);$i++) { 
-               if ($this->_charDefined($this->CurrentFont['cw'],$cp+intval($nstr[$i]))) { // contains arabic-indic numbers
-                       $rnum .= code2utf($cp+intval($nstr[$i]));
-               }
-               else { $rnum .= $nstr[$i]; }
-       }
-       return $rnum;
-}
-
-function dec2alpha($valor,$toupper="true"){
-// returns a string from A-Z to AA-ZZ to AAA-ZZZ
-// OBS: A = 65 ASCII TABLE VALUE
-  if (($valor < 1)  || ($valor > 18278)) return "?"; //supports 'only' up to 18278
-  $c1 = $c2 = $c3 = '';
-  if ($valor > 702) // 3 letters (up to 18278)
-    {
-      $c1 = 65 + floor(($valor-703)/676);
-      $c2 = 65 + floor((($valor-703)%676)/26);
-      $c3 = 65 + floor((($valor-703)%676)%26);
-    }
-  elseif ($valor > 26) // 2 letters (up to 702)
-  {
-      $c1 = (64 + (int)(($valor-1) / 26));
-      $c2 = (64 + (int)($valor % 26));
-      if ($c2 == 64) $c2 += 26;
-  }
-  else // 1 letter (up to 26)
-  {
-      $c1 = (64 + $valor);
-  }
-  $alpha = chr($c1);
-  if ($c2 != '') $alpha .= chr($c2);
-  if ($c3 != '') $alpha .= chr($c3);
-  if (!$toupper) $alpha = strtolower($alpha);
-  return $alpha;
-}
-
-
-function dec2roman($valor,$toupper=true){
- //returns a string as a roman numeral
-  $r1=$r2=$r3=$r4='';
-  if (($valor >= 5000) || ($valor < 1)) return "?"; //supports 'only' up to 4999
-  $aux = (int)($valor/1000);
-  if ($aux!==0)
-  {
-    $valor %= 1000;
-    while($aux!==0)
-    {
-       $r1 .= "M";
-       $aux--;
-    }
-  }
-  $aux = (int)($valor/100);
-  if ($aux!==0)
-  {
-    $valor %= 100;
-    switch($aux){
-       case 3: $r2="C";
-       case 2: $r2.="C";
-       case 1: $r2.="C"; break;
-         case 9: $r2="CM"; break;
-         case 8: $r2="C";
-         case 7: $r2.="C";
-       case 6: $r2.="C";
-      case 5: $r2="D".$r2; break;
-      case 4: $r2="CD"; break;
-      default: break;
-         }
-  }
-  $aux = (int)($valor/10);
-  if ($aux!==0)
-  {
-    $valor %= 10;
-    switch($aux){
-       case 3: $r3="X";
-       case 2: $r3.="X";
-       case 1: $r3.="X"; break;
-       case 9: $r3="XC"; break;
-       case 8: $r3="X";
-       case 7: $r3.="X";
-         case 6: $r3.="X";
-      case 5: $r3="L".$r3; break;
-      case 4: $r3="XL"; break;
-      default: break;
-    }
-  }
-  switch($valor){
-       case 3: $r4="I";
-       case 2: $r4.="I";
-       case 1: $r4.="I"; break;
-       case 9: $r4="IX"; break;
-       case 8: $r4="I";
-    case 7: $r4.="I";
-    case 6: $r4.="I";
-    case 5: $r4="V".$r4; break;
-    case 4: $r4="IV"; break;
-    default: break;
-  }
-  $roman = $r1.$r2.$r3.$r4;
-  if (!$toupper) $roman = strtolower($roman);
-  return $roman;
-}
-/*-- END LISTS --*/
-
-
-//===========================
-/*-- IMPORTS --*/
-function SetImportUse() {
-       $this->enableImports = true;
-       ini_set('auto_detect_line_endings',1);
-       require_once(_MPDF_PATH."mpdfi/pdf_context.php");
-       require_once(_MPDF_PATH."mpdfi/pdf_parser.php");
-       require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php");
-}
-
-// from mPDFI
-function hex2str($hex) {
-       return pack("H*", str_replace(array("\r","\n"," "),"", $hex));
-}
-    
-function str2hex($str) {
-       return current(unpack("H*",$str));
-}
-
-    
-function pdf_write_value(&$value) {
-       switch ($value[0]) {
-               case PDF_TYPE_NUMERIC :
-               case PDF_TYPE_TOKEN :
-                       // A numeric value or a token.
-                       // Simply output them
-                       $this->_out($value[1]." ", false);
-                       break;
-
-               case PDF_TYPE_ARRAY :
-                       // An array. Output the proper
-                       // structure and move on.
-                       $this->_out("[",false);
-                       for ($i = 0; $i < count($value[1]); $i++) {
-                               $this->pdf_write_value($value[1][$i]);
-                       }
-                       $this->_out("]");
-                       break;
-
-               case PDF_TYPE_DICTIONARY :
-                       // A dictionary.
-                       $this->_out("<<",false);
-                       reset ($value[1]);
-                       while (list($k, $v) = each($value[1])) {
-                               $this->_out($k . " ",false);
-                               $this->pdf_write_value($v);
-                       }
-                       $this->_out(">>");
-                       break;
-
-               case PDF_TYPE_OBJREF :
-                       // An indirect object reference
-                       // Fill the object stack if needed
-                       $cpfn =& $this->current_parser->filename;
-                       if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) {
-                                       $this->_newobj(false,true);
-                                       $this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
-                                       $this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
-                       }
-                       $objid = $this->_don_obj_stack[$cpfn][$value[1]][0];
-                       $this->_out("{$objid} 0 R"); //{$value[2]}
-                       break;
-
-               case PDF_TYPE_STRING :
-                       if ($this->encrypted) {
-                               $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
-                               $value[1] = $this->_escape($value[1]);
-                       } 
-                       // A string.
-                       $this->_out('('.$value[1].')');
-                       break;
-
-               case PDF_TYPE_STREAM :
-                       // A stream. First, output the
-                       // stream dictionary, then the
-                       // stream data itself.
-                       $this->pdf_write_value($value[1]);
-                       if ($this->encrypted) {
-                               $value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
-                       }
-                       $this->_out("stream");
-                       $this->_out($value[2][1]);
-                       $this->_out("endstream");
-                       break;
-
-               case PDF_TYPE_HEX :
-                       if ($this->encrypted) {
-                               $value[1] = $this->hex2str($value[1]);
-                               $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
-                               // remake hexstring of encrypted string
-                               $value[1] = $this->str2hex($value[1]);
-                       }
-                       $this->_out("<".$value[1].">");
-                       break;
-
-               case PDF_TYPE_NULL :
-                       // The null object.
-                       $this->_out("null");
-                       break;
-       }
-}
-
-// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================
-function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) {
-       $pdf = file_get_contents($file_in);
-
-       if (!is_array($search)) {
-               $x = $search;
-               $search = array($x);
-       }
-       if (!is_array($replacement)) {
-               $x = $replacement;
-               $search = array($x);
-       }
-
-       if (!$this->onlyCoreFonts && !$this->usingCoreFont) {   
-         foreach($search AS $k=>$val) {
-               $search[$k] = $this->UTF8ToUTF16BE($search[$k] , false);
-               $search[$k] = $this->_escape($search[$k]); 
-               $replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false);
-               $replacement[$k] = $this->_escape($replacement[$k]); 
-         }
-       }
-       else {
-         foreach($replacement AS $k=>$val) {
-               $replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_enc,'utf-8'); 
-               $replacement[$k] = $this->_escape($replacement[$k]); 
-         }
-       }
-
-       // Get xref into array
-       $xref = array();
-       preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m);
-       $xref_objid = $m[1];
-       preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x);
-       for($i=0; $i<count($x[0]); $i++) {
-               $xref[] = array(intval($x[1][$i]), $x[2][$i], $x[3][$i]);
-       }
-
-       $changes = array();
-       preg_match("/<<\s*\/Type\s*\/Pages\s*\/Kids\s*\[(.*?)\]\s*\/Count/s",$pdf,$m);
-       preg_match_all("/(\d+) 0 R /s",$m[1],$o);
-       $objlist = $o[1];
-       foreach($objlist AS $obj) {
-         if ($this->compress) {
-               preg_match("/".($obj+1)." 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
-         }
-         else {
-               preg_match("/".($obj+1)." 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
-         }
-         $s = $m[2];
-         if (!$s) { continue; }
-         $oldlen = $m[1];
-         if ($this->encrypted) {
-               $s = $this->_RC4($this->_objectkey($obj+1), $s);
-         }
-         if ($this->compress) {
-               $s = gzuncompress($s);
-         }
-         foreach($search AS $k=>$val) {
-               $s = str_replace($search[$k],$replacement[$k],$s);
-         }
-         if ($this->compress) {
-               $s = gzcompress($s);
-         }
-         if ($this->encrypted) {
-               $s = $this->_RC4($this->_objectkey($obj+1), $s);
-         }
-         $newlen = strlen($s);
-         $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen ));
-         if ($this->compress) {
-               $newstr = ($obj+1) . " 0 obj\n<</Filter /FlateDecode /Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
-         }
-         else {
-               $newstr = ($obj+1) . " 0 obj\n<</Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
-         }
-         $pdf = str_replace($m[0],$newstr,$pdf);
-       }
-
-       // Update xref in PDF
-       krsort($changes);
-       $newxref = "xref\n0 ".$xref_objid."\n";
-       foreach($xref AS $v) { 
-               foreach($changes AS $ck => $cv) {
-                       if ($v[0] > $ck) { $v[0] += $cv; }
-               }
-               $newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n";
-       }
-       $newxref .= "trailer";
-       $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf);
-
-       // Update startxref in PDF
-       preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m);
-       $startxref = $m[1];
-       $startxref += array_sum($changes);
-       $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf);
-
-       // OUTPUT
-       switch($dest) {
-               case 'I':
-                       //Send to standard output
-                       if(isset($_SERVER['SERVER_NAME']))
-                       {
-                               //We send to a browser
-                               Header('Content-Type: application/pdf');
-                               Header('Content-Length: '.strlen($pdf));
-                               Header('Content-disposition: inline; filename='.$file_out);
-                       }
-                       echo $pdf;
-                       break;
-               case 'F':
-                       //Save to local file
-                       if (!$file_out) { $file_out = 'mpdf.pdf'; }
-                       $f=fopen($file_out,'wb');
-                       if(!$f) die('Unable to create output file: '.$file_out);
-                       fwrite($f,$pdf,strlen($pdf));
-                       fclose($f);
-                       break;
-               case 'S':
-                       //Return as a string
-                       return $pdf;
-               case 'D':
-               default:
-                       //Download file
-                       if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
-                               Header('Content-Type: application/force-download');
-                       else
-                               Header('Content-Type: application/octet-stream');
-                       Header('Content-Length: '.strlen($pdf));
-                       Header('Content-disposition: attachment; filename='.$file_out);
-                       echo $pdf;
-                       break;
-       }
-}
-
-
-function GetTemplateSize($tplidx, $_w=0, $_h=0) {
-       if (!$this->tpls[$tplidx])
-               return false;
-       $w = $this->tpls[$tplidx]['box']['w'];
-       $h = $this->tpls[$tplidx]['box']['h'];
-       if ($_w == 0 and $_h == 0) {
-               $_w = $w;
-               $_h = $h;
-       }
-       if($_w==0)
-               $_w=$_h*$w/$h;
-       if($_h==0)
-               $_h=$_w*$h/$w;
-       return array("w" => $_w, "h" => $_h);
-}
-
-// Thumbnails
-function Thumbnail($file, $npr=3, $spacing=10) {       //$npr = number per row
-       $w = (($this->pgwidth + $spacing)/$npr) - $spacing;
-       $oldlinewidth = $this->LineWidth;
-       $this->SetLineWidth(0.02); 
-       $this->SetDColor($this->ConvertColor(0));       
-       $h = 0;
-       $maxh = 0;
-       $x = $_x = $this->lMargin;
-       $_y = $this->tMargin;
-       if ($this->y==0) { $y = $_y; } else { $y = $this->y; }
-       $pagecount = $this->SetSourceFile($file);
-       for ($n = 1; $n <= $pagecount; $n++) {
-               $tplidx = $this->ImportPage($n);
-               $size = $this->useTemplate($tplidx, $x, $y, $w);
-               $this->Rect($x, $y, $size['w'], $size['h']);
-               $h = max($h, $size['h']);
-               $maxh = max($h, $maxh);
-               if ($n % $npr == 0) {
-                  if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) {
-                       $this->AddPage();  
-                       $x = $_x;
-                       $y = $_y;        
-                  }
-                  else {
-                       $y += $h+$spacing ;
-                       $x = $_x;
-                       $h = 0;
-                  }
-               }
-               else {
-                       $x += $w+$spacing ;
-               }
-       }
-       $this->SetLineWidth($oldlinewidth);
-}
-
-function SetSourceFile($filename) {
-       $this->current_filename = $filename;
-       $fn =& $this->current_filename;
-       if (!isset($this->parsers[$fn]))
-               // $this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this);
-               $this->parsers[$fn] = new fpdi_pdf_parser($fn,$this);
-       if (!$this->parsers[$fn]->success) {
-               $this->Error($this->parsers[$fn]->errormsg);    // Delete this line to return false on fail
-               return false;
-       }
-       $this->current_parser =& $this->parsers[$fn];
-       return $this->parsers[$fn]->getPageCount();
-}
-function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') {
-       $fn =& $this->current_filename;
-       $parser =& $this->parsers[$fn];
-       $parser->setPageno($pageno);
-
-       $this->tpl++;
-       $this->tpls[$this->tpl] = array();
-       $tpl =& $this->tpls[$this->tpl];
-       $tpl['parser'] =& $parser;
-       $tpl['resources'] = $parser->getPageResources();
-       $tpl['buffer'] = $parser->getContent();
-       if (!in_array($boxName, $parser->availableBoxes))
-               return $this->Error(sprintf("Unknown box: %s", $boxName));
-       $pageboxes = $parser->getPageBoxes($pageno);
-       /**
-        * MediaBox
-        * CropBox: Default -> MediaBox
-        * BleedBox: Default -> CropBox
-        * TrimBox: Default -> CropBox
-        * ArtBox: Default -> CropBox
-        */
-       if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox"))
-               $boxName = "/CropBox";
-       if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox")
-               $boxName = "/MediaBox";
-       if (!isset($pageboxes[$boxName]))
-               return false;
-       $box = $pageboxes[$boxName];
-
-       $tpl['box'] = $box;
-       // To build an array that can be used by useTemplate()
-       $this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box);
-       // An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects()
-       $tpl['x'] = 0;
-       $tpl['y'] = 0;
-       $tpl['w'] = $tpl['box']['w'] ;
-       $tpl['h'] = $tpl['box']['h'] ;
-       if ($crop_w) { $tpl['box']['w'] = $crop_w; }
-       if ($crop_h) { $tpl['box']['h'] = $crop_h; }
-       if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; }
-       if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y  - $crop_h ; }
-
-       $page =& $parser->pages[$parser->pageno];
-       // fix for rotated pages
-       $rotation = $parser->getPageRotation($pageno);
-
-       if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) {
-               $steps = $angle / 90;
-
-               $_w = $tpl['w'];
-               $_h = $tpl['h'];
-               $tpl['w'] = $steps % 2 == 0 ? $_w : $_h;
-               $tpl['h'] = $steps % 2 == 0 ? $_h : $_w;
-               if ($steps % 2 != 0) {
-                       $x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w'];
-               } else {
-                       $x = $tpl['w'];
-                       $y = $tpl['h'];
-               }
-               $cx=($x/2+$tpl['box']['x'])*_MPDFK;
-               $cy=($y/2+$tpl['box']['y'])*_MPDFK;
-               $angle*=-1; 
-               $angle*=M_PI/180;
-               $c=cos($angle);
-               $s=sin($angle);
-               $tpl['box']['w'] = $tpl['w'] ;
-               $tpl['box']['h'] = $tpl['h'] ;
-               $tpl['buffer'] = sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']);
-       }
-       return $this->tpl;
-}
-function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) {
-       if (!isset($this->tpls[$tplidx]))
-               $this->Error("Template does not exist!");
-       if($this->state==0) { $this->AddPage(); }
-       $out = 'q 0 J 1 w 0 j 0 G'."\n"; // reset standard values
-       $x = $this->tpls[$tplidx]['x'];
-       $y = $this->tpls[$tplidx]['y'];
-       $w = $this->tpls[$tplidx]['w'];
-       $h = $this->tpls[$tplidx]['h'];
-       if ($_x == null) { $_x = $x; }
-       if ($_y == null) { $_y = $y; }
-       if ($_x === -1) { $_x = $this->x; }
-       if ($_y === -1) { $_y = $this->y; }
-
-       $wh = $this->getTemplateSize($tplidx,$_w,$_h);
-       $_w = $wh['w'];
-       $_h = $wh['h'];
-       $out .= sprintf("q %.4F 0 0 %.4F %.2F %.2F cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*_MPDFK, ($this->h-($_y+$_h))*_MPDFK)."\n"; 
-       $out .= $this->tplprefix.$tplidx." Do Q\n";
-
-       $s = array("w" => $_w, "h" => $_h);
-       $out .= "Q\n";
-       $this->pages[$this->page] = $out . $this->pages[$this->page];
-       return $s;
-}
-function SetPageTemplate($tplidx='') {
-       if (!isset($this->tpls[$tplidx])) {
-               $this->pageTemplate = '';
-               return false;
-       }
-       $this->pageTemplate = $tplidx;
-}
-function SetDocTemplate($file='', $continue=0) {
-       $this->docTemplate = $file;
-       $this->docTemplateContinue = $continue;
-}
-/*-- END IMPORTS --*/
-
-
-/* ---------------------------------------------- */
-/* ---------------------------------------------- */
-/* ---------------------------------------------- */
-/* ---------------------------------------------- */
-/* ---------------------------------------------- */
-
-// JAVASCRIPT
-function _set_object_javascript ($string) {
-       $this->_newobj();
-       $this->_out('<<');
-       $this->_out('/S /JavaScript ');
-       $this->_out('/JS '.$this->_textstring($string));
-       $this->_out('>>');
-       $this->_out('endobj');
-}
-
-function SetJS($script) {
-       $this->js = $script;
-}
-
-
-
-
-}//end of Class
-
-
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php
deleted file mode 100644 (file)
index fc42d57..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-//
-//  FPDI - Version 1.3.1
-//
-//    Copyright 2004-2009 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-
-if (!defined('ORD_z'))
-       define('ORD_z',ord('z'));
-if (!defined('ORD_exclmark'))
-       define('ORD_exclmark', ord('!'));
-if (!defined('ORD_u')) 
-       define('ORD_u', ord('u'));
-if (!defined('ORD_tilde'))
-       define('ORD_tilde', ord('~'));
-
-class FilterASCII85 {
-    
-    function error($msg) {
-        die($msg);
-    }
-    
-    function decode($in) {
-        $out = '';
-        $state = 0;
-        $chn = null;
-        
-        $l = strlen($in);
-        
-        for ($k = 0; $k < $l; ++$k) {
-            $ch = ord($in[$k]) & 0xff;
-            
-            if ($ch == ORD_tilde) {
-                break;
-            }
-            if (preg_match('/^\s$/',chr($ch))) {
-                continue;
-            }
-            if ($ch == ORD_z && $state == 0) {
-                $out .= chr(0).chr(0).chr(0).chr(0);
-                continue;
-            }
-            if ($ch < ORD_exclmark || $ch > ORD_u) {
-                $this->error('Illegal character in ASCII85Decode.');
-            }
-            
-            $chn[$state++] = $ch - ORD_exclmark;
-            
-            if ($state == 5) {
-                $state = 0;
-                $r = 0;
-                for ($j = 0; $j < 5; ++$j)
-                    $r = $r * 85 + $chn[$j];
-                $out .= chr($r >> 24);
-                $out .= chr($r >> 16);
-                $out .= chr($r >> 8);
-                $out .= chr($r);
-            }
-        }
-        $r = 0;
-        
-        if ($state == 1)
-            $this->error('Illegal length in ASCII85Decode.');
-        if ($state == 2) {
-            $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
-            $out .= chr($r >> 24);
-        }
-        else if ($state == 3) {
-            $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + ($chn[2]+1) * 85 * 85;
-            $out .= chr($r >> 24);
-            $out .= chr($r >> 16);
-        }
-        else if ($state == 4) {
-            $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + $chn[2] * 85 * 85  + ($chn[3]+1) * 85 ;
-            $out .= chr($r >> 24);
-            $out .= chr($r >> 16);
-            $out .= chr($r >> 8);
-        }
-
-        return $out;
-    }
-    
-    function encode($in) {
-        $this->error("ASCII85 encoding not implemented.");
-    }
-}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php
deleted file mode 100644 (file)
index 5867603..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-//
-//  FPDI - Version 1.3.1
-//
-//    Copyright 2004-2009 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-
-class FilterLZW {
-    
-    var $sTable = array();
-    var $data = null;
-    var $dataLength = 0;
-    var $tIdx;
-    var $bitsToGet = 9;
-    var $bytePointer;
-    var $bitPointer;
-    var $nextData = 0;
-    var $nextBits = 0;
-    var $andTable = array(511, 1023, 2047, 4095);
-
-    function error($msg) {
-        die($msg);
-    }
-    
-    /**
-     * Method to decode LZW compressed data.
-     *
-     * @param string data    The compressed data.
-     */
-    function decode($data) {
-
-        if($data[0] == 0x00 && $data[1] == 0x01) {
-            $this->error('LZW flavour not supported.');
-        }
-
-        $this->initsTable();
-
-        $this->data = $data;
-        $this->dataLength = strlen($data);
-
-        // Initialize pointers
-        $this->bytePointer = 0;
-        $this->bitPointer = 0;
-
-        $this->nextData = 0;
-        $this->nextBits = 0;
-
-        $oldCode = 0;
-
-        $string = '';
-        $uncompData = '';
-
-        while (($code = $this->getNextCode()) != 257) {
-            if ($code == 256) {
-                $this->initsTable();
-                $code = $this->getNextCode();
-
-                if ($code == 257) {
-                    break;
-                }
-
-                $uncompData .= $this->sTable[$code];
-                $oldCode = $code;
-
-            } else {
-
-                if ($code < $this->tIdx) {
-                    $string = $this->sTable[$code];
-                    $uncompData .= $string;
-
-                    $this->addStringToTable($this->sTable[$oldCode], $string[0]);
-                    $oldCode = $code;
-                } else {
-                    $string = $this->sTable[$oldCode];
-                    $string = $string.$string[0];
-                    $uncompData .= $string;
-
-                    $this->addStringToTable($string);
-                    $oldCode = $code;
-                }
-            }
-        }
-        
-        return $uncompData;
-    }
-
-
-    /**
-     * Initialize the string table.
-     */
-    function initsTable() {
-        $this->sTable = array();
-
-        for ($i = 0; $i < 256; $i++)
-            $this->sTable[$i] = chr($i);
-
-        $this->tIdx = 258;
-        $this->bitsToGet = 9;
-    }
-
-    /**
-     * Add a new string to the string table.
-     */
-    function addStringToTable ($oldString, $newString='') {
-        $string = $oldString.$newString;
-
-        // Add this new String to the table
-        $this->sTable[$this->tIdx++] = $string;
-
-        if ($this->tIdx == 511) {
-            $this->bitsToGet = 10;
-        } else if ($this->tIdx == 1023) {
-            $this->bitsToGet = 11;
-        } else if ($this->tIdx == 2047) {
-            $this->bitsToGet = 12;
-        }
-    }
-
-    // Returns the next 9, 10, 11 or 12 bits
-    function getNextCode() {
-        if ($this->bytePointer == $this->dataLength) {
-            return 257;
-        }
-
-        $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
-        $this->nextBits += 8;
-
-        if ($this->nextBits < $this->bitsToGet) {
-            $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
-            $this->nextBits += 8;
-        }
-
-        $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9];
-        $this->nextBits -= $this->bitsToGet;
-
-        return $code;
-    }
-    
-    function encode($in) {
-        $this->error("LZW encoding not implemented.");
-    }
-}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php
deleted file mode 100644 (file)
index e0f0239..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-<?php
-//
-//  FPDI - Version 1.2
-//
-//    Copyright 2004-2007 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-
-
-class fpdi_pdf_parser extends pdf_parser {
-
-    /**
-     * Pages
-     * Index beginns at 0
-     *
-     * @var array
-     */
-    var $pages;
-    
-    /**
-     * Page count
-     * @var integer
-     */
-    var $page_count;
-    
-    /**
-     * actual page number
-     * @var integer
-     */
-    var $pageno;
-    
-    
-    /**
-     * FPDI Reference
-     * @var object
-     */
-    var $fpdi;
-    
-    /**
-     * Available BoxTypes
-     *
-     * @var array
-     */
-    var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
-        
-    /**
-     * Constructor
-     *
-     * @param string $filename  Source-Filename
-     * @param object $fpdi      Object of type fpdi
-     */
-    function fpdi_pdf_parser($filename,&$fpdi) {
-        $this->fpdi =& $fpdi;
-         $this->filename = $filename;
-
-        parent::pdf_parser($filename);
-        if ($this->success == false) { return false; }
-
-        // resolve Pages-Dictonary
-        $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
-        if ($this->success == false) { return false; }
-
-        // Read pages
-        $this->read_pages($this->c, $pages, $this->pages);
-        if ($this->success == false) { return false; }
-
-        // count pages;
-        $this->page_count = count($this->pages);
-    }
-    
-    
-    /**
-     * Get pagecount from sourcefile
-     *
-     * @return int
-     */
-    function getPageCount() {
-        return $this->page_count;
-    }
-
-
-    /**
-     * Set pageno
-     *
-     * @param int $pageno Pagenumber to use
-     */
-    function setPageno($pageno) {
-        $pageno = ((int) $pageno) - 1;
-
-        if ($pageno < 0 || $pageno >= $this->getPageCount()) {
-            $this->fpdi->error("Pagenumber is wrong!");
-        }
-
-        $this->pageno = $pageno;
-    }
-    
-    /**
-     * Get page-resources from current page
-     *
-     * @return array
-     */
-    function getPageResources() {
-        return $this->_getPageResources($this->pages[$this->pageno]);
-    }
-    
-    /**
-     * Get page-resources from /Page
-     *
-     * @param array $obj Array of pdf-data
-     */
-    function _getPageResources ($obj) { // $obj = /Page
-       $obj = $this->pdf_resolve_object($this->c, $obj);
-
-        // If the current object has a resources
-       // dictionary associated with it, we use
-       // it. Otherwise, we move back to its
-       // parent object.
-        if (isset ($obj[1][1]['/Resources'])) {
-               $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']);
-               if ($res[0] == PDF_TYPE_OBJECT)
-                return $res[1];
-            return $res;
-       } else {
-               if (!isset ($obj[1][1]['/Parent'])) {
-                       return false;
-               } else {
-                $res = $this->_getPageResources($obj[1][1]['/Parent']);
-                if ($res[0] == PDF_TYPE_OBJECT)
-                    return $res[1];
-                return $res;
-               }
-       }
-    }
-
-
-    /**
-     * Get content of current page
-     *
-     * If more /Contents is an array, the streams are concated
-     *
-     * @return string
-     */
-    function getContent() {
-        $buffer = "";
-        
-        if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
-            $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
-            foreach($contents AS $tmp_content) {
-                $buffer .= $this->_rebuildContentStream($tmp_content).' ';
-            }
-        }
-        
-        return $buffer;
-    }
-    
-    
-    /**
-     * Resolve all content-objects
-     *
-     * @param array $content_ref
-     * @return array
-     */
-    function _getPageContent($content_ref) {
-        $contents = array();
-        
-        if ($content_ref[0] == PDF_TYPE_OBJREF) {
-            $content = $this->pdf_resolve_object($this->c, $content_ref);
-            if ($content[1][0] == PDF_TYPE_ARRAY) {
-                $contents = $this->_getPageContent($content[1]);
-            } else {
-                $contents[] = $content;
-            }
-        } else if ($content_ref[0] == PDF_TYPE_ARRAY) {
-            foreach ($content_ref[1] AS $tmp_content_ref) {
-                $contents = array_merge($contents,$this->_getPageContent($tmp_content_ref));
-            }
-        }
-
-        return $contents;
-    }
-
-
-    /**
-     * Rebuild content-streams
-     *
-     * @param array $obj
-     * @return string
-     */
-    function _rebuildContentStream($obj) {
-        $filters = array();
-        
-        if (isset($obj[1][1]['/Filter'])) {
-            $_filter = $obj[1][1]['/Filter'];
-
-            if ($_filter[0] == PDF_TYPE_TOKEN) {
-                $filters[] = $_filter;
-            } else if ($_filter[0] == PDF_TYPE_ARRAY) {
-                $filters = $_filter[1];
-            }
-        }
-
-        $stream = $obj[2][1];
-
-        foreach ($filters AS $_filter) {
-            switch ($_filter[1]) {
-                case "/FlateDecode":
-                       if (function_exists('gzuncompress')) {
-                        $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';                        
-                       } else {
-                        $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1]));
-                       }
-                       if ($stream === false) { 
-                        $this->fpdi->error("Error while decompressing stream.");
-                       }
-                break;
-                       // mPDF 4.2.003
-                case '/LZWDecode': 
-                       include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php');
-                       // mPDF 5.0 Removed pass by reference =&
-                       $decoder = new FilterLZW();
-                       $stream = $decoder->decode($stream);
-                       break;
-                case '/ASCII85Decode':
-                       include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php');
-                       // mPDF 5.0 Removed pass by reference =&
-                       $decoder = new FilterASCII85();
-                       $stream = $decoder->decode($stream);
-                       break;
-                case null:
-                       $stream = $stream;
-                       break;
-                default:
-                       $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
-            }
-        }
-        
-        return $stream;
-    }
-    
-    
-    /**
-     * Get a Box from a page
-     * Arrayformat is same as used by fpdf_tpl
-     *
-     * @param array $page a /Page
-     * @param string $box_index Type of Box @see $availableBoxes
-     * @return array
-     */
-    function getPageBox($page, $box_index) {
-        $page = $this->pdf_resolve_object($this->c,$page);
-        $box = null;
-        if (isset($page[1][1][$box_index]))
-            $box =& $page[1][1][$box_index];
-        
-        if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
-            $tmp_box = $this->pdf_resolve_object($this->c,$box);
-            $box = $tmp_box[1];
-        }
-            
-        if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
-            $b =& $box[1];
-            return array("x" => $b[0][1]/_MPDFK,
-                         "y" => $b[1][1]/_MPDFK,
-                         "w" => abs($b[0][1]-$b[2][1])/_MPDFK,
-                         "h" => abs($b[1][1]-$b[3][1])/_MPDFK);        // mPDF 5.3.90
-        } else if (!isset ($page[1][1]['/Parent'])) {
-            return false;
-        } else {
-            return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index);
-        }
-    }
-
-    function getPageBoxes($pageno) {
-        return $this->_getPageBoxes($this->pages[$pageno-1]);
-    }
-    
-    /**
-     * Get all Boxes from /Page
-     *
-     * @param array a /Page
-     * @return array
-     */
-    function _getPageBoxes($page) {
-        $boxes = array();
-
-        foreach($this->availableBoxes AS $box) {
-            if ($_box = $this->getPageBox($page,$box)) {
-                $boxes[$box] = $_box;
-            }
-        }
-
-        return $boxes;
-    }
-
-    function getPageRotation($pageno) {
-        return $this->_getPageRotation($this->pages[$pageno-1]);
-    }
-    
-    function _getPageRotation ($obj) { // $obj = /Page
-       $obj = $this->pdf_resolve_object($this->c, $obj);
-       if (isset ($obj[1][1]['/Rotate'])) {
-               $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']);
-               if ($res[0] == PDF_TYPE_OBJECT)
-                return $res[1];
-            return $res;
-       } else {
-               if (!isset ($obj[1][1]['/Parent'])) {
-                       return false;
-               } else {
-                $res = $this->_getPageRotation($obj[1][1]['/Parent']);
-                if ($res[0] == PDF_TYPE_OBJECT)
-                    return $res[1];
-                return $res;
-               }
-       }
-    }
-    
-    /**
-     * Read all /Page(es)
-     *
-     * @param object pdf_context
-     * @param array /Pages
-     * @param array the result-array
-     */
-    function read_pages (&$c, &$pages, &$result) {
-        // Get the kids dictionary
-       $kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']);
-
-        if (!is_array($kids)) {
-                       // mPDF 4.0
-                       $this->success = false;
-               $this->errormsg = sprintf("Cannot find /Kids in current /Page-Dictionary");
-                       return false;
-         }
-        foreach ($kids[1] as $v) {
-               $pg = $this->pdf_resolve_object ($c, $v);
-            if ($pg[1][1]['/Type'][1] === '/Pages') {
-                // If one of the kids is an embedded
-                       // /Pages array, resolve it as well.
-                $this->read_pages ($c, $pg, $result);
-               } else {
-                       $result[] = $pg;
-               }
-       }
-    }
-
-    
-    
-    
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php
deleted file mode 100644 (file)
index 6cf4bdc..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-<?php
-//
-//  FPDI - Version 1.2
-//
-//    Copyright 2004-2007 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-
-class pdf_context {
-
-       var $file;
-       var $buffer;
-       var $offset;
-       var $length;
-
-       var $stack;
-
-       // Constructor
-
-       function pdf_context($f) {
-               $this->file = $f;
-               $this->reset();
-       }
-
-       // Optionally move the file
-       // pointer to a new location
-       // and reset the buffered data
-
-       function reset($pos = null, $l = 100) {
-               if (!is_null ($pos)) {
-                       fseek ($this->file, $pos);
-               }
-
-               $this->buffer = $l > 0 ? fread($this->file, $l) : '';
-               $this->offset = 0;
-               $this->length = strlen($this->buffer);
-               $this->stack = array();
-       }
-
-       // Make sure that there is at least one
-       // character beyond the current offset in
-       // the buffer to prevent the tokenizer
-       // from attempting to access data that does
-       // not exist
-
-       function ensure_content() {
-               if ($this->offset >= $this->length - 1) {
-                       return $this->increase_length();
-               } else {
-                       return true;
-               }
-       }
-
-       // Forcefully read more data into the buffer
-
-       function increase_length($l=100) {
-               if (feof($this->file)) {
-                       return false;
-               } else {
-                       $this->buffer .= fread($this->file, $l);
-                       $this->length = strlen($this->buffer);
-                       return true;
-               }
-       }
-
-}
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php
deleted file mode 100644 (file)
index c7d69e2..0000000
+++ /dev/null
@@ -1,690 +0,0 @@
-<?php
-//
-//  FPDI - Version 1.2
-//
-//    Copyright 2004-2007 Setasign - Jan Slabon
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-//
-
-if (!defined ('PDF_TYPE_NULL'))
-    define ('PDF_TYPE_NULL', 0);
-if (!defined ('PDF_TYPE_NUMERIC'))
-    define ('PDF_TYPE_NUMERIC', 1);
-if (!defined ('PDF_TYPE_TOKEN'))
-    define ('PDF_TYPE_TOKEN', 2);
-if (!defined ('PDF_TYPE_HEX'))
-    define ('PDF_TYPE_HEX', 3);
-if (!defined ('PDF_TYPE_STRING'))
-    define ('PDF_TYPE_STRING', 4);
-if (!defined ('PDF_TYPE_DICTIONARY'))
-    define ('PDF_TYPE_DICTIONARY', 5);
-if (!defined ('PDF_TYPE_ARRAY'))
-    define ('PDF_TYPE_ARRAY', 6);
-if (!defined ('PDF_TYPE_OBJDEC'))
-    define ('PDF_TYPE_OBJDEC', 7);
-if (!defined ('PDF_TYPE_OBJREF'))
-    define ('PDF_TYPE_OBJREF', 8);
-if (!defined ('PDF_TYPE_OBJECT'))
-    define ('PDF_TYPE_OBJECT', 9);
-if (!defined ('PDF_TYPE_STREAM'))
-    define ('PDF_TYPE_STREAM', 10);
-
-
-class pdf_parser {
-       
-       /**
-     * Filename
-     * @var string
-     */
-    var $filename;
-    
-    /**
-     * File resource
-     * @var resource
-     */
-    var $f;
-    
-    /**
-     * PDF Context
-     * @var object pdf_context-Instance
-     */
-    var $c;
-    
-    /**
-     * xref-Data
-     * @var array
-     */
-    var $xref;
-
-    /**
-     * root-Object
-     * @var array
-     */
-    var $root;
-       
-    // mPDF 4.0 Added flag to show success on loading file
-    var $success;
-    var $errormsg;
-
-    /**
-     * Constructor
-     *
-     * @param string $filename  Source-Filename
-     */
-       function pdf_parser($filename) {
-        $this->filename = $filename;
-         // mPDF 4.0
-         $this->success = true;
-
-        $this->f = @fopen($this->filename, "rb");
-
-        if (!$this->f) {
-            $this->success = false;
-            $this->errormsg = sprintf("Cannot open %s !", $filename);
-               return false;
-         }
-       // mPDF 5.0 Removed pass by reference =&
-        $this->c = new pdf_context($this->f);
-        // Read xref-Data
-         $offset = $this->pdf_find_xref();
-        if ($offset===false) {
-            $this->success = false;
-            $this->errormsg = sprintf("Cannot open %s !", $filename);
-               return false;
-         }
-        $this->pdf_read_xref($this->xref, $offset);
-        if ($this->success == false) { return false; }
-
-        // Check for Encryption
-        $this->getEncryption();
-        if ($this->success == false) { return false; }
-
-        // Read root
-        $this->pdf_read_root();
-        if ($this->success == false) { return false; }
-    }
-    
-    /**
-     * Close the opened file
-     */
-    function closeFile() {
-       if (isset($this->f)) {
-           fclose($this->f);   
-               unset($this->f);
-       }       
-    }
-    
-      /**
-     * Print Error and die
-     *
-     * @param string $msg  Error-Message
-     */
-    function error($msg) {
-       die("<b>PDF-Parser Error:</b> ".$msg);  
-    }
-  
-    /**
-     * Check Trailer for Encryption
-     */
-    function getEncryption() {
-        if (isset($this->xref['trailer'][1]['/Encrypt'])) {
-               // mPDF 4.0
-               $this->success = false;
-            $this->errormsg = sprintf("File is encrypted!");
-               return false;
-        }
-    }
-    
-       /**
-     * Find/Return /Root
-     *
-     * @return array
-     */
-    function pdf_find_root() {
-        if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) {
-               // mPDF 4.0
-               $this->success = false;
-            $this->errormsg = sprintf("Wrong Type of Root-Element! Must be an indirect reference");
-               return false;
-        }
-        return $this->xref['trailer'][1]['/Root'];
-    }
-
-    /**
-     * Read the /Root
-     */
-    function pdf_read_root() {
-        // read root
-         $root = $this->pdf_find_root();
-        if ($root ===false) {
-            $this->success = false;
-               return false;
-         }
-        $this->root = $this->pdf_resolve_object($this->c, $root);
-    }
-    
-    /**
-     * Find the xref-Table
-     */
-    function pdf_find_xref() {
-               fseek ($this->f, -min(filesize($this->filename),1500), SEEK_END);
-        $data = fread($this->f, 1500);
-        
-        $pos = strlen($data) - strpos(strrev($data), strrev('startxref')); 
-        $data = substr($data, $pos);
-        
-        if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) {
-               // mPDF 4.0
-               $this->success = false;
-            $this->errormsg = sprintf("Unable to find pointer to xref table");
-               return false;
-       }
-
-       return (int) $matches[1];
-    }
-
-    /**
-     * Read xref-table
-     *
-     * @param array $result Array of xref-table
-     * @param integer $offset of xref-table
-     * @param integer $start start-position in xref-table
-     * @param integer $end end-position in xref-table
-     */
-    function pdf_read_xref(&$result, $offset, $start = null, $end = null) {
-        if (is_null ($start) || is_null ($end)) {
-               fseek($this->f, $o_pos = $offset);
-            $data = trim(fgets($this->f,1024));
-
-            if (strlen($data) == 0) 
-                $data = trim(fgets($this->f,1024));
-
-            if ($data !== 'xref') {
-               fseek($this->f, $o_pos);
-               $data = trim(_fgets($this->f, true));
-               if ($data !== 'xref') {
-                   if (preg_match('/(.*xref)(.*)/m', $data, $m)) { // xref 0 128 - in one line
-                        fseek($this->f, $o_pos+strlen($m[1]));                         
-                   } elseif (preg_match('/(x|r|e|f)+/', $data, $m)) { // correct invalid xref-pointer
-                       $tmpOffset = $offset-4+strlen($m[0]);
-                       $this->pdf_read_xref($result, $tmpOffset, $start, $end);
-                       return;
-                    } else {
-                               // mPDF 4.0
-                               $this->success = false;
-                       $this->errormsg = sprintf("Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'");
-                               return;
-                   }
-               }
-               }
-
-               $o_pos = ftell($this->f);
-           $data = explode(' ', trim(fgets($this->f,1024)));
-                       if (count($data) != 2) {
-               fseek($this->f, $o_pos);
-               $data = explode(' ', trim(_fgets($this->f, true)));
-                       
-               if (count($data) != 2) {
-                   if (count($data) > 2) { // no lineending
-                       $n_pos = $o_pos+strlen($data[0])+strlen($data[1])+2;
-                       fseek($this->f, $n_pos);
-                   } else {
-                               // mPDF 4.0
-                               $this->success = false;
-                       $this->errormsg = sprintf("Unexpected header in xref table");
-                               return;
-                   }
-               }
-            }
-            $start = $data[0];
-            $end = $start + $data[1];
-        }
-
-        if (!isset($result['xref_location'])) {
-            $result['xref_location'] = $offset;
-       }
-
-       if (!isset($result['max_object']) || $end > $result['max_object']) {
-           $result['max_object'] = $end;
-       }
-
-       for (; $start < $end; $start++) {
-               $data = ltrim(fread($this->f, 20)); // Spezifications says: 20 bytes including newlines
-               $offset = substr($data, 0, 10);
-               $generation = substr($data, 11, 5);
-
-           if (!isset ($result['xref'][$start][(int) $generation])) {
-               $result['xref'][$start][(int) $generation] = (int) $offset;
-           }
-       }
-
-       $o_pos = ftell($this->f);
-        $data = fgets($this->f,1024);
-               if (strlen(trim($data)) == 0) 
-                   $data = fgets($this->f, 1024);
-
-        if (preg_match("/trailer/",$data)) {
-            if (preg_match("/(.*trailer[ \n\r]*)/",$data,$m)) {
-               fseek($this->f, $o_pos+strlen($m[1]));
-               }
-
-                       // mPDF 5.0 Removed pass by reference =&
-                       $c = new pdf_context($this->f);
-           $trailer = $this->pdf_read_value($c);
-           
-           if (isset($trailer[1]['/Prev'])) {
-               $this->pdf_read_xref($result, $trailer[1]['/Prev'][1]);
-                   $result['trailer'][1] = array_merge($result['trailer'][1], $trailer[1]);
-           } else {
-               $result['trailer'] = $trailer;
-            }
-       } else {
-           $data = explode(' ', trim($data));
-            
-               if (count($data) != 2) {
-               fseek($this->f, $o_pos);
-                       $data = explode(' ', trim (_fgets ($this->f, true)));
-
-                       if (count($data) != 2) {
-                               // mPDF 4.0
-                               $this->success = false;
-                       $this->errormsg = sprintf("Unexpected data in xref table");
-                               return;
-                       }
-                   }
-                   
-                   $this->pdf_read_xref($result, null, (int) $data[0], (int) $data[0] + (int) $data[1]);
-       }
-    }
-
-
-    /**
-     * Reads an Value
-     *
-     * @param object $c pdf_context
-     * @param string $token a Token
-     * @return mixed
-     */
-    function pdf_read_value(&$c, $token = null) {
-       if (is_null($token)) {
-           $token = $this->pdf_read_token($c);
-       }
-       
-        if ($token === false) {
-           return false;
-       }
-
-               switch ($token) {
-            case       '<':
-                       // This is a hex string.
-                       // Read the value, then the terminator
-
-                $pos = $c->offset;
-
-                       while(1) {
-
-                    $match = strpos ($c->buffer, '>', $pos);
-                               
-                               // If you can't find it, try
-                               // reading more data from the stream
-
-                               if ($match === false) {
-                                       if (!$c->increase_length()) {
-                                               return false;
-                                       } else {
-                               continue;
-                       }
-                               }
-
-                               $result = substr ($c->buffer, $c->offset, $match - $c->offset);
-                               $c->offset = $match+1;
-                               
-                               return array (PDF_TYPE_HEX, $result);
-                }
-                
-                break;
-               case    '<<':
-                       // This is a dictionary.
-
-                       $result = array();
-
-                       // Recurse into this function until we reach
-                       // the end of the dictionary.
-                       while (($key = $this->pdf_read_token($c)) !== '>>') {
-                               if ($key === false) {
-                                       return false;
-                               }
-                                       
-                               if (($value =   $this->pdf_read_value($c)) === false) {
-                                       return false;
-                               }
-                    $result[$key] = $value;
-                       }
-                               
-                       return array (PDF_TYPE_DICTIONARY, $result);
-
-               case    '[':
-                       // This is an array.
-
-                       $result = array();
-
-                       // Recurse into this function until we reach
-                       // the end of the array.
-                       while (($token = $this->pdf_read_token($c)) !== ']') {
-                    if ($token === false) {
-                                       return false;
-                               }
-                                       
-                               if (($value = $this->pdf_read_value($c, $token)) === false) {
-                        return false;
-                               }
-                                       
-                               $result[] = $value;
-                       }
-                       
-                return array (PDF_TYPE_ARRAY, $result);
-
-               case    '('             :
-                // This is a string
-
-                       $pos = $c->offset;
-
-                       while(1) {
-
-                    // Start by finding the next closed
-                               // parenthesis
-
-                               $match = strpos ($c->buffer, ')', $pos);
-
-                               // If you can't find it, try
-                               // reading more data from the stream
-
-                               if ($match === false) {
-                                       if (!$c->increase_length()) {
-                            return false;
-                                       } else {
-                            continue;
-                        }
-                               }
-
-                               // Make sure that there is no backslash
-                               // before the parenthesis. If there is,
-                               // move on. Otherwise, return the string.
-                    $esc = preg_match('/([\\\\]+)$/', $tmpresult = substr($c->buffer, $c->offset, $match - $c->offset), $m);
-                    
-                    if ($esc === 0 || strlen($m[1]) % 2 == 0) {
-                                   $result = $tmpresult;
-                        $c->offset = $match + 1;
-                        return array (PDF_TYPE_STRING, $result);
-                               } else {
-                                       $pos = $match + 1;
-
-                                       if ($pos > $c->offset + $c->length) {
-                                               $c->increase_length();
-                                       }
-                               }                               
-                }
-
-            case "stream":
-               $o_pos = ftell($c->file)-strlen($c->buffer);
-                       $o_offset = $c->offset;
-                       
-                       $c->reset($startpos = $o_pos + $o_offset);
-                       
-                       $e = 0; // ensure line breaks in front of the stream
-                       if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13))
-                               $e++;
-                       if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10))
-                               $e++;
-                       
-                       if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) {
-                               // mPDF 5.0 Removed pass by reference =&
-                               $tmp_c = new pdf_context($this->f);
-                               $tmp_length = $this->pdf_resolve_object($tmp_c,$this->actual_obj[1][1]['/Length']);
-                               $length = $tmp_length[1][1];
-                       } else {
-                               $length = $this->actual_obj[1][1]['/Length'][1];        
-                       }
-                       
-                       if ($length > 0) {
-                       $c->reset($startpos+$e,$length);
-                       $v = $c->buffer;
-                       } else {
-                           $v = '';   
-                       }
-                       $c->reset($startpos+$e+$length+9); // 9 = strlen("endstream")
-                       
-                       return array(PDF_TYPE_STREAM, $v);
-                       
-               default :
-               if (is_numeric ($token)) {
-                    // A numeric token. Make sure that
-                               // it is not part of something else.
-                               if (($tok2 = $this->pdf_read_token ($c)) !== false) {
-                        if (is_numeric ($tok2)) {
-
-                                               // Two numeric tokens in a row.
-                                               // In this case, we're probably in
-                                               // front of either an object reference
-                                               // or an object specification.
-                                               // Determine the case and return the data
-                                               if (($tok3 = $this->pdf_read_token ($c)) !== false) {
-                                switch ($tok3) {
-                                                               case    'obj'   :
-                                        return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2);
-                                                               case    'R'             :
-                                                                       return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2);
-                                                       }
-                                                       // If we get to this point, that numeric value up
-                                                       // there was just a numeric value. Push the extra
-                                                       // tokens back into the stack and return the value.
-                                                       array_push ($c->stack, $tok3);
-                                               }
-                                       }
-
-                                       array_push ($c->stack, $tok2);
-                               }
-
-                               return array (PDF_TYPE_NUMERIC, $token);
-                       } else {
-
-                    // Just a token. Return it.
-                               return array (PDF_TYPE_TOKEN, $token);
-                       }
-
-         }
-    }
-    
-    /**
-     * Resolve an object
-     *
-     * @param object $c pdf_context
-     * @param array $obj_spec The object-data
-     * @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para
-     */
-    function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) {
-        // Exit if we get invalid data
-       if (!is_array($obj_spec)) {
-            return false;
-       }
-
-       if ($obj_spec[0] == PDF_TYPE_OBJREF) {
-
-               // This is a reference, resolve it
-               if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) {
-
-                       // Save current file position
-                       // This is needed if you want to resolve
-                       // references while you're reading another object
-                       // (e.g.: if you need to determine the length
-                       // of a stream)
-
-                       $old_pos = ftell($c->file);
-
-                       // Reposition the file pointer and
-                       // load the object header.
-                               
-                       $c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]);
-
-                       $header = $this->pdf_read_value($c,null,true);
-
-                       if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) {
-                               // mPDF 4.0
-                               $this->success = false;
-                       $this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location");
-                               return false;
-                       }
-
-                       // If we're being asked to store all the information
-                       // about the object, we add the object ID and generation
-                       // number for later use
-                               $this->actual_obj =& $result;
-                       if ($encapsulate) {
-                               $result = array (
-                                       PDF_TYPE_OBJECT,
-                                       'obj' => $obj_spec[1],
-                                       'gen' => $obj_spec[2]
-                               );
-                       } else {
-                               $result = array();
-                       }
-
-                       // Now simply read the object data until
-                       // we encounter an end-of-object marker
-                       while(1) {
-                    $value = $this->pdf_read_value($c);
-                                       if ($value === false || count($result) > 4) {
-                                               // in this case the parser coudn't find an endobj so we break here
-                                               break;
-                               }
-
-                               if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') {
-                                       break;
-                               }
-
-                    $result[] = $value;
-                       }
-
-                       $c->reset($old_pos);
-
-                if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) {
-                    $result[0] = PDF_TYPE_STREAM;
-                }
-
-                       return $result;
-               }
-       } else {
-               return $obj_spec;
-       }
-    }
-
-    
-    
-    /**
-     * Reads a token from the file
-     *
-     * @param object $c pdf_context
-     * @return mixed
-     */
-    function pdf_read_token(&$c)
-    {
-       // If there is a token available
-       // on the stack, pop it out and
-       // return it.
-
-       if (count($c->stack)) {
-               return array_pop($c->stack);
-       }
-
-       // Strip away any whitespace
-
-       do {
-               if (!$c->ensure_content()) {
-                       return false;
-               }
-               $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset);
-       } while ($c->offset >= $c->length - 1);
-
-       // Get the first character in the stream
-
-       $char = $c->buffer[$c->offset++];
-
-       switch ($char) {
-
-               case '['        :
-               case ']'        :
-               case '('        :
-               case ')'        :
-
-                       // This is either an array or literal string
-                       // delimiter, Return it
-
-                       return $char;
-
-               case '<'        :
-               case '>'        :
-
-                       // This could either be a hex string or
-                       // dictionary delimiter. Determine the
-                       // appropriate case and return the token
-
-                       if ($c->buffer[$c->offset] == $char) {
-                               if (!$c->ensure_content()) {
-                                   return false;
-                               }
-                               $c->offset++;
-                               return $char . $char;
-                       } else {
-                               return $char;
-                       }
-
-               default         :
-
-                       // This is "another" type of token (probably
-                       // a dictionary entry or a numeric value)
-                       // Find the end and return it.
-
-                       if (!$c->ensure_content()) {
-                               return false;
-                       }
-
-                       while(1) {
-
-                               // Determine the length of the token
-
-                               $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset);
-                               if ($c->offset + $pos <= $c->length - 1) {
-                                       break;
-                               } else {
-                                       // If the script reaches this point,
-                                       // the token may span beyond the end
-                                       // of the current buffer. Therefore,
-                                       // we increase the size of the buffer
-                                       // and try again--just to be safe.
-
-                                       $c->increase_length();
-                               }
-                       }
-
-                       $result = substr($c->buffer, $c->offset - 1, $pos + 1);
-
-                       $c->offset += $pos;
-                       return $result;
-       }
-    }
-
-       
-}
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt b/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt
deleted file mode 100644 (file)
index 7ba83e4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Alternative sources of Hyphenation programs or TEX files:
-
-OpenOffice: http://wiki.services.openoffice.org/wiki/Dictionaries
-
-Hyphenator4PHP- alternative PHP hyphenator scripts: http://apps.sourceforge.net/trac/hyphenator4php/
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/de.php b/inc/3rdparty/libraries/mpdf/patterns/de.php
deleted file mode 100644 (file)
index 2164340..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-*/
-
-$patterns="_a6 _ab3b _aben2 _ab5l _abo4 _ab3ol _ab1or _ab5r _ab3s2 _ack2 _ag4r _ag2u _ai2s _al3br _al2e _al5l4en _alt3s _amt6s3 _an3d _ang4 _an1gl _ang6li _an5go _angs4 _an3k _an3s _an4si_ _ans2p _an4tag _ap3s2 _ar3k2a _ar4m3ac _ar4s _ar4t3ei _as1t _as4ta _au3d _au4f5 _au4s1 _aus3p _\xc3\xa44 _\xc3\xa4t2s _b6 _bau1s _be1er _be3r2e _ber4g3a _ber4g3r _bi4o _boge2 _c2 _ch2 _che4f _d4 _da4r1 _dar3in _dar2m _da4te_ _da4tes _de4al _de1i _de3r4en _de1s _de3sk _de3s2t _di2a _do3b _do2mo _do1pe _d\xc3\xbc1b _e4 _ebe2 _ei3e2 _ei3k _ei4ne _ei5ner _ei5nes _ei4sp _ei4st _ei2tr _el2bi _els7t _em3m2 _en2 _end3er _en4d3r _en3du _enn2 _en3s _en4t3 _en5te_ _en3z _er4der _er1e _er1i _er8stein _es1p _es1ta _est4e _es1th _es3tr _et4s _eu3 _eu1c _f6 _fi3est _fi4le_ _fi4len _fin6s _fi2s _fs4 _fu2sc _g6 _ga4me _ga4t _gd2 _gel2d _gen4a _ge3nar _ge3ne _ge3r2a _ge3r2e _ge3s4a _ge1u _gus4s3 _h4 _ha3bi _haft5s _hal2s _hau4t1 _he2 _he3cke _he3ri _he6r5inn _he5xe _his1 _ho4met _i4 _ia4 _in3 _ink4 _inu3 _is2a _is2tr _jor5 _k6 _ka2b5l _ka2i _klan4 _ko3b _ks2 _k\xc3\xbc1b _l4 _le4ar _lo4g3in _lo3ver _m4 _ma3d _ma5ge _ma3la _ma4st _men8schw _mi2s _mi4t _n4 _n\xc3\xa4s3c _ne4s _nich2 _ni4e _nob4 _no6th _nus4 _o6 _oa3 _ob1a _obe2 _ob3l _oper4 _or2a _ort4 _orts3e _oste4 _os8t7ende _ost3r _ozo4 _\xc3\xb64 _p4 _pat4s _pf4 _ph2 _poka2 _pro1 _r4 _reb3s2 _re3cha _rein4t _reli1 _reli3e _re3sti _res4tr _ro6a _ro3be _ro2h _ro3m2a _rut2 _r\xc3\xbc1b _s6 _sch4 _sen5s _ser2u _se2t _si2e _sim3p4 _si4te _ski3e _spra2 _st6 _sto4re _t6 _ta5ge4s _ta3mi _ta2to _tehe3 _te3le _te4st _ti2s _to2n _to4ni _to4st _to2w _tri3es _tro4s _ts4 _tu3ra _tu3ri _u6 _uf2e2 _ul4mei _um3 _umo2 _un3d _un3g _uni4t _un3s _un5s4t _ur1 _urin4 _ur3o2m _uro2p _ut2a _ut3r _\xc3\xbc2 _v2 _ve4r _vol2 _voll3e _vo4r _w2 _wah6l _wa3re _we2 _weg3 _wi4e _wor2 _wor6t5en _x4 _xe1 _y4 _ya4l _z4 _zah4n _za4s _zi2e _zwe4 6a_ 2aa a1ab aa2be aa1c aa2gr aa4l\xc3\xb6 a1an aa2r1a aa3re aar3f4 aar3k4 aar3tr aas3t aat6s3 a3au a1\xc3\xa4 2aba ab1ar a2b1au ab1\xc3\xa4 1abbi 1abd a1be ab1eb abe1e abei3 ab1eil 2a3bel abe2la abe2na ab1erk ab1err ab1erz ab3esse 4abet 3abf 5abfa 1abg 1abh 2abi ab1ins ab1ir ab1iso ab1it 1abk ab3l 1a2b5la 3a2b5l\xc3\xa4 2able ab4le_ a3blis a2b7lu 3abn a2bo_ 1a2bon ab3r ab5re 1absc ab3s2i ab5sp abs4t6 ab7sta ab5st\xc3\xa4 ab3sz 1abtei 2a1bu ab3ur 2ab\xc3\xbc 1abw 2aby 1abz 2ac_ 4aca a1cem ach1a ach3ak a1chal ach3au a1che a2ch1e2c ach1ei a4ch3erf ach3erw a3ches a3chet 4achf a1chi ach5l ach3m a1cho ach1o4b ach3r achs2p acht1o 4a1chu ach1u2f ach3\xc3\xbc 4achv ach1w ac1in a1cka ack2en a3cki a4ckin ack3sl ack7sta4 acon4n 2acu a1\xc3\xa7 2a1d 4ad_ ada1b a4d1ac a2d1an 3ad5ap a3dar3 4adav 3a2d\xc3\xa4 3add adefi4 ad1ein ade1ra 4ades ade3s2p ades4s ade3st ade1u 4ad2i adi3en adi3er_ ad2ob a2dr 4ad3rec ad4res a3dro ad5ru ads2 ad3s\xc3\xa4 ad3sp ad3st ad4t1 adt3a adt5r 2ae a1e2b a1e2d a1ei a1el_ a2ela a2ele a2eli a1els a1em ae2o3 a1e2p ae1r aes1 a1e2x a2f1a a3fah a3fal af3an af2ar a3fat 2afe a2f1ec a2fent af1erl af4f3l 2a3fi af5l a3f2o af3ra af4rag af1rau af3r\xc3\xa4 af3re af3r\xc3\xb6 af3ru af2sp afs4t 2aft af2t1a af3tab af2tei af2t3r af4t5re af2tur 2a1g 4aga ag1a2b ag3a2d ag1ar ag1au ag2du a4gem a7gen_ age2na a4gent age2nu a5ger age4se age4s3p ages3s a4g5esse age4sti ag3gl 3aggr 4agi 5a2git 4a2g3l ag4lei ag7lo a3g4n a4g5na a5gnat ag6nu a2go a3gon_ a3gons a3gor a2g3re a2g3ri a3gru agsa2 ag4sam ag4set ag6s5p ag7spi ag3sta ag3ste ags3tr a2g1und 2ah_ 2a1ha 2a1he a2h1erh a1hi ahl5a4 ah2l1ei ah5len ah4l3erh ah3li ahl1o ah4l\xc3\xb6 ahl3sz ah3ma ah3me ah4n3a ah1os a2h1\xc3\xb6 ahr1a ah3r2e ah4rei ah1ri ahrta2 ahr4t3ag 2ahs aht3sp a1hu ah1w 2ai ai1a aib3l ai1er aif2 ai3g4 a3ik_ ai3ku ai2lo ai3n a1ind ain4e a3ing ain3sp ai4nu ai3o ai2sa a3isch_ ais2e ais3s a2it a3iv_ a3ivl a3ivs a1j aje4 2ak_ a2ka3d 2a3kam ak4at 2akb akbe4 2akc 2akd 4a1ke a2kef 2a1ki 2ak3l ak4li ak3n 2ako 2a1kr ak3rau 2aks 2akta ak3t2an 2aktb ak5ten 2aktm ak2t3r 2aktst 2a1ku 4a3k\xc3\xbc 1akz 2al al1ab al3abi al3abs a1lac ala5ch al3ade al1af ala6g al3age a3l4a1l al3am al5amp al1ana a1lanc al1ans al3anz a2lar a3lar_ al2arm ala4s al3asi al3ass a1lat al1au al3aug a1l\xc3\xa4 al1\xc3\xa4m al1\xc3\xa4r al4berh al4b3erw al2b3l al2boh al2br alb3ru alb3s al2da al2d\xc3\xa4 al3dri ald3s2t al3du 4ale 5a2l1e2b 5a2l1ef a4l1eh a2l1ei a2l1el a3len_ al3ends 6aler_ a2l1erb 5a2l1erf a2l1erh a2l1ert 5alerz a2l1esk ale4t al3eta al3eth a2l1eu 5alex alf2e 3algi al2gli 1algo 4ali a2lim ali4nal al1ins a2linv al2k1ar alk1l al2kla alk3s4 al2lab all1an al2l3a6r al2l1au al2lec 5allee al3lend alli5er_ alli7ers_ 3almb a2l1ob a3log al1ope al1\xc3\xb6 al2\xc3\xb6s 3alph al4schi al3sp al4spal al5s6terb al2ta alt1ak al3tam al2tel alt4ere al4t3erf 4alth al2tri 3alty a1lu al2uf a2lum al1ur a3lus 4aly 2am 4am2a amab4 ama3d ama5g 4ambiq am4e 6ame_ a2meb ame2n amer2 ame3ra a2meri ame3ru a4mese a5met a3mie a3mil amil5l 4a3mir ami3t2a ami5ti am4m\xc3\xa4 am2min ammu2 4amo 3a4m\xc3\xb6 ampf3a2 am3pr am2s am3sa am3str 3amt_ am2t1a am4t3ern am4th am2to am2t\xc3\xb6 am2t3r am4tre am2tu 4amu am3unt a1na 6ana_ ana3c a3na3d anadi1 2anan 4ana5s2 2anat an1\xc3\xa4s 4and_ ande4s an2d5r\xc3\xbc an2d1ur 4ane an1e4c an1ek 5a4n1erb an3eth anft5s 4ang_ 3angeb ang5erl ang5erz ang3l an2gla an2gl\xc3\xa4 an3go ang3ra 1angri 4angs_ ang5sc ang6s5po ang3str 3an3h 4anho 4a3n2i ani3els ani5ers_ 5a4nim a4n3ins 6anj an2kan an3k4l an4kl\xc3\xb6 an2k3no an2k1r ank3ra ank3r\xc3\xa4 ank5ti an2ky 1anl 3anli 4anmo 2ann 3an3n2a 3ann\xc3\xa4 an5ne an3od 2anom an1or a1n\xc3\xb6 3anr 3ans\xc3\xa4 1ansc an3s2en an2seu an2s1pa 1anspr an3s2t an5stei an3s2z 1ant\xc3\xa1 1antei 3antenn an3th 2anto 1antr an2tro 3antw 6anu a3nus a1n\xc3\xbc 1anw 3anw\xc3\xa4 2anx 2anz 3anzah 3anzei anz5erst an2z1i4n 3anzo 3anzu 3anz\xc3\xbc an2zwi ao1i a1op a1o4s5 a3ot_ 2ap_ 4a1pa a1p\xc3\xa4 a1pe a2pe_ ap2fa a3pfl a5ph\xc3\xa4 a1pi 2a2p3l ap2n apo5s ap3pl 2a1pr ap2sc 2apu 2ar_ 2a1ra ar2ab4 ara3d2 a2r3al ar1ans ar3anz 4arar a2r1au a1r\xc3\xa4 2arb_ 2arba ar2bau ar2bec arb3eie 2arben 2arbi ar2b5l 2arbr 2arbs2 arb3sp 2arbt 2arbu ar2b3un ar1c 2are a2rea are5b a2ref ar1eff a4reg a2rein a5ren a2rena a2rene ar2ent ar2erf a2r1erh are3u ar2ew 2arf ar2f3r ar2gl ar4gn 2arh 4a3ri ar2ia a4r1im a4r1ind a4r1int a5riu ar3kad ar2k1ar ark3aue ar2kl ark1r ar2kra ar2kr\xc3\xa4 ar6kri ark3sa ar2les arma5g arm2\xc3\xa4 3armee arm3erk 2arn ar2nan ar5n2e 2a1ro ar1ob ar3o2d a3rol a2rop a2ror 2arp ar4p3f 4arren ar2rh arr3he 4arrt 2ar2s ar4schl ar4schr ar5se ar3s2h ar3su ar2tau art2ho 2arto ar2t3r 2arts 2a1ru a4r1u4f ar3\xc3\xbc 2arv 2a1ry ar2z\xc3\xa4 2arze 1arzt ar2z1w 2as as4al as1au as3aug a2s1\xc3\xa4 6asc a6sca a4schec a2sch3l a2schm 6as2e a2seb aseli5 a2s3e2m a3ses 6ash as2hi a5si_ as3m as1o2f a3sol a3som as1or a2s1\xc3\xb6 a2s1p as3pan as5pe a4s2ph as3pi a4spl as2po as3s2a as5sac as4sei as5s2i as2s1p as2st as4sti as4sto as3str a2st a4s1ta a5s4tas as2tau as3te as3ti ast3rau as4t3re a2s\xc3\xbc 3asyl a1\xc3\x9f a\xc3\x9fe4 a\xc3\x9fen1 2a1t 4ata at1a2be at2a1f at4ag ata3go a4t1akt ata1la at1apf ata3s a2t3au2 a2t1\xc3\xa4 at2c 4a3te a4teb at2en aters4 ater3st a4tew 4atf 4atg at2he 5athl a4thr 4a3ti at1int 3atm 4atmus ato4man at1ort 4atp 4atr atra6t at3r\xc3\xa4 at3re at2s at3sc at4set ats1p 5attac at2t1ak att3ang atta3s at2tei at5th\xc3\xa4 at4t3r\xc3\xa4 4atu atu4n atu4rer at3w 4atz atz1a atz3erk at4z3erw at2z1in atzt2 atz3th a2u 2au_ au3a2 2aub au2bl 2auc auch4se auch3ta 2aud au3di au2dr 2aue aue2b aue3re au5erein aue4s au3et au2fa auf1an auf1er au5fer_ au4ferl 3aufn 2aug au5g6e 4au1i au3in au2is 4auj au2kl 2aul aule6s aul3ese aul4s au3l\xc3\xbc 4aum au2mal au2mer au2m1o aum3p2 6au3n2 au1na aun3s a4unz au1o aup4ter 2au1r4 au3re ausan8ne_ au2sau 2au2sc au3schl au3schw aus3erp au4s3erw au2so au2s1p aus3s6 3aussag aus4se_ au2st aus3tri 2aut_ au2ta au3tan au2t\xc3\xa4 2aute aut5erkr 3auto aut2o3f 2auts 2aux auz2w 2a1v av4a a2vr 2a1w awi3e a1x ax4a ax5an ax2e 2a1ya a1yeu ays2 aysi1e ay1ste 2a1z az4a a3z2i az2u \xc3\xa41a \xc3\xa43am \xc3\xa41b \xc3\xa42b3l \xc3\xa4b2s \xc3\xa41che \xc3\xa4che1e \xc3\xa41chi \xc3\xa4ch3l \xc3\xa42chr \xc3\xa4ch2sp \xc3\xa4ch4st \xc3\xa41chu \xc3\xa41ck \xc3\xa4ck4e \xc3\xa41d \xc3\xa43di \xc3\xa44d1ia \xc3\xa43do \xc3\xa42d3r 2\xc3\xa43e \xc3\xa4f2fl \xc3\xa4f5l \xc3\xa4f3r \xc3\xa4f2s \xc3\xa4ft4s3 \xc3\xa41g \xc3\xa4ge1i \xc3\xa4ges4 \xc3\xa42g3l \xc3\xa4g2n \xc3\xa44g3na \xc3\xa42g3r \xc3\xa4g3s2tr 1\xc3\xa42gy \xc3\xa4h1a 2\xc3\xa43he \xc3\xa41hi \xc3\xa4h5l2e \xc3\xa4h3li \xc3\xa4h5ne \xc3\xa4h5ri 2\xc3\xa4hs 2\xc3\xa4ht4 \xc3\xa4h3tr \xc3\xa41hu \xc3\xa4h1w \xc3\xa41im \xc3\xa43isch_ \xc3\xa41j \xc3\xa41k \xc3\xa42k3l \xc3\xa42k3r \xc3\xa41la \xc3\xa4lbe2 \xc3\xa4l2bl \xc3\xa4le3ru \xc3\xa4l2p3 \xc3\xa4l2s \xc3\xa4l3se \xc3\xa4lt4e \xc3\xa41lu \xc3\xa43me \xc3\xa4mi3en 2\xc3\xa4ml 2\xc3\xa4n_ \xc3\xa41na \xc3\xa4n2dr 2\xc3\xa43ne \xc3\xa4ne2n1 \xc3\xa4n2f5 \xc3\xa4n2gl \xc3\xa4n2gr 2\xc3\xa43n2i \xc3\xa4n5k2e \xc3\xa4n2k3l \xc3\xa4n2kr \xc3\xa4nk2s 2\xc3\xa4nn \xc3\xa4n5n4e2 2\xc3\xa4ns \xc3\xa4n4s3c \xc3\xa4nse3h \xc3\xa41on \xc3\xa41pa \xc3\xa4p2pr \xc3\xa4p2st 1\xc3\xa4q \xc3\xa42r5a2 \xc3\xa4r1\xc3\xa4 \xc3\xa4r1c 2\xc3\xa4re \xc3\xa42r1ei \xc3\xa4re2n \xc3\xa42r3ene \xc3\xa4rg5l \xc3\xa4r2gr \xc3\xa41ri \xc3\xa4r1int \xc3\xa4r2k3l \xc3\xa4rk2s \xc3\xa4r3me \xc3\xa4r1o2 \xc3\xa41r\xc3\xb6 \xc3\xa4r2s \xc3\xa4rt4e \xc3\xa4rt2s3 \xc3\xa41ru \xc3\xa4r2z1w \xc3\xa4s2a \xc3\xa4s2e \xc3\xa4se3g \xc3\xa4se3ri \xc3\xa4skop2 \xc3\xa43s2kr \xc3\xa42s1p \xc3\xa4s6s3c \xc3\xa4s4s3erk \xc3\xa4s2st \xc3\xa44s3t \xc3\xa4s5ti \xc3\xa4s4tr \xc3\xa41\xc3\x9f 2\xc3\xa4t \xc3\xa4t1a2 \xc3\xa45te \xc3\xa4te1i \xc3\xa4te2n \xc3\xa4t2ha \xc3\xa41to \xc3\xa4t1ob \xc3\xa4t1r \xc3\xa4t3ro \xc3\xa4t2s\xc3\xa4 \xc3\xa4t4schl \xc3\xa4t4schr \xc3\xa4t2s1i \xc3\xa4ts3l \xc3\xa4t3so \xc3\xa4t4sof \xc3\xa4t2s1p \xc3\xa4t4st \xc3\xa4ts3te \xc3\xa4t2tr \xc3\xa43tu \xc3\xa4t3v \xc3\xa42u \xc3\xa4u2br \xc3\xa4u1c \xc3\xa4u3el \xc3\xa44uf \xc3\xa4uf2e \xc3\xa4ug3l 2\xc3\xa4ul 2\xc3\xa4um \xc3\xa4u2ma \xc3\xa4um2s \xc3\xa4un2 \xc3\xa4u3nu 2\xc3\xa4u5r 2\xc3\xa43us_ \xc3\xa4u2sc \xc3\xa4u6sch\xc3\xa4 \xc3\xa4u4schm \xc3\xa4u5se \xc3\xa43usk \xc3\xa43usn \xc3\xa4u4sp 1\xc3\xa4u\xc3\x9f \xc3\xa4u2tr \xc3\xa41v 1\xc3\xa4x \xc3\xa41z \xc3\xa21t \xc3\xa11n 4b_ 1ba b1abs ba1cha bach5t4e backs4 2b3adr 3bah bah2nu bah5re bais4 b2ak ba2ka ba2k3er ba2k1i ba2kra 3bal ba1la bal6lerg bal3th 2b3am ban2a 3b2and ban2dr ba3n4e ba5ner 2bang ban2k1a ban4kl 2banl 2b1ans b3anz ba2ran bar3b b2ard bar3de ba2rei bar3ins b2arr bar3zw 3bas ba5sa ba4st ba2to bau3b bau1fr bau3g 3b2auk 3baur bau3s bau1s2k ba1yo 3b2\xc3\xa41c b\xc3\xa45cke 1b\xc3\xa4e 1b2\xc3\xa4r 1b2\xc3\xa4s b1\xc3\xa4ug b\xc3\xa4u3s 4b1b b5ba b5bi b2bli bb3lin b3blo b3bl\xc3\xb6 bbru2c bb2s bbu1 2b3c 2b5d bde1st bdo3 bdu3s 1be_ 5be3a be5an be4at_ be4au_ b2ebe 1be1c be2del bedi4 be1eh be3eta be3g6 2beier bei1f beil2 bei3la 3b2ein bei5na be1ind be1in2h bei3sc beis2e bei3st beit2s1 be3las be3lei be2l1en be2let be3li bel3la bel3sp belt4 bel3ta bel3tr be5lu 1bem 1ben_ be1na be2nal be2nau ben2dr be3ne be4ners be3ni ben2se ben2sp ben2su 3b2enti b1ents ben1un ben5z4 ben3ze be1o be1ra ber3am be2ran ber3as ber1\xc3\xa4 berd4 bere4s ber3esc ber4in_ ber3iss ber3na b1ernt be1rop ber3sta ber3th be3rum 1be1s2 be3sa be4s3er be3slo be3spo bes5s4e b3esst_ bes3sz 3bet be3th be1ur 3bew 2b1ex 1bez 2b5f4 bfal2 2b5g4 bge3 bges4 2b5h 1bi bi2e bi3ens bi3ent bie2s bi2ke_ bi2kes bi3ki bil4a 2b1illu bi1l\xc3\xb6 bi2lu bi1na 2b1inb bin2e 2b1inf 2b3int bi2o bi3on biri1 3bis bi5se bi2sol bis4s3c bi4st bi2t b2i3ta bi3te bi3to 2bi4tu b2i5tus biz2 bi3za 4b3j 2b5k4 b2l2 2bl_ b4la_ bla3b6 4b3lad b3lag b6lanc 6blasser b6latt bl\xc3\xa4s3c 3blea b3lee 2b5leg b3leh b5lein ble3l b4lem b4ler b5lese 3b4let 2blich 3blick b5lief 2b3lis 3blitz 1b4lo b6loc b5lok 2b3lun blu4ter 3bl\xc3\xbc 2b5m bmu2 6b5n2 bni2s1 1bo bo5as bo2b3l bo3b4r bo2c bo3ch bo3cke bo3d2 bo2e3i 2b3of bo1is bo2lan 3bon_ bon2d1e bo2ne 3bons b1op bo1r2a bor2d3i bo2rei bor2s b1ort bor4tei bor2t3r bo2sc bos5p 3bot bo3te bo3th bour4n b\xc3\xb62b3 2b3\xc3\xb6f b\xc3\xb63sc 2b3p2 bpa4g b1q b2r4 2br_ b4ra_ 2b3rad b6rah b6ra3k bra3st4 2bre_ 6brechte 2b3ref 2breg b3reif b3rek 2b3rep b6rer b6res b4ri 2b5riem bri2er 2b5rig b5ris b5roh 2b3rol b4ruc 4b1s b2s3ad b3sand bs1ang b5sat2 bsatz1 b5sc b7scha bs4cu b3se b5se_ bs1e2b b5sel b5sen bs1er b4serf b5ses b5set bs1ex b2s1of bs1op bso2r bs2pl b3spu bs5s2 bs2t bst1ac bst1ak bst3auf bs3t\xc3\xa4t bst1er bst1h b3sto b3stu b3st\xc3\xbc bs3ty b2s1un b3s\xc3\xbc bs2ze 4b1t b3ta btast3r b3t\xc3\xa4 b5te b2t1h b3to b3tr b3tu bt\xc3\xbc1 b2u bu2chi bu2e bu2f 3bui bul2la 2b3umk bu3na 2bunk b4urg bu3r4i bu2s bus3cha bu3se bu4s1er bu4s3p bus1u bu3\xc3\x9fe 1b2\xc3\xbc b\xc3\xbc1c b\xc3\xbcge2 b\xc3\xbcgel3e 2b3v 2b5w 1by by1a by1n by3p by4t 2b5z2 bzei2t1 2c_ 1c4a 2ca1b ca1ch cae3 3caf ca3g4 ca1h 3cal ca1la cal3t 3cam 3car car3n ca3s2a3 ca3th ca1y2 c\xc3\xa43 4c1c cch2 4cd c1do 1ceb 2cec ce2dr 2cef ce1i 1cen ce3nu 1cer ce1ro ce1st 1cet ce3ta ce3ty ce1u 1c\xc3\xa9 2c1f c2h 4ch_ 2chab ch3abi ch1ah ch1ak 5chanc ch3anst 4chanz 3chao ch1ap 4char_ ch5atm 3chato ch1\xc3\xa4rm ch1\xc3\xa4s 1ch\xc3\xa2 2chb 2chc 2chd che4be ch3eben ch3echt 3chef 4chei ch1eim 4chentw che3rei 2cher\xc3\xb6 ch1ess ch1ex 1ch\xc3\xa9 2chf 2chg 2chh 1chia ch1inf 2ch1inh ch1ins ch1int 2ch1inv 3chiru 2chj 2chk 2ch2l2 ch3lein 2ch2m ch4mu 2chn4 ch2na ch5ner 2chob cho2f ch1off ch1oh ch1orc 2chp ch2r2 2chre ch3rh 3chron 4chs 4cht 2chuf 2chuh 2chum 2chunt 4ch\xc3\xbc 2chv 2chw 2chz 1ci ci1c ci2s c1j c4k 4ck_ ck1a 3cka_ ck3aa 2ckac 2ck3al ck5am 2ck3an 2ckau ck1\xc3\xa4 4ckb 2ckc 2ckd 1cke 3cked 2ck1ei 3cken ck1ent cke2ra ck1erh 4ckerh\xc3\xb6 4ck3erle 2ckero 2ck1err 2ckese 2ckex 4ckf 2ckg 2ckh 1cki 2ck1id ck1im ck1in 2ckk 2ck3l 2ckm 2ck3n 2ck1o2 ck1\xc3\xb6 2ckp 2ck5r 4cks 4ckt ck5t2e ck3ther 1cku 2ck1um5 2ck1up 2ckv 4ckw 1cky 4ckz 3c4l2 cla1q clet4 clo1 c2m 3co2 co3b co3ch co3cke co4det co3di coi2 co3it co3la co5l2o co3ma co3mec com4te_ comtes4 co3mu con2n co3ra co4re co3ri co4te co3th co3v c\xc3\xb44 2c2p 2c1q c4r2 cry2 2c2s cst4 c3s2tr 2c1t cte3e c3ti4 c3to ctur6 3cu cu2p3 cussi4 1cy 2c1z 4d_ 3da_ da1a 2dab d2ab\xc3\xa4 da2ben 3d2a1b4l 3dac da2cho 4dachse da2de da3der da3dr da1er 2d1af d3ag dago3 da3gob da1ho da1is da1l4a 2d3alar dal3b4 da1l\xc3\xb6 2d3alt 2d3amma 2d3amm\xc3\xa4 damo3 d4amp 2d3amt d2an_ dan4ce_ 2d1and 2d1ang 3dank dan4kl dan5kla dan4k1o 2danl 4d1ans 2danw 3danz_ 4danzi 2d1ap d2aph da2r dar3a 2darb6 da3re 3d2arl 2darr dar3s 2dart d2arte d2arw das2 da3sh da5st 3dat date4 4d3atl 4datm 3dau3e4 2d1au2f 2d1aus 2d1\xc3\xa4h 2d1\xc3\xa4mt 2d1\xc3\xa4ng 2d1\xc3\xa4p d\xc3\xa43us 2d7b6 dbu2 2d1c 4d1d2 d3da d3de d3dh 1de de3an de5a4t de3b6 3de1c de2cka de1e2 d1eff deg4 de3gl dehe2 2d1ehr 2dei d2eic 3d2e1im de4l1\xc3\xa4n de2l1ec de3l2ei 2delem de2len 2d1elfm del4la del4lei de2l1o de3lor de2l\xc3\xb6 del4san del2s5e del2so del2s1p del5ster delt4 del3ta del3tr 2d1emp d2en_ de2nal de4n3end 4denerg den4k3li den3sc 4densem dens5tau den5th 2dentw de1on d4er_ de1ram de2r3ap der2bl 2derdb de2r1e2b der3eck de2rei de3reis de3r4erb der4erw 4d3erh\xc3\xb6h de5ric de3rik 4d3erkl\xc3\xa4 de1ro de2rop d3ersat dert2s de3ru de4ruh de4rum de2s de4s3a desa2g des1\xc3\xa4 3desc de4seh de4sei des3eil de4s3en de4s3et des1in des1or des1p des3s4 des5sen dest5alt de5stang de4sto dest5rat de3stri des1u 3det deten4t 4d3etw de1un de1us 2dexp 2d3f dfi2s 2d1g dga2 d4ge_ dge6t1e dge2tr d3gl 2d1h2 d2his 1di 3di_ di4a di5as di4\xc3\xa4 di1ce 2d1i2de di2e die3ner di3eni dien4s di3ens_ dienst5r di3ers_ die4s3c die2t5 3dig di3gn dil2s3 2d1imb di1n2a 2d1ind 2d1inf 2d1inh 2d1init 2d1ins 2d1int di2ob di3o2d di3ph di2ra di4re_ di2ren di2ris 2d1irl 2d1isr dist4 di4ste di2ta di3te di4tei di4t3erl di4t3erm di4t3ers di2t3r di2tu diz2 di3zi 2d1j 2d1k4 4d1l d3le dle2r3a 2d1m d3me 4d1n2 d3ne d3ni2 dnis1 3do_ 2dob 3doba d1o2be 3dobr 3doby do2c 3dog do3ha dol3l2 3dom do2mar do3n4a doni1e do2o 4d1opf 3dopo d2opp do3ra 4d1orc 2d1ord dor2f1a dor2fl dor2fr 4d1org 2d1ort d2os_ do3sp dos3s do4sta 3dot do3un do1y2 2d\xc3\xb6 d1\xc3\xb6f d1\xc3\xb6l1 3d\xc3\xb6r d\xc3\xb64s3c 2d3p2 2d1q d2r2 3d4ra_ 2d3rad drag4 d4rah 2d5rahm 3d4ram d3rand 2drat d3raub 3drauf d3raum 2d3r\xc3\xa4d 2d3r\xc3\xa4t 2d3r\xc3\xa4u 4dre_ d4rea d5real d4reck 3dreh 2d3reic 3d4rein drei3t d4reiv 4drem 4d3ren 2d3rep 4d3rer dre2s3t 2d3rh d4ria 2d3ric d3rieg d4rif 3d4rit 4dritu 2drob 2d3roc 2d3rod 3droh 2drol 2d3rot 2d3rov 2dr\xc3\xb6 3d4ru d5rub 4d5ruf 4d5ruh 4d5rut d4r\xc3\xbc dr\xc3\xbc1b dr\xc3\xbc5cke 2ds d4s1amt d2s3an d2s1au2 d2s1\xc3\xa4n d2s1e2b d5s4eig d2sein d2s1eng d2s1ent d2s1erf d2serh d2s1erk d2s1erz dse4t d4s3eta d3s2ha ds3han d3sho d2s1im ds2inf d3s2kan 4dsl d2s1op dso2r ds1ori d2s\xc3\xb6 d2s1par d2s1pas d2s1p\xc3\xa4 d3s2po d4spro dss2 dst2 d2s1tab d4s3t\xc3\xa4ti d5stell d3s4tern ds1th d3s2ti d4st\xc3\xb6c d5stre ds2tri d1s2tu ds1ums d2sun d1sy ds2zen 2dt d1ta dt3a2d dt3am d1t\xc3\xa4 d5tea d2thei d3ti d1to4 d1t\xc3\xb6 dt3r dtran2 dt3sa dt5sc dt5str dt3t d1t\xc3\xbc1 1du du3alv du1ar du2b3l du3e du2f 2d1ufe 2d1uh du1i 2dumd 2dumf 2dumg 4d3umk 2duml d2ump 2dumr 2d1ums 3d2ums_ 2d1umv dun3d 2d1unf dun2kl dun2st 2dunt du1os dur2 2d1url du2s du3scha du3se 3d\xc3\xbcf 3d\xc3\xbcn 3d\xc3\xbcr d\xc3\xbcrn3 2d1v2 2d1w dwa4 dwes4 dwest1 dy1 2d1z 4e_ 2e1a e5a2b ea2c eadli4 ea3g6 ea4ge eakt4 e3al_ e3alb e5alei e3alf e3alg e3al3k e3all e3aln e3alp e3als e3alta e3alv e3alw e3alz e3am eam3a e4ame eam5ti e4ano e3anz e2ap e3ar_ e3a2ra e3arb eare2 e3a6rene e3arm e3arp e3arsp e3art e3at_ e4atl e4at3s2 eat5t4 eatu4 e3auf e3aug e3\xc3\xa44 e1b 2eba e3bak ebe2i e3beng eben4s5e 2ebet eb4leu e3blie eb5lo eb2o eb\xc3\xb64s 2ebr e3b4ra eb4rea eb2s ebs1au eb3s\xc3\xa4 eb6sche eb4se ebs1i ebs3in ebs1o ebs1p ebs3pa ebs3t2h eb3str ebs1u e3bu eb3\xc3\xbcb 2e5ca e1ce ech1\xc3\xa4 2e3che ech1ei e1chi ech3l ech3m ech3n e2cho_ ech1o4b e2ch3r ech3ta ech3t4ei e1chu ech1uh ech1w eci6a e1cka eck2ar eck3se 2ecl e5cr ecs1 2ect e1d ed4am ed2dr ed4e e3dei ede3n2e eden2s ede2r ed4ge e3d2o e3d\xc3\xb6 ed2s1o ed2s1p ed2s1tr ed2su e3dy 6ee ee5a2 eeb4l ee1c ee2ce eed3a eede3 eed3s2 ee1e ee3ei e1eff e1ei eei4g ee1im ee3ing eel2e e1e2lek ee3len e1emp e1en e2en\xc3\xa4 e3end e3eng ee3ni e2eno e3ent e2e1ra e1erd ee3r2e ee4r3eng eere4s ee4ret e1erm e2e1ro ee1r2\xc3\xb6 e1ertr e1erz ees2 ee3sh ee3st ee2tat ee2th ee1u2 eewa4r e1e2x e1f 2ef_ 2efa e3fab ef3ad ef1ana ef1ank ef1aus ef1\xc3\xa4u 2efe e2f1e2b e2f1em e2fent ef2er 2eff_ 1effi ef2fl ef2fr 2e3fi e4f1i2d e4f1ins efi2s 1efku 2efl ef7l\xc3\xa4n 2e3f2o e3f4ra ef3rea ef4rie ef3rom ef3rot ef3so ef2tan ef1um e1g eg3ast eg1aus eg1d ege4n3a2 ege2ra ege1u eg3lo eg3lu eg5n eg3ni egs4pe egs2t6 eg1ste eg4sto 2e3gu egus3 e1ha eh1ach eh3aka e3hal eh1ap eh2aus e1h\xc3\xa4 e1he ehe3in ehen2t3 1e2hep ehe1ra eher4an ehe3str e3h2i eh3int eh1lam eh1l\xc3\xa4 ehl2e2 ehl3ein ehl3ent eh5ler eh3lo ehl2se eh3ma eh3mi eh3mu eh1na e3ho e5hol ehr1a ehr1\xc3\xa4 ehr1e2c eh4rei eh1ri eh1ro ehr1ob ehr5sch ehs2 eh3sh eh3sp e1hu e2hunt e1h\xc3\xbc eh3\xc3\xbcb e3h\xc3\xbct eh1w e1hy 2ei_ 2ei3a2 4eib ei2bl ei2cho eich5te e2id ei2d1a ei3de 2eidn ei1e ei3el 2eien eien3st ei3et 1eifr ei3g2a eig6e ei5gen ei5ger 2eigew ei3gl 1eig3n 2eigru 2eigt 2eigu ei3k2a ei3kla 2eil_ 2eilb eil3d eile2n1 eil3f6 eil2i eil3ins 2eiln eim3ag ei2mor e1imp ei4mun ei2n3a ei4nas ein3dr 2eindu ei5ne_ ein1g ein2i e1init ein3k ein6karn 3einna ein1ob 3einsat ei3o2 ei3p eip2p5 2eir ei3re e1irr e2is_ ei2sa ei2s\xc3\xa4 ei3so ei3sp eis2pe ei3sto ei2sum ei2t1a ei3tak 2eit\xc3\xa4 eit1h eit2sp eit3t ei4t3um 2eiu 2e1j e1k e3k2a 1ekd eke2 e3ke_ eke3ri e3kes e3key ek4l ek5lip e3k4n e3k2o ek1s eks4t 2ekt ekt3erf ekt3erg ek4t3erz e3k2w e1la el3a4ben el1af el5agi ela2h el1aho e2l1ak el3a2m el1ans e2lant e2l3anz el1ap e2l1ar ela4s el3asi el3asp e3law 2e1l\xc3\xa4 el2da el4d3erp eld5erst eld3erw el3des el3dr elds2 elea4 ele4c 2elei e3leie e6l5eier_ el3eig e2l1ein e4l3einh e2l1el 1e2lem e3lem_ 2e3len_ e2l1ent e3ler_ e2l1erd e2l1erg e4l3ern\xc3\xa4 e2lerr e3let_ e2l3eta e3lex elf4l elgi5er_ elgi5ers e2lim eli4ne el1ita elk4l el3l2an ell3\xc3\xa4nd el5le_ el2l1e2b el4l3ein el3len el3lin ell3sp 2eln 2elo el1of e2l1or elo2ri e3los e1l\xc3\xb6 el2ser el2spr els6tern el2su el2ta el3tak elt3erb el4t3in el2to el2t3r el3tri el3tro elts2 elt3sk elt3sp 2e1lu e7luc el1ur elu2s el1use e1l\xc3\xbc e2lya 2elz el3zwe 2ema e2m3ag ema2k e3mann em1ans e2m1arc e5m\xc3\xa4 em4d3a2 2eme eme2n emen4t3h e2m1erw eme2s em1im em1int emi5ti 2emm emma3u em2mei e3mon e2mop emo5s 3empf em3pfl em2p3le em2sa em5se em3spo em2spr emt2 em3th 2em\xc3\xbc 4ena_ ena2b e1nac enadi4 4enah e2nak en3al ena3l2i en3am en5ana e2nand e3nann en3anz en1ap e2nar en3arr 4enat e3nati en3att e1naue en3auf e2n\xc3\xa4 e3n\xc3\xa4c en1\xc3\xa4r en1\xc3\xa4u en2ce_ en3del end3ess en3do end4ort end3ras end7si end3s2p end3sz en3d2um 2ene e3ne4c en1ech e2nef en1ehr e4nein e2n1el e4nelt e2n3ema 4enen e4n1ent en1epo 4e3n4er_ e4n1erd 3e4nerg e4n3erh 4eneri e2nerk e2n1erl 4enern en3erne ene2ro 4en1ers e4nerst e2n3ert e2n3eru e4n1erw en3erwe en3erz e4n3ess en3eta en3eth en1eup e4nex en3fa en3ga 1engad 1engag en3gi 1engp eng5sc en3gue 2eni e4n1id e5nie eni3er_ eni5ers_ e5nik e2n1im e5nis e3nit enks2 en3k2\xc3\xbc 1enniu en1ob enob4le e2n3oh e3nol eno2ma en1on e2n1op en1o2r e3not e3now 2e1n\xc3\xb6 4enpe en2san en3sec 1ensem ens3eng en3sho en2sid en3s2po enst5alt en4s3t\xc3\xa4t 4ensto ent4ag 1entd ente2n en6t5erb 1entla 1entna 1entsp 1entw 1entz e2n1uf e2n1um e4nums en1unf en1ur e3nus 2enut e1n\xc3\xbc 4enw\xc3\xbc e1ny en4z3erf enz3erg enz3ert en3z2i e1\xc3\xb1 eo5a e1o2b1 eo3ben eo3bi e1of eo3g e1oh e1on_ eo3na e1ond e1onf e1onl e1onr e1ons e1ope e3opf eop2t e1or e3or_ e3ord e3ort eo3s4 e3os_ eo1st eo3u e1o2v e1\xc3\xb62 e1p e3pa epa4g e3p2f4 ep2pa ep4pl ep2pr ept2 ep3ta ep4tal ep5ti 2e1q er1a e5ra_ era2be e1rabi er3abs er3abt e3rad_ er3adm er3adr era3f4a era1fr era2g er5agi e1rai er3aic e2rak er3akr e3rald er3all er3ana er3and e3rane e1rap er3apf er3ar e3rari e1ras e2r3a4si era2\xc3\x9f e2r5atm e1raub er3aue er3aug e1raum e1raz 2e1r\xc3\xa4 e3r\xc3\xa4d er1\xc3\xa4h er1\xc3\xa4m er3\xc3\xa4tz erb2e er3br er3bu er1c erd3anz 1erdb erd3erw er4d3inn 2ere 4e5re_ e3rech er3echs ere4ck er1eff er1e2h 4e3rei_ e3reie er1eig e3reih e2rein er3eis_ ere2l e2r1ele e3rem e5rem_ er3emu 4e5ren_ e5rena e4rense e4r3entf e3reo 4e5rer_ e4r3erf e2r1erh e2rerk er1err er1ers e4rersc e2r1erw 4eres e5res_ er1ess er3e4ti er1eul ere3us 4erf\xc3\xbcr 3ergebn 4ergeh\xc3\xa4 4erget erg3ise er3gl erg3s2 e2r3h 3erhab 2erh\xc3\xbc 4e1ri e2riat e3rib e3rie eri5e4n1 erien5e e5rif erik4 e3rin_ er1ind e4r1ini er1ink er1ins er1int e3rio er1ita erk5te erk5tr 4erlag er3le 4erln erm2a erm3ers er2n1os e1ro_ er3oa er1ob er1of e1rog e2r1oh ero2l e3role er3oly e1rom e5ron er1o2p e4ro2r e1ros e1rou e1row er1\xc3\xb62 er\xc3\xb64d e1r\xc3\xb6h 2er\xc3\xb6k er5p 2err\xc3\xbc er3s2a ers2e er5sen ers3ers er3sk er3smo er3sn er5s4to er3ta er3t\xc3\xa4 er6terei er4tho 4erti ert3ins er3t2o 2e1ru er1uhr er1um er1uns e3rus er1uz e1r\xc3\xbc er3\xc3\xbc2b e5r\xc3\xbcg 3erweck 4erweis e1ry 2erzy e5saa e4s3ab es3ad es3ak e5s4as esa2t es3aus es3av e4s1\xc3\xa42c e3sc es3cap e5s4ce esch4 e6schan e4scu e3se e5se_ e4seb es1ebe es3ehr es3ein es3erz es3eva 2esf 6es3h es1il es1imm es1ini e3sir es3k es5ke es5ki es5kor e4s5ky es3l es4log es3m e3sof e3sol es1op es1ori es2ort es6pei e3s2pek e3s2por e5s4pra 2esr es5sac es3sc es5sec 6essem ess4e3re es4s3erg es2sof es2sp ess1pa es2st ess3tie es3str est1ak e3star es2tau e3stec est5eink e3stel est3erh es4t3ess e1stil est3o4ri es2tri es2tu es3tus e3st\xc3\xbc e2s1um es3umf es3ums es3w e3sy es3z e1\xc3\x9f e\xc3\x9fer2 e\xc3\x9fe3re 2et e1ta eta3b et4ag et3am et4at e1t\xc3\xa4 et1\xc3\xa4h e3te e5te_ et1ein e5t2en etend4 e1t2h et3hai et3hal et3h\xc3\xa4 et3h\xc3\xbc e3ti e4t1i2m e3to eto4b e4t1of eto4s e1t\xc3\xb6 4e1tr et3rah e4t3raum et3rec et3res et4ri et2s et3sc et5schu etsch5wu et3se et3so et3sp ets3t et3sto et3s4tr et2ta et4t3au et2tei ette4n1 ett1h et4t3r et1ups e1t\xc3\xbc etz1a et3zo eu1a eub4 eude3s eu3erei eu3err eu3erz eu2esc eu2g1a euge4n eug6er eugs4 euho2 euil4 eu1in3 eu2k\xc3\xa4 e1um e3um_ eu3ma e3uml e3um4s eums1p eum5st 2eun eu3n2e eu4nei e3ung eu4nio eun3k eu1o2 eu3p eu2rau eu3r2e 1eu3ro e4ust 2eut eu5te eut6schn 2eux eu2zw e3\xc3\xbc 2e1v 4eve e2vela e1w 2e3wa ewa3s e3w\xc3\xa4 2ewe e2we_ ew3et_ ewi2s e3wit e5wo ew2s 4ex_ 1exam 1e6xem e4x1er 3exp ex2tin 2exu 4ey e1z e3z2a ez2\xc3\xa4 ezen3 ezin4 ezi2s \xc3\xa91b \xc3\xa91c \xc3\xa91h \xc3\xa91l \xc3\xa9lu2 \xc3\xa91o \xc3\xa91p \xc3\xa91r \xc3\xa91t \xc3\xa91u4 \xc3\xa91v \xc3\xa91z2 \xc3\x8b1c \xc3\x8b1m \xc3\x8b1n \xc3\xaa1p \xc3\xaa4t 6f_ 1fa 3fa_ fa1b f2abr 3fac fa2ch3i fa2cho 2fad fa2da fade4s 3fa1e fa3fa fa3g f2ah fa1la fal6l5erk fal2s fal3te falt4s fal2z1 2fanb 2fanr 2fanw 2f3anz 2f1ap farr3s 3f2art f1arz 3fas fa3s2a fa3sh 2fat 2f1auf f3aug 3fav 1f\xc3\xa4 f\xc3\xa41c f\xc3\xa4h2r1u 2f1\xc3\xa4rm f1\xc3\xa4rz 2f\xc3\xa4u 2f1b4 2f1c 2f1d f3dr 1fe 3fe_ fe4c fe5che fe2dr fe2ei fe1em f4eie 2feinh fei2nu 2feinw fek2ta fe2l1a fel4dr f1e2lek fe2l1er fe2l1es fe2l1o fel4soh fel3to 3f2em_ 2femi fem4me_ fen3a fe4n\xc3\xa4 3fend fe2no fenst2 f1ent f2er_ fe1r2a fe4rang fe4ranz fe2r3au 3ferei fer3eis fer2er fer3erz f1erfa f2ern 4f3erneu fe1ro f4erpa f2ers_ f2ert f1erw 3fe2s fe4st1a fes3tat fest3ei 4f3e4ta fet4t1a 2f3ex 3f\xc3\xa9 4f1f \xc3\x9f1au \xc3\x9f2e \xc3\x9fe2e f2f3ef \xc3\x9f3ei \xc3\x9fe3in \xc3\x9fe2m \xc3\x9f3emi \xc3\x9fi3k \xc3\x9f5li f3flu f3fl\xc3\xbc f3f4r\xc3\xa4 \xc3\x9f3r\xc3\xb6 \xc3\x9f3ru \xc3\x9f2s \xc3\x9f3s2h 2f3g4 fge1 2f1h 1fi 3fi_ fi3at fi1erf fi2ki fi3kl fi2k1o fi2l3an fil3d fi2les fi5li fi6lin fil2ip 5fin_ f2i1n4a fi3ni 5finn fin4s3 2f1int fi3ol fi2r fis2a fi5s2p fi4s3t fi3te fito2 fi2t1or 5fiz 2f1j 2f1k4 f2l4 2fl_ f3lad 1f6l\xc3\xa4 3fl\xc3\xa4c 2fl\xc3\xa4d f5l\xc3\xa4n 2f3leb 2f3lein f3ler f4li f6lim fli4n f3lon 1f6lot flo2w f6lug flug1a f6l\xc3\xbc 2f1m 2f3n2 fni2s 1fo 2f1ob fob4l fo2na fo2nu 2f1op fo1ra 4f3org fo3rin 3form for4m3a4g forni7er_ for4st for2t for4te for4th fort3r for3tu 2f1\xc3\xb6f f1\xc3\xb6k f\xc3\xb6rs3 2f3p2 fper1 2f1q f2r4 f4rac f5rad f1rah fra4m f3rand 2f5re_ f5ref 2freg frei3ba f3rep f3ric fri3d fri2e 2frig fri3k 1f4ris f3roc f4ron fro2s fr\xc3\xb65s4c fru2 4fs f5saa fs3all f2s1an f2s3as fs1auf f2saut f3sc f5schl fs1e2b f2s1em f3send fs1ent f2s1er fse4t f4s3eta f3si fsi2d f2s1o2 fs3ol f3span f2s1pas f3s2pl f3s2por f2s1pr fs2pra fs2pri fs3s2 f1s2t fs3tak f2stas fs3t\xc3\xa4t f4st\xc3\xa4ti f4stech f3stei f5stel f3str fs4tro f3st\xc3\xbc f4s3t\xc3\xbcte f2s1un f2s\xc3\xbc f5sy 4f1t f4ta_ ft1a2be ft1af ft3al ft1an ft3anz ft1ar f3tat ft1e2h ft1eig ft1ein ft1eis f4t1ent f2t3eti f2t1h ft3hei f3ti ft3rau ft3ro ft3r\xc3\xb6 f3t4ru ft2s1 ft4s3a ft3sc ft6sche ftse2 fts3i ft3st ft4s3t\xc3\xa4 ft5sti f2tum ft1url ft3z 1fu 2fum 2f1unf fun4ko fun2k3r 2funt furch2 fu4re_ fus2sa fus2s1p fus2st fu2\xc3\x9f1er 3fut 1f\xc3\xbc 2f\xc3\xbcb f\xc3\xbc2r 2f1v 2f1w fwa3s 1fy 2f1z fz2a fz2s 6g_ 1ga 7ga_ gabe4n 2gabf gab5l ga1br ga3bu 2gabz ga1c ga3di gadi4e ga1e 3ga5g ga1k ga2ka ga1la 5gamo 2g3amt 2g1anb gan3d g1anf gan2g1a gan2gr gang4st 2ganh 2g3ank 2ganl g3anla 3gano ga1ny ga3pe 2g1arb 2g1arc 3gard ga3re 2g1arm ga3r2o g1arti ga2s1a gas3ei ga2s1i ga2so gas3s ga4ste gas4t3el ga3th 2gatm gat4r gau1c 2g1auf g2auk 2g1aut 1g\xc3\xa4 2g1\xc3\xa4p g\xc3\xa4s5 6g1b4 g5be gber4 2g1c 2gd g1da g2d1au g2d1er g1do g3d\xc3\xb6 gd3r gds2 gd3sz gd1ur 3g4e ge3a2 ge3ba gebe4am ge1c ge3d ge1e2 ge2es geg4 ge3gl ge2ig ge1im ge1ins ge1ir ge2is 6geise2 gei3sh gel6ders ge4l3ers gels2t gel3sz gel3t2a ge3l\xc3\xbc gel3z2 gem4 5gema 5gem\xc3\xa4 5gem\xc3\xb6 ge1na gen2au gen2d3r gen3eid ge4ners gen3g gen3k ge3nor 5gens gens4ei gen7stern gen3sz g1entf gen3th ge3ou 5ger_ ge1ra ge2rab ger3amp ger2an g5ereig ge4reng ge4rens ger2er germ4 ger3no ge1ro ge1r2\xc3\xb6 5gerw ges2 ges4am ges3auf ge5s4c ges3elt ge5sen ge4ser ge5si ge3sp gess4t ge1st2 ge3ste ge5stei ges4tem ge4s3ter get2a 4getap ge1ul 4g5ex 2g1f 2g1g g5ge gge3n2e g2g3l gg4lo gg3n gg4r g3gr\xc3\xa4 2g1h 4gh_ 3g2hi gh3l 3gh2r gh3te g2hu gh1w 1gi gie3f gie3g gi2e1i gie3l4 gi2m gi4mes 2g1ind gi3ne gin2ga 2g1ins gi2o gi3os gi3ro 2gisel git4a gi3tu gi2us 2g1j 2g5k g2l 4gl_ 1gla 3g4lad 2g3lag 5glanz 3g4laub 4g5lauf 1gl\xc3\xa4 gl\xc3\xa4s3c 2gl\xc3\xa4uf 1gl4e 2g5le_ 2g3leb g5lec g3leg 2g3leh g4leic 4g5lein glei4t5r g3lenk 4g5ler g3lese g3lev g3li g4lia 2glib 5g4lie 4g5lif 1g4lik g4lim g5lis 1g4lit 1g4liz 2glo 3g4loa 3g6loc g7loch 3g4lok g6lom 3g4lot 2gls 2glu glu2t 1gl\xc3\xbc 3gly 2g1m2 2g1n2 4gn_ 3g2na g6na_ 4gnah g6nat 3g2n\xc3\xa4 g5neh 4g3neu 4gn3g gni2 g2nie g2nif 4g5nis1 g2no g3not 4gns 4gnt g5nu g6n\xc3\xbc g2ny 4gn3z 1go 3go_ go6a goa3li 2gob 2g1of 4g1oh go1i go3in go3l4a 2g1opf g2o1ra 3gos go3t2h go3tr 3gou 3go1y 1g\xc3\xb6 g1\xc3\xb6f 2g3p2 2g5q 1g2r4 gra2bi g3rah 3grai 2g3rak gram8m7end 3gran g3r\xc3\xa4d 2gr\xc3\xa4u 2g5re_ g4reb g3rec g3rede g4ree 2g3reic g3reit g3rek g4rem 2g3renn gre3no gren6z5ei 2gret 2g3ric gri2e 2grig 2g3ring gro3be gron4 g4ros gros6s5el 2g3r\xc3\xb6h g4ruf 2g3rui 2grum 3g4runs 3g4rup 2g3rut gr\xc3\xbc1b 2g3r\xc3\xbcc 3g4r\xc3\xbcn 6g2s1 g4s3ac gs3ad g4s3a4g g3s2ah gs5a2k gs3all gs5ama gs3amb gs3an gs3as gs3aug g3sc g6sca gsch4 g4schan g6schef gs3cr gse2 g3s2eil gs3en g4s3er gse4t gs3eta gsi2d gs3in g4sl gso2 g5soz gs3p gs5pal gs4pi gs6pie g4s5pin g4s5pl g5s4por gsr\xc3\xbc2 gs5s4 g3stan g3star gs2t1au gs3tauf g4st\xc3\xa4 g5st\xc3\xa4m g3stel gst3err g3s2to g4s3tor gs2t\xc3\xb6 gs2tro gst3ros gs3tr\xc3\xbc g3stu gs2t\xc3\xbcc g4sw g3sy 2g1t2 g5te g2t3h g5ti gti2m gt4s3 gt3w 1gu gu1an_ gu1ant gu2e guet4 2g1uh gu1ins gu1is gu5me gun2e 2g1unf g2ung_ g2unge 2g1ungl 3g2uns 4gunt gu4s gus3a gu5sc gu5se gus5se_ gus2sp gus2st 5gu2t1 1g\xc3\xbc 2g\xc3\xbcb g\xc3\xbcr1 g\xc3\xbcs1 2g1v 4g1w 1gy 2g3z2 6h_ 2ha_ hab2a hab2e hade2 ha2del h3adle ha3dri ha1el haft4s hafts3p ha3go ha3ha hai1es h2aka haki3 4hal_ hal1a halan4c hal2ba halb5s 2ha3le ha3li hal2la h3alp halt3r h3amt h2an_ 2hana h2and h1angr 2h5anr 2hant 2hap ha2pr ha3ra 2h1arb h2ard har3ma har5te h1arti 2has_ 4ha3sa hasi1 h4at hatt2 hau3f6li 2h1aufm h1aukt hau2sa hau4sc hau4spa hau2tr h1\xc3\xa4ff h1\xc3\xa4rz h\xc3\xa46s5chen h\xc3\xa4u4s3c h\xc3\xa43usp 2h5b6 hba2r3a 2h1c h1d 2hea 1heb he3be he2bl he3br he5che he1cho he2el hee3le hee2s he2f he3fe hef3erm hef3ing hef3l hef3r he3fri he2i h1eie h1eif h1eig heine2 hei4neh h1eink he3ism he3ist heit6s3 h1eiw hekt5a he2l3au he2l1ec he3l2ei he3len he3li hel4l3au he3lo he4l\xc3\xb6 he3ma he3mi 1hemm 2h1emp h2en_ he6n3a he4n\xc3\xa4 h4ene he2n1e2b hen3end he2no h1ents he2nu hen3z 2he2o he3on he3op her3a2b her3al her3an 2herap he3ras her4eig he4r3eis he2rel he6r5innu h1erke 2herm he3ro h1er\xc3\xb6 her5th her2z1w he2str he3th he5ti he3t6s he2u heu3g he3x he1x4a he1y2 1h\xc3\x8b 2h5f4 hfel2l1 hfi2s 2h3g2 h5ga hge1 hgin4s 2h1h 2hi_ 2hia h1iat hi1ce 2hi3d h1i4di hi2e hi3ens hie4r3in hif3f6r h2ig hi2kr h2il hi2l5a4 hil2fr hi2n hi3nat hi3nel hin2en hi3n2i hin5n hi3no hin2t5a 2hio hi4on hi3or hi3os 2hip hi2p1h hi2r hi3ra 2hi3re hi3ri hir4ner hi3ro his2a hi4se hi3sp hi4st hi1th hit2s h1j 2h1k4 2hl h3lad h4laf h3lai hl3anz hl1ar h3las h3laug h3laut h3law h3l\xc3\xa4d h3l\xc3\xa4s h3l\xc3\xa4u hl3d4 h5le_ h3leb hle3e h3leh h2lein hle3l h7len_ h2lent h3ler hle2r3a h4l1erg h6l3ern\xc3\xa4 h4l1erw h3les h4lesi hle5ta h3lex h2li h3lik hl1ind h2lo h5loc hl1of hl1op h6lor h3losi h3l\xc3\xb6 h5l\xc3\xb6c h4l\xc3\xb6s hl2san hl2ser hl3slo hl3sp h3luf h3l\xc3\xbcf 2h1m h2ma h3mag h3man h3mar h4m\xc3\xa4c h4m\xc3\xa4h h4m\xc3\xa4l h4m\xc3\xa4u h3me_ hme1e hmen2s h2mi h3mir_ h2mo h3mot hm2s1p h2mu h5musi h2m\xc3\xbc 2hn hn2a h3nac hn3ad h3nam hn3an h3nati h2n\xc3\xa4 hn1\xc3\xa4r h3n\xc3\xa4s hn3d4 hn2e hn3eig hn3ein hne3k h2nel hne4n h2nep h3ner hn4erg h5nerz h2neu hn1g h2nic h2nie hn3im h2nip hn3kl hn2k3n hn3s2k hn4th hnts2 h2nul h3nunge ho3be ho2bl ho2c ho4ch3 ho3ck hoe4 ho2ef ho2fa ho2f3r hohen3 hol2au ho2l1ei 2holo ho4lor 1hols 3holz hom2e ho2med ho5mu h2on 2hop ho1ra hor3d h1org ho3sl ho4sp ho4st 2hot_ ho5th 2hots 1hou2 4ho2w how1e h1o2x ho1y2 1h\xc3\xb6 h\xc3\xb62c h\xc3\xb63ck h2\xc3\xb6r h\xc3\xb64s h\xc3\xb6s3c 2h3p2 h1q 2hr hr1ac hr3a2d h1rai h1rane h3rat h3raum h3r\xc3\xa4u hr1c hr3d h2rec h3rech h3red h3ref h4rei_ h3reic hr3eig h3rel h3ren hr2erg hr2erk hr2erm hr2erz h3re6s3 hre2t hr3eta h3ric hri4e h3riesl h3rin hr1ind h4rine hr1ins h4ris h2rob h3roh h4rom h4ron h2ror h3rou hrr4 hr4s3ac hr2s3an hrs1au hr4s1en hr4ser hr6s1in hr4s1of hr2su hr4sw hrs3z hr4tab hr2t3r hr3tra hrt2s h1ru h3ruh h3rut h3r\xc3\xbc hr3\xc3\xbcb 4hs h4s3ach h2s1an h2s1au hs1e4c hs2ein hs3eins hs1eis h3sel hse4ler h3sen h3ser h2s3ing h2s1of h2s1par h3spen h2spr\xc3\xa4 h2spu hs3s2 hst2a hst3alt h2stau h1stec h3s4terb h4steu hs1the h1s2ti h2s3tie hs4tief h2stor hs2tr h1stun h2s1un h1sy 4h1t h2t1a htab2s h3t4akt_ h3takts h3tal h4t3am ht3a4n ht5ane h4t3ass h4tasy ht3a2t h5te_ h2t1e4c h3tech h2t1ef ht1e2h h2teif h2t1eim ht1ein h2t1eis h4t3elit h4temp h4t3entf h4tents ht3erf\xc3\xbc h4t3ergr h2t1erh h2t1erk ht4erko ht3erre ht3ersc h4t3ersp h4t3erst h2t1erz hte2s h4t3ese h4t3ess h5tet ht1eu h2t1ex h4t1h h3ti h4t1in hti2s hto2 h2t3oly h2top h2torg h2t\xc3\xb6 h3t\xc3\xb6p ht5rak ht3rand h2t3rat ht3rel h3t4ri h2t3ro h3t4roc h3trom h2t3r\xc3\xb6 h2t3ru h2t3r\xc3\xbc ht2sen ht4s3ess ht2sp ht3spa ht4s3par ht4stab ht4s5tur ht3t htue3 ht1und htwa5r ht3z4 hu2b hub1a hu4b3ei hu4b1en hub3l hub5r hu1c hu2h1a hu2h1i huko3 hu2l3a hu2l\xc3\xa4 hu2l3ei hu2ler hu2let hu2l3in hu2lo h1ums h1una huni1 h1up_ h1ups 2hur hur4e hu3sa hu2sc hu2st hu3t2h hu2ti hut4zen hut4z3er h2\xc3\xbc h\xc3\xbc1bel h\xc3\xbch3 h\xc3\xbchne4 h\xc3\xbcs3 2h1v hvil4 2hw hwe1c h1weib 1hyp hy2pe_ hy2t h1z hz2s 2i_ i4aa ia1b4 iab5s i1ach_ i5ad_ i3adn ia1f6 ia3g i5ak_ i1akt i3al i5al_ i5al3a ia2l\xc3\xa4 i5al3b ial3d i5alei i5alent i5a4l3erm i5a2let i5alf i5alg i5alh i5a2lia i5al3k i5all i5alm i5aln ia2lor i5alp i5alr i5als i5al3t4 ia2lu i5alv i5alz i5an_ i1ana i1anc i5and i6a3n2e i6ani i3ann i2ano i5ans i5ant i3anz ia3p2f ia1q i5ar ia2ra iard2 i6ari i3as i5as_ ia3sh i4asi i6a3sp iat2 i5at_ i3ath 1iatr i5ats i5au ia3un i1\xc3\xa4m i5\xc3\xa4r_ i1\xc3\xa4rs i5\xc3\xa4t_ i5\xc3\xa4t3s i1b i2b1ar i2b1auf ib2bl i2b1ei ibe2n1 ibi4k i3bla i3b4le i2b1\xc3\xb6 ib1ra i2b3r\xc3\xa4 ib3ren ib2s ib3sa ib3sp i2b3unt ibus3 4ic ich1a ich3al ich3\xc3\xa4 i1che ich3ei i3cher i1chi i2chin ich3l ich5m i1cho i2ch3r ich2t3r i1chu ich1w i2cka ick2e i1cr i5cu i1d id2an i2d1au i2dee ide5l2\xc3\xa4 ide3le iden3g ide1ra ide3re ide3so 1i2dio 1i2dol i2d3r i3d4ra id1t4 1i2dy ie3a4 ie2b\xc3\xa4 ie2b3l ie2b3r ieb4sto ie1c ie4ck ie2dr ie1e2 ie2f1ak ie2f1an ie2fau ief3f6 ie2f5l ie2f1r ie2ga ie2g5l ie2g3r iegs3c ie3he i1ei i2e2l3a2 iel3d i2ele ie2l1ec i2eli i1ell i2els iel3sp iel3sz ielt4 iel3ta i3e2met i1en i3en_ i3ena i3e4n\xc3\xa4 i3end ie2n1e2b ien2er ien3ere ie3nern ie3ners i3enf i3en1g i3enh i3enj i3enk i3enm i3enn i3e2no i3en\xc3\xb6 i3enp i3enr ien5sc ien3s2e ien5sp ien2st ienst5r\xc3\xa4 ien5sz i3env i3enw i3enz ie1o2 ier3a2 ie2rap ie2r1ec ie3rel ie3r2er ie4r3erz i3ereu i1ergr ier3k2 i1ern i3ern_ ier5ni ier4s3eh ier3sta ier3sz iesen3s4 ies5ser i1esti ie1stu ie3su ie2t1a ie4tei ie4t3erh ie2t3ho ie4t1o ie2t3\xc3\xb64 iet4se iets4t i3ett ie1un i1eura 2if if1ab i2f1arm if1au i5f2en if1erh ife4s if2fl i3fi if5l i1f6la if1l\xc3\xb6 i1flug i1fl\xc3\xbc if3r if4ra i1frau i1f4re if4r\xc3\xbc if2s if3se if2ta ift3erk if2tro ift3s2p i1g iga1i i2g1ang ig1art iga5s i4g5ei ig7eise ige2na i4g5erz ig2gr i2g1im i2g3l ig4le i4gli ig1l\xc3\xb6 ig1lu 2igm i4gn\xc3\xa4 ig4no i3g4ra ig4sal ig5s\xc3\xa4 ig4s3e ig3so ig3s4p ig4spa ig3stei ig4s3to ig4st\xc3\xb6 ig3str ig5stu i1h i2h1ar ihe1e ihe4n ihis3 ih3l ih3m ih1n ih1r i2h1um ihu3s ih1w 2i1i4 ii6g i2i5t i1j i1k i4k3a4k ik5amt i2k1ano i2k3anz i2k1ar ik3att i2k1au ik3aufr i2k1\xc3\xa4r 2ike i2k1ei i2k1erz i2k3eta i2k1in i2k3l ik4lan i2k3n ik2o3p6 i4k\xc3\xb6l ik3ra ik3r\xc3\xa4 ik3re i3kri ik1s2 ik3sh ik3so ik3sz ikt3erk ik2t3r i2kun i3kus i1la i2l5ab il3a2d i2l1ak i2l5a4m il1ans i2lant il3asp i2l1au il4aufb il5aus i1l\xc3\xa43 il2c il2da il4d3ent il2d1o ild5r i2l1e4c ile2h il1ehe il1ein i2l1el i2l1ent i2l1erf i2l1erg i2lerr il2f5l ilf3le il2f3re ilf4s ilg4r ili3en il1ind i2l1ip i3lip_ i3lips ill2a il3l4an il5l2er il3l2i il2mak il2m5at il2m1au il2min 2ilo i2l1or il1\xc3\xb6f il2san il3tr i1lu2 i2lum il3v2 2im_ i2mag ima4ge ima2to ima4tur 2ime i2m1elf i2m1erf i2m1erz 2imi i2m1ins im2mei im4m3ent 1immo im1org 1impo 1impu im2str 2imt 2imu im3unt 2in_ in3ab in1a4c in3ad in2af i4n5a2m i3nara i6narb ina4s i2n3au inau4s in1\xc3\xa4s in1\xc3\xa4u in3dau 3index in3do in2dro 1indus 4ine i2n1e2be i3nec in1ehe in3ei i5nen_ i5nend in1eng i5ner_ i4n3erbe i3n2erh i3nerl i4n3erl\xc3\xb6 i5ners i2n1eu ine3un ine2x inf4 2ing ing1af in4g3a6g ing5sc ing3ska 1inhab 2inhar 2inhau 2inhe i3ni3d i5nie 2inig 2inis i3nitz 3inkarn ink4ste in4nei in4n3erm 1innta 2ino in3od in1or ino3st ino3t i1n\xc3\xb6 in1\xc3\xb62d 2inr ins2 ins4am ins3\xc3\xa4n insch4 in7schl 2insen ins3ent ins3ert ins3h in3sku in5spe in3st 3instal in4s3t\xc3\xa4t in5s4tr 1insuf in3sze int4 1integ in3t2h i2n1uf i3n2um in1unz invil4 i1ny in3ze in3z4w i1\xc3\xb1 4i1o io5a io1c io3e4 i2o3h i3ol_ i3om_ i3oms ion4 i3on_ io3na i3ons3 i2ony i2o1p i3opt i2or i3or_ i3orc i3orp i3ors i2os i3os_ io5se io3sp io3st i3ot_ i3ots i2ov io2x i3oz_ i1\xc3\xb64k i3\xc3\xb6n i1\xc3\xb6s_ 2ip_ i1pa i1p\xc3\xa4 i1pe i3per ipf2 ip3fa iph6 2i1pi ipi3el ipi2s ip4l i1pr 2ips 2ipu i1q i1r4a i3ra_ i3ras i1r\xc3\xa4 ir2bl ir1c ir2e i5ree 2irek i5r\xc3\xa9 irg4 ir2gl i1r2i 2irig 2irk ir2k5l irli4n ir2mau ir4m\xc3\xa4 irme4 ir2m1ei ir2mum ir4m3unt irn3ers i1ro i2ron iro2s i1r\xc3\xb6 irpla4 ir4s ir5se ir5sh i1ru iru2s1 i4s3amt is1an is1au is1\xc3\xa4n 2isb i2sca isch3ar i4sch3e4h i4sch3ei isch6er i4schin i5sching i2sch3l i2schm isch3ob isch3ot isch3re isch3ru isch3wu is3chy i2s3cr 2i3se ise3e ise3ha ise5hi ise2n ise1ra i4serh i4s1erm iser2u i4s1erw i5ses i4s1ex isi2a i2s1id i2s1of iso2n iso6nend is1op 3i2sot i2sp is1pa i4spar is1pe is2ph is3pic i4spo i4spro is3sa is4sau is4s3che is4s1pe is2spr is2st iss1tr is2sum i2st is1t2a is2t3ab i3star is2tat i3stel iste2n is1th i1stil is1to is1tr is2t3re i3st\xc3\xbc isum3p i2s\xc3\xbc i1sy i1\xc3\x9f i\xc3\x9f3ersc 2it_ i1ta it1ac it4akte ital1a it3alt it3am it1ang i3tat it1au i4t1ax 4i3t\xc3\xa4 i4t1\xc3\xa4s it\xc3\xa4t2 2ite i2t1eig it1ein 4itel ite4la itens2 iten3st i4tex it1he i5thr i3ti 1itia i4t1id 1itii i4t1in i1to i5toc i2t1of i1t\xc3\xb6 i1tr it3raf it3rah i2t3ran it3ras it3rau it3r\xc3\xa4u it3re it3ric it4ron i3tru it3run it4s3a2g it2s\xc3\xa4 it2s1e2 it4s5er1 it2s1id it2s1pe it2sti its3tie it2sto it2tar it2teb it2tr it1uh i2t1um i2tuns itu5re_ i1t\xc3\xbc i3t\xc3\xbcl i3ty 2i1u4 ium2s iu5se i1\xc3\xbc 2i1v iv1ang i2veb i2v1ei iv1elt ive4n i2v3ene i2v1ent i3vol i2vr i2v1ur 2i1w ix2em i3xi i1xo ix3tu i1z i2zan iz1ap iz1au ize2n i2z3ene i3zer i2z1ir iz1ob i2z1\xc3\xb6 izt2 iz3th i2z1w \xc3\xad1l 2j_ ja1c jahr3ei jahr4s ja3la ja3ne ja3st 2jat 5j\xc3\xa4 je2a jean4s je1c je2g jek4ter jek2t1o2 jek2tr je2p jes1t je2t jet1a jet5r jets4 jet3st jet5t jet1u4 je5v ji2v j2o joa3 jo2b1 jo2i joni1 jo1ra jord2 jo2sc jou4 joy1 4j\xc3\xb6 j2u ju2bl juden3 jugen6 jugend5 ju2k jung5s jur2o ju2s jute1 2j1v 4k_ 1ka 3ka_ ka2a ka3ar kab2bl ka2ben 2kabh ka1bl 2kabla 2kabl\xc3\xa4 kab4le 2k1a2bo ka3b6r 4k3abs ka1c k4ade 3kadi k3adr ka1fr kaf3t ka3g kai5 ka1in ka3ka ka1la ka2lan kal3bl ka3lei ka4lens kal5eri kal2ka 2kall kal4tr k4am k5a2ma kamp2 ka2nau k1anb kan3d4 2kanda kan2e 2k1ang 2kanl 2k1ans 6kantenn ka3nu 2kanw k4anz_ ka2o 2kapf 3kara k2ard 3ka3re k2arg kari3es 2karm k2arr kar3t 2karti k2arw ka3se kasi1 ka4sp kas1t ka4sti ka3ta ka3th ka2t3r 2katt kau2f1o 4kaufr 2kaus k1ausg k1ausw kau3t4 2kauto 1k\xc3\xa4 k1\xc3\xa4mi k\xc3\xa4r2 k\xc3\xa44s3c k\xc3\xa43se k\xc3\xa41th 2k1b4 k5be kbo4n 2k3c 2k3d kdamp2 ke1c ke3d kefi4 kege2 ke2gl kehr4s 2k1eic 4kein ke1ind keit2 ke2la ke3lag kel1au ke2l\xc3\xa4 4k1e2lek ke3let kel3sk kelt4e 4k1emp ken3a ke4n3ei 4kengag ken3s2k ken5stei ken3sz k2ente k3enten ken3th 4k1ents 2kentw 2keo 4ke2p3 k2er_ ke1ra ke2ran ke2rau ke3reig k3erh\xc3\xb6 ke6r5innu k2erl k4erl_ k2ern ker4neu k1ero k2ers_ ker3z2 k1e4se ke5sen ke4t3a keten3 ke2t3h ket3z2 2k1e2x 2k5f kfi2s kfr\xc3\xb65 2k1g4 kge1 2k1h4 kho3m ki3a6 ki1c ki2d ki3da ki3d4r ki2e ki3ern ki1f6l ki1fr ki3k4 ki3l2a ki3lo 3kin_ 2kinh k2ini ki3n4o 2k1inse kin3sh 2k1int ki3o 3kirc ki5s2p kis2to 2kiz ki3zi 2k5j 2k1k k2l4 4kl_ 2kla_ klan2 k4lar k5last 2k5le_ kle5ari 4k5leh 4k5leit k3lem_ 2k3ler kle2r3a 2k3leu kle3us k5lich 3klim klit2s 4k5liz klo2i3 k3lu k3l\xc3\xbcc k3ly 2k1m k2n2 k4nei kni4en_ kno2bl 2knor 3k4n\xc3\xbc 1ko ko5a ko4al 2kobj koff4 koh3lu ko1i2 3kom ko2min k2on kon3s2 ko3nu ko1pe kop4f3en kopf5err kop2t ko1r2a ko3ran 4k1orc kor4d3er ko3ri kor3m kor4ner ko3str 3kot ko3ta kots2 kot3sp k3ou 3kow k1o2x 3k\xc3\xb6 k\xc3\xb62f 2k3p4 k1q k2r4 2k3rad k3rats 2k1raum k4raz 2kr\xc3\xa4t 4k5re_ 2krea 2k3rec 2krede k3reic kre1i2e k3reih 2k3rh k3ric 4krip k4ron kr\xc3\xbc1b 4ks ks3all ks3amt k2s1an k2s1au ksch4 ks1e2b k2s1em k2s1ers ks1ex k2s1in k2s1o2 k3sof k5son ks1pa k3spe ks5s4 ks2t2 k4s3tanz kstat4 k3stau k1ste k2stea k5stei ks3ter k1sti ks3tie k2stor k2str\xc3\xa4 k1stu k2stum k2s1u k1sy ks2zen 4k1t kt1abs k2t3ad k3taf kt1akt k3tal kt3am kt1an kt3anz k2t3a2r kta4re k2t1au k3te kte3en k4t1ei k4temp k4tent k4t3erfo k4tex k2t1h k2t1id kt1im k2t3ing kt1ins k2t1of k3top kt1ope kt4ran kt3ras kt3run kts4 kt3se kt3st kt3t2 k2tuns kt3z ku1c ku3la 4kulp 2k3uml kum4s k2u3n2a kun6s4 kunst3 2kunt 2k1up_ kuri2 kuri4er ku2ro kur4sp kur4zen ku4schl ku2so ku2sp ku2s1t 1k\xc3\xbc 2k\xc3\xbcb k\xc3\xbc1bel k\xc3\xbc1c k\xc3\xbcr4s 2k1v 2k1w 2k5z2 kze3l 6l_ 5la_ la3ba 2laben 2labf 2labg 2labh 2l1abl lab2o l2a1b4r la3bra 2l1abs 3labu 2labw la3che 1lad la7den la3di l3adl 4ladm 2l3adr 5ladu l3adv 1lae la2ga la5ge lag5eis la4gl la4gn lag1ob la2gr lag5se lahn3 2la1ho 1lai 1laj la2k1i la1k4l 2l3al la3ma l4ami l4amp 2l3amt 1lamu la4mun la2na l2anc 5l4and lan2d3a lan6d5erw lan6d5erz lan4d3in lan2dr 2l1anf langs4 2lanh 4lanl 2l3ann l1ano l1anp 2lans 1lanx lan2z1w la1or l1a2po6 lap4pl la2r1an 2l1arb la2r1ei la6rene 2larm lar3st 2l1art lar3th la3ru la2sau la3se 2lash la2so 2la4sp 5lasseri 5lassern 5lassers lat2a 2l3ath la2t3ra lat4s lat4tan lat4t3r lau4fer lau2fo l2aufz l1ausg 2l1ausl 2l1ausr 2l1auss l1ausz 2lauto 2law lawa4 1lax l\xc3\xa41c 7l\xc3\xa4ds 7l\xc3\xa4dt 4l\xc3\xa4f 2l1\xc3\xa4hn 3l\xc3\xa4nd l2\xc3\xa4r_ l\xc3\xa4r2ma l\xc3\xa44sc l\xc3\xa43se2 4l\xc3\xa4t 4l\xc3\xa4ub 4l\xc3\xa4uc 4l\xc3\xa4ue 7l\xc3\xa4uf 1l\xc3\xa0 4l1b2 l3bac lb3ang lb3arb lb3b l2b3ede l2b3id l2b3ins lb4lat l3bl\xc3\xa4 l2bli l4bre_ lb4ro l3br\xc3\xbc lbs4 lb3sp lbst1e lb4sti lb4sto lb4stu l2b3uf 4l1c l3che l5chi lch3l lch3r lch3\xc3\xbc lch1w 4l1d ld3a2b ld3ad l2d1ak l3dam l2d1an ld1a4r ld5ari ld1au ld1\xc3\xa4r l3de_ ld1ei l3der_ lde3re l3dern l2d1e4se l2dex l2d1im ldo2r l3d\xc3\xb64 l2d3r ld1ra l4dran ld1r\xc3\xa4 l4dre ld1ri ld1ro ld1r\xc3\xb6 ld3sa ld3ska ld3sp ld1st ld1t4 l2d1um l2d\xc3\xbc 1le 3le_ le2au le3ba le3ben_ leben4s3 le2bl lech1a le2chi lech5t4e 3led 4ledd le3de le2e le3ei le3en_ le3f4a le2gas le2gau le2gl le3gr 3lehr leh3r2e 3lei_ lei2br l2eid 4l1eig l2ein_ lei2no l2eint lei2s leis6s5er lei3su lei4\xc3\x9fer l2eit lei8t7ersc leit3st lekt2a 3l2ela le2le 2l1elek le3len le3ler le3les 3l2eli lel3s le2m1o2 2lemp l4en_ le2nal le4n\xc3\xa4 3lene le4n3end 4lenerg l2enf le3ni len3kl l2e2no len3st len3sz l1ents 2l3entw le2nu le1os 2lepo lepositi8 l4er_ l2e1r2a le2r3a6g le2r3au ler5b4 4l3ereig le4r3eim l4erem l4eren l4erer le4rers 4l3erfas 4l1erfo 3lergeh 3l4ergew 2l1ergi ler3k 3lerm le1ro l1err l4ers_ lers4k ler3sz le2ru le3rung 4l1erz les4am le5s4e 2lesel le3sh lesi1 le3s4k les2t le3ste3 4lesw 2lesy le4tag le2tat 2le3th 2leto lets4 le2u 4leud 3leut 2lex 4le5xe l1exz 3ley 2l1f l3fa l2f1ec lfe1e lf1ein lfen2s l3fl\xc3\xa4 lf3lo lf3ram lfr\xc3\xb65 lf2s lfs3tau lfs3tr lf2tr lf4u lfur1 2l1g lg1d lge3ra lg3lo lg3re l3gro 2l1h 3lhi_ 1li 5li_ li1ac li1ak 3lib 3li1c 5lichem 5licher li3chi 4lick li3da 2lido liebe4s lie2n li3ene li5enp lien3st lie4s3c lie2st li3fa li4fe 5lig li2g1a2b li3ke li3ki li3kli li2kr lik4ter li3li li3m2a 2limb 2limp li3n4a 2l1indu li4nef li2nep li4nes 2l1inf ling4s 2l1inh li3ni li4nit 2l1inj lin2ka li2n3ol l2ins_ l2insc 2linsp 2linst 2l1int l1inv li2o lione2 li2p5a 5lipt li3s2a li4schu 2l1isl liss2 3list li2tal li3te li1t2h lits2 lit3sz li3tu 3liu2 2lixi 2l1j 2l1k lk3alp l3k2an l3kar_ lk1arm l3ke lkir5 lk3lo l3k4ra lk3ro l2k3ru lk2s3 l3k2\xc3\xbc lk\xc3\xbc1b 4l1l ll1a2be ll3aben l2l1abt ll1akt l2l3a4m ll5ama ll2anw l2l3anz l3lap ll1arm ll3aug l2l1aus l2l1\xc3\xa4m ll3b ll3d ll1ech l2l1ef ll1eim ll3eise l3l4em l5len_ ll3endl ll3endu l4lents l3ler_ lle2r3a l6l5ergen ll3ernt ll2err l3l4es llg4 ll1imb ll1imp l2l1ind lli5ne l2l1ins ll3l4 ll5m lln2 l2l1ob ll1of ll1opf l2l1o2r l2l3ou ll1ov l3low l4l1\xc3\xb6f ll3\xc3\xb64se ll3s2k ll2spr llt4 ll3th llti2 ll3tr llt5s2 ll1ur llust6 llus5tr ll3z2 2l1m lm3a2b lm1aka l2m1arc lm1ind lm1ins l4m\xc3\xb6l lm3p lmpf6 lm3s2z lm3th 2ln l1na lna6r ln3are l3n2e l3ni l3no l1n\xc3\xbc 1lo 3lobb 2lobj lo2bl l2obr lo3bri 2lof4 4lo2fe 3logi loh2e l1oh4r 3lok lol2a lo2min lo4n1o lo2o 2lopf 2lopt lo1ra lo4r\xc3\xa4 l2orc 4l1or5g6 lo3ro 3lorq l2os 3los_ lo4sa 3lose lost4 lo4ste lo4s1tr lo3sze lo2ta lo3th loti4o lot2s 2lo2v lo3vi 2lox l\xc3\xb62b l\xc3\xb63du 3l\xc3\xb62f 4l1\xc3\xb6fe l3\xc3\xb6hr 2l1\xc3\xb6l 5l\xc3\xb6sc 6l\xc3\xb6\xc3\x9f 2l1p lpe2n1 l3p2f l2p1ho l3prei l3pro lpt4 lp3tr 2l1q lque3r 2l5r2 lru3t2 lr\xc3\xbc1b 4ls l2s3a2d l5s4al ls1anf ls1ang ls1ann l2s1au ls1ec l2s1em ls3ere ls1erg l2serh l2s1ers l3ses l3sex lsho2 l2s1imp ls2kal ls2log ls3ohne l3s2po l2spro l3spu ls5s4 lst2a lst2e l1stec l5stei l5stel l1sti ls2tie l2stit ls2tr l1s2tu ls1um l3sur l1sy ls2zen 4l1t lt1abs lt3ala lt3all lt3alt lt3am l4tame lt3and lt1ang l3tar lt3art l3tat l4t3ato lt1au l5tef lt1eh l2t1eig lt1ein l2t1eis l5t2en lter3a lt3erei l3t2erg lter4sp lte3str lt3e2th l2t1h lt5hei lt2hem l3ti ltimo4 l3toc lt1of l2t1\xc3\xb6 l3t\xc3\xb6r lt3\xc3\xb6t ltra1l l3tr\xc3\xa4 lt3r\xc3\xa4u l2t3re l2tro lt3roc lt3ros l2t3r\xc3\xb6 lt5sc lt2s1e lt4stab lt4stoc lt2s3t\xc3\xbc lt3t lt1uh l2t1um ltu4rer ltu2ri lt3z2w 1lu_ lu1an 4lu2b1 lub3l lub3sz 6luc lu2dr lu2es luf2 2l1ufe luft1a luft1e 4lug lu2ga lu4g5e2b lu4ger lug5erp lu4g3l lu2go lu2g3r lug3sa lug3sp lu2gu 2l1uh lu1is_ lume2 2lumf 2luml l1ums l1umw 1lu4n 2l1una l1unf 2l1uni 4lunt 2lunw lu4pf 2lur lur1c l1urn l1urt 2luse lu2sp lus4ser lus2s1o lus2s3p lus4st lu2st lus2t3a lust3re lu2s1u lu2t1a lu4tal lu2t\xc3\xa4 lut3erg lu2top lu4t5r 3lux 2l\xc3\xbcb 7l\xc3\xbcd l\xc3\xbch1l l\xc3\xbc2s 2l1v l3vo l2vr 2l1w l5wa 1ly ly1ar lye2 ly3et 2lymp 3lyn ly3no ly1o ly3u 2l1z l3z2an lz1ar lz1erz lz1ind lz1o2f lzt2 lz3th l2z1w lz2w\xc3\xa4 lz2wec l4zwer 4m_ 1ma 2m1ab m2abe ma1bl 3m2a1b4r ma2ci mad4 ma3de ma1e2 ma1f ma4ge_ ma4geg ma4gek ma4gep ma4ges ma4get ma4gev ma4gew 2magg magi5er_ magi5ers ma5g6n 3mah ma3ha 2m1akt ma1la ma4l3akt ma2lan ma2lau ma3law mal3d ma3l2er mali3er mal3lo 2m1anal ma2nau 2m1anb man2ce mand4 man3ds ma2net 3mang2 4mangr m4anh 2manl 2mans\xc3\xa4 manu3 m2anw 2manz 2m1arb mar3g2 ma5ri 3m2ark 4mar4o maro3d 4marr mar3st mart2 mar5te ma3ru 3mas ma3s2p ma3sto ma3s2tr 3ma\xc3\x9f m4at ma2tab ma2tan mat4c ma4tel mat3sp 2m1auf ma3un 2mausg ma1yo ma3zu 3m\xc3\xa4 m1\xc3\xa4hn 6m1\xc3\xa4nd 5m\xc3\xa4nn m\xc3\xa41t m\xc3\xa4u4s3c 2m1b4 mb2a mbe2e mbe2n m3br 2m3c 2m1d md1ar m2d1\xc3\xa4 md1ei md3s2e m2d1um 1me meb6 me1c 2meco medi3 medie4 me3e2n meg4 mega5 3meh 2m1eif 2mej me3lant 3meld me2lek 2m1elf_ mell2 melt4 6m5eltern mel3tr 3men men3au me3nor m2ens men3st men6tanz 4m1entn ment6sc 4mentsp 4mentw me1o 3mer_ me1ra me2rab me2r3ap mer2e mer3ein me4r3ens 4m3erg\xc3\xa4n me5ric 3merin mer2kl 3mers mer3z4en 3mes me5si mes2sa messe4r mes2s1o mess1p meste2 me3ta mete2 me3th me5ti 3metr meu1 2mew 2mex 1m\xc3\xa9 2m3f mfan2 mfi4l 4m3g mge1 2m1h 1mi mi1ak mi1an mibi3e 3mi1c mi3da mi2e1i mi2er 3mig mi3gn mi2ki mi2ku mi3l2a 3mil4c milch1 mil4len 2m1imp mi1n2a mi3nal min2e min2ga ming3st mi3ni 3minik mi3n2o 3mirs mir5sc 3mirw mi2sa mise1 mi3sp mis2s3c mi4ste 3mi2t1 mit3es mit3s4 mit5sa mi5tsu 4mitz 2m1j 2m1k4 2m1l m3la m3le ml\xc3\xb63 2m1m m2m1ak m2m1ans mm1anz mma3s4t m2m1au mm1\xc3\xa4n mm1ein mm1eis mme2ra mmer3k mm1inb mm1ins mm1int mmi3sc mmi3s2t mmm2 mm3p mm3sp m2m3um mm\xc3\xbcl2 2m1n m4nesi m3ni 1mo mo4a3 2mobj 3mod mo2dr 2mog_ mo2gal 3moh mo2i moi5r mo2k1l 3mom m2on mo3ne mo4n1er mon2s1 mon4st mon3su mont4a 3mo2o 2mo1pe mo2per 2mopt mo1ra mor4d3a mo2rer morgens6 mo4sk mo3sp mo5s2ta moster4 mo3ti mo1y 3m\xc3\xb6 m\xc3\xb6be2 m\xc3\xb62c 4m\xc3\xb6k 6m1p mpf3erg mpf3erp mpf3err mpf3erz mp2fl mpf7l\xc3\xa4 mpf5li mpf1or mp3lu mp3ta mp3te 2m1q 4m3r 4ms m2s3an m4s1ap ms3as m2s1au m3se m6s1ef ms1erf ms1erw m4s1ex m3so m3spa m2sp\xc3\xa4 ms2po ms3s2 m2stal m1stec m1s2ti ms2tr m2str\xc3\xa4 m1s2tu m3s2t\xc3\xbc ms1um m2s\xc3\xbc m1sy 4m1t mt1ab mt1ak mt3alt m3tam mt1ar mt3are mt1ein m2t1erf m2t1erg m2t1erl m2t1ers m4t1ert m4t3eta mt1eu m2t1h m3ti m4t1im m4t1in mti2s mt1\xc3\xb6s mt2s mt3sc mts1e mt3s2k mts1p mt3spa mt3st mt4s3t\xc3\xa4 mt3su mt3t mt1um mt1urt mt3z 1m2u mu3a mu3cke 2m3uh mu3la 2muls m3umg 3mun mu3na mund3a mu3ne 4m3ungeb mu3no mu3ra mu5ru 5musk mu2s1o mu2s1t mu2su mut1au mut2s3 1m\xc3\xbc 2m\xc3\xbcb m\xc3\xbcl4len 3m\xc3\xbcn 3m\xc3\xbct 2m1v mvol2 mvoll1 2m1w2 mwa4 mwel4 1my my4s3 2m1z 6n_ 3na_ 2n1ab 3n4aba na3ber n3abh n2abo n3abs n3abt 4nabw na2c nach1 nach5s na3cke 1nade na2der 1nadi n3adr 1na1e n1af na1f4r 3nag 5n4ah na2h1a n5ahn n3aig n3air 1nais n1ak 3nako n3akt 1nal n4al_ nal1a2 na2lad na2l\xc3\xa4 3n4ald n6ale na4lent na2lin nal3k nal3l2a nalmo2 2nalo na2lop n4als_ nal5sc nal3t4 na2lu 2naly n6am_ 3n4ame 5na3me_ 5n6amen na3m4n 3namo 2n3amt n1an 2nan_ 2n3a2na n3anb n2anc 2n3ang4 2nank 2n3anl na3no 2nanr 2n3ans 2n3antr 2n3anw n1ar 3n4ar_ 2n3a2ra 1n4ard 3nare 3nari n2ark 2n3arm n2arr 2n3art n4arta na3ru 3nas na4schw 4n3asp n3asy 1nat 3nat_ na3t2h nats1 nat4sa nat6sc 2natt n1au 2nauf n3aug 5naui 1naul 2n3ausb nau3sc 2n3ausg n3ausl 2n3auss 2n3ausw nau5te 1nav navi5er_ navi5ers 1nax 1n\xc3\xa4 n2\xc3\xa4c 3n\xc3\xa4e 3n\xc3\xa4h n1\xc3\xa4hn 2n1\xc3\xa42m n3\xc3\xa4n n\xc3\xa4r4s 2n\xc3\xa4s n\xc3\xa44sc 2n\xc3\xa4u 4n7b4 nber2e 4n1c nc5ab n3cen n3ces n3che nch3m n3chu n2ck 6n1d nd1ab n3daf nd4ag n2d1ak n4dakt nd1ann n2d1anz nd1arb nd1arr nd1art nda3ru n2d1au n3de_ nde3alt nd1ei nd3ei_ ndel4st n3den nden3sk n4d3ents n5der_ n5deri nde2ro nder5ste n3des_ nde4se n3dest ndi2a ndo3c n2d1op ndo3st nd3rat n2d3re n4dres nd3rob nd3rol nd3ros nd3r\xc3\xb6 n4drui n4d5run nd2sor nd2spr nds3tau nd2sum nd3te nd1th nd1t4r n2d1und n2d\xc3\xbc 1ne 3ne_ ne2a ne3an ne3as ne3at ne3au ne2bl 2n1ebn 2nec 5neca 4nech 2ne2e1 neei6 ne3en nee3t n1ef 3nefe 4neff ne3g6 3n2eh n3ehe 4ne2he_ 6n3ehr 2n1ei 3nei_ n2eid 4neif 3neigt 5neigu 4n3eing ne2k nek3t ne2l nel3b 4n1ele ne3len ne3li nel4la 3ne3lo ne3lu 5n2em_ 2n1emb nem2e n1e2mi 2n3emp 2n1ems 3nen n2en_ ne2n3a 4n1endb n1endg 4n1endh 4n1endu 4n1endw ne2n1e2b nen3ei ne4nene nen3erb 4nengu nen3k ne2no nen5s4e 5n2en3ta n1entb 4n1entn nen2tr 4n3ents 4n3entw 4nentz ne2n1u n2env ne1op ne1os ne4p3f 2nepo ne2pos n2er_ ne1ra ne5r4al ne2r3am ne2r3ap ne2rau 2n1erbi ner5eier 2n1erf 4nerfo nerfor4 4n3erf\xc3\xbc n3erg 2n1erh 4n3erh\xc3\xb6 3ne3ri n1erk n3erm\xc3\xa4 2n1ermo 2n1ernt ne1r\xc3\xb6s 2n1err n2ers_ 4n3ersa 3n4ert_ 2n1ertr ne2rup 4n1erwa 4n1erz 3n2es n4es_ ne2s\xc3\xa4 nes4c 4nesia nesi1e 4ne3s4k ne2s1o ne2s1p 4n3essi 5ne2st ne3sta ne2t1an ne2tap ne2t1au ne2th ne2tre nett6sc 2n3e2tu ne2u neu3c neu3g 2neup 5n2ew 2n1ex 3nez 1n\xc3\xa9 4n1f nf1anb n3f\xc3\xa4 n3f2er n5fi nfi3le nf5lin n3f2o nfo3s nft4s3 4ng n2g1ac n2g3ad nga4ge n2g1ak n2g3a2m ng1anz n3gap n4garb n3gas n3g\xc3\xa4 n4g1\xc3\xa4l ng1d4 n4g5ein nge3le n5gen nge5nerw nge4ram n4g5erse n5ges6 ng5hu n2glan ng3lo ng3l\xc3\xb6 ng3lu n4gm ng3ne n4g1or ng3rat ng3r\xc3\xa4u ng3rein ng4sc ng4s3e4h ng4spo ng5s4tel ng3ts n2gue 6n1h n3ha_ n3har n3hau n3h\xc3\xa4 n3he nhe2r n3ho 1ni 3ni_ 3ni4a ni5as ni3ba nib3b 2nid ni2de ni3de_ n2ie nie3b4 ni1el nie3l4a nie4n ni3fa nifi3 3nig nig2a 4n3i4gel ni2g3r nig4s5p nik3ing ni3k4l ni2kr ni3lo n2imm nim2o 2n3imp 2n1in 4n3ind 3ning 4n3inh nin1i n2ins_ 4n3inse n3int n3inv 3nio ni3ok ni3ol ni3os 3n2is ni4schw ni4s1e ni5se_ niso2 nis3s2 nis3th nis3tr ni2s1u 2nit ni1th ni4ti ni3t4r 2n1j 4n1k n2k3ad n2k1ak n3kal n4k3alg nk3anz nk1apf nk1arb nk1arm nk3arti nk1aus n2k1\xc3\xa4h n2k1\xc3\xa4r n3ke nk1ein n4k3erfa n2k1id nk1inh n2k1ins n3kir n3kla nk3len nk3les n2kli nk3lie n3klin nk4lu nk5lun n2k3ne nk3nor n3ko nk1ort nk3r\xc3\xa4t nk3rede n3kri nk3ro nk4sal nks2ei nk2spa nk3spo nk2ta nk4t3it nk4top nk2t3ri nk2tru 4n3l 4n3m6 nmen2 4n1n nna2b n2nada n2nan nn2ar n2nau nn3d n3n2e nn3ein n4n3eis nn3ele nne2r\xc3\xb6 nn3erwa nn3erz nne4s nnes1e n5neu nn3f nn3g n3n2i n3no3b nn1o2r nn3se nn3s2p nn3ste nns2tr nn4th nn1ur 1no 5no_ 2nob no2bla n2oble 3noblo n3obs 3noby no1c 2no2d no3dr 2n1of no2fe 4n3o4ke no2leu n4om nom4e n2on_ no3n4a 2nonk 3n2opa 2nopt 2nor 3nor_ no1r4a nor2d3r 3norh 3nors n1ort 3n2os_ no3sh 3n2oste n1osth no5tab no2t\xc3\xa4 no4t1ei no5th no6tha no2t1op no2tr 3nov 4n1o4x 2n\xc3\xb6d 2n1\xc3\xb62f 4n1\xc3\xb6l 4n5p2 npir5 npsy3 2n3q 4n3r4 nre2s3t nre3sz n5ru 6n1s ns3ab n2s3ad ns3ak n4s3all ns1an n3sand ns3ans n2s1ap ns3art ns1au ns3auf ns3aus n2s1\xc3\xa4n n2s1\xc3\xa4us n6schlic n3schr n4schro nsch7werd ns1e2d n3sem nsen4sp n2s1ent n2s1e2p ns1erf n2s1erg n2s3erh n2s1erk ns1erw n3sex ns3ha ns3he nsho2f ns1id n2simp ns1ini ns3int n3s2kal ns3ki ns3ko ns3ky ns3l ns3m ns3ob n2s1op nsp4 n3spal ns6pei ns3ph n2spr\xc3\xa4 n2spro nsr\xc3\xbc2 ns5s4 n5stad nst1ak n5star n4s3tate n5stati ns2t1au n2ste n3stei nst3eif n3stel n4stem n3step n5s6terbe n5s6terne n5s6terns n5steu ns2tie n5stif ns2tin ns2to n3stoc nst3ort n4strie ns2tu n4s3ty n3suf ns1uh ns2um n2s1un n3sung ns2unr ns3w 4n1t nta3c n3t4al ntal1a nta3m nt2an nt3ang nt3ant n3t2arb nt1ark n3tarz nt4at n2t1auf nt1\xc3\xa4m nt1\xc3\xa4u n3te nte3a nte5au n5t4eb nte1e nte3g6 nt1eh n4teig n4t1ein ntem3p4 n5t4en nten4te nt5ents n5t4er nte3ru n4t5ess nte3v n2th n3the nt1hi nt1ho n3t2hol n5t4hu n3ti nti3c n4tinf n4t1inh ntini1 n5ti3t ntmo2 n5to nto5me nton2s3 n3t\xc3\xb6 nt3rec n5tree nt3reif n5trep nt3rin n5trop nt3r\xc3\xbc nt3sa nt3s2o nts2p nt4s3par nt5sta nt3t n3tu nt3z2 1nu nu1a nu3ar nubi3 2nu1c 3nue nu2es nu3et nuf2 nu2fe 2n1uh nu3k4 n2um_ 2n1umb 2numf 3numm 2numr 2n1um1s 2numz nu4n n1una 2n1und 3nung_ n1ungl 2n1uni 2nunt 2nup 2nur n2u2s nu3sc nu3se 3nut nu2t1a nu5te nu2t3r 3n\xc3\xbc_ 2n\xc3\xbc2b n\xc3\xbcr1c 1n\xc3\xbct 4n1v2 n3vi 4n3w 1ny_ 2nymu n1yo 1nyr 1nys 1nyw 4n1z n2zad n2zan n2z1au n2z\xc3\xa4n n2z1\xc3\xa4r n2z1ec n4zense n4zentz n3zep nz3erha nz3erwe nzi2ga nz3imp nz1of n2z1or nz3th n2z3wa n2z1w\xc3\xa4 nz1wer nzzol3 \xc3\xb1o1 4o_ 2o3a2 o5abs o4ac oa3che oa3chi o4ad oa3de o4ah o4a3i oa3ke oa4kl o5al o6a3la o4a3mi oanne4 o4ar o4as oa3se o4at o1b 2oban 2o3b2\xc3\xa4 2obb ob2e 2o3be_ ob3ein 2oben oben3se o2ber ober3in obe4sp 2ob2i 1obj ob1l ob3la o2b3li 2oblo 1obm 2obo o3bra o2b3re ob6ri ob3ro ob2s2 ob3sh ob3sk ob3so ob3sp 2o3bu 2ob\xc3\xbc 2oc o3ca o1ce och1a ocha2b o1che o2ch1ec och1ei och3l och5m och1o och1\xc3\xb62 och3r och5te och3to o1ch2u och1w o1ck ock2e o3cki ock3sz o1cr o1\xc3\xa7 2o1d od2dr o3deb o3de3i ode2n oden1e odes1e ode3sp o3dex o3dir 4odr o2dre 4o3du 2o1e2 o2ec o3en1 o2es oe3t o3et_ o3ets o1\xc3\x8e 2ofa of3am o2f1ei of2en o3fer ofes3 of2f1a of2f1in of2f3l of2f3r of2fu 2ofi ofi3k of3l of1la of5li 2ofo 2o1fr of3ra of2s of4s3a of4s1p of3st 2oft of2tei of3th 2o1g o2g1ab og3ala oga4t3 o2g1au o4g5ei o3gh ogi2er o2gl o3glo o3g4n ogs4 og3sp o1h4a o1h\xc3\xa4 o1he o3he_ oh1eis o3heit o3hem o3hen o3her_ o3here oh1ert oh1erz o3hes o1hi ohl1a ohl1ei oh3lem oh3len oh4l3erh oh3li oh3lo ohls2e oh2lu oh3m 2ohn ohn3a oh2ni 3ohnm o3ho o2h1\xc3\xb6 ohr1a oh4rin oh1s oh3ta o1hu oh1w o1hy 2oi o1i2d o3ie o1im o1in oi4r o2isc o3isch_ o1ism oi1th 2o1j 2o1k oka3i oka2la okale2 ok2e o3ki oki4o ok3lau ok3l\xc3\xa4 okna3 ok2s1p okt2 2ol o1la o2lab o2l1ak ol1ant ol2ar olars4 ol1auf o1l\xc3\xa4 ol4d5r ol1eie ol1eis o1l\xc3\xa9 ol4fa ol2f3l olf1r ol2fra olf3sp ol2gl ol2gr olib6 oli5en oli5f olik4 ol2kl ol2k3r olk4s ol2lak ol2l1au ol2l1ei ol3ler ol4l3erk ol3lo o3lo o5lof olo3p2 ol1ort o1l\xc3\xb6 ol2pr ol2str o3lu olu2th ol2z1a ol2zin olz3w 2om om1art o2m1au ombe4n o3me_ o2meb ome3c o2m1ei o3m2eis o2mel om3ene o2mep o2meru om1erz omie4t1 o2m1ind om3ing om1int om3ma om1org om3pf omp6l oms2 om3sp o4m3un 2o1n2a on3ab o2nae on3ak o3nal on3ap o2n3ar o3nat on3aus 2o3n\xc3\xa4 onbe3 2one on4eh onens2 onen3st o2n1erb on1erd on1er\xc3\xb6 on5f 4ong4 on3gl ong5sc 4o3n2i o5ni_ oni3d o5nik o4n3im on3ing onli4 onlo2c on3nan onn4e o3no3 ons3a onsa2g onse2l onsi2 ons1p on3ta on6t5end ont5erw on2t1ri on5v 1ony o1o2b oof4 oo2k ook3l o1op o1or oo2tr oot2st 2o1\xc3\xb6 o1pa opa1b4 opa3u4 o1p\xc3\xa4 o1ped o1pei o1pen op2f1a opf3l op1flu op1fl\xc3\xbc 4oph2 o1pi opi3er_ opi5ers_ opin2 op3le op3li 2o3po op4pl 1oppo op2pr 2o1pr 1opsi op3sz 1opt4 op3tr o1q 2or_ or1a or3a2b o1rad 2orak o2r3alm o2r3alp o2ram orani1 or3arb or5att o2rau o3r2\xc3\xa4 or3\xc3\xa4nd or3\xc3\xa4t orb4 or2bar or1c 2orca or2ce 4or2da ord3am or4d3eng or2deu or2d1ir 1ordn or2do ord3s2t 2ordw 4ore ore4a o2r1eck o2r1ef ore2h or1eig o3r\xc3\xa9 orf3ein or2fle or3g4a 2orget 2orgia or2g5l or3gle or4gn 2orgr 2orh o1ri 4o5ril 2orin or1ins 2orit or3k2a or4k3ar ork2s 2orm or2mor or3na or5ne_ or3no orn3st o1ro 2o1r\xc3\xb6 2orq or3rh 2ors2 or5sa orsch5li or3sz ort3an or2t1au ort3eig ort3ein or4tem or4tent or4t3ere or4t3erf or3th or4the or4t3off or2t\xc3\xb6 ort3rau or4t3r\xc3\xa4u ort3re ort3ric ort5sch or2t1um o3ru o4r3un o5rus or3\xc3\xbc o1ry o3s2a os3ad os4an osa3s os4co 2o3se ose3ei o4s1ei ose2ne os4er os2hi o3sho 4o3s2i osi3tr o3s2k os3ka os3ke os3ki os2lo o2s3p o4sper os4po os4pr os2sa os4s\xc3\xa4 os4sei os4s3enk os4s3o os4s3p os4st oss1ta o2st os4ta ost1ab ost3all ost3am ost3ang os5tarr os2t1au o3stei oste2n oster3e os6t5er6we os4t1h os3til o6s1to ost3ran ost3rat ost3r\xc3\xa4 ost3re ost1uf osu4 o1sy os2ze o2\xc3\x9f1el o2\xc3\x9f1enk o\xc3\x9fe2r o2\xc3\x9f3ere o2\xc3\x9f1erf 2o1t o5tari o3tark o5tat o2t1au ot1\xc3\xa4r 4ote o2teb o3tei ote3in_ ote3ins ote4l1a ote5ner o2t1erw ot2he ot3hel o6t1hi o4thr ot2i ot3im otli4 4oto ot1opf ot2or o3tra o2t3re o2t3ri ot3se ot3s2o ot2s1p ot2tau ot3te ot4t3erk ot2t3r ott3se ot3z2e 2o2u oub4 ou2ce ou3e ou1f6l ou4ge o3uh ou4le_ o3um oun4ge_ ouri4 our2ne ou5s2i outu4 2o1\xc3\xbc o1v ove3s oviso3 o3vo 2o1w o3wec owe2r1 o1x ox2e o2xu 1oxy o3xy_ o1yo oys2 oy1st 2o1z2 o3zi ozon3a \xc3\xb4r3 \xc3\xb61b \xc3\xb6be4li \xc3\xb62ble \xc3\xb62b3r \xc3\xb6b2s3 2\xc3\xb61c \xc3\xb64ch3l \xc3\xb62chr \xc3\xb6ch2s \xc3\xb6chst3r \xc3\xb6chs4tu \xc3\xb61d \xc3\xb6de1r \xc3\xb6di3en \xc3\xb62du \xc3\xb61e \xc3\xb6f2fl \xc3\xb6f5l \xc3\xb6g3 \xc3\xb6ge3le \xc3\xb6gen4s1 \xc3\xb62gl \xc3\xb62gr \xc3\xb6g4s \xc3\xb6g4u 2\xc3\xb6h \xc3\xb61he \xc3\xb6h3m \xc3\xb6h1ri \xc3\xb61hu \xc3\xb62k \xc3\xb63ke \xc3\xb6ko3 \xc3\xb6k3r \xc3\xb66l 3\xc3\xb6l_ \xc3\xb6l1a \xc3\xb6l1ei \xc3\xb6l1em \xc3\xb6l2fei \xc3\xb6l1im \xc3\xb6l1in \xc3\xb6l2k3l \xc3\xb6l4nar \xc3\xb6l1o2 \xc3\xb6ls2 \xc3\xb6l1st \xc3\xb6l3sz 2\xc3\xb6n \xc3\xb6n2e \xc3\xb63ni \xc3\xb6n2s \xc3\xb6n3sc \xc3\xb6o1 \xc3\xb61pe \xc3\xb6pf5l \xc3\xb6p2s3t \xc3\xb6r3a2 \xc3\xb6r1c \xc3\xb6r2dr \xc3\xb62r3ec \xc3\xb62r1ei \xc3\xb62r1e2l \xc3\xb6r2erg \xc3\xb6r2f5l \xc3\xb6r2gl \xc3\xb61ri \xc3\xb62r1im \xc3\xb6r2kl \xc3\xb6r1o2 \xc3\xb6rs2e \xc3\xb6r3sk \xc3\xb6r2st \xc3\xb6r5t2e \xc3\xb6r2tr \xc3\xb61ru6 \xc3\xb62r1une \xc3\xb62sa \xc3\xb62sc \xc3\xb6sch3ei \xc3\xb6sch1w 2\xc3\xb6se \xc3\xb62s1ei \xc3\xb62sp \xc3\xb6s4s3c \xc3\xb6s2st \xc3\xb62st \xc3\xb6s3te \xc3\xb6s1tr \xc3\xb61\xc3\x9f 2\xc3\xb61t \xc3\xb64t3a \xc3\xb63te \xc3\xb6t2sc \xc3\xb6t2tr \xc3\xb61v \xc3\xb61w \xc3\xb61z \xc3\xb6ze3 \xc3\xb6zes4 4p_ p4a 1pa_ 5paa 3pack pa3da pa1fra pa3g2 pa1ho 1pak pak2to 1pa1la palat5 1pal\xc3\xa4 2palt pan3d pan4ds pa2neu pan3k4 pans4 pan3sl 3pan3z4 3pap papie8r7end 1parad 1parco pa5reg pa3r2er 1park_ par4kau par4k3l 1pa2ro par5p4 1partn par3z pa4s pa5sa pa5sc pa5se pa5si pa5s2p pa5str pa5su 2pa\xc3\x9f pat4c 1pat4r 1pau3 p5auf pau4st p\xc3\xa42 p\xc3\xa43cke 1p\xc3\xa4d p\xc3\xa43de p\xc3\xa43\xc3\x9f p\xc3\xa46t1e2h p\xc3\xa4t1h p\xc3\xa4t5s 2p1b 2p3c 4p1d pda4 1pe_ pe4a pea4r 1ped4a peed1 2pef pei1 pe1im 5peit 4pek pekt2s 1pel pe2l3a6 pel5d pe2let pe3lin pe4l3ink pel3l2e 1pem pen4al pen3da pe4nen 3pensi pe2nu pen3z4 pe1ra per4an pere2 per4na per4r3a 5pers perwa4 pe3sa pes5s2 pe2st 3pet 1p\xc3\xa9 2pf 4pf_ p2f1ab p2faf p2f1ak pf1ans p2fa6r pf3are p2f1au p2fei pf1eim pf1ein p2fent p3fer_ pf2erw pff6 pf5l\xc3\xa4 pf3lei pf3li pf5lie pf3lo pf3l\xc3\xb6 pf3lu p2for pf3r pf1ra pf1ri pfs2 pf3sp pf3sz pft2 pf3th 2p1g pgra2 1ph 6ph_ ph4a 4ph\xc3\xa4 2phb 2p1hei 2ph1ers 2phf 4phg phi2ka 4phk ph2l 2ph3m 2phn p3hop ph4r 2phs 2ph5t2 4ph7the phu4s 2p1h\xc3\xbc 2phz pi4a5 pi2e pi3en 5pier pi3gn 1pil pin2e 3pinse pi2o pi2pe pi5ri 1pis pit4a pi1th pit2s p1je 2p1k4 pku2 pkur1 1p2l4 4pl_ 3p4la p5lad plan3g 3pl\xc3\xa4 2ple_ ple1c ple4e ple3n 2plerm p5lic p5lif 4plig p4lis p4lo 2p1m 2p1n 1p2o po1c po2i po3id 3pol po2lau po2p5ak po1pe po2pl po3pt po1ral 2porn por3s por4tra por4tri po5s2e po3sp po4st post3ag po6ste pos4tr po3ta 3pote pot2h po2t1u po2w po3x p\xc3\xb62bl p\xc3\xb62c 4p1p p2p5ab ppe1e ppe2n1 pp1f4 p2p1h p3p2ho p2p3l p4ple pp4li p2p3re p2pri pp3sa pp3sp ppt2 pp3ta pp3to p2r4 3prak 3prax 1pr\xc3\xa4d 3pr\xc3\xa4m 3pr\xc3\xa4s 4pre_ 2prec 1pred pre2e1 1prei 2p3rer 3pres pri4e 1prinz 1priv 1pro 3prob pro3be 2proc 3prod 3prog 3proj pro3st 3prot 1pr\xc3\xbcf 2pr\xc3\xbcn 2ps 4ps_ ps2a3n p3s2h p2s1id p2s1\xc3\xb6 ps2po p1stea p1s2ti ps2tu 3psy ps2ze 2p1t p2t1a pt3alb pt3am pt3as pt3at5 p2t3ec p2t1ei p4t1ent pt3erei p2t1erw p2t1erz p2t1h p3ti p4t1in pto5me p2tos p2t3r pt5re pts2 pt3so pt3sp pt3su pt3t pt1um pt1urs p2t\xc3\xbc 3p2ty pt3z2 1pu 3pub4 pu2dr 3puf 2p1uh pu3la 3pulv 3pum 3pun 4pund pun2k pun2s 3pup pu2s pu4s3t 3put put2s 1p\xc3\xbcf 2p1v 2p1w pwa4r 3py1 py3t 4p1z q2u4 que3rel quer5n 4r_ 1ra_ 2r3aac r3aal ra1ar r1ab rab2bl 2rabd ra3ber 2rabf ra1bl rab4le ra2bli rab5r 2rabs 2rabt 2r3abw 1raby ra1ce ra3che_ ra4cheb ra3chen rach4t3r ra2chu r2ack 2radap 3radf ra3di ra4d3r 1rae ra1er r2af raf3ar ra2fer raf1r ra2ga ra5ge ra3gle ra4g5n ra3go r2ahm 2raic rail4l r3air 3ra1k4l ra2kro 3rak\xc3\xbc r4al_ rala2 ral3ab r3alar ral3b 1r4ald 4r1alg rali5er_ rali5ers rall2e 2r3alm_ ra2lo ra3lop r4als r3alt ra2lu 3raly ra3ma ra2mer ram4man ram6m5ers ram4m3u r3amn ram3ste 4r3amt ramt6s r2an_ 2rana 6ranc r2and r4anda r4ande ran4d3er 2r3anf r3angr 4r3anl 2r3anm 2r1anp 2ranr 2rans r4ans_ ran3skr r2ansp ran4th 2ranw ra1or r2ap 2rapf 2r1ar ra4r3in r2ar3k r4as_ ras4a ra3sp 2ra\xc3\x9f 1r4at ra2t1a ra4t3\xc3\xa4 ra5te 2ratta 4rau_ 3raub_ rau2br 4raud rau3en 2rau2f 2raug rau4m3ag rau4man rau2mi ra3umsa 2rausg rau4sp raus5se rau2th raut5s r2ax r2\xc3\xa4d 4r\xc3\xa4f 4r\xc3\xa4g r\xc3\xa43gn 4r\xc3\xa4h 2r\xc3\xa4m 3r\xc3\xa4n_ 3r\xc3\xa4ni 2r1\xc3\xa4r r\xc3\xa44s3c 4r\xc3\xa4ut 2r1b rba2l3a rba3re rb5art rb1auf rb3b4 rb1ech r2b1ent rbe3r2e r3bla rbla2d rb7lasser r4b3last r2ble_ rb5ler rb2o rb6ri rb2s rb4sei rb3ska rbs1o rbst3a rb4st\xc3\xa4 4rc r1ce rcha2 r1che_ r1chen r1chi rch3l rch3m rch3r rch1s4 rch1w r2ck r1cr 2r1d rd1ab rd5achse rd3al r3dan rdani1 r4d1ant r2danz rd1arb rd1ei r2d1elb r2d1e2le r3den rde3nar r5der_ rde3re rd3ernt rde3sp rde3sta rd1ira rd1iri r2d1it r3don rd1os rd1\xc3\xb6s rd3rat rd3rau rdt4 rd1th rd1tr rdvi3 1re 3re_ re3ad rea5g re5aler re4am re3as re2b1a re2b3l reb1r re4b5ra re2b\xc3\xbc r2ech rech3ar 4rechs 3rechte 2reck_ 3rede_ re1el re2en re3er 5refe 2reff 5refl 5refo 3reg 5reg_ rege4l3\xc3\xa4 4reh re2hac re4h3ent re4h1o r2eie 2reig rei5ge rei3l2a rei5mu r1ein re1ind 4reing 4reinn 4reinr rein6sta rein8s7tre re1in2v 2reis_ re2ke re3la 2r1elb re3lei 2r1elf re3lo 2r1elt relu2 r2em re3m4a 4rempf rem2sp 4remu r2en_ r2ena re1nad re3n\xc3\xa4u 3rendit ren3dr ren4gl 2rengp ren3sa ren4sei 2r1entl 2rentn 2r1ents 2rentw 2rentz r2enz re3or 5repe 5repo 3r2er_ re2ra 2r1erb r2erbr 2r1erd 3rere 2r1erf r1erg r1erk 4r3erken 2r1erl 4r3erla 5rerlag 2r1erm r1ern\xc3\xa4 4r3erns 4r3ernt 3re1ro r1er\xc3\xb6 3r2ers_ 2r1ersa r2erse 2rersp r1ert r2erte 2rertr 2r1erz 3r2es_ re2sa res1au 3rese re3s2p 2ress ress2e res5sei 3resu 2reta re2u reu3g2 2reul re3uni 2r1eur r1e2w 2rewa4 re3we 4r3e2x1 3rez 4rezi 1r\xc3\xa9 2r1f r3f\xc3\xa4 r2fent rfi4le_ rfin6s rf5lic r3fl\xc3\xbc r3f4re rfr\xc3\xb65 rf2s rfs1\xc3\xa4 rf4s1id rfs3pr rf3sto rf2ta rf3tau rft4r r3fu 4r1g r2g1ah r2g1ak rg2an rge4an rge2bl rge4ral rg5e4tap r4geto rgi3er_ rgi4sel rg4l r3gla r4glan rg6lei r4g5leu rg5lo r4g5lu r3gn rg2ne r4gno rg1ob r2greg r2g3res rg3ret rg3rin rgs2p rg3str rgt4 rg3th r1h4 2rh_ 2r3ha r4ha_ 2r3h\xc3\xa4 3r4he_ 3r4hen r3hof rho2i3 2r3hol 2rh\xc3\xb6 2rhs 1r2hy ri3am ri1an ri3at ri1ce ri1cha ri3chl 4rick rid4 ri2d5an 2ridol ri1el ri3els ri4em riene4 ri3eni rie2nu ri1er_ ri4e3re ri3ers_ ri1eu ri2fa ri2f1ei ri2fer ri2f1o ri2f5r rif3st rif4ter 3r2ig ri4g5ene 4rigg 5rigj 7rigk 4rigr r2ik ri3kle ri3le ri3ma r2imb ri2met 2rimp rim2s ri5n4a r1inb 2rind r2inde ri5n4e rine1i 2r1inf rin2g3l rin2gr 4r1inh r3init 2rink 1rinn 4r3inner 2rins 3r4ins_ 4rinse r4inspi 2rint rin2t5r 4r1ir r2is ris4a ri4scho ri4schw 3risik ri3so ri4s1p 3riss ris4sa 4rissi ris4st ri4st r2it r3i2tal ri5ti ri3t4r 5ritu ri2x1 1r\xc3\xad 2r1j rjo1 2r1k r2k3ad rk3all r3kla rk4lo rk4lu rk3nor r2k3nu rk3rau rk3r\xc3\xa4u rk3rea r5kri rk3rin rk2s1e rk3sen rk3shi rk2sp rkstati6 rk4stec rk2ta rk4t3eng rk4t3erf rk4t3erw rk2tin rk2t1o2 rkto4b rk2t3r rk3tra rk4tre r2k1uh rk2um rku4n rk1uni 2r1l r3la rla5m rle2a r3l2i rli2s rl\xc3\xb6s3s rl2s1p rl2sto rl3th r5lu 4r1m r2m3ald rm3anz rma2p r2m3aph rm1arm rm1aus r2m1ef rmen2s r2m1ide rm1ope rm1o2ri rmo3s rmt2 rmt3h rm3ums 4rn r1n2a rn3a2b r2n3anz rna4r rn5ari r2n3au rn4aue rnd4 rn3dr r3ne r4nef rn4eh rn2ei rn3eif r4n3eis rne2n r4n3ene r4nerf r4nerg rn4erhi r4nerk r4n1ert r5nes rn4et r4nex rn1g r3ni r4nin r3nod r2n1op rn1or rn1\xc3\xb6 rn3s2\xc3\xa4 rn3s2z rn5t2e rn3th r1n\xc3\xbc r1ny ro5ar ro5as ro4bei 2robj 1robo ro2br ro1c 3rock_ r4o3de roe4 ro3et 2rof roh1l 3r2ohr 1roi ro3in ro3le roll4en 2roly ro2mad ro2mer 4romm r2on 3ronn ron4tan ro1ny ro1pe 2ropf ro5ph rop2s r1or r2ora ro2rat ro3rau ro2r1o ror5th ro1s\xc3\xa9 ro3sh ro5si ro5sk ro3smo ro3sp ros4s3c ro3stu 4ro\xc3\x9f ro4ta ro3tu 3rout ro3z r\xc3\xb63ch r1\xc3\xb6f 4r\xc3\xb6g r1\xc3\xb6k r2\xc3\xb6l r\xc3\xb67le r1\xc3\xb6r r2\xc3\xb6s_ r\xc3\xb64s3c r\xc3\xb63se 2r3p2 rpe2re rpf4 r5p4fl r4pli rpro1 r4ps rp3se r4p3t r1q 2r1r r3r2a rr1amt r5r\xc3\xa4 rrb6 rr1c r3r2e rrer4s rre2st r4rew rr2h rr3h\xc3\xb6 rri3k2 rr2o r2r3ob rro3m rr2st r3ru r5r\xc3\xbc rr\xc3\xbc1b 4r1s r2s3a2d r4s3amt rs1ang r4s3ar r3sc r5sch2e r6scherl rsch4l r5schu r3se rse4ne rs3ere rs1er\xc3\xb6 rs1ers rs1erz r4sex r3sho r5si rs2ka r5skal rs3kat rs2kie rs2kis rs2kl r4sko r4skr r4sku rs3l rs4no r3so r4s1op r4s3ort_ r3s2p rs5s2 rs2t rs4temp rs3ter r3s4terb r3stie r2stin r3sto r4stot r3str r4st3ran r3stu r5st\xc3\xbc r3s2wi r3sy rs2zen r4szi 4r1t r3tab rt3aben rt1abs r2t1ac r2t3ad rt2akt rtal2 rtals1 rt3am r2t1an r2t1ar rt3a6re rt3att rt1auf r2t1\xc3\xa4r r3te r5te_ rtee2 r5teh rt2ei rtei3la rtei3s2 rte5m2e rte2n1 rtens2 rten3st rte1ra rte4ran rt3erei r4t1erh r4t1erk r4t1erl rter4re r4t3ersc rte3s4k r2th r4tha rt1he r4t1hi r3tho rt1hol r3thy r3ti rto3p r2t1o2r rt4rad rt5rak rt3rec r2t3res rtr\xc3\xbc2 r4ts rt4sam rt3sc rts1pa rt2spr rtt4 r2t1urt r3t\xc3\xbcn rt5w r3ty rt3z2 rtz4w ru1a ru3a2r rube2 ru3che ru3cker ru2cku ru2dr 3ruf ru2fa ru3fe ruf4s rufs1p ru3ga 2ruhr 5ruin ru1ins ru1is 2rum 4rumf 4ruml r2ums_ ru4n r1una run2d1a run4d3er 2rundz ru5ne 2r1unf 2rungl 2r1uni r1unm 4runn ru5no 2runs 4runt ru3pr 4r1ur r3u2r1e ru2si rus2s1p rus4st ru4st ru2t1h ru2to ru2t3r rut2s 6ruz ru2z1w r2\xc3\xbc 4r\xc3\xbcb r\xc3\xbc1ben r\xc3\xbc1ch 4r\xc3\xbcg 4r\xc3\xbcmm 2r1v 2r3w 2r1x ry2c 2r1z rz2a rz3a2c rz4ach r2z3ar r2z3as r2z1eng r2z1erf rz1erg r2z1erk rz1erq rz1id r3zof r2z1op rz1or r2z1os rz5te rz4th rzu3gu rz1urs rz1wa r3z2w\xc3\xa4 r3z2wec 6s_ 1sa 5sa_ 3s4aa 2s1ab sa2be 3sabet sa1b4le 4sabs 3s2ac 5saca sa1cr 2sada 2s3adr sa3fa sa4fe 4s3aff sa1f4r 3sag s3a2gr 5s4ai sa1ik sail4 2s1ak sa2ka 3saki s4akr 4sakt 3sal sa1la 5s4alo 4s3alt 5s4alz 3sam 5s4amm 6s5amma 4s3amp s2an_ 2s1a2na sa3nat 2s3anb san2c s2and san4d3ri 3sang_ 2sanh 5sani 2s3anl 2s1anp 2s1ans san3sp 4s3anw s3anz sa2po 2sapp 3sapr 2s1ar 3sar_ 3sara 4s3arb 3s2ard s4are 3sari s3arm 3sars 4sart s3arz s3a4sp sa3stu 3sat sat2a 4s3ath 4s3atl 4satm sa2tr 5satz sat4z3en 3saue 2sauf 4s3aufb 3saum 3saur sauri1 2s1aus s4ause s1au\xc3\x9f sa2vo 3s2ax 1s\xc3\xa4 3s\xc3\xa4c s3\xc3\xa4hn 3s2\xc3\xa4l 2s1\xc3\xa4m 2s1\xc3\xa4nd 5s\xc3\xa4nge 2s1\xc3\xa4r 3s\xc3\xa4t 3s\xc3\xa4ul 2s\xc3\xa4u\xc3\x9f 4s5b6 sba4n sber2 sbe3re sby5 1s2c 2sc_ sca2 4scar 4s3ce 6sch_ 2schak sch4al 5schanz 6schao 5sch\xc3\xa4 6schb 4schc 3sche s4che_ 4schef sch3ei_ 5scheib 4schemp sch5erla 4schess 4schex 4schf 4schg 2schh 3schi s3chia schi4e s4chim 4schk 4schle_ 6schlein 4schmus 4schn_ 5sch\xc3\xb6 6sch\xc3\xb6l 2schp 4schre_ sch5rom 6schs schs4e sch3s2k sch3sti 6scht sch3t4a sch5te 3s4chu 4schunt 5sch\xc3\xbc 4schz 2scj 4scl 4sco 5s4cop 2scs 2scu 6s3d sda3me sde3s 1se 3se_ se3a 4s1e2ben 2sec s1echo sech2s 4s1echt se2ck 5secl 4sede 5see se2e1i4 se1er 3sefa 3seg se2gal se2gl seg4r 3s2eh se2h1a4 seh3ag se3he se4h3erk se4hin seh1l seh3re seh1s se2h\xc3\xbc 2s3ei_ 3sei3b 4s3eig s1ein 7s4ein_ 4seinb sei5n2e 2seing 2s3einh 2s3eink 2seinl 2s3einn s4eins_ 4seinst 4seint 2seinw 4seis 5s2eit 5sek 3s2el_ se2l1a6 sel3ag se3lam se2l1ec 4selem sel3erk se4l3erl sel3ers s1elix 3seln se4l1\xc3\xb6 3s2els sel3sz sel3tr s4e3ma 4s1emp s2en_ 3s2ena se3nac se4nag 4s1endl se4n1ec se4ners 5s4eni 3senk 3s4ens s2ent_ sent4a 4s1entf 2s3entg s2enti 4s1ents 4s3entw 4s3entz se2n1u seo2 3seq 5s2er_ ser3a2d se2r3al se3ref 4s3ereig se4r3eim se4r3enk ser2er 4s3erfo 4s3erf\xc3\xbc ser5g s2ergr s1erh 4serh\xc3\xb6 3seri s1erm\xc3\xa4 s1ern\xc3\xa4 4s3ernt se1rol se1rot s4ers_ 2s1ersa ser5sk seru4 se4r1uf se3rum 5s2erv 4s3erwei se1stu se3su 3set 4s3e4tap se2tat 4s3e2th se1u4n 2sex 5sex_ 4sexa se2xe 4sexp 4s3f4 sfi3le 4s3g4 sge3s4a 2s1h 3sha_ sha2k 4shan 1shas s3h\xc3\xa4 sh2i 3shi_ 3shid 1shi4r sh1n 4shof 3s4hop sho4r shor4n1 shorn3e 3show s3h\xc3\xb6 sh4r s3hy 1si 5siak si3am_ si3b4 3si1c s2ide_ si2deo s2ido 3s2ie si3ene si3err sie2s 3si1f6 3s2ig si3g6n si2g3r sig4s si2k1ab si4k3erl si2ki siko3b si4kr sik3t4 si2ku 3si3lo si3n4a 4s1ind 6s1inf sin2g1a sin3gh sin3g6l sin2gr sing3sa 2s1inh 2sin1i1 4s1inq 4s1ins 2s1int 4s1inv 3sio si3os 3s2is si2sa si4s1e si2so sis1p sis3s 7s2it si2tau si3te si2t3r si3tu six3 1s\xc3\xad 4s5j 2s1k4 4sk_ s2kala s3kam 4s3kas ska4te_ ska4tes 4skb 4sk2e 4ski 5s4ki_ 5skiz s3klas s3kn skna3 4skom 4skor 4s5k\xc3\xb6 s5kra 4sks 4sk5t s7kun 2s1l4 3s4lal 4slan s3l\xc3\xa4 sl5b s3le s3li 3s4lip s3lo_ slo3be s3loe s5l2u s3ly 2s1m2 s3me s3mi s3mu s3m\xc3\xbc 2s3n2 4sna sna1b4 sni1er 4s5not 4sn\xc3\xb6 1so 3so_ 4s1o2b so1c 3soft 3sog so3gl so2h s1ohe 4s5ohng 2s1ohr so3la so4l3ei so3li 4s3oly 3s2on son3au son5ende so2ny so3o 3sor_ so1ral s1orc 4s3ord so2rei s1orga 2s1o2rie so2r1o 3sors so4ru 3sos 5s4os_ s1ost 5sota so3tr so3unds so3unt s1o2ve s1ox s4oz 1s\xc3\xb6 s\xc3\xb62f 2s1\xc3\xb6k 2s\xc3\xb6l s1\xc3\xb6s 1sp2 4sp_ 4spaa 4spak s2pan spani7er_ 4spap 2spara spar5sc 3spa\xc3\x9f 2spat 4s3pau s2paz 3spee 3s4pei 4spel 2s1peri 3s4perr 2spers 2spet 3s6pez 4s3pf 2sph 3s2ph\xc3\xa4 s3phe 3s2pi s4pi4e 5spiel spier4 spi2k 4s5pil 4spip 4s5pis 2spl 4spla 4spl\xc3\xa4 3s2pli 2spo 4s3pod 3s2poi 4s5pok 4spol 4s3pos 4spr_ 3s4prac 2sprax 4spr\xc3\xa4m 4spr\xc3\xa4s 5s4prec 2spred 2sprob 2sprop 2sprot 3spru 5sprun 2spr\xc3\xbcf 3spr\xc3\xbcn 4s3ps s4p3t s2pu 4spun 3s4pur 4sput 4spy 2s1q 6s3r4 srat6s sret3 sr\xc3\xbc2d 4s1s ssa3bo s4s3ac ss1aj s4s3ala s4s3ang ss1ano s4sanz ss1app s3sas2 ss3att ss1au s3s2\xc3\xa4 s3se s4s1ec s4s1ega sse3ha s4sein sse3inf sse3int ss1eis s5sen_ ss2er sser5att ss3erh\xc3\xb6 s4s3er\xc3\xb6 s4s3erse s5s4es sse3ta s3si s5sie s4sint ss3la ss1off s2s1ori s3spe s5s2pek s3s2po ss5re ss5s4 s3sta s5stad sst6e s3stel ss2ti s3sto s3stu ss2tur s3st\xc3\xbc ss1ums 4st_ 1sta 2sta_ 3staa sta2bl stab6s 3s2tad 3staff 6stag 3stah 2stak s5tal_ 2stale st3alp 2s3tan_ st3ana 5s4tand 2stani 2stans 2stanw s2tar 3s4tar_ 3s4tars st3a2s sta4si 3stat 4stat_ s2tati 2st1auf 2staum 2staus 3st\xc3\xa4 4st\xc3\xa4g 4stb 2stc st3ch 2std 4ste_ 3steck ste5cke 1s2teg ste2g5r 3steh 1s2te2i 3steig 4steil 4steing 1s2tel 2stel_ 2s3tele 2stels 2stem 4stem_ 4sten s4t3ends s4t3engl s5tens s4t3entf 2ster 6ster_ s3tera st6erb s3ters 4stes stes6se_ ste4st 2stet 4stet_ 3steti 3s4tett 3steu 5steue st3ev 4s3tex 2stf 2stg 4sth st3ha st1hi st1ho s4t1hu 2stia 2stib 2stie_ 3s2tiel 2stien 3sties 3stie\xc3\x9f 3s2tif 4stig 2stik 3s2til 4stilg 3s4tim st1ins st1int 2stio 2stip 3s2tir st1iro 2stis 2stiv 2stj 2stk 4stl st3le 4stm 2stn 1sto 4sto_ 4stod sto3de s2t3om 4ston 2stopo 2stor_ 2store 2storg 2stori sto1s2t 3sto\xc3\x9f 4stou 4stow 3st\xc3\xb6 4st\xc3\xb6n 4s3t\xc3\xb6t 2stp 1str 2strad 5straf 3s2trah 6strai 4stral 4strans 3strap 3s2tras 3stra\xc3\x9f 4str\xc3\xa4g 4str\xc3\xa4ne 3streb 4stref 3streif st3renn s2tric 4s2trig 3s2tri2k 2s3tris st3roll 3stro2m 2strop 3stru 4strua 4strun 4strup 4sts4 st5sa st3se st3sl st3so st3st st3su st3sz 2st3t 5stub 2stuc 3stud 3stuf 3stuh stum4sc stu4n 4stun_ 3stund s2t1uni 4stunt stu5re st1url stur4s 4st1urt 2stus 1st2\xc3\xbc 4st\xc3\xbcb 3st\xc3\xbcc 4st\xc3\xbcch 2st\xc3\xbcr_ s2t\xc3\xbct 4stv 4stw 5styl 2st3z2 1su 3su_ su1an 3su2b3 4su3bi 5su1c 2s1u2f su3fi 2suh 3sui su3it_ su3la sul2i su2mau 3sume su2m1el 3summ s3umsa s3umst su4n 3sun_ sun6derh s1unf 2s1uni 2s3unt 3s2up su2ra 2s1url s1urs s1urt 3su2s1 su3sa su3sh su3si 3suv 1s\xc3\xbc 4s3\xc3\xbc2b 3s\xc3\xbcc 3s\xc3\xbc2d1 3s\xc3\xbcn 2s3v 2s1w s3we sweh2 4s3wie 4s3wil s3wir s3wo s2y 3sy_ sy2l syl1a sy4n3 1sy2s5 2s1z s3za s3zei 5s4zene s3zent 4s3zet s2zis s3z\xc3\xb6 4s3zu s3z\xc3\xbc 2\xc3\x9f_ 2\xc3\x9f3a2 2\xc3\x9f1b 4\xc3\x9f1c 2\xc3\x9f1d 1\xc3\x9fe 2\xc3\x9f1ec 2\xc3\x9f1e2g 2\xc3\x9f1ei \xc3\x9fe2la \xc3\x9fe2n3a \xc3\x9fen3st \xc3\x9fen3sz \xc3\x9fe2nu \xc3\x9fe3rin 2\xc3\x9f1erk 2\xc3\x9f1erse 2\xc3\x9f1f 2\xc3\x9f3g2 \xc3\x9fge2bl 2\xc3\x9f1h 1\xc3\x9fi \xc3\x9fig4s 2\xc3\x9f1in \xc3\x9f1j 2\xc3\x9f1k4 2\xc3\x9f1l 2\xc3\x9f1m 2\xc3\x9f1n \xc3\x9f1o2 2\xc3\x9f3p2 2\xc3\x9f1r2 2\xc3\x9f3s2 2\xc3\x9f1t 2\xc3\x9f1um 2\xc3\x9f1\xc3\xbc 2\xc3\x9f1v 2\xc3\x9f1w \xc3\x9fwa3 2\xc3\x9f1z 6t_ 3ta_ 2taa 3taan tab4 2tab_ ta2b5an 3tabel 4taben ta4bend 4tabf 4tabg 4tabk ta1bl 2tabn 4tabs t1abst 4t1abt 4tabz ta1c tach3te 3tacu 2t3ada 2t3adr 1taf_ taf2e 3tafel 4taff t1af4r 3tag 5tag_ ta2ga ta4g5ei 4t3agent ta3gl t3ago ta2gr tag4s tag5sc tah4 3tai ta1i2k tai2l ta1ins tai4r 4t1a2ka tak4ta 3taktb 3t2aktu 2takz 3tal_ tal3d 1t6ale tal2en ta4l3ens 5talis tal2l\xc3\xb6 1talo ta2lop ta2lu 2ta2m 3tam_ ta3ma 3tame 3tamg t3amin_ ta3mo t3ampl t3amt 1t2an_ t1a2na t1anb 2t2and tan3da tand4st ta3ne 4t1anf 3tani t2ank tan4k5l tan3kr 4t3anl 2t3anm 2t1anna t4anr t1ans 1tans_ 4t3ansi 2t3ansp t4ant_ 2tantr ta2nu 2tanw\xc3\xa4 t4anz_ 2tanza t5anzu ta3o ta2pes 2tapf t4ar_ 2t1arb 3tard ta6rens 3tari 2tark t1arm t1arti ta2ru 5tary 2t1arz 3tas t4as_ ta3sa 1ta3sc 2ta3se 1t4ast ta3sta ta4ste 1tat_ ta4t1ei ta4tem ta4t1er ta2th tat3he t3atl ta2tom 2tatt tat4t3r t2aufe 2taufw 3taug 3taume 1taus t1ausb tau6schw t1ausd 3t2ause t1ausg t1ausk 2t1auss 2t1ausw 1tav ta3va 3tax 1taz t\xc3\xa41c 1t\xc3\xa4g 2t\xc3\xa4gy 2t\xc3\xa4h 4t1\xc3\xa4lt 2t\xc3\xa4m t1\xc3\xa4mt 3t\xc3\xa4nz 3t2\xc3\xa4p t2\xc3\xa4r_ t\xc3\xa42s4 4t\xc3\xa4tt t1\xc3\xa4ug 1t\xc3\xa4u3s 4t\xc3\xa4x 1t\xc3\xa0 4t3b4 tbe3r2e tblock7en 4t1c t3cha t3che tch2i tch3l t2chu tch1w t2ck t3cr 2t3d4 tdun2 1te 3te_ te4a4 2teak te5al 3team te5an 2t1e2ben t2ech 3techn 2teck te2cka teck4e te2cki te2di 3tee te1ele te1em te2en 4tefe 4teff te2fl teg4 teg3re 4teh 5tei_ teik4 3teil 4teilhe 2tein t1eing 4t1einn 4teinr 4teinz t1eisb teit2 t2ek tek5te 3tel_ 3te2la tel1ab tel1ac te3lan tel1au 3telb tel1e2b 3telei tel1en 3telf 4t1elf_ 3telg tel1in te2lit 3telk tel4l\xc3\xa4n tel3l2e 4tellu 3teln te4l3ost te2l1\xc3\xb6 3telp 3tels 3telt tel3ta te3lu 3tem 5tem_ te2man te2m1ei te2mi te3mis 4temm te2m1o2r 5temper 4tempf tem1st te4m3u 3ten 7t6en_ te2n3a2 te3nac te4nag te4nas t2enb 6t5endf 4t1endl 6t5endp ten3dr te2n1e2b te4n1ec ten3eid 4tenerg ten4erw t1eng_ ten3im ten3in tenk4 t2enl t2eno t2ens tens2e ten3si tens3th 4tentd 4t1entg t1entn t1ents 4t3entw te2nu ten4zer ten3zw te2o te3ob 2teph 5t6er_ te1ral ter3am te3ran_ te2r3as t2erb 6t5erbs 6t5erbt ter3d te2r1e2b te2rel ter3end 4terf\xc3\xbcl ter5g t4ergru te5ria 3t2erka 4t3erkl\xc3\xa4 t2erlu 3term ter4mer ter4n3ar t3erneu t1er\xc3\xb6 ter4re_ t6ers_ t6erscha ter4ser ter4sk 5t4erspr t4erst_ 5t4erstu 3tert2 teru4 te4r1uf ter3z4a 2t1erzb 3t2es tesa2 tes3ac te5sc te4sel te2spr 5te2st tes3tan tes3t\xc3\xa4t test3ei tes6terg 3tet te2tat 4teth 4teti te4tik 6tetl 2teu teu3ere 3teuf 3teum te1un 3teur_ t5euro te2vi te2x te3xa 4t1exe 4texp 3t2ext tex2tr 2t1exz 1t\xc3\xa9 2t5f tfi4l 2t1g4 t3gl 4th_ 2t1h4a 5tha_ 5t2hag t2hak 3thal_ thalt2 t3hap t2har t3hau 4t1h\xc3\xa4 2thc t2he_ 5thea 4theb t2hec 4t1hei t2hein t1hel 3them t2hema 5t2heme 1then 3theni 3theo t1herd t1herr t1herz 1these 3thia 2t1hil t1him t1hin 4th3l 4th3m 2th3n 4t1hoc 4t3hot thou4 t3hov 4t3h\xc3\xb6 3thr2 5thrine 4ths 3thu 4t1hub 4thun 4t1h\xc3\xbc 4thv 1ti 3ti4a ti5a2m ti5an ti6are ti5as tib4 3tibe 3tibl 2tic ti1ce ti6chent ti2d1en t2ie 3tie_ tie3br 3tief_ tieg4 ti1el ti2el_ 3ti3e2n1 ti2er 3tiera 4tie\xc3\x9f ti3et ti1eu ti3fa ti3fe ti1fr 3tig 3tik ti2kam ti3k2an tiko2 ti2kr ti2lei 3tilg ti2lin ti4l\xc3\xb6 tilt4 2tim 3tim_ tim2ma t1imp 5tin_ ti1na t1inb 4t1ind ti5n4e t1inf tin2g1a tin2g3l tings2 ting3st t1init t2inn 3t2ins_ 4tint 4t1inv 5tio ti3or 3tip_ ti3pl 3tipp 3tips ti4que_ 3ti3ra 5t2is tisch3w t2it tit2a 3tite ti2ter tit2h 2ti3tu 5tiv ti2van ti2vel ti2v1o ti4v1r ti2za 2t1j 2t3k4 tk\xc3\xbc1b 4t1l2 t3la 6t5li tlings3 t3lo tl\xc3\xb63s 2t1m2 t5me tmen2s tmen6t tmin4s tmo4de_ tmo4des tm\xc3\xbcll4s3 2t5n4 tna5me tnes4s 3to_ toa4 to5ar to5at 1tob to3be 2tobj tob4l to1c 3tocht to6ckent 3tod tode4 to2d1er todes1 t1o2fe 1tok to3la 3tole tome2 to4men to5men_ 3ton tons4t to3ny to2pat to3phe to2pl 1topo 2topp 1tor 3tor_ to1ra to4r\xc3\xa4n t1ord 3tore to3ren t1org 3torh tor3int to2r\xc3\xb6 3tors to4ru 2tory to5sc to4sk to3s4p 2toss 1to3st to7sto to1stu 2to\xc3\x9f to1\xc3\x9fu 3tote to2tho 1totr 5t4ou to3un 3tow 3t\xc3\xb6ch 2t1\xc3\xb6f 3t\xc3\xb6n t2\xc3\xb6r t\xc3\xb6r3ste t1\xc3\xb6st 1t\xc3\xb6t 4t3p2 tpf4 tport4 2t1q t2r4 2tr_ 5tra_ tra3bl t4rac 3trach tra3cha 3trag 5t4rai t4rak 1tral 3t4ran_ 2trand 3trank t3rann 1trans t3rase 2tra\xc3\x9f 3tr\xc3\xa4c t3r\xc3\xa4d 3tr\xc3\xa4g 1tr\xc3\xa4ne 2tr\xc3\xa4s 2tr\xc3\xa4\xc3\x9f t3r\xc3\xa4ts t4r\xc3\xa4ts_ 4t5re_ 2treb 2trec t3rech t4reck 2t3red t4ree 3t4ref 4trefe 2treg t4rei_ 3t4reib 2treic 2treif 2t3reih t3rein 2t3reis t3reiz 2t3rek 2trel t4rem t4ren_ 3trend_ t3rent t4rep 2trepe 2trepo t4rer 3t4res_ t4ret tre2t3r t4reu 3treuh t3rev 2trez 5t4r\xc3\xa9 2t3rh 1tri 3tri4er 3trigg t3rind 2tring 3trio t4rip trizi1 1tro_ tro3b 3t4rog 1troi tro2ke 2troml 1tron 2t3roo t4rop 3tropf 1tros 1troy 3tr\xc3\xb6g 1tr\xc3\xb6s 1trua 2truk trum4 trums1 t3rund 3trunk 3t4rup tr\xc3\xbc1be tr\xc3\xbc1bu 2t3r\xc3\xbcc try1 2ts 4ts_ t2s1a t4sab ts3ad t3saf t4s3al t4s3amt t4sar ts3as t4sau t5sau_ ts1\xc3\xa4n t4s3char t5sche t6schef tsch4li t6schro ts1e2b t4s3e4h t3seil t4seind ts1em t3sen_ ts1eng ts1ent t2s1er ts3eta ts1ex tsi2d ts1ini t2s1ir t3skala ts3ke t4s3ko ts5kr t2s1o2 t3sol t3som t3soz t2s\xc3\xb6 t3span t3spas t2sp\xc3\xa4 t3s2pon t3s2por t2spu ts5s4 t1s2t ts3taf ts3tak t2stea t5steu ts3th t6stit ts4top ts3tor ts3trad ts3trak t4s3trau t4str\xc3\xa4 t3strec t2s3tri ts3tr\xc3\xbc t3s4tu t2s3t\xc3\xbcr t2s1u 1tsub t4sun t3sy 4t1t t2t1a2b tt3ad t3tal t3tan t4tanb tt1art tt1auf tt1ebe tt1eif tt1ein tt1eis t3te2l tte4la tte4s t2teti t3teu t2th tt3ha tt2h\xc3\xa4u tt1ho t3ti tto1p t3tra tt3ras t3tr\xc3\xa4 t3tro tt3ru tt3r\xc3\xbc tt2se tt3so tt2s1pa tt2spe tt2spr tt2s3ti ttt4 t3tu tt3z4 1tu tu1an 2tub 3tuch tu2chi 2tud tue3re tu3et 2tuf t1u2fer 2tuh 2tu2k t1ukr 3t2um_ 5tume 2tumf 2tumg 2tumk tum2sp 2t1umt 5tun_ 2t1una 2tund 3tu3ne 2t1unf 3tung tun2gl 2tunif 2t1u4nio 2tunt t1up_ tu2ra tu3rat tur3b tur1c tu4re_ tu2rei tu2r1er tu4res ture4t 3turn tu2ro tu3rol tur3s tu2ru t2us tu2sa tu4schl tu2so 2t\xc3\xbcb t3\xc3\xbcbe 3t\xc3\xbcch t\xc3\xbcck2s 1t\xc3\xbcf 1t\xc3\xbcm 1t\xc3\xbcr_ t\xc3\xbcr1c 1t\xc3\xbcre t\xc3\xbcr3s 2t1v t5ve 2t1w twa4r twi4e 1ty 2tyl ty4le ty2pa ty1st 2t1z t2za4 tz3ag tz3al tz3an tz1ar t2z1\xc3\xa4 t3ze_ t2z1e2c t2z1eie tze2n tz4ene tz3ents tz1erg t3ze4s tz1imp tz1ind t2zo tz1of t3zon tz1or tz2tin t2z1w tz3wa 2u_ u1a2b u1a2c ua3d uad4r u3al_ u5alet u3alf u3alr u3als ua2lu u3am u1ans u3ar_ uara2 uar3ab u3ars ua3sa ua2t3h u3au u1ay u1\xc3\xa4m u1\xc3\xa4u 2u1b u3be u4bent ub4i ub5los u3bl\xc3\xb6 ub3lu ub3ra ub3r\xc3\xa4 ub5rit ub2san ub2s1o ub2s1p ub3um u2b3\xc3\xbcb 4uc u1ce2 u2ch1a uch3an uch1\xc3\xa4 u1che u2ch1e2c uch1ei u3ches u1chi uch1in uch3l uch5m uch3n u2ch3r uch2so uch2sp uch2tr u1chu uch3\xc3\xbc uch1w u2ckem u4ckent uck2er u4ck3erl u2cki u1cr u1d u5d2a ude2a udens2 ude3r2e udi3en u2don ud3ra u1e ue4ck u2ed ue2en u4ela ue2le ueli4 ue2mi uen2gl u3eni uen3k ue2nu uen2zu u2ep ue2r5a u3ereh ue2rei uer5eife u3erer ue4rerg u3erex uer3g2 u5erinf u5erint uerk4 uer4ne uern3s4t uer3o uert2 u3erum u3erunt u3erur ue2ta ue4tek uet4s uf1ab u3fah uf1ak uf1ar uf1au u2f1\xc3\xa4s u2f1\xc3\xa42\xc3\x9f u2f1ei u2f1em u3fen_ u2fent u2f1erh 2uff uf3fe uff6l uf5l uf7l\xc3\xa4d ufo2r uf1ori u1f\xc3\xb6 uf3r uf5s\xc3\xa4 uft1eb uft3s2 2u1g u4gabte ug1af ug1ak u2g1ap ug1au ug3d u6g7e2i uge3ne u4g5ent ug5erf ug5erl uge7sc ugge4st u2g1l ug3la ug3l\xc3\xa4 ug5lo u3gl\xc3\xb6 u4g3lu u4g3n ugo3 ug1or u2g\xc3\xb6 u2g3ro ug3rum ug5sc ug3s2e ug3si ug3s4pa ugs2t ug3str ug3st\xc3\xbc u1h uhe1ra uhe1s uhe3st uh1la uh1l\xc3\xa4 uh3ma uh3mi uhr1a uh1ri uh4rin uh2ru uh1w 4ui u1ie ui1em u1ig u2ige u3in_ u3isch_ u3ischs uisi4n ui4s3t u1j uk\xc3\xa42 u3k\xc3\xa4u u1ke u1ki u1kl u3kla ukle1i u3klo u3kl\xc3\xb6 uk4n ukni4 u1kr uk2ta uk2t3in u1ku uku2s u1l ul1ab ul3am ul2ar ula2s ul1\xc3\xa4m ulb4 u2l1el ule4n ul1erf ule2t ul3eta ulg4 uli2k uli5ne ul1ins ul3ka ul4les ull1s ulm3ein ulo2i ul3or ul\xc3\xb63s ul2p1h ul2sa ul2sei ul3sp ult2a ul4tar ul3th ul2to ul2tri ul3tro u2l\xc3\xbc ul3zw um3all uman4s um1anz u2m1ar u2m1aus 1umd 2ume um2en umer2a um1erg um1erw 1umf 3umfe 1umg um1ins 1umk 1uml 2umm u3mon umpf6li um2pl ump3le 1umr 1umsat um3sc um4ser um2sim um2spe um2su umt2 um3th u2m3ur 1umz u2n 2un_ 2u5na_ 1unab un1ac u5nam u4n3an un1ap 2u5nas un3at unau2 un1\xc3\xa4 4unc un4dei und3erf und5erha un2d3r 4unds_ und3se und3sp un2d1um 1undzw un1e2 un3eid un3ein une3re unes4 un3et un1gl 1ungl\xc3\xbc un2g1r ung3ra ung4s3 u3ni 1u4nif 1u4niv un2k1a unks2 unk3sp unk2tr 3unku un2n3ad un1o un2os 1unr uns2 un3se 1unsi un3sk un3sp un2stu 1unt un3ta unte2 un3th unt4r 2untu un1u unvol2 unvoll3 1unw u1o2b u3of u3or_ u1or3c u1os_ u1pa up5ab u1pe2 uper1 upf2e up2f1i u3pfl u1pi up2pr u1pr upra3 up1sl up4t3a2 up2tel up2t1o up4tr up2tu u1q 2ur_ u1ra u3ra_ u3raba u3ral u2r3am ur1ana ur2anb u3rand ur1ang ur1ans u3rant ur5atm ur1au ur1\xc3\xa4n urb2 ur3ba ur2ble urch1 ur3di 2ure ur1eff u2rele ure2n u5ren_ ur3erei ur1erh ur1erw ure2t ur3eta ur2gri urgros4 urgs2 u1r2i uri2c u2r3im ur3ind ur1ini ur3ins ur3int u2r3inv urk2s 1urlau ur3no 2u1ro u1r\xc3\xb6 ur5p ur2san urs1au ur4sei ur4s1er ur2st ur3sta ur5st4r ur3s2z urt2 ur5t4e ur3th u1ru ur\xc3\xbc2 u1ry ur2za urz3ent ur2zi ur2zo ur2z1w u4saf us1ang us4ann u2s1ap us1au u6schent usch5wer usch3wi us1ec u2s1ef u2s1ei u3seid use1ra u2serp usi3er_ usi5ers_ u3soh u3sol us1op us3ou u3sov u3sow u3s2pa us3part us3pas us1pe u3s2pek us3pic us4sat us4sei usse2n uss5erfa uss3erk uss5ersu us4sez us2sof uss3t\xc3\xa4t ust1a2b u3stal u3stein u3stel ust2i us1tr us4tris u3stu u4stun u4stur us2ur u2s\xc3\xbc u1sy u1\xc3\x9f 4u1t u3taf u3tal ut3alk ut5a4m u2t1ap ut1ar ut1\xc3\xa4r u3t\xc3\xa4t u3te u5te_ u4t1e4g ute2l ut2em ute2n1 uten3e u4tent ut2er ute5r4er u5tet u2thei u2t1hi u2t1ho u4t1hu uto4ber ut1opf u2tops u3tos ut3r\xc3\xbc ut5sa ut2s1\xc3\xa4 ut4schl ut4schm ut3so ut3sp ut5t2l utt4le utu3ru utz1a utz3eng ut2z1in u1u4 uufe2 u1\xc3\xbc2 u1v4 u2ve_ uve3r\xc3\xa4 u1w uwa3s u1x2 ux5t u1ya u1z u3ze uzi5n uz1we uzz4 1\xc3\xbcb 2\xc3\xbcbd \xc3\xbcbe2 \xc3\xbcbe3c \xc3\xbcbe4r1 \xc3\xbc2b5l 3\xc3\xbcb5r \xc3\xbcb2st 3\xc3\xbcbu 2\xc3\xbcc \xc3\xbc1che \xc3\xbcch3l \xc3\xbcch4s3c \xc3\xbcch5t4e \xc3\xbcck1e2r \xc3\xbc4ck5eri \xc3\xbc4ckerk \xc3\xbc4ckers \xc3\xbc4d3a4 \xc3\xbc3den_ \xc3\xbc3d2ens \xc3\xbcd1o4 \xc3\xbcd1\xc3\xb6 \xc3\xbc4d5r \xc3\xbcd3s2 \xc3\xbcdsa1 \xc3\xbcd1t4 \xc3\xbc2f3a \xc3\xbc2f1ei \xc3\xbc2f1erg \xc3\xbcf2fl \xc3\xbc2f3i \xc3\xbcf5l \xc3\xbcf2t1o \xc3\xbc1g \xc3\xbc2g3l \xc3\xbcg3s \xc3\xbcg4st \xc3\xbch1a \xc3\xbc1he \xc3\xbc2h1ei \xc3\xbc2h1eng \xc3\xbc2h1erk \xc3\xbc2h1erz \xc3\xbch1i \xc3\xbchla2 \xc3\xbchl1ac \xc3\xbch5l2e \xc3\xbch3li \xc3\xbch3mi \xc3\xbch3mo \xc3\xbch5ne \xc3\xbch3r2e \xc3\xbchr3ei_ \xc3\xbch5ro \xc3\xbchr5ta \xc3\xbch1s \xc3\xbch3s2p \xc3\xbc1hu \xc3\xbch1w \xc3\xbc1k 2\xc3\xbcl \xc3\xbcl1a \xc3\xbcl2c \xc3\xbc5l2e \xc3\xbcl2la \xc3\xbcll1au \xc3\xbcl2l1ei \xc3\xbcl2lo \xc3\xbcl4l\xc3\xb6 \xc3\xbc1lu \xc3\xbc4ment 2\xc3\xbcn \xc3\xbc2n3a \xc3\xbcn2c \xc3\xbcn2da \xc3\xbcn2dr \xc3\xbcnd1s \xc3\xbcn2f1 \xc3\xbcn3fl \xc3\xbcn4fli \xc3\xbcnf3r \xc3\xbcn2g3l \xc3\xbcnn4s \xc3\xbcnn5sc \xc3\xbcn4s \xc3\xbcn5sc \xc3\xbcn5se \xc3\xbcn5sp \xc3\xbcn5sta \xc3\xbcn5str \xc3\xbcn3th \xc3\xbc1pe \xc3\xbc1pi \xc3\xbcr1a \xc3\xbc2r1ei \xc3\xbcr2fl \xc3\xbcr4g5eng \xc3\xbc1ri \xc3\xbc1r2o \xc3\xbc3rofe \xc3\xbcro3r \xc3\xbcrr2 \xc3\xbcr2s \xc3\xbcrs3tin \xc3\xbcrt2h \xc3\xbcr3the \xc3\xbc1ru \xc3\xbc2schl \xc3\xbcse3h \xc3\xbcse3l \xc3\xbcs4s3c \xc3\xbcs2st \xc3\xbc2st \xc3\xbcste3ne \xc3\xbc1\xc3\x9f \xc3\xbc1ta \xc3\xbc2t3al \xc3\xbcte3d \xc3\xbct3r \xc3\xbct2s1 \xc3\xbct2tr \xc3\xbc1v \xc3\xbc1z 2v_ 2v1ab va5g val2s 2vang 2v1arb va3st v4at va2t3a6 va4t1ei va2t3h va4t1in vati8ons_ va2t3r vat3s vat3t va2t1u 2v1au 2v1b 2v1d ve2 3vea ve3b ve3d ve3g ve3h veit4 veits3 ve3la ve3le ve3li veli5ne ve3lo ve3ma ve3mu ven2c ve3ne ve3ni ven3k ve3n\xc3\xb6 ve3nu ve3o ver1 ver3a ve3rad ve5rand ve5ras ver3b4 ver3d2 vere2 ve3ren verf6 verg4 ve3ri ve5rit ver3sta 2vese ves1p ves3ti ve3ta vete1 ve3tr 2ve\xc3\xbc ve3v ve5x2 ve7xe 2v1f4 2v1g 2v1h vi1an vi4a3t vi2c vid3s2t vi2e vie2h3a vi3en vie2w1 vi3g2 vi3k vi2leh vin2s 2v1int 3vio vise4 vi3s2o vis2u 2v1k 2v1l2 2v1m 2v1n 2v1ob vo2gu vol2a voll1a vo2n 2v1op vo2r1 vor3a vor3d vor3e vor3g6 vo3ri vo5rig vor3o vo4ru v\xc3\xb62c 2v1p v1ra 3vri 2vs vs2e 2v1t 2v1v 2v1w 2v1z 2w_ w4a wab2bl wa5che wa3d wa5ge wa4g5n wa2gr wa3gra 1wah wahl5ent wai2b 1wald wal2t1o wa5na wan4s wa2p wa2r 1war2e ware1i war3ste wart4e wa3ru 1wa2s wa3sa wa3se wa3sh wa3si was5s4 1w\xc3\xa4h 1w\xc3\xa4s w\xc3\xa4s4c w\xc3\xa45sche 2w1b 2w1c wco3 2w1d we3be web3l we3cke we5cke_ we5cken_ we5ckes we3d we2e2 we2fl 3weg we2g3l we4gn we4g3r wegs2 weg3s4p 1weh we3he wei4bl 2weie wei3k4 wei4tr weit3s wel6schl wel6schr wel3se wel2t1 wel4ta wel6t5end wel4tr we3ni wen4k3ri we2r5a wer2bl 1werbu 5werdens 1werdu wer2fl 2werg 1werk_ 1werke wer2kl wer2ku wer2s wer4t3a wer6t5erm 1werts 1wese wes1p we4st west3a wes2t1o2 west3r wet4s wet4ta wett3s 2w1g 2wh w5ho wi3cka wi2e wie3l wien2 wie5ne wie2st wi3k wim2ma wim4m3u win4d3e4c win2e wi2r 1wirt wi5s2e 1wiss wi3th 3wj 2wk 2w1l 2w1m 2wn wn3sh w4o 1wo1c wo2cha woche4 1woh woh2l 1wolf wol4ler wor3a wo2r3i wor2tr wo4r3u wot2 1w\xc3\xb6c w\xc3\xb6rt2h w\xc3\xb6r3the 2w1p w1ro 2ws w3s2k w1s2t 2w1t w3ti2 w2u 1wuc wul2 wul3se wun2s wur4s 1wurst wus2 wus3te wu4t1 1w\xc3\xbch w\xc3\xbcl2 w\xc3\xbcn5 2w1w 6x_ x3a 1xa_ 1x4ad 1x4a3g xa4m xa3me xa5mer 2xan 3x4as x4at 2x1b x1c 4x1d 1xe x1e4g xe2l xe3lei x1em 7x2em_ 3x2en xe3no x2er_ 5xere xers2 3xes 2x3eu 2x1f 2x1g xge1 2x3h 1xi xib4 xi1c xich2 2xid xide2 xi2d1em x1i2do xie3l xi3g4 xi2l xi3la xi3le xi3li xil1u x2i2s1 xi3sc xi4se xiso2 xis3s xis2t\xc3\xa4 x1i2tu x1j 2x1k4 2x3l 2x1m 2x1n x1or 4x3p x1q 2x1r 2x3s2 4x1t x2t3a x2t1\xc3\xa4 x3t\xc3\xa4t xtblo4 x2t1ed x2t1ei x2t1erf xt3ran xts4 xt5sa x2t1u x3tur 1xu xu3a x1u4n xu2s1 2x1v 2x1w 2xy x1z 2y1ab 1yac y3al_ y3a2m y1b yb6r y1c y2chi y3chis ych3n y1d y3dr y1e yen4n y2es_ y1f y1g ygie3 y3gl y1ha yhr2 y1hu y3i4 y1j y1k4 y1l yl5a2m y3l4ant_ y3l4ante y5len y5ler yli4n yloni1 y2l1u yma4t ym3p4 ympi3e y2n3o yn3t y1of yom4 yon4i y3ou y1p ypa2 yp5an ype2 y5ph y2p1in ypo3 y4ps yp3t y1r y3r2e y3ri yri1e y5s4c y1s\xc3\xa9 y3s2p yst4 y1s2ty y3s2z y1t yt2h yu2r yure3 y1w y1z2 6z_ 2z3a2b za1c z3a2d za3de 2z3af za3gr 3z2ah 2z3a2k 2z3am 3zambiq z1an za2na 2z3anf z3anl za3re 2z1arz za3st4 2z3at 3zaub z3auf z3aug 3zaun z1aut 2z1\xc3\xa42c z2\xc3\xa4h 2z1\xc3\xa4m z1\xc3\xa4n z1\xc3\xa4rg 4z3b6 zbe2st zb\xc3\xbc1b zb\xc3\xbcbe5 4z3c 2z3d zd\xc3\xa41 ze3a ze1e 2z1eff zeik4 3zeil zei3la zeile4 2z1ein zei3s2 zeist4 zei4ta zei4t3er zei2tr zeit3sp 3zel ze2l3a2 ze2len ze2l1er ze2l1in zel5la ze2lo ze5m2e 5zen_ ze2n1ac zens2e zen2ta 5z4entr zent3sk 2zentw zen4zer zer3a ze2r1e2b z1erfo 2zerg z3ergeb z1erh\xc3\xb6 zer3k 2z1erke 2zerkl 2z1erl\xc3\xb6 zer4n3ei 2zerq 5zerr 2z1ersa 4zerste zer3sz zer2t2a2 zer4t3ag zer4ter zer4tin 2zerz z2es ze2s\xc3\xa4 ze5sc ze2s1i ze3sku ze2sp ze5sta zes1tr ze2tr 2z1ex 2z1f 2z1g 2z1h z2hen zhir5 3zia 3zie zi1erh zi1es_ zig4s 4zimp 3zin4e 4z3inf 4z3inh zin4ser 4zinsuf 2z1int 2z1inv zi2o zi3op zirk4 zirk6s zi3s2z zi1t2h 2z1j 2z1k4 2z1l2 z3la 4z3ly 2z1m 2z3n2 2zob 2zof z1oh 3zol zon6ter zo2r zo3re zor4ne zo5se 2z1\xc3\xb6f z\xc3\xb67li 2z3p2 2z1q 4z3r2 2z1s2 z3sh z3sk z3sp z3ste z3sz 2z1t z2t1au z6tehe zte3o zte3str z2t1h zt3hei z5t2her zt1ins z2t3ro zt3so zu1 zu3a zub4 zu5cke zud4 zu2el zu3f6 zu2g1ar zu3gl zu3gr zu2g1un 2z1uhr zuk4 2z1um_ zu3ma zumen2 2zumf 2zumg 2z1ums zu3n\xc3\xa4 zu3n2e 2zunt zu3n\xc3\xbc 2z1urk 2z1url 2zurs 2z1urt zu3s4 zuz2 2z\xc3\xbcb z\xc3\xbcr1c 2z1v zw2 z2wan zwan2d1 4z3w\xc3\xa4l 2zweg z2weig 2z1wel 2z1wen 2zwer 2z1wes 2zwir z2wit 2z1wo 2zw\xc3\xb6 z1wur z1w\xc3\xbc 3zy zy1ank 6z1z z3z4a z3zi zzi3s2 z3z2l zzoll2";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt b/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt
deleted file mode 100644 (file)
index e9a1bce..0000000
+++ /dev/null
@@ -1 +0,0 @@
-dis/es/tab/lish/men/tar/i/an/ism
diff --git a/inc/3rdparty/libraries/mpdf/patterns/en.php b/inc/3rdparty/libraries/mpdf/patterns/en.php
deleted file mode 100644 (file)
index a02b63f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-*/
-
-$patterns="_ach4 _ad4der _af1t _al3t _am5at _an5c _ang4 _ani5m _ant4 _an3te _anti5s _ar5s _ar4tie _ar4ty _as3c _as1p _as1s _aster5 _atom5 _au1d _av4i _awn4 _ba4g _ba5na _bas4e _ber4 _be5ra _be3sm _be5sto _bri2 _but4ti _cam4pe _can5c _capa5b _car5ol _ca4t _ce4la _ch4 _chill5i _ci2 _cit5r _co3e _co4r _cor5ner _de4moi _de3o _de3ra _de3ri _des4c _dictio5 _do4t _du4c _dumb5 _earth5 _eas3i _eb4 _eer4 _eg2 _el5d _el3em _enam3 _en3g _en3s _eq5ui5t _er4ri _es3 _eu3 _eye5 _fes3 _for5mer _ga2 _ge2 _gen3t4 _ge5og _gi5a _gi4b _go4r _hand5i _han5k _he2 _hero5i _hes3 _het3 _hi3b _hi3er _hon5ey _hon3o _hov5 _id4l _idol3 _im3m _im5pin _in1 _in3ci _ine2 _in2k _in3s _ir5r _is4i _ju3r _la4cy _la4m _lat5er _lath5 _le2 _leg5e _len4 _lep5 _lev1 _li4g _lig5a _li2n _li3o _li4t _mag5a5 _mal5o _man5a _mar5ti _me2 _mer3c _me5ter _mis1 _mist5i _mon3e _mo3ro _mu5ta _muta5b _ni4c _od2 _odd5 _of5te _or5ato _or3c _or1d _or3t _os3 _os4tl _oth3 _out3 _ped5al _pe5te _pe5tit _pi4e _pio5n _pi2t _pre3m _ra4c _ran4t _ratio5na _ree2 _re5mit _res2 _re5stat _ri4g _rit5u _ro4q _ros5t _row5d _ru4d _sci3e _self5 _sell5 _se2n _se5rie _sh2 _si2 _sing4 _st4 _sta5bl _sy2 _ta4 _te4 _ten5an _th2 _ti2 _til4 _tim5o5 _ting4 _tin5k _ton4a _to4p _top5i _tou5s _trib5ut _un1a _un3ce _under5 _un1e _un5k _un5o _un3u _up3 _ure3 _us5a _ven4de _ve5ra _wil5i _ye4 4ab_ a5bal a5ban abe2 ab5erd abi5a ab5it5ab ab5lat ab5o5liz 4abr ab5rog ab3ul a4car ac5ard ac5aro a5ceou ac1er a5chet 4a2ci a3cie ac1in a3cio ac5rob act5if ac3ul ac4um a2d ad4din ad5er_ 2adi a3dia ad3ica adi4er a3dio a3dit a5diu ad4le ad3ow ad5ran ad4su 4adu a3duc ad5um ae4r aeri4e a2f aff4 a4gab aga4n ag5ell age4o 4ageu ag1i 4ag4l ag1n a2go 3agog ag3oni a5guer ag5ul a4gy a3ha a3he ah4l a3ho ai2 a5ia a3ic_ ai5ly a4i4n ain5in ain5o ait5en a1j ak1en al5ab al3ad a4lar 4aldi 2ale al3end a4lenti a5le5o al1i al4ia_ ali4e al5lev 4allic 4alm a5log_ a4ly_ 4alys 5a5lyst 5alyt 3alyz 4ama am5ab am3ag ama5ra am5asc a4matis a4m5ato am5era am3ic am5if am5ily am1in ami4no a2mo a5mon amor5i amp5en a2n an3age 3analy a3nar an3arc anar4i a3nati 4and ande4s an3dis an1dl an4dow a5nee a3nen an5est_ a3neu 2ang ang5ie an1gl a4n1ic a3nies an3i3f an4ime a5nimi a5nine an3io a3nip an3ish an3it a3niu an4kli 5anniz ano4 an5ot anoth5 an2sa an4sco an4sn an2sp ans3po an4st an4sur antal4 an4tie 4anto an2tr an4tw an3ua an3ul a5nur 4ao apar4 ap5at ap5ero a3pher 4aphi a4pilla ap5illar ap3in ap3ita a3pitu a2pl apoc5 ap5ola apor5i apos3t aps5es a3pu aque5 2a2r ar3act a5rade ar5adis ar3al a5ramete aran4g ara3p ar4at a5ratio ar5ativ a5rau ar5av4 araw4 arbal4 ar4chan ar5dine ar4dr ar5eas a3ree ar3ent a5ress ar4fi ar4fl ar1i ar5ial ar3ian a3riet ar4im ar5inat ar3io ar2iz ar2mi ar5o5d a5roni a3roo ar2p ar3q arre4 ar4sa ar2sh 4as_ as4ab as3ant ashi4 a5sia_ a3sib a3sic 5a5si4t ask3i as4l a4soc as5ph as4sh as3ten as1tr asur5a a2ta at3abl at5ac at3alo at5ap ate5c at5ech at3ego at3en_ at3era ater5n a5terna at3est at5ev 4ath ath5em a5then at4ho ath5om 4ati_ a5tia at5i5b at1ic at3if ation5ar at3itu a4tog a2tom at5omiz a4top a4tos a1tr at5rop at4sk at4tag at5te at4th a2tu at5ua at5ue at3ul at3ura a2ty au4b augh3 au3gu au4l2 aun5d au3r au5sib aut5en au1th a2va av3ag a5van ave4no av3era av5ern av5ery av1i avi4er av3ig av5oc a1vor 3away aw3i aw4ly aws4 ax4ic ax4id ay5al aye4 ays4 azi4er azz5i 5ba_ bad5ger ba4ge bal1a ban5dag ban4e ban3i barbi5 bari4a bas4si 1bat ba4z 2b1b b2be b3ber bbi4na 4b1d 4be_ beak4 beat3 4be2d be3da be3de be3di be3gi be5gu 1bel be1li be3lo 4be5m be5nig be5nu 4bes4 be3sp be5str 3bet bet5iz be5tr be3tw be3w be5yo 2bf 4b3h bi2b bi4d 3bie bi5en bi4er 2b3if 1bil bi3liz bina5r4 bin4d bi5net bi3ogr bi5ou bi2t 3bi3tio bi3tr 3bit5ua b5itz b1j bk4 b2l2 blath5 b4le_ blen4 5blesp b3lis b4lo blun4t 4b1m 4b3n bne5g 3bod bod3i bo4e bol3ic bom4bi bon4a bon5at 3boo 5bor_ 4b1ora bor5d 5bore 5bori 5bos4 b5ota both5 bo4to bound3 4bp 4brit broth3 2b5s2 bsor4 2bt bt4l b4to b3tr buf4fer bu4ga bu3li bumi4 bu4n bunt4i bu3re bus5ie buss4e 5bust 4buta 3butio b5uto b1v 4b5w 5by_ bys4 1ca cab3in ca1bl cach4 ca5den 4cag4 2c5ah ca3lat cal4la call5in 4calo can5d can4e can4ic can5is can3iz can4ty cany4 ca5per car5om cast5er cas5tig 4casy ca4th 4cativ cav5al c3c ccha5 cci4a ccompa5 ccon4 ccou3t 2ce_ 4ced_ 4ceden 3cei 5cel_ 3cell 1cen 3cenc 2cen4e 4ceni 3cent 3cep ce5ram 4cesa 3cessi ces5si5b ces5t cet4 c5e4ta cew4 2ch 4ch_ 4ch3ab 5chanic ch5a5nis che2 cheap3 4ched che5lo 3chemi ch5ene ch3er_ ch3ers 4ch1in 5chine_ ch5iness 5chini 5chio 3chit chi2z 3cho2 ch4ti 1ci 3cia ci2a5b cia5r ci5c 4cier 5cific_ 4cii ci4la 3cili 2cim 2cin c4ina 3cinat cin3em c1ing c5ing_ 5cino cion4 4cipe ci3ph 4cipic 4cista 4cisti 2c1it cit3iz 5ciz ck1 ck3i 1c4l4 4clar c5laratio 5clare cle4m 4clic clim4 cly4 c5n 1co co5ag coe2 2cog co4gr coi4 co3inc col5i 5colo col3or com5er con4a c4one con3g con5t co3pa cop3ic co4pl 4corb coro3n cos4e cov1 cove4 cow5a coz5e co5zi c1q cras5t 5crat_ 5cratic cre3at 5cred 4c3reta cre4v cri2 cri5f c4rin cris4 5criti cro4pl crop5o cros4e cru4d 4c3s2 2c1t cta4b ct5ang c5tant c2te c3ter c4ticu ctim3i ctu4r c4tw cud5 c4uf c4ui cu5ity 5culi cul4tis 3cultu cu2ma c3ume cu4mi 3cun cu3pi cu5py cur5a4b cu5ria 1cus cuss4i 3c4ut cu4tie 4c5utiv 4cutr 1cy cze4 1d2a 5da_ 2d3a4b dach4 4daf 2dag da2m2 dan3g dard5 dark5 4dary 3dat 4dativ 4dato 5dav4 dav5e 5day d1b d5c d1d4 2de_ deaf5 deb5it de4bon decan4 de4cil de5com 2d1ed 4dee_ de5if deli4e del5i5q de5lo d4em 5dem_ 3demic dem5ic_ de5mil de4mons demor5 1den de4nar de3no denti5f de3nu de1p de3pa depi4 de2pu d3eq d4erh 5derm dern5iz der5s des2 d2es_ de1sc de2s5o des3ti de3str de4su de1t de2to de1v dev3il 4dey 4d1f d4ga d3ge4t dg1i d2gy d1h2 5di_ 1d4i3a dia5b di4cam d4ice 3dict 3did 5di3en d1if di3ge di4lato d1in 1dina 3dine_ 5dini di5niz 1dio dio5g di4pl dir2 di1re dirt5i dis1 5disi d4is3t d2iti 1di1v d1j d5k2 4d5la 3dle_ 3dled 3dles_ 4dless 2d3lo 4d5lu 2dly d1m 4d1n4 1do 3do_ do5de 5doe 2d5of d4og do4la doli4 do5lor dom5iz do3nat doni4 doo3d dop4p d4or 3dos 4d5out do4v 3dox d1p 1dr drag5on 4drai dre4 drea5r 5dren dri4b dril4 dro4p 4drow 5drupli 4dry 2d1s2 ds4p d4sw d4sy d2th 1du d1u1a du2c d1uca duc5er 4duct_ 4ducts du5el du4g d3ule dum4be du4n 4dup du4pe d1v d1w d2y 5dyn dy4se dys5p e1a4b e3act ead1 ead5ie ea4ge ea5ger ea4l eal5er eal3ou eam3er e5and ear3a ear4c ear5es ear4ic ear4il ear5k ear2t eart3e ea5sp e3ass east3 ea2t eat5en eath3i e5atif e4a3tu ea2v eav3en eav5i eav5o 2e1b e4bel_ e4bels e4ben e4bit e3br e4cad ecan5c ecca5 e1ce ec5essa ec2i e4cib ec5ificat ec5ifie ec5ify ec3im eci4t e5cite e4clam e4clus e2col e4comm e4compe e4conc e2cor ec3ora eco5ro e1cr e4crem ec4tan ec4te e1cu e4cul ec3ula 2e2da 4ed3d e4d1er ede4s 4edi e3dia ed3ib ed3ica ed3im ed1it edi5z 4edo e4dol edon2 e4dri e4dul ed5ulo ee2c eed3i ee2f eel3i ee4ly ee2m ee4na ee4p1 ee2s4 eest4 ee4ty e5ex e1f e4f3ere 1eff e4fic 5efici efil4 e3fine ef5i5nite 3efit efor5es e4fuse_ 4egal eger4 eg5ib eg4ic eg5ing e5git5 eg5n e4go_ e4gos eg1ul e5gur 5egy e1h4 eher4 ei2 e5ic ei5d eig2 ei5gl e3imb e3inf e1ing e5inst eir4d eit3e ei3th e5ity e1j e4jud ej5udi eki4n ek4la e1la e4la_ e4lac elan4d el5ativ e4law elaxa4 e3lea el5ebra 5elec e4led el3ega e5len e4l1er e1les el2f el2i e3libe e4l5ic_ el3ica e3lier el5igib e5lim e4l3ing e3lio e2lis el5ish e3liv3 4ella el4lab ello4 e5loc el5og el3op_ el2sh el4ta e5lud el5ug e4mac e4mag e5man em5ana em5b e1me e2mel e4met em3ica emi4e em5igra em1in2 em5ine em3i3ni e4mis em5ish e5miss em3iz 5emniz emo4g emoni5o em3pi e4mul em5ula emu3n e3my en5amo e4nant ench4er en3dic e5nea e5nee en3em en5ero en5esi en5est en3etr e3new en5ics e5nie e5nil e3nio en3ish en3it e5niu 5eniz 4enn 4eno eno4g e4nos en3ov en4sw ent5age 4enthes en3ua en5uf e3ny_ 4en3z e5of eo2g e4oi4 e3ol eop3ar e1or eo3re eo5rol eos4 e4ot eo4to e5out e5ow e2pa e3pai ep5anc e5pel e3pent ep5etitio ephe4 e4pli e1po e4prec ep5reca e4pred ep3reh e3pro e4prob ep4sh ep5ti5b e4put ep5uta e1q equi3l e4q3ui3s er1a era4b 4erand er3ar 4erati_ 2erb er4bl er3ch er4che 2ere_ e3real ere5co ere3in er5el_ er3emo er5ena er5ence 4erene er3ent ere4q er5ess er3est eret4 er1h er1i e1ria4 5erick e3rien eri4er er3ine e1rio 4erit er4iu eri4v e4riva er3m4 er4nis 4ernit 5erniz er3no 2ero er5ob e5roc ero4r er1ou er1s er3set ert3er 4ertl er3tw 4eru eru4t 5erwau e1s4a e4sage_ e4sages es2c e2sca es5can e3scr es5cu e1s2e e2sec es5ecr es5enc e4sert_ e4serts e4serva 4esh e3sha esh5en e1si e2sic e2sid es5iden es5igna e2s5im es4i4n esis4te esi4u e5skin es4mi e2sol es3olu e2son es5ona e1sp es3per es5pira es4pre 2ess es4si4b estan4 es3tig es5tim 4es2to e3ston 2estr e5stro estruc5 e2sur es5urr es4w eta4b eten4d e3teo ethod3 et1ic e5tide etin4 eti4no e5tir e5titio et5itiv 4etn et5ona e3tra e3tre et3ric et5rif et3rog et5ros et3ua et5ym et5z 4eu e5un e3up eu3ro eus4 eute4 euti5l eu5tr eva2p5 e2vas ev5ast e5vea ev3ell evel3o e5veng even4i ev1er e5verb e1vi ev3id evi4l e4vin evi4v e5voc e5vu e1wa e4wag e5wee e3wh ewil5 ew3ing e3wit 1exp 5eyc 5eye_ eys4 1fa fa3bl fab3r fa4ce 4fag fain4 fall5e 4fa4ma fam5is 5far far5th fa3ta fa3the 4fato fault5 4f5b 4fd 4fe_ feas4 feath3 fe4b 4feca 5fect 2fed fe3li fe4mo fen2d fend5e fer1 5ferr fev4 4f1f f4fes f4fie f5fin_ f2f5is f4fly f2fy 4fh 1fi fi3a 2f3ic_ 4f3ical f3ican 4ficate f3icen fi3cer fic4i 5ficia 5ficie 4fics fi3cu fi5del fight5 fil5i fill5in 4fily 2fin 5fina fin2d5 fi2ne f1in3g fin4n fis4ti f4l2 f5less flin4 flo3re f2ly5 4fm 4fn 1fo 5fon fon4de fon4t fo2r fo5rat for5ay fore5t for4i fort5a fos5 4f5p fra4t f5rea fres5c fri2 fril4 frol5 2f3s 2ft f4to f2ty 3fu fu5el 4fug fu4min fu5ne fu3ri fusi4 fus4s 4futa 1fy 1ga gaf4 5gal_ 3gali ga3lo 2gam ga5met g5amo gan5is ga3niz gani5za 4gano gar5n4 gass4 gath3 4gativ 4gaz g3b gd4 2ge_ 2ged geez4 gel4in ge5lis ge5liz 4gely 1gen ge4nat ge5niz 4geno 4geny 1geo ge3om g4ery 5gesi geth5 4geto ge4ty ge4v 4g1g2 g2ge g3ger gglu5 ggo4 gh3in gh5out gh4to 5gi_ 1gi4a gia5r g1ic 5gicia g4ico gien5 5gies_ gil4 g3imen 3g4in_ gin5ge 5g4ins 5gio 3gir gir4l g3isl gi4u 5giv 3giz gl2 gla4 glad5i 5glas 1gle gli4b g3lig 3glo glo3r g1m g4my gn4a g4na_ gnet4t g1ni g2nin g4nio g1no g4non 1go 3go_ gob5 5goe 3g4o4g go3is gon2 4g3o3na gondo5 go3ni 5goo go5riz gor5ou 5gos_ gov1 g3p 1gr 4grada g4rai gran2 5graph_ g5rapher 5graphic 4graphy 4gray gre4n 4gress_ 4grit g4ro gruf4 gs2 g5ste gth3 gu4a 3guard 2gue 5gui5t 3gun 3gus 4gu4t g3w 1gy 2g5y3n gy5ra h3ab4l hach4 hae4m hae4t h5agu ha3la hala3m ha4m han4ci han4cy 5hand_ han4g hang5er hang5o h5a5niz han4k han4te hap3l hap5t ha3ran ha5ras har2d hard3e har4le harp5en har5ter has5s haun4 5haz haz3a h1b 1head 3hear he4can h5ecat h4ed he5do5 he3l4i hel4lis hel4ly h5elo hem4p he2n hena4 hen5at heo5r hep5 h4era hera3p her4ba here5a h3ern h5erou h3ery h1es he2s5p he4t het4ed heu4 h1f h1h hi5an hi4co high5 h4il2 himer4 h4ina hion4e hi4p hir4l hi3ro hir4p hir4r his3el his4s hith5er hi2v 4hk 4h1l4 hlan4 h2lo hlo3ri 4h1m hmet4 2h1n h5odiz h5ods ho4g hoge4 hol5ar 3hol4e ho4ma home3 hon4a ho5ny 3hood hoon4 hor5at ho5ris hort3e ho5ru hos4e ho5sen hos1p 1hous house3 hov5el 4h5p 4hr4 hree5 hro5niz hro3po 4h1s2 h4sh h4tar ht1en ht5es h4ty hu4g hu4min hun5ke hun4t hus3t4 hu4t h1w h4wart hy3pe hy3ph hy2s 2i1a i2al iam4 iam5ete i2an 4ianc ian3i 4ian4t ia5pe iass4 i4ativ ia4tric i4atu ibe4 ib3era ib5ert ib5ia ib3in ib5it_ ib5ite i1bl ib3li i5bo i1br i2b5ri i5bun 4icam 5icap 4icar i4car_ i4cara icas5 i4cay iccu4 4iceo 4ich 2ici i5cid ic5ina i2cip ic3ipa i4cly i2c5oc 4i1cr 5icra i4cry ic4te ictu2 ic4t3ua ic3ula ic4um ic5uo i3cur 2id i4dai id5anc id5d ide3al ide4s i2di id5ian idi4ar i5die id3io idi5ou id1it id5iu i3dle i4dom id3ow i4dr i2du id5uo 2ie4 ied4e 5ie5ga ield3 ien5a4 ien4e i5enn i3enti i1er_ i3esc i1est i3et 4if_ if5ero iff5en if4fr 4ific_ i3fie i3fl 4ift 2ig iga5b ig3era ight3i 4igi i3gib ig3il ig3in ig3it i4g4l i2go ig3or ig5ot i5gre igu5i ig1ur i3h 4i5i4 i3j 4ik i1la il3a4b i4lade i2l5am ila5ra i3leg il1er ilev4 il5f il1i il3ia il2ib il3io il4ist 2ilit il2iz ill5ab 4iln il3oq il4ty il5ur il3v i4mag im3age ima5ry imenta5r 4imet im1i im5ida imi5le i5mini 4imit im4ni i3mon i2mu im3ula 2in_ i4n3au 4inav incel4 in3cer 4ind in5dling 2ine i3nee iner4ar i5ness 4inga 4inge in5gen 4ingi in5gling 4ingo 4ingu 2ini i5ni_ i4nia in3io in1is i5nite_ 5initio in3ity 4ink 4inl 2inn 2i1no i4no4c ino4s i4not 2ins in3se insur5a 2int_ 2in4th in1u i5nus 4iny 2io 4io_ ioge4 io2gr i1ol io4m ion3at ion4ery ion3i io5ph ior3i i4os io5th i5oti io4to i4our 2ip ipe4 iphras4 ip3i ip4ic ip4re4 ip3ul i3qua iq5uef iq3uid iq3ui3t 4ir i1ra ira4b i4rac ird5e ire4de i4ref i4rel4 i4res ir5gi ir1i iri5de ir4is iri3tu 5i5r2iz ir4min iro4g 5iron_ ir5ul 2is_ is5ag is3ar isas5 2is1c is3ch 4ise is3er 3isf is5han is3hon ish5op is3ib isi4d i5sis is5itiv 4is4k islan4 4isms i2so iso5mer is1p is2pi is4py 4is1s is4sal issen4 is4ses is4ta_ is1te is1ti ist4ly 4istral i2su is5us 4ita_ ita4bi i4tag 4ita5m i3tan i3tat 2ite it3era i5teri it4es 2ith i1ti 4itia 4i2tic it3ica 5i5tick it3ig it5ill i2tim 2itio 4itis i4tism i2t5o5m 4iton i4tram it5ry 4itt it3uat i5tud it3ul 4itz_ i1u 2iv iv3ell iv3en_ i4v3er_ i4vers_ iv5il_ iv5io iv1it i5vore iv3o3ro i4v3ot 4i5w ix4o 4iy 4izar izi4 5izont 5ja jac4q ja4p 1je jer5s 4jestie 4jesty jew3 jo4p 5judg 3ka_ k3ab k5ag kais4 kal4 k1b k2ed 1kee ke4g ke5li k3en4d k1er kes4 k3est_ ke4ty k3f kh4 k1i 5ki_ 5k2ic k4ill kilo5 k4im k4in_ kin4de k5iness kin4g ki4p kis4 k5ish kk4 k1l 4kley 4kly k1m k5nes 1k2no ko5r kosh4 k3ou kro5n 4k1s2 k4sc ks4l k4sy k5t k1w lab3ic l4abo laci4 l4ade la3dy lag4n lam3o 3land lan4dl lan5et lan4te lar4g lar3i las4e la5tan 4lateli 4lativ 4lav la4v4a 2l1b lbin4 4l1c2 lce4 l3ci 2ld l2de ld4ere ld4eri ldi4 ld5is l3dr l4dri le2a le4bi left5 5leg_ 5legg le4mat lem5atic 4len_ 3lenc 5lene_ 1lent le3ph le4pr lera5b ler4e 3lerg 3l4eri l4ero les2 le5sco 5lesq 3less 5less_ l3eva lev4er_ lev4era lev4ers 3ley 4leye 2lf l5fr 4l1g4 l5ga lgar3 l4ges lgo3 2l3h li4ag li2am liar5iz li4as li4ato li5bi 5licio li4cor 4lics 4lict_ l4icu l3icy l3ida lid5er 3lidi lif3er l4iff li4fl 5ligate 3ligh li4gra 3lik 4l4i4l lim4bl lim3i li4mo l4im4p l4ina 1l4ine lin3ea lin3i link5er li5og 4l4iq lis4p l1it l2it_ 5litica l5i5tics liv3er l1iz 4lj lka3 l3kal lka4t l1l l4law l2le l5lea l3lec l3leg l3lel l3le4n l3le4t ll2i l2lin4 l5lina ll4o lloqui5 ll5out l5low 2lm l5met lm3ing l4mod lmon4 2l1n2 3lo_ lob5al lo4ci 4lof 3logic l5ogo 3logu lom3er 5long lon4i l3o3niz lood5 5lope_ lop3i l3opm lora4 lo4rato lo5rie lor5ou 5los_ los5et 5losophiz 5losophy los4t lo4ta loun5d 2lout 4lov 2lp lpa5b l3pha l5phi lp5ing l3pit l4pl l5pr 4l1r 2l1s2 l4sc l2se l4sie 4lt lt5ag ltane5 l1te lten4 ltera4 lth3i l5ties_ ltis4 l1tr ltu2 ltur3a lu5a lu3br luch4 lu3ci lu3en luf4 lu5id lu4ma 5lumi l5umn_ 5lumnia lu3o luo3r 4lup luss4 lus3te 1lut l5ven l5vet4 2l1w 1ly 4lya 4lyb ly5me ly3no 2lys4 l5yse 1ma 2mab ma2ca ma5chine ma4cl mag5in 5magn 2mah maid5 4mald ma3lig ma5lin mal4li mal4ty 5mania man5is man3iz 4map ma5rine_ ma5riz mar4ly mar3v ma5sce mas4e mas1t 5mate math3 ma3tis 4matiza 4m1b mba4t5 m5bil m4b3ing mbi4v 4m5c 4me_ 2med 4med_ 5media me3die m5e5dy me2g mel5on mel4t me2m mem1o3 1men men4a men5ac men4de 4mene men4i mens4 mensu5 3ment men4te me5on m5ersa 2mes 3mesti me4ta met3al me1te me5thi m4etr 5metric me5trie me3try me4v 4m1f 2mh 5mi_ mi3a mid4a mid4g mig4 3milia m5i5lie m4ill min4a 3mind m5inee m4ingl min5gli m5ingly min4t m4inu miot4 m2is mis4er_ mis5l mis4ti m5istry 4mith m2iz 4mk 4m1l m1m mma5ry 4m1n mn4a m4nin mn4o 1mo 4mocr 5mocratiz mo2d1 mo4go mois2 moi5se 4mok mo5lest mo3me mon5et mon5ge moni3a mon4ism mon4ist mo3niz monol4 mo3ny_ mo2r 4mora_ mos2 mo5sey mo3sp moth3 m5ouf 3mous mo2v 4m1p mpara5 mpa5rab mpar5i m3pet mphas4 m2pi mpi4a mp5ies m4p1in m5pir mp5is mpo3ri mpos5ite m4pous mpov5 mp4tr m2py 4m3r 4m1s2 m4sh m5si 4mt 1mu mula5r4 5mult multi3 3mum mun2 4mup mu4u 4mw 1na 2n1a2b n4abu 4nac_ na4ca n5act nag5er_ nak4 na4li na5lia 4nalt na5mit n2an nanci4 nan4it nank4 nar3c 4nare nar3i nar4l n5arm n4as nas4c nas5ti n2at na3tal nato5miz n2au nau3se 3naut nav4e 4n1b4 ncar5 n4ces_ n3cha n5cheo n5chil n3chis nc1in nc4it ncour5a n1cr n1cu n4dai n5dan n1de nd5est_ ndi4b n5d2if n1dit n3diz n5duc ndu4r nd2we 2ne_ n3ear ne2b neb3u ne2c 5neck 2ned ne4gat neg5ativ 5nege ne4la nel5iz ne5mi ne4mo 1nen 4nene 3neo ne4po ne2q n1er nera5b n4erar n2ere n4er5i ner4r 1nes 2nes_ 4nesp 2nest 4nesw 3netic ne4v n5eve ne4w n3f n4gab n3gel nge4n4e n5gere n3geri ng5ha n3gib ng1in n5git n4gla ngov4 ng5sh n1gu n4gum n2gy 4n1h4 nha4 nhab3 nhe4 3n4ia ni3an ni4ap ni3ba ni4bl ni4d ni5di ni4er ni2fi ni5ficat n5igr nik4 n1im ni3miz n1in 5nine_ nin4g ni4o 5nis_ nis4ta n2it n4ith 3nitio n3itor ni3tr n1j 4nk2 n5kero n3ket nk3in n1kl 4n1l n5m nme4 nmet4 4n1n2 nne4 nni3al nni4v nob4l no3ble n5ocl 4n3o2d 3noe 4nog noge4 nois5i no5l4i 5nologis 3nomic n5o5miz no4mo no3my no4n non4ag non5i n5oniz 4nop 5nop5o5li nor5ab no4rary 4nosc nos4e nos5t no5ta 1nou 3noun nov3el3 nowl3 n1p4 npi4 npre4c n1q n1r nru4 2n1s2 ns5ab nsati4 ns4c n2se n4s3es nsid1 nsig4 n2sl ns3m n4soc ns4pe n5spi nsta5bl n1t nta4b nter3s nt2i n5tib nti4er nti2f n3tine n4t3ing nti4p ntrol5li nt4s ntu3me nu1a nu4d nu5en nuf4fe n3uin 3nu3it n4um nu1me n5umi 3nu4n n3uo nu3tr n1v2 n1w4 nym4 nyp4 4nz n3za 4oa oad3 o5a5les oard3 oas4e oast5e oat5i ob3a3b o5bar obe4l o1bi o2bin ob5ing o3br ob3ul o1ce och4 o3chet ocif3 o4cil o4clam o4cod oc3rac oc5ratiz ocre3 5ocrit octor5a oc3ula o5cure od5ded od3ic odi3o o2do4 odor3 od5uct_ od5ucts o4el o5eng o3er oe4ta o3ev o2fi of5ite ofit4t o2g5a5r og5ativ o4gato o1ge o5gene o5geo o4ger o3gie 1o1gis og3it o4gl o5g2ly 3ogniz o4gro ogu5i 1ogy 2ogyn o1h2 ohab5 oi2 oic3es oi3der oiff4 oig4 oi5let o3ing oint5er o5ism oi5son oist5en oi3ter o5j 2ok o3ken ok5ie o1la o4lan olass4 ol2d old1e ol3er o3lesc o3let ol4fi ol2i o3lia o3lice ol5id_ o3li4f o5lil ol3ing o5lio o5lis_ ol3ish o5lite o5litio o5liv olli4e ol5ogiz olo4r ol5pl ol2t ol3ub ol3ume ol3un o5lus ol2v o2ly om5ah oma5l om5atiz om2be om4bl o2me om3ena om5erse o4met om5etry o3mia om3ic_ om3ica o5mid om1in o5mini 5ommend omo4ge o4mon om3pi ompro5 o2n on1a on4ac o3nan on1c 3oncil 2ond on5do o3nen on5est on4gu on1ic o3nio on1is o5niu on3key on4odi on3omy on3s onspi4 onspir5a onsu4 onten4 on3t4i ontif5 on5um onva5 oo2 ood5e ood5i oo4k oop3i o3ord oost5 o2pa ope5d op1er 3opera 4operag 2oph o5phan o5pher op3ing o3pit o5pon o4posi o1pr op1u opy5 o1q o1ra o5ra_ o4r3ag or5aliz or5ange ore5a o5real or3ei ore5sh or5est_ orew4 or4gu 4o5ria or3ica o5ril or1in o1rio or3ity o3riu or2mi orn2e o5rof or3oug or5pe 3orrh or4se ors5en orst4 or3thi or3thy or4ty o5rum o1ry os3al os2c os4ce o3scop 4oscopi o5scr os4i4e os5itiv os3ito os3ity osi4u os4l o2so os4pa os4po os2ta o5stati os5til os5tit o4tan otele4g ot3er_ ot5ers o4tes 4oth oth5esi oth3i4 ot3ic_ ot5ica o3tice o3tif o3tis oto5s ou2 ou3bl ouch5i ou5et ou4l ounc5er oun2d ou5v ov4en over4ne over3s ov4ert o3vis oviti4 o5v4ol ow3der ow3el ow5est ow1i own5i o4wo oy1a 1pa pa4ca pa4ce pac4t p4ad 5pagan p3agat p4ai pain4 p4al pan4a pan3el pan4ty pa3ny pa1p pa4pu para5bl par5age par5di 3pare par5el p4a4ri par4is pa2te pa5ter 5pathic pa5thy pa4tric pav4 3pay 4p1b pd4 4pe_ 3pe4a pear4l pe2c 2p2ed 3pede 3pedi pedia4 ped4ic p4ee pee4d pek4 pe4la peli4e pe4nan p4enc pen4th pe5on p4era_ pera5bl p4erag p4eri peri5st per4mal perme5 p4ern per3o per3ti pe5ru per1v pe2t pe5ten pe5tiz 4pf 4pg 4ph_ phar5i phe3no ph4er ph4es_ ph1ic 5phie ph5ing 5phisti 3phiz ph2l 3phob 3phone 5phoni pho4r 4phs ph3t 5phu 1phy pi3a pian4 pi4cie pi4cy p4id p5ida pi3de 5pidi 3piec pi3en pi4grap pi3lo pi2n p4in_ pind4 p4ino 3pi1o pion4 p3ith pi5tha pi2tu 2p3k2 1p2l2 3plan plas5t pli3a pli5er 4plig pli4n ploi4 plu4m plum4b 4p1m 2p3n po4c 5pod_ po5em po3et5 5po4g poin2 5point poly5t po4ni po4p 1p4or po4ry 1pos pos1s p4ot po4ta 5poun 4p1p ppa5ra p2pe p4ped p5pel p3pen p3per p3pet ppo5site pr2 pray4e 5preci pre5co pre3em pref5ac pre4la pre3r p3rese 3press pre5ten pre3v 5pri4e prin4t3 pri4s pris3o p3roca prof5it pro3l pros3e pro1t 2p1s2 p2se ps4h p4sib 2p1t pt5a4b p2te p2th pti3m ptu4r p4tw pub3 pue4 puf4 pul3c pu4m pu2n pur4r 5pus pu2t 5pute put3er pu3tr put4ted put4tin p3w qu2 qua5v 2que_ 3quer 3quet 2rab ra3bi rach4e r5acl raf5fi raf4t r2ai ra4lo ram3et r2ami rane5o ran4ge r4ani ra5no rap3er 3raphy rar5c rare4 rar5ef 4raril r2as ration4 rau4t ra5vai rav3el ra5zie r1b r4bab r4bag rbi2 rbi4f r2bin r5bine rb5ing_ rb4o r1c r2ce rcen4 r3cha rch4er r4ci4b rc4it rcum3 r4dal rd2i rdi4a rdi4er rdin4 rd3ing 2re_ re1al re3an re5arr 5reav re4aw r5ebrat rec5oll rec5ompe re4cre 2r2ed re1de re3dis red5it re4fac re2fe re5fer_ re3fi re4fy reg3is re5it re1li re5lu r4en4ta ren4te re1o re5pin re4posi re1pu r1er4 r4eri rero4 re5ru r4es_ re4spi ress5ib res2t re5stal re3str re4ter re4ti4z re3tri reu2 re5uti rev2 re4val rev3el r5ev5er_ re5vers re5vert re5vil rev5olu re4wh r1f rfu4 r4fy rg2 rg3er r3get r3gic rgi4n rg3ing r5gis r5git r1gl rgo4n r3gu rh4 4rh_ 4rhal ri3a ria4b ri4ag r4ib rib3a ric5as r4ice 4rici 5ricid ri4cie r4ico rid5er ri3enc ri3ent ri1er ri5et rig5an 5rigi ril3iz 5riman rim5i 3rimo rim4pe r2ina 5rina_ rin4d rin4e rin4g ri1o 5riph riph5e ri2pl rip5lic r4iq r2is r4is_ ris4c r3ish ris4p ri3ta3b r5ited_ rit5er_ rit5ers rit3ic ri2tu rit5ur riv5el riv3et riv3i r3j r3ket rk4le rk4lin r1l rle4 r2led r4lig r4lis rl5ish r3lo4 r1m rma5c r2me r3men rm5ers rm3ing r4ming_ r4mio r3mit r4my r4nar r3nel r4ner r5net r3ney r5nic r1nis4 r3nit r3niv rno4 r4nou r3nu rob3l r2oc ro3cr ro4e ro1fe ro5fil rok2 ro5ker 5role_ rom5ete rom4i rom4p ron4al ron4e ro5n4is ron4ta 1room 5root ro3pel rop3ic ror3i ro5ro ros5per ros4s ro4the ro4ty ro4va rov5el rox5 r1p r4pea r5pent rp5er_ r3pet rp4h4 rp3ing r3po r1r4 rre4c rre4f r4reo rre4st rri4o rri4v rron4 rros4 rrys4 4rs2 r1sa rsa5ti rs4c r2se r3sec rse4cr rs5er_ rs3es rse5v2 r1sh r5sha r1si r4si4b rson3 r1sp r5sw rtach4 r4tag r3teb rten4d rte5o r1ti rt5ib rti4d r4tier r3tig rtil3i rtil4l r4tily r4tist r4tiv r3tri rtroph4 rt4sh ru3a ru3e4l ru3en ru4gl ru3in rum3pl ru2n runk5 run4ty r5usc ruti5n rv4e rvel4i r3ven rv5er_ r5vest r3vey r3vic rvi4v r3vo r1w ry4c 5rynge ry3t sa2 2s1ab 5sack sac3ri s3act 5sai salar4 sal4m sa5lo sal4t 3sanc san4de s1ap sa5ta 5sa3tio sat3u sau4 sa5vor 5saw 4s5b scan4t5 sca4p scav5 s4ced 4scei s4ces sch2 s4cho 3s4cie 5scin4d scle5 s4cli scof4 4scopy scour5a s1cu 4s5d 4se_ se4a seas4 sea5w se2c3o 3sect 4s4ed se4d4e s5edl se2g seg3r 5sei se1le 5self 5selv 4seme se4mol sen5at 4senc sen4d s5ened sen5g s5enin 4sentd 4sentl sep3a3 4s1er_ s4erl ser4o 4servo s1e4s se5sh ses5t 5se5um 5sev sev3en sew4i 5sex 4s3f 2s3g s2h 2sh_ sh1er 5shev sh1in sh3io 3ship shiv5 sho4 sh5old shon3 shor4 short5 4shw si1b s5icc 3side_ 5sides 5sidi si5diz 4signa sil4e 4sily 2s1in s2ina 5sine_ s3ing 1sio 5sion sion5a si2r sir5a 1sis 3sitio 5siu 1siv 5siz sk2 4ske s3ket sk5ine sk5ing s1l2 s3lat s2le slith5 2s1m s3ma small3 sman3 smel4 s5men 5smith smol5d4 s1n4 1so so4ce soft3 so4lab sol3d2 so3lic 5solv 3som 3s4on_ sona4 son4g s4op 5sophic s5ophiz s5ophy sor5c sor5d 4sov so5vi 2spa 5spai spa4n spen4d 2s5peo 2sper s2phe 3spher spho5 spil4 sp5ing 4spio s4ply s4pon spor4 4spot squal4l s1r 2ss s1sa ssas3 s2s5c s3sel s5seng s4ses_ s5set s1si s4sie ssi4er ss5ily s4sl ss4li s4sn sspend4 ss2t ssur5a ss5w 2st_ s2tag s2tal stam4i 5stand s4ta4p 5stat_ s4ted stern5i s5tero ste2w stew5a s3the st2i s4ti_ s5tia s1tic 5stick s4tie s3tif st3ing 5stir s1tle 5stock stom3a 5stone s4top 3store st4r s4trad 5stratu s4tray s4trid 4stry 4st3w s2ty 1su su1al su4b3 su2g3 su5is suit3 s4ul su2m sum3i su2n su2r 4sv sw2 4swo s4y 4syc 3syl syn5o sy5rin 1ta 3ta_ 2tab ta5bles 5taboliz 4taci ta5do 4taf4 tai5lo ta2l ta5la tal5en tal3i 4talk tal4lis ta5log ta5mo tan4de tanta3 ta5per ta5pl tar4a 4tarc 4tare ta3riz tas4e ta5sy 4tatic ta4tur taun4 tav4 2taw tax4is 2t1b 4tc t4ch tch5et 4t1d 4te_ tead4i 4teat tece4 5tect 2t1ed te5di 1tee teg4 te5ger te5gi 3tel_ teli4 5tels te2ma2 tem3at 3tenan 3tenc 3tend 4tenes 1tent ten4tag 1teo te4p te5pe ter3c 5ter3d 1teri ter5ies ter3is teri5za 5ternit ter5v 4tes_ 4tess t3ess_ teth5e 3teu 3tex 4tey 2t1f 4t1g 2th_ than4 th2e 4thea th3eas the5at the3is 3thet th5ic_ th5ica 4thil 5think 4thl th5ode 5thodic 4thoo thor5it tho5riz 2ths 1tia ti4ab ti4ato 2ti2b 4tick t4ico t4ic1u 5tidi 3tien tif2 ti5fy 2tig 5tigu till5in 1tim 4timp tim5ul 2t1in t2ina 3tine_ 3tini 1tio ti5oc tion5ee 5tiq ti3sa 3tise tis4m ti5so tis4p 5tistica ti3tl ti4u 1tiv tiv4a 1tiz ti3za ti3zen 2tl t5la tlan4 3tle_ 3tled 3tles_ t5let_ t5lo 4t1m tme4 2t1n2 1to to3b to5crat 4todo 2tof to2gr to5ic to2ma tom4b to3my ton4ali to3nat 4tono 4tony to2ra to3rie tor5iz tos2 5tour 4tout to3war 4t1p 1tra tra3b tra5ch traci4 trac4it trac4te tras4 tra5ven trav5es5 tre5f tre4m trem5i 5tria tri5ces 5tricia 4trics 2trim tri4v tro5mi tron5i 4trony tro5phe tro3sp tro3v tru5i trus4 4t1s2 t4sc tsh4 t4sw 4t3t2 t4tes t5to ttu4 1tu tu1a tu3ar tu4bi tud2 4tue 4tuf4 5tu3i 3tum tu4nis 2t3up_ 3ture 5turi tur3is tur5o tu5ry 3tus 4tv tw4 4t1wa twis4 4two 1ty 4tya 2tyl type3 ty5ph 4tz tz4e 4uab uac4 ua5na uan4i uar5ant uar2d uar3i uar3t u1at uav4 ub4e u4bel u3ber u4bero u1b4i u4b5ing u3ble_ u3ca uci4b uc4it ucle3 u3cr u3cu u4cy ud5d ud3er ud5est udev4 u1dic ud3ied ud3ies ud5is u5dit u4don ud4si u4du u4ene uens4 uen4te uer4il 3ufa u3fl ugh3en ug5in 2ui2 uil5iz ui4n u1ing uir4m uita4 uiv3 uiv4er_ u5j 4uk u1la ula5b u5lati ulch4 5ulche ul3der ul4e u1len ul4gi ul2i u5lia ul3ing ul5ish ul4lar ul4li4b ul4lis 4ul3m u1l4o 4uls uls5es ul1ti ultra3 4ultu u3lu ul5ul ul5v um5ab um4bi um4bly u1mi u4m3ing umor5o um2p unat4 u2ne un4er u1ni un4im u2nin un5ish uni3v un3s4 un4sw unt3ab un4ter_ un4tes unu4 un5y un5z u4ors u5os u1ou u1pe uper5s u5pia up3ing u3pl up3p upport5 upt5ib uptu4 u1ra 4ura_ u4rag u4ras ur4be urc4 ur1d ure5at ur4fer ur4fr u3rif uri4fic ur1in u3rio u1rit ur3iz ur2l url5ing_ ur4no uros4 ur4pe ur4pi urs5er ur5tes ur3the urti4 ur4tie u3ru 2us u5sad u5san us4ap usc2 us3ci use5a u5sia u3sic us4lin us1p us5sl us5tere us1tr u2su usur4 uta4b u3tat 4ute_ 4utel 4uten uten4i 4u1t2i uti5liz u3tine ut3ing ution5a u4tis 5u5tiz u4t1l ut5of uto5g uto5matic u5ton u4tou uts4 u3u uu4m u1v2 uxu3 uz4e 1va 5va_ 2v1a4b vac5il vac3u vag4 va4ge va5lie val5o val1u va5mo va5niz va5pi var5ied 3vat 4ve_ 4ved veg3 v3el_ vel3li ve4lo v4ely ven3om v5enue v4erd 5vere_ v4erel v3eren ver5enc v4eres ver3ie vermi4n 3verse ver3th v4e2s 4ves_ ves4te ve4te vet3er ve4ty vi5ali 5vian 5vide_ 5vided 4v3iden 5vides 5vidi v3if vi5gn vik4 2vil 5vilit v3i3liz v1in 4vi4na v2inc vin5d 4ving vio3l v3io4r vi1ou vi4p vi5ro vis3it vi3so vi3su 4viti vit3r 4vity 3viv 5vo_ voi4 3vok vo4la v5ole 5volt 3volv vom5i vor5ab vori4 vo4ry vo4ta 4votee 4vv4 v4y w5abl 2wac wa5ger wag5o wait5 w5al_ wam4 war4t was4t wa1te wa5ver w1b wea5rie weath3 wed4n weet3 wee5v wel4l w1er west3 w3ev whi4 wi2 wil2 will5in win4de win4g wir4 3wise with3 wiz5 w4k wl4es wl3in w4no 1wo2 wom1 wo5ven w5p wra4 wri4 writa4 w3sh ws4l ws4pe w5s4t 4wt wy4 x1a xac5e x4ago xam3 x4ap xas5 x3c2 x1e xe4cuto x2ed xer4i xe5ro x1h xhi2 xhil5 xhu4 x3i xi5a xi5c xi5di x4ime xi5miz x3o x4ob x3p xpan4d xpecto5 xpe3d x1t2 x3ti x1u xu3a xx4 y5ac 3yar4 y5at y1b y1c y2ce yc5er y3ch ych4e ycom4 ycot4 y1d y5ee y1er y4erf yes4 ye4t y5gi 4y3h y1i y3la ylla5bl y3lo y5lu ymbol5 yme4 ympa3 yn3chr yn5d yn5g yn5ic 5ynx y1o4 yo5d y4o5g yom4 yo5net y4ons y4os y4ped yper5 yp3i y3po y4poc yp2ta y5pu yra5m yr5ia y3ro yr4r ys4c y3s2e ys3ica ys3io 3ysis y4so yss4 ys1t ys3ta ysur4 y3thin yt3ic y1w za1 z5a2b zar2 4zb 2ze ze4n ze4p z1er ze3ro zet4 2z1i z4il z4is 5zl 4zm 1zo zo4m zo5ol zte4 4z1z2 z4zy";
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/es.php b/inc/3rdparty/libraries/mpdf/patterns/es.php
deleted file mode 100644 (file)
index da8f756..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-       
-       Created by Luis Pabon (lpabon at metagrama dot es)
-*/
-
-$patterns="_a2 _an2a2 _an2\xc3\xa12 _an3aero _ana3li _an\xc3\xa13li _an2e2 _an2\xc3\xa92 _an3e2pigr _ane3xa _ane3x\xc3\xa1 _ane3xe _ane3x\xc3\xa9 _ane3xio _ane3xi\xc3\xb3 _an3h _an2i2 _an2\xc3\xad2 _ani3dar _ani3ll _ani3m _ani3mad _ani3m\xc3\xa1d _ani\xc3\xb1a _ani3q _an3i2so _an3i2s\xc3\xb3 _ani3vel _an2o2 _an2\xc3\xb32 _ano5che _ano5din _ano5mal _an\xc3\xb35mal _ano5nad _ano5nim _an\xc3\xb33nim _ano5ta _ano3t\xc3\xa1 _ante2o3je _anti1a2 _anti1\xc3\xa12 _anti1e2 _anti1\xc3\xa92 _anti1h _anti1i2 _anti1\xc3\xad2 _anti1o2 _anti1\xc3\xb32 _anti1u2 _anti1\xc3\xba2 _an2u2 _an2\xc3\xba2_ _anua3l _anua4lm _anu3bl _anu3da _anu3l _bi1anual _bi1aur _bien1and _bien1apa _bien1ave _bien1est _bien1int _bi1ox _bi1\xc3\xb32x _bi1un _co2a2 _co2\xc3\xa12 _co2e2 _co2\xc3\xa92 _co2i2 _co2\xc3\xad2 _co3o4 _co2\xc3\xb32 _co2u2 _co2\xc3\xba2 _de2s2a2 _de2s2\xc3\xa12 _de2s2e2 _de2s2\xc3\xa92 _de2s2i2 _de2s2\xc3\xad2 _de3s4in3ter2e3sa _de3s4in3ter2e3s\xc3\xa1 _de3s4in3ter2e3se _de3s4in3ter2e3s\xc3\xa9 _de3s4in3ter2e3so _de3s4in3ter2e3s\xc3\xb3 _de2s2o2 _de2s2\xc3\xb32 _de2s2u2 _de2s2\xc3\xba2 _dieci1o2 _en2a2 _en2\xc3\xa12 _en1aceit _en1aciy _en1aguach _en1aguaz _en1anch _en1apa _en1arb _en1art _en2artr _en2e2 _en2\xc3\xa92 _en1ej _en2i2 _en2\xc3\xad2 _en2o2 _en2\xc3\xb32 _eno3jar _en2u2 _en2\xc3\xba2 _enu3mera _enu3mer\xc3\xa1 _enu3mere _he4mee _hepta1e _hu4mea _hu4meo _in2a2 _in2\xc3\xa12 _in3abarc _in3abord _in3acent _in3adapt _in3aguant _ina3movib _in3analiz _ina3nic _in3anim _in\xc3\xa13nim _in3apel _in3aplic _in3apreci _in3aprens _in3arrug _in3asist _in2e2 _in2\xc3\xa92 _in\xc3\xa93dit _in3efic _in3efici _in3eludi _ine3narr _in2i2 _in2\xc3\xad2 _ini3cia _ini3ci\xc3\xa1 _ini3cie _in2o2 _in2\xc3\xb32 _ino3cua _ino3cula _ino3cul\xc3\xa1 _ino3cule _ino3cuo _inte2r1a2 _inte2r1\xc3\xa12 _inte2r1e2 _inte2r1\xc3\xa92 _in3ter2e3sa _in3ter2e3s\xc3\xa1 _in3ter2e3se _in3ter2e3s\xc3\xa9 _in3ter2e3so _in3ter2e3s\xc3\xb3 _inte2r1i2 _inte2r1\xc3\xad2 _inte2r1o2 _inte2r1\xc3\xb32 _inte2r3r _in3te3r4rog _in3te3r4rump _in3te3r4rupc _in3te3r4rupt _inte2r1u2 _inte2r1\xc3\xba2 _intra1o _intra1u _in2u2 _in2\xc3\xba2 _in\xc3\xba3til _inu3tiliz _mal1acon _mal1acos _mala1e _mal1andant _mal1andanz _ma4l3e4du _mal1est _mal1int _pa4n1afri _pa4n1a4meri _pa4n1europ _pa4n1\xc3\xb3pti _pos2t2a2 _pos2t2\xc3\xa12 _pos2t2e2 _pos2t2\xc3\xa92 _post3elec _pos3terg _pos3te3ri _pos2t2i2 _pos2t2\xc3\xad2 _pos3ti3go _pos3ti3la _post3impr _pos3tin _pos3t\xc3\xadn _post3ind _pos3ti3ne _pos3ti3za _pos3ti3zo _pos2t2o2 _pos2t2\xc3\xb32 _pos3t\xc3\xb33ni _post3ope _post3rev _pos2t2u2 _pos2t2\xc3\xba2 _pos3tu3la _pos3tu3l\xc3\xa1 _pos3tu3le _pos3tu3l\xc3\xa9 _pos3tu3ra _pre2a2 _pre2\xc3\xa12 _pre2e2 _pre2\xc3\xa92 _pre2h2 _pre2i2 _pre2\xc3\xad2 _pre2o2 _pre2\xc3\xb32 _pre2u2 _pre2\xc3\xba2 _pro2a2 _pro2\xc3\xa12 _pro2e2 _pro2\xc3\xa92 _pro2h2 _pro2i2 _pro2\xc3\xad2 _pro2o2 _pro2\xc3\xb32 _pro2u2 _pro2\xc3\xba2 _re2a2 _re2\xc3\xa12 _re3abr _re3\xc3\xa1br _re3a2eg _re3afirm _re3af\xc3\xadrm _re3a2grup _re3ajust _rea3j\xc3\xbast _re3alim _rea3lism _rea3list _rea3liza _rea3liz\xc3\xa1 _rea3l\xc3\xadza _re3anim _re3an\xc3\xadm _re3aparec _re3a2q _re3a2z _re3e4 _re2\xc3\xa92 _re2i2 _re2\xc3\xad2 _re3i2m _re3inc _re3ing _re3ins _re3int _re2o2 _re2\xc3\xb32 _re3o2b _re1oc _re1oj _re3orga _retro1a _re2u2 _re2\xc3\xba2 _re3ubica _re3ub\xc3\xadca _reu3mati _reu3m\xc3\xa1ti _re3unir _re3un\xc3\xadr _re1unt _re3usar _re3us\xc3\xa1r _re3utiliz _re3util\xc3\xadz _so3a4s _su2b2a2 _su2b2\xc3\xa12 _sub3aflue _sub3arr _su2b2e2 _su2b2\xc3\xa92 _sub3enten _sub3estim _sub3est\xc3\xadm _su2b2i2 _su2b2\xc3\xad2 _su3b4ien _sub2i3ll _sub3\xc3\xadmi _sub2i3mien _sub3\xc3\xadnd _su2b2o2 _su2b2\xc3\xb32 _sub3ofici _su4b3ray _su2b2u2 _su2b2\xc3\xba2 _sub3urba _su2d1a2fr _su2d1a2me _su2d1est _sur1a2me _sur1est _sur1oes _tele1imp _tele1obj _tran2s1alp _tran2s1and _tran2s1atl _tran2s1oce _tran2s1ur _tra2s1a _tra2s1o _tra2s2o\xc3\xb1 _tri1\xc3\xb32x 4a3ba_ 4a3bais_ 4\xc3\xa13bamos_ 4a3ban_ 4a3bas_ acante2 4a3ci\xc3\xb3n_ 4a3ciones_ acto1a2 acto1\xc3\xa12 acto1e2 acto1\xc3\xa92 acto1h acto1i2 acto1\xc3\xad2 acto1o2 acto1\xc3\xb32 acto1u2 acto1\xc3\xba2 4ad_ 4a3da_ 4a3das_ 4adlas_ 4adle_ 4adles_ 4adlo_ 4adlos_ 4adme_ 4\xc3\xa1d3mela_ 4\xc3\xa1d3melas_ 4\xc3\xa1dmele_ 4\xc3\xa1dmeles_ 4\xc3\xa1dmelo_ 4\xc3\xa1dmelos_ 4adnos_ 4\xc3\xa1dnosla_ 4\xc3\xa1dnoslas_ 4\xc3\xa1dnosle_ 4\xc3\xa1dnosles_ 4\xc3\xa1dnoslo_ 4\xc3\xa1dnoslos_ 4a3do_ 4a3dor_ 4a3dora_ 4a3doras_ 4a3dores_ 4a3dos_ 4\xc3\xa1dsela_ 4\xc3\xa1dselas_ 4\xc3\xa1dsele_ 4\xc3\xa1dseles_ 4\xc3\xa1dselo_ 4\xc3\xa1dselos_ 4adte_ 4\xc3\xa1d3tela_ 4\xc3\xa1d3telas_ 4\xc3\xa1dtele_ 4\xc3\xa1dteles_ 4\xc3\xa1dtelo_ 4\xc3\xa1dtelos_ aero1a2 aero1\xc3\xa12 aero1e2 aero1\xc3\xa92 aero1h aero1i2 aero1\xc3\xad2 aero1o2 aero1\xc3\xb32 aero1u2 aero1\xc3\xba2 afro1a2 afro1\xc3\xa12 afro1e2 afro1\xc3\xa92 afro1h afro1i2 afro1\xc3\xad2 afro1o2 afro1\xc3\xb32 afro1u2 afro1\xc3\xba2 4a4i3gan_ 4\xc3\xa1is_ a\xc3\xad5so_ a\xc3\xad5sos_ 2al_ 2ales_ 4a3mos_ 4an_ ana3l\xc3\xad 4ando 4\xc3\xa1ndola_ 4\xc3\xa1ndolas_ 4\xc3\xa1ndole_ 4\xc3\xa1ndoles_ 4\xc3\xa1ndolo_ 4\xc3\xa1ndolos_ 4\xc3\xa1ndome_ 4\xc3\xa1ndomela_ 4\xc3\xa1ndomelas_ 4\xc3\xa1ndomele_ 4\xc3\xa1ndomeles_ 4\xc3\xa1ndomelo_ 4\xc3\xa1ndomelos_ 4\xc3\xa1ndonos_ 4\xc3\xa1ndoos_ 4\xc3\xa1ndose_ 4\xc3\xa1ndosela_ 4\xc3\xa1ndoselas_ 4\xc3\xa1ndosele_ 4\xc3\xa1ndoseles_ 4\xc3\xa1ndoselo_ 4\xc3\xa1ndoselos_ 4\xc3\xa1ndoseme_ 4\xc3\xa1ndosenos_ 4\xc3\xa1ndote_ 4\xc3\xa1ndotela_ 4\xc3\xa1ndotelas_ 4\xc3\xa1ndotele_ 4\xc3\xa1ndoteles_ 4\xc3\xa1ndotelo_ 4\xc3\xa1ndotelos_ 4\xc3\xa1ndoteme_ 4\xc3\xa1ndotenos_ anfi1a2 anfi1\xc3\xa12 anfi1e2 anfi1\xc3\xa92 anfi1h anfi1i2 anfi1\xc3\xad2 anfi1o2 anfi1\xc3\xb32 anfi1u2 anfi1\xc3\xba2 anglo1a2 anglo1\xc3\xa12 anglo1e2 anglo1\xc3\xa92 anglo1h anglo1i2 anglo1\xc3\xad2 anglo1o2 anglo1\xc3\xb32 anglo1u2 anglo1\xc3\xba2 ante1a2 ante1\xc3\xa12 ante1e2 ante1\xc3\xa92 ante1h ante1i2 ante1\xc3\xad2 ante1o2 ante1\xc3\xb32 ante1u2 ante1\xc3\xba2 4aos_ 4\xc3\xa1osla_ 4\xc3\xa1oslas_ 4\xc3\xa1osle_ 4\xc3\xa1osles_ 4\xc3\xa1oslo_ 4\xc3\xa1oslos_ 4ar_ 4a3ra_ 4a3r\xc3\xa1_ 4a3rais_ 4\xc3\xa13ramos_ 4a3ran_ 4a3r\xc3\xa1n_ 4a3ras_ 4a3r\xc3\xa1s_ archi1a2 archi1\xc3\xa12 archi1e2 archi1\xc3\xa92 archi1h archi1i2 archi1\xc3\xad2 archi1o2 archi1\xc3\xb32 archi1u2 archi1\xc3\xba2 4a3re_ 4a3r\xc3\xa9_ 4a3reis_ 4a3r\xc3\xa9is_ 4a3remos_ 4\xc3\xa13remos_ 4a3ren_ 4a3res_ 4a3r\xc3\xa9s_ 4a3r\xc3\xada_ 4a3r\xc3\xadais 4a3r\xc3\xadamos_ 4a3r\xc3\xadan_ 4a3r\xc3\xadas_ a3rio_ a3rios_ 4a3r\xc3\xads_ 4a4r3la_ 4a4r3las_ 4a4r3le_ 4a4r3les_ 4a4r3lo_ 4a4r3los_ 4a4rme_ 4\xc3\xa14r3mela_ 4\xc3\xa14r3melas_ 4\xc3\xa14rmele_ 4\xc3\xa14r3meles_ 4\xc3\xa14rmelo_ 4\xc3\xa14r3melos_ 4a4r3nos_ 4\xc3\xa14r3nosla_ 4\xc3\xa14r3noslas_ 4\xc3\xa14r3nosle_ 4\xc3\xa14r3nosles_ 4\xc3\xa14r3noslo_ 4\xc3\xa14r3noslos_ 4a3ron_ 4a3ros_ 4\xc3\xa1rosla_ 4\xc3\xa1roslas_ 4\xc3\xa1rosle_ 4\xc3\xa1rosles_ 4\xc3\xa1roslo_ 4\xc3\xa1roslos_ 4a4r3se_ 4\xc3\xa14r3sela_ 4\xc3\xa14r3selas_ 4\xc3\xa14r3sele_ 4\xc3\xa14r3seles_ 4\xc3\xa14r3selo_ 4\xc3\xa14r3selos_ 4a4r3te_ 4\xc3\xa14r3tela_ 4\xc3\xa14r3telas_ 4\xc3\xa14r3tele_ 4\xc3\xa14r3teles_ 4\xc3\xa14r3telo_ 4\xc3\xa14r3telos_ 4as_ 4\xc3\xa1s_ 4a3se_ 4a3seis_ 4\xc3\xa13semos_ 4a3sen_ 4a3ses_ 4aste_ 4asteis_ 4astes_ asu3b2 4ates_ auto1a2 auto1\xc3\xa12 auto1e2 auto1\xc3\xa92 auto1h auto1i2 auto1\xc3\xad2 auto1o2 auto1\xc3\xb32 auto1u2 auto1\xc3\xba2 1b 2bb 2bc 2b3c2n 2b3c2t 2b3c2z 2bd 2bf 2b3f2t 2bg 2b3g2n 2b1h biblio1a2 biblio1\xc3\xa12 biblio1e2 biblio1\xc3\xa92 biblio1h biblio1i2 biblio1\xc3\xad2 biblio1o2 biblio1\xc3\xb32 biblio1u2 biblio1\xc3\xba2 bien2 b4ien3das_ b4ien3do_ bien3h bien3m bien3q bien3t bien3v bio1a2 bio1\xc3\xa12 bio1e2 bio1\xc3\xa92 bio1h bio1i2 bio1\xc3\xad2 bio1o2 bio1\xc3\xb32 bio1u2 bio1\xc3\xba2 bi1u2n\xc3\xad 2bj 2bk b2l 2bl_ 2bm 2b3m2n 2bn 2bp 2b3p2n 2b3p2s 2b3p2t 2bq b2r 2br_ 2bs 2bt 2b3t2s 2b3t2z 2bv 2bw 2bx 2by 2bz 1c 4caca4 4caga4 4cagas_ 4cago4 cardio1a2 cardio1\xc3\xa12 cardio1e2 cardio1\xc3\xa92 cardio1h cardio1i2 cardio1\xc3\xad2 cardio1o2 cardio1\xc3\xb32 cardio1u2 cardio1\xc3\xba2 2cb 2cc 2c3c2n 2c3c2t 2c3c2z 2cd cefalo1a2 cefalo1\xc3\xa12 cefalo1e2 cefalo1\xc3\xa92 cefalo1h cefalo1i2 cefalo1\xc3\xad2 cefalo1o2 cefalo1\xc3\xb32 cefalo1u2 cefalo1\xc3\xba2 centi1a2 centi1\xc3\xa12 centi5\xc3\xa1rea centi1e2 centi1\xc3\xa92 centi1h centi1i2 centi1\xc3\xad2 centi1o2 centi1\xc3\xb32 centi1u2 centi1\xc3\xba2 2cf 2c3f2t 2cg 2c3g2n c4h 2ch_ ciclo1a2 ciclo1\xc3\xa12 ciclo1e2 ciclo1\xc3\xa92 ciclo1h ciclo1i2 ciclo1\xc3\xad2 ciclo1o2 ciclo1\xc3\xb32 ciclo1u2 ciclo1\xc3\xba2 cito1a2 cito1\xc3\xa12 cito1e2 cito1\xc3\xa92 cito1h cito1i2 cito1\xc3\xad2 cito1o2 cito1\xc3\xb32 cito1u2 cito1\xc3\xba2 2cj c2k c2l 2cl_ 2cm 2c3m2n 2cn 4cn_ 3c2neor cnico1a2 cnico1\xc3\xa12 cnico1e2 cnico1\xc3\xa92 cnico1h cnico1i2 cnico1\xc3\xad2 cnico1o2 cnico1\xc3\xb32 cnico1u2 cnico1\xc3\xba2 co4acci co4acti co4adju co4a3dun co4adyu co3agen co4a3gul co4\xc3\xa13gul co4a3lic co4aptac co4art co4\xc3\xa1rt co4e3fic co4erc co4erz co4e3t\xc3\xa1 co3exis co4imbr co4inci co4i3to con1imbr co3n4imbri contra1a2 contra1\xc3\xa12 contra1e2 contra1\xc3\xa92 contra1h contra1i2 contra1\xc3\xad2 contra1o2 contra1\xc3\xb32 contra1u2 contra1\xc3\xba2 con1urb co4o3per co4o3p\xc3\xa9r co4opt co4ord 2cp 2c3p2n 2c3p2s 2c3p2t 2cq c2r 2cr_ cripto1a2 cripto1\xc3\xa12 cripto1e2 cripto1\xc3\xa92 cripto1h cripto1i2 cripto1\xc3\xad2 cripto1o2 cripto1\xc3\xb32 cripto1u2 cripto1\xc3\xba2 crono1a2 crono1\xc3\xa12 crono1e2 crono1\xc3\xa92 crono1h crono1i2 crono1\xc3\xad2 crono1o2 crono1\xc3\xb32 crono1u2 crono1\xc3\xba2 2cs 2ct 4ct_ 2c3t2s 2c3t2z 4culo4 2cv 2cw 2cx 2cy 2cz 4cz_ 1d 2db 2dc 2d3c2n 2d3c2t 2d3c2z 2dd deca1a2 deca1\xc3\xa12 deca1e2 deca1\xc3\xa92 deca1h deca1i2 deca1\xc3\xad2 deca2i3mient deca1o2 deca1\xc3\xb32 deca1u2 deca1\xc3\xba2 decimo1 de4s3abast de4s3aboll de4s3aboto de4s3abr desa3brid de4s3abroch de4s3aceit de4s3aceler desa3cert desa3ciert de4s3acobar de4s3acomod de4s3acomp de4s3acons de4s3acopl de4s3acorr de4s3acostum de4s3acot desa3craliz de4s3acredit de4s3activ de4s3acuart de4s3aderez de4s3adeud de4s3adorar de4s3adormec de4s3adorn de4s3advert de4s3aferr desa3fi desa3f\xc3\xad de4s3afic de4s3afil de4s3afin de4s3afor desa3garr de4s3agraci de4s3agrad de4s3agravi de4s3agreg de4s3agrup de4s3agu desa3g\xc3\xbc desa3guisado de4s3aherr de4s3ahij de4s3ajust de4s3alagar de4s3alent de4s3alfom de4s3alfor de4s3alien desa3lin de4s3aline de4s3ali\xc3\xb1 desa3liv de4s3alm de4s3almid desa3loj de4s3alquil de4s3alter de4s3alumbr desa3marr desa3mobl de4s3amold de4s3amort de4s3amuebl de4s3and de4s3angel de4s3anid de4s3anim de4s3an\xc3\xadm de4s3anud desa3pacib de4s3apadr desa3pa\xc3\xb1 de4s3apare desa3parec desa3paric desa3peg desa3percib de4s3aplic de4s3apolill de4s3apoy de4s3aprend desa3prensi de4s3apret de4s3apriet de4s3aprob de4s3apropi de4s3aprovech de4s3arbol de4s3aren de4s3arm des4arme de4s3arraig de4s3arregl de4s3arrend de4s3arrim desa3rroll de4s3arrop de4s3arrug de4s3articul de4s3asent de4s3asist de4s3asn desa3soseg desa3sosieg de4s3atenc de4s3atend de4s3atent de4s3atiend desa3tin de4s3atorn de4s3atranc de4s3autor de4s3avis desa3yun desa3zon desa3z\xc3\xb3n de4s3embal de4s3emb\xc3\xa1l de4s3embar de4s3emb\xc3\xa1r de4s3embarg de4s3embols de4s3emborr de4s3embosc de4s3embot de4s3embrag de4s3embr\xc3\xa1g de4s3embrave de4s3embr\xc3\xa1ve de4s3embroll de4s3embr\xc3\xb3ll de4s3embruj de4s3embr\xc3\xbaj de3semej de4s3empac de4s3empa\xc3\xb1 de4s3emp\xc3\xa1\xc3\xb1 de4s3empaquet de4s3empaqu\xc3\xa9t de4s3emparej de4s3empar\xc3\xa9j de4s3emparent de4s3empat de4s3emp\xc3\xa9 de4s3empedr de4s3empeg de4s3empeor de4s3emperez de4s3empern de4s3emple de4s3empolv de4s3empotr de4s3empoz de4s3enam de4s3encab de4s3encad de4s3encaj de4s3enc\xc3\xa1j de4s3encall de4s3enc\xc3\xa1ll de4s3encam de3sencant de4s3encap de4s3encar de4s3enc\xc3\xa1r de4s3ench de4s3encl de4s3enco de4s3encr de4s3encu de4s3end de3senfad de3senf\xc3\xa1d de4s3enfi de4s3enfo de4s3enf\xc3\xb3 de3senfren de4s3enfund de4s3enfur de4s3enganch de3senga\xc3\xb1 de3seng\xc3\xa1\xc3\xb1 de4s3engar de4s3engas de4s3engom de4s3engoz de4s3engra de4s3enhebr de4s3enj de4s3enlad de4s3enlaz de4s3enlo de4s3enm de4s3enr de4s3ens de4s3enta de3sentend de4s3enter de3sentien de3senti\xc3\xa9n de4s3entier de4s3enti\xc3\xa9r de4s3ento de4s3entr de4s3entu de4s3envain de3senvolvim de3seo de4s3eq de3s4erci de3s4ert de3s4\xc3\xa9rt de4s3espa de3sesper de3sesperac de4s3esperanz de4s3estabil de4s3estim de3sider de3sidia de3sidio de3siert de3sign de3sigual de3silusi de4s3imagin de4s3iman de4s3impon de4s3impres de4s3impresX de4s3incent de4s3inclin de4s3incorp de4s3incrust de3sinenc de3sinfec de4s3infl de4s3inflam de4s3inform de4s3inhib de4s3insect de4s3instal de3s4integr de3s4inter de4s3intox de4s3inver de3sisten de4s3obedec de4s3oblig de4s3obstr de3socup de4s3odor de3solac de3solad de3soll de3sonce de4s3orde de4s3\xc3\xb3rde de4s3orej de3s4oseg de4s3ova de4s3ovi de4s3oxi de4s3oye de4s3oy\xc3\xa9 de4s3ub4ic de3s4ubstan de3su3dan de3su3dar de3su3das de3suell de4s3unier de4s3unim de4s3unir de3s4ustan 2df 2d3f2t 2dg 2d3g2n 2d1h 2dj 2dk 2dl 2dm 2d3m2n 2dn dodeca1a2 dodeca1\xc3\xa12 dodeca1e2 dodeca1\xc3\xa92 dodeca1h dodeca1i2 dodeca1\xc3\xad2 dodeca1o2 dodeca1\xc3\xb32 dodeca1u2 dodeca1\xc3\xba2 2dp 2d3p2n 2d3p2s 2d3p2t 2dq d2r 2dr_ 2ds 2dt 2d3t2s 2d3t2z 2dv 2dw 2dx 2dy 2dz 4e_ 4\xc3\xa9_ ea3cia_ ea3cias_ ea3cio_ ea3cios_ 4eadla_ e4a3miento ecano1a2 ecano1\xc3\xa12 ecano1e2 ecano1\xc3\xa92 ecano1h ecano1i2 ecano1\xc3\xad2 ecano1o2 ecano1\xc3\xb32 ecano1u2 ecano1\xc3\xba2 eco1a2 eco1\xc3\xa12 eco1e2 eco1\xc3\xa92 eco1h eco1i2 eco1\xc3\xad2 eco1o2 eco1\xc3\xb32 eco1u2 eco1\xc3\xba2 ectro1a2 ectro1\xc3\xa12 ectro1e2 ectro1\xc3\xa92 ectro1h ectro1i2 ectro1\xc3\xad2 ectro1o2 ectro1\xc3\xb32 ectro1u2 ectro1\xc3\xba2 4ed_ 4edlas_ 4edle_ 4edles_ 4edlo_ 4edlos_ 4edme_ 4\xc3\xa9d3mela_ 4\xc3\xa9d3melas_ 4\xc3\xa9dmele_ 4\xc3\xa9dmeles_ 4\xc3\xa9dmelo_ 4\xc3\xa9dmelos_ 4ednos_ 4\xc3\xa9dnosla_ 4\xc3\xa9dnoslas_ 4\xc3\xa9dnosle_ 4\xc3\xa9dnosles_ 4\xc3\xa9dnoslo_ 4\xc3\xa9dnoslos_ 4\xc3\xa93drica_ 4\xc3\xa93dricas_ 4\xc3\xa93drico_ 4\xc3\xa93dricos_ 4e3dro_ 4e3dros_ 4\xc3\xa9dsela_ 4\xc3\xa9dselas_ 4\xc3\xa9dsele_ 4\xc3\xa9dseles_ 4\xc3\xa9dselo_ 4\xc3\xa9dselos_ 4edte_ 4\xc3\xa9d3tela_ 4\xc3\xa9d3telas_ 4\xc3\xa9dtele_ 4\xc3\xa9dteles_ 4\xc3\xa9dtelo_ 4\xc3\xa9dtelos_ 4eedla_ 4\xc3\xa9is_ 4emboca emi2o2 4e3mos_ 4en_ endo1a2 endo1\xc3\xa12 endo1e2 endo1\xc3\xa92 endo1h endo1i2 endo1\xc3\xad2 endo1o2 endo1\xc3\xb32 endo1u2 endo1\xc3\xba2 ento1a2 ento1\xc3\xa12 ento1e2 ento1\xc3\xa92 ento1h ento1i2 ento1\xc3\xad2 ento1o2 ento1\xc3\xb32 ento1u2 ento1\xc3\xba2 entre1a2 entre1\xc3\xa12 entre1e2 entre1\xc3\xa92 entre1h entre1i2 entre1\xc3\xad2 entre1o2 entre1\xc3\xb32 entre1u2 entre1\xc3\xba2 4eos_ 4\xc3\xa9osla_ 4\xc3\xa9oslas_ 4\xc3\xa9osle_ 4\xc3\xa9osles_ 4\xc3\xa9oslo_ 4\xc3\xa9oslos_ 4er_ 4e3r\xc3\xa1_ e5r4a3ba_ e5r4a3bais_ e5r4\xc3\xa13bamos_ e5r4a3ban_ e5r4a3bas_ 4e3ra3ble_ 4e3ra3blemente_ 4e3ra3bles_ e5r4ad_ e5r4a3da_ e5r4a3das_ e5r4a3do_ e5r4a3dor_ e5r4a3dora_ e5r4a3doras_ e5r4a3dores_ e5r4a3dos_ e5r4\xc3\xa1is_ e5r4a3mos_ e5r4an_ 4e3r\xc3\xa1n_ e5r4a3ra_ e5r4a3r\xc3\xa1_ e5r4a3rais_ e5r4\xc3\xa13ramos_ e5r4a3ran_ e5r4a3r\xc3\xa1n_ e5r4a3ras_ e5r4a3r\xc3\xa1s_ e5r4a3re_ e5r4a3r\xc3\xa9_ e5r4a3reis_ e5r4a3r\xc3\xa9is_ e5r4a3remos_ e5r4\xc3\xa13remos_ e5r4a3ren_ e5r4a3res_ e5r4a3r\xc3\xa9s_ e5r4a3r\xc3\xada_ e5r4a3r\xc3\xadais e5r4a3r\xc3\xadamos_ e5r4a3r\xc3\xadan_ e5r4a3r\xc3\xadas_ e5r4a3r\xc3\xads_ e5r4a3ron_ e5r4as_ 4e3r\xc3\xa1s_ e5r4a3se_ e5r4a3seis_ e5r4\xc3\xa13semos_ e5r4a3sen_ e5r4a3ses_ e5r4aste_ e5r4asteis_ e5r4astes_ e5r4ates_ 4e3r\xc3\xa9_ 4e3r\xc3\xa9is_ 4e3re3mos_ 4e3r\xc3\xa9s_ 4e3r\xc3\xada_ 4e3r\xc3\xadais_ 4e3r\xc3\xadamos_ 4e3r\xc3\xadan_ 4e3r\xc3\xadas_ 4e3rior_ 4e3riora_ 4e3rioras_ 4e3riores_ 4e3rioridad_ 4e3rioridades_ 4e3riormente_ 4e3r\xc3\xads_ 4erla_ 4erlas_ 4erle_ 4erles_ 4erlo_ 4erlos_ 4erme_ 4\xc3\xa9r3mela_ 4\xc3\xa9r3melas_ 4\xc3\xa9rmele_ 4\xc3\xa9rmeles_ 4\xc3\xa9rmelo_ 4\xc3\xa9rmelos_ 4ernos_ 4\xc3\xa9rnosla_ 4\xc3\xa9rnoslas_ 4\xc3\xa9rnosle_ 4\xc3\xa9rnosles_ 4\xc3\xa9rnoslo_ 4\xc3\xa9rnoslos_ 4e3ros_ 4\xc3\xa93rosla_ 4\xc3\xa93roslas_ 4\xc3\xa93rosle_ 4\xc3\xa93rosles_ 4\xc3\xa93roslo_ 4\xc3\xa93roslos_ 4erse_ 4\xc3\xa9rsela_ 4\xc3\xa9rselas_ 4\xc3\xa9rsele_ 4\xc3\xa9rseles_ 4\xc3\xa9rselo_ 4\xc3\xa9rselos_ 4erte_ 4\xc3\xa9r3tela_ 4\xc3\xa9r3telas_ 4\xc3\xa9rtele_ 4\xc3\xa9rteles_ 4\xc3\xa9rtelo_ 4\xc3\xa9rtelos_ 4\xc3\xa9s 4es_ euco1a2 euco1\xc3\xa12 euco1e2 euco1\xc3\xa92 euco1h euco1i2 euco1\xc3\xad2 euco1o2 euco1\xc3\xb32 euco1u2 euco1\xc3\xba2 euro1a2 euro1\xc3\xa12 euro1e2 euro1\xc3\xa92 euro1h euro1i2 euro1\xc3\xad2 euro1o2 euro1\xc3\xb32 euro1u2 euro1\xc3\xba2 expoli4 extra1a2 extra1\xc3\xa12 extra1e2 extra1\xc3\xa92 extra1h extra1i2 extra1\xc3\xad2 extra1o2 extra1\xc3\xb32 extra1u2 extra1\xc3\xba2 1f familia3ri 2fb 2fc 2fd 2ff 2fg 2f1h 2fj 2fk f2l 2fl_ 2fm 2fn fono1a2 fono1\xc3\xa12 fono1e2 fono1\xc3\xa92 fono1h fono1i2 fono1\xc3\xad2 fono1o2 fono1\xc3\xb32 fono1u2 fono1\xc3\xba2 foto1a2 foto1\xc3\xa12 foto1e2 foto1\xc3\xa92 foto1h foto1i2 foto1\xc3\xad2 foto1o2 foto1\xc3\xb32 foto1u2 foto1\xc3\xba2 2fp 2fq f2r 2fr_ 2fs 2ft 4ft_ 2fv 2fw 2fx 2fy 2fz 1g gastro1a2 gastro1\xc3\xa12 gastro1e2 gastro1\xc3\xa92 gastro1h gastro1i2 gastro1\xc3\xad2 gastro1o2 gastro1\xc3\xb32 gastro1u2 gastro1\xc3\xba2 2gb 2gc 2gd geo1a2 geo1\xc3\xa12 geo1e2 geo1\xc3\xa92 geo1h geo1i2 geo1\xc3\xad2 geo1o2 geo1\xc3\xb32 geo1u2 geo1\xc3\xba2 2gf 2gg 2g2h 2gj 2gk g2l 2gl_ gluco1a2 gluco1\xc3\xa12 gluco1e2 gluco1\xc3\xa92 gluco1h gluco1i2 gluco1\xc3\xad2 gluco1o2 gluco1\xc3\xb32 gluco1u2 gluco1\xc3\xba2 2gm 2gn 4gn_ 2gp 2gq g2r 2gr_ 2gs 2gt 2gv 2gw 2gx 2gy 2gz 2hb 2hc 2hd hecto1a2 hecto1\xc3\xa12 hecto1e2 hecto1\xc3\xa92 hecto1h hecto1i2 hecto1\xc3\xad2 hecto1o2 hecto1\xc3\xb32 hecto1u2 hecto1\xc3\xba2 helio1a2 helio1\xc3\xa12 helio1e2 helio1\xc3\xa92 helio1h helio1i2 helio1\xc3\xad2 helio1o2 helio1\xc3\xb32 helio1u2 helio1\xc3\xba2 hemato1a2 hemato1\xc3\xa12 hemato1e2 hemato1\xc3\xa92 hemato1h hemato1i2 hemato1\xc3\xad2 hemato1o2 hemato1\xc3\xb32 hemato1u2 hemato1\xc3\xba2 hemi1a2 hemi1\xc3\xa12 hemi1e2 hemi1\xc3\xa92 hemi1h hemi1i2 hemi1\xc3\xad2 hemi1o2 hemi1\xc3\xb32 hemi1u2 hemi1\xc3\xba2 hemo1a2 hemo1\xc3\xa12 hemo1e2 hemo1\xc3\xa92 hemo1h hemo1i2 hemo1\xc3\xad2 hemo1o2 hemo1\xc3\xb32 hemo1u2 hemo1\xc3\xba2 hexa1a2 hexa1\xc3\xa12 hexa1e2 hexa1\xc3\xa92 hexa1h hexa1i2 hexa1\xc3\xad2 hexa1o2 hexa1\xc3\xb32 hexa1u2 hexa1\xc3\xba2 2hf 2hg 2h1h hidro1a2 hidro1\xc3\xa12 hidro1e2 hidro1\xc3\xa92 hidro1h hidro1i2 hidro1\xc3\xad2 hidro1o2 hidro1\xc3\xb32 hidro1u2 hidro1\xc3\xba2 hipe2r1a2 hipe2r1\xc3\xa12 hipe2r1e2 hipe2r1\xc3\xa92 hipe2r1i2 hipe2r1\xc3\xad2 hipe2r1o2 hipe2r1\xc3\xb32 hipe2r3r hipe2r1u2 hipe2r1\xc3\xba2 histo1a2 histo1\xc3\xa12 histo1e2 histo1\xc3\xa92 histo1h histo1i2 histo1\xc3\xad2 histo1o2 histo1\xc3\xb32 histo1u2 histo1\xc3\xba2 2hj 2hk 2hl 2hm 2hn homo1a2 homo1\xc3\xa12 homo1e2 homo1\xc3\xa92 homo1h homo1i2 homo1\xc3\xad2 homo1o2 homo1\xc3\xb32 homo1u2 homo1\xc3\xba2 2hp 2hq 2hr 2hs 2ht 2hv 2hw 2hx 2hy 2hz 4\xc3\xad_ i2a_ 4\xc3\xada_ 4\xc3\xadais_ 4\xc3\xada3mos_ 4\xc3\xadan_ ia5res_ i2as_ 4\xc3\xadas_ 2i3ca_ 2i3cas_ 2i3co_ icono1a2 icono1\xc3\xa12 icono1e2 icono1\xc3\xa92 icono1h icono1i2 icono1\xc3\xad2 icono1o2 icono1\xc3\xb32 icono1u2 icono1\xc3\xba2 2i3cos_ 4\xc3\xad3da_ 4i2dal_ 4i2dales_ 4\xc3\xad3das_ 4i3deo_ 4i3deos_ 4\xc3\xad3do_ 4\xc3\xad3dos_ 4i4er_ 4i3ga_ 4i3g\xc3\xa1is_ 4i3g\xc3\xa13monos_ 4i3g\xc3\xa13monosla_ 4i3g\xc3\xa13monoslas_ 4i3g\xc3\xa13monosle_ 4i3g\xc3\xa13monosles_ 4i3g\xc3\xa13monoslo_ 4i3g\xc3\xa13monoslos_ 4i3g\xc3\xa13moos_ 4i3g\xc3\xa13moosla_ 4i3g\xc3\xa13mooslas_ 4i3g\xc3\xa13moosle_ 4i3g\xc3\xa13moosles_ 4i3g\xc3\xa13mooslo_ 4i3g\xc3\xa13mooslos_ 4i3gamos_ 4i3g\xc3\xa13mosela_ 4i3g\xc3\xa13moselas_ 4i3g\xc3\xa13mosele_ 4i3g\xc3\xa13moseles_ 4i3g\xc3\xa13moselo_ 4i3g\xc3\xa13moselos_ 4i3g\xc3\xa13mosla_ 4i3g\xc3\xa13moslas_ 4i3g\xc3\xa13mosle_ 4i3g\xc3\xa13mosles_ 4i3g\xc3\xa13moslo_ 4i3g\xc3\xa13moslos_ 4i3g\xc3\xa13mosme_ 4i3g\xc3\xa13mos3mela_ 4i3g\xc3\xa13mos3melas_ 4i3g\xc3\xa13mosmele_ 4i3g\xc3\xa13mosmeles_ 4i3g\xc3\xa13mosmelo_ 4i3g\xc3\xa13mosmelos_ 4i3g\xc3\xa13moste_ 4i3g\xc3\xa13mos3tela_ 4i3g\xc3\xa13mos3telas_ 4i3g\xc3\xa13mostele_ 4i3g\xc3\xa13mosteles_ 4i3g\xc3\xa13mostelo_ 4i3g\xc3\xa13mostelos_ 4i3gas_ 4i3g\xc3\xa1s_ 4i3go_ 4\xc3\xad3mos_ infra1a2 infra1\xc3\xa12 infra1e2 infra1\xc3\xa92 infra1h infra1i2 infra1\xc3\xad2 infra1o2 infra1\xc3\xb32 infra1u2 infra1\xc3\xba2 inter4\xc3\xa9s inter4esar inter4in inter4ino inter4ior intra1a2 intra1\xc3\xa12 intra1e2 intra1\xc3\xa92 intra1h intra1i2 intra1\xc3\xad2 intra1o2 intra1\xc3\xb32 intra1u2 intra1\xc3\xba2 i2o_ i2os_ 4\xc3\xadsmo_ 4\xc3\xadsmos_ iso1a2 iso1\xc3\xa12 iso1e2 iso1\xc3\xa92 iso1h iso1i2 iso1\xc3\xad2 iso1o2 iso1\xc3\xb32 iso1u2 iso1\xc3\xba2 4\xc3\xadsta_ 4\xc3\xadstas_ 4\xc3\xad4s3te_ 4\xc3\xads3teis_ 4\xc3\xad4s3tes_ 4\xc3\xadstica_ 4\xc3\xadsticas_ 4\xc3\xadstico_ 4\xc3\xadsticos_ 4\xc3\xad3tes_ 1j 2jb 2jc 2jd 2jf 2jg 2j1h 2jj 2jk 2jl 2jm 2jn 2jp 2jq 2jr 2js 2jt 2jv 2jw 2jx 2jy 2jz 1k 2kb 2kc 2kd 2kf 2kg 2k2h kilo1a2 kilo1\xc3\xa12 kilo1e2 kilo1\xc3\xa92 kilo1h kilo1i2 kilo1\xc3\xad2 kilo1o2 kilo1\xc3\xb32 kilo1u2 kilo1\xc3\xba2 2kj 2kk k2l 2kl_ 2km 2kn 2kp 2kq k2r 2kr_ 2ks 2kt 2kv 2kw 2kx 2ky 2kz 1l 2lb 2lc 2l3c2n 2l3c2t 2l3c2z 2ld 2lf 2l3f2t 2lg 2l3g2n 2l1h li5\xc3\xa1rea 2lj 2lk l4l 2ll_ 2lm 2l3m2n 2ln 2lp 2l3p2n 2l3p2s 2l3p2t 2lq 2lr 2ls 2lt 2l3t2s 2l3t2z 2lv 2lw 2lx 2ly 2lz 1m macro1a2 macro1\xc3\xa12 macro1e2 macro1\xc3\xa92 macro1h macro1i2 macro1\xc3\xad2 macro1o2 macro1\xc3\xb32 macro1u2 macro1\xc3\xba2 mal2 mal3b mal3c mal3d mal3f mal3g ma4l3h mal3m mal3p mal3q mal3s mal3t mal3v mante4a maxi1a2 maxi1\xc3\xa12 maxi1e2 maxi1\xc3\xa92 maxi1h maxi1i2 maxi1\xc3\xad2 maxi1o2 maxi1\xc3\xb32 maxi1u2 maxi1\xc3\xba2 2mb 2mc 2m3c2n 2m3c2t 2m3c2z 2md 4meable_ 4meables_ mega1a2 mega1\xc3\xa12 mega1e2 mega1\xc3\xa92 mega1h mega1i2 mega1\xc3\xad2 megalo1a2 megalo1\xc3\xa12 megalo1e2 megalo1\xc3\xa92 megalo1h megalo1i2 megalo1\xc3\xad2 megalo1o2 megalo1\xc3\xb32 megalo1u2 megalo1\xc3\xba2 mega1o2 mega1\xc3\xb32 mega1u2 mega1\xc3\xba2 melano1a2 melano1\xc3\xa12 melano1e2 melano1\xc3\xa92 melano1h melano1i2 melano1\xc3\xad2 melano1o2 melano1\xc3\xb32 melano1u2 melano1\xc3\xba2 3mente_ 4meo_ 2mf 2m3f2t 2mg 2m3g2n 2m1h micro1a2 micro1\xc3\xa12 micro1e2 micro1\xc3\xa92 micro1h micro1i2 micro1\xc3\xad2 micro1o2 micro1\xc3\xb32 micro1u2 micro1\xc3\xba2 mili1a2 mili1\xc3\xa12 mili4ar mili4ario mili1e2 mili1\xc3\xa92 mili1h mili1i2 mili1\xc3\xad2 mili1o2 mili1\xc3\xb32 mili1u2 mili1\xc3\xba2 mini1a2 mini1\xc3\xa12 mini4a5tur mini1e2 mini1\xc3\xa92 mini1h mini1i2 mini1\xc3\xad2 mini1o2 mini1\xc3\xb32 mini1u2 mini1\xc3\xba2 miria1a2 miria1\xc3\xa12 miria1e2 miria1\xc3\xa92 miria1h miria1i2 miria1\xc3\xad2 miria1o2 miria1\xc3\xb32 miria1u2 miria1\xc3\xba2 2mj 2mk 2ml 2mm 2m3m2n 2mn 4mn_ mono1a2 mono1\xc3\xa12 mono1e2 mono1\xc3\xa92 mono1h mono1i2 mono1\xc3\xad2 mono1o2 mono1\xc3\xb32 mono1u2 mono1\xc3\xba2 2mp 2m3p2n 2m3p2s 2m3p2t 2mq 2mr 2ms 2mt 2m3t2s 2m3t2z multi1a2 multi1\xc3\xa12 multi1e2 multi1\xc3\xa92 multi1h multi1i2 multi1\xc3\xad2 multi1o2 multi1\xc3\xb32 multi1u2 multi1\xc3\xba2 2mv 2mw 2mx 2my 2mz 1n namo1a2 namo1\xc3\xa12 namo1e2 namo1\xc3\xa92 namo1h namo1i2 namo1\xc3\xad2 namo1o2 namo1\xc3\xb32 namo1u2 namo1\xc3\xba2 2nb 2nc 2n3c2n 2n3c2t 2n3c2z 2nd necro1a2 necro1\xc3\xa12 necro1e2 necro1\xc3\xa92 necro1h necro1i2 necro1\xc3\xad2 necro1o2 necro1\xc3\xb32 necro1u2 necro1\xc3\xba2 neo1a2 neo1\xc3\xa12 neo1e2 neo1\xc3\xa92 neo1h neo1i2 neo1\xc3\xad2 neo1o2 neo1\xc3\xb32 neo1u2 neo1\xc3\xba2 neto1a2 neto1\xc3\xa12 neto1e2 neto1\xc3\xa92 neto1h neto1i2 neto1\xc3\xad2 neto1o2 neto1\xc3\xb32 neto1u2 neto1\xc3\xba2 2nf 2n3f2t 2ng 2n3g2n 2n1h 2nj 2nk 2nl 2nm 2n3m2n 2nn 2no_ norte1a2 norte1\xc3\xa12 norte1e2 norte1\xc3\xa92 norte1h norte1i2 norte1\xc3\xad2 norte1o2 norte1\xc3\xb32 norte1u2 norte1\xc3\xba2 2np 2n3p2n 2n3p2s 2n3p2t 2nq 2nr 2ns 2nt 2n3t2s 2n3t2z 2nv 2nw 2nx 2ny 2nz 1\xc3\xb1 2o_ octa1a2 octa1\xc3\xa12 octa1e2 octa1\xc3\xa92 octa1h octa1i2 octa1\xc3\xad2 octa1o2 octa1\xc3\xb32 octa1u2 octa1\xc3\xba2 octo1a2 octo1\xc3\xa12 octo1e2 octo1\xc3\xa92 octo1h octo1i2 octo1\xc3\xad2 octo1o2 octo1\xc3\xb32 octo1u2 octo1\xc3\xba2 4o2ica_ 4o2icas_ 4o2ico_ 4o2icos_ o4i3dal_ o4i3dales_ 4o2i3de_ o4i3dea_ o4i3deas_ 4o2i3des_ oligo1a2 oligo1\xc3\xa12 oligo1e2 oligo1\xc3\xa92 oligo1h oligo1i2 oligo1\xc3\xad2 oligo1o2 oligo1\xc3\xb32 oligo1u2 oligo1\xc3\xba2 4\xc3\xb33loga_ 4\xc3\xb33logas_ 4o3log\xc3\xada_ 4o3log\xc3\xadas_ 4o3l\xc3\xb3gica_ 4o3l\xc3\xb3gicamente_ 4o3l\xc3\xb3gicas_ 4o3l\xc3\xb3gico_ 4o3l\xc3\xb3gicos_ 4\xc3\xb33logo_ 4\xc3\xb33logos_ omni1a2 omni1\xc3\xa12 omni1e2 omni1\xc3\xa92 omni1h omni1i2 omni1\xc3\xad2 omni1o2 omni1\xc3\xb32 omni1u2 omni1\xc3\xba2 4\xc3\xb3n_ 4ones_ o2os_ 2os_ 2o3sa_ 2o3samente_ 2o3sas_ 2o3so_ 2o3sos_ 4\xc3\xb3steo_ 4\xc3\xb3steos_ 2\xc3\xb3tic 1p paleo1a2 paleo1\xc3\xa12 paleo1e2 paleo1\xc3\xa92 paleo1h paleo1i2 paleo1\xc3\xad2 paleo1o2 paleo1\xc3\xb32 paleo1u2 paleo1\xc3\xba2 para1a2 para1\xc3\xa12 para1e2 para1\xc3\xa92 para1h para1i2 para1\xc3\xad2 para2is_ para4\xc3\xadso para1o2 para1\xc3\xb32 para1u2 para1\xc3\xba2 para4ulata 2pb 2pc 4pc_ 2pd 4pedo4 penta1a2 penta1\xc3\xa12 penta1e2 penta1\xc3\xa92 penta1h penta1i2 penta1\xc3\xad2 penta1o2 penta1\xc3\xb32 penta1u2 penta1\xc3\xba2 pe5r4ante pe3r4e3mia perpon5d6r 2pf 2pg 2p1h piezo1a2 piezo1\xc3\xa12 piezo1e2 piezo1\xc3\xa92 piezo1h piezo1i2 piezo1\xc3\xad2 piezo1o2 piezo1\xc3\xb32 piezo1u2 piezo1\xc3\xba2 2pj 2pk p2l 2pl_ plan4c5t pluri1a2 pluri1\xc3\xa12 pluri1e2 pluri1\xc3\xa92 pluri1h pluri1i2 pluri1\xc3\xad2 pluri1o2 pluri1\xc3\xb32 pluri1u2 pluri1\xc3\xba2 2pm 2pn 4pn_ poi3de_ poi3des_ poli1a2 poli1\xc3\xa12 poli4andr poli4antea poli4arq poli4\xc3\xa1rq poli1e2 poli1\xc3\xa92 poli4\xc3\xa9ste poli1h poli1i2 poli1\xc3\xad2 poli1o2 poli1\xc3\xb32 poli4o5mie poli1u2 poli1\xc3\xba2 poli4u3r pos3ta_ pos3tas_ 2pp 2pq p2r 2pr_ pre3elig pre3elij pre3emin pre3exis preo3cup preo2c\xc3\xbap pre3ol\xc3\xad pre3opin proto1a2 proto1\xc3\xa12 proto1e2 proto1\xc3\xa92 proto1h proto1i2 proto1\xc3\xad2 proto1o2 proto1\xc3\xb32 proto1u2 proto1\xc3\xba2 2ps 3p2sic 3p2siq 2pt 4pt_ 4puta4 4puto4 2pv 2pw 2px 2py 2pz 1q 2qb 2qc 2qd 2qf 2qg 2q1h 2qj 2qk 2ql 2qm 2qn 2qp 2qq 2qr 2qs 2qt 2qv 2qw 2qx 2qy 2qz 1r radio1a2 radio1\xc3\xa12 radio1e2 radio1\xc3\xa92 radio1h radio1i2 radio1\xc3\xad2 radio1o2 radio1\xc3\xb32 radio1u2 radio1\xc3\xba2 ranco1a2 ranco1\xc3\xa12 ranco1e2 ranco1\xc3\xa92 ranco1h ranco1i2 ranco1\xc3\xad2 ranco1o2 ranco1\xc3\xb32 ranco1u2 ranco1\xc3\xba2 2rb 2rc 2r3c2n 2r3c2t 2r3c2z 2rd retro1a2 retro1\xc3\xa12 retro1e2 retro1\xc3\xa92 retro1h retro1i2 retro1\xc3\xad2 retro1o2 retro1\xc3\xb32 retro1u2 retro1\xc3\xba2 2rf 2r3f2t 2rg 2r3g2n 2r1h 2rj 2rk 2rl 2rm rmano1a2 rmano1\xc3\xa12 rmano1e2 rmano1\xc3\xa92 rmano1h rmano1i2 rmano1\xc3\xad2 rmano1o2 rmano1\xc3\xb32 rmano1u2 rmano1\xc3\xba2 2r3m2n 2rn romo1a2 romo1\xc3\xa12 romo1e2 romo1\xc3\xa92 romo1h romo1i2 romo1\xc3\xad2 romo1o2 romo1\xc3\xb32 romo1u2 romo1\xc3\xba2 2rp 2r3p2n 2r3p2s 2r3p2t 2rq r2r 2rr_ 2rs 2rt 2r3t2s 2r3t2z 2rv 2rw 2rx 2ry 2rz 1s 3sa_ san4c5t 3sas_ 2sb 2sc 2s3c2n 2s3c2t 2s3c2z 2sd semi1a2 semi1\xc3\xa12 semi1e2 semi1\xc3\xa92 semi1h semi1i2 semi1\xc3\xad2 semi1o2 semi1\xc3\xb32 semi1u2 semi1\xc3\xba2 seudo1a2 seudo1\xc3\xa12 seudo1e2 seudo1\xc3\xa92 seudo1h seudo1i2 seudo1\xc3\xad2 seudo1o2 seudo1\xc3\xb32 seudo1u2 seudo1\xc3\xba2 2sf 2s3f2t 2sg 2s3g2n 2s1h 2sj 2sk 2sl 2sm 2s3m2n 2sn sobre1a2 sobre1\xc3\xa12 sobre1e2 sobre1\xc3\xa92 sobre1h sobre1i2 sobre1\xc3\xad2 sobre1o2 sobre1\xc3\xb32 sobre1u2 sobre1\xc3\xba2 socio1a2 socio1\xc3\xa12 socio1e2 socio1\xc3\xa92 socio1h socio1i2 socio1\xc3\xad2 socio1o2 socio1\xc3\xb32 socio1u2 socio1\xc3\xba2 2sp 2s3p2n 2s3p2s 2s3p2t 2sq 2sr 2ss 2st s3tal_ s3ta3les_ s3te_ s3tes_ s3ti3lla_ s3ti3llas_ s3ti3ll\xc3\xb3n_ s3ti3llones_ s3tor_ s3tora_ s3toras_ s3tores_ 2s3t2s 2s3t2z su4d3oes sup6ra supe2r1a2 supe2r1\xc3\xa12 super4able super4aci\xc3\xb3n supe4r4a3r supe4r4\xc3\xa13r supe3r4\xc3\xa13vit_ supe3r4\xc3\xa13vits_ supe2r1e2 supe2r1\xc3\xa92 supe2r1i2 supe2r1\xc3\xad2 super4ior supe2r1o2 supe2r1\xc3\xb32 supe2r3r supe2r1u2 supe2r1\xc3\xba2 supra1a2 supra1\xc3\xa12 supra1e2 supra1\xc3\xa92 supra1h supra1i2 supra1\xc3\xad2 supra1o2 supra1\xc3\xb32 supra1u2 supra1\xc3\xba2 2sv 2sw 2sx 2sy 2sz 1t talmo1a2 talmo1\xc3\xa12 talmo1e2 talmo1\xc3\xa92 talmo1h talmo1i2 talmo1\xc3\xad2 talmo1o2 talmo1\xc3\xb32 talmo1u2 talmo1\xc3\xba2 2tb 2tc 2t3c2n 2t3c2t 2t3c2z 2td tele1a2 tele1\xc3\xa12 tele1e2 tele1\xc3\xa92 tele1h tele1i2 tele1\xc3\xad2 tele1o2 tele1\xc3\xb32 tele1u2 tele1\xc3\xba2 t4eo3nes_ 3te3ri3n 4te4r5i4nsu termo1a2 termo1\xc3\xa12 termo1e2 termo1\xc3\xa92 termo1h termo1i2 termo1\xc3\xad2 termo1o2 termo1\xc3\xb32 termo1u2 termo1\xc3\xba2 4teta_ 4tetas_ tetra1a2 tetra1\xc3\xa12 tetra1e2 tetra1\xc3\xa92 tetra1h tetra1i2 tetra1\xc3\xad2 tetra1o2 tetra1\xc3\xb32 tetra1u2 tetra1\xc3\xba2 2tf 2t3f2t 2tg 2t3g2n 2t1h ti2o3co ti2o3qu 2tj 2tk 2t2l 2tm 2t3m2n 2tn topo1a2 topo1\xc3\xa12 topo1e2 topo1\xc3\xa92 topo1h topo1i2 topo1\xc3\xad2 topo1o2 topo1\xc3\xb32 topo1u2 topo1\xc3\xba2 2tp 2t3p2n 2t3p2s 2t3p2t 2tq t2r 2tr_ tran4sacc trans4ar trans4e\xc3\xbante trans4iber trans4ici\xc3\xb3n trans4ido trans4igen trans4igir trans4istor trans4it trans4itab trans4itorio trans4ubsta tropo1a2 tropo1\xc3\xa12 tropo1e2 tropo1\xc3\xa92 tropo1h tropo1i2 tropo1\xc3\xad2 tropo1o2 tropo1\xc3\xb32 tropo1u2 tropo1\xc3\xba2 2ts 4ts_ 2tt 2t3t2s 2t3t2z 2tv 2tw t2x 2ty 2tz 4tz_ ultra1a2 ultra1\xc3\xa12 ultra1e2 ultra1\xc3\xa92 ultra1h ultra1i2 ultra1\xc3\xad2 ultra4\xc3\xadsmo ultra1o2 ultra1\xc3\xb32 ultra1u2 ultra1\xc3\xba2 u4teri 1v 2vb 2vc 2vd 2vf 2vg 2v1h 2vj 2vk v2l 2vl_ 2vm 2vn 2vp 2vq v2r 2vr_ 2vs 2vt 2vv 2vw 2vx 2vy 2vz 1w wa3s4h 2wb 2wc 2wd 2wf 2wg 2w1h 2wj 2wk w2l 2wl_ 2wm 2wn 2wp 2wq w2r 2wr_ 2ws 2wt 2wv 2ww 2wx 2wy 2wz 1x 2xb 2xc 2x3c2n 2x3c2t 2x3c2z 2xd xeno1a2 xeno1\xc3\xa12 xeno1e2 xeno1\xc3\xa92 xeno1h xeno1i2 xeno1\xc3\xad2 xeno1o2 xeno1\xc3\xb32 xeno1u2 xeno1\xc3\xba2 2xf 2x3f2t 2xg 2x3g2n 2x1h 2xj 2xk 2xl 2xm 2x3m2n 2xn 2xp 2x3p2n 2x3p2s 2x3p2t 2xq 2xr 2xs 2xt 2x3t2s 2x3t2z 2xv 2xw 2xx 2xy 2xz 1y 2yb 2yc 2y3c2n 2y3c2t 2y3c2z 2yd 2yf 2y3f2t 2yg 2y3g2n 2y1h 2yj 2yk 2yl 2ym 2y3m2n 2yn 2yp 2y3p2n 2y3p2s 2y3p2t 2yq 2yr 2ys 2yt 2y3t2s 2y3t2z 2yv 2yw 2yx 2yy 2yz 1z 2zb 2zc 2zd 2zf 2zg 2z1h 2zj 2zk 2zl 2zm 2zn 2zp 2zq 2zr 2zs 2zt 2zv 2zw 2zx 2zy 2zz";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/fi.php b/inc/3rdparty/libraries/mpdf/patterns/fi.php
deleted file mode 100644 (file)
index 5be3124..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/    
-*/
-
-$patterns="1ba 1be 1bi 1bo 1bu 1by 1da 1de 1di 1do 1du 1dy 1d\xc3\xa4 1d\xc3\xb6 1fa 1fe 1fi 1fo 1fu 1fy 1ga 1ge 1gi 1go 1gu 1gy 1g\xc3\xa4 1g\xc3\xb6 1ha 1he 1hi 1ho 1hu 1hy 1h\xc3\xa4 1h\xc3\xb6 1ja 1je 1ji 1jo 1ju 1jy 1j\xc3\xa4 1j\xc3\xb6 1ka 1ke 1ki 1ko 1ku 1ky 1k\xc3\xa4 1k\xc3\xb6 1la 1le 1li 1lo 1lu 1ly 1l\xc3\xa4 1l\xc3\xb6 1ma 1me 1mi 1mo 1mu 1my 1m\xc3\xa4 1m\xc3\xb6 1na 1ne 1ni 1no 1nu 1ny 1n\xc3\xa4 1n\xc3\xb6 1pa 1pe 1pi 1po 1pu 1py 1p\xc3\xa4 1p\xc3\xb6 1ra 1re 1ri 1ro 1ru 1ry 1r\xc3\xa4 1r\xc3\xb6 1sa 1se 1si 1so 1su 1sy 1s\xc3\xa4 1s\xc3\xb6 1ta 1te 1ti 1to 1tu 1ty 1t\xc3\xa4 1t\xc3\xb6 1va 1ve 1vi 1vo 1vu 1vy 1v\xc3\xa4 1v\xc3\xb6 1st2r \xc3\xa42y y1a2 y1o2 o1y \xc3\xb62y u1y2 y1u2 \xc3\xb63a2 \xc3\xb63o2 \xc3\xa43a2 \xc3\xa43o2 \xc3\xa41u2 \xc3\xb61u2 a1\xc3\xa4 a1\xc3\xb6 o1\xc3\xa4 o1\xc3\xb6 u1\xc3\xa42 u1\xc3\xb62 \xc3\xa42\xc3\xa4 \xc3\xb62\xc3\xb6 \xc3\xa42\xc3\xb6 \xc3\xb62\xc3\xa4 aa1i2 aa1e2 aa1o2 aa1u2 ee1a2 ee1i2 ee1u2 ee1y2 ii1a2 ii1e2 ii1o2 uu1a2 uu1e2 uu1o2 uu1i2 e1aa i1aa o1aa u1aa u1ee a1uu i1uu e1uu o1uu \xc3\xa4\xc3\xa41i \xc3\xa4\xc3\xa41e \xc3\xa4\xc3\xa43y i1\xc3\xa4\xc3\xa4 e1\xc3\xa4\xc3\xa4 y1\xc3\xa4\xc3\xa4 i1\xc3\xb6\xc3\xb6 a1ei a1oi e1ai i1au y1ei ai1a ai1e ai1o ai1u au1a au1e eu1a ie1a ie1o ie1y io1a2 io1e2 iu1a iu1e iu1o oi1a oi1e oi1o oi1u o1ui ou1e ou1o ue1a ui1e uo1a uo1u e1\xc3\xb62 \xc3\xb61e2 _\xc3\xa42 u2s yli1o2p ali1a2v 1sp2li alous1 keus1 rtaus1 2s1ohje 2s1a2sia 1a2sian 1a2siat 1a2sioi r2as l2as 2s1o2pisk 2n1o2pet 2s1a2loi 2n1o2pist 2s1o2pist 2s1o2sa 2n1o2sa alkei2s1 perus1 2s1i2dea_ 2s1i2dean 2s1e2sity 2n1e2dus 2s1ajatu 2s1ase 2s1apu 2s1y2rit _ydi2n1 _suu2r1a2 2s1y2hti 2n1otto 2n1oton 2n1anto 2n1anno 2n1a2jan 2n1aika 2n1o2mai 2n1y2lit 2s1a2len 2n1a2len 1a2siaka2s1 ulo2s1 2n1a2jo 2s1a2jo b2l 1b2lo bib3li b2r 1b2ri 1b2ro 1b2ru d2r 1d2ra f2l 1f2la f2r 1f2ra 1f2re g2l 1g2lo g2r 1g2ra k2l 1k2ra 1k2re 1k2ri 1k2v 1k2va p2l p2r 1p2ro c2l q2v 1q2vi sc2h ts2h ch2r";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/fr.php b/inc/3rdparty/libraries/mpdf/patterns/fr.php
deleted file mode 100644 (file)
index 335f85b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-       
-       Retrieved from http://extensions.services.openoffice.org/project/french-dictionary-reform1990
-       License: LGPL
-*/
-
-$patterns="'a1b2r 'a1g2n 'a1mi 'a1na 'a1po 'a2g3nat 'a4 'ab1r\xc3\xa9 'ab3r\xc3\xa9a 'ae3s4c2h 'ag1na 'ami1no 'amino1a2c 'an1ti 'ana3s4t2r 'anti1a2 'anti1e2 'anti1s2 'anti1\xc3\xa92 'anti2en1ne 'apo2s3ta 'ar1ge 'ar1pe 'ar3gent_ 'ar3pent_ 'as2ta 'e1n1a2 'e1n1o2 'e4 'eu2r1a2 'i1g2n 'i1n1a2 'i1n1e2 'i1n1i2 'i1n1o2 'i1n1u2 'i1n1\xc3\xa92 'i2g3ni 'i2g3n\xc3\xa9 'i2g4no 'i4 'in1s2tab 'in1te 'in2a3nit 'in2augur 'in2effab 'in2ept 'in2er 'in2exo1ra 'in2i3mi1ti 'in2i3q 'in2i3t 'in2o3cul 'in2ond 'in2u3l 'in2uit 'in2\xc3\xa93luc1ta 'in2\xc3\xa93nar1ra 'ina1ni 'inau1gu 'inef1fa 'ini1mi 'ino1cu 'ins1ta 'inte1ra2 'inte1re2 'inte1ri2 'inte1ro2 'inte1ru2 'inte1r\xc3\xa92 'inte4r3 'inters2 'in\xc3\xa91lu 'in\xc3\xa91na 'o1vi 'o4 'on1gu 'on3guent_ 'oua1ou 'ovi1s2c 'u4 'y4 '\xc3\xa24 '\xc3\xa84 '\xc3\xa94 '\xc3\xaa4 '\xc3\xae4 '\xc3\xb44 '\xc3\xbb4 _1ba _1bi _1c2h4 _1ci _1co _1cu _1da _1di _1do _1dy _1d\xc3\xa9 _1d\xc3\xa93s2o3d\xc3\xa9 _1ge _1k2h4 _1la _1ma _1mi _1mo _1m\xc3\xa9 _1no _1p2h4 _1p2l _1p2r _1p2sy1c2h _1pa _1pe _1po _1pu _1p\xc3\xa9 _1re _1r\xc3\xa9 _1s2c2h4 _1s2h4 _1sa _1se _1so _1su _1sy _1t2h4 _1t2r _1ta _a1b2r _a1g2n _a1mi _a1na _a1po _a2g3nat _a4 _ab1r\xc3\xa9 _ab3r\xc3\xa9a _ae3s4c2h _ag1na _ami1no _amino1a2c _an1ti _ana3s4t2r _anti1a2 _anti1e2 _anti1s2 _anti1\xc3\xa92 _anti2en1ne _apo2s3ta _ar1de _ar1ge _ar1pe _ar3dent_ _ar3gent_ _ar3pent_ _as2ta _bai1se _bai2se3main _baise1ma _bi1a2c _bi1a2t _bi1au _bi1u2 _bi2s1a2 _bio1a2 _c2h\xc3\xa8 _ch\xc3\xa81v2r _ch\xc3\xa82vre3feuil1le _ch\xc3\xa8v1re _ch\xc3\xa8vre1fe _ch\xc3\xa8vrefeuil2l _ci1sa _ci2s1alp _co1o2 _co2o3lie _com1me _com3ment_ _con1t2r _con4 _cons4 _cont1re _cont1re3ma\xc3\xaet1re _contre1ma _contre1s2c _contrema\xc3\xae1t2r _coo1li _cul4 _da1c2r _dac1ry _dacryo1a2 _di1a2cid _di1a2c\xc3\xa9 _di1a2mi _di1a2tom _di1ald _di1e2n _di2s3h _dia1ci _dia1to _do1le _do3lent_ _dy2s1a2 _dy2s1i2 _dy2s1o2 _dy2s1u2 _dy2s3 _d\xc3\xa91a2 _d\xc3\xa91io _d\xc3\xa91o2 _d\xc3\xa91sa _d\xc3\xa91se _d\xc3\xa91so _d\xc3\xa91su _d\xc3\xa92s _d\xc3\xa92s1i2 _d\xc3\xa92s1u2n _d\xc3\xa92s1\xc2\xbd _d\xc3\xa92s1\xc3\xa92 _d\xc3\xa93s2a3c2r _d\xc3\xa93s2a3tell _d\xc3\xa93s2as1t2r _d\xc3\xa93s2c _d\xc3\xa93s2ensib _d\xc3\xa93s2ert _d\xc3\xa93s2exu _d\xc3\xa93s2i3d _d\xc3\xa93s2i3g2n _d\xc3\xa93s2i3li _d\xc3\xa93s2i3nen _d\xc3\xa93s2i3r _d\xc3\xa93s2in1vo _d\xc3\xa93s2ist _d\xc3\xa93s2o3l _d\xc3\xa93s2o3pil _d\xc3\xa93s2orm _d\xc3\xa93s2orp _d\xc3\xa93s2ou1f2r _d\xc3\xa93s2p _d\xc3\xa93s2t _d\xc3\xa93s2\xc3\xa93g2r _d\xc3\xa9s2a3m _d\xc3\xa9sa1te _d\xc3\xa9sen1si _d\xc3\xa9si1ne _d\xc3\xa9so1pi _e1n1a2 _e1n1o2 _e4 _eu2r1a2 _gem1me _gem2ment_ _i1g2n _i1n1a2 _i1n1e2 _i1n1i2 _i1n1o2 _i1n1u2 _i1n1\xc3\xa92 _i2g3ni _i2g3n\xc3\xa9 _i2g4no _i4 _in1s2tab _in1te _in2a3nit _in2augur _in2effab _in2ept _in2er _in2exo1ra _in2i3mi1ti _in2i3q _in2i3t _in2o3cul _in2ond _in2u3l _in2uit _in2\xc3\xa93luc1ta _in2\xc3\xa93nar1ra _ina1ni _inau1gu _inef1fa _ini1mi _ino1cu _ins1ta _inte1ra2 _inte1re2 _inte1ri2 _inte1ro2 _inte1ru2 _inte1r\xc3\xa92 _inte4r3 _inters2 _in\xc3\xa91lu _in\xc3\xa91na _la1te _la3tent_ _ma1c2r _ma1g2n _ma1la _ma1le _ma1li _ma1lo _ma2c3k _ma2g3nici1de _ma2g3nificat _ma2g3num _ma2l1a2d1ro _ma2l1a2dres _ma2l1a2v _ma2l1ai1s\xc3\xa9 _ma2l1ap _ma2l1en _ma2l1int _ma2l1o2d _ma2l1oc _ma2r1x _mac1ro _macro1s2c _mag1ni _mag1nu _magni1ci _magni1fi _magnifi1ca _mala1d2r _malad1re _mil1li _mil3l _milli1am _mo1no _mono1a2 _mono1e2 _mono1i2 _mono1o2 _mono1s2 _mono1u2 _mono1\xc3\xa92 _mono1\xc3\xaf2d\xc3\xa9 _m\xc3\xa91go _m\xc3\xa91se _m\xc3\xa91su _m\xc3\xa91ta _m\xc3\xa91ta1s2ta _m\xc3\xa92g1oh _m\xc3\xa92s1es _m\xc3\xa92s1i _m\xc3\xa92s1u2s _m\xc3\xa92sa _m\xc3\xa93san _no1no _no2n1obs _o1vi _o4 _on1gu _on3guent_ _oua1ou _ovi1s2c _p1ha _p1lu _p1ro _p1r\xc3\xa9 _p1sy _pa1na _pa1ni _pa1no _pa1r2h _pa1ra _pa1re _pa1te _pa2n1a2f _pa2n1a2m\xc3\xa9 _pa2n1a2ra _pa2n1is _pa2n1o2p2h _pa2n1opt _pa2r1a2c2he _pa2r1a2c2h\xc3\xa8 _pa2r3h\xc3\xa9 _pa3rent_ _pa3tent_ _para1c2h _para1s2 _pe1r1a2 _pe1r1e2 _pe1r1i2 _pe1r1o2 _pe1r1u2 _pe1r1\xc3\xa92 _pe4r _pen2ta _pha1la _phalan3s2t _plu1ri _pluri1a _pon1te _pon2tet _pos1ti _pos2t1in _pos2t1o2 _pos2t3h _pos2t3r _post1s2 _pro1g2n _pro1s2c\xc3\xa9 _pro1\xc3\xa92 _pro2g3na1t2h _prog1na _prou3d2h _pr\xc3\xa91a2 _pr\xc3\xa91e2 _pr\xc3\xa91i2 _pr\xc3\xa91o2 _pr\xc3\xa91s2 _pr\xc3\xa91u2 _pr\xc3\xa91\xc3\xa92 _pr\xc3\xa92a3la _pr\xc3\xa92au _psyc2ho _psycho1a2n _pud1d2l _p\xc3\xa91ri _p\xc3\xa9ri1os _p\xc3\xa9ri1s2 _p\xc3\xa9ri1u2 _p\xc3\xa9ri2s3s _p\xc3\xa9ri2s3ta _re1s2 _re2s3c1ri _re2s3cap _re2s3ci1si _re2s3ci1so _re2s3cou _re2s3pect _re2s3pir _re2s3plend _re2s3pons _re2s3quil _re2s3s _re2s3t _re3s4t2r _re3s4tab _re3s4tag _re3s4tand _re3s4tat _re3s4tim _re3s4tip _re3s4toc _re3s4top _re3s4tu _re3s4ty _re3s4t\xc3\xa9n _re3s4t\xc3\xa9r _re4s5trein _re4s5trict _re4s5trin _res1c2r _res1ca _res1ci _res1co _res1p2l _res1pe _res1pi _res1po _res1q _res1se _res1ta _res1ti _res1to _res1t\xc3\xa9 _res3sent_ _resp1le _rest1re _rest1ri _r\xc3\xa91a2 _r\xc3\xa91e2 _r\xc3\xa91i2 _r\xc3\xa91o2 _r\xc3\xa91t2r _r\xc3\xa91\xc3\xa92 _r\xc3\xa92a3le _r\xc3\xa92a3lis _r\xc3\xa92a3lit _r\xc3\xa92aux _r\xc3\xa92el _r\xc3\xa92er _r\xc3\xa92i3fi _r\xc3\xa92uss _r\xc3\xa92\xc3\xa8r _r\xc3\xa9a1li _r\xc3\xa9t1ro _r\xc3\xa9tro1a2 _r\xc3\xa9u2 _s1ta _s1ti _sar1me _sar3ment_ _ser1me _ser3ment_ _seu2le _sou1ve _sou3vent_ _sta2g3n _stil3l _su1b2l _su1bi _su1bu _su1ri _su1ro _su2b1a2 _su2b1in _su2b1ur _su2b1\xc3\xa92 _su2b3limin _su2b3lin _su2b3lu _su2r1a2 _su2r1e2 _su2r1i2m _su2r1inf _su2r1int _su2r1of _su2r1ox _su2r1\xc3\xa92 _su2r3h _su3b2alt _su3b2\xc3\xa93r _su3r2a3t _su3r2eau _su3r2ell _su3r2et _sub1li _subli1mi _syn1g2n _syn2g3na1t2h _syng1na _t1ri _ta1le _ta3lent_ _tri1a2c _tri1a2n _tri1a2t _tri1o2n _u4 _y4 _\xc3\xa24 _\xc3\xa84 _\xc3\xa91mi _\xc3\xa94 _\xc3\xa9mi1ne _\xc3\xa9mi3nent_ _\xc3\xaa4 _\xc3\xae4 _\xc3\xb44 _\xc3\xbb4 1a2nesth\xc3\xa91si 1alcool 1b2l 1b2r 1ba 1be 1bi 1bo 1bu 1by 1b\xc3\xa2 1b\xc3\xa8 1b\xc3\xa9 1b\xc3\xaa 1b\xc3\xae 1b\xc3\xb4 1b\xc3\xbb 1c2h 1c2k 1c2l 1c2r 1ca 1ce 1ci 1co 1cu 1cy 1c\xc2\xbd0 1c\xc3\xa2 1c\xc3\xa8 1c\xc3\xa9 1c\xc3\xaa 1c\xc3\xae 1c\xc3\xb4 1c\xc3\xbb 1d2'2 1d2r 1da 1de 1di 1do 1du 1dy 1d\xc3\xa2 1d\xc3\xa8 1d\xc3\xa9 1d\xc3\xaa 1d\xc3\xae 1d\xc3\xb4 1d\xc3\xbb 1f2l 1f2r 1fa 1fe 1fi 1fo 1fu 1fy 1f\xc3\xa2 1f\xc3\xa8 1f\xc3\xa9 1f\xc3\xaa 1f\xc3\xae 1f\xc3\xb4 1f\xc3\xbb 1g2ha 1g2he 1g2hi 1g2ho 1g2hy 1g2l 1g2n 1g2r 1ga 1ge 1gi 1go 1gu 1gy 1g\xc3\xa2 1g\xc3\xa8 1g\xc3\xa9 1g\xc3\xaa 1g\xc3\xae 1g\xc3\xb4 1g\xc3\xbb 1ha 1he 1hi 1ho 1hu 1hy 1h\xc3\xa2 1h\xc3\xa8 1h\xc3\xa9 1h\xc3\xaa 1h\xc3\xae 1h\xc3\xb4 1h\xc3\xbb 1informat 1j 1k2h 1k2r 1ka 1ke 1ki 1ko 1ku 1ky 1k\xc3\xa2 1k\xc3\xa8 1k\xc3\xa9 1k\xc3\xaa 1k\xc3\xae 1k\xc3\xb4 1k\xc3\xbb 1la 1le 1li 1lo 1lu 1ly 1l\xc3\xa0 1l\xc3\xa2 1l\xc3\xa8 1l\xc3\xa9 1l\xc3\xaa 1l\xc3\xae 1l\xc3\xb4 1l\xc3\xbb 1m2n\xc3\xa8s 1m2n\xc3\xa91mo 1m2n\xc3\xa91si 1ma 1me 1mi 1mo 1mu 1my 1m\xc2\xbd0 1m\xc3\xa2 1m\xc3\xa8 1m\xc3\xa9 1m\xc3\xaa 1m\xc3\xae 1m\xc3\xb4 1m\xc3\xbb 1na 1ne 1ni 1no 1nu 1ny 1n\xc2\xbd0 1n\xc3\xa2 1n\xc3\xa8 1n\xc3\xa9 1n\xc3\xaa 1n\xc3\xae 1n\xc3\xb4 1n\xc3\xbb 1octet 1p2h 1p2l 1p2neu 1p2n\xc3\xa9 1p2r 1p2sy1c2h 1p2t\xc3\xa8r 1p2t\xc3\xa9r 1pa 1pe 1pi 1po 1pu 1py 1p\xc3\xa2 1p\xc3\xa8 1p\xc3\xa9 1p\xc3\xaa 1p\xc3\xae 1p\xc3\xb4 1p\xc3\xbb 1q 1r2h 1ra 1re 1ri 1ro 1ru 1ry 1r\xc3\xa2 1r\xc3\xa8 1r\xc3\xa9 1r\xc3\xaa 1r\xc3\xae 1r\xc3\xb4 1r\xc3\xbb 1s2c2h 1s2ca1p2h 1s2cl\xc3\xa9r 1s2cop 1s2h 1s2lav 1s2lov 1s2patia 1s2perm 1s2ph\xc3\xa8r 1s2ph\xc3\xa9r 1s2piel 1s2piros 1s2por 1s2tandard 1s2tein 1s2tigm 1s2to1c2k 1s2tomos 1s2tro1p2h 1s2truc1tu 1s2ty1le 1sa 1se 1si 1so 1su 1sy 1s\xc2\xbd0 1s\xc3\xa2 1s\xc3\xa8 1s\xc3\xa9 1s\xc3\xaa 1s\xc3\xae 1s\xc3\xb4 1s\xc3\xbb 1t2h 1t2r 1ta 1te 1ti 1to 1tu 1ty 1t\xc3\xa0 1t\xc3\xa2 1t\xc3\xa8 1t\xc3\xa9 1t\xc3\xaa 1t\xc3\xae 1t\xc3\xb4 1t\xc3\xbb 1v2r 1va 1ve 1vi 1vo 1vu 1vy 1v\xc3\xa2 1v\xc3\xa8 1v\xc3\xa9 1v\xc3\xaa 1v\xc3\xae 1v\xc3\xb4 1v\xc3\xbb 1w2r 1wa 1we 1wi 1wo 1wu 1za 1ze 1zi 1zo 1zu 1zy 1z\xc3\xa8 1z\xc3\xa9 1\xc3\xa7 1\xc3\xa92drie 1\xc3\xa92drique 1\xc3\xa92lec1t2r 1\xc3\xa92l\xc3\xa9ment 1\xc3\xa92nerg 2'2 2b2lent_ 2b2rent_ 2bent_ 2c1k3h 2c2kent_ 2c2lent_ 2c2rent_ 2cent_ 2chb 2chent_ 2chg 2chm 2chn 2chp 2chs 2cht 2chw 2ckb 2ckf 2ckg 2ckp 2cks 2ckt 2d2lent_ 2d2rent_ 2dent_ 2f2lent_ 2f2rent_ 2fent_ 2g2lent_ 2g2nent_ 2g2rent_ 2gent_ 2guent_ 2jent_ 2jk 2kent_ 2lent_ 2nent_ 2p2lent_ 2p2rent_ 2pent_ 2phent_ 2phn 2phs 2pht 2quent_ 2r3heur 2r3hy1d2r 2rent_ 2s2chs 2s3hom 2sent_ 2shent_ 2shm 2shr 2shs 2t2rent_ 2t3heur 2tent_ 2thl 2thm 2thn 2ths 2v2rent_ 2vent_ 2went_ 2xent_ 2zent_ 3d2hal 3d2houd 3ph2ta1l\xc3\xa9 3ph2tis 4b4le_ 4b4les_ 4b4re_ 4b4res_ 4be_ 4bes_ 4c4he_ 4c4hes_ 4c4ke_ 4c4kes_ 4c4le_ 4c4les_ 4c4re_ 4c4res_ 4ce_ 4ces_ 4ch_ 4ch4le_ 4ch4les_ 4ch4re_ 4ch4res_ 4ck_ 4d4re_ 4d4res_ 4de_ 4des_ 4f4le_ 4f4les_ 4f4re_ 4f4res_ 4fe_ 4fes_ 4g4le_ 4g4les_ 4g4ne_ 4g4nes_ 4g4re_ 4g4res_ 4ge_ 4ges_ 4gue_ 4gues_ 4he_ 4hes_ 4je_ 4jes_ 4ke_ 4kes_ 4kh_ 4le_ 4les_ 4me_ 4mes_ 4ne_ 4nes_ 4p4he_ 4p4hes_ 4p4le_ 4p4les_ 4p4re_ 4p4res_ 4pe_ 4pes_ 4ph_ 4ph4le_ 4ph4les_ 4ph4re_ 4ph4res_ 4que_ 4ques_ 4r4he_ 4r4hes_ 4re_ 4res_ 4s4c4he_ 4s4c4hes_ 4s4ch_ 4s4he_ 4s4hes_ 4se_ 4ses_ 4sh_ 4t4he_ 4t4hes_ 4t4re_ 4t4res_ 4te_ 4tes_ 4th_ 4th4re_ 4th4res_ 4v4re_ 4v4res_ 4ve_ 4ves_ 4we_ 4wes_ 4ze_ 4zes_ a1b\xc3\xae a1la a1ma a1ne a1ni a1po a1vi a1\xc3\xa82d1re a2l1al1gi a2s3t1ro ab1se ab2h ab3sent_ abs1ti absti1ne absti3nent_ ab\xc3\xae1me ab\xc3\xae2ment_ ac1ce ac1q ac3cent_ acquies1ce acquies4cent_ ad2h ai1me ai2ment_ al1co amal1ga amalga1me amalga2ment_ an1ti anes1t2h anest1h\xc3\xa9 ani1me ani2ment_ anti1fe antifer1me antifer3ment_ ap1pa apo2s3t2r appa1re appa3rent_ ar1c ar1c2h ar1me ar1mi ar2ment_ arc2hi archi1\xc3\xa92pis archi\xc3\xa91pi armil5l as1me as1t2r as2ment_ au1me au2ment_ avil4l a\xc3\xa81d2r b1le b1re b1ru bou1me bou1ti bou2ment_ boutil3l bru1me bru2ment_ c1ci c1ke c1la c1le c1re c2ha c2he c2hi c2ho c2hu c2hy c2h\xc3\xa2 c2h\xc3\xa8 c2h\xc3\xa9 c2h\xc3\xaa c2h\xc3\xae c2h\xc3\xb4 c2h\xc3\xbb ca1pi ca1r\xc3\xaa ca3ou3t2 capil3l car\xc3\xaa1me car\xc3\xaa2ment_ cci1de cci3dent_ ch1le ch1lo ch1re ch1ro ch2l ch2r che1vi chevil4l chien1de chien3dent_ chlo1ra chlo1r\xc3\xa9 chlo2r3a2c chlo2r3\xc3\xa92t chro1me chro2ment_ cil3l cla1me cla2ment_ co1a2d co1ac1q co1acc co1ap co1ar co1assoc co1assur co1au co1ax co1ef co1en co1ex co1g2n co1nu co1\xc3\xa92 co2g3ni1ti co2nurb coas1so coas1su cog1ni com1p\xc3\xa9 comp\xc3\xa91te comp\xc3\xa93tent_ con1fi con1ni con1ti confi1de confi3dent_ conni1ve conni3vent_ conti1ne conti3nent_ contin1ge contin3gent_ cor1pu corpu1le corpu3lent_ cur1re cur3rent_ cy1ri cyril3l d1d2h d1ha d1ho d1le d1re d1s2 da1me da2ment_ di1li di2s3cop dia1p2h diaph1ra diaph2r diaphrag1me diaphrag2ment_ dili1ge dili3gent_ dis1co dis1si dis1ti dissi1de dissi3dent_ distil3l d\xc3\xa91ca d\xc3\xa91t2r d\xc3\xa9ca1de d\xc3\xa9ca3dent_ d\xc3\xa9t1ri d\xc3\xa9tri1me d\xc3\xa9tri3ment_ e1ni e2n1i2v2r e2s3c2h e2s3cop en1t2r ent1re entre1ge entre3gent_ er1me er2ment_ es1ce es1co es1ti es3cent_ esti1me esti2ment_ eu1s2tat eus1ta ex1t2r ext1ra1 extra2c extra2i f1la f1le f1re f1ri f1s2 fa1me fa2ment_ fi1c2h fic2hu fichu1me fichu3ment_ fir1me fir2ment_ flam1me flam2ment_ fri1ti fritil3l fu1me fu2ment_ f\xc3\xa91cu f\xc3\xa9cu1le f\xc3\xa9cu3lent_ g1le g1ne g1ra g1re g1s2 gil3l gram1me gram2ment_ gran1di grandi1lo grandilo1q grandilo3quent_ hil3l hu1me hu2ment_ hy1pe hy1po hype1ra2 hype1re2 hype1ri2 hype1ro2 hype1ru2 hype1r\xc3\xa92 hype4r1 hypers2 hypo1a2 hypo1e2 hypo1i2 hypo1o2 hypo1s2 hypo1u2 hypo1\xc3\xa92 h\xc3\xa91mi h\xc3\xa91mo h\xc3\xa9mi1\xc3\xa9 h\xc3\xa9mo1p2t i1al1gi i1arth2r i1b2r i1oxy i1s2c2h i1s2tat i1va i1\xc3\xa82d1re i2s3c2h\xc3\xa9 i2s3chia i2s3chio iar1t2h ib1ri ibril3l il2l im1ma im1mi im1po im1pu imma1ne imma3nent_ immi1ne immi3nent_ immis1ce immis4cent_ impo1te impo3tent_ impu1de impu3dent_ in1ci in1di in1do in1du in1fo in1no in1so in1te in1ti inci1de inci3dent_ indi1ge indi3gent_ indo1le indo3lent_ indul1ge indul3gent_ infor1ma inno1ce inno3cent_ ins1ti inso1le inso3lent_ instil3l intel1li intelli1ge intelli3gent_ inti1me inti2ment_ io1a2ct is1ce is1ta is3cent_ isc2hi iva1le iva3lent_ i\xc3\xa81d2r ja1ce ja3cent_ l1li l1lu l1me l1s2t l2ment_ l3lion la1w2r la2w3re lil3l llu1me llu2ment_ m1n\xc3\xa8 m1n\xc3\xa9 m1s2 mi1me mi2ment_ mil1le mil3l mil4let mit1te mit3tent_ mo1no mon1t2r mon2t3r\xc3\xa9al mono1va monova1le monova3lent_ mont1r\xc3\xa9 moye1n\xc3\xa2 moye2n1\xc3\xa22g mu1ni muni1fi munifi1ce munifi3cent_ m\xc3\xa91co m\xc3\xa9con1te m\xc3\xa9con3tent_ n1sa n1x n3s2at_ n3s2ats_ nu1t2r nut1ri nutri1me nutri3ment_ o1b2l o1d2l o1g2n o1io1ni o1pu o1s2tas o1s2tat o1s2tim o1s2tom o1s2tra1tu o1s2trad o1s2triction o1s2t\xc3\xa91ro o1\xc3\xa82d1re o2b3long o2g3no1si o2g3nomo1ni ob1lo oc1te og1no ogno1mo om1bu om1me om1ni om2ment_ ombud2s3 omni1po omni1s2 omnipo1te omnipo3tent_ opu1le opu3lent_ or1me or2ment_ os1t2r os1ta os1ti os1to os1t\xc3\xa9 ost1ra ost1ri ostric1ti oxy1a2 o\xc3\xa81d2r p1he p1ho p1le p1lu p1ne p1re p1ri p1ro p1ru p1r\xc3\xa9 p1sy p1t\xc3\xa8 p1t\xc3\xa9 pa1l\xc3\xa9 pa1pi pal\xc3\xa9o1\xc3\xa92 papil1lo papil2l papil3la papil3le papil3li papil3lom pe1r3h per1ma per1ti perma1ne perma3nent_ perti1ne perti3nent_ ph1le ph1re ph1ta ph1ti ph2l ph2r pho1to photo1s2 pi1ri piril3l plu1me plu2ment_ po1ast1re po1ly poas1t2r poly1a2 poly1e2 poly1i2 poly1o2 poly1s2 poly1u2 poly1va poly1\xc3\xa82 poly1\xc3\xa92 polyva1le polyva3lent_ pri1va privat1do privatdo1ce privatdo1ze privatdo3cent_ privatdo3zent_ pro2s3tat pros1ta pro\xc3\xa91mi pro\xc3\xa9mi1ne pro\xc3\xa9mi3nent_ pru1de pru3dent_ pr\xc3\xa91se pr\xc3\xa93sent_ pr\xc3\xa9\xc3\xa91mi pr\xc3\xa9\xc3\xa9mi1ne pr\xc3\xa9\xc3\xa9mi3nent_ pu1g2n pu1pi pu1si pu2g3nab1le pu2g3nac pug1na pugna1b2l pupil3l pusil3l p\xc3\xa91nu p\xc3\xa91r2\xc3\xa92q p\xc3\xa91r\xc3\xa9 p\xc3\xa92nul qua1me qua2ment_ r1ci r1he r1hy r1mi ra1di ra1me ra2ment_ radio1a2 rai1me rai3ment_ rcil4l re1le re1li re1pe re3lent_ re3pent_ reli1me reli2ment_ ri1me ri2ment_ rin1ge rin3gent_ rmil4l ru1le ru3lent_ ry1t2h ry2thm ryth1me ryth2ment_ r\xc3\xa91ge r\xc3\xa91ma r\xc3\xa91su r\xc3\xa91ti r\xc3\xa93gent_ r\xc3\xa9ma1ne r\xc3\xa9ma3nent_ r\xc3\xa9sur1ge r\xc3\xa9sur3gent_ r\xc3\xa9ti1ce r\xc3\xa9ti3cent_ s1c2l s1ca s1co s1he s1ho s1la s1lo s1p2h s1pa s1pe s1pi s1po s1t2r s1ta s1te s1ti s1to s1ty s1t\xc3\xa9 sc1l\xc3\xa9 sc2he se1mi semil4l ser1ge ser1pe ser3gent_ ser3pent_ ses1q sesqui1a2 sla1lo slalo1me slalo2ment_ sp1h\xc3\xa8 sp1h\xc3\xa9 spa1ti spi1ro spo1ru sporu1le sporu4lent_ st1ro st1ru stan1da sto1mo st\xc3\xa91r\xc3\xa9 st\xc3\xa9r\xc3\xa9o1s2 su1b2l su1me su1pe su1ra su1r\xc3\xa9 su2ment_ su3r2ah sub1li sub1s2 subli1me subli2ment_ suc1cu succu1le succu3lent_ supe1ro2 supe4r1 supers2 sur\xc3\xa91mi sur\xc3\xa9mi1ne sur\xc3\xa9mi3nent_ t1c2h t1he t1ra t1re t1ri t1ru t1t2l ta1c2h ta1me ta2ment_ tac2hy tachy1a2 tan1ge tan3gent_ tc2hi tchin3t2 tem1p\xc3\xa9 temp\xc3\xa91ra temp\xc3\xa9ra1me temp\xc3\xa9ra3ment_ ter1ge ter3gent_ tes1ta testa1me testa3ment_ th1re th1ri th2r ther1mo thermo1s2 thril3l to1me to2ment_ tor1re tor3rent_ tran2s1a2 tran2s1o2 tran2s1u2 tran2s3h tran2s3p tran3s2act tran3s2ats trans1pa transpa1re transpa3rent_ tri1de tri3dent_ tru1cu trucu1le trucu3lent_ tu1me tu2ment_ tung2s3 tur1bu turbu1le turbu3lent_ t\xc3\xa91l\xc3\xa9 t\xc3\xa9l\xc3\xa91e2 t\xc3\xa9l\xc3\xa91i2 t\xc3\xa9l\xc3\xa91o2b t\xc3\xa9l\xc3\xa91o2p t\xc3\xa9l\xc3\xa91s2 u1ci u1ni u1vi u2s3t2r ucil4l ue1vi uevil4l uni1a2x uni1o2v uvil4l v1re va1ci va1ni vacil4l vanil1li vanil2l vanil3lin vanil3lis ve1ni ven1t2r veni1me veni2ment_ vent1ri ventri1po ventripo1te ventripo3tent_ vi1di vidi1me vidi2ment_ vil3l vol1ta vol2t1amp v\xc3\xa91lo v\xc3\xa9lo1s2ki wa2g3n xil3l y1al1gi y1as1t2h y1s2tom ys1to \xc3\xa21me \xc3\xa22ment_ \xc3\xa81me \xc3\xa82ment_ \xc3\xa91ce \xc3\xa91ci \xc3\xa91cu \xc3\xa91d2r \xc3\xa91de \xc3\xa91le \xc3\xa91li \xc3\xa91lo \xc3\xa91l\xc3\xa9 \xc3\xa91mi \xc3\xa91ne \xc3\xa91ni \xc3\xa91pi \xc3\xa91q \xc3\xa91re \xc3\xa93cent_ \xc3\xa93dent_ \xc3\xa93quent_ \xc3\xa93rent_ \xc3\xa9ci1me \xc3\xa9ci2ment_ \xc3\xa9cu1me \xc3\xa9cu2ment_ \xc3\xa9d1ri \xc3\xa9d2hi \xc3\xa9dri1q \xc3\xa9li1me \xc3\xa9li2ment_ \xc3\xa9lo1q \xc3\xa9lo3quent_ \xc3\xa9l\xc3\xa91me \xc3\xa9mil4l \xc3\xa9ni1te \xc3\xa9ni3tent_ \xc3\xa9pi2s3cop \xc3\xa9pi3s4co1pe \xc3\xa9pis1co \xc3\xa9qui1po \xc3\xa9qui1va \xc3\xa9quipo1te \xc3\xa9quipo3tent_ \xc3\xa9quiva1le \xc3\xa9quiva4lent_ \xc3\xb41me \xc3\xb42ment_";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/it.php b/inc/3rdparty/libraries/mpdf/patterns/it.php
deleted file mode 100644 (file)
index bdda023..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-       
-       Retrieved from http://www.ctan.org/tex-archive/language/hyphenation/ithyph.tex
-*/
-
-$patterns="_a3p2n _anti1 _anti3m2n _bio1 _ca4p3s _circu2m1 _contro1 _di2s3cine _e2x1eu _fran2k3 _free3 _li3p2sa _narco1 _opto1 _orto3p2 _para1 _poli3p2 _pre1 _p2s _re1i2scr _sha2re3 _tran2s3c _tran2s3d _tran2s3l _tran2s3n _tran2s3p _tran2s3r _tran2s3t _su2b3lu _su2b3r _wa2g3n _wel2t1 2'2 a1ia a1ie a1io a1iu a1uo a1ya 2at_ e1iu e2w o1ia o1ie o1io o1iu 1b 2bb 2bc 2bd 2bf 2bm 2bn 2bp 2bs 2bt 2bv b2l b2r 2b_ 2b' 1c 2cb 2cc 2cd 2cf 2ck 2cm 2cn 2cq 2cs 2ct 2cz 2chh c2h 2chb ch2r 2chn c2l c2r 2c_ 2c' _c2 1d 2db 2dd 2dg 2dl 2dm 2dn 2dp d2r 2ds 2dt 2dv 2dw 2d_ 2d' _d2 1f 2fb 2fg 2ff 2fn f2l f2r 2fs 2ft 2f_ 2f' 1g 2gb 2gd 2gf 2gg g2h g2l 2gm g2n 2gp g2r 2gs 2gt 2gv 2gw 2gz 2gh2t 2g_ 2g' 1h 2hb 2hd 2hh hi3p2n h2l 2hm 2hn 2hr 2hv 2h_ 2h' 1j 2j_ 2j' 1k 2kg 2kf k2h 2kk k2l 2km k2r 2ks 2kt 2k_ 2k' 1l 2lb 2lc 2ld 2l3f2 2lg l2h 2lk 2ll 2lm 2ln 2lp 2lq 2lr 2ls 2lt 2lv 2lw 2lz 2l_ 2l'_ 2l'' 1m 2mb 2mc 2mf 2ml 2mm 2mn 2mp 2mq 2mr 2ms 2mt 2mv 2mw 2m_ 2m' 1n 2nb 2nc 2nd 2nf 2ng 2nk 2nl 2nm 2nn 2np 2nq 2nr 2ns n2s3fer 2nt 2nv 2nz n2g3n 2nheit 2n_ 2n' 1p 2pd p2h p2l 2pn 3p2ne 2pp p2r 2ps 3p2sic 2pt 2pz 2p_ 2p' 1q 2qq 2q_ 2q' 1r 2rb 2rc 2rd 2rf r2h 2rg 2rk 2rl 2rm 2rn 2rp 2rq 2rr 2rs 2rt r2t2s3 2rv 2rx 2rw 2rz 2r_ 2r' 1s2 2shm 2sh_ 2sh' 2s3s s4s3m 2s3p2n 2stb 2stc 2std 2stf 2stg 2stm 2stn 2stp 2sts 2stt 2stv 2sz 4s_ 4s'_ 4s'' 1t 2tb 2tc 2td 2tf 2tg t2h t2l 2tm 2tn 2tp t2r t2s 3t2sch 2tt t2t3s 2tv 2tw t2z 2tzk tz2s 2t_ 2t'_ 2t'' 1v 2vc v2l v2r 2vv 2v_ 2v'_ 2v'' 1w w2h wa2r 2w1y 2w_ 2w' 1x 2xb 2xc 2xf 2xh 2xm 2xp 2xt 2xw 2x_ 2x' y1ou y1i 1z 2zb 2zd 2zl 2zn 2zp 2zt 2zs 2zv 2zz 2z_ 2z'_ 2z'' _z2";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/nl.php b/inc/3rdparty/libraries/mpdf/patterns/nl.php
deleted file mode 100644 (file)
index 06a342d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-       
-       Created by Remco Bloemen (remco dot bloemen at gmail dot com)
-*/
-
-$patterns="_a4 _aan5 _aarts5 _aat5 _ab5l _acht5end _ac5re _adi5 _af3 _af5l _af5s _aftu5re _al3ee _al3f _alk4 _al5ko _alko5v _al5ma _al3om _al4st _ana3s _an3d2 _an3en _an3gl _an5th _ar5d _ar5tr _as5h _as5l _as3t _as5tra _as3u _at4a _ave5n _b4 _be3la _be5ra _be5ri _bos1 _c4 _coo5 _co3ro _cus5 _d4 _daar5 _da4gi _dag5r _da2k _dan2 _debe4 _de2k _dek5l _dek5s _den4k5r _de5od _de3ro _de5sta _di4a _die4p _di3o _doet3 _do3v _du4w _e4 _ede2 _edel5a _ed3w _ee4n _eer5ste _eest3 _eesto4 _eet3 _ei3l _ei5sc _ei3sp _ei5t _el4s5 _en5s _en5th _ep4a _ere5s _er2f _erf3l _er3in _ert4 _erts3 _es3 _es5c _es5pe _es5tr _eten4 _et4h _ets5te_ _eu3 _eus5 _\xc3\xa92 _f4 _fel4s _g4 _gaat5 _gang5s _gea5v _ge3l4a _ge5le _gelo5v _ge3n4a _gena5z _ge5ne _ge5no _ge3ra _ge5r4e _ge5r4o _gerst5a _ge3s _ge5sk _ge5ta _ge5tj _ge5to _gid4 _go4m _goot3 _h2 _handels5 _her5in _hits5t _ho4lo _houd5s _i4 _ide5o _ij4s _ijs5l _ijs3p _ijs3t _ik3 _in1 _in5d4 _in3g4 _in5gr _ink2 _in5kr _in5kw _in3s4 _in5sl _in5st _in5ta _is5c _j4 _jor5 _k4 _ka3d _ka5g _ka4taa _kerk5l _kerk5r _kerk5u _ker5sten _ke4s _koot5 _ko5pe _kop5l _ko3v _kun2 _l4 _laat5ste _le4b5 _leg3o _le4g3r _leid5st _len4s3 _le5r4 _le4s3 _le5th _lin5d _lof5 _loot3 _lo4s1 _lu3e _lui5t4j _lu4s _m4 _ma5d _ma5\xc3\xaf _meel5d _me5la _me5ni _merk5l _me2s _me4st _met5ee _mij4n5i _moot3 _mor5sten _mo4s _n4 _naat5 _na3d _na3n _na3s4 _nee5s _ne2p _nep3a _ne4s _ne5te _ne4t3j _neu4t5j _nie4t5j _noot5 _nos5t _no5v _o4 _oe4r5 _oe4s5 _oeve4 _ol3f _om1 _omme3 _on3a _on3d _onde4r _on1e _on5g _on3i _on5k _on1o _ono5v _on2t3 _on4tee _on4ter _ont5s _ooi5tj _oot5jes _op5ee _opi5 _op5l _op3r _op5s _org4 _os5 _ove4 _p4 _pee5tj _peri5 _pers5te_ _piet5j _pits5te_ _poort5j _po4st _puit4 _pui5tj _pu2t _r4 _raads5le _ran4d _rand5a _re4men _ren4o _reno5v _re5o _rie4t3 _rij5sp _ring5s4 _roe5tj _ro4l _ro4st _ro4t3h _ro5v _s4 _sap3 _sa5v _sci3 _see3 _seks5te _se5re _set3 _se5v _side3 _ski3s4 _sneu3 _sno2 _so2k3 _song5 _spoor5tj _st4 _ste4m _t4 _taart5j _tan4da _te4a _te4f _tek2 _te3le _ten5ac _te3no _ten4t5j _te3ra _ter4p5a _ter5s _te4s _ti2n _tin3a _tin3e _toe5pr _to4lo _to4p _to5v _tri3s4 _ts4 _tsa3 _tuit5j _ty2r _u4 _ui2 _ui5s _uit1 _uit4je _uke5 _ur4a _vaat5j _ven4t5j _ve4r3 _ves5p _vet3j _vie4r _vol5s _w4 _wals5te_ _wee4ko _wee4t3 _we4l3 _wen4s5t _west5r _win4s _xe3 _y2 _z4 _zes5 _zit5 _zooi5 4a_ a4a4 4aad aad1a aad1o aad1r aad5sap aaf5a 4aag aag1a aag3e aag3o aag5r aags4 aag3sa aag5so aag3sp aai3l aak1a aak3e2 aak1o aak5r aak3sp aal5a2 aal1e aal5f4o aalfo5l aal1i aal5k aal5m aal1o2 aal3sl aal5so aal5spe aal5ste aal1u aam1a aam3o aam4sta aam4ste aan1a 5aandee aand4r aan1e2 aan5g aan5i 3aanj aan5k4 3aann aan3o aan3sp aans4po aant4 3aanta 3aanv aap1a aap3i aap3o2 aap3r aar3a aar4d5as aar3e4 aar1i 4aarn aar1o2 aar5spel aar4t5on aarts5l aar3u aas3e aas3i 4aast aas5tr aat3a aat5e aat3h aat3i aat1o aat5r abak4s5 aba4l abat4s ab5eun ab3ijz a2bon aboot4j abot4j 2abr ab3ru 4ac_ a3cal a3car 4ace ace3st 4ach_ a3cha 2a1che 4a1chi ach3l a1cho a3chr 4achs ach5tec a1chu achuut5 4ack ac3kl 2acl 2a3co 2acr ac5res 4acta 4acu 4ad_ a5da_ ad3ac ada2d ada4l ada2r3 adas5 2add a5de_ ad3ei ade5re a5des a3det a5deta ad3e4te 2adh 4ad4i adi3al adi4oc adi4od 4adk 2adl 4ado_ a3doo 2adp ad3rei a3d4ri ad3rol 2ads ad5se ad3so ad1s4t ad5sta ad3ui ad3w 2ady 4ae aege4 ae5k4 a3e2p ae3r ae2s3 ae4s5t a3eu a2\xc3\xab a4\xc3\xabr 4afa af3aa a2f3ac af4as af4at afd4i afd2r af5d4w 4afe afee4 4afi af3l 4afo a5fo_ a2foe afon4d af3op af5org af1r af3s4 afs2c af5se 3afsl 3afsp aft4a af5tr af3ui 2afy 4ag_ ag1a2d ag3af ag3a2m ag3ar ag3di a5ge_ agee5t 4a5gen_ ager4s ag3ex a4gil ag3ind a4g3ins agi5ot 4ag1l ag3of a4g3or ag4o3v a2gr ag4ra ag5rap ag3ru ag3sl ag4sle ag5slu ags2p ag3spe ag3spi ag1st ag3sta ag5str 2agt agu5a a2g3ui ag3u4r a2g3uu 2ah 4a1ha 4a5he ahe5ri a1hi ah3l a3ho ah5r ah5t2 a3hu a3hy ai5a2 ai4dr ai1e a1ij ai5k ail3m ai2lo a2in aio4 ai3ov ai3s4 ai5sc ai4s5l ai5sn ai1so ai1st ai5tj ai3tr aiu4 a\xc3\xafn4 a\xc3\xafns5 a\xc3\xafs3o4 2a1j ajaars5 aka2 ak3af ak3ag a4k3ar a4k3ed ak3emi ake2t ak3id ak3ink ak5is 1akko 4a2k3l a2k3n ak5ne ak4ni a3kof ak3on ak3o2p a2kr ak5ru 2aks ak4so ak5spe ak1st ak5to ak5t4w a2k3u4 ak1w ak3wi a1la a4l3ach al3adr a3l4ag a3lal a5lapr al3art 4ald a1le a5le_ al3eff 2aleg a2l3el ale5ro ale5ste ale4tj a3l\xc3\xa8 al4fen alf3l al5fon alfu4 al2gl a3lie al3int alk5ei al5kle alk3s al4kui al5le al4mac al5me a1lo a4l3ol alo2n al3ou a4l3o4v 2alp al3s4ag al3san al3scr als5j al2sl als5li als5m al4sn al4s3oo al4stem al5sten als5tou altaar5 al3tha al4t3ro alt4st a1lu a2lui al3uit al3u4r alu2s5 4am_ a4m3ac am3adr ama4f 4amag am3art 5ambt ament4j ame4ran ame5tj a2meu am4i 4amm am3oli a2m3o4v 3amp\xc3\xa8 am2pl am4ple am4sm am4s3o am4spr ams5te_ a2m3ui a3nad an3alg an4a3n an3arc 2anc 4anda anda4d and5ank an4d3e4d an4dex 2andj an4dom an5d4ri and5roo ands5lo an4d3ul a4nem a3nen anen3i 4aner an3est ane3us 4ang_ an4gan anga5p ange5st ang5le an2gr ang5sna angs4te aniet3 anij4 3anima an5ion a4n5isl ani5t 4aniv 4ank_ an4kaa anka4n an4k3as an2k3j an4klu ank3of an2k3r a1no an3och a4n3oor an3ork ano3s ano3t4 a4n3ou ano5v 4ans an3san ans3cr an4seg an4serv an4sid an2so4 ans5or ans3pi ans5pir an1st an4s5te_ an5stru an4tac ante4n an3th 2anti ant5sl ant3w 4a1nu a5nuf an3ui an3ur an3uu anze5s 2a1o ao4g ao2l a4om a2op2 aor5t a3os aos3p aos5t 4ap_ a1pa a4pak a4pas ap3as_ ap3ass a1pe ap5eten 4a1pi apij4t5j ap3ijz ap1j 2apl ap3le ap3li ap3lo a1plu apon5 ap3oo apo3p apo5sta ap3o4v 1appa 4appen 4apr ap3ra a3pre a4prem a5p4ris ap3ru ap2sa ap4si ap2s3l ap3sn ap4ste_ 2apt ap3tj 2apu a2q 4ar_ a1ra araat5j a4r3app ara3s4 ar2da ard3ac ard3ak ardo4 ar4d3om ar4d3op ar4d3ov ar2d1r ar4dra ard3re ar4du ard3w a1re 5a2rea a3reg a3rem ar4en are4no are3sp a3rev ar3gh ar2gl a1ri arie4tj arij3s ar3ins ark2 ark3ac ar3k4l ar4map arm3u a1ro a2r3ob ar3oge a3rok aro4ko ar3oog a2r1o2p a3rot arpi4 ar2s ar5sch ar3scr ars2e ar5see ar3si ars3l ar4sla ars5m ar3sni ar4so ar4sp ar5spo ars3ta ars5tal ar4s5tek ar4str ar4su art4aa ar4t3ak ar4tan art5ank ar4tap ar3tar 4arte ar4tei ar2th ar5tij 4ar4tj art5jesv 4arto ar5tof art5o4ge art5oog ar4t3o4v ar2t3r ar4tro art5ru art4sl art5ste a3ru ar3ui 4arw arwe3s a1ry 4asa as3ad as4ag as3ak as1ap a2sc as5ce 2ase a4sec a4s3eg aser5a ase5tj aseve4 as5ha asis1 a4sj as5ja as3ji as3k as5ka as5ki as3l as4lu as3m as5mi as3n as4ne as4ni 4aso as3ob aso2l aso4r as1p as3pl a4s5q as5sa 4assm 3assu a2st 4as3ta a4sta_ as5tag as4tas as4tat as3te a3stek a3stem as5ten as3t\xc3\xa8 asting5sp as1to as3tob ast3op 4astr ast5rem as5tro_ as4tu a1t ataart5j at1ac at3ade at3af_ at3ank ata3s 2atek a5tell ate2n ate3no aten4t5r ater5ad ater5sl at4eu 2atg at3hu ati5ni a2t3j at4je atjes5 at5jesb at5jesh at5jesm at5jesp 2atm 2atn a2too at3oog atos5f ato3st at3rac at3rei at3rib at4roe at5ru at4s3a2 at4s3ec atsi4 at4s3id at2s3l at4slo ats5m ats3n at4sne ats3pr at2st at4staa at4s5tak at4ste_ at5sten at5stij ats5tol ats5top_ ats5trek at4t3u4 a2t3ui at3w aua4 au3ch au3co au5de aud4j 1aug au3na aun3t aup2 aur4 au5re aure3u 4aus au3so au4s5p au3sto au3t4 4aut_ 1auto auto3p 2auts3 auw3a 4auz a4\xc3\xbc avast4 ave3c avee4 ave4n3i aven5sp aver3a ave3re ave3r4u 4avi a2vo 1a4von a5voo a5vor 4avy 2a1w axis4 ay2a 4azif \xc3\xa43h \xc3\xa4mme3 \xc3\xa43r 1b 4b_ 3ba baar5ste baar5tj ba4da bad3ar ba4d3r bad3s ba3g4h ba3gl 5b2ak ba4k3o4 bak4sp ba3lan ba4lar bal3dw bale4 bal3ev ba3li\xc3\xab bal4kl ba3lo bals4 bal3sf ba4me ba5n2a ban4k3a ban4kl ban4k3o ban4kr bank3w ba3sa ba4st ba2tr ba3tro 4bb bbe4l5ag bbe4l5ee bbe2n bben3a 4b1c 4b1d4 b5de bdi5a 3b4e be1a be3as be2au be3ch be5dwe be5dwi be5dwo bee4 beet1 be5g beie4 bei3s bei5tj be5ki be3k4l be1kw be3lar be5l4as bel5dr be3le be4l3ec be4lex bel5f be3li be4l5int bel3k bel4o be3lo5v bel3sc bel3sp belt4 bemen4s be3nep be5n4o be5ot be1ra bere5s4 ber4g5af ber4g5et ber4gl ber4gr ber4i be1r4o bero5v be3ru be3ry be1s4 bes5ac be4sh be4sje be3so be5sp bes5s bes5te_ bes5ten_ be5stie bet2 be3t4h be5ton bet5ren be3tw be5twi be3und beur4s 4b3f 2b1g 4b3h 3b2i bid3s bi2du bie4li bi4en bie4t3j bij5d bij3f bij3g4 bij5k4 bij1p bij1s2 bik4a 5bil bi3lo bil3s2 bin4dr bin4st bin4t3j bi5ob bi3ok bi5om bi3oso bi5ow bir3 bi4st bis5troo bi1tr bit4se bit4s3p 4b1j 4b1k 3b4l blad5ij 2b5lap b5led bles3 ble5spe ble2t3 b5lid blijs4 blij5ste bli2k 4b5loi blok5l bloot5j blu2s 2b1m 4b1n b4o bo4d3ec body3 boe4g3a boe4kn boe4ko boes4 boe3st boet5st bo3f4l bo2k bok3an bokje5 bok4st bolk4 bo2m3a4 bo2m3o bo5na bond2 bond4s5 3bone bo3no bon4t3j bon4t5o4 boot3j boots5te_ bo3p2 bor4sta borst5o bor4st5r bo4s bos3a bo5sco bo5si bo5so bos5p bos5to bot3j bo4to bot3r bot4sp bot4st bo2tu bou5ta bouw5s bo3v bove4 4b1p 3br4 braad5s bran4da bra5str brei5s4 brie4t brie5tje_ bri4l bro2n bron3o4 bru2l 4b1s4 b2s5a b5sc b3si bsi3d bs5je b2s5la b2s5m bs5s b4stij 4bt4 b3ta b1tr bts5 3b4u buit4j bul4k bu4lu bune5t b5urb bu5ri bus5c bus3o but4a but3j bu2to but4s buts5te buur4tj 4bv 2b3w by3 4bz 4c_ 1ca 3ca_ ca3b ca1ch 5cada ca3do ca3dr cae3 ca3g2 cal4l3 ca3lo came5r ca3na cant4 ca2of ca1pr ca4pra ca5pri ca3ra car4u ca5se ca3s2p cas3t cas5tr ca3ta cate4n ca3t4h cau3 cau4st ca3v 2cb 4c1c cca3 cces5 c4d c5do 1ce 3ced cee4 3ceel 3cel cel3d celes5 ce5li cel5k ce4l3o 2ce3n4a 2cene ce3no 5cent cen4t3j ceo4 ce3ra cer2n ce5ro cer4t3r ce2s ce3s2a ce5sc ce3s2h ce3sta ce3s4ti cesu5r ce3ta ce4t3j ceto4 cet3og cet3oo 1c\xc3\xa9 c3g 4ch_ 3cha\xc3\xaf 5chao 3chas 1chau 5chauf 2chc 1chef 5chef_ 5chefs 5chemi 5cheq che5ri che3ru 5ches che3us 1ch\xc3\xa9 5chir 4chn 2chp 5chromo 4cht 4chw 1chy 3ci ci5ab ci3am cie3k cier4s5 ci1eu 5cij 5cil ci5le cil3m 4cind ci3o ci5om 5cir ci3t2 ci5ta c3j c2k3a c4k3ed ck3ef cke5re c5k4et ck3id c2k3l ck4le c2k3n c2k3o4 c4k3r ck5se ck3so ck5st c3ky 1c4l cla2n cle3u 5clu 2c1n 1co co3ad co3d co4i coin5 co3k4 co3la 5com 5cond con1g 2co1no 5cons 3con5t4 2coo 2co1p2 3copa 4copi cor4dr co4rel co5ri cor2o 5corr cors4 co3ru co5sc co5se co5sp co3th co3tr 5coun 2cout co5v c3p4 1c4r2 3cras cre5d 2crip 3cris cro5f cro5k croo3 cro5v crus5 c3so c3sp c3ste 2c1t ct3act ct3ad ct5c ctee5t cte2n3 c2t1h c2t3j c4t3of c3tol c2t1on ct4or ct3rap c4t3re ct3sl ct3sp 1c2u cu5d4 cu3en cu3\xc3\xa9s cui5s cui2t cuit5e cu3k4 cula5p cu3ra 5cur3s cus3o c3w 1cy 1\xc3\xa7 \xc3\xa7a4o 4d_ 1da 3da_ 3daag d4aal d3aap daar5e 5daat 4dabo 2d3acc da4ce da5den 4dadr 3dae 2d1af 3dag da2g3a4 da3ge da4g3ed da4g3e4t da4g3on da4g3r dag4s3t da2gu 3dai da3\xc3\xaf da3ke da4ker 2dakk da4k1r 4dala d3alar d3alc da3le 4dalf da3li 2dalm da2l3u d4am dam4a da5mac d3a4mat d2a5me4 dames3 dam4pl 2da2na dan3as dank3l danoot5 dan4si dan4sm dan4s3p dan4st dans5ta 4d3antw 2d1ap 4d3a2pe 5dapu da2r3a d3arb 3dare 3dari dar4mo darm5on 3daro dar3s dar5st 3das3 5dasa da3stu 3d4at da3ta dat5j 4d5atl 4d5atm da2t3r 5daue 4d1aut 3dauw 2db dbei5 dbou4w5i 2d5c 4d3d4 ddags4 ddag5sp ddel5ev dde2n dden5a ddera4 dder5al ddere4 dder5ee dder5ep dder3o ddi3a d5dles d5do ddo3p 1de 3de_ de2al de1ch d4e5den 5dedir de4dit dee4g3 dee4l deel3i 4d3een dee4r 4d3eff de3g 4d5eg_ 4d5egg 2d5egy 2dei d3eie d3eig d3eil d1eis d3eiw 5dek de3ke dek3lu dek3w del4aa del5da del5dr del5eek 4d3e4lek 4delem de4lev 4d3e4lit del3k del2s del4s3e dels3i del4so 4d3e4mai 2demh 5demi dem5ond d2en_ den4ac den5ate den3ei den3e4p den3ev 4d3engt den4k5of de4noc den3o4r den3sh den5str de3nu 5denvl de4o de5ofo de5ol deo4li deo3v de3rab de4r3ad der3a4g de3rak de3ram de3ran de3rap de3ras de4r5as_ de4r5ass der2e der5ede der5egd de4r3ei de4r3em de5re4n de4rep de4ret de5rij de4r3im der3k4 der3on dero4r 4d3eros der4s3a der4s5om der5ste der5sto der5stra der5th 4d3erts der5tw de2r3u de3rup de2s de3sav des3m des3n des3p de3spe de5spel de4spl des5sm de3st des5tak de5stal de4s3te de4sti de5stic des5top de3t4 4d3e4tap de5tw deu4r3o4 de3us_ deu4tj deve4 2dex 4d1exa 4dexp 3d\xc3\xa8 2d1f 2d3g d4gaf dge3la dge2t dgeto4 dget5on dget5ov dge4tr dg4l 2d1h d5he dheer4 3d4hi_ 1di di2a di5ae di4ak di4ano dia3s4 di4atr 5dich di4do die2f die4r3o di3esr die3st die2t diet3r di1eu 3dig di2ga dig5aa diges5 dijk3r di3jo 2d3ijz di2k3o4 5dil 2d3imp di5n2a 2d3ind 2dinf 3d4ing_ 4d5ingel 4d3inj 4d3inko 2d5inr 2d3ins 4d3int dintel5 2d3inv 2d3inw 2d3inz di2o di5ofon di4ol di4one di4oni dio1s dio5sc 2d3i2ro 2d3irr 3di4s dis5ag di5se di5si dis4kr dis5p dis1t dis5tr di3th dit3j dit3r 5div 2d1j 2d3k2 4d3l d5le_ dli4n dlot4s 2d1m 2d3n2 d5ne dni3s 1do 3do_ do3a 2dobj 4d3obs 3d4oe 5doe_ doe5d 4doef d5oefe 5doek 5doen 5doet 4d5oev 3doi d4ole 2do2li d4olin dolk5s 5dol5s 3d4om_ 5domi do4m3o4 d3omr dom4sn 5domu d3omv 4domz 5don_ d4ona 5done do5ni 5d4onn 5do3n4o do3nu do5ny 5donz 2dop do3pa d3opb d3opd do3pee 5dopj 4d1opl 3dopo d3ops d3opz 4d5org do4ri\xc3\xab d3ork dors5m do3sp do3sta dot3j 5dou 2dov dover5s 3dovl 3dovo 2d3p dpren4 1dr4 3dra 5dra_ d3raam d3raap d4rac d5race 5drach d3rad_ d3rada 5draf 5d4rag d4rama d3rame 4d3rand 4drap 4dras 4d3raz 2dre 4d1rec d5reco d1red d2ree 4d3reek 4drend d4ress 4dret 3d2rev 5dreve d3ric dries4 5d2rif dri5ga d3rijd d3rijk d3rijm d3rijs 5d4rin 3dris 4d3rit 4d3roei d3roer 5d2rog 4d3rok d3roma d3rond 3droog 4droos 5drop 2drou 2d3ro5v 2droz drug4s d3ruim d3ruit 5d4ru4k 4d3rus 2ds d2s1a2 d4saa dsa4b d3sal ds4ate ds2ch d5schi dse2 ds3eco d4s3ed d4s5ee d4sef d4sei ds3eis ds3elf dse4li d5sen d4s3es d4set d2sh ds3ho d2s1i2 d4s5id dsig5a ds2im ds4ing ds5is d4s3j ds4jo ds5jon ds4l d1sla ds5las ds5lic d4s5lie ds5lim d3slin d2sm ds4mak d3smij ds5mo ds3n ds4ne ds5neu d3snu ds1o4 ds3ob ds3om d4son ds2oo ds3op d4spa d5span ds5pati d5spec d5s4pel d4s3pet d1spi d4s3pl d5spoe d5spok d5spor ds5s dst4 d1sta d5staat d4stab ds3tak d4s3tal ds4tan d3s4tat d5stav d3ste ds4te_ d5stee d4stek ds4ter d4sterr d4stev ds3th d3s4ti d4stit d1sto ds5tram ds5trekk ds5ty d2su4 ds3ure ds3uu d1sy 2dt d1ta dtaart5j d1th d2tj d1to d1tr d1tu 1du 2duca 5due du3en du3et 5duid 5duif 5duik d3uil 2duit 4duit_ d3uitd 5duite 4duitg d3uitv 5duiv du4n dun5i du2o du4ol 3durf 3durv 5du1s dut3j du5wen 2dv dvaat5 dvee3 dve5na dvies5 2dw d3wac d3was d3wat d1we 3d2wei d3wek d3wet d3wez d1wi 4d1wo d3wor d3wr 1dy 4d3yo dy4sp dy2s4t 2dz 4e_ 4ea e3aa e1ab ea3bo e3ac ea4ca eac5t e1ad ea3da e5adem ea3do ead3s2 ead5sh e1af e1ag e3ai ea4k3o4 e1al ea3la e3ali e4als ea5mi e3an e4an_ eang3 ean4s e5ap ea3pr e3aq e1ar ear2c e1as e2asc ea5s4e ease5t ea3so e1at e4at_ eat3s eau3s4t e1av e3bo ebots5te_ e5br 3ecd e3ce e1che e1chi echt5ec echts5o e3chu 4eck ec5le 4ecor 4ect ec3ta ec4taa 3ecz e1d ed4ag e3dam e3d4an e4d4as ede3a ed3ei_ ede5le edem4 ede5nac ede5o ed4er e4d5erns ede5rog edi3al edi3am e5die 4edir edoe5tj e3d4oo ed3opv edors5te ed3ov e3d2r ed3rod ed3rol ed1s ed5se ed2sl ed4so ed5sp ed3su ed3uit e4d2w e5dwan e4e eea4 ee5b ee5ca ee5che ee2d3a eed4ac eed5as ee5de ee5do eed3ru eed3si eed3w ee2f ee3fa eef3ac ee3fi eef3l eef3r ee4gap eeg3l ee3i ee2k ee3ka ee5kaa eek3ak eek5all eek1e ee5ket ee3ki ee3kl ee4k3lo eek3n eek3re ee3kri eek3ro eek5st eek3w ee2l eel3a ee3lad eel4as_ eel5d4u ee3le eel4ee ee3li ee5lij eel5k4 ee3lob eel3og eelo4ge ee3lu4 eel3ur eel3uu 4eem eema4 ee2n een3a eena4r een3e2 een5g ee3ni een5ie een5k ee5o2 ee2pa eep3an ee3pl eepo4 ee4p3re eep3ru ee2r eer1a eer3aa ee4rad eera4l ee3ram ee3ran ee3re ee4ree ee5rei ee4r3i ee5ric eer5k eer3og eer5oom ee3rot eer5ston eer5str ee2s3 ee5sch ee4s5em ees5et ee3sj ees5lo ee3sn ee3s4p ees5pl ees5pot ees5ten ee3stu ee2t eet5aa ee3tal ee3tan ee5te eet5h ee3tj eetna4 ee3to eet3og eeto4ge eet3oo eeto4r ee3tr ee4tro eet5rok eet3sp eet5ste ee5v ee5z e\xc3\xabn3 e5\xc3\xabr ef3ad efa4z efde5l ef3do ef3ei e5fer 4efi efie4t efiet5j ef3ins e3fis5 e1fl ef3li ef3loo e3flu ef3om e3foo ef3op e1fr ef3rij e5fron ef3sf 4e1g egas4 eg3as_ ega5sk eg3ebb e4ge4c eg3eig egel5ei_ ege4l5ov ege4net egen5of ege4ra eger5eng ege4ro eger5on e3g4i eg3ijz egip4 egiste4 e2gl e4go_ eg3org e2gos eg3oud e5graf eg3s4 eg5sle eg5so e2g3u4r egut4 e4g3uu e1h4 e5ha eheis5 ehit4 e2i ei5a 4eid ei3do eid4sc ei1e 4eien eien5s eie5re ei3f4 ei3gl 4eign e3ij eik4l ei3kn ei5kr eiks4 4eil_ eil5ant 4eild4 eil5dr 4eile ei4lev eil5m ei2l3o ei4n3ab ei3n4ac ein4do eind5oo ein4d3r ein5gr ein5k ei2no ein5sl ei3o ei2sa ei5sha ei3s4la ei3slo eis4p ei3s4ta 4eit2 ei4too eit4s3 eits5c eits5n eits5te_ eit5sten eits5tr eive4 4eiz e1j2 e3je ek3aan ekaart5j ekaat4 ek3af_ e4k3a4g ek3al_ ek3alt e5kam ek3ang ek4ee ek1ei e3kem e5ker_ e5kers ekes3 ekes4t ekes5tr e3ket ek5eter e5kic e4kil e5kis ekla4m eklam5a ek3lev e5klim ek5loos ek4ni e3ko e4k3ob e5kof ek3oli ek3opz e5kor ek5os_ ek5oss e5kran ek3roz eks4e eks5erv ek5set ek4str eks5tra ek5t4e ek3to eku4 ek3uit ek3ur ek1uu ekwet5ste ek3win e1la el3aan el5aand el1ac el4ade el3adj el3adm el3adr el3adv el1a4f el1al e3lan el5ana e3lap e5lap_ e4lapp el3arb el3arc el3arm el3art e4l3as_ el3asi e4l3asp e4l3ass el1au e4laut e3laz el5azi el4dec el4dr el4du e1le e3le_ el3eeu el5eff e5leid el5eier el3eig el3ei5s e4lel 3e2lem el3emp e5l4en e3ler ele5r4a eler4s el3erv e3les eles4t e4l3eta ele4tr e4l3etu el3exc e3l\xc3\xa9 elfi4d el1fl elf3s4 el3gu 2eli e5lie e5lig eli5kw el3imp e4l3ind e3ling e4l5inkt el5inz 3elix el4kee elk3s el4k3u4r el4kw 4e1lo e5loep el3oes e3lok el3ol el3oms el5ond el5ont e3loo e5lood e5loos el3ops el5opt el5opv el3o2r el5org elot4j e5lou el3o4ve e5loz elp4o el4ps el4s5em el4s3k el5smed el5twe 4e1lu el3uit eluks5 2ema e4mana ema3sc ema5to emees5 emens5te emer4s emes3 emie4tj e5mok em3oli em3op em3org emor5sten e4mo4v em3sa em5sc em4sli em4sm em1st em3su em3uit emut4 en3aap e3naar e4n3aas en1ac e5n4acc en5af e2n1ak e2nal en3al_ en3als en3amb en4ame e2nan e4n3ang en1a2p e5nari en3ars e2n3a2s enas3p e3nat ena4tel e4n3att en1av e2n3a2z enci4 3ency_ en3da en5daa end5ama 5enderti en3d4o en3dr en5drek e2n3e2c enede4 e3nee en3eed enee5t en5eg_ en5egg en3ela en3elf en3ema e4n3en5t e2ne2p en3epo e5nere 5energ e4nerv en3eta en3ete ene4ten e3neu 4enf en5ga en3gl en4g5le eng4r en5gri engs4 eng5se eng3sm e3nie e5nijd e2n3im e4ninga e4n3ink e3niv e4n3i4vo en3k2a e4n3och en3off e4n3oli e2n1on e4n3oor enoot5 e2n1o2p e3nor_ en3ord eno3s en3ou e2n1ov 3enq en5sce en4sei ens5ein ensek5 3ensem ens4fe en4sin en5slak en4s3on en1s2p ens5pot en5stan en5sten enst5ijv en4stin en4stu4r en3su en4tac en5tee en5tei ente5re en4terv 3ent\xc3\xa8 en1t2h en5tom ent4r en3tre ent5rol ent4sl ents3m ent4s3p en3tw e1nu e4n1ui e2nun en3ur en3uu 5envelo eny4 e3o eo3d eodo3 e5oe eoes3 e5off eo3fr e4o3k4 e5on eo5ni e5oo eo3pa eo3pe eo3pl eop4la eo3p2r e5ops eor5d e5org e5ori eo3ro eo3s4 eo5st e4ot eo5te e5o3t4h e1pa e3paa ep3aak ep3ac e4paf epa4k ep5ake e3pal e3pap e4p3app e3par ep3asp e1pe e5pe_ ep5een e5per epers5te_ e1pi 3epid ep3ijs ep3ijz ep5ingr ep3ins epit4s epits5te ep1j e1pl ep3led e4p3lod e5ploe ep3lus e1po e4p5o4ge epoort5j epoot4j 3e4pos_ e3pot epou4 e1pr ep4ra e3pri ep5rode eprot4 ep2s ep4s5ee ep4ser eps3l eps5n eps3p eps3ta eps5taa eps5tal eps5to eps3tr eps5tro ep4tak ep2tj ep4tr ept3ra ep5tro ep3uit 4equa e3ra_ e1raa e5raad e4raak_ er3aan er5aanp e4raap_ e5raat e4r1ac e5rac_ e5race e5raco e3rad e5rad_ er3ado er3af e3raff era4gen e1rai e4r3all er3ama er3ana e5randa e5rane e5ra3pl er3arc e3rare e3rari e1rat4 er3a4tr er3azi er3d2a er3d4i erd4o er3d2r erd5uit_ er3d4w e1re er5eat 4erec er5editi er3een e5reep er5eers er3eet er3ef er5eff er5eg_ er3egd er5egg er5egt er3eie er3eig er3eil er5eind ere3kl er3elk e4r3emm er3emp e3rend e5rendel ere4ne eren5eg er5enen_ e3renm e3rent er5enth e5rento eren5tw ere2o ere4og er3epi er3e2q er3eri e3res_ er3esk e3ress ere4st ere4t3j er3etn e4r3ets e4r5ex erg2l e3ri eri5ab e5rif e5rig erig5a er3ijl er3ijs e4rijs_ er3ijv e4r3ijz e5rik er5ind e4r3ini er5inkt er3ins er3int e5rio e5ris erkeers5 er2kn er3m4i er5mo er5nu e1ro_ e3rob er3oc e4r3oed er3oef e5roep eroe5tj er3oev er3of ero2g e3rok e1ro2l e5rol_ er3oli e5roll er3om er1on e3ron_ e3rone er3onv er3oog er3oor e5roos e4r3op erop3a ero5pen e2r3or er1ov er3oxi e3roz e3r\xc3\xb6 er4plu errie5tj er3scr er3sj er5slag er5span ers4pot er5stem er5te er3t2h er5t4i er5t4o er3tr ert5se erts5l er3t4u er3t4w e1ru e3rub e3rug5 e2rui er3uit erui5t4j e2run e3runs e4r3ur e3rus er5uu 3ervar 3erwt e4saf e4s3a2g e3sam e5san es3ap es3arr e3sa3s e3scop e3s2cr es4e e5sec es5een e5sel es5ene e4s5eng es5ex es2fe es5he e4shi e3sid e3sie es1in e4sir es5je_ es5jes e3s4jo es5jon e4s3ka es5kr e3sl es4la e5sla_ e5slag es3lak es5lat es4le es5leg es2m es4mui e5smuil_ e1sn e3s4ne e1so e3sol es4oo es5oor_ eso4p es3ore e1sp es5pas es4pel espit5ste e3spl e4sprie esp5riem es4sm e3stak e3s4tal e3stap es4tar es5tatie e4s3te_ es4tea es4teel est5ei_ e4steka es5tekam e3s4tem es5temo es3ten e4sten_ es5tenb es3ter estere5o es5tes es4tet e3steu es4tic e4stie e3stot es5tra_ es5trac es5trak e5stral est5rap es5trei est4sc es4tur e3sty e3su esu4r e3sy e1ta e3ta_ et3aan et3ac et3ad et3afz 3e2tag e3tak e5tak_ et4ana e5tand e2tap e4tapp e5tat e4tau e2tav e3te e5tea et3edi e5tek 4etel e5tel_ e4t5elf e5tels et5emb et5emm etens5u eten5tj ete5r4a ete3ro eters5la eter5sm e5tes e1th et3ha et3hor et5hu e4t5i4d e5tie e4t3inc e4tiq e5tis e4tja e1to e5toc e3toe e5toev e3tol eto4p et3ope et3opl e4t3ork eto3sf e1tr et3rec e4t5res e3troe e5tron e5troo etros4 e4t3ru et4sl ets5lap et5slu ets3n et4s3oo et3spe ets3pr et3spu et4ste ets5tek et5sten et5sti ets4u et5su5r et5suu e1tu etui5tj etu4r et3we et2wi 1eua4 1euc eudi5o eu5dr eu3e eugd3r eu3g2r eu4ler eu4li e1um e3um_ e2umd eu2na eun3t 1eu1o eu2po eu4rad eu4rec eu3ren eu4res eu4rij eur5k euro5v eur4sta eurs5taa eurs5te_ eur4s5tr eur4su eu5sch eus4p eu3spa eu4st eu5str eu3tj eu1tr e3uu 2euw eu4wa eu5win euw4str evaar5tj eval4s evari5 eve4lo evel5op eve5n4aa 4ever eve3ra 4e1w e5wa e5we ewen4s ewens5te_ ewest5r ew2h e5wi ewo3v 4ex_ 2ex3aa ex3af 4exco 3exeg 3exem 4exi ex3in ex5op 1exp e3y4o eys4 ey3st e5za e3zee 4e3zen ezers5 e3zo ezz4 \xc3\xa93a \xc3\xa91d \xc3\xa9dee4 \xc3\xa9di3 \xc3\xa91g \xc3\xa9gee5 \xc3\xa93h \xc3\xa93j \xc3\xa93n \xc3\xa93p \xc3\xa93r \xc3\xa91t \xc3\xa81 4\xc3\xa8c \xc3\xa82l \xc3\xa82s \xc3\xa85t \xc3\xa8ta5 \xc3\xaa1 \xc3\xaa2p \xc3\xaa3per \xc3\xaa5t 3\xc3\xab 4\xc3\xab_ \xc3\xab2b \xc3\xab3c \xc3\xab3d \xc3\xabe2 \xc3\xaben3 \xc3\xab3j \xc3\xab1l 5\xc3\xabn \xc3\xabnce3 \xc3\xabn4e \xc3\xabns2 \xc3\xabn5sc \xc3\xabnt2 \xc3\xabn5th \xc3\xabn5tw \xc3\xab3p \xc3\xab1ra \xc3\xab1re \xc3\xab1ri \xc3\xab1ro \xc3\xabro1g2 \xc3\xabro3s \xc3\xab2s \xc3\xab3si \xc3\xabs3t \xc3\xab1t \xc3\xabt4s \xc3\xabts3te \xc3\xabve5 \xc3\xabven4 4\xc3\xabzu 4f_ 1fa f3aanb f4aat 3fab fa2bo f3acc face4 f1ach 2fad 2f1af fa3g fal3s fa3m f3ang fant2 fan4t3j fant4s5 2f3a2p f4arm 3fa5se fa2to fa3v 4fb fbe5dw f1c 4fd f3da fda4g f5dan fd1ar fde4k fdek3l fde4s3 fdes5e fdes5l fde5sm fdes5t f2d3in fd3of fdors5te fd4ra f3d4ru fd5se fd3si fd3so fd3sp f4d2w fd3wo 1fe fe2a fec4tr fede3 fe4del f3een 5fees feest5r fel5dr fe4l3ee 3feli fe4lom fe4l3op fel3sp fe3no f4er fe3rab fe3ran fe4r3et fe3rom fe3ron 3fes3 fe4t3j fetu5r 2f3ex 1f\xc3\xa9 3f\xc3\xa8 3f\xc3\xaa 4f1f f5fe f5fi ffs2 ff3sh ff3si f3fu f3g2 fge3 fge5r4 fge5t 4f5h 1fi fi5ac fi4al fi3am fi3apa fi3apo fia4s 3fib fi1ch 5fie 5fig f3ijs 2f1ijz fik4st 3f2il fil4m3a film5on fi3lo 4find 3fini f3inj 4fink 2finr fi3o fi4r fi4s fi5se f5iso f1j fjes5 4f1k4 f3ke f2l2 4f3laa f1laf f4lam f3lei flen4st flens5te_ f4les fle2t flet3j 4flev f4lex f3lez 2flie 2flij f4lik f4lip f4lit f3lok 3f4lor flu4t3 4f1m f1n 1fo 3fob 5foc foe5d foe5ta 2f3of 5fok 2foms fo5na fond5en fonds5l fon5eng fo1no 4font fon5te foo4 fooi5 f3oom 5foon 2fo4p fop5s4 f4or 3fo5re fo5ri 5form for4t3j fo1ru fo3t 2f3oud 4f1ov 3f\xc3\xb6 4f5p4 fpers5te_ fpits5te_ fr4 f4raak_ fraam5 5frac f3rad f2ras 5frau f1rec f3rek 5freq frie4s frie4t friet5j f4rik f4rod 4f3rol f4rolo f3roma frus3 4f1s f2sa4 fs3ad fs3an fs3ar f3sc f5sch f4scr fse2 f4s3ec f4s5ee f4sei f4s3eth fs4fe f2sh fs5he f2si f3sie fs3im fs1in f5slaa f5slac f5slag fs3lap fs2m fs3ma fs4mi fs3mo fs3mu f2s1o4 fs3ob fs3om fs4oo fs2p fs4pre fs4t fst3as f3ste fs5tec f5stell fste4m3 f4sterr f3sti f5stif f3sto f4st3oc f4ston f3str f3stu f3sy 4ft f1ta ft1ac fta4kl fta4p ft3art fter5sh ft3h f1to f5tond f4tont f1tr ft2s3l ft4sm fts3n ft4so fts3p f1tu ftu4r 1fu 2fuit fu4ma fum3ac 3f2un fur4o 3fus 2fuu 4fv fva2 fval3 4f1w4 3fy1 2fz fzet5 4g_ 1ga 3ga_ gaar5tj g4aat 2g1ac 4g3adm g4af_ g3afd ga3fr 4g3afs 4g3afw 2g3a4h 4gal_ ga3la ga4l3ap ga5ler gal3s 4gamb g4a3mi 3gan gan5d 5gane gan4s5t ga3pl 3gar_ 4g3arb ga3re g1arm 3gars 2g3art gar5tj ga4s gas5c gas3i ga5sla_ ga3sli ga5slo gas3o gas3p gas3tr gas5tra gast5rol 3gat gat5j gat3s 4gaut ga5ve g1avo 2g5b 2g1c 4gd g5dac g5dag gd3art gd3at gd5ate g3de g4d3elf g5der_ gd3erv g4d3id gd3im g2din g3dr g5dru gd3sa gd5sp g3du 1ge 3ge_ ge3a gea3dr gea5na gea3q ge4ari ge5au 4g3eb_ 2gebb ge3c ge3d4 gedi3a ge4dit ge5dr ge5dw 3gee4 geest5r geet3a ge3f4 2g3eff ge5g4 gege4s 4geig 2g3eik gei4l5a 5geit geit3j ge3k4a ge3ke ge5ki ge5k4l ge3kr gek4st gek4u ge3k4w ge3lau gel4d3a4 ge3l4e 4ge4lem gel5f gel5k 5ge3l4o gel5si gel3sl gel3sp gel5ste ge5ma 4gemb 4g3emf ge5mo 2g3emp gems3 ge3m4u g4en_ ge3nak gen4az 3ge3ne ge4n3ed ge4nend 4g3engt 3geni gen5k ge1no ge4n4of ge4nog gen5sfe gen5ston gen5stu genstu5r 5genw ge5om geo5pe georke5 ge5os ge5ot ge5p4 ge1ra ger5aal ger5aap_ ge4r3a4l gera4p ger5ape ger5as_ ge5reg ge3rem ge5ren_ ger4i ger5ini ge1r2o ger4of ge5rol ger5slan ger4sli gers5lij ger4sp 4g3erts ge3r4u 3ge1s4 ge3sa ge3sc ge5se ge3si 4ge3sk ge5sl ge3sn ge3so ge5spend ge5sper ge5spo ge5stan ges5te_ ges5ten_ ge3str ge5sw ge3ta get4aa ge5tam ge2th ge5t4i ge3t4j get4o ge3tr ge5tra ge5tro ge5tru ge5tsj ge5tu ge5t4w ge3ui 5g4ev 4gex 5g4ez 1g\xc3\xa9 g\xc3\xa9di4 3g\xc3\xa8 4g1f gfijn5ste 4g3g4 g5ge gge3la gge4r5on gges5ti g4g5h g5gi ggings5 g5gl 2g1h g2het ght4 gh5te g2hum 1gi gids5te gie5ra gier4s gi1eu gi2f gif5r gi3ga 5gigere 5gigste 2gij g3ijs 4gijz gi2m gi3na 4g3inb 4g3inf g5infe g5infr 5ging 2g3inh gin3o 2ginr gi4oc gi2od gi4onet gi2or gip4st 5gir 3gis 4g1j 4g1k gl4 g5lab 3glai 1gla4s glas3e g5lat 3g4laz 3gle_ g5leer glee5t g3len 2g5lep 4g5ler g3les 3gle4t glet3j g5lev g5lice g5lich 3gli\xc3\xab g2lif g5lijs g2lim 3g4lio g2lob 3glof g5log 3glom 4g3lon g3loon g3lop 3g2los g5loz 3g2ly 4g1m gmaat5j 2g1n g3na gn4e gne5g gne5m gne4t3j gnie4tj 4gnu 1go 3go_ 3go2a 3gob 2goc g1och go4d3a god4s3 gods5t 4goef goe1r 2gof go3f2r g4og 4goh go2k 5gom_ go2ma g3oml 4gomz go4n3az 2g3ong go5no 2g1ont g2oo 2g3oor 3goot 2g1op go3pa g4opr g4ora 4go4re go5re_ 5g4ori gor2s gos1 go3tr gou4d5ee 2g3ov 2g5p gpes3 1gr4 3gra 5gra_ graat5j g5rak gra2m g4ram_ gram3a g3ramp gra4s3 5grav 2g3rec 2g3red 5gredi g5redu g3reek g3reel g4reep g3reis 4g3rek 2g3rem gren4s gre4s g4reu g3rev 5gria grie4t5j g5rijd g5rijk g5rijm g5ring 5g4ris grit5s 2g3riv groet5j grof5 g3rok g3rook g3room groot5j 2grou gro5v 2g3rug g3ruim g3rup 4gs gs1a2 gsa4g gs5alar gs3alt g2sc gse4 gs3eco g4s3ed gs5een gs3ei gs3en gs5ene gs3erv gs3et gs3ev gs5he g2s1i2 g3sie gs5is gs1j g3s4ke_ gs3l gs4la gs5laag gs5lam gs5las gs1le g3slep g4sleu gs5lie gs4lin g5sling gs4lo gs5log gs5lok gs5lon gs4lu g4s5ma gs3n g4sna g3snij g4s1o4 g5sol g5som_ gs5ons gs3op gs3p gs5pand g3spec g3s4pel g3s4pet gs4pi g3spie g3spil g5spin_ g5spinn gs5pir gs5pol g3s4pon gs5ps gs5q gs5sc gst2a gs5taal gst5aang gs5tac g5stad g5s4tan g4st3ap g5stat g1ste g5s4te_ g5sted g5stee g3stei gs3tek g5stel g3sten g3ster g5ster_ gs5terr g5sters gs3th g5s4tic g3s4tig gs5tijg g5stof g5stop g5stor gst3o4v g4s3tra gs5trad gs5trak gst5ram gs5trap g5strat gst5res gs5troe gs5tron g4stru g5struc g3stu gs5ty g2s1u4 gsver3 gs5w g5sy 4gt g1ta g2t3ap g3te gte3ro gtes4 gte3st g1to g3tr g1tu 1gu 5gu_ 3gue gu4eu 2guit gu4ni gu2s3 gut4st guts5te_ 4gv g5vo 4g1w g5wa 1gy 4gyp 2gz 4h_ haams5ta haar5sl haar5sp haars5te haar5tj haats5te_ h3afd haf4t3u ha3g ha5ge hal2f1 5hals hal4sto 5halz 2hamp 4han_ han4dr hand5sl han3ga hang5l hang5s han4s3l han3so han4st hap2s hap4se har4ta harte5l hart3j har4t3o4 har5tre hart5sl hat5j ha2t3r hat3s ha3v 4have_ 4hb 2hd h4e 2hea he2ar 3hech he3co 4hee_ hee3g4 hee4k heek3a heek5l hee4l3o heep4s heeps5c heers5tak hee5sto hee5tjes he2f he4i heids5p heis4 hei5tj he2k3a he2kl hek4st heks5te_ hek5sten hek3w he3le he4l3ee he3li hel4m3a helo4 hel4p3a hel3sm he5mo he5ne hen4kr he3n4o 4he5o he4pij he2p3l he2pr he1ra her4aa he4r3ad he3r4au he4r3i herm5eng he3ros hero5v her4p5aa 3herst hert4 herts5te he2ru he5se he2sp he2s5t hets5te_ heu5le 2h3f 4h5g h3h hi5d hie4f3 hielsges5 hie4r3 hie5ren hier5u hie4t5o hie4tr hiet5s hij4sl hik4s5 hi3kw hil3m him4pl him4pr hin5d h3ins hin4t3j hi2p5l 2hir2 his5p hi3tr hit4st hits5te_ hit5sten h3j 2hl h3la h4lag h3lep h3loc 2h2m h3ma h3me h4mer h1n h2na hno3 2ho_ ho3a hoa3n hoboot4 ho3ch hoe4ker hoe4s hoes5l hoe3t ho2f hof5d hof3e ho3g2 ho2ka ho5mo hon3dr hond4s hon3g honi4 ho1no hool3e 4hoom hoort4 hoor5tr 2hoot ho3pa ho1pe ho2p3o hop3r hop4str hor5de 5horl ho3ro hor4st hors5te_ hor5sten hor4t3j ho3ru ho3sa hot3j ho3tr ho4t3re hot4st hots5te_ ho3v 2ho4w how3o 2h1p hpi4 2hr hra4b h4re h5rea hri4 hro2k hrok3o hroot3 4hs h3sa h3sp h3st 2ht h4t1a2 ht3ac h3tal ht3ala h5tans h3te_ h4t3ec ht4eco h2t3ee h2t3ef h2t3ei ht5em h3ten h4ten5t ht5entw hter3a hte4r5o h4t3esk h4tev ht5eve h5tevo ht3ex h2t5h h4t3int h2t1j ht1o4 ht5oef ht5op h4t1r ht5roo ht4sap htse4 ht4ser ht2si ht4sl ht5sla ht5slot ht3sme ht5smij ht4s3o ht3spe hts3pl ht3spr hts5taal ht4s5tak ht4s5tek ht4sti hts5tore hts5trekk ht1u2 ht3w hu4ba 3huiz hul4der hur4t5 hut3j huts5te_ huur5s 4h1w hy4la 3hyp hypo1 4i_ i1a i3aa i4ab i5abi i4ac i3ady i3ae i5ae_ i2a3f4 i2a3g2 i3agr i3ai i5ak_ i3ake4 ia4kem ia3kl ia3kr i3al_ i4a3la i3ali i2am i5am_ i3ami i3an ian4o ia3o i2a1p4 ia5pa i5api ia3sc ia5se ia3so ia4s5po ia3sta i3at ia3t2h i5atri iave4 i5ble iboot4 4ic i3ce 5i4cepa i1cha i1che ichee4t i1chi i1cho i3chr ick5l icos4 ic4t3op ict4s5c i3dam idde4r5a ide3a i4dee_ ider4sp ider4st ides4 idi3a idi5ab i2di5o id4mak i3dok i2dr id3ran id3ru id2s1 id4s3a id4ser ids5i ids5j ids5l id4sm ids5ma id5s4mee id4s3o ids3ta ids5tak ids5tek id4stem id4sti ids5tr id3u4r id3uu idu3w id3w 4ie ie1a2 ie4d3ac ie3de ie4dro ied3w i1ee4 ie\xc3\xab2 ie3fi ie2fl ie3fle ie3fon ie4fr ie4gas ie3ge ie4g5ins i2ek iek3e4v ie4kl iek3li ie5klu ie2kn iek5ond iek4s5n iek4sp ie2ku ie3kwa ie5lan ie5lap iel5do iel5d4r iel4e iel5ei_ iel5k iel3sc ie3ma iem3ov ien4dr ien3ij i3enn i5enne_ ien3s4m ien5sp ien4sta ien4st5o ien4str ienst5ur ieo4 i4ep ie5pen iepiet5 iep5oog iepou5 iep5rel iepro4s iep3s4 iep5st iep5tr ie4pui ie5r4ad ier3a4l ie3ram ie3rap ier3as ie4rat ier5el_ ier5els ie5ren_ ie5ring ierk4 ie3r2o ie4rof ier4sl ier5slu ie3ru ier4ui ie3sf ie2si ie4sl ie5sle ies3li ies3m ie2s3n ie2so4 ie4s3pl ie3sta ies5te_ ie5stel ies5tere ie3sto ie4taa ie5tal iet5ant ie5ten ie3tj ie3to4 ie4t3og ie4too ie4top ie4tor ieto5re ie4t3ov ie5troe iets5te_ iet3ur iet3uu ie3twi i3ety ie2u ieu3k i1eur ieu5r4e i1eus ieu3sp i1euz ie3v ie3z iezel5a i3\xc3\xa9s i1\xc3\xa9t i1\xc3\xa8 i4\xc3\xabg i4\xc3\xabva 4if if3aa if3ad if3l if3r if4ra if4taa if4tar if4tre iftu5r if3ui ig4a ig3aa ig5ac i5gal i4g5av i3ge ige2s ig3esk ig3ij i4gind igi3o ig5no i3g4om ig4op igs4 ig3sk ig3sl ig3sp ig3sto ig3un i1h i3i i5ie ii2n i5is i2j 4ij_ ij5a ija4d 4ijd 4ije ij3ef ij3ei ij3el ij5e4n3 ij1er ij3i 4ijn ij3o4 i3jou 4ijso 4ijsp 4ijst ij5te ij4tr ij5u 4ijvo 4ijzo 4ik ik3aar i4kam i3ke ik3ef ike4ra iket3 i2kij i3kl ik3la i4k3lo i4k3lu i2k4n i4k5na ik5o2g i3kom i2koo iko2p ik3ope ik3ord i4kr ik3re ik3ri ik3ro ik5se ik5si ik3s4l iks3n ik3sno ik3sp ik4spa ik1st ik5sta iks5te_ ik1w ik5war i1la i3la_ il4aa il5aan il3ac il4act il3ad il3af i3lak il3al i5land il2da il4d3r ilds4 4i3le il3een ile3l i4l3erv ile4t ilet5r ile3u il3e4ve ilevin4 i4l3e2z i3l\xc3\xa9 il5f i3li ilie5g ilie5t il3ink ilk4l ilk3s2 illa3s 1illu il2m ilme2 il4min il4mo i1lo ilo4ge il3ond i3loo i5loon il3oor il1or ilo4re ilo4ve il3s2h ils5j il4sti il2th i1lu 4im_ i2mag i4mago im5au imee4 im3een i4m3em im3enc im3ex 4imf i2m3of im3op im3org im5pa im4s3oo im1st i3mu in1ac i2nau ind4aa in4dene ind3sc ind5ste 1indu in3e4de in3edi in3eed inek4 ineo2 inet4s i5neu 1inf in2ga4 ing3aa ing3ag ing3al 3ingan ing5lo in2go in4gr ing4st 4ini_ i3nie ini5on ini5sl ini5sta 4inkj in2kn 3inkom in4kri 3inno i1no i3noc i3nod in4o2g in1on ino5pe ino3s4t in3ov 1inri 4ins_ in5sch in5se in3sl in3smi in3so in1sp in5spo in5sten in5swi in4t3ap in5te intes5 in3th 1int4r i1nu inuut3 4i1o io5a ioas5 io5b i3o1c i3ode ioes3 io3f io3g2 i3ol i5ol_ i5olen i5olus i3on ioneel4 i5ong ion4s3 ions5c i5oo i2op4 io3pa io3pr i3opt io3ra i3ori io3ru io4s i3os_ ios3c i3o5se i3o5sf io5sh io5si i5osi_ io5so io5sp io5s4t i5o5su i3osy i5othek i3oti iot3j i5otorens io3tr i2o3v i3ox i2oz i1pa i2p1ac ip3af i3pap i1pe i4perw ipe4t3j i1pi ip1j i1pl ip3lu i1po ipo4g i1pr i2pri ip3ru i4ps ipse4 ip4si ip4sle ips5te_ ip5sten i3ra ira3k i1r2e ires4 ire3st i3r\xc3\xa9 i1ri irk4s i1ro iro3p iro5v ir2s ir4sc ir3sp ir5ste irt3r i1ru 4is i1sa i2saa i4s3ad is3a2g is3ap i2s1ar i2s3as i4sc i5scha i5schr is5col i5scoo i5scope ise2d i4s3ei is3ell is5eng i4s3erv ise3st iset3j is4fee is4fer i4sh is5ho isi2d i2sij i2s3im is3ja i4sk is3ka is3ke is3l is5lag is5las is5le i4s5m i4s3n is5ned is5nij is5no 5isol i4soo is4oor iso3s i2sot is3ott is3p is5pas is2pi is5pl is5q is5sa is5so i2s3t is1ta i3stak ist3ap i4s5tas is4tat is5terd is5tere is4th is1to ist5ong i3str is5tri i5stro_ i3sty isu2m i5sy 4it i1ta it3ac ita5d it3een i3ten i3ter ite5rei ites4 ite3st ite4t it3hie it1ho it1hu it2i itie5st i4tj i1to it5oef it3oog i3t2ou i4to4v itper5st it3red it1ru it3sje it3sli it3sop it1sp its4te it4ste_ it4too i3tu it3w 4i3u2 iu4m ium3a4 ium3e ium3o iu3r i3ve iven5s ive3re i5w iwi2 iwie2 iwit3 4iz i3ze ize3t \xc3\xae3 \xc3\xaet4 1\xc3\xaf 2\xc3\xaf_ \xc3\xaf5a \xc3\xaf1c \xc3\xaf1d \xc3\xafe4n3 \xc3\xafe5nen_ \xc3\xaf2n3a \xc3\xafns5m \xc3\xafn3sp \xc3\xafn3u \xc3\xaf3n4ur \xc3\xaf3o \xc3\xaf3ri \xc3\xaf3ro 4\xc3\xafs_ \xc3\xafs3a \xc3\xaf4sc \xc3\xaf5sche \xc3\xafs3l \xc3\xaf3so \xc3\xafs3t \xc3\xaf1t \xc3\xaf5z 4j_ 1jaar jaar5tj ja3b 2jaf 1jag jagers5 ja3kn ja3mi jan4s3l jan4st ja3pl ja1po 1jar jare4 1jas3 jas5p 3jaw jaz4 j3b jba4l jbe4l3i j1c jda2 j2d3aa jd3an j4d3ar j2d3ee jde4n3e jden4s jdens5p j4d3erv jdes4 jde3sp jde5st jdi3a j2do4 j3dom jd5on jd3op j3dr j4d3re j4d1ri j4d3ro j4d3ru jd5sei jd3spo jd1st j2d3u jd3w j3d4wan jea4 3jeba je3ch jec4ta 2j1ee jel4 je3la j1en je2na2 je3n4o 5jep jepiet5 je3ro jers4 jer3sp je4s3 3jesa 5jesal je5sch 3jeskn jes5l jes5m jeso2 jes5pa jes4pr 3jesr jes5tr 5jesvo 3jeswa 3jeswi je2t jet3er jeto4v jet5st 5jeu 3jevr 2jew j3ex j2f1a j2f3ei j2f1en5 j4f3ij jf3ink jf3l j3f4lat jf5le j2f3o4 jf3r j3f4ra j3f4ro jf2s jfs3a jf4sc jf4s3er jfs5f jfs3l jfs5m jfs3n jfs3p jfs5pa jf3st jf4sta jfs5tak jf5stan jf4stel jf4sti jf4s5to jft2 jf5ti jf5tw j1g j3ge jger5sl j2g3l jg4s5e jg3sn jg2st jg3s4te j3h jif3 j3ig jin3g ji5t2j j3j 2jk j3ka j4kaa jk5aard j4kar jk3arb j4kau j4kav j2kij j2k4l j3klaa jk5lak jk5lap jk5las j4kle j5kled jk5les jk5li j3klon jk5lop jk5luc j2kna j2k3of j4k3o4l j2k3on j2ko4p jk3opb jk3ope jk3opl j3kops j2kr j4kra jk3raa j5kran jk3re jk3ro j4k5ru jk3slo jks3pl jk4sta jks5taak jks5taal jks5tak jk5stan j2k3ui jk3w j3k4was j1la j3laa jl5ana j1le j2l3ef j2l3el jl5f jl3ink j1lo j2loe j3lu j2m3af j5m4ar j3mi jm3op jm3s j2n1a4 j4naa jn5ac j3na5g jn3ak jn2am jna5me j3n4an jn5d2r j2nef jne4n j4n3erk j4n3erv jn3gl j4n3im j4n3ink jn3k4 j2n1o4 jn4si jn2s3l jns5lac jn3slu jns5or jn2sp jns3pl jn1st jn4ste_ jnt4 jn3tr joet3 4joi jol4e jo5lij j3om 1j4on jone2 j3op jo3pe jo3ra jo3ru j4ou 1jour jou5re joy3 j3pa j4p3ac jp3arm j1pe j2p3em jp3ij j1pin j3pio jp1j j1pla jp3li j1po j2p3or j4pre jp3ri jp3rok jps4 j3r jraads5 2js js1a j4sef j4s3ela j5seli j4s5em j4s3e4r j2s1i js5in js4ir js4le js3lee js3li js5lie js4me js5mel js5met js3n j4s1o4 j5soe js3ol js3pac js3par j3spe js3pl j4spo js3poo jspoort5j j5spor j1sta j4star j2s3te j3stee j3s4tek j3s4tel j5s4teng js3th js4tij j5stond j4stoo js3tou jst5ran j5strok j2su j3sy j3taal jt3aar jt1ac j1tag j3tak j3tan j3te_ jt1h j3toe jt3opt j3tr jt3ra j5tred j5tree jt3rei j5trek jt3ri j5trok jt3rot jt1s j1tu 1j4u ju3d 4jum jus3 juve5 j3v jve2n jver4s jvers5p jve3t jvie5s j1w jze4r5o 4k_ 1ka k3aanb k3aanl 5kaart kaart5jes kaats5te_ kabe2 ka3bo 2k1ac kade4t5 4k3adm ka3do k3adv 2kaf k3afd k4aff ka3fl 3k4aft ka4ga k3a4gen k3ah ka3i 2k3alb ka3le 5kalf kalf4s5 ka3l4i kal2k kalk3a 4kalt 5kalv 3kam 4kamb kamen4 kame4re kam4pa kam4pl kam4pr ka5naa kan5d 4kang kan4sl kan4st kan4t3j kao3 5kap_ ka3pe kap3l ka1po 4kappa ka3pr kap3s k3arc k4a3ro kart4 4k3arti kar3tr ka4s kas5c 4k3asi kast3o4 ka3str kast5ra ka5stro kas3u4r kat5aal ka4t5a4le ka4tan kati4 ka4t5io kat5j k3atl kato4 ka4t3og ka5tr kat3s 2k1aut 2kavo 2k3b 2k1c k3ca 2k5d kdi3a 1ke k4eb 2k3ec ke4di 2k3een kee4p5l kee4r keer4s keers5to 2kef 4keff k4ei_ k4eie k2eil kei3s4 kei5t ke4lap kel5da kel5dr ke5lel 4kelem kel5f ke4l5int ke4lom ke4l3op kel3sp 5k4ema 2kemm 2kemp ke4n3an ke4nau ken4ei_ ke5nen ken5k ke2n1o kens5po kepie5t 4k3e4q ke3ram ke4r5enk ker3kl ker4kle ker4kn ker4k3r ker4ku ker4kw ker4n3a ker4no ker3o4 ke3ros ker4sm ker5spe ker4spr ker4sta ker5ste_ ker4sti 4k3erts 4kerva 4kerwt ke2s ke3s4p ke3sta kes5ten ke3sto ke5straa k2et 5ketel ke2t3j ke3to ke2t3r kets5te_ ketting5s 4k3e2tu ket3w 3k2eu keviet5 ke4vl 4k1ex 2k3e2z 2k1f 2k3g 2k1h4 k3ho khoud5s 1ki 2ki2d 4kied kie4sp kie4s4t kie5ste kie4tj kieze4 2ki\xc3\xab kijk5l k3ijs 4kijv 4k1ijz ki3lo kilo5v ki3na 4kinb 4k5indel kinds5te_ 4kindu kin3en 5king kings5l 2k3inh kinie4 k3inko 4k1inr 2k1ins 2k3int 4k3inv ki3o ki2p3l ki5se ki3s4p kit4s kits5te k1j 2k3ja k3jew k3jo 2k3ju 4k5k4 kke5nei kker4s kkers5ten kke3st 1k2l4 5klac k3ladi kla2p1 k4las 5klas_ 5klass k3last k3lat_ k3latt 3k4lav 3k4led 5kledi 5kleed k5leer_ 4k5leg 5klem 4k5len k3ler_ 4klera k3lers k3les 5k4le4u k5lic 4klid k3lig 2k3lij 4klijs k4lim kli4me 3k4lin k5lob 4klod 3klok 5klok_ k5loka k3loke k3lood 5kloof k3lope 5klos klots5te_ 2k5loz 4kluc 4kluih 2k1m k3ma 1k2n4 4knam k4nap 3k4nar 5knec k5nem kni2 5knie_ knip1 4k5niv 3knol k3note 2knum 1ko ko4bl k4oc 2k5oct 4k1oef 5koek koe4ket koers5p koes3 koe3tj koets5te_ koge4 5ko5gr 3k4ok ko5ko kol2e2 kolen3 2kolm 5kolo ko4ly ko2m3a 4komg kom5p k3omsl kom4str 4komz konge4 k4oni k3ontb kon4t3j kon4t3r koo4 2k1oog kooi5tj koot3 koot4j ko3pa 4kopb 4k3opd ko1pe ko5pen_ 4kopg 3ko5pi 5kopj ko2pl 2kops 4kopz 2kord kor5do 2k1org 2k3ork kors5te_ kor4ta kor4t3o4 kor4tr ko3ru 3k4o4s3 4k3os_ kos4j ko5sjere koso4 4koss kot4st kots5te_ 4k1ov 4k3ox 2k3p kpi3s k4plam kpren4 1kr4 3kra k5raad kraads5 kra4b 4k5rad k5rand 2k1rea 2k3rec 4k3rede k4ree4 k5reep kreet3 k3ref k2reg 2k3rel 2k1ric k3rijk k3rijp krij4t krijt5j k4rit k5ritm kroet5j 2krol k4ron kron3t 5kroon krop3a kro4to 2krou k3ro5v 3k4ru k5rub 5kruis kru4l krul5a 2ks k3sal ks3alm ks3an ks3ap ks1ar ks3as ks2e2 k5sec ks3ed ks5ei_ ks3ep k4serv ks3et kse3v ksges5t k4si k5sil ks1in k5sis k5sit ks1j k1sla ks3lab k4slan ks3le ks3li k4smo ks3na ks3no ks3nu kso4 ks3om k5song k2s3pa ks5pand k4spar k1spe k3spi ks3poo k5spor ks3pot ks3pru k3spu ks5s ks4t k1sta k5staan k5staat k1ste ks5tec k4st3ed k3sten ks5tent kste4r kster5a k4sterr ks3th k3sti k3sto ks5ton k5stoo k4stop k5stot ks5trek ks3tri k3stue kst5uit k1sy 4kt k1ta kt3aan k3taar ktaat5 kt3ac kt3art k3te kte2c kt3eco k4tex kt1h k5tij kt3im kt3in k5tit kt3j k1to kt3om kto4p kt4or kt5ord kt5org kt5ori kt3o4v k1tr kt3res k5troll ktro3s k3tu 1ku ku5be kui2f 2kuit ku5k ku5me 3k4u2n 4k5uni 5kuns ku2r ku3ra ku3re kur3s 3ku2s kut3 2k\xc3\xbb 2kv k3ve kven4t3 5k4waal 2k3wac k2wad k1wag 5k2wal 5k2wam 3k4war k5ware 4kwat k3weer 2kweg k1wei 5kwel kwen4st kwens5te_ 4k1wer 5k2wes1 kwes5tr 5kwets k2wie k3wijz k4wik 2kwil 2kwin k3wind 4k1wo ky3 2kz 4l_ 2laan 4laand l3aanh laa5re laar5tj laat5sta l3abon 2lac la4ca 5lach_ la4cha 5lache lach5te lacht4s l4aci la2d5a la4det 2ladj 4ladm la2d3o 4la2dr lad5s la2du 4ladv 3lae3 2laf la2fa la3fl lafo2 4l3afs la2g3a la4gent la2go lag3r lags4 lag5sa la2k3a la4ki la3kr 2lal 3lald lal4o lam4p3j lam4p5l lam4po4 lam4s3p l4an 4la2na lan3ac 3land lan4da land5aa lan4d5oo lan4d3r lands5te_ la4n3ec lanel5 5lange_ lang5l lang5sp lang5sta lan4k3a lan4k3l lank3w 4lann la4nor lan2s lans3l lan4st lan4t3j lap3ac la3pi lap3l lap3o4 la5pre la2p3u la3q lar3da 2larm 4larm_ lar5st las3a4 lase4 la2si las3to 5lastt la3te la4t3he lat5j la4t3ro 4lats4 lat3sl 2lau 5lauf lau4st l2auw la3v lava3 la4vo 5law l4az 4lazi la4zij 2lb4 lber4t lbert5j lboot4 2l1c lce4l5 4ld ldaat5 l2d3ac ldak4 ld3alf l4da4r ld3arc ld3ari ld3art l2dau ld3eco ldeks5 l4d3e4z ldi3a ld5oef ld3oli l2d3om l2d3on ld3oog l4do4p ld3opi ld3ord ld1ov l3dr l5drade ld3ram ld5rang ld3rat ld1re l5dree ld3rij ld3roe ld3rol ld3rom ld3rui ld3sa ld3sl ld3sma ld5sp ld5ste l3du ld3uit ld3uu ld1w le2a le4ane le3at leba4l lecht5st lee4 leeg3 leege4 leeg5i 4leekh lee5l leem3 3leen 4leep leep3o lees5e lees5l lees5po 2leeu 2leff lega5s leg3ec leg3l le4go le5go_ leg5s 3leidi 4leier 4leig lei5tj leit5s le4ko4 4leks lek5str 5leld le2le 5leli l3elp le4n3a4d len3a4k 3lene le4n3e4m len5kw le2no len3op len3sf len3sm 4l3en5th le5o 4lep_ 3le1ra le4r3a4k le5rei le4r3e4v ler5g4 le3r4o le4ron ler4sl ler5spo 4l3erts le2s le4sa le3sc les5et le3s4h les3m le4sp le3spe 4l3essa les3t les4ta les5taa le5s4tel le3str le4s3u le4t4h le3tha let4i le5tin le4top le2t3r le3t4re let4st lets5te_ le2t3u leu3ko leum3a leur4o leus4 leu5ste 5leuz leven4s levink5j 4lexc 4lexp l2fac l3f4ag lfa3s l2fau lfe4n l4f3end lf3ene l2fe2z lf3li l3f4lo lf3lu l4fo l5foe lf3o4l lf1op lf5ord lf5org l5fou l1fra l3fru lfs5ei lf4sl lfs3le lf2s3m lf4so lft4 lf5ta lf5tw lf3uu 2l1g l5gaar l4gap lge4n5a l3gla l3g4oe l3gog l3goo lg3s4 lgse5 4l1h 1li li3ag li3am licht5st 3lid 5lid_ 5lidm lid3s4 lie4g3a lie4gr lie3ka lie4sp lie3s4t lie4to li3eu 3li\xc3\xa8 3lift l4ig li3go lijk3a lij4m3a 4lijmv 5lijn 4lijp 3lij2s lijst5a 4lijt 4l3ijz li5kr lik5sp li4kw li3kwi lim4a li3mi 2limp lim4p3j lin4da 4linf 4l3inh li5ni lin4k3a 3linn l3inna 2linr 2l3ins lin4t3j l3inv 4linz li3ob li5om li5o5s4 li3ot li2pa li3pi li2p3l li5see 2liso l5isw li1t2h lit3r lit4sa lit4sl lit4st lits5te_ lit5sten 2lix 4l1j2 lk3af l4k3ank lk3arm lk3art l3ke l4k3ei l4k3em lken5e lken4s l4k3ep l3ki lking4 lk3laa lk3lag l5klas l4k3lev l5klim l3ko l5koe lk3ont lkooi5 lk3opb l5kor l5kou l5kra l2kre lk3rep lk3res lk3rij l2k3ro lk2s lk4se lk4so lk3son lks3oo lks5taa lk3ste lks5tel lks5tr l4k3uu l3kw lk3wi l3ky 2l1l l5la lla3d lla3g4 lla5tr ll3eig lle3k ll4el lleo4 ller5on lle3s4m lle5th llevie5 l3l4i l3lo llo5f l5lon ll3sh 2lm l3maa lmaat5 lm3a4ca lm3af lma5\xc3\xaf l3mak lm3arc lm3art lma3s2 lm3au l3me l4med lm3edi l4m3ep lme2s lme5te l3mi l3mo l5mog lm3oli lm3or lmro4z lm5sc lm3sh lm3su 2l3n lni4s lo3a 2lobj lo4boo loe4d5a loed3r 4loeg loe4gr loen4st loens5te_ 4loes l3oeu 5loev lo4faa lof5d2 lof4s4 log4 log5l lo3go 5logr log2s3 lo4k3ar lo2k3o2 lo4kr lo2ku 2lo2l lo3la l3oml lom4p3j lom4p3l l3omt l3omv 4lomz 3lon_ 4lond 5long lon4gaa lon4g3o lon4gr lon3o 2lont lon4t3j 3look loo5pi 3loosh loot3e lo3pa 4lopb l3opd lo1pe 2l3oph 2l3opl lop4la 2lopn lo3p2r 4lopt 4l3opv 4l3opw 2lor 3l4or_ lo3re 4l1org lo3ri l4o1r2o3 3l4ors lo3ru lo3spe lost4 los5to lo4s5tr lo5s2u lo2ta lot3a4l lo4tet lo2t3h lot3j lo4tof lot3r lou3s lo3v 2love 3lo5z 4lp l1pa l3paa lp3aan lp3a4g lp3am l3par l3pas l1pe lpe2n l2pex l3pi l5ping lp3ins lp3j l1pl l3p4la l4plam l1po lp3of l3pom lp3on lp3ope l3pos l3pot l1pr lp3ram 4l3r lraads5 lrus5 4ls l4saa ls1a2d ls3a2g l1sam ls3an l3sap ls3as l2sat ls4cor ls4cu ls3eco l4s3e2d l4sef l5sen l4s3e2p lsge4st l3s2hi l3si l4s3im l4sin ls3inj ls3ink ls3int ls4j ls5ja l3s4kel l3s2ki l1sl l3sla l2s4le ls5led ls5lee ls5leg ls5len l2s3li ls4lin l3slo ls4maak ls4med ls4mee l3smid ls3na l3sne l3sno ls3nor l3soc ls3of l3sol ls3op ls3o4r ls1ov l1sp l2spa ls3pac l3span ls3par ls4pe l3spi ls3pli l3spoo l4s5poot l3spor l2spr ls3pra l1st l3sta l4staf l4stak ls5tak_ l3ste l4stek l4stev ls4ti l3sto l5straa ls5trak l5strat l3stu ls5ty l2su l3sur ls3us l3sy 4l1t lt4aa lt1ac l4tam l5tame l5t4an lt4han l4t3hi l2t3ho l3thu lto4l lt3oli l2t3o4v l3tr ltra3s lt3rug lt3sl lt3sp lts5te_ l3tu lu4b1 lub5e lub5l lu1en 3lui_ 5luia 5luid luids3 5luie_ 2luit luk2s luks3t lu3na 3lunc 2l3u2ni lu3sta lu3ta lut3j lut4st luts5te_ lu3wi lven5s lvera4 l1w 1ly ly5i ly3st 4lz lzooi5 4m_ 1ma maas3 maat5st m3act 2m3adv ma5esto m3afl ma3fr 2m3afs 4m3afw m4ag ma3gl ma5go ma3gr ma\xc3\xaf4 ma5ka ma5ke 5ma3k4r ma3kw ma3l4a ma5lac ma4l5ent mal5st 5m4an_ man3ac m3anal man5da man5do mand4s 5m4ann ma5no 5man2s man4se mans5ee man4so mans3p man4s3t mans5ta man4th mant4r ma5pa ma3pr ma3q m4a5ri mariet5 5m4ark mar3sh mar4s5t mar5ti ma1so ma3s4po 5mass ma4ste ma3str ma5ta 5mater mat5j ma4tom ma3tr mat4st mats5te_ ma3v 4mb m5bl mboot4j mbo5st mb4r 2m1c 2m1d m5da mdi3a mdis5 m3do mdo3p m3dr m3dw 1me me1c me5de 5media 5mediu mee5g mee3k4r mee5las mee3lo mee5re mee5ri 5mees meest5al mee5stov mee5str m5eg_ me3g2a mega5s m5egd m5egg m5egt me4i mei2n mei5tj m2el me4l4as mel5as_ mel5dr mel4ko mel4kr 5melo mel3s4m me4mi 3men m4en_ me3na men4as meng5ra men5k me5nor 4menq men4s5uu men4t3j ment3w me5nu me3p2j 2m3e2q me1ra me4r5aak me4r3a4k me4r4am mer5ante me4rap me3rau me4rav mer3ei 5merk mer4kl mer4kn mer4kw mer5oc me5rong me3roo 4m3eros me3rot mer4si mer4sl mers5m mers5ta me2ru4 m4es me3s4h me4s4l mes5li me5slo mes3m me3so me4sp mes3pa me5spe me5spot me5stel mesto4 mest5ov me3stu me5ta5n me3t4h 3meti me5tr mets5te_ meve4 m3e4ven 2mex 3m\xc3\xa9 3m\xc3\xa8 3m\xc3\xaa 2m1f mfa3t mf4l mf3li mf5lie m5fo 2m5g mger4 2m1h 1mi 3mid 4mid_ 5midd mie5kl mie3st 4m3ijs 4m3ijz mi3kn 5mili mi3lo mimie4 m3imp mi5nar 2minf 5ming 4minh 2m5inr 2m3ins mi5nu 4m3inw m2is mis5f mi2s3i mi3s4la mi4st mi5stra mis5tro mi3t4a mi1tr mit4st mits5te_ mit5sten 2m1j 2m3k2 mkaart5j 2m3l 2m1m 2m1n m5na 1mo 5mo_ mo3a 5moda 5mode moed4s 2moef 5moei moers5t moe2s moes3p moes4te mog2 5moge mogen4s mo3gl 4mok 5mole 2moli mo4lie mol4m3a 4molt 3mom 4m3omv mond3r mo5no 5mons mon4so mon5ta 3mooi 2mop mo3pa m1ope m4opp mop4s mo3ra mo3r4e mo3ro mor4sp mor4st mors5te_ 5mos mo5sc mo4s5l mo3sta mo3t2h mot3j mot3ol mot4st mots5te_ 2m3oud 5mouw mou4wi mo3v m3ox 2m1p mp3ach m4p3af m5pan mp3arm mp5arts m4p3ec m5pen m4p3erv mp3ins m3pl mp3lam m5plan mp3leg mp3lei mp3lev mp3lie m4plu mp5olie m5pon mpon4g mp3ope mp2r mp3rec mp3red m5pres m4ps2 mp5sc m5p4se mp3sh mp5su 2m1r 2ms m3sam ms3ana ms3ap ms2c ms3co ms3cu ms2j m3sje m1sl m2sle ms3len ms3lie m3s2m ms3ma m1sn ms3nee mso4 m3sol ms3or m3s2p ms4t m3sta m1ste ms5tec m5stel m5sten m1sti m1sto ms5toc m4s5ton mst5s m3sy 2mt m1ta mte5re mtes4 mte5sta m1th m1to m3tr m1tu 1mu mu5da mue4 5muilde_ 2muit 2muk mul3p mu2m3 mu3no munt3j mu3sa mus5ta 5mut mut3j muts2 muts5te 3muu 5muz 2mv mvari5 mve4 mvee3 mver3e 2m1w 1my my3e 2mz mze4 mzet5 4n_ 1na 3na_ 3naal 5n4aam 4n1aan 2naap n4aar_ 4n3aard 5naars naars5tr naar5tj 5naast 5naat n3abd 5nabe 2nac na2ca nacee5t n2aci 3naco 4n3act na5d4a nad4e 3nade_ 5n4a5den 3nades 3nadi 4n3adm na5dra 2n1adv 5nae n3a\xc3\xab 4n1af na3f4lu n2a3g4 na1h 3nai 3na\xc3\xaf n2ake na3k4l na3kr n3alb 3n4ale 5nalen 4n3alf n3alm 2naly 4nalys 3nam 4namb name5st n4ami n3amp n3a2na n3ank 3nant 5nant_ 5nante n5antenn nan4t3j 2nap nap3ac 3na3p4l na3p4r nap3s nap5st 2n1arb 5nares 2n3arg narie5t 2n1arm 3naro 4nars nar4st nars5te_ nar5sten 4n1art nas2 3na3sa na1s4l na1sp na3sta na3stu n4at_ 3n4ati nat5j 4n3atl na3to nats4 nat3sp 5nau_ 5naus 2na3v 5naven 3navi 3nazif na4zij 2nb nbe5st nbe5t nbots5te_ 2n1c n3ce nces4t n3che ncht2 nch5tr nch3u n5co 4nd n5da_ nd3aan nd5aas nd3abo nd3act nd5adel nd3adr ndags5p nd3alf nd3alm n4d3ana n4dap n2dar nd3art n4das nd3ass nda3st n4dav n4d3a4z n3de n4d3edi n4d1ei nde5laa n4d3emm n5den_ ndera4 nder5aal nder5al nde4r5an n4d5e4rec nder5in_ nder5og nde4ten ndi3a ndie4tj n4dijs nd5ijs_ n4d3ink ndi3o n3d2ji n5do_ n5doc n4d5of nd3oli nd3omd n4don n5dona nd5ond n5dons nd3ont nd3oog nd3ope nd3opp nd3ov nd5rap nd3rat nd1re nd4rek n4dres nd3rot nd3rug nd3s4cu nd4sec nd5set nd3s4i nd3sjo nd4sm nd3sp nd4spo nd4spra nds5taal nd3su nd3uit n2d3u4r nd5ure n4d3uu nd1w n3dy 1ne 3ne_ ne5ac ne3am nebe4s 3neck ne2cl ne4dit ne3do n3edu ne5dw nee4 4need nee5k neel5d neel3o 3neem 4n1een nee5ri nee5se neet3a neet5o neet3r neet5s 4n1eff ne3g2 ne4gel negen5en nege4re 4n1ei 5neien n5eier n2eig 5neigd 5nei5t ne4k3r ne2la 4nelem 4nelf 3nem 4n3emb 5n4eme 4n3e4mig 4n3emm 4n3emp ne2n 3n4en_ 5nenb 5n4end_ nen5do ne4n5enk ne4ni ne5nig nen5k4 nen1o4 5nenp nen5t4a ne5oc ne5ok ne5om neo5p ne5os ne5ot nep3ag ne3pe nepi3s ne1ra nera4d 3n2e5re n3erfe 2nerg ne4r3id ne3ros ner4sl ner4sp ner4st ners5te ner3u ne3ry 3nes ness5a ness5t ne3sta nes3te nes4tei ne5s4tek ne4ter net3on net4si ne2u 4neum ne3ums neu5ste 2nex 3n\xc3\xa9 2n3f 2ng ngaat5j n2g1a2d ng3af ng3ana n4ga4p n2gar nga5sl n3gav nge4ad n4g3een ngels5te_ ng3emb n5gen nge4rap nge4ras n4giger n4gigs ng3ij n4gind ng3ink n4g3ins ng4l ng5lad ng5lam ng5lan ng5led ng5leu ng2li ng5lin ng5lop n3goe ng3of n3go\xc3\xaf n2g1on ng5oor ng5op ng3ore ng3org n3got n3gr ng3rac ng3rad ng3rai n4gras ng5rass ng4red n4g4ri ng5rie ng3rij n5gron ng3rui ng2s ng4se ngs5lop ngs5lu ng4s5ne ngs5tak_ ngs5take ngs5trek ng5stri ng3uit 4n3h nhek5 1ni n4i2d nie5kle ni3eri nie4s3p nie4tr 3nieu ni4g3ee nig3ra nij3f nij3k 2n3ijz ni5kr nik4s niks3p 3nil 3nim_ 5nimf n3imp 2n3in_ n3inb 2n1ind 2ninf ning3r 2n3inh n3inj 2ninr 2n1ins 2n1int 2n3inv ni3o ni4on_ ni4one ni5or ni5o5s4 nip3l 3nis ni4sau ni4sel ni4s3ev ni3sfe ni2s3i ni4sl nis5n ni3sot ni5stel nis5to ni3t2h ni1tr nits4 n1j4 n3je njes4 nje5sp nje5st nje3t 4n1k nk3aan nk5aard nkaart5j nk3af n5k4am n4k3arb nkar5s n4k3asp n3kef nk3eff nk3emp n3ken nken4e nker5ku nk3id nk2j nk3lad nk3lod nk3luc nk3lus n2k3na n3kne n4ko4g nk3oge nkoot5 nk4ra n4krim nk3rol nk5se nk5si nk3sl nk3s4m nk3sn nk4s5o nk1sp nk1st n4kw nk3waa nk3wez nk3wi 2n3l 2n3m4 n3n n5n2e nnee5t nne3ne nnepo4 nne4p5ol nne5te nnet4j nn4i nning5r nnoot5 nno5v 3no_ 1noc 1no3d 2noef noen5s noes3 noet5s n5offi n3o2ge n5ogi 1nogr 3no\xc3\xaf no3kl no3k2w no2li 1nolo 1nom 4n3om_ n2oma n3oml n1oms n3omv 2n3omw 2nomz 3n2on_ 3n4onb 3nonc 4n5ond n4o5ni 4nont 3nood 4n5oof 4n1oog nooi5tj 3noot3 noot4j 3no3pa no4p3as 4n3opb no1pe n1opg n5opleidi no4poo no4por 2nops 2n3opz 2nord no3re 2n1org 1norm 4norr 3nors 3norz 1nos no3sf no3sn no3sp 1not 3nota not5a4p 5noti not3j not3r 3nou_ no3v 3nova no4ve 3nox 3noz 2n1p npers5te_ npi4s5 npoor4 npoort5j n3ps 2n3r nraads5l n5re n5ri 2ns ns3a4d n3sag n1sal ns3alp n1sam ns3an n3sanc n1sap n3s4cal n5scho ns4ci n4sco nsee5t n4sef nse4g ns5ege ns3eis ns5emp n3si ns3idi n2sin n5sing ns3inj ns3ink ns3int n1sjo n1sl n5sla_ n3s4laa ns5laag n5slag ns5lap_ ns5lapp n4sle n5slep ns4let n5sleu n5slib ns3lie n5s4liep n5slim n5slip ns5lot_ ns3m ns5mac n3s4me n3smij n3smol n4smu n1sn n2sna n5sne ns3nod n4snoo n4snot n1so n2s3ob n2sof n3sol n2son ns3ong ns3onz ns4opp ns4or n2s3ou ns1ov n4s3paa ns3pad n1spe n5spee n5spel ns3per n4spet ns4pi ns1po ns3pol n4spot n1spr ns5q ns5s ns4t n1sta nst5aang nst5aans nst3a4g n3stal n3ste ns5tec n4st3ei n4s5teko ns5teks n5sten_ ns5tent n5ster_ ns5tes ns3the n1sti n3stig n4stijv n1sto nst5oef n4ston n3stor nst5rade n5stree ns5trekk ns5troe ns5trog nst5roos ns5ty ns3uil n3sy 2nt n3ta n5taal n4t5aard ntaar5tj n5tab nt3ach nt4act nt1ad nt3aga n4t3art nt4as n5t4at n3te n5tec n4t3ei nte4lo n5tem n5te2n nte5nach ntene5ten nte5rad nte4rof n3t\xc3\xa8 nt3ha n4tho n5thol n5tig nt3inw nt4jo n3to nt4og nt4ol n4t5oli n5ton nt4oo nt5oog n4top nt3opl nt3opm nt3opt n1tr nt3rec nt3rei nt3rel ntre4s nt5ribb nt5rij n5troos nt4rou nt3rus n5try nts3a nt5slu nt1sn nt4sno nt1sp nt4spr nts5pre nt1st nt5ste n3tu n4t3uit ntu4n n5twijf n5t4wis 3nu_ 3nuc 3nue nu3en nu3et 4nuf 2nui 4n3uil nu2lo 3num nu2m3a 5numm nu2n 3nunc n3uni 2nu4r 3n4u5ri nu5ro 1nus nu4s3o nu3tr nut4st 4nuu 5nuut nuw5a nu2w3i 2nv nve5na 2n1w nx3 n3xe nxo4 1ny 4n3yi 4n3yo 2nz nzet5s 3\xc3\xb1 4o_ 4oa o3aa o2ad o3af o1ag o3ah o3ai o1al oa2m o1a2n oa4tiev o3au o3av o3ax 2o3b 4ob_ obal4 obalt3 3obj 1o4bli ob5oor o4b5o4r 4obr 4oca ocaat5 5o2cea o3cha o1che o3chi o3cho o3chr ocke4 4o3co oco3a oco3s4 oc3t4 od5ac oda3g ode4m5ar ode4mo ode5re odes4 odi3a o5dru od5sc od5sei od3s4i od2sl ods5lam od5slan od3sli od5smak od4s3o od3spo od4spr ods4t od5sta od4ste ods5te_ od5stek od5sten od3w o4e oe5an oe3as oe2d3a oeda4d oede4n oe2d3o2 oe4dr oed3re oed3ri oed3ro oe2d3u oed3w oe3e oe5er oe4f1a 1oefe oe2fi oe2fl oef3la oef5le oef3lo oe4f5o4 oe2f3r oege3l oeg5ij oeg1l oe4gou oeii4 oei3n oei5s4 oei5tj oei3tr oe4kaa oek5erk oeke4t oe2k3l oe4k3op oe4k3r oe2ku oek1w oe4lap oe4lar oel5dr oe4l3ei oe3lem oel5f oelo4 oe5loe oelo5p oel3sp oe4m3ac oem3o4 oen3al oe5n4e oen5gr oen3o oen4sn 2oep oep5ind oe4pl oe5plo oe4p3r oe3pra oe4ps oeps3e oe2p3u 4oer oe1ra oe4raa oer5aal oe4r3a4l oer4e oer5ei_ oer5eie oero2 oe3roe oer3og oer5om oer4sl oer4sp oer4sta oers5tak oers5te_ 4oes_ oe3sfe oe3si oe4sli oe4s3o4 oes4ta oes4th oe3sto oe4taa oe2t3h oe5t4i oe2tj oe4t3o4 oe5toe oe4t3ra oet4s3p oet3w 2o\xc3\xab of3ar of3at o4fav of4d1a4 ofd3ei of2d3o of2d3r ofd3w of3l o4fli o4flo 4ofo of3om o3foo of3op o3for of3ox of1r o3f2ra of5se of4sl of5sla ofs3le of2sp of3spe ofs3pl of3spo ofs3pr ofs3tr ofs5tra 4oft of4tu oft3ur oft3uu of3ui og5ac oga4l og3al_ og5de og3di oge4d oge5laa ogel5ei 2ogem o3ger oge4ro oger5on oge4s3t 2og5h 1ogig og1l og5ne og3op og3sp og3sta og4st5ei og3sto og4ston og4str ogs5tro og3ui o3gy 2o1h 3ohm 4oi oi3do oi1e oi3j oi5k o3ing oi3o4 oi3s4 oi5sc ois2p oist2 ois5tj o3\xc3\xaf 2o1j 2ok o3ka_ o3kaa o4k3aas ok3ab ok3ag o3kal ok3ank o4k3a4z ok3ef o2k4l ok5let o4kli ok5lu o2k3n ok3o2l ok3op_ ok3o4pe okos5 o2k3ou o2k3r ok4ra ok1sa ok3s4l ok3sn ok5spri ok1st4 oks5te_ ok5sten ok4s5tr ok5te okter4s oku4 ok3ur ok3uu ok1w ok2wi o1la o3l4ab ol3ac o3lal ol3a2p ol3arm ola3s4m 4old ol3d4o ol3d2w o1le o3le_ ole5g ol1ei ol3eks ol3emm o3len o5ler oleu2 ole3um ol3exa ol2fa olf3l ol3fr olf5sl ol2gl ol2g1o olg5rap ol4gre ol4g3ri ol2g3u o3lia o3lic o5lid o3lik o3lin o5ling ol3int o3lit ol3kaf ol5ke ol2kr olk4s olk2v ollie4 o3lo o5loc olo3k ol4om o4lop ol3op_ ol3opp olo3s4t olo4ve ol4pra 4ols ol5se ol4s5h ol5si ol1sj ol3s4l ol3s4n ol3so ol3sp ol5ster 4o1lu ol3uit olu4r 4oma om2aa om1ac om1af o3man 4ome o4m3ef om3ela omen4s omen5ste_ ome5ren omer5kl ome5sp ome5t om2i o4m3int 4omm 4omo omo5l omo3s om4p5ei 5omro om3sl om4ste_ om3ui 3omz on1ac on4ag o4n3am on4an on3ap ona3th 2onc on4d3ac on5d4as on5der ond5ete on4d3id ond5ijs ond5om_ on2dr ond3re ond3ro ond5sj ond5slo on3d4u on4dur o5ne_ o3neb o2n1e2c on3ei on3erf on3erv one3st 4onet_ on1e3v ong5aan ong5aap ong3ap 4ongen ong5le ong2r ongs4 ong5se ong3sp ong3st on5id o5nig on4k3ap onke5lap on3k2i on4k3lo on3kn on5kw onnes4 onne5st o4n3of ono3l on1on o2n1ov on3sc ons4e on5sei ons2f on3s4m on2s3n ons5op on3sor on1s2p ons4pe on3spl on1st on5sten on5str 4ont_ on4taa 3ont1h on4tid 3ont1s4 ont5sp 3ontv 1ont3w on1ui on3ur o4o2 4oo_ oo3c 4oo4d ood1a ood1e4 oo5de_ ood1o ood1r ood3sl ood3sp 4oof oo3fi oo4g oog1a oog3e oo5gi oog1r oogs4 oog3sh oog3sl ook3a oo3ke ook5l ook3s4 ook5st oo4k5w oo4l ool5a2 oole2 ool3ed ool5f ool5g oo5lig ool3ij ool3k ool1o4 ool1u oom5a4 oo3me oom3i oom1o4 ooms5te_ 4oon oon5a oon5du oon3in5 oon5k4 oon1o oon5ta oo4p1 oopa2 oop5ee oop3o4 oop3r oop4sp oor3a oord5aa oor5dop oor1e4 oor3g4 oor5i oor5k oor5m oor1o oor3sm oor5ste oor5sto 4oort oor4th oo4s oos3a oo5se oos5n oo4t oot1a oot3es oot3h oot5o oot3r oot4sl o1\xc3\xb6 2opa o4p3ac op3ad o4p3af o4p3ak op3am o3pan op3and op3at_ op3att 3opbre 3opdr o3pe_ op3ee op5eet op3ei o1pel o3pen_ 3o4peni o5per_ o4pera op3e4te op3e4v 4opf o1pi o5pic op3i2d opie5t op3ijz op3in_ o5pina o5pis 4op1j op3l op5los 1opn o1po opoe3 op1of o5pog o5poi o5pol op3ond o5poni op3ont op3ord op3o4re op3o4v op1r op3ric o4pru o4ps op5s2c op5se op5si 3ops4l ops4m op3sma op3sn op3so op3sp op3sta op3su 2opt 4opt_ op5tr op3ui o2p3u2n o1ra or3ach or3act or3adm or1af ora4g o4r3alg or3ana o5rate or4daa or4d3as or4denv or4do ord5ond ord3or ord3o4v or3dr or4drad ord3w o1re ore5ad 4orec oree4 ore4no or2gl o1ri o5ria 3ori\xc3\xab o5rig_ o5rigere o4r3ink or3ins ork2a or5k4e or3kl or5kn or3kw or4m3ac or4mas or4m3ei or4n3ac or3ni orno3s4 or3oe o3rol or1on or3ont or1oo or1o2p or3or o3ros or5ov 4orp or4p3ac orp4s5c or3sag or5sc or5se or3sli or3smi or3so or4son or3sp or5s4pa or5spu or4t3ak ort5een or4t5ijl or2to or4tof or4t3oo or4tred ort5sp ort5ste or1u o3ry orzet5 2os o4sac o5sas o3sau 4o3s2c osca4 o4sci o5s4cl os3cu o5sed os4el o5ser os3f os4fe o4sha o3shi os2ho o3si o4sj os5jer_ o4sk os5ko os3l os5li4 o4s3m os4n os5no o3s2o os3pa os3per os1pi os4pir o4spr os4s5m o2s3t os4ta os5taal os5taar osta3c ost3a4g os5tan os5tar o3stas o3stat os5te_ os4tem o5stero\xc3\xaf os4th os4to os5toli os5tou ost3o4v os5tra_ os5traa ost3re ost3ri o3stro os5trum os1tu o3sty o3su o5sy 4o1ta ot3aar ot1ac ot3af o3tag ot3akt ot3app ot3art otas4 o5tat o3te ot3e2d o5tee_ o5tees o5teg ot3ei ote4lan o5ten o5ter oter5sp ote4st ote4t ot3eta o1th o2t1ho ot3hu o4tj otje5sp otli2 o1to ot3off ot3olv o5tom ot3ont ot3opm oto5po ot3opr o5t4or oto3s 2otr o1t4ro ot3ru ot5s4i ot2sl ot3sla ots3li ot3smo ot3sn ot3sp ot4s3pa ot4ste_ ots5tek ot5sten ot4stu o1tu ot3ui o3tul ot5w 4ou_ ou5a ou1c ou4d1a ou4des ou2do ou1e oue2t3 ou3k4 ou4ren ou5ren_ ou5renn ou2r3o2 4ous ou3sa ous5c oust4 ou2ta out3h out1j ou2t3o out1r out5sp out5ste ouw3a ouw5do ouw5ins o2v 2o3va o5ve_ 2o5vee 3o4verg over5sp over5ste o5ves 2ovi ovi5so 4ovl 4o3vo 4ovr ovu3 4ow o1wa o1we o5wen ow3h o1wi ow2n o3wo ow3r o4x oys4 ozet5 \xc3\xb63l \xc3\xb61p \xc3\xb6pe1 \xc3\xb64r \xc3\xb6s4 \xc3\xb6s5t \xc3\xb65su 4p_ 4paan paar5du paar5tj 5paas 3pab p3acc 2pach pacht5s p4aci 5pacu 3pad_ pa4da 4padv pa3e 4p3afd 1pag pag2a pa4gen pa3gh p4a5gi 3pak pa2k3a 4p4ake pa4ki pa4k5l 2p3alb 3pale pal3f pa3li paling5s palle4 palm5ac pal4mo pa4m pa3na pa4n3a4d 5panee 5panel 4pank pan5sp pan4tr 1pap pa4pe4t 5papi pap3l pa3po pa3pr 4par_ 3pa3ra p3arb pard4 par3da 3park par4ka par4k5l 3parl 4parm pa5ro 4parr par5ta 3parti part3j 3partn pa5ru paru5r 1pa4s3 pa5sa pas5c pa5se pa5so pas4th pas5to pas5tr pa5te 1path p3atl 3pa3tr pats5te_ 2paut 5pauz pa4vl 5paz 2pb4 2p1c 2p3d2 pe4al 4peci p3e2co 3pectu 1ped pe3de pe3do p4ee4 3pee_ 3pee\xc3\xab pee5li 4peen 5pees 3peg 1p4eil pei4l3a 4peis pek5ee pe2k3l pe2k3n pek5s p4el pe3l4aa pe4l3ak pel5dr pe3le pe4l3ee pe4l3e4t pe3l4i pe3l4or pel5si pel3so pel3sp 2p3emm pe3na pe4nak pe4nap pe4nau pe4naz p3ency pen5d4r penge5 pen5k 5penn pen3sa pen5sl pen3sm pen5sp pent4 pen5to 2p3epi pep3o pep5s p4er_ pe1ra pera3s4 per4at 3perc pe4r5eg pe5req 1peri peri3s per1o pe3ron pe5ros 3pers per4sm per5sti per4str p2ert 3pes pe3sa 3pet_ pe5ta 5pe5ter 3peti pe4t3ra pets5te petu5 3peuk 5peut 1p\xc3\xa9 3p\xc3\xaa 2p1f 2p1g pge5s 2p1h4 4p3ha 3p4hec p4his 4pho pi3am pi5an pi4at 2pid piek5la 5piep pie4r3o pie4s3p pie4tj pi2g5a pi3gl 3pij_ pij3k pij5ke pij4li 3pijn 5pijp pij4p3a 2pijz pi4k3l pilo5g pi5nam 2pind 3pinda 3p4ing 5ping_ pin4ga pin5gri 4p3inj pink3r pink5s 4pinr 2pins pin4ta pi5o pis5n pis5ta pi3th pit3j pit3r pit4sp 2p1ja pjes5 p3ji p1jo 2p1k pkaart5j p2l2 p3la_ plaat5j 2p3lad pla3di 4p3lamp 4p3lang p4lant p3lap 1p4las 3p4lat pla4t3r 5p4lay p4lec plee5tj p3leid 3p4len p3lep pleu5ro p4lex 2p3lig 4plij p4lom p3lone p5lood plooi5tj p3loon p3luie 2p1m pmans5t 2p1n p3na 3pneum 3po_ poda5 3poei poe2s3 poes5t poets5te_ 3poez 3po\xc3\xab p2ofa 3pogi po5gr po2k3i2 po4kol 1pol po5l4o polo3p pol4s pols5te_ 1pom 2p3oml 3ponds pon4sm pon4st pons5te_ pon5ta 5pony poo3d poo5de 4poog_ 3pool poo5len 4poor_ poor4tj poot3 po4p3a 4popd 2pope pop5h 2p3org 2p3ork po3ro p4ort 5portef por4to por4t5ra po3ru 1pos po1sa po3sf po4taa po4t3as po5te potes5t pot1j pot3r 3poul po3v 4p3p p5pa p5pe ppe4l3o ppe5ni pper5ste ppie5k ppij5p p4ps pr4 p2ra 3pra_ p5raad praat5j p5rad 3prakt 4pram p5rand 3prao 4p3rap p4rat p4rax 4preeku 1prem p3remm 3prent pren4t5j 3pres p3reso 3pret pre4t3j pret3r 4pric 4p3riek 4priet prie4t5j 1prij 3prik 3princ pring5s4 5prins 3p4rio 3p4riu 5priv 5p4rob 3p2roc 1p2rod p3roed 3proef proet5j 3proev 5p4rof 5p2rog 1proj pro3la 3prom p3rood prooi5 pro5pa p4roq 3pros pro5sc pro4s5t pro3t4a 3proto 3pro5v 4proy pru2t prut3o4 2ps p3sab ps3a2g p3sak ps3ar ps3ass 4pse ps3erk p4s3et p3si p4s3i2d p4sin p5sis p1sl ps3le ps2me ps5mi p4s3na ps3neu p4sof p3sol ps3opt pso4r p1sp ps2pl ps3ple p1s4t p3stat p3ste ps5tent ps5tes ps5th ps3tor ps5tron p3stu ps5ty 3psy 5psyc p3sys 4p1t pt3ad pt3alb p3te p2t1h p5ti pt3j p4t3o4v p3tr pt3ric 1p2u 3pub pu3ch pu3e puil3o pul4st 3pun 4pun_ punt3j 3put_ puter5in put1j pu2t3o put3r put4st puts5te_ 2pv pvan4 pvari5 2p1w 1py1 2p5z 1q 5qe qu4 que4s 5quo 4r_ r2aa 2raan 4raand 3raar 5raar_ 4r3aard 5raars raar5tj 2rac ra4ca ra3ce 5racl rad4a 3radb ra5den ra3di 5radia 3radio 4radm 4r3adr 3rad3s 4radv 2rafd r4aff raf5ond ra3fra 3ragez ra5gi ra3g2n ra5go rag4s 3rais raket3 ra3k4l rak5r 4r3a2la ra4l3ee 4r3alf r3a4lim r3alt ra4man r5ameu ra3mi r2amp 4rana ran4dr ran4g3o ran4gr r5angst_ ra4nim 4ranj ran4kl rank3w ran4sa ran4st ran4t3j r3antw ra3o 4rap_ ra3po 4rappa rap5roe ra3q 2r3arb r4a5re 4rarit 2r1arm 4r3arr 2r1art ra5sei ra4sk ra4sl ra1so ra2sp ras3po rast5ri r4ati rat5j ra4tom ra4tra ra5tri rat3sp rat4st rats5te_ ra3t4u 2rau 3raus r1aut 5ravr ra4zij rbe4ti r1c r3ce rces3 r3chi r3co 2r1d r4d3act rd3alk rda2m rd5ama r3dan r2d3ar rd3ei r4d5e4las rden5dr rde5o4 r4derva rde5s4t rdi3a rdi5o rd5l r3do r5doc r4d3ol rd5olie rd3ont rd3oos rdo3pe rdo3v rd3ras rd3res rd5roos rd2ru rd3sa rd3s4c rd3so rd1sp rds4t rd5sta rd5ste rd3su r3du rd2wi rd5wo 3re_ 1reac re4ade 4reak re3amb 4re5at re3co 3recr rec5ta 3reda 3redd rede4s3 4re4diti 3redu re5dw ree4k 2r1een ree3n4e r5eenh ree2p reeps5 ree5r4ad 4reers reer5ste r3eerw ree4s ree5sh r4ef 4refb 2reff 3refl re3fu 1reg 4reg_ 4regd rege5ne rege4s 4regg 3regi re3gl 4regt 4reie 4reil 4reind rei5tj 5reiz re4kap 5rekeni re2k3l re2k5n re4ko re4k3re rek3sp re4ku re1kw rel4di rel4d3o reld3r re4l3ei rel5k re4lu4r 3rem_ re4mai remie5tj re5mo5v 2remp 3r4en_ re2na re4naa ren5aar re5nade re3nal re4n3an ren3a4r r4end 5rendee r5endert re5ne_ re4nel re5nen_ ren5enk ren3e4p re5ner_ ren5erf ren5erv 5renf 2r1eni 5r4enkl r4enn re4noc ren4og ren4opl re3nov 5r4enp 4renq ren4sl r4ento r3entw r5enveer re4of re4op4 re5pa 3repet re4pie 4req re3qua 4r1erf 2r1erg re3r2o rer4s 2r3ert 4r5erv 2rerw re3sa re5se re4sl res5le res3m re2s1p res3t re4tem re3t4h ret4i re4tik re5tin 2retn re4t3o4g re4t3oo rets5te_ re2u reur5es reus4t reu5ste 3revis 3revo 2r3ex r4f3aa rf3act r2f3a4g rf3al r3fas r3fe r4f3eng r1fl r4f3lag rf3lev r2f3li rf3lus r4f3op r1fr r4f3re r5frea rf2s2 rf3sm rf3sp r4f3u4r rf3uu r1g r4g3ab rg3amb r4g3een rg3ei rg4eis rgel5dr r5gen_ rge4ra rge5rap r4g3ins r5glas r3glo r4g3lu rg4o3v r5grij rg3rit r3g4ro rg1s4 rg2sm rg5so rg4s5pr r3h ri5abel ri4ag ri2ak ri5an rias4 ri4av ri4bl 4rice ri3co ridde4 ri3di ri4dol ri4doo rie5dr rie4k5ap rie5kl rie3kw rie4la riel5aa rie4lei rie4ro rie4ta riet3o ri1eu ri3fl ri3fr r4ig ri4gaa ri3gl 5rigste r4ijl 4r5ijl_ r5ijld r5ijlt rij5o rij3pl rij3pr rij3sp rij5ster rij4str 4rijv ri4k5l rik5n ri3k4o ril5m ri3ma rim4pr 4r3inb 4rind ri5ne 4r5inf r4ing 4r5ingan r5ingeni ring5l 4r3inh ri4nit rin4k3l r3inko 4rinkt r3inl 4r3inna 4r1inr 4rins r3inst 4rint 4r1inv ri5on ri3o5s ri4sam ri3sc ri3sot ris5to rit3j rit3ov rit4st rits5te_ rit5sten 3ritt r5j4 rjaars5 r5ka_ rkaart5j rk3adr rk3af r2kah rk3ang r4k3art r2k3ei rke4n rken4s rker4sl r4k3erv rke4s rke5stree rke5strer rk5iep rk3ijv rk3inb r4k3ink rkjes5 rk3lag r4k3lat rk5leid r2klo rk3loo rk3lus r3kn r4kne r2kob rk3olm rk3omg rkoot5 rk3opg rk3ord rk5os_ rk5oss rk2r r5k4ran rk4ri r5kris r5kron rk1s rk3s4f rk5si rks4p rk4t5e4v rkt3h rk4ti rkt3o rkt1r rk3uit r1kwa rk3waa rk5wat rk3wee r1kwi rk3win r3l rlaat5ste rle4g3r rlink4s rlinks5te rlofs5 rlui5t4 r1m rmaf4r r4m3art r2m3eb r2m5eg rme4r3a4 rmes3 rme4t3j rmet5st rm3inh rmi2s r3mo r5moe r4mop rm3opm rmors5te rmos5f rm3s4a rm1st rm3uit rmun4 2r1n r3na r5n4am r4n3ap rn3ars rnee5t r4n3ene rnes3 rne5te rne4t3j r2n5id r2nin r2n1on rn3oor r5noot rn3ops r5not rn3ove rns4 rn3sm rn3sp rn1st rn3sta rn3th rn5tj rn5to r3nu rnu5r ro1a ro5ac r4oc ro1ch ro3d4o 3roe_ 4roef 4roeg roe4g3r 3roem roens4 roen5sm roep3l roe4rei roet4j 4roev 3ro\xc3\xab r5offi r4ofi ro3fl roges5 1ro\xc3\xaf ro3kl 3rokm rok3sp r4ol_ ro2l3a role5st rol3g2 2roli rol3ov ro5ma ro3mo 4romz r2on_ ron3a4d 5r4onal ron4da ron4d3o ron4d3r ron4d5u r2one r2oni r2onk ron4ka r2onn r2o1no r2ons ron4ste rons5te_ 4ron2t ront3j ront3r ro3nu 4ronv 3roof 2roog 4roon 2r1oor root5ste ro3pa ro4paa ro4pan 4ropb ro1pe ro5pee ro4pin ro3p4la 4ropn r4opo rop5rak rop3sh r4opte ro4pu ror5d ro3ro ro3sa ro5se ro3sf ro3sh r4o5si ro3sp ros4s5t ro5stel ros5tra ro5te ro3t2h rot3j ro5ton ro3tr rot4ste rots5te_ r1oud 3rou5t4 ro3v ro4ve ro5veri 4roxi 3roy r1p r3pa rp3aan rp3adv rp3ank r5pee rp3eis rpi3s r2p3j rp4lo rp5lod rpoort5j r4p3o4v r4p3rec rp3ric rp4ro r3psa rp4si rp2sl rp3sli rp5spe rp4s5to 2r5r rre4l3u rren5s4 rre5o rreu2 rri5er_ rrie4t rron5k rrot4j 4rs rs3a2d rs3a2g r3sal rs3alm rs3amb r3san rs3ana rs3ap rs3ar rs3as rs4asse rsa4te r5schi rs2cr r4s3eis rsek5ste rs4et rseve3 r2s3ez rs4fer rs4hal r3s2hi r3s4hoc rs3hot rs3ini rs3int r4sj4 r5sjac r5sjou r5sjt r3s4kat r1sl r4slan r5slec r5slep r5sleu r5slib rs4lie r5sling rs3lob rs5loep r4s3loo r5sluis rs4m r5smaak rs5maal rs5mak r3sme r3smij rs5mis r5smit rs5mu r1sn r2s3na rs3neu r2s3no r1so r5sol rs3ong r2sor rsorkes5 rs1ov r1sp r3spaa rs3pad r4s3par rs4pare r3spe r5spec r5spee r5spek rs4pene r4s3pet r5spit r5spoe r5spog r5spon r5spoo rs3pot r5spraa r4spu r5spul rs3put r1s4t r4s5taak rst5aang rs5tas r5stat r3ste r4s3te_ r5ster_ r5sterk rs5term r5sters r5stes rste5st r4steva r3sti r4stit r3sto rs5toma r4ston rst5ora r3str rs5trap r4st5red rs5trei r5stren rs5trog rst5roz r3sty r3su rs3usa r3sy 4rt r1ta r5ta_ r4t3aan rt5aand rt5aanv r4t1ac rt1ad rt3af_ rt3aff rt3am r5tans r2tar rt3art r4tau r2tav rt5c r5teco rt3eig rt3eil rte4lei rt5emb r5ten_ rte5nach rte3no rte3ro rtes4 rte5sta r2t5e2v r4tha rt1he r3ther rt3hi r1tho rt3hol rt3hu rt3hy rt4ij rtij3k r4t3ini r4t3ink rt5jesc r3to rt3off r5tofo r5tok rt3om_ rt3ond r4t3op r5tori r1tr r3tra rt4rap r4t3ras rt3rec r5treden_ r3t4rek r4t3res rt3ri r4t3rol r2t4ru rt5ruk rt5rus rt4s5eco rt5sei rt2s3l rt3sle rts5li rt4slu rts5m rts5no rt4soo rt1sp rt4s3pr rts5ten r1tu rt3ui4t rt3w rt2wi 5rubr rude3r ru1e 4ruf ru2g ru4gr r5uitr ru2k 4ru3ke ruk3i rul3aa rul3ap ru2li ru4l3ij ru3lin rul5s r2um ru2mi 3run_ r2und runet3 4r5u2ni ru3niv ru4r ru5ra ru5re_ ru5res r2u4s rus3e rus5tr 4rut rut3j rut4st ruts5te_ 4ruu ru3wa rvaat5 rval4st rvals5te_ rvers5te_ rves4 rve3sp rvloot5 r1w rwen4st rwens5te_ r4wh rw2t3j r3x r3yu 4rz rzet5st 4s_ 5sa_ s1aa 1saag 5s2aai saai4s 3s2aal 3s4aat 1sab sa3bo 2s1ac sa2ca 3sacr s1adv 2s1af 3safe 3safo sa3fr s5agg s4a3gi 3sagn sa3go 3sah 3sai 3saj 2sak 3saks s1akt s2al 5sal_ 3sa3la 3sald 5salh s3all 4salm sal5ma s3aln 3s4a3lo 3s2ame 5samm sam5p 4sa2na sa3nat s4anc s2a3ne s4ant san4t3j sa2p 3sap_ sa3pa 2s3ape sa4pr sa5pro sa3ra s1arb 3sard sa2re s1arm saro4 sar3ol s4ars 4s1art sart5se 4sas_ 3sasa sa3sc 3s4ast 1sat 3sa3te 5sati 2s3atl 2s1att s3aud 1saur 3s2aus s1aut 3sauz 1sax 4s3b s5ba s5be s5bo 1sc 2sca 4sce 5scena 5sc\xc3\xa8 3s4ch2 4sch_ sch4a 5schak 5schap 4schau 5sche_ s5chec 4schef 5schen 4scheq 5scher 5schev 5schew s2chi 4schir 5schol 5schoo 5schot sch5ta 2sci 4scl 2sco 3s4cola 3scoo 3scope 5scopi 3s4co5re 3scout 2scr 4scris 2scu 2scy 4s1d s5de s4dh sdi5a sdis5 s3do s5dr s3dw 3se 5se_ se2a se3ak se3al sear4 se3au s4eb 4s3ech se3cr 5sect 4secz s4ee 4s5eed 5seei 4s1een s5eenh see4t see5ts 4seev s1eff se3ge 2s5e2go seg2r 4s3ei_ 4s3eig s4ein 5sein_ 5seine 2seis seis4t sei5tj 5seiz sek4st seks5ten se1kw s2el 5s4el_ sel3ad se4l3a4g se4lak se4las se3le 4s3e4lek sel3el 4se4lem 4self se5ling 4s3elit sel5k 5selm selo4 5selp 5s4els sel3sp 5selt se2l3u s4em se4m3ac s5emm sem3oo s4en 5sen_ se4n3a4g se5nan se4net 5sengr 5senh sen5k se4n3o 4s5enq sen5tw 5s4er_ se1r4a ser5au 5se3r4e se4ree se5ren s4erg 5sergl s5ergo 5sergr ser4i se5rij 4s3ern se3ro se5rop ser2s sers3p ser3st sert5w se3ru s4es se5sc se3sf 2s5esk 5sess se4t se5ta 4s3ete se5ti se3tj set3r se5t4ra set5st 4s5etu set3w se3um se4ven 4s1ex 4sez se2ze 3s\xc3\xa9 3s\xc3\xa8 2s1f 4sfed s5fei 4sfi 4s5fr 4sfu sfu5m 4s5g sgue4 s1h s4ha_ sha4g s5hal_ 3shamp 4she sheid4 sheids5 s5hie 5s4hir sh3l 4shm s3hoe s3hoo 3s4hop s2hot s3hote 3show s5hul 1si 5si_ 5s4ia si5ac si3am si5an 5sic sici4 si3co 3sie_ 3sie\xc3\xab sie5fr sie5kl siep4 sies4 sie5sl sie3so sie3st sie5ta sie5to si5\xc3\xa8 si1f4 5s2ig si5go5 s3ijv 4s1ijz 5sile 4s5imper 3simu 5sina s3inb 4s3inc 4s1ind 2sinf sing4 3sing_ s3inga s5ingeni sin3gl s3in5gr s3inh 4si2ni 4s3inko sin5kr 4s3inm s4inn 4sinr 2s1ins 2sint 4s5inv 4s3inz 3sir 5siro s3irr si4s sis3e4 sis5ee sis3i sis5tr 3sit si5to sito5v si3tr si4tru si5tu 3siu 3siz sj2 4sj_ 3s4ja_ 5sjab 4sj3d s1je 2s3je_ s5jeb 3sjee 3s2jei 1sjer sje4ri s3jes 3sjew 3s4jez 4sj5k4 5sjof 4s3jon sj3s2 sjt4 s5ju 2s1k2 skaart5j s5kad s4kele s5ken 3s2kes sk4i 3s2ki_ 3skied skie3s 3ski\xc3\xab ski5sc s2k3j s3ko s5kre sk5ruim sk3ste 4sku s3k4w s2l4 3s4la_ 5s4laan 5slaap 4s5laar 4slab s4lac 4s3lad 3s4lag 5slagm sla4me s5lamp_ s5lampe 4s5land 3slang 3slap 5slape sla3pl 4s3las 2s3lat 3s4la5v 4slaw 3s4laz s3led 3s4lee_ 5sleep 4s5leer s4leet slee5tj 4s3leg 2s5lei s5leng s3leni slen4st slens5te_ 3slent s4lep 4s5ler s5les sle4t3j 3s4leu s5leug s5leus 5sleut 2s5lev s3li_ 4s3lic 4slid 2slie s5lied s3lief 3s4lier s3lif s5lig 4s3lijf 5slijp 4s5lijs s4li4k sli2m slim5a s5lini 4slinn s4lip 4s3lit slo4b5 2s3loc 3s4loe 3slof 4s3log s3lol s3lood s5loon s5loos 5s4loot3 s3los 3slot slo4tr 4s3lou 4s5loz 4s5luc 1s4lui 4s5lui_ 4sluid 5sluis_ sluis4t slui5ste 5sluit 5sluiz 4slun 2s5lus 4s3ly s1m 4s5maat 3smad 3smak_ 3smal 2s5man s5map s4mart 4s5mat 4s5mec 5smeden 3smeed 5s4meet 4s5mei 4smelo 4s5men 4s5mes3 5smid_ smie2 smies5 s4mij s5min 5smok s3mon 5smuilden s5muile 5smuilt s2n4 s5nam 5s4nap s4nar 3snau 3s4nav 3s4ned 3snee snee5t s5neg 5s4nel 2s5nes 4s5net sneus4 sneu5st s5neuz s3nie 1s4nij s5nim 3s4nip 4s5niv 4snod 3s4noe s3nog 2snoo s4nor_ s3norm sno5v 3snuf s4nui 2snum 3so_ so4bl so1c s3oce 3s4o3d 1soe 2soef 3soep soes3 2s1off 3soft 2so2g 3so3ga s1oge so3gl 3sogy 5soi 3so\xc3\xaf 3sok s2ol 5sol_ so3la so3le so3lis 3so5l4o3 solo5v 5sols s2om 3s4om_ 5somm 2s3oms s3omv 2somz 5s4on_ 3sona so5nar s3onb 2s1ond 2song 3sonn 3so3no s4ons 2s1on4t3 4s3onv s3onw 3soo 4s5oog 4s3ook 4s3oor_ s3oord 4s3oorl 5soort 2s1op 3s4op_ 4s5ope so3phi s2o5po so3pr 3s4opra sop4re s2orb s3ord 2s1or3g 4s5ork sor4o so3ror sor4st 3s2ort sos4 so3sf s4ot s3oud sou2l sou3t 2sov s1ove 3so5z 4sp_ sp4a 5spaak s3paal 5spaan 5spaat 2spad 2spak 5spake s4pan 3spann 4s5pap 5spar_ s4pari 5sparr 2spas5 5spatt s3pau 5s4pea 4spectu 3s4pee speet3 4s3pei s4pek 5spell 4s3pen s5pen_ spe4na s5pep 4sper s4per_ s5peri s4perm 5s4perr 4spes s3pez s3pid 1s4pie spie5tj 4spijn 4spijp s5ping 5s2pio s3pis spi5sto 2s1p4l 4s5pla s4plet s2pli4 5splin 3split s3plo s3plu sp4o s2poe s3poes 4spo\xc3\xab 4spog 4spol 2s3pom s4pon_ s4ponn s2poo s3pop 5s4pore s4pori 4s3pos 5spots 4spou 4sprakt 5spray s5pred 5sprei s4prek 4sprem 4spres 5spreu 5spriet 4s5prij 4sprik 4sprob 4sproc 4s5prod 4sprof 4sprog 5s4pron s4proo 4spros 4s3ps 4spt s2p4u 4spub 5s4pui 4spun s4pur 5spuw s4q 4s5r sraads5l sro5v 4s3s4 ssa1s2 s4sco s4s5cu s5se ssei3s sseo4 s5si s5sl s4spa s5spaa ss5pas s5su s5sy s2t 4st_ 5staaf 5staan_ 4staang 4staanw staart5j s4taat staat5j st3abo 2s4t1ac 3stad 5stads 2staf 5staf_ sta4fo s4tag s4tak 5staki 4stakk st3akt 4s3tali 5stam_ 5stamm 3stamp 3s4tand stan4s s4tap 4stapo s4t3arc 4stari 2stas stasie4 5statio 4stau st3aut s4tav 4stavo 4s5tax 4staz 2stb 2st5c 2std 4stea 5steak 4stec s5tech 5steco 3s4ted 4stedu 3steek 3steen 4steenh s5teer stee5t 5stein 5stekar 5stekk 5steldh ste4lee st5elem 3stell 5stem_ 5stemd 5stemm 4stemo 4stent 4stenu ste5ran 4sterm ster5og st5e4ros 5sterren s5teru 4ste4s 4s4t3ex s4t3e2z 2stf 4stg 4sth s4tha st3hed st5heer st3hek s5them s3ther st1hi s4t1ho s4t1hu s4t3hy 2stia 2stib 4sticu s4t3id 5stiefe s5tiev 4stijd 3s4tijg 5s4tijl st3ijs 3stils s4tim st3imp sti5ni 4stins 4s5tint 4stite 2stiv st3ivo 4s4t1j 2stk 4stl 2stm 2stn 2stob 2stoc 4stoef 3stoel 5stoel_ 5stoele 4stoen 4stoer 4stoes 4stoez 3s4tof st3o4ge 5s4tok s4tol sto5li 4stoma 4stomz s4tong 3s4too 4st3oog stoot5j s4top st3o5pe st5opto 4stora sto4rat 4stord sto5ri 4s5tos s4tov 2stp 1s4tr 4stra_ straat5j 4st4rad 3stra4f 5straf_ s5trag 4strai 4st3rec s5tref 4streg 4s3trei 5strel 3strep st3rif st5rijp s5tris 4s3troe s5troep st4rom 5strook 5stroom 4stroos st5roos_ 4s5trou 4stroz 3stru 4strui_ 5struik 4st1s4 st3sc st5se st3sf st3sk st3sl st3so st5sp st5st 2st5t2 1stu 4stub 4stuc 5s4tud 4stuin stui5tj st5uitk 5stuk 2s4tun st3uni stu4nie 4stus 2stv 2st3w 2s4ty 1styl s5typ 2stz 1su 5su_ 5sua 5su4b1 suba4 sub5e su5bl 5suc 5sud 3sug 2sui 5suik 4s1uit 5suit_ s5uitl 5suits_ 5suk 3sul 5sum 4s1u2n 5sup 5surv su4s sus3e suur5 4s5v svaat5 svari5 sve4r sve5ri 4s1w s5wo s4y 3sy_ 4syc 3syn sy4n3e 1sys5 4s5z 4t_ 3taak_ t4aal t5aando t3aank taan4st t3aanw t3aap taar5sp 4t3aas taat4st taats5ta 3tabe 3tabl 2tac ta2ca 3t4aci 4tad ta4de t3ader 5tado t3adr tad4s3 t3adve 2taf_ 2t3afd 5ta3fe 4taff t3afha t4afr ta3fro 4t1afs 2t3afw 4tafz ta4gaa 5tagee 5ta5g4l tag3r 5taka 5takg 5takken ta3kl 5takn 5takp 5tak3r 5taks t2al ta3laa ta5lact 4talb 5tale_ 5talent ta3li 5talig t5allia talm3a 4talt ta4mak 4tamb t3amba 5tamen tament5j 4tamp t3ampu 5tan_ 4t3a2na ta3nag ta3nat tan4d3r tan4k5r ta3o t4ape 5tapi ta3pl 5tapo ta3q ta3ra 4t3arb 5tari 4t1arm ta2ro4 tar5sp tar5taa t3arti 3tarw 3tas 5tasa 5tasj 5taso ta3s2p ta3sta ta3str ta3sy 4tata 4tatio tat5j 4t3atl 3tatr 3tau 4taut 2t1avo 3tax t3a2z 4t3b tba2l 4t3c t4ch t5cha t5che t5chi t5chu 4t3d2 tdor5st tdo3v 1te 3tea te3akt 5tea4m 3tec 4t3echt 4teco te4dit t3edu tee2 teeds5te_ tee4g 4teek tee4k3l teem1 4tee4n t5eenhe 3teer tee5rin tee4t 4t3eeu t4ef t5eff 3tefl 3teh 4t3eier 4teig tei4lo t4ein t5eind 5teit tei5tj 2t3eiw 5tekene 5tekens 4teker 4tekk 3teko te4k3om 3teks te3kw te4k3wi t4el tel5ant te4lap tel5da 4telec 5teleco t5elect tel5een 5telef 5teleg tel5ei_ tel5eie tel5eit te5lel 5telev 5te5lex tel3f tel5k te4loe te4l3o4g tel5oog te4l3op telo4r tels4 4telse tel3so tel5su te4l3uu t4em 2temb 4temm te4mor tem3ov 5temper 5tempo t4en ten4ach ten3a4g te3nak te5nare te4nau tene2 ten3ed ten3el tene4t 3tenh ten5k4 te5nore 4t5enq ten5scr ten3sn ten3sp tensu4 tens5uu 3tent 5tenta 5tenten_ ten5to t3entw 5tenu t2er teraads5 te4r5aak ter3a4b tera5ca te4rad tera4de te4r5af ter3ag te3ral te4ran ter3ap ter3as 5terec te4rei ter5eik te4rel te4rem te5ren_ te4r5enk te4r5env 4t4erf_ 4terfd ter3fr 4t4erft te4r5in_ 3terj 4terk_ 4terkt ter3k4w 3term 5term_ 5termi ter5oc te3rod te3rof te3rog 5teron te5rons tero5pe tero4r te3ros 5terrei 5terreu 5terror ter4spr ter5ste_ ter5ston 3tes te3s4ap tes3m te3so tes3ta te5stel tes5ten test5op test5ri test3u te3ta te5tr 4t3euv t4ev t5e4van teve4r 5tevl 3tevr 2tex 3tex_ 4t3exe 4texp 1t\xc3\xa9 t\xc3\xa83 4t3f 4t3g2 tgaat5 t5ge tge3la tger4 4th_ 2t1ha t3haa t4haan t4had t3hak t5ham t4hans t3har t3hav 5thea t3heb 5thee_ 4t3hei 4t3hel 3t2hen 5theo 1t2her 5the3ra 4t3here 3thes 3thet t4hin 4thm t1hoe t2hog t3hok t1hoo thoof5di 4t1hou t3houd 5thous 4t3hov 3thr 2thu t1hul 4thum t4hur 3ti 5ti_ 5tia ti5ab ti5ae ti3ap 5tib 5tica 5tice 5tici 5ticu ti3d4 5tie_ tie5d4 5tiefs tie3kn tie4kon ti3enc tien5st 5tiep 5ties tie5s4l tie5ta tie5to tie5tw ti1eu 5tieven ti3fe ti3fr ti2ga tig5aa 4tigm ti4gu4 tig3ur 5tijd tije4 tij5ka tij4kl 5tijn tij5p t3ijs_ tij3st tij3t2 tij5tr tij5tw 4t1ijz ti3ko ti5kr t4il 4tils 5timm 5timo tina4d tin3as 4t3incu 4t1ind 4tinf tin4g3i ting4sa t3inh ti4nit 4t3inj t3inko 4t3inl t3inq 4tinr 4t3ins ti3nu 4t3inv 4tinw ti5om ti3o4p5 t2is ti5sa ti3s4j ti3sl ti3so ti4son ti3s4p ti3sta 5tite ti3th ti1t2r 5tivi ti4vo 1tj2 2t1ja t5jaa t5jee t5jek t3jen t5jet 4tjeu 2tjo t1jou 2tju 4t3k2 tkars3 4t3l t5le_ 5tleb t5les tli4n 4t3m tmen4st tmens5te tmos5 4t3n tna4m3o tne4r tnes4 5to_ toa2 to3ac to3ar to5bl 3toc 1toch 3tod to3da t4oe toe5d4 3toej toe5k 5toe3l4a toe5le 5toelic toemaat5 5toen to5ende toe5pl 3toer 5toeri 5toern 5toe1s4 toe5st toe3tj 3toets 5toets_ 5toetse toets5te_ 3toev 5toez to2f tof5ar tof5d to4fr tof3th 3togn 5togr 3toi to4kan tok3s t2ol to3la 5tolaa to5le 5tolet t3olf 2toli 5tolic to4lie tolk5s 5tolo tolp3r t3oly 4tom_ 5tomaa tomaat5 t3oml to3mo tom4p3j 4t3om5s 5ton_ 4tond 3t2one 5tonee 5to5nen to5ner 3t4ong 5tong_ 3t4oni 5t4onn to3no 5tons ton3sk too4m toom3e 5toon t4op_ top5art top3as to3pen to3pet to3pi 2topm to4po to5pos t4opp to4pu to5pus t3opva 5tor_ to3ra to4r3ag t3ord to5rec 5torens 4t1org t5orga t4ori 3toria to4ri\xc3\xab tor3k tor4m3a toro4 to4r5oli to3rom 5torr 3tors tors5te_ to3r2u 3tos4 to3sa to1sl to1s2p tos5te 5tota to3tr 2t3oud 3tour tou4r3e to3v tove5na to4vens 4toverg to3w4 4t3p4 tpe4t3 tpi3s tr4 3tra_ 4t3raad 5trac\xc3\xa9 5trafo_ 3trag 4tragez 3t4rai 5train 5traka t3rake 3trakt 3trans 5transa 5trap_ 5trau 4t3raz 3t4re_ 4trea 2trec 5tred_ 4treda t5redes 4tredu 3tref 4t5reg 4t3reis 4treiz 4trel t3rese t3resu tre2t3 t4reu t3rib_ 5tribu 5trico trie5ta trig2 2trij 5t4ril tri5ni 5t4rio4 t3risi t3rit_ 5t4riti 5trody t3roed t3roes 5trofy 3trog t4ro\xc3\xaf 5troj 4trol_ 5trola 5trolo 5tromm 5tron_ 5trona t5rond 3trone 5tronn 5trono 5trons tront5j t3rood 5troon t4roos tro5pi t4ros 5trotu 3trou 4t5rout tro5v 5truc_ 5truf 4trug 5trui_ 5truie t3ruim trui5t4 t3ruk t4rum 4ts ts3a2d tsa4g ts1am t3sap ts3as tse4d ts5een t4s3ei ts5eind t4s5ene t4s3eng t4s3erg ts5erge t4s3e2v t2sij t4s3ink ts3int ts2j ts3ja t3sjen 3tsji t1sl ts4laa t3slac t5slag_ ts3lam t2s3le t5slib t5sloe t3s4lu ts2me ts4moe ts3neu ts4no ts5nor ts5not ts3nu ts3ob tso2l ts3oli ts3om ts1on ts4opp ts1o4r ts1ov ts3pad t3span t5spec t4s3pet t3spi t4s3pil t3spoe t3spoo t5s4por ts3pot t4spro ts4pru ts5q ts5s t3sta t4staak t4s5tank ts5tant t4star t4stas t3ste t5sted t5stee ts5teko t5stell t5stels t5stem t5ster_ t4sterr t5sters t5s4tes_ t5steu ts3th t1s4ti t3stij t5stijg t5stil ts5tin ts5t4j t1sto ts5toep ts5tong t4store ts5trad ts5trei t3stri ts5troe ts5ty t4su4 ts3ur ts3us ts3uu t1sy 4t3t t5t4a t5te tte5loe tte5l4op tte2n tten4t5j tte5ri t5tlet tt3oog ttop2 t5t4r t5tum tt3uu 3tua 3tub 3tuch 3tu3e 5tueu tu3\xc3\xa9s 3tuig 5tuin 4tuip 2tuit tuit4j 4tuk tu4k3i tul5pi t4um 5tune 5tunn tu1o 5turb tu3ri 3tu4s3 tut3j tuurs5la tu3wa 4tv tvaat5 t3ve 4t1w 3t4wijf t2win 1ty1 3typ tys4 4tz t3za t3zi t5zw u1a u3ac u3an ua5ne ua3p u5ar_ uar5t ua3sa uat4 2u2b ub3ac ube4li ub5em u5bi u3bo ub5or 4uc u1che ucht5sl uc4ki ucle3 uc4t3a uc4tin u1d uda2 u5da_ ud5am ud3ei ud3ess u4de4z ud3eze udi4o udi5ologe udi3om udoe2 ud3ond ud3oo ud3ov u4d1r uds5lo uds4m uds5ma ud3sme ud3smi ud1st ud4sta uds5tak ud4sti ud1w u3ec ue2co u1ee4 u3ef u3ei u1el u4ene u1er uer3il ue3st u1eu u5eul u3ez u3\xc3\xa8 u4f3an u1fl u1f4r uf2s u5ga ug4da2 ug4der ug2do ug4dr uge4l5o ug3ij ug1l u2go ug3or u2g1r ug5sce ug4sec ugs4p ugs5pa ug1s4t ugs5tra u1h u2i ui5ac ui2d3a ui2d1o uid4s uid3sp uid5spre uid5ste_ uid3u ui3e uien4t ui2fa uif1l uif5r ui2fu 4uig ui4g5aa uig1l ui2g3o ui4g3r ui4gu 4uik ui2k3a ui4k3l ui2ko ui2ku ui2la uil5aa ui4l3em uil5m ui4l3og ui4loo uil3ov 4uim ui2m3a ui3mag ui4n1a uin5g ui2no uin5og uin3or uin4s5lo uin5to ui2p3l ui4p3o4 ui2p3r 4uis ui2s3a uis5c ui4sl ui5slu uis5p ui4st ui4t3a4 uit5aa uit5al ui5tar 1uitg uit1j 3uitl ui2t1o 1uit5r uit3sl uit3sn uit5sp uits5te_ 3uitw 3uitz ui3v 4u3j 2uk u2k3al uk3as ukkers5 u2k3l u3klas u2k3n u2k3o u3koc uko2p uk4o3pl u4k3r uk3s2m uk3spa uk3spl uk4sti uk1w u1la ul3ac ulam4 ula4p ul4d3a uld5erk ul5dop ul4d3u u1le ule5sp ul3fl ul5fo ul3fr ul3in_ u5ling ul3inn ul3k2a ul5ke ul2k3l u1lo ul3o2p u3los ul2pa ulp3ac ul4pi ul2p3l ul2po ul4p3r ul3sa ul3so ul2s3p uls5te_ uls5tel u3lu um3af um3ar 3umda 2ume umee4 umes4 ume3st um3om um3op um3so um3st u2m3ui un3ac un2c unch3r un4dra und4s unds5ta und5ste une4t un3g 1univ un4k3r un4o uno3g un5o2p unst3a un4ste_ unst3o un4st5r unst5ui un4tag unt5een un2tj un4t5o4 unt3s4m un4t3u u3ol u3on u3oo u1or uo3ru u3os uota3 4up u1pa u1pe upe3k upe4ro uper5st u3ph u3pi u1pl u4p3lei u1po u3pol up3om up3op u1pr up4tr u1ra ur3aan ur1ac ur3ada ur3adv u2r3a4r uras3 u4r3a2z urd4o u1r2e ur3ech ur3een uree5s ure5lu urelu5r u4rem ur3emb ure4n u3res ur3ess ure3st ur3eta 4urf ur2fa ur3gi u1ri uri4gl ur3ijz ur3ind ur3int 4urk urken5s ur4kie ur3k4l urk4s5t u1ro ur5opb ur3or uro5s ur5pr ur4serv ur4s3ev ur3s4fe ur2sl urs5laa urs5li ur4s5m ur2sn ur4sp urs5pa ur5spel ur5spor urs5take urs5th ur4sti urs5tik ur3ta ur4tro ur5troe u3ru ur3ui 4urv u1r4y 4usaa us3ad us3a2m us1ap u4sc u5s2cr use5tj u5sie u4sj u4s5l u4sm u2s5n uso2 us3o\xc3\xaf us3os u2s3p us5pi us5pu us4ta us5tag ust3al u2s3te us4t3ei u4sti ust3oo us5tra_ us5tre_ us5tro us5tru ustu4 ust3ur ust3uu u1ta ut3aan utaar5 ut1ac ut3af u3tan uta3s4 ut5c u4t3ees u4tek ut3eks ut3em ut5emm uter5an ut3ex ut2h ut3ho u2tj u1to uto5f ut3oog uto3pe utop4l uto5po utop4r uto5s ut3saa ut3s2c uts5eng uts2m ut1sn ut3sp ut4spa ut4spo ut2st uts5tak ut4ste_ ut5sten ut3str ut5su utt4 u1tu ut5w u4u4 uur3a4 uur3e4 uur5i uur3k uur1o2 uur5ste uur5sti 4uut uut3a uut3r uvel4s uve5na uw1a u3wag uw3ar uw5art u1we uw3ec uwe5d uw3een u2w3ei uwe4nen uwes4 u1wi u2w3ij uw5ijz u4wind u3wing u4wins uw3inz uw1o u3woe uwo4ge uw1r uw3u uxa3 u3ya 4uz uze3t4 uzie2 \xc3\xbbt3s4 1\xc3\xbc \xc3\xbc4b \xc3\xbc1n \xc3\xbc3ri \xc3\xbcs3l 1v2 2v_ vaar4ta vaart5r va3de va3g4 va2ki va4kl va2ko va2l3a val5m va3lo va4loe val5si val4s5p vals5tek valu5 va2n van3ac vand4 vang3a van4gr va3no va4noc va1p va3re va5se va3s4o vast3r va3su va3te va2t3h vat5j va3z v4b 4v3c v4e 3ve_ 5veb vee4l veel5e vee3p4 vees4 ve3g4h vei3s4 vei5tj 3vek 5vel ve4l3a4g vel4d3o ve3le vel3k 5vem vem4a ve4na ve5nare 5vend ven5k ve2n3o 2venr ven4s3e ven4sl vens5lan vens5lo ven4sp vens5taak vens5take vens5tek ven4s3u4 ve2r ver1a ver5aas ve4rad vera4g ve4rand ver5do ve3rec ver3ed ve3reg ve3rei ver5eis ve5ren_ ve5rend ver3e4t ver5ijd ver5ijl ver5ijs ve5ring ver5k4 ver3o ve3rom vero5v ver5p ver5spe ver5sta ver5sto ver5tw ver1u ve3ry ve2s3 ves5ti ve2tj ve2to4 vet3og vet3oo ve3tor ve2t3r vet4roe vet5ste 5ve5z 3vi 4vicepa vid5st vie4r3a vie4s3 vies5n vie4tj vi3eu vijf5 vik4s vil4t3j ving4 vings3 vi3o vi5om vi4s3an vi1so vis5ot vis5p vi4st vis5tr vi1tr v3j vje4 vjet1 3vl v3lar vlei3s4 vlie4s5 vlot5s v3lov 5vo_ 3voe voe4t3a voe4t3r voet5sp 3vog voge4 3voi vo2le vol4g3a vol4gra vo2li vol3ij vol5p von4det vond5u 3voo voo5d vooi5t voorn4 voor5na vo3ra vorm3a vors5te_ vor5sten vos3 3vot vot3j 3vou vous5 3v4r2 vrei5 vrie4s vrij5k4 vrijs4 vrij5ste v3t vues4 vu2l vul5p vuur5s vy3 2w_ waad3 w2aar waar5e waar5ste wa4b3 wa2ba wa5bl w2ad wa3dr w4ag wa2la wa3lan 4wam wan4d5r wan4gr wang5sl wa2n1o wan3s4 3wap w4ar w5arc 5ward war4st wars5te wart3j war4to wa2si wa4s5l wa4s5p was5tr 1wate wat5j wa3tr 3way 2wb w1c 2w1d w4doo wd3oom we2a 2we2c 3wed wede4 we2d3i we4d3r wee4ki wee4k3r wee3lo wee3s4t wee5ste 3weg we4g1a we4gerv weg3l we2g3o we4g5r wei3s wei5tj we4k3r we4le2 4welem we3li we2lo wel3s we2m wem3a we3me we2n wena4 wen3ad we3ne4 we4nem we5nen_ wen5enk we3ni wen4k3a wen3o wen5to wer2f 4werg wer4ka wer4k5l wer4kn wer4k3o wer4k3r werk5ru wer4k3u4 wer4k3w wer4p3a wer4p3l wer4pr wer4s wer5ste we2s3 we3spo wes4t5o 3wet_ we2th we2t3j wet4st we2t3u 2wex wezen4s5 2w1f w1g w1h wie4la wie4t w4ij 3wijd wij4ka wij4s wijs3l wijs3p wijs5ta wi4k 3wil wind3a win4d3r w4ing 2winr win2s winst5aa winst5r wi4t3h wit3j wi2t3o4 wit3r w1j 2w1k 2w1l 4w1m 2wn wn3ac w3ne w3ni w3no w3ob w2oe woes3 woest5a wo4l wol3a wolf4s5 woon5sf woor4d5r wor4g3e w1p wren4st wrens5te_ 2ws ws3a2 w3sc w1sl w2s3le w3som w3sp ws2pl w4spr w5spra w1s4t w4stij 2wt wtes3 wtje5sp w1to w1tr wu2 wva2 w1w xaf4 xa3g xamen5t xan3 xan5t x1c x4e xen4d xe3ro x1f x1h xie4t xi3g xi5o xi3sta xi3sto xi4t3i x3l x1m xo3no x4op xo3s4 x1p xpre2 xpres5 x3r x3so x3sp x1t x2tak xtie2 x3w xy3 y1a ya3s4 ya4s5p y3at yba2l3 yber4t3 y1c ycho3 y3co y1d4 ydi3a y5dr ydro3 y1e yes3 y3\xc3\xa9s y3\xc3\xa8 y1f y1g ygu2 y1h y1i y4in y5is yksge4 y3la yl3al y3le y4l3et y3lo ylo3l ym2f5l ym5pa y3na yn3er y3no yn1t y1o y3on y3os yo3t y1p y3p4h ypo3 ypot4 yp3s yp5si y1r y3r4e y5ri ys3 y1s4a y3s4c y5s4e yse5t y3s4f y3s4h ys4i y3s4o y3s4p ys5pl ys4ta ys5tr y3sy y1t yt3hu yto3 y2tof ytop4 yu5a y3ui y3u2r yvari5 y1w4 1z 4z_ zaar5t za3f2 zags4t za2k3a zak3r zan2d zand5a4 zan3di zan4dr zang3s za3po za3s4 4zb 4zc 4zd z4e zee3k zeel5d zee3r4o zeero5v zeer5s zee3s4 ze5ge zeg4sl zei3sp ze5k zel5dr ze3lem zel2f1 zel4so zen4d3a ze4nin zen5k zen3o4 zen4og ze3non ze4r3a ze3ro zer2s zer4s5e ze4s3 ze5sch zes5e zes5l ze5ste ze2t3a ze2t3h ze4ti ze2t3j ze2t3r zeve2 zeven3 4zf 4zg 2z3h z2i ziek3l zie4k3o ziek3w ziel4s zie5sl 3zif zi2g5a zij5kl zij3po zij5s4 zik2w zi4n3a4 zings3 zin4k3l zin4s zins3t zins5ta zin5str zi3o5 zipi3 zi4t zit3e zit3j zit3u4 4z3k 4z3l 4zm zodi5 zoet3j zoet5ste zo3f2 zoi4 zo5ie zo3la zome4 zo2na zon3sf zon5ta zooi5tj zo1p zor4g3a zor4gl zor4gr zo2t zot3h zo3tr zo3v 4z3p 4z3r 2zs 4z5t zui4d3i zui4dr zus3 2zv z4w zwets5te_ 5zy 2z3z zz3in zz3or z4z5w";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/pl.php b/inc/3rdparty/libraries/mpdf/patterns/pl.php
deleted file mode 100644 (file)
index f531105..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/    
-*/
-
-$patterns="_a1 _a2b1s _a2b2s3t _a2d3 _a1d4a1 _ad4e1 _ad4i1 _ad4o1 _ad4u1 _ad4y1 _ad5a2p1t _ad5i2u1 _ad5op _ad5or _ae2 _ae3ro1 _a1eroa2 _ae1roe2 _aeroi2 _aero1o2 _aerou2 _a2n1t _anty1 _a1ntya2 _antye2 _antyi2 _antyo2 _antyu2 _a2r1c _arcy1 _arcy3b2 _arcy3b1z2 _arcy3k2 _arcy3\xc5\x822 _arcy3m2 _a1rcya2 _arcye2 _arcyi2 _arcyo2 _arcyu2 _a2u1 _au3g2 _au3k2 _au3t2 _auto1 _auto3c4h2 _a1utoa2 _autoe2 _autoi2 _auto1o2 _a1utotra1 _autotra2n2s3 _au1tou2 _b8 _4b3b8 _2b1c8 _2b1\xc4\x878 _2b1d8 _be1 _be2z3 _beza1 _be3z4an _be1ze1 _be3z4ec _bezi1 _be3z4ik _be2z1c _bezc4h2 _bezm2 _bezo2 _bezo2b1j _bezw2 _be4z3z _bezzw2 _2b1f8 _2b1g8 _bh8 _bj8 _2b1k8 _bl8 _b\xc5\x828 _2b1m8 _2b1n8 _2b1\xc5\x848 _2b1p8 _br8 _br4z8 _2b1s8 _2b1\xc5\x9b8 _2b1t8 _bv8 _bw8 _bx8 _2b1z8 _2b1\xc5\xba8 _2b1\xc5\xbc8 _c8 _ca1 _ca\xc5\x82o1 _ca\xc5\x82o3k2 _ca\xc5\x82o3\xc5\x9b2 _2c1b8 _4c3c8 _2c1\xc4\x878 _2c1d8 _2c1f8 _2c1g8 _c4h8 _c2h2r _chr4z8 _ci1 _ci2e1 _cie2n1k _cienko1 _cienko3w2 _ciep\xc5\x82o1 _ciep\xc5\x82o3kr2 _cj8 _2c1k8 _2c1l8 _c\xc5\x828 _2c1m8 _2c1n8 _2c1\xc5\x848 _2c1p8 _cr8 _2c1s8 _2c1\xc5\x9b8 _2c1t8 _cv8 _cw8 _cx8 _c4z8 _cza1 _cza2r1n _czarno1 _czarno3k2 _2c2z1k8 _2c2z1t _czte1 _czte1re1 _cztere2c4h3 _cztere2c2h1s _czte1re1chse1 _czterechse2t3 _cztero1 _cztero3\xc5\x9b2 _czw\xc3\xb31 _czw\xc3\xb32r3 _czw\xc3\xb33r4a1 _czw\xc3\xb33r4\xc4\x851 _czw\xc3\xb33r4e1 _czw\xc3\xb33r4\xc4\x991 _czw\xc3\xb33r4o1 _2c1\xc5\xba8 _2c1\xc5\xbc8 _\xc4\x878 _2\xc4\x871b8 _2\xc4\x871c8 _4\xc4\x873\xc4\x878 _2\xc4\x871d8 _2\xc4\x871f8 _2\xc4\x871g8 _\xc4\x87h8 _\xc4\x87j8 _2\xc4\x871k8 _\xc4\x87l8 _\xc4\x87\xc5\x828 _2\xc4\x871m8 _2\xc4\x871n8 _2\xc4\x871\xc5\x848 _2\xc4\x871p8 _\xc4\x87r8 _2\xc4\x871s8 _2\xc4\x871\xc5\x9b8 _2\xc4\x871t8 _\xc4\x87v8 _\xc4\x87w8 _\xc4\x87wi1 _\xc4\x87wi2e1 _\xc4\x87wie2r2\xc4\x873 _\xc4\x87x8 _2\xc4\x871z8 _2\xc4\x871\xc5\xba8 _2\xc4\x871\xc5\xbc8 _d8 _da1 _dale1 _daleko1 _daleko3w2 _2d1b8 _2d1c8 _2d1\xc4\x878 _4d3d8 _de1 _de2z3 _deza2 _dezabi1 _de3z4a3bil _de3z4a3wu1 _de1ze1 _de3z4el _de3z4er _de3z4y1 _dezo2 _2d1f8 _2d1g8 _dh8 _dj8 _2d1k8 _dl8 _d\xc5\x828 _d\xc5\x82u1 _d\xc5\x82ugo1 _d\xc5\x82ugo3tr2 _d\xc5\x82ugo3w2 _2d1m8 _2d1n8 _2d1\xc5\x848 _do1 _do3b2 _do3c2 _do3\xc4\x872 _do3d2 _do3f2 _do3g2 _do3h2 _do3k2 _do3l2 _do3\xc5\x822 _do3m2 _do3p2 _do3r2 _do3s2 _do3\xc5\x9b2 _do3t2 _do3w2 _do3z2 _do3\xc5\xba2 _do3\xc5\xbc2 _do4k3t _do4l3n _do4\xc5\x823k _do4m3k _do4r3s _do4w3c _do5m4k2n _dobr2 _dobr4z2 _doc4h2 _doc4z2 _dod4z2 _dod4\xc5\xba2 _dod4\xc5\xbc2 _dogr4z2 _do2p1c _dopc4h2 _dopr4z2 _dor4z2 _do2r1\xc5\xbc2 _dosc4h2 _dosm2 _dos4z2 _do2t1k2 _dotr2 _2d1p8 _dr8 _dro1 _dro1go1 _drogo3w2 _dr4z8 _2d1s8 _2d1\xc5\x9b8 _2d1t8 _dv8 _dw8 _dw\xc3\xb31 _dw\xc3\xb32j3 _dw\xc3\xb33j4a1 _dw\xc3\xb33j4\xc4\x851 _dw\xc3\xb33j4e1 _dw\xc3\xb33j4\xc4\x991 _dw\xc3\xb33j4o1 _dx8 _dy1 _dy2s3 _dy2z3 _dy3s4e1 _dy3s4o1 _dy3s4ta1 _dy3s4y1 _dy3s4z _dy3z4e1 _dyzu2 _d4z8 _dzi1 _dzi2e1 _dzi1esi1 _dziesi2\xc4\x991 _dzi1esi1\xc4\x99ci1 _dziesi\xc4\x99ci2o1 _dziesi\xc4\x99cio3\xc5\x9b2 _dzi1ewi1 _dziewi2\xc4\x991 _dziewi\xc4\x992\xc4\x873 _dzi1ewi1\xc4\x99ci1 _dziewi\xc4\x99ci2o1 _dziewi\xc4\x99cio3\xc5\x9b2 _dziewi\xc4\x992\xc4\x871s _dzie1wi\xc4\x99\xc4\x87se1 _dziewi\xc4\x99\xc4\x87se2t3 _d4\xc5\xba8 _d4\xc5\xbc8 _e1 _e2k2s3 _e1me1 _emes4z _e1me1sze1 _e2m3e2s5ze2t _e1se1 _e2s1e2s1ma1 _e2s1ha1 _e2s1t _ego1 _egoa2 _e1goe2 _egoi2 _ego1o2 _egou2 _eks4y1 _e1le1 _ele2k1t _elektro1 _elektroa2 _e1le1ktroe2 _elektroi2 _elektro1o2 _elektrou2 _f8 _fb8 _2f1c8 _f\xc4\x878 _fd8 _4f3f8 _fg8 _fh8 _fj8 _2f1k8 _fl8 _f\xc5\x828 _2f1m8 _2f1n8 _f\xc5\x848 _fp8 _fr8 _fs8 _f\xc5\x9b8 _ft8 _fv8 _fw8 _fx8 _fz8 _f\xc5\xba8 _f\xc5\xbc8 _g8 _2g1b8 _2g1c8 _2g1\xc4\x878 _2g1d8 _ge1 _ge2o3 _2g1f8 _4g3g8 _gh8 _gj8 _2g1k8 _gl8 _g\xc5\x828 _2g1m8 _gn8 _2g1\xc5\x848 _go1 _go2u3 _2g1p8 _gr8 _gru1 _grubo1 _grubo3w2 _gr4z8 _2g1s8 _2g1\xc5\x9b8 _2g1t8 _gv8 _gw8 _gx8 _2g1z8 _2g1\xc5\xba8 _2g1\xc5\xbc8 _h8 _2h1b8 _2h1c8 _2h1\xc4\x878 _2h1d8 _2h1f8 _2h1g8 _4h3h8 _hi1 _hipe1 _hipe2r3 _hipe3r4o1 _hipera2 _hipe1re2 _2h1j8 _2h1k8 _2h1l8 _2h1\xc5\x828 _2h1m8 _2h1n8 _2h1\xc5\x848 _2h1p8 _2h1r8 _2h1s8 _2h1\xc5\x9b8 _2h1t8 _hv8 _2h1w8 _hx8 _2h1z8 _2h1\xc5\xba8 _2h1\xc5\xbc8 _i1 _i2n3 _i2s3l _i1ni1 _i3n4ic _i3n4o1 _i3n4u1 _i4n5o2k _i2n1f _infla1 _in4f3lan _ino3w2 _izo1 _izoa2 _izoe2 _i1zoi2 _izo1o2 _izou2 _j8 _ja1 _jad\xc5\x82o1 _jad\xc5\x82o3w2 _2j1b8 _2j1c8 _2j1\xc4\x878 _2j1d8 _2j1f8 _2j1g8 _2j1h8 _4j3j8 _2j1k8 _2j1l8 _2j1\xc5\x828 _2j1m8 _2j1n8 _2j1\xc5\x848 _2j1p8 _2j1r8 _2j1s8 _2j1\xc5\x9b8 _2j1t8 _jv8 _2j1w8 _jx8 _2j1z8 _2j1\xc5\xba8 _2j1\xc5\xbc8 _k8 _2k1b8 _2k1c8 _2k1\xc4\x878 _2k1d8 _2k1f8 _2k1g8 _kh8 _ki1 _ki2l1k _kilku1 _kilkuse1 _kilkuse2t3 _kilkuseto2 _kj8 _4k3k8 _kl8 _k\xc5\x828 _2k1m8 _2k1n8 _2k1\xc5\x848 _ko1 _ko1\xc5\x82o1 _ko\xc5\x82o3w2 _ko2n1t _kon2t2r3 _kon3tr4a1 _kon3tr4e1 _ko1ntro2 _kon3tr4o3l _kon3tr4o3w _kon3tr4y1 _kon4tr5a2gi1 _kon4tr5a2se1 _kon4tr5a2sy1 _kon4tr5a2ta1 _kon4tr5a2d1m _kon4tr5a2k1c _kon4tr5a2l1t _kon4tr5a2r1g _kontru2 _2k1p8 _kr8 _kro1 _kro2\xc4\x873 _kr\xc3\xb31 _kr\xc3\xb32t1k _kr\xc3\xb3tko1 _kr\xc3\xb3tko3tr2 _kr\xc3\xb3tko3w2 _kr4z8 _2k1s8 _2k1\xc5\x9b8 _2k1t8 _kv8 _kw8 _kx8 _2k1z8 _2k1\xc5\xba8 _2k1\xc5\xbc8 _l8 _2l1b8 _2l1c8 _2l1\xc4\x878 _2l1d8 _2l1f8 _2l1g8 _2l1h8 _2l1j8 _2l1k8 _4l3l8 _2l1\xc5\x828 _2l1m8 _2l1n8 _2l1\xc5\x848 _2l1p8 _2l1r8 _2l1s8 _2l1\xc5\x9b8 _2l1t8 _lu1 _ludo1 _ludo3w2 _lv8 _2l1w8 _lx8 _2l1z8 _2l1\xc5\xba8 _2l1\xc5\xbc8 _\xc5\x828 _2\xc5\x821b8 _2\xc5\x821c8 _2\xc5\x821\xc4\x878 _2\xc5\x821d8 _2\xc5\x821f8 _2\xc5\x821g8 _2\xc5\x821h8 _2\xc5\x821j8 _2\xc5\x821k8 _2\xc5\x821l8 _4\xc5\x823\xc5\x828 _2\xc5\x821m8 _2\xc5\x821n8 _2\xc5\x821\xc5\x848 _2\xc5\x821p8 _2\xc5\x821r8 _2\xc5\x821s8 _2\xc5\x821\xc5\x9b8 _2\xc5\x821t8 _\xc5\x82v8 _2\xc5\x821w8 _\xc5\x82x8 _2\xc5\x821z8 _2\xc5\x821\xc5\xba8 _2\xc5\x821\xc5\xbc8 _m8 _2m1b8 _2m1c8 _2m1\xc4\x878 _2m1d8 _2m1f8 _2m1g8 _2m1h8 _mi1 _mi1li1 _mili2a1 _mili3a2m1p _2m1j8 _2m1k8 _2m1l8 _2m1\xc5\x828 _4m3m8 _2m1n8 _2m1\xc5\x848 _mo1 _mo2\xc5\xbc1n _mo1\xc5\xbcno1 _mo\xc5\xbcno3w2 _2m1p8 _2m1r8 _2m1s8 _2m1\xc5\x9b8 _2m1t8 _mv8 _2m1w8 _mx8 _2m1z8 _2m1\xc5\xba8 _2m1\xc5\xbc8 _n8 _na1 _na2d2 _na2j _na3b2 _na3c2 _na3\xc4\x872 _nad3i2 _na3d4ir _nad3\xc5\x822 _nad\xc5\x82u1 _na3d4\xc5\x82ub _na2d3m2 _nadmu1 _na3d4muc4h _nad3r2 _na3d4r2w _nadre1 _nadre2p1c _na3d4repc4z _na3d4re2p1t _nadr\xc4\x991 _na3d4r\xc4\x99c4z _nadru1 _na3d4ruk _na3d4r4z _nad3w2 _nadwo1 _na3d4wo2r1n _na1da1 _na3daj _na3d\xc4\x851 _na3de1 _na3d\xc4\x991 _na3do1 _na3dy1 _nad4z2 _na3dzi1 _na3d4\xc5\xba2 _na3f2 _na3g2 _na3h2 _na1ja1 _na3ja2z1d _na3j\xc4\x851 _na3je1 _na3j\xc4\x991 _na3k2 _na3l2 _na3\xc5\x822 _na3m2 _na3p2 _na3r2 _na3s2 _na3\xc5\x9b2 _na3t2 _na3u2 _na3w2 _na3z2 _na3\xc5\xba2 _na3\xc5\xbc2 _na4d3o2b2\xc5\x82 _nado1bo1 _nadobo2j1c _na4d3o2bojc4z _na4d3o2bowi1 _nado1bro1 _na4d3o2brot _na4d3o2dr4z _nadoki1 _nadoki2e1 _na4d3o2kien _nado2l1b _na4d3olbr4z _na4d5rz\xc4\x851 _nadrze1 _na4d5rzec4z _na4d5rz\xc4\x991 _na4d5rzy1 _nadzi2e1 _na4d5ziem _na4f3c _na4f3t _na4j3e2f _na4j3e2g _na4j3e2k2s _na4j3e2ko1 _na4j3e2n _na4j3e2r _na4j3e2s _na4j3e2w _na4j3e2m1f _na4j3e2u1 _na4r3c _na4r3d _na4r3k _na4r3r _na4r3t _nabr4z2 _nac4h2 _nac4z2 _na2d3b2 _na2d3c2 _na2d3\xc4\x872 _na4d3d2 _nade3t2 _na1deta1 _nad3e2tat _na2d3f2 _na2d3g2 _nad3h2 _nad3j2 _na2d3k2 _nad3l2 _na2d3n2 _na2d3p2 _na2d3s2 _na2d3\xc5\x9b2 _na2d3t2 _nad3u2 _na2dz1m _nadzmy1 _nad5z2mys _nad5zo1 _nad5z\xc3\xb31 _nadzwy1 _nad5zwyc4z _nad5\xc5\xbc2 _nadc4h2 _nadc4z2 _nadd4\xc5\xba2 _nade3b2 _nade3c2 _nade3\xc4\x872 _nade3d2 _nade3f2 _nade3g2 _nade3h2 _nade3k2 _nade3l2 _nade3\xc5\x822 _nade3m2 _nade3p2 _nade3r2 _nade3s2 _nade3\xc5\x9b2 _nade3w2 _nade3z2 _nade3\xc5\xba2 _nade3\xc5\xbc2 _nade4p3c _nade4p3n _nade4p3t _nadec4h2 _nadec4z2 _naded4z2 _naded4\xc5\xba2 _naded4\xc5\xbc2 _nader4z2 _nade2r1\xc5\xbc2 _nades4z2 _nads4z2 _nad\xc5\x9bro1 _nad\xc5\x9brod4z _nad\xc5\x9brodzi1 _nad\xc5\x9brodzi2e1 _nad\xc5\x9brod5ziem _nadtr2 _nagr4z2 _naj3a2k1t _naj3a2u1 _na2j3b2 _na2j3c2 _na2j3\xc4\x872 _na2j3d2 _na2j3f2 _na2j3g2 _na2j3h2 _naj3i2 _na2j3k2 _na2j3l2 _na2j3\xc5\x822 _na2j3m2 _naj3o2 _naj3o2b2 _naj3o2c2 _naj3o2\xc4\x872 _naj3o2d2 _naj3o2f2 _naj3o2g2 _naj3o2h2 _naj3o2k2 _naj3o2l2 _naj3o2\xc5\x822 _naj3o2m2 _naj3o2p2 _naj3o2r2 _naj3o2s2 _naj3o2\xc5\x9b2 _naj3o2t2 _naj3o2w2 _naj3o2z2 _naj3o2\xc5\xba2 _naj3o2\xc5\xbc2 _na2j3p2 _na2j3r2 _najro1 _naj3ro2z3 _na2j3s2 _na2j3\xc5\x9b2 _na2j3t2 _naj3u2 _na2j3w2 _na2j3z2 _na2j3\xc5\xba2 _na2j3\xc5\xbc2 _najbe1 _najbe2z3 _najbezw2 _najc4h2 _najc4z2 _najdo1 _najdo3b2 _najdo3c2 _najdo3\xc4\x872 _najdo3d2 _najdo3f2 _najdo3g2 _najdo3h2 _najdo3k2 _najdo3l2 _najdo3\xc5\x822 _najdo3m2 _najdo3p2 _najdo3r2 _najdo3s2 _najdo3\xc5\x9b2 _najdo3t2 _najdo3w2 _najdo3z2 _najdo3\xc5\xba2 _najdo3\xc5\xbc2 _najdoc4h2 _najdoc4z2 _najdod4z2 _najdod4\xc5\xba2 _najdod4\xc5\xbc2 _najdor4z2 _najdos4z2 _najdo2t1k2 _najd4z2 _najd4\xc5\xba2 _najd4\xc5\xbc2 _najkr2 _najo2b3c2 _najo2b3\xc4\x872 _najo2b3d2 _najo2b3f2 _najo2b3g2 _najob3h2 _najob3j2 _najo2b3k2 _najob3l2 _najob3\xc5\x822 _najo2b3m2 _najo2b3n2 _najo2b3p2 _najo2b3s2 _najo2b3\xc5\x9b2 _najo2b3t2 _najob3w2 _najo2b3\xc5\xba2 _najo2b3\xc5\xbc2 _najobc4h2 _najobc4z2 _najobd4z2 _najobd4\xc5\xba2 _najobd4\xc5\xbc2 _najobr4z2 _najobs4z2 _najoc4h2 _najoc4z2 _najo2d3c2 _najo2d3\xc4\x872 _najo4d3d2 _najo2d3f2 _najo2d3g2 _najod3h2 _najod3j2 _najo2d3k2 _najod3l2 _najo2d3m2 _najo2d3n2 _najo2d3p2 _najo2d3s2 _najo2d3\xc5\x9b2 _najo2d3t2 _najod3w2 _najod5\xc5\xbc2 _najodc4h2 _najodc4z2 _najodd4z2 _najodd4\xc5\xba2 _najodd4\xc5\xbc2 _najods4z2 _najod4z2 _najod4\xc5\xba2 _najor4z2 _najos4z2 _najro3z4u1 _najr4z2 _najsm2 _najs4z2 _naj2t1k2 _naj2t1r2 _najuc4z2 _najzw2 _nakr2 _napo1 _napo2d2 _napo3b2 _napo3c2 _napo3\xc4\x872 _napo3f2 _napo3g2 _napo3h2 _napo3k2 _napo3l2 _napo3\xc5\x822 _napo3m2 _napo3p2 _napo3r2 _napo3s2 _napo3\xc5\x9b2 _napo3t2 _napo3w2 _napo3z2 _napo3\xc5\xba2 _napo3\xc5\xbc2 _napo4m3p _napoc4h2 _napoc4z2 _napo4d3d _napod4\xc5\xba2 _napod4\xc5\xbc2 _napo2m1k2 _napor4z2 _napos4z2 _napr4z2 _naro1 _naro2z3 _nar4z2 _na2r1\xc5\xbc2 _nasm2 _nas4z2 _na2t1c _natc4h2 _na2t1k2 _naz3m2 _nazw2 _2n1b8 _2n1c8 _2n1\xc4\x878 _2n1d8 _ne1 _ne2o3 _2n1f8 _2n1g8 _2n1h8 _ni1 _ni2e1 _nie3b2 _nie3c2 _nie3\xc4\x872 _nie3d2 _nie3f2 _nie3g2 _nie3h2 _nie3k2 _nie3l2 _nie3\xc5\x822 _nie3m2 _nie3p2 _nie3r2 _nie3s2 _nie3\xc5\x9b2 _nie3t2 _nie3u2 _nie3w2 _nie3z2 _nie3\xc5\xba2 _nie3\xc5\xbc2 _nie4c3c _nie4c3k _nie4d4\xc5\xba3 _nie4m3c _nie4m3k _niec4h2 _niec4z2 _niedo1 _niedo3b2 _niedo3c2 _niedo3\xc4\x872 _niedo3d2 _niedo3f2 _niedo3g2 _niedo3h2 _niedo3k2 _niedo3l2 _niedo3\xc5\x822 _niedo3m2 _niedo3p2 _niedo3r2 _niedo3s2 _niedo3\xc5\x9b2 _niedo3t2 _niedo3w2 _niedo3z2 _niedo3\xc5\xba2 _niedo3\xc5\xbc2 _niedobr4z2 _niedoc4h2 _niedoc4z2 _niedod4z2 _niedod4\xc5\xba2 _niedod4\xc5\xbc2 _niedokr2 _niedo2m1k2 _niedo2p1c _niedopc4h2 _niedor4z2 _niedos4z2 _niedo2t1k2 _nied4z2 _nied4\xc5\xbc2 _nieo2 _nieob2 _nieo2b3c2 _nieo2b3\xc4\x872 _nieo2b3d2 _nieo2b3f2 _nieo2b3g2 _nieob3h2 _nieob3j2 _nieo2b3k2 _nieo2b3m2 _nieo2b3p2 _nieo2b3s2 _nieo2b3\xc5\x9b2 _nieob3w2 _nieo2b3\xc5\xba2 _nieo2b3\xc5\xbc2 _nieobc4h2 _nieobc4z2 _nieobd4z2 _nieobd4\xc5\xba2 _nieobd4\xc5\xbc2 _nieobs4z2 _nieoc2 _nieoc4h2 _nieoc4z2 _nieo\xc4\x872 _nieod2 _nieo2d3c2 _nieo2d3\xc4\x872 _nieo4d3d2 _nieo2d3f2 _nieo2d3g2 _nieod3h2 _nieod3j2 _nieo2d3k2 _nieod3l2 _nieod3\xc5\x822 _nieo2d3n2 _nieo2d3p2 _nieo2d3s2 _nieo2d3\xc5\x9b2 _nieo2d3t2 _nieodw2 _nieod3w1r _nieod5\xc5\xbc2 _nieodc4h2 _nieodc4z2 _nieodd4z2 _nieodd4\xc5\xba2 _nieodd4\xc5\xbc2 _nieods4z2 _nieod4z2 _nieod4\xc5\xba2 _nieof2 _nieog2 _nieoh2 _nieok2 _nieol2 _nieo\xc5\x822 _nieom2 _nieop2 _nieor2 _nieor4z2 _nieos2 _nieos4z2 _nieo\xc5\x9b2 _nieot2 _nieow2 _nieoz2 _nieo\xc5\xba2 _nieo\xc5\xbc2 _niepo1 _niepo2d2 _niepo3b2 _niepo3c2 _niepo3\xc4\x872 _niepod3\xc5\x822 _niepo3d4\xc5\x82u1 _niepo2d3m2 _niepodmu1 _niepo3d4muc4h _niepod3r2 _niepodra1 _niepo3d4rap _niepo3d4ra\xc5\xbc _nie1podre1 _niepodre2p1c _niepo3d4repc4z _niepo3d4re2p1t _niepodr\xc4\x991 _niepo3d4r\xc4\x99c4z _niepod3w2 _niepodwa1 _niepo3d4waj _niepo1dwo1 _niepo3d4woj _niepo3do1 _niepo3du1 _niepo3d4z2 _niepo3d4\xc5\xba2 _niepo3f2 _niepo3g2 _niepo3h2 _niepo3k2 _niepo3l2 _niepo3\xc5\x822 _niepo3m2 _niepo3p2 _niepo3r2 _niepo3s2 _niepo3\xc5\x9b2 _niepo3t2 _niepo3w2 _niepo3z2 _niepo3\xc5\xba2 _niepo3\xc5\xbc2 _niepodoc4h _niepo1do1cho1 _niepo4d3o2choc _niepo4d3o2str4z _niepoc4h2 _niepoc4z2 _niepo2d3b2 _niepo2d3c2 _niepo2d3\xc4\x872 _niepo4d3d2 _niepo2d3f2 _niepo2d3g2 _niepod3h2 _niepod3j2 _niepo2d3k2 _niepod3l2 _niepo2d3n2 _niepo2d3p2 _niepo2d3s2 _niepo2d3\xc5\x9b2 _niepo2d3t2 _niepod5\xc5\xbc _niepodc4h2 _niepodc4z2 _niepodd4\xc5\xba2 _niepodd4\xc5\xbc2 _niepodsm2 _niepods4z2 _niepor4z2 _nieposm2 _niepos4z2 _niepr4z _nie1prze1 _nieprze2d2 _nieprze3b2 _niepr4ze3br4z2 _nieprze3c2 _nieprze3\xc4\x872 _nieprzed3\xc5\x822 _nieprzed\xc5\x82u1 _nieprze3d4\xc5\x82u\xc5\xbc _nieprze2d3m2 _nieprzedmu1 _nieprze3d4muc4h _nieprzed3r2 _nieprzedra1 _nieprzedra1ma1 _nieprze3d4ramat _nieprzedru1 _nieprze3d4ruk _nieprzedry1 _nieprze3d4ryl _niepr4ze3d4r4z2 _nieprzed3u2 _nieprze3d4um _nieprze3dy1 _nieprze3d4z2 _nieprze3d4\xc5\xba2 _nie1prze1e2 _nieprze3e2k2s3 _nieprze3f2 _nieprze3g2 _nieprze3h2 _nieprze3k2 _nieprze3l2 _nieprze3\xc5\x822 _nieprze3m2 _nieprze3n2 _nieprze3p2 _nieprze3r2 _nieprze3s2 _nieprze3\xc5\x9b2 _nieprze3t2 _nieprze3w2 _nieprze3z2 _nieprze3\xc5\xba2 _nieprze3\xc5\xbc2 _nieprzed\xc5\x82u\xc5\xbcy1 _nieprze4d5\xc5\x82u\xc5\xbcyc _nieprze4d5z2a1 _nieprze4d5z1g2 _ni1eprzedzi1 _nieprze4d5zim _nieprze4d5zj _nieprze4d5z1l _nieprze4d5z2w2r _nieprzedzwo1 _nieprze4d5zwoj _nieprze4d5\xc5\xbc2 _nieprzec4h2 _nieprzec4z2 _nieprze2d3c2 _nieprze2d3\xc4\x872 _nieprze4d3d2 _nieprze2d3f2 _nieprze2d3g2 _nieprzed3h2 _ni1eprzed3i2 _nieprzed3j2 _nieprze2d3k2 _nieprzed3l2 _nieprze2d3n2 _nieprze2d3p2 _nieprze2d3s2 _nieprzed3s4z2 _nieprze2d3\xc5\x9b2 _nieprze2d3t2 _nieprzed3w2 _nieprzedc4h2 _nieprzedc4z2 _nieprzedd4z2 _nieprzedd4\xc5\xba2 _nieprzedd4\xc5\xbc2 _niepr4zegr4z2 _nieprzekl2 _nieprzekr2 _nieprze2\xc5\x821k2 _nieprze2p1c _nieprzepc4h2 _niepr4zer4z2 _nieprze2r1\xc5\xbc2 _nieprzesc4h2 _nieprzesm2 _nieprzes4z2 _nieprze2t1k2 _nieprzetr2 _niero1 _niero2z3 _nie1ro3z4e1 _niero3z4u1 _nierozbr4z2 _nieroze3r2 _nierozm2 _niero2z1\xc5\x9b2 _niero2z1t _nieroztr2 _nier4z2 _niesu1 _niesu2b3 _ni1esubi1 _ni2e1su3b4i2e1 _nies4z2 _nie2t1k2 _nietr2 _nieuc4z2 _nieuw2 _niewy1 _niewy3b2 _niewy3c2 _niewy3\xc4\x872 _niewy3d2 _niewy3f2 _niewy3g2 _niewy3h2 _niewy3k2 _niewy3l2 _niewy3\xc5\x822 _niewy3m2 _niewy3p2 _niewy3r2 _niewy3s2 _niewy3\xc5\x9b2 _niewy3t2 _niewy3w2 _niewy3z2 _niewy3\xc5\xba2 _niewy3\xc5\xbc2 _niewybr4z2 _niewyc4h2 _niewyc4z2 _niewyd4z2 _niewyd4\xc5\xba2 _niewyd4\xc5\xbc2 _niewyr4z2 _niewys4z2 _niewy2t1k2 _niewytr2 _niezw2 _2n1j8 _2n1k8 _2n1l8 _2n1\xc5\x828 _2n1m8 _4n3n8 _2n1\xc5\x848 _2n1p8 _2n1r8 _2n1s8 _2n1\xc5\x9b8 _2n1t8 _nv8 _2n1w8 _nx8 _2n1z8 _2n1\xc5\xba8 _2n1\xc5\xbc8 _\xc5\x848 _2\xc5\x841b8 _2\xc5\x841c8 _2\xc5\x841\xc4\x878 _2\xc5\x841d8 _2\xc5\x841f8 _2\xc5\x841g8 _2\xc5\x841h8 _2\xc5\x841j8 _2\xc5\x841k8 _2\xc5\x841l8 _2\xc5\x841\xc5\x828 _2\xc5\x841m8 _2\xc5\x841n8 _2\xc5\x841\xc5\x848 _2\xc5\x841p8 _2\xc5\x841r8 _2\xc5\x841s8 _2\xc5\x841\xc5\x9b8 _2\xc5\x841t8 _\xc5\x84v8 _2\xc5\x841w8 _\xc5\x84x8 _2\xc5\x841z8 _2\xc5\x841\xc5\xba8 _2\xc5\x841\xc5\xbc8 _o1 _o2b2 _o2d2 _ot2 _o2t1c _otc4h _o2t3c2h2\xc5\x82 _ob3l2 _oblu1 _o3b4luzg _ob3\xc5\x822 _o3b4\xc5\x82\xc4\x851 _o3b4\xc5\x82\xc4\x991 _o1b\xc5\x82o1 _o3b4\xc5\x82oc _ob3r _obra1 _o3b4ra\xc4\x87 _o3b4raso1 _o1bro1 _o3b4ron _o3b4ro\xc5\x84 _obry1 _o3b4ryz _o3b4ry\xc5\xba _o3b4r4z2 _o3be1 _o3bi1 _od3i2 _o3d4i2u1 _od3r2 _odra1 _o3d4rap _odr\xc4\x991 _o3d4r\xc4\x99t _o1dro1 _odrobi1 _o3d4robin _odru1 _o3d4rut _od2r1w _o3d4rwi1 _odr4z2 _odrze1 _o3d4rze\xc4\x87 _o3d4rz2w _od5z2 _odzi1 _o3d6zi2a1 _o3d6zi2e1 _o3de1 _o2l1\xc5\x9b _o3l2\xc5\x9bn _o4b5\xc5\x82oc4z _o4b5rz\xc4\x851 _obrze1 _o4b5rzez _obrz\xc4\x991 _o4b5rz\xc4\x99d _obrzu1 _o4b5rzuc _o4b5rzut _obrzy1 _o4b5rzyn _o4d7ziar _o4d7ziem _oa2 _oa3z _o2b3c2 _o2b3\xc4\x872 _o2b3d2 _o2b3f2 _o2b3g2 _ob3h2 _ob3j2 _o2b3k2 _o2b3m2 _o2b3n2 _o1bo1 _ob3o2str4z _o2b3p2 _o2b3s2 _o2b3\xc5\x9b2 _o2b3t2 _obu1 _ob3u2m2 _ob3w2 _o2b3\xc5\xba2 _o2b3\xc5\xbc2 _obc4h2 _obc4z2 _obd4z2 _obd4\xc5\xba2 _obd4\xc5\xbc2 _obe3b2 _obe3c2 _obe3\xc4\x872 _obe3d2 _obe3f2 _obe3g2 _obe3h2 _obe3k2 _obe3l2 _obe3\xc5\x822 _obe3m2 _obe3p2 _obe3r2 _obe3r3t _obe3s2 _obe3\xc5\x9b2 _obe3t2 _obe3w2 _obe3z2 _obe3\xc5\xba2 _obe3\xc5\xbc2 _obe4c3n _obe4z3w _obec4h2 _obec4z2 _obed4z2 _obed4\xc5\xba2 _obed4\xc5\xbc2 _obe2r3m _ober4z2 _obe2r1\xc5\xbc2 _obesc4h2 _obes4z2 _obe2t1k2 _obi3b2 _obs4z2 _oc2 _oc4h2 _oc2h2r _ochr4z2 _oc4z2 _o\xc4\x872 _oda1 _od3a2u1 _o2d3b2 _o2d3c2 _o2d3\xc4\x872 _o4d3d2 _o2d3f2 _o2d3g2 _od3h2 _o1d3i2zo1 _od3j2 _o2d3k2 _od3l2 _o2d3m2 _o2d3n2 _o1do1 _od3o2s _o2d3p2 _o2d3s2 _o2d3\xc5\x9b2 _o2d3t2 _odu1 _od3u2c4z _od3u2m2 _od3w2 _od5\xc5\xbc2 _odbe1 _odbe2z3 _odc4h2 _odc4z2 _odd4z2 _odd4\xc5\xba2 _odd4\xc5\xbc2 _ode3b2 _ode3c2 _ode3\xc4\x872 _ode3d2 _ode3f2 _ode3g2 _ode3h2 _ode3k2 _ode3l2 _ode3\xc5\x822 _ode3m2 _ode3m1k2 _ode3p2 _ode3r2 _ode3s2 _ode3\xc5\x9b2 _ode3t2 _ode3w2 _ode3z2 _ode3\xc5\xba2 _ode3\xc5\xbc2 _odec4h2 _odec4z2 _oded4z2 _oded4\xc5\xba2 _oded4\xc5\xbc2 _ode2p1c _odepc4h2 _oder4z2 _ode2r1\xc5\xbc2 _odes4z2 _ode2t1c _odetc4h2 _ode2t1k2 _odkr4z2 _ods4z2 _od4\xc5\xba2 _of2 _og2 _ogni1 _o1gni2o1 _ognio3tr2 _og\xc3\xb31 _og\xc3\xb32l1n _o1g\xc3\xb3lno1 _og\xc3\xb3lno3k2 _oh2 _ok2 _oka1 _oka3m2 _okr2 _ole1 _o1le2o3 _om2 _op2 _o2p1c _opc4h2 _o2r1t _or2t\xc4\x991 _or4z2 _o2r2\xc5\xbc2 _os2 _osi1 _osi2e1 _osie2m3 _osie2m1s _osie1mse1 _osiemse2t3 _os4z2 _o\xc5\x9b2 _o\xc5\x9bmi1 _o1\xc5\x9bmi2o1 _o\xc5\x9bmio3\xc5\x9b2 _ow2 _oz2 _o\xc5\xba2 _o\xc5\xbc2 _p8 _2p1b8 _2p1c8 _pc4h8 _2p1\xc4\x878 _2p1d8 _pe1 _pe2r3 _pe3c2k _pe3r4e1 _pe3r4i1 _pe3r4o1 _pe3r4u1 _pe3r4y1 _pe4r5i2n _pe1e2 _pe1e1se1 _pee2se2l _pe2\xc5\x821n _pe\xc5\x82no1 _pe\xc5\x82no3kr2 _pe1pe1 _pe1pe1e2 _pepee2r _pepee2s _pe1ze1 _peze2t1p _pe1ze1tpe1 _pe1ze1tpe1e2 _peze2t1pee2r _2p1f8 _2p1g8 _ph8 _pi1 _pi2e1 _pie2r1w _pierwo1 _pierwo3w2 _pi2\xc4\x991 _pi\xc4\x992\xc4\x873 _pi1\xc4\x99ci1 _pi\xc4\x99ci2o1 _pi\xc4\x99cio3\xc5\x9b2 _pi\xc4\x992\xc4\x871s _pi\xc4\x99\xc4\x87se1 _pi\xc4\x99\xc4\x87se2t3 _pi2o1 _pio1no1 _piono3w2 _pj8 _2p1k8 _pl8 _p\xc5\x828 _p\xc5\x82a1 _p\xc5\x82asko1 _p\xc5\x82asko3w2 _2p1m8 _2p1n8 _2p1\xc5\x848 _po1 _po2d2 _po3b2 _po3c2 _po3\xc4\x872 _pod3\xc5\x822 _po3d4\xc5\x82u1 _po2d3m2 _podmu1 _po3d4muc4h _po2d3n2 _podna1 _po3d4naw _pod3r2 _pod2r1w _po3d4r2wi1 _podra1 _po3d4rap _po3d4ra\xc5\xbc _podre1 _podre2p1c _po3d4repc4z _po3d4re2p1t _podr\xc4\x991 _po3d4r\xc4\x99c4z _po3d4r\xc4\x99tw _po1dro1 _po3d4roba1 _po3d4ro1bo1 _po3d4rob\xc3\xb31 _po3d4roby1 _po3d4roc4z _po3d4ro\xc5\xbc _podr\xc3\xb31 _po3d4r\xc3\xb3\xc5\xbc _podru1 _po3d4ruzg _podry1 _po3d4ryg _podr4z _po3d4rze1 _pod3w2 _podwa1 _po3d4waj _po1dwo1 _po3d4woi2 _po3d4woj _po3d4wor4z _podw\xc3\xb31 _po3d4w\xc3\xb32j1n _po3d4w\xc3\xb3r _po3da1 _po3d\xc4\x851 _po3de1 _po3dej _po3d\xc4\x991 _podi1 _po3di2u1 _po3do1 _po3du1 _po3dy1 _po3d4z2 _po3d4\xc5\xba2 _poe2 _po3e2k2s3 _po3f2 _po3g2 _po3h2 _po3k2 _po3l2 _po3\xc5\x822 _po3m2 _po3p2 _po3r2 _po3r1\xc5\xbc _po3s2 _po3\xc5\x9b2 _po3t2 _po3w2 _po3z2 _po3\xc5\xba2 _po3\xc5\xbc2 _poc4z2 _po4c2z3d _po4c2z3t _pode3k2 _po4d3e4k2s3 _podobi1 _podobi2a1 _po4d3o2biad _po1do1bo1 _podobo2j1c _po4d3o2bojc4z _podob\xc3\xb31 _po4d3o2b\xc3\xb3z _podobra1 _po4d3o2braz _podoc4h _po1do1cho1 _po4d3o2choc _po4d3o2d1m _po4d3o2f _po4d3o2g _podoki1 _podoki2e1 _po4d3o2kien _po4d3o2k1n _podokre1 _po4d3o2kres _podokr\xc4\x991 _po4d3o2kr\xc4\x99g _podopi1 _podopi2e1 _po4d3o2piec4z _podory1 _po4d3o2ryw _podosi1 _podosi1ni1 _podosini2a1 _po4d3o2siniak _po4d3o2str4z _podo2b1s _po4d3obs4z _po4d3o4d3d _podo2l1b _po4d3olbr4z _pod\xc3\xb31 _po4d3\xc3\xb3w _po4d3u2c4z _po4d3u2d4z _po4d3u2pa1 _podura1 _po4d3u2ral _po4d3u2sta1 _podus4z _podu2s2z1c _po4d3u2szc4z _po4d5r\xc4\x992cz1n _podza1 _po4d5zakr _po4d5zam _po4d5zast _po2dz1b _po4d5zbi1 _po4d5ze1 _podzi1 _podzi2e1 _podzie1le1 _podzi1eleni1 _po4d5zieleni2\xc4\x851 _po4d5zielenic _po4d5zieleni\xc4\x87 _podzi2e1le1ni2e1 _po4d5zielenien _po4d5zieleni2\xc4\x991 _po4d5zielenil _po4d5zieleni\xc5\x82 _po4d5zielenim _po4d5zieleni2o1 _po4d5zielenis _po4d5ziem _po1dzi2o1 _po4d5ziom _po4d5z2w2r _po4l3s _po4m3p _po4\xc5\x843c _po4r3c _po4r3f _po4r3n _po4r3t _po4s2t3d _po4s2t3f _po4s2t3g _po4st3h _po4st3i2 _po4s2t3k _po4st3l _po4s2t3m _po4s2t3p _po1stro1 _po4st3rom _po4s2t3s _poduszczy1 _po5d4uszczyn _po5r4t\xc4\x991 _pobr2 _pobr4z2 _poc4h2 _poc2h2r _pochr4z2 _pod3a2l1p _po2d3b2 _po2d3c2 _po2d3\xc4\x872 _po4d3d2 _po2d3f2 _po2d3g2 _pod3h2 _pod3i2n _pod3j2 _po2d3k2 _pod3l2 _po2d3p2 _po2d3s2 _po2d3\xc5\x9b2 _pod\xc5\x9br\xc3\xb31 _pod3\xc5\x9br\xc3\xb32d5 _po2d3t2 _pod5\xc5\xbc2 _podc4h2 _podc4z2 _podd4\xc5\xba2 _podd4\xc5\xbc2 _pode3b2 _pode3c2 _pode3\xc4\x872 _pode3d2 _pode3f2 _pode3g2 _pode3h2 _pode3l2 _pode3\xc5\x822 _pode3m2 _pode3p2 _pode3r2 _pode3s2 _pode3\xc5\x9b2 _pode3t2 _pode3t1k2 _pode3w2 _pode3z2 _pode3\xc5\xba2 _pode3\xc5\xbc2 _podec4h2 _podec4z2 _poded4z2 _poded4\xc5\xba2 _poded4\xc5\xbc2 _pode2p1c _podepc4h2 _poder4z2 _pode2r1\xc5\xbc2 _podesc4h2 _podes4z2 _podro2z3 _podsm2 _pods4z2 _pogr4z2 _pokl2 _pokr2 _po2\xc5\x821k2 _pom4p1k _po2m1k2 _pona1 _pona2d2 _pona3b2 _pona3c2 _pona3c4z2 _pona3\xc4\x872 _po1na3do1 _pona3d4\xc5\xba2 _pona3f2 _pona3g2 _pona3h2 _pona3k2 _pona3l2 _pona3\xc5\x822 _pona3m2 _pona3p2 _pona3r2 _pona3s2 _pona3\xc5\x9b2 _pona3t2 _pona3w2 _pona3z2 _pona3\xc5\xba2 _pona3\xc5\xbc2 _pona4f3t _ponabr4z2 _ponac4h2 _pona2d3c2 _ponad3c4h2 _ponad3c4z2 _pona2d3\xc4\x872 _pona4d3d _ponad3d4\xc5\xba2 _pona2d3f2 _pona2d3g2 _ponad3h2 _ponad3j2 _pona2d3k2 _ponad3l2 _pona2d3p2 _pona2d3s2 _pona2d3\xc5\x9b2 _pona2d3t2 _ponad4z2 _ponar4z2 _ponasm2 _ponas4z2 _ponaz3m2 _ponazw2 _poni1 _poni2e1 _ponie3k2 _ponie3w2 _po2p1c _popc4h2 _po1po1 _popo3w2 _popr4z2 _por4t1w _por4t1f _por4t1m _po1ro1 _poro2z3 _poro3z4u1 _por4z2 _posc4h2 _posm2 _pos4z2 _po2t1k2 _potr2 _poz4m2 _poza1 _poza3u2 _pozw2 _p\xc3\xb31 _p\xc3\xb32\xc5\x823 _p\xc3\xb33\xc5\x824\xc4\x851 _p\xc3\xb3\xc5\x82e1 _p\xc3\xb33\xc5\x824ec4z _p\xc3\xb33\xc5\x824\xc4\x991 _p\xc3\xb33\xc5\x824y1 _p\xc3\xb32\xc5\x821k2 _p\xc3\xb3\xc5\x82kr2 _p\xc3\xb32\xc5\x821m2 _p\xc3\xb3\xc5\x82o2 _p\xc3\xb3\xc5\x82ob3r _p\xc3\xb3\xc5\x82o2m2d _p\xc3\xb32\xc5\x821p _p\xc3\xb3\xc5\x82pr4z _p\xc3\xb3\xc5\x82przy1 _p\xc3\xb3\xc5\x82przy3m2k _4p3p8 _pr8 _pra1 _pra3s2 _pra2w1n _pra3w2nu1 _pra3w2z _pra1pra1 _prapra2w1n _prapra3w2nu1 _pre1 _predy1 _predy2s3po1 _pr4z8 _prze1 _prze2d2 _prze3b2 _prze3c2 _prze3\xc4\x872 _przed3\xc5\x822 _przed\xc5\x82u1 _prze3d4\xc5\x82u\xc5\xbc _prze2d3m2 _przedmu1 _prze3d4muc4h _przed3o2 _prze3d4o3br _prze3d4o3st _prze3d4o3zo1 _przed3r2 _przedra1 _przedra1ma1 _prze3d4ramat _przedru1 _prze3d4ruk _przedry1 _prze3d4ryl _pr4ze3d4r4z2 _przed3u2 _prze3d4um _prze3d\xc4\x851 _prze3d\xc4\x991 _prze3dy1 _prze3d4z2 _prze3d4\xc5\xba2 _prze1e2 _prze3e2k2s3 _prze3f2 _prze3g2 _prze3h2 _prze3k2 _prze3l2 _prze3\xc5\x822 _prze3m2 _prze3n2 _prze3p2 _prze3r2 _prze3s2 _prze3\xc5\x9b2 _prze3t2 _prze3u2 _prze3w2 _prze3z2 _prze3\xc5\xba2 _prze3\xc5\xbc2 _przed\xc5\x82u\xc5\xbcy1 _prze4d5\xc5\x82u\xc5\xbcyc _przedosta1 _prze4d5o4stat _prze4d5za1 _prze4d5z1g2 _przedzi1 _prze4d5zim _prze4d5zj _prze4d5z1l _prze4d5z2w2r _przedzwo1 _prze4d5zwoj _prze4d5\xc5\xbc2 _przebr2 _pr4zebr4z2 _przec4h2 _przec2h2r _pr4zechr4z2 _przeci1 _przeci2w3 _przeci1wi1 _prze1ci3w4i2e1 _przeciwa2 _przeci4w3w2 _przec4z2 _przeda1 _przedago1 _przed3a2gon _przed3a2k1c _przed3a2l1p _prze2d3b2 _prze2d3c2 _prze2d3\xc4\x872 _prze4d3d2 _prze1de1 _przed3e2g1z _prze1de1me1 _przed3e2mer _prze2d3f2 _prze2d3g2 _przed3h2 _przed3i2 _przed3j2 _prze2d3k2 _przed3l2 _prze2d3n2 _prze2d3p2 _prze2d3s2 _przedsi1 _przedsi2\xc4\x991 _przed3si\xc4\x993w2 _przed3s4z2 _prze2d3\xc5\x9b2 _prze2d3t2 _przed3w2 _przedc4h2 _przedc4z2 _przedd4z2 _przedd4\xc5\xba2 _przedd4\xc5\xbc2 _pr4zedgr4z2 _przedy2s3ku1 _pr4zegr4z2 _przekl2 _przekr2 _prze2\xc5\x821k2 _prze2m1k2 _prze2p1c _przepc4h2 _pr4zer4z2 _prze2r1\xc5\xbc2 _przesc4h2 _przesm2 _przes4z2 _prze2t1k2 _przetr2 _przetra1 _przetra2n2s3 _przy1 _przy3b2 _przy3c2 _przy3\xc4\x872 _przy3d2 _przy3f2 _przy3g2 _przy3h2 _przy3k2 _przy3l2 _przy3\xc5\x822 _przy3m2 _przy3p2 _przy3r2 _przy3s2 _przy3\xc5\x9b2 _przy3t2 _przy3w2 _przy3z2 _przy3\xc5\xba2 _przy3\xc5\xbc2 _przybr2 _przyc4h2 _przyc4z2 _przyd4z2 _przyd4\xc5\xba2 _przyd4\xc5\xbc2 _pr4zygr4z2 _przy2m1k2 _przyo2 _przyoz2 _przy2p1c _przypc4h2 _pr4zyr4z2 _przy2r1\xc5\xbc2 _przysc4h2 _przys4z2 _przy2t1k2 _2p1s8 _2p1\xc5\x9b8 _2p1t8 _pv8 _pw8 _px8 _2p1z8 _2p1\xc5\xba8 _2p1\xc5\xbc8 _r8 _2r1b8 _2r1c8 _2r1\xc4\x878 _2r1d8 _re1 _retra1 _retra2n2s3 _2r1f8 _2r1g8 _2r1h8 _2r1j8 _2r1k8 _2r1l8 _2r1\xc5\x828 _2r1m8 _2r1n8 _2r1\xc5\x848 _ro1 _ro2z3 _ro3z4a1 _ro3z4e1 _ro3z4e3b2 _ro3z4e3c2 _ro3z4e3\xc4\x872 _ro3z4e3d2 _ro3z4e3f2 _ro3z4e3g2 _ro3z4e3h2 _ro3z4e3k2 _ro3z4e3l2 _ro3z4e3\xc5\x822 _ro3z4e3m2 _ro3z4e3p2 _ro3z4e3r2 _ro3z4e3s2 _ro3z4e3\xc5\x9b2 _ro3z4e3t2 _ro3z4e3w2 _ro3z4e3z2 _ro3z4e3\xc5\xba2 _ro3z4e3\xc5\xbc2 _ro3z4ej _ro3z4u1 _ro4z5a2gi1 _rozani1 _ro4z5a2ni2e1 _ro4z5e2mo1 _ro4z5e4g3z _ro4z5e4n3t _rozbr4z2 _ro2z1d2 _rozec4h2 _rozec4z2 _rozed4z2 _rozed4\xc5\xba2 _rozed4\xc5\xbc2 _roze2p1c _rozepc4h2 _rozer4z2 _roze2r1\xc5\xbc2 _rozesc4h2 _rozes4z2 _rozi2 _rozm2 _ro1zo2 _ro2z1p _ro1zpo1 _rozpo3w2 _ro2z1\xc5\x9b2 _ro2z1t2 _roztr2 _rozw2 _2r1p8 _4r3r8 _2r1s8 _2r1\xc5\x9b8 _2r1t8 _rv8 _2r1w8 _rx8 _r4z8 _2r1\xc5\xba8 _2r1\xc5\xbc8 _s8 _sa1 _samo1 _samo3c4h2 _samo3k2 _samo3p2 _samo3w2 _samo1ro1 _samoro2z3 _2s1b8 _sc8 _sc4h8 _s\xc4\x878 _2s1d8 _2s1f8 _2s1g8 _sh8 _si1 _si2e1 _sie1de1 _siede2m3 _siede2m1s _sie1de1mse1 _siedemse2t3 _sie2d1m _si1edmi1 _siedmi2o1 _siedmio3\xc5\x9b2 _sj8 _sk8 _sk\xc4\x851 _sk\xc4\x85d4\xc5\xbc _sk\xc4\x852d5\xc5\xbce1 _skl8 _skr8 _sl8 _s\xc5\x828 _sm8 _sn8 _s\xc5\x848 _so1 _so1bo1 _sobo3w2 _sp8 _spo1 _spo2d2 _spo3b2 _spo3c2 _spo3\xc4\x872 _spo3d4z2 _spo3f2 _spo3g2 _spo3h2 _spo3k2 _spo3l2 _spo3\xc5\x822 _spo3m2 _spo3p2 _spo3r2 _spo3s2 _spo3\xc5\x9b2 _spo3t2 _spo3w2 _spo3z2 _spo3\xc5\xba2 _spo3\xc5\xbc2 _spo4r3n _spo4r3t _spoc4h2 _spoc4z2 _spo4d3d _spod4\xc5\xba2 _spod4\xc5\xbc2 _spor4z2 _spos4z2 _sp\xc3\xb31 _sp\xc3\xb32\xc5\x823 _sr8 _2s1s8 _s\xc5\x9b8 _st8 _ste1 _ste1re1 _stere2o3 _stereoa2 _ste1re1oe2 _stereoi2 _stereo1o2 _stereou2 _su1 _su2b3 _subi1 _su3b4i2e1 _subo1 _su3b4o2t1n _supe1 _supe2r3 _supera1 _supe3r4at _superi1 _supe3r4i2o1 _supe4r5a2tr _super4z _supe2r5z2b _supe1re2 _supero1 _superodr4z _su1perodrzu1 _supero2d1rzut _sv8 _sw8 _sx8 _s4z8 _sze1 _sze2s3 _sze4\xc5\x9b2\xc4\x873 _sze\xc5\x9b1c _sze1\xc5\x9b2ci1 _sze\xc5\x9bci2o1 _sze\xc5\x9bcio3\xc5\x9b2 _sze\xc5\x9b2\xc4\x871s _sze1\xc5\x9b\xc4\x87se1 _sze\xc5\x9b\xc4\x87se2t3 _2s1\xc5\xba8 _2s1\xc5\xbc8 _\xc5\x9b8 _2\xc5\x9b1b8 _\xc5\x9b1c8 _\xc5\x9b\xc4\x878 _2\xc5\x9b1d8 _2\xc5\x9b1f8 _2\xc5\x9b1g8 _\xc5\x9bh8 _\xc5\x9bj8 _2\xc5\x9b1k8 _\xc5\x9bl8 _\xc5\x9b\xc5\x828 _\xc5\x9bm8 _\xc5\x9bn8 _\xc5\x9b\xc5\x848 _2\xc5\x9b1p8 _\xc5\x9br8 _\xc5\x9br\xc3\xb31 _\xc5\x9br\xc3\xb32d5 _\xc5\x9br\xc3\xb3dr2 _2\xc5\x9b1s8 _2\xc5\x9b1\xc5\x9b8 _2\xc5\x9b1t8 _\xc5\x9bv8 _\xc5\x9bw8 _\xc5\x9bwi1 _\xc5\x9bwi2a1 _\xc5\x9bwiat\xc5\x82o1 _\xc5\x9bwiat\xc5\x82o3w2 _\xc5\x9bx8 _2\xc5\x9b1z8 _2\xc5\x9b1\xc5\xba8 _2\xc5\x9b1\xc5\xbc8 _t8 _ta1 _ta2o3 _tar4z _ta1rza1 _ta2r7zan _2t1b8 _2t1c8 _tc4h8 _2t1\xc4\x878 _2t1d8 _te1 _te2o3 _2t1f8 _2t1g8 _th8 _tj8 _2t1k8 _tl8 _t\xc5\x828 _2t1m8 _2t1n8 _2t1\xc5\x848 _to1 _toa3 _2t1p8 _tr8 _tra1 _tra2n2s3 _tran3s4e1 _transi1 _tran3s4i2e1 _tran3s4y1 _tran3s4z _tran4s5e2u1 _tra1nsa2 _transo2 _tr\xc3\xb31 _tr\xc3\xb32j3 _tr\xc3\xb33j4\xc4\x851 _tr\xc3\xb3je1 _tr\xc3\xb33j4ec4z _tr\xc3\xb33j4\xc4\x991 _tr4z8 _trze1 _trze2c4h3 _trze2c2h1s _trze1chse1 _trzechse2t3 _2t1s8 _2t1\xc5\x9b8 _4t3t8 _tv8 _tw8 _tx8 _ty1 _tysi1 _tysi2\xc4\x851 _tysi\xc4\x852c3 _tysi\xc4\x853c4a1 _tysi\xc4\x853c4e1 _tysi\xc4\x853c4z _tysi\xc4\x854c5z\xc5\x82 _2t1z8 _2t1\xc5\xba8 _2t1\xc5\xbc8 _u1 _u3b2 _u3c2 _u3d2 _u3f2 _u3g2 _u3h2 _u3k2 _u3l2 _u3\xc5\x822 _u3m2 _u3n2 _u3p2 _u3r2 _u3s2 _u3t2 _u3w2 _u3z2 _u3\xc5\xba2 _u3\xc5\xbc2 _u4d3k _u4f3n _ukle1 _u4k3lej _u4l3s _u4l3t _u2m1b _u4m3br _u4n3c _u4n3d _u4p3p _u4p3p2s _u4r3s _u4s2t3n _u4s2t1c _u4s2t1k _u4z3be1 _ube1 _ube2z3 _ubezw2 _ubr2 _uc4h2 _uc4z2 _u\xc4\x872 _ud4z2 _ud4\xc5\xba2 _ud4\xc5\xbc2 _ukr2 _u2m1k2 _u2p1c _upc4h2 _upo1 _upo2d2 _upo3b2 _upo3c2 _upo3\xc4\x872 _upo3da1 _upo3f2 _upo3g2 _upo3h2 _upo3k2 _upo3l2 _upo3\xc5\x822 _upo3m2 _upo3p2 _upo3r2 _upo3s2 _upo3\xc5\x9b2 _upo3t2 _upo3w2 _upo3z2 _upo3\xc5\xba2 _upo3\xc5\xbc2 _upoc4h2 _upoc4z2 _upo4d3d _upod4\xc5\xba2 _upod4\xc5\xbc2 _upor4z2 _upos4z2 _uro1 _uro2z3 _ur4z2 _u2r1\xc5\xbc2 _usc4h2 _us4z2 _u\xc5\x9b2 _u2t1k2 _utr2 _uze1 _uze3w2 _v8 _vb8 _vc8 _v\xc4\x878 _vd8 _vf8 _vg8 _vh8 _vj8 _vk8 _vl8 _v\xc5\x828 _vm8 _vn8 _v\xc5\x848 _vp8 _vr8 _vs8 _v\xc5\x9b8 _vt8 _vv8 _vw8 _vx8 _vz8 _v\xc5\xba8 _v\xc5\xbc8 _w8 _2w1b8 _2w1c8 _2w1\xc4\x878 _2w1d8 _we1 _we3b2 _we3c2 _we3\xc4\x872 _we3d2 _we3f2 _we3g2 _we3h2 _we3k2 _we3l2 _we3\xc5\x822 _we3m2 _we3n2 _we3p2 _we3r2 _we3s2 _we3\xc5\x9b2 _we3t2 _we3w2 _we3z2 _we3\xc5\xbc2 _we4k3t _we4l3w _we4\xc5\x823n _we4n3d _we4n3t _we4r3b _we4r3d _we4r3n _we4r3s _we4r3t _we4s3pr4z _wes2t1c _we4s3tc4h2 _we4z3br _we4z3g\xc5\x82 _wec4h2 _wec4z2 _wed4z2 _wed4\xc5\xba2 _wed4\xc5\xbc2 _we2m1k2 _we2p1c _wepc4h2 _wer4z2 _wes4z2 _we2t1k2 _we2w1n _wewn\xc4\x851 _wewn\xc4\x852tr4z3 _2w1f8 _2w1g8 _wh8 _wi1 _wi2e1 _wielo1 _wielo3d2 _wielo3k2 _wielo3\xc5\x9b2 _wielu1 _wie1luse1 _wieluse2t3 _wi2l1c _wilc4z _wilczo1 _wilczo3m2 _2w1j8 _2w1k8 _2w1l8 _2w1\xc5\x828 _2w1m8 _2w1n8 _wni1 _wni2e1 _wniebo1 _wniebo3w2 _2w1\xc5\x848 _wo1 _wo1do1 _wodo3w2 _2w1p8 _2w1r8 _2w1s8 _wsp\xc3\xb31 _wsp\xc3\xb32\xc5\x823 _wsp\xc3\xb3\xc5\x82i2 _wsp\xc3\xb3\xc5\x82o1 _wsp\xc3\xb3\xc5\x82o2b3w _wsp\xc3\xb3\xc5\x82u2 _wsp\xc3\xb32\xc5\x821w2 _ws4z _wsze1 _wsze2c4h3 _wszecho2 _wszec2h2w2 _2w1\xc5\x9b8 _2w1t8 _wv8 _4w3w8 _wx8 _wy1 _wy3b2 _wy3c2 _wy3\xc4\x872 _wy3d2 _wy3f2 _wy3g2 _wy3h2 _wy3k2 _wy3l2 _wy3\xc5\x822 _wy3m2 _wyo2 _wy3o2d3r _wy3p2 _wy3r2 _wy3s2 _wy3\xc5\x9b2 _wy3t2 _wy3w2 _wy3z2 _wy3\xc5\xba2 _wy3\xc5\xbc2 _wyc4z2 _wy4cz3ha1 _wy2\xc5\xbc1s _wy4\xc5\xbc3s4z _wybr2 _wybr4z2 _wyc4h2 _wydr2 _wyd4z2 _wyd4\xc5\xba2 _wyd4\xc5\xbc2 _wye2 _wye2k2s3 _wygr4z2 _wyi2 _wyi2zo1 _wykl2 _wykr2 _wykr4z2 _wy2m1k2 _wy2p1c _wypc4h2 _wypr4z2 _wyr4z2 _wy2r1\xc5\xbc2 _wysc4h2 _wysm2 _wys4z2 _wy2t1c _wytc4h2 _wy2t1k2 _wytr2 _2w1z8 _2w1\xc5\xba8 _2w1\xc5\xbc8 _x8 _xb8 _xc8 _x\xc4\x878 _xd8 _xf8 _xg8 _xh8 _xj8 _xk8 _xl8 _x\xc5\x828 _xm8 _xn8 _x\xc5\x848 _xp8 _xr8 _xs8 _x\xc5\x9b8 _xt8 _xv8 _xw8 _xx8 _xz8 _x\xc5\xba8 _x\xc5\xbc8 _z8 _za1 _za3b2 _za3c2 _za3\xc4\x872 _za3d2 _za3f2 _za3g2 _za3h2 _za3k2 _za3l2 _za3\xc5\x822 _za3m2 _zao2 _za3o2b3r _za3o2b3s _za3p2 _za3r2 _za3s2 _za3\xc5\x9b2 _za3t2 _za3u2 _za3w2 _za3z2 _za3\xc5\xba2 _za3\xc5\xbc2 _za4k3t _za4l3g _za4l3k _za4l3t _za4m3k _za2r1c _za4r3c4h _za4uto1 _za5m4k2n _zabr2 _zabr4z2 _zac4h2 _zac4z2 _zado1 _zado2\xc5\x9b\xc4\x873 _zado\xc5\x9b\xc4\x87u4 _zadr2 _zady1 _zady2s3po1 _zad4z2 _zad4\xc5\xba2 _zad4\xc5\xbc2 _zagr4z2 _zai2 _zai2n3 _zai2zo1 _zai1ni1 _zain4ic _zakl2 _zakr2 _zakr4z2 _zani1 _zani2e1 _zanie3d2 _zar4z2 _za2r1\xc5\xbc2 _zasc4h2 _zasm2 _zas4z2 _za2t1k2 _zatr2 _zb8 _2z1c8 _2z1\xc4\x878 _2z1d8 _zde1 _zde2z3 _zdeza1 _zde3z4awu1 _zde1ze1 _zde3z4el _zde3z4er _zde3z4y1 _zdy1 _zdysko1 _zdy2s3ko2n1t _zdyskre1 _zdy2s3kred _zdyskwa1 _zdy2s3kwal _ze1 _ze3b2 _ze3c2 _ze3\xc4\x872 _ze3d2 _ze3f2 _ze3g2 _ze3h2 _ze3k2 _ze3l2 _ze3\xc5\x822 _ze3m2 _ze3p2 _ze3r2 _ze3s2 _ze3\xc5\x9b2 _ze3t2 _ze3t1k2 _ze3w2 _ze3z2 _ze3\xc5\xba2 _ze3\xc5\xbc2 _ze4r3k _ze1te1 _ze1te1me1 _ze4t3e2m1e2s _ze1te1se1 _ze4t3e2s1e2l _ze4t3e2m1p _zetha1 _ze4t3hap _zec4h2 _zec4z2 _zed4z2 _zed4\xc5\xba2 _zed4\xc5\xbc2 _zekl2 _ze2p1c _zepc4h2 _zer4z2 _ze2r1\xc5\xbc2 _zesc4h2 _zesm4 _zes4z2 _2z1f8 _zg8 _zh8 _zi1 _zi2m1n _zimno1 _zimno3kr2 _zj8 _2z1k8 _zl8 _z\xc5\x828 _z\xc5\x82o1 _z\xc5\x82o3w2 _zm8 _zma1 _zma2r1t _zmartwy1 _zmartwy2c4h3 _zmartwyc2h2w2 _zn8 _zni1 _zni2e1 _znie3b2 _znie3c2 _znie3\xc4\x872 _znie3d2 _znie3f2 _znie3g2 _znie3h2 _znie3k2 _znie3l2 _znie3\xc5\x822 _znie3m2 _znie3n2 _znie3\xc5\x842 _znie3p2 _znie3r2 _znie3s2 _znie3\xc5\x9b2 _znie3t2 _znie3w2 _znie3z2 _znie3\xc5\xba2 _znie3\xc5\xbc2 _znie4d4\xc5\xba3 _znie4m3c _zniec4h2 _zniec4z2 _znied4z2 _znied4\xc5\xbc2 _znier4z2 _znies4z2 _z\xc5\x848 _zo1 _zo2o3 _2z1p8 _zr8 _zro1 _zro2z3 _zro3z4u1 _2z1s8 _2z1\xc5\x9b8 _2z1t8 _zv8 _zw8 _zx8 _4z3z8 _z\xc5\xba8 _z\xc5\xbc8 _\xc5\xba8 _2\xc5\xba1b8 _2\xc5\xba1c8 _2\xc5\xba1\xc4\x878 _2\xc5\xba1d8 _\xc5\xba2d4\xc5\xba8 _2\xc5\xba1f8 _2\xc5\xba1g8 _\xc5\xbah8 _\xc5\xbaj8 _2\xc5\xba1k8 _2\xc5\xba1l8 _\xc5\xba\xc5\x828 _2\xc5\xba1m8 _2\xc5\xba1n8 _\xc5\xba\xc5\x848 _2\xc5\xba1p8 _\xc5\xbar8 _2\xc5\xba1s8 _2\xc5\xba1\xc5\x9b8 _2\xc5\xba1t8 _\xc5\xbav8 _2\xc5\xba1w8 _\xc5\xbax8 _2\xc5\xba1z8 _4\xc5\xba3\xc5\xba8 _2\xc5\xba1\xc5\xbc8 _\xc5\xbc8 _2\xc5\xbc1b8 _2\xc5\xbc1c8 _2\xc5\xbc1\xc4\x878 _2\xc5\xbc1d8 _2\xc5\xbc1f8 _2\xc5\xbc1g8 _\xc5\xbch8 _2\xc5\xbc1j8 _2\xc5\xbc1k8 _2\xc5\xbc1l8 _2\xc5\xbc1\xc5\x828 _2\xc5\xbc1m8 _2\xc5\xbc1n8 _2\xc5\xbc1\xc5\x848 _2\xc5\xbc1p8 _2\xc5\xbc1r8 _2\xc5\xbc1s8 _2\xc5\xbc1\xc5\x9b8 _2\xc5\xbc1t8 _\xc5\xbcv8 _2\xc5\xbc1w8 _\xc5\xbcx8 _2\xc5\xbc1z8 _2\xc5\xbc1\xc5\xba8 _4\xc5\xbc3\xc5\xbc8 \xc5\x9b1c 1\xc5\x9b2ci1 2b1c 2b1\xc4\x87 2b1d 2b1f 2b1g 2b1k 2b1m 2b1n 2b1\xc5\x84 2b1p 2b1s 2b1\xc5\x9b 2b1t 2b1z 2b1\xc5\xba 2b1\xc5\xbc 2b2\xc5\x821k 2b2r1n 2c1b 2c1\xc4\x87 2c1d 2c1f 2c1g 2c1k 2c1l 2c1m 2c1n 2c1\xc5\x84 2c1p 2c1s 2c1\xc5\x9b 2c1t 2c1\xc5\xba 2c1\xc5\xbc c4h 2c2h1b 2c2h1c 2c2h1\xc4\x87 2c2h1d 2c2h1f 2c2h1g 2c2h1k 2c2h1m 2c2h1n 2c2h1\xc5\x84 2c2h1p 2c2h1s 2c2h1\xc5\x9b 2c2h1t 2c2h1z 2c2h1\xc5\xba 2c2h1\xc5\xbc c4z 2cz1b 2c2z1c 2c2z1\xc4\x87 2c2z1d 2c2z1f 2cz1g 2c2z1k 2cz1l 2cz1m 2cz1n 2cz1\xc5\x84 2c2z1p 2c2z1s 2c2z1\xc5\x9b 2c2z1t 2c4z3z 2cz1\xc5\xba 2cz1\xc5\xbc 2\xc4\x871b 2\xc4\x871c 2\xc4\x871d 2\xc4\x871f 2\xc4\x871g 2\xc4\x871k 2\xc4\x871m 2\xc4\x871n 2\xc4\x871\xc5\x84 2\xc4\x871p 2\xc4\x871s 2\xc4\x871\xc5\x9b 2\xc4\x871t 2\xc4\x871z 2\xc4\x871\xc5\xba 2\xc4\x871\xc5\xbc 2d1b 2d1c 2d1\xc4\x87 2d1f 2d1g 2d1k 2d1m 2d1n 2d1\xc5\x84 2d1p 2d1s 2d1\xc5\x9b 2d1t 2d2\xc5\x821b d2\xc5\x821s 2d\xc5\x82s4z 2d2r1n d4z 2dz1b 2d2z1c 2d2z1\xc4\x87 2d2z1d 2d2z1f 2dz1g 2d2z1k 2dz1l 2dz1m 2dz1n 2dz1\xc5\x84 2d2z1p 2d2z1s 2d2z1\xc5\x9b 2d2z1t 2d4z3z 2dz1\xc5\xba 2dz1\xc5\xbc d4\xc5\xba 2d2\xc5\xba1b 2d2\xc5\xba1c 2d2\xc5\xba1\xc4\x87 2d2\xc5\xba1d 2d2\xc5\xba1f 2d2\xc5\xba1g 2d2\xc5\xba1k 2d2\xc5\xba1m 2d2\xc5\xba1n 2d\xc5\xba1\xc5\x84 2d2\xc5\xba1p 2d2\xc5\xba1s 2d2\xc5\xba1\xc5\x9b 2d2\xc5\xba1t 2d2\xc5\xba1z 2d4\xc5\xba3\xc5\xba 2d2\xc5\xba1\xc5\xbc d4\xc5\xbc 2d2\xc5\xbc1b 2d2\xc5\xbc1c 2d2\xc5\xbc1\xc4\x87 2d2\xc5\xbc1d 2d2\xc5\xbc1f 2d2\xc5\xbc1g 2d2\xc5\xbc1k 2d2\xc5\xbc1m 2d2\xc5\xbc1n 2d2\xc5\xbc1\xc5\x84 2d2\xc5\xbc1p 2d2\xc5\xbc1s 2d2\xc5\xbc1\xc5\x9b 2d2\xc5\xbc1t 2d2\xc5\xbc1z 2d2\xc5\xbc1\xc5\xba 2d4\xc5\xbc3\xc5\xbc 2f1c 2f1k 2f1m 2f1n 2g1b 2g1c 2g1\xc4\x87 2g1d 2g1f 2g1k 2g1m 2g1\xc5\x84 2g1p 2g1s 2g1\xc5\x9b 2g1t 2g1z 2g1\xc5\xba 2g1\xc5\xbc 2g2\xc5\x821b 2h1b 2h1c 2h1\xc4\x87 2h1d 2h1f 2h1g 2h1j 2h1k 2h1l 2h1\xc5\x82 2h1m 2h1n 2h1\xc5\x84 2h1p 2h1r 2h1s 2h1\xc5\x9b 2h1t 2h1w 2h1z 2h1\xc5\xba 2h1\xc5\xbc 2j1b 2j1c 2j1\xc4\x87 2j1d 2j1f 2j1g 2j1h 2j1k 2j1l 2j1\xc5\x82 2j1m 2j1n 2j1\xc5\x84 2j1p 2j1r 2j1s 2j1\xc5\x9b 2j1t 2j1w 2j1z 2j1\xc5\xba 2j1\xc5\xbc 2k1b 2k1c 2k1\xc4\x87 2k1d 2k1f 2k1g 2k1m 2k1n 2k1\xc5\x84 2k1p 2k1s 2k1s4z 2k1\xc5\x9b 2k1t 2k1z 2k1\xc5\xba 2k1\xc5\xbc 2k2\xc5\x821b 2l1b 2l1c 2l1\xc4\x87 2l1d 2l1f 2l1g 2l1h 2l1j 2l1k 2l1\xc5\x82 2l1m 2l1n 2l1\xc5\x84 2l1p 2l1r 2l1s 2l1\xc5\x9b 2l1t 2l1w 2l1z 2l1\xc5\xba 2l1\xc5\xbc 2\xc5\x821b 2\xc5\x821c 2\xc5\x821\xc4\x87 2\xc5\x821d 2\xc5\x821f 2\xc5\x821g 2\xc5\x821h 2\xc5\x821j 2\xc5\x821k 2\xc5\x821l 2\xc5\x821m 2\xc5\x821n 2\xc5\x821\xc5\x84 2\xc5\x821p 2\xc5\x821r 2\xc5\x821s 2\xc5\x821\xc5\x9b 2\xc5\x821t 2\xc5\x821w 2\xc5\x821z 2\xc5\x821\xc5\xba 2\xc5\x821\xc5\xbc 2m1b 2m1c 2m1\xc4\x87 2m1d 2m1f 2m1g 2m1h 2m1j 2m1k 2m1l 2m1\xc5\x82 2m1n 2m1\xc5\x84 2m1p 2m1r 2m1s 2m1\xc5\x9b 2m1t 2m1w 2m1z 2m1\xc5\xba 2m1\xc5\xbc 2n1b 2n1c 2n1\xc4\x87 2n1d 2n1f 2n1g 2n1h 2n1j 2n1k 2n1l 2n1\xc5\x82 2n1m 2n1\xc5\x84 2n1p 2n1r 2n1s 2n1\xc5\x9b 2n1t 2n1w 2n1z 2n1\xc5\xba 2n1\xc5\xbc 2n2t1n 2\xc5\x841b 2\xc5\x841c 2\xc5\x841\xc4\x87 2\xc5\x841d 2\xc5\x841f 2\xc5\x841g 2\xc5\x841h 2\xc5\x841j 2\xc5\x841k 2\xc5\x841l 2\xc5\x841\xc5\x82 2\xc5\x841m 2\xc5\x841n 2\xc5\x841\xc5\x84 2\xc5\x841p 2\xc5\x841r 2\xc5\x841s 2\xc5\x841\xc5\x9b 2\xc5\x841t 2\xc5\x841w 2\xc5\x841z 2\xc5\x841\xc5\xba 2\xc5\x841\xc5\xbc 2p1b 2p1c 2p1\xc4\x87 2p1d 2p1f 2p1g 2p1k 2p1m 2p1n 2p1\xc5\x84 2p1s 2p1s4z 2p1\xc5\x9b 2p1t 2p1z 2p1\xc5\xba 2p1\xc5\xbc 2p2l1n 2r1b 2r1c 2r1\xc4\x87 2r1d 2r1f 2r1g 2r1h 2r1j 2r1k 2r1l 2r1\xc5\x82 2r1m 2r1n 2r1\xc5\x84 2r1p 2r1s 2r1\xc5\x9b 2r1t 2r1w 2r1\xc5\xba 2r1\xc5\xbc r4z 2rz1b 2r2z1c 2r2z1\xc4\x87 2r2z1d 2r2z1f 2rz1g 2rz1h 2rz1j 2r2z1k 2rz1l 2rz1\xc5\x82 2rz1m 2rz1n 2rz1\xc5\x84 2r2z1p 2rz1r 2r2z1s 2r2z1\xc5\x9b 2r2z1t 2rz1w 2rz1\xc5\xba 2rz1\xc5\xbc 2s1b 2s1d 2s1f 2s1g 2s1s 2s1\xc5\xba 2s1\xc5\xbc 2s2\xc5\x821b 2s2n1k 2s2t1k 2s2t1n s2t1s 2sts4z s4z 2s2z1c 2s2z1\xc4\x87 2s2z1f 2s2z1k 2sz1l 2sz1m 2sz1n 2s2z1p 2s2z1s 2s2z1\xc5\x9b 2s2z1t 2sz1w 2s4z3z 2sz2l1n 2\xc5\x9b1b 2\xc5\x9b1d 2\xc5\x9b1f 2\xc5\x9b1g 2\xc5\x9b1k 2\xc5\x9b1p 2\xc5\x9b1s 2\xc5\x9b1\xc5\x9b 2\xc5\x9b1t 2\xc5\x9b1z 2\xc5\x9b1\xc5\xba 2\xc5\x9b1\xc5\xbc 2\xc5\x9b2\xc4\x871c 2\xc5\x9b2l1m 2\xc5\x9b2l1n 2t1b 2t1c 2t1\xc4\x87 2t1d 2t1f 2t1g 2t1k 2t1m 2t1n 2t1\xc5\x84 2t1p 2t1s 2t1\xc5\x9b 2t1z 2t1\xc5\xba 2t1\xc5\xbc 2t2l1n 2t2r1k tr4z 2t2rz1n 2w1b 2w1c 2w1\xc4\x87 2w1d 2w1f 2w1g 2w1j 2w1k 2w1l 2w1\xc5\x82 2w1m 2w1n 2w1\xc5\x84 2w1p 2w1r 2w1s 2w1\xc5\x9b 2w1t 2w1z 2w1\xc5\xba 2w1\xc5\xbc 2z1c 2z1\xc4\x87 2z1d 2z1f 2z1k 2z1p 2z1s 2z1\xc5\x9b 2z1t 2z2d1k 2z2d1n 2\xc5\xba1b 2\xc5\xba1c 2\xc5\xba1\xc4\x87 2\xc5\xba1d 2\xc5\xba1f 2\xc5\xba1g 2\xc5\xba1k 2\xc5\xba1l 2\xc5\xba1m 2\xc5\xba1n 2\xc5\xba1p 2\xc5\xba1s 2\xc5\xba1\xc5\x9b 2\xc5\xba1t 2\xc5\xba1w 2\xc5\xba1z 2\xc5\xba1\xc5\xbc 2\xc5\xbc1b 2\xc5\xbc1c 2\xc5\xbc1\xc4\x87 2\xc5\xbc1d 2\xc5\xbc1f 2\xc5\xbc1g 2\xc5\xbc1j 2\xc5\xbc1k 2\xc5\xbc1l 2\xc5\xbc1\xc5\x82 2\xc5\xbc1m 2\xc5\xbc1n 2\xc5\xbc1\xc5\x84 2\xc5\xbc1p 2\xc5\xbc1r 2\xc5\xbc1s 2\xc5\xbc1\xc5\x9b 2\xc5\xbc1t 2\xc5\xbc1w 2\xc5\xbc1z 2\xc5\xbc1\xc5\xba dni1 dni2o1 3d2niow 3k2s2z2t 3m2k2n mne1 3m2nest 3m2nezj 3m2s2k2n pne1 3p2ne2u1 wc4z wcza1 3w2czas w\xc5\x82a1 3w2\xc5\x82ad w\xc5\x82o1 3w2\xc5\x82os 4b3b 4c3c 4\xc4\x873\xc4\x87 4d3d 4f3f 4g3g 4h3h 4j3j 4k3k 4l3l 4\xc5\x823\xc5\x82 4m3m 4n3n 4p3p 4r3r 4t3t 4w3w 4z3z 4\xc5\xba3\xc5\xba 4\xc5\xbc3\xc5\xbc 8b_ 8b8b_ 8b8c_ 8b8\xc4\x87_ 8b8d_ 8b8f_ 8b8g_ 8b8h_ 8b8j_ 8b8k_ 8b8l_ 8b8\xc5\x82_ 8b8m_ 8b8n_ 8b8\xc5\x84_ 8b8p_ 8b8r_ br4z 8b8r8z_ 8b8s_ 8b8\xc5\x9b_ 8b8t_ 8b8v_ 8b8w_ 8b8x_ 8b8z_ 8b8\xc5\xba_ 8b8\xc5\xbc_ 8c_ 8c8b_ 8c8c_ 8c8\xc4\x87_ 8c8d_ 8c8f_ 8c8g_ 8c8h_ c2h2\xc5\x82 8c8h8\xc5\x82_ c2h2r chr4z 8ch8r8z_ c2h2w 8c8h8w_ 8c8j_ 8c8k_ 8c8l_ 8c8\xc5\x82_ 8c8m_ 8c8n_ 8c8\xc5\x84_ 8c8p_ 8c8r_ 8c8s_ 8c8\xc5\x9b_ 8c8t_ 8c8v_ 8c8w_ 8c8x_ 8c8z_ 8c8z8t_ 8c8\xc5\xba_ 8c8\xc5\xbc_ 8\xc4\x87_ 8\xc4\x878b_ 8\xc4\x878c_ 8\xc4\x878\xc4\x87_ 8\xc4\x878d_ 8\xc4\x878f_ 8\xc4\x878g_ 8\xc4\x878h_ 8\xc4\x878j_ 8\xc4\x878k_ 8\xc4\x878l_ 8\xc4\x878\xc5\x82_ 8\xc4\x878m_ 8\xc4\x878n_ 8\xc4\x878\xc5\x84_ 8\xc4\x878p_ 8\xc4\x878r_ 8\xc4\x878s_ 8\xc4\x878\xc5\x9b_ 8\xc4\x878t_ 8\xc4\x878v_ 8\xc4\x878w_ 8\xc4\x878x_ 8\xc4\x878z_ 8\xc4\x878\xc5\xba_ 8\xc4\x878\xc5\xbc_ 8d_ 8d8b_ 8d8c_ 8d8\xc4\x87_ 8d8d_ 8d8f_ 8d8g_ 8d8h_ 8d8j_ 8d8k_ 8d8l_ 8d8\xc5\x82_ 8d8m_ 8d8n_ 8d8\xc5\x84_ 8d8p_ 8d8r_ dr4z 8d8r8z_ 8d8s_ 8d8\xc5\x9b_ 8d8t_ 8d8v_ 8d8w_ 8d8x_ 8d8z_ 8d8\xc5\xba_ 8d8\xc5\xbc_ 8f_ 8f8b_ 8f8c_ 8f8\xc4\x87_ 8f8d_ 8f8f_ 8f8g_ 8f8h_ 8f8j_ 8f8k_ 8f8l_ 8f8\xc5\x82_ 8f8m_ 8f8n_ 8f8\xc5\x84_ 8f8p_ 8f8r_ 8f8s_ 8f8\xc5\x9b_ 8f8t_ 8f8v_ 8f8w_ 8f8x_ 8f8z_ 8f8\xc5\xba_ 8f8\xc5\xbc_ 8g_ 8g8b_ 8g8c_ 8g8\xc4\x87_ 8g8d_ 8g8f_ 8g8g_ 8g8h_ 8g8j_ 8g8k_ 8g8l_ 8g8\xc5\x82_ 8g8m_ 8g8n_ 8g8\xc5\x84_ 8g8p_ 8g8r_ 8g8s_ 8g8\xc5\x9b_ 8g8t_ 8g8v_ 8g8w_ 8g8x_ 8g8z_ 8g8\xc5\xba_ 8g8\xc5\xbc_ 8h_ 8h8b_ 8h8c_ 8h8\xc4\x87_ 8h8d_ 8h8f_ 8h8g_ 8h8h_ 8h8j_ 8h8k_ 8h8l_ 8h8\xc5\x82_ 8h8m_ 8h8n_ 8h8\xc5\x84_ 8h8p_ 8h8r_ 8h8s_ 8h8\xc5\x9b_ 8h8t_ 8h8v_ 8h8w_ 8h8x_ 8h8z_ 8h8\xc5\xba_ 8h8\xc5\xbc_ 8j_ 8j8b_ 8j8c_ 8j8\xc4\x87_ 8j8d_ 8j8f_ 8j8g_ 8j8h_ 8j8j_ 8j8k_ 8j8l_ 8j8\xc5\x82_ 8j8m_ 8j8n_ 8j8\xc5\x84_ 8j8p_ 8j8r_ 8j8s_ 8j8\xc5\x9b_ 8j8t_ 8j8v_ 8j8w_ 8j8x_ 8j8z_ 8j8\xc5\xba_ 8j8\xc5\xbc_ 8k_ 8k8b_ 8k8c_ 8k8\xc4\x87_ 8k8d_ 8k8f_ 8k8g_ 8k8h_ 8k8j_ 8k8k_ 8k8l_ 8k8\xc5\x82_ 8k8m_ 8k8n_ 8k8\xc5\x84_ 8k8p_ 8k8r_ 8k8s_ 8k8s8t_ 8k8\xc5\x9b_ 8k8t_ 8k8v_ 8k8w_ 8k8x_ 8k8z_ 8k8\xc5\xba_ 8k8\xc5\xbc_ 8l_ 8l8b_ 8l8c_ 8l8\xc4\x87_ 8l8d_ 8l8f_ 8l8g_ 8l8h_ 8l8j_ 8l8k_ 8l8l_ 8l8\xc5\x82_ 8l8m_ 8l8n_ 8l8\xc5\x84_ 8l8p_ 8l8r_ 8l8s_ 8l8\xc5\x9b_ 8l8t_ 8l8v_ 8l8w_ 8l8x_ 8l8z_ 8l8\xc5\xba_ 8l8\xc5\xbc_ 8\xc5\x82_ 8\xc5\x828b_ 8\xc5\x828c_ 8\xc5\x828\xc4\x87_ 8\xc5\x828d_ 8\xc5\x828f_ 8\xc5\x828g_ 8\xc5\x828h_ 8\xc5\x828j_ 8\xc5\x828k_ 8\xc5\x828l_ 8\xc5\x828\xc5\x82_ 8\xc5\x828m_ 8\xc5\x828n_ 8\xc5\x828\xc5\x84_ 8\xc5\x828p_ 8\xc5\x828r_ 8\xc5\x828s_ 8\xc5\x828\xc5\x9b_ 8\xc5\x828t_ 8\xc5\x828v_ 8\xc5\x828w_ 8\xc5\x828x_ 8\xc5\x828z_ 8\xc5\x828\xc5\xba_ 8\xc5\x828\xc5\xbc_ 8m_ 8m8b_ 8m8c_ 8m8\xc4\x87_ 8m8d_ 8m8f_ 8m8g_ 8m8h_ 8m8j_ 8m8k_ 8m8l_ 8m8\xc5\x82_ 8m8m_ 8m8n_ 8m8\xc5\x84_ 8m8p_ 8m8r_ 8m8s_ 8m8s8t_ 8m8\xc5\x9b_ 8m8t_ 8m8v_ 8m8w_ 8m8x_ 8m8z_ 8m8\xc5\xba_ 8m8\xc5\xbc_ 8n_ 8n8b_ 8n8c_ 8n8\xc4\x87_ 8n8d_ 8n8f_ 8n8g_ 8n8h_ 8n8j_ 8n8k_ 8n8l_ 8n8\xc5\x82_ 8n8m_ 8n8n_ 8n8\xc5\x84_ 8n8p_ 8n8r_ 8n8s_ 8n8\xc5\x9b_ 8n8t_ 8n8v_ 8n8w_ 8n8x_ 8n8z_ 8n8\xc5\xba_ 8n8\xc5\xbc_ 8\xc5\x84_ 8\xc5\x848b_ 8\xc5\x848c_ 8\xc5\x848\xc4\x87_ 8\xc5\x848d_ 8\xc5\x848f_ 8\xc5\x848g_ 8\xc5\x848h_ 8\xc5\x848j_ 8\xc5\x848k_ 8\xc5\x848l_ 8\xc5\x848\xc5\x82_ 8\xc5\x848m_ 8\xc5\x848n_ 8\xc5\x848\xc5\x84_ 8\xc5\x848p_ 8\xc5\x848r_ 8\xc5\x848s_ 8\xc5\x848\xc5\x9b_ 8\xc5\x848t_ 8\xc5\x848v_ 8\xc5\x848w_ 8\xc5\x848x_ 8\xc5\x848z_ 8\xc5\x848\xc5\xba_ 8\xc5\x848\xc5\xbc_ 8p_ 8p8b_ 8p8c_ 8p8\xc4\x87_ 8p8d_ 8p8f_ 8p8g_ 8p8h_ 8p8j_ 8p8k_ 8p8l_ 8p8\xc5\x82_ 8p8m_ 8p8n_ 8p8\xc5\x84_ 8p8p_ 8p8r_ pr4z 8p8r8z_ 8p8s_ 8p8\xc5\x9b_ 8p8t_ 8p8v_ 8p8w_ 8p8x_ 8p8z_ 8p8\xc5\xba_ 8p8\xc5\xbc_ 8r_ 8r8b_ 8r8c_ 8r8\xc4\x87_ 8r8d_ 8r8f_ 8r8g_ 8r8h_ 8r8j_ 8r8k_ 8r8l_ 8r8\xc5\x82_ 8r8m_ 8r8n_ 8r8\xc5\x84_ 8r8p_ 8r8r_ 8r8s_ rs4z 8r8s8z_ 8r8\xc5\x9b_ 8r8t_ 8r8v_ 8r8w_ 8r8x_ 8r8z_ 8r8z8\xc5\x82_ 8r8\xc5\xba_ 8r8\xc5\xbc_ 8s_ 8s8b_ 8s8c_ sc4h 8s8c8h_ 8s8\xc4\x87_ 8s8d_ 8s8f_ 8s8g_ 8s8h_ 8s8j_ 8s8k_ skr4z 8sk8r8z_ 8s8l_ 8s8\xc5\x82_ 8s8m_ 8s8n_ 8s8\xc5\x84_ 8s8p_ 8s8r_ 8s8s_ 8s8\xc5\x9b_ 8s8t_ 8s8t8r_ str4z 8s8t8r8z_ 8s8t8w_ 8s8v_ 8s8w_ 8s8x_ 8s8z_ szc4z 8sz8c8z_ sz2cz1b 8szc8z8b_ 8s8z8k_ 8s8z8n_ 8s8z8t_ 8sz8t8r_ 8s8\xc5\xba_ 8s8\xc5\xbc_ 8\xc5\x9b_ 8\xc5\x9b8b_ 8\xc5\x9b8c_ 8\xc5\x9b8\xc4\x87_ 8\xc5\x9b8d_ 8\xc5\x9b8f_ 8\xc5\x9b8g_ 8\xc5\x9b8h_ 8\xc5\x9b8j_ 8\xc5\x9b8k_ 8\xc5\x9b8l_ 8\xc5\x9b8\xc5\x82_ 8\xc5\x9b8m_ 8\xc5\x9b8n_ 8\xc5\x9b8\xc5\x84_ 8\xc5\x9b8p_ 8\xc5\x9b8r_ 8\xc5\x9b8s_ 8\xc5\x9b8\xc5\x9b_ 8\xc5\x9b8t_ 8\xc5\x9b8v_ 8\xc5\x9b8w_ 8\xc5\x9b8x_ 8\xc5\x9b8z_ 8\xc5\x9b8\xc5\xba_ 8\xc5\x9b8\xc5\xbc_ 8t_ 8t8b_ 8t8c_ 8t8\xc4\x87_ 8t8d_ 8t8f_ 8t8g_ 8t8h_ 8t8j_ 8t8k_ 8t8l_ 8t8\xc5\x82_ 8t8m_ 8t8n_ 8t8\xc5\x84_ 8t8p_ 8t8r_ 8t8r8z_ 8t8s_ 8t8\xc5\x9b_ 8t8t_ 8t8v_ 8t8w_ 8t8x_ 8t8z_ 8t8\xc5\xba_ 8t8\xc5\xbc_ 8v_ 8v8b_ 8v8c_ 8v8\xc4\x87_ 8v8d_ 8v8f_ 8v8g_ 8v8h_ 8v8j_ 8v8k_ 8v8l_ 8v8\xc5\x82_ 8v8m_ 8v8n_ 8v8\xc5\x84_ 8v8p_ 8v8r_ 8v8s_ 8v8\xc5\x9b_ 8v8t_ 8v8v_ 8v8w_ 8v8x_ 8v8z_ 8v8\xc5\xba_ 8v8\xc5\xbc_ 8w_ 8w8b_ 8w8c_ 8w8\xc4\x87_ 8w8d_ 8w8f_ 8w8g_ 8w8h_ 8w8j_ 8w8k_ 8w8l_ 8w8\xc5\x82_ 8w8m_ 8w8n_ 8w8\xc5\x84_ 8w8p_ 8w8r_ 8w8s_ 8w8\xc5\x9b_ 8w8t_ 8w8v_ 8w8w_ 8w8x_ 8w8z_ 8w8\xc5\xba_ 8w8\xc5\xbc_ 8x_ 8x8b_ 8x8c_ 8x8\xc4\x87_ 8x8d_ 8x8f_ 8x8g_ 8x8h_ 8x8j_ 8x8k_ 8x8l_ 8x8\xc5\x82_ 8x8m_ 8x8n_ 8x8\xc5\x84_ 8x8p_ 8x8r_ 8x8s_ 8x8\xc5\x9b_ 8x8t_ 8x8v_ 8x8w_ 8x8x_ 8x8z_ 8x8\xc5\xba_ 8x8\xc5\xbc_ 8z_ 8z8b_ 8z8c_ 8z8\xc4\x87_ 8z8d_ 8z8d8r_ zdr4z 8z8d8r8z_ 8z8f_ 8z8g_ 8z8h_ 8z8j_ 8z8k_ 8z8l_ 8z8\xc5\x82_ 8z8m_ 8z8n_ 8z8\xc5\x84_ 8z8p_ 8z8r_ 8z8s_ 8z8\xc5\x9b_ 8z8t_ 8z8v_ 8z8w_ 8z8x_ 8z8z_ 8z8\xc5\xba_ 8z8\xc5\xbc_ 8\xc5\xba_ 8\xc5\xba8b_ 8\xc5\xba8c_ 8\xc5\xba8\xc4\x87_ 8\xc5\xba8d_ 8\xc5\xba8f_ 8\xc5\xba8g_ 8\xc5\xba8h_ 8\xc5\xba8j_ 8\xc5\xba8k_ 8\xc5\xba8l_ 8\xc5\xba8\xc5\x82_ 8\xc5\xba8m_ 8\xc5\xba8n_ 8\xc5\xba8\xc5\x84_ 8\xc5\xba8p_ 8\xc5\xba8r_ 8\xc5\xba8s_ 8\xc5\xba8\xc5\x9b_ 8\xc5\xba8t_ 8\xc5\xba8v_ 8\xc5\xba8w_ 8\xc5\xba8x_ 8\xc5\xba8z_ 8\xc5\xba8\xc5\xba_ 8\xc5\xba8\xc5\xbc_ 8\xc5\xbc_ 8\xc5\xbc8b_ 8\xc5\xbc8c_ 8\xc5\xbc8\xc4\x87_ 8\xc5\xbc8d_ 8\xc5\xbc8f_ 8\xc5\xbc8g_ 8\xc5\xbc8h_ 8\xc5\xbc8j_ 8\xc5\xbc8k_ 8\xc5\xbc8l_ 8\xc5\xbc8\xc5\x82_ 8\xc5\xbc8m_ 8\xc5\xbc8n_ 8\xc5\xbc8\xc5\x84_ 8\xc5\xbc8p_ 8\xc5\xbc8r_ 8\xc5\xbc8s_ 8\xc5\xbc8\xc5\x9b_ 8\xc5\xbc8t_ 8\xc5\xbc8v_ 8\xc5\xbc8w_ 8\xc5\xbc8x_ 8\xc5\xbc8z_ 8\xc5\xbc8\xc5\xba_ 8\xc5\xbc8\xc5\xbc_ a1 a2u1 a2y1 a1a2 ae2 ai2 ao2 \xc4\x851 be1 be1e2 be2eth be2f3s4z2 be1khe1 be2k1he2n1d bi1 bino1 bi2n3o2ku1 bis4z bi2s2z1k biszko1 bi2sz3kop bizne1 bi2z3nes bi2z3ne2s3m bi2r1m bi1rmi1 birmi2n1g birmingha1 birmin2g1ham blo1 blokha1 blokha2u1 blo2k1hauz bo1 bo2s3ma1 b2r2d bro1 broa2 broa1dwa1 bro2a2d3wa2y1 bu1 bus4z bu2sz1m bu2sz3me1 bu2k1s bu2k1s4z buk2s2z1p bukszpa1 buk2sz3pan busi1 busine1 busine2s2s busine2ss3m ca1 ca2l1d caldwe1 cal2d1we4l3l c2h2j c2h2l chu1 chus1t cu1 cur4z curzo1 cu2r7zon de1 de2u1 deu2t1s deutsc4h deutsc2h2l deutschla1 deut4sch3la2n1d d2rz2w du1 dus4z du2s2z1p duszpa1 du2sz3past d2\xc5\xbc2j d2\xc5\xbc2l d2\xc5\xbc2\xc5\x82 d2\xc5\xbc2r d2\xc5\xbc2w d\xc5\xbce1 d\xc5\xbce4z3b d\xc5\xbce4z3m e1 er4z erza1 e2r5zac e2u1 e2y1 e3u2s4z ea2 e1e2 ei2 eo2 \xc4\x991 fi1 fisha1 fi2s3ha2r1m fis4z fi1szbi1 fi2sz3bin fo1 fo2k1s fo2k2s3t for4z forza1 fo2r5zac fo2l1k fo1lklo1 fol2k1lor fo2s1f fosfa1 fo1sfazo1 fos2f1a2zot ga1 ga2d1g gadge1 ga3d2get gado1 gado2p1t ga1do3p2ta1 go1 go2l1f gol2f3s golfs4z2 gra1 gra2n1d grandi1 gran2d1ilo1 gro1 gro4t3r hi1 his4z hi2s2z3p hu1 huc4z hu2cz1w huxle1 hu2x3le2y1 i1 i2a1 i2\xc4\x851 i2e1 i2\xc4\x991 i2i1 i2o1 i2\xc3\xb31 i2u1 i2y1 i4n3n in2n1s inn2s1b innsbru1 in4nsbru2c1k i2n1s in2s1b insbru1 in4sbruc j2t1\xc5\x82 j2t1r ja1 ja4z3z ja4z4z3b ja4z4z3m ka1 ka2r1l kar2l1s karlskro1 karl2s1kron karlsru1 karl2s1ruhe1 ki1 ki2r1c kirc4h kirc4h3h kirchho1 kir2chho4f3f ko1 ko2n1g kongre1 kongre2s3m le1 led1w lu1 luftwa1 luftwa4f3f lu2ft3waffe1 lu2k1s luk2s1f luksfe1 lu2ks1fer ly1 ly2o2 ma1 mar4z ma2r5z1l ma2r5z1\xc5\x82 ma2r5z1n mi1 mis4z mi2sz1m miszma1 mi2s4z1mas4z mi2e1 mier4z mi1e2r5zi1 mie2r5z1\xc5\x82 mo1 mo2n1t montre1 montrea2 mon2t3real moza1 mozai2 moza2i3k mu1 mur4z murza1 murzasi1 murzasic4h mu2r7zasic2h3l na1 na2\xc5\x821k na\xc5\x82ko1 na4\xc5\x823ko2w1s na4r3v o1 o2y1 oa2 oc4h o2c2h1m ochmi1 och3mistr4z oe2 o4f3f offse1 of2f3set oi2 o1o2 ou2 \xc3\xb31 \xc3\xb32w1c \xc3\xb34w3c4z pa1 pa1na1 paname1 pa2n3a2mer pa1sca1 pa2s3cal pa2s3c4h po1 po2d1n podni1 podni2e1 po3d4niepr4z po2m1n po3m2n\xc4\x851 po3m2n\xc4\x991 po3m2ni1 po2r1t por2t1s po1rtsmo1 portsmou2 po4rt2s3mo2uth portla1 po4rt3la2n1d poli1 poli2e1 poli3e2t poli2u1 poli3u2re1 po\xc5\x82u1 po\xc5\x82u2d1n po\xc5\x82u3d2ni1 po2w1s pows4z powsze1 powsze2d1n powsze3d2ni1 p2r1c prc4h prcha1 pr2chal pre1 pres4z pre2s2z1p pre2sz3pa1 ro1 roe2 roe2n1t roen2t1g roe1ntge1 ro2e3nt2gen ro1kro1 ro2k3roc4z ro1sto1 ro2s3to3c2k se1 se2t3le1 sko1 skor4z sko1rzo1 skorzone1 sko2r5zoner s2m2r so1 sowi1 sowi3z2 sy1 syno1 sy2n3o2p1t syste1 sy2s1tem sza1 s4zas4z sza2sz1\xc5\x82y1 sze1 szezlo1 sze2z1lo2n1g sze4\xc5\x9b\xc4\x87 szto1 szto1kho1 szto2k1ho2l1m szy1 szy2n1k szynkwa1 szyn2k1was to1 to2y1 to1yo2 to3y2o3t tu1 tu2r1b turbo1 turbo1o2 turboodr4z tu1rboodrzu1 turboo2d3rzut ty1 tygo1 tygo2d1n tygo3d2ni1 u1 u2y1 ua2 ue2 ui2 uo2 u1u2 vo1 vo2l1k vo2l2k2s3 we1 we1e2 we1e1ke1 we2e2k1e2n1d we4s2t3f we4s2t3m y1 ya2 ye2 yi2 yo2 yu2 ze1 ze4p3p \xc5\xba2d4\xc5\xba _by1 _byna1 _byna2j1m _bynaj2m1n _bynajmni1 _bynajmni2e1 _by9naj9m8nie8j_ _bezac4h _be9z8a8c8h_ _bezami1 _be9z8ami_ _gd4z _gdzi1 _gdzi2e1 _gdzi1eni1 _gdzi2e1ni2e1 _2g1dzienie2g1d _gd4zieniegd4z _gdzi1eni1egdzi1 _gdzi2e1ni2e1gdzi2e1 _gdzienie9g8dzie_ _ina1 _inac4z _inacze1 _in8a9cze8j_ _n8a9da8l_ _ni2g1d _nigdy1 _n8i9gdy_ _nigd4z _ni1gdzi1 _nigdzi2e1 _n8i9gdzie_ _nie2c2h1\xc5\xbc _nie1ch\xc5\xbce1 _nie8ch9\xc5\xbce_ _nie2c2h1b _niechby1 _nie8ch9by_ _o2w1s _ows4z _owsze1 _ow9sze8m_ _p\xc3\xb3\xc5\x82a1 _p\xc3\xb3\xc5\x82ac4h _p\xc3\xb39\xc5\x828a8c8h_ _p\xc3\xb3\xc5\x82ami1 _p\xc3\xb39\xc5\x828ami_ _p\xc3\xb39\xc5\x828e8k_ _przyna1 _przyna2j1m _przynaj2m1n _przynajmni1 _przynajmni2e1 _przy9naj9m8nie8j_ _sk\xc4\x85di1 _sk\xc4\x851din\xc4\x851 _sk\xc4\x85d9i8n\xc4\x858d_ _tr\xc3\xb3ja1 _tr\xc3\xb3jac4h _tr\xc3\xb39j8a8c8h_ _tr\xc3\xb3jami1 _tr\xc3\xb39j8ami_ _tr\xc3\xb39j8e8k_ _pod\xc3\xb32w1c _pod\xc3\xb34w3c4z _pod\xc3\xb3wcza1 _pod\xc3\xb33w2czas _po8d9\xc3\xb38w9cza8s_";
-
-?>
diff --git a/inc/3rdparty/libraries/mpdf/patterns/ru.php b/inc/3rdparty/libraries/mpdf/patterns/ru.php
deleted file mode 100644 (file)
index 6202773..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-       
-       Created by crymos at yandex dot ru
-       Вопросы по русскоязычным таблицам переноса отправлять на адрес.
-*/
-
-$patterns="_\xd0\xb0\xd0\xb11\xd1\x80 _\xd0\xb0\xd0\xb31\xd1\x80\xd0\xbe _\xd0\xb0\xd0\xb4\xd0\xb82 _\xd0\xb0\xd0\xb82 _\xd0\xb0\xd0\xba1\xd1\x80 _\xd0\xb0\xd0\xbb\xd1\x8c3\xd1\x8f _\xd0\xb0\xd1\x802\xd1\x821\xd0\xbe2 _\xd0\xb0\xd1\x811\xd1\x82\xd0\xbe _\xd0\xb0\xd1\x81\xd1\x821\xd1\x80 _\xd0\xb0\xd1\x832 _\xd0\xb1\xd0\xb82\xd0\xbe _\xd0\xb2\xd0\xbe2\xd0\xb13\xd0\xbb _\xd0\xb2\xd0\xbe3\xd0\xb62\xd0\xb4 _\xd0\xb3\xd0\xbe2\xd1\x84 _\xd0\xb4\xd0\xb5\xd0\xba2 _\xd0\xb4\xd0\xb51\xd0\xba\xd0\xb2 _\xd0\xb4\xd0\xb82\xd0\xb0\xd0\xba _\xd0\xb4\xd0\xb81\xd0\xbe _\xd0\xb4\xd0\xbe3\xd0\xbf _\xd0\xb4\xd0\xbe3\xd1\x822 _\xd0\xb5\xd0\xbf\xd0\xb83 _\xd0\xb7\xd0\xb0\xd0\xb22\xd1\x80 _\xd0\xb7\xd0\xb03\xd0\xbc2\xd0\xbd _\xd0\xb7\xd0\xb03\xd0\xbf _\xd0\xb8\xd0\xb31\xd1\x80 _\xd0\xb8\xd0\xb7\xd0\xb32 _\xd0\xb8\xd0\xb73\xd0\xbd _\xd0\xb8\xd0\xb82 _\xd0\xb8\xd0\xba1\xd1\x80 _\xd0\xb8\xd0\xbe2 _\xd0\xb8\xd0\xbe4\xd0\xbd\xd0\xb0 _\xd0\xb8\xd1\x813 _\xd0\xbb\xd0\xb52\xd0\xbe _\xd0\xbb\xd0\xb52\xd0\xbf3\xd1\x80 _\xd0\xbb\xd0\xb5\xd1\x811\xd0\xba _\xd0\xbb\xd1\x8c2 _\xd0\xbb\xd1\x8e\xd1\x81\xd1\x821 _\xd0\xbc\xd0\xb52\xd0\xb61\xd1\x832 _\xd0\xbc\xd0\xb81\xd0\xbe\xd0\xbc _\xd0\xbc\xd0\xbe2\xd0\xba1 _\xd0\xbc\xd1\x832\xd1\x88\xd1\x821 _\xd0\xbd\xd0\xb01\xd0\xb2 _\xd0\xbd\xd0\xb03\xd1\x82 _\xd0\xbd\xd0\xb03\xd1\x882 _\xd0\xbd\xd0\xb53\xd0\xb2\xd0\xbd _\xd0\xbd\xd0\xb51\xd0\xb4\xd1\x80 _\xd0\xbd\xd0\xb51\xd0\xb72 _\xd0\xbd\xd0\xb51\xd1\x81\xd0\xbb _\xd0\xbd\xd0\xb51\xd1\x812\xd1\x86 _\xd0\xbd\xd0\xb53\xd1\x82 _\xd0\xbd\xd0\xbe\xd1\x811\xd0\xba _\xd0\xbd\xd1\x83\xd0\xba1\xd0\xbb _\xd0\xbe\xd0\xb1\xd0\xbe3\xd0\xb62 _\xd0\xbe\xd0\xb2\xd0\xbe1 _\xd0\xbe\xd0\xb33\xd0\xbd _\xd0\xbe\xd0\xb74 _\xd0\xbe\xd1\x812\xd0\xba\xd0\xb0 _\xd0\xbe\xd1\x812\xd0\xbf _\xd0\xbe\xd1\x813\xd0\xbf\xd0\xb8 _\xd0\xbe\xd1\x821\xd0\xb2 _\xd0\xbe\xd1\x821\xd1\x80\xd0\xbe _\xd0\xbe\xd1\x821\xd1\x80\xd1\x83 _\xd0\xbe\xd1\x821\xd1\x83\xd0\xb6 _\xd0\xbf\xd0\xbe3\xd0\xb22 _\xd0\xbf\xd0\xbe3\xd0\xb62 _\xd0\xbf\xd0\xbe\xd0\xb72\xd0\xbd _\xd0\xbf\xd1\x80\xd0\xbe\xd1\x812 _\xd1\x80\xd0\xb02\xd1\x813\xd1\x82 _\xd1\x80\xd0\xb52\xd0\xb1\xd1\x80 _\xd1\x80\xd0\xb52\xd0\xb73\xd0\xb2 _\xd1\x80\xd0\xb82\xd1\x81\xd0\xba _\xd1\x80\xd0\xb82\xd1\x87 _\xd1\x80\xd0\xbe2\xd0\xb73\xd0\xb2 _\xd1\x80\xd0\xbe2\xd1\x813\xd0\xbb _\xd1\x80\xd0\xbe2\xd1\x85 _\xd1\x81\xd0\xb5\xd0\xbf\xd1\x822 _\xd1\x81\xd0\xba2 _\xd1\x81\xd1\x822 _\xd1\x81\xd1\x832\xd0\xb6 _\xd1\x82\xd0\xb52\xd0\xbe3 _\xd1\x82\xd0\xb8\xd0\xb03 _\xd1\x82\xd0\xb82\xd0\xb3 _\xd1\x82\xd0\xb8\xd0\xb31\xd1\x80 _\xd1\x82\xd0\xb82\xd0\xbe _\xd1\x83\xd0\xb12 _\xd1\x83\xd0\xb42 _\xd1\x83\xd0\xb52 _\xd1\x83\xd0\xb72\xd0\xbd\xd0\xb0 _\xd1\x83\xd0\xba2 _\xd1\x83\xd0\xbc2\xd1\x87 _\xd1\x83\xd0\xbe3 _\xd1\x83\xd0\xbf2 _\xd1\x83\xd1\x802\xd0\xb2 _\xd1\x83\xd1\x812 _\xd1\x83\xd1\x822\xd1\x80 _\xd1\x83\xd1\x8e2 _\xd1\x85\xd0\xbe2\xd1\x803\xd0\xb2 _\xd1\x87\xd0\xb52\xd1\x811\xd0\xba _\xd1\x8e\xd1\x811 4\xd0\xb03\xd0\xb0 \xd0\xb0\xd0\xb02\xd0\xbf \xd0\xb0\xd0\xb02\xd1\x80 \xd0\xb0\xd0\xb02\xd1\x86 \xd0\xb01\xd0\xb1 \xd0\xb0\xd0\xb1\xd0\xb53\xd1\x81\xd1\x82 \xd0\xb03\xd0\xb1\xd0\xbb\xd0\xb0 \xd0\xb0\xd0\xb12\xd0\xbb\xd1\x8e \xd0\xb0\xd0\xb11\xd1\x80\xd0\xb8 \xd0\xb03\xd0\xb1\xd1\x83 \xd0\xb0\xd0\xb21\xd0\xb2 \xd0\xb01\xd0\xb2\xd0\xb5 \xd0\xb0\xd0\xb23\xd0\xb7\xd0\xbe \xd0\xb01\xd0\xb2\xd0\xb8 \xd0\xb0\xd0\xb2\xd0\xb82\xd0\xb0 \xd0\xb01\xd0\xb2\xd0\xbe \xd0\xb0\xd0\xb2\xd0\xbe1\xd1\x81 \xd0\xb02\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb0\xd0\xb21\xd1\x80\xd0\xb0 \xd0\xb0\xd0\xb22\xd1\x81\xd0\xb5 \xd0\xb02\xd0\xb2\xd1\x82 \xd0\xb01\xd0\xb2\xd1\x83 \xd0\xb02\xd0\xb2\xd1\x85 \xd0\xb03\xd0\xb22\xd1\x87\xd0\xb5 2\xd0\xb0\xd0\xb3\xd0\xb0 \xd0\xb0\xd0\xb3\xd0\xb01\xd1\x812 \xd0\xb02\xd0\xb3\xd0\xb4 \xd0\xb02\xd0\xb3\xd0\xb8\xd1\x82\xd0\xb8 \xd0\xb02\xd0\xb3\xd0\xbb\xd0\xb5 \xd0\xb0\xd0\xb32\xd0\xbb\xd0\xb8 \xd0\xb02\xd0\xb3\xd0\xbb\xd0\xbe\xd1\x81 \xd0\xb0\xd0\xb32\xd0\xbb\xd0\xbe\xd1\x82 2\xd0\xb0\xd0\xb3\xd0\xbe \xd0\xb03\xd0\xb3\xd1\x83 \xd0\xb01\xd0\xb4 2\xd0\xb0\xd0\xb4\xd0\xb2 \xd0\xb02\xd0\xb4\xd0\xb2\xd0\xb5 \xd0\xb0\xd0\xb42\xd0\xb6\xd0\xb8 \xd0\xb0\xd0\xb4\xd0\xb82\xd0\xbe\xd0\xb4 \xd0\xb02\xd0\xb4\xd0\xbb \xd0\xb02\xd0\xb41\xd0\xbe\xd0\xb1\xd0\xbb \xd0\xb0\xd0\xb41\xd1\x80\xd0\xbe \xd0\xb02\xd0\xb41\xd1\x80\xd1\x83 \xd0\xb0\xd0\xb4\xd1\x833\xd1\x87 \xd0\xb0\xd0\xb42\xd1\x86 \xd0\xb02\xd0\xb4\xd1\x8b\xd0\xbd \xd0\xb01\xd0\xb5 \xd0\xb0\xd0\xb52\xd0\xb3\xd0\xbe \xd0\xb0\xd0\xb52\xd0\xb4\xd0\xb8 \xd0\xb0\xd0\xb52\xd0\xbb \xd0\xb02\xd0\xb5\xd0\xbf \xd0\xb0\xd0\xb52\xd1\x80\xd0\xb5 \xd0\xb0\xd0\xb52\xd1\x81 \xd0\xb0\xd0\xb7\xd0\xb04\xd1\x883 \xd0\xb0\xd0\xb7\xd0\xb22 \xd0\xb0\xd0\xb73\xd0\xb2\xd0\xb5\xd0\xb7 \xd0\xb0\xd0\xb71\xd0\xb2\xd0\xbb \xd0\xb0\xd0\xb7\xd0\xb32 \xd0\xb0\xd0\xb71\xd0\xb4\xd1\x80 \xd0\xb0\xd0\xb71\xd0\xbe\xd0\xb1 \xd0\xb0\xd0\xb72\xd0\xbe1\xd0\xb1\xd1\x80 \xd0\xb02\xd0\xb7\xd0\xbe\xd0\xb2\xd1\x8c \xd0\xb02\xd0\xb7\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xb01\xd0\xb7\xd0\xbe\xd1\x80\xd0\xb8 \xd0\xb0\xd0\xb72\xd0\xbe1\xd1\x81 \xd0\xb0\xd0\xb71\xd1\x80 \xd0\xb01\xd0\xb8 \xd0\xb0\xd0\xb82\xd0\xb31 \xd0\xb0\xd0\xb83\xd0\xb3\xd0\xbb \xd0\xb02\xd0\xb8\xd1\x85 \xd0\xb01\xd0\xba \xd0\xb0\xd0\xba1\xd0\xb2 1\xd0\xb0\xd0\xba\xd0\xba \xd0\xb0\xd0\xba2\xd0\xbb \xd0\xb0\xd0\xba3\xd0\xbb\xd0\xb5\xd0\xbc \xd0\xb0\xd0\xba\xd0\xbe1\xd0\xb12 2\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd1\x81 \xd0\xb0\xd0\xba\xd0\xbe3\xd1\x82 2\xd0\xb0\xd0\xba\xd1\x80\xd0\xb8 \xd0\xb0\xd0\xba1\xd1\x81 \xd0\xb01\xd0\xbb\xd0\xb0 \xd0\xb03\xd0\xbb\xd0\xb0\xd0\xb3 \xd0\xb01\xd0\xbb\xd0\xb5 2\xd0\xb0\xd0\xbb\xd0\xb5\xd0\xba \xd0\xb03\xd0\xbb\xd0\xb8 \xd0\xb0\xd0\xbb\xd0\xbe1\xd0\xb7 \xd0\xb01\xd0\xbb\xd1\x83 \xd0\xb0\xd0\xbb\xd1\x832\xd1\x88 \xd0\xb0\xd0\xbb\xd1\x83\xd1\x881\xd1\x82 \xd0\xb01\xd0\xbb\xd1\x8b \xd0\xb02\xd0\xbb\xd1\x8c\xd1\x89 \xd0\xb01\xd0\xbb\xd1\x8e 2\xd0\xb0\xd0\xbc\xd0\xb0 \xd0\xb0\xd0\xbc\xd0\xb14 2\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x82 \xd0\xb02\xd0\xbc\xd0\xb8\xd0\xbd\xd1\x82 \xd0\xb0\xd0\xbc2\xd0\xbd\xd0\xb5\xd1\x82 2\xd0\xb0\xd0\xbc\xd0\xbe \xd0\xb0\xd0\xbc\xd0\xbe1\xd0\xb72 \xd0\xb0\xd0\xbc\xd0\xbe\xd0\xb82 \xd0\xb02\xd0\xbc\xd1\x87 \xd0\xb0\xd0\xbd\xd0\xb02\xd0\xb4\xd1\x86 \xd0\xb02\xd0\xbd1\xd0\xb02\xd0\xbc\xd0\xb5 \xd0\xb02\xd0\xbd\xd0\xb0\xd1\x84 \xd0\xb0\xd0\xbd2\xd0\xb4\xd1\x80\xd0\xb0 \xd0\xb02\xd0\xbd1\xd0\xbe2\xd0\xb1 \xd0\xb0\xd0\xbd1\xd0\xbe2\xd1\x85\xd1\x80 \xd0\xb0\xd0\xbd1\xd1\x80 \xd0\xb0\xd0\xbd2\xd1\x81\xd0\xbf \xd0\xb0\xd0\xbd\xd1\x811\xd1\x83 \xd0\xb0\xd0\xbd2\xd1\x81\xd1\x83\xd1\x80 \xd0\xb02\xd0\xbd1\xd1\x83\xd0\xb7 \xd0\xb01\xd0\xbd\xd1\x8c 2\xd0\xb01\xd0\xbe \xd0\xb0\xd0\xbe2\xd0\xb4 \xd0\xb0\xd0\xbe2\xd0\xba \xd0\xb0\xd0\xbe2\xd1\x80 \xd0\xb0\xd0\xbe2\xd1\x81 \xd0\xb0\xd0\xbe\xd1\x81\xd1\x821 \xd0\xb03\xd0\xbf\xd0\xbb\xd0\xb0 \xd0\xb0\xd0\xbf2\xd0\xbb\xd0\xbe\xd0\xbc 2\xd0\xb0\xd0\xbf\xd0\xbe \xd0\xb0\xd0\xbf\xd0\xbe4\xd0\xb2\xd1\x81 \xd0\xb0\xd0\xbf\xd0\xbe3\xd1\x872\xd1\x82 \xd0\xb0\xd0\xbf2\xd1\x80\xd0\xb0 \xd0\xb0\xd0\xbf1\xd1\x80\xd0\xb5\xd0\xbb \xd0\xb01\xd1\x80\xd0\xb0 \xd0\xb0\xd1\x80\xd0\xb02\xd1\x81\xd1\x82 \xd0\xb0\xd1\x802\xd0\xb1\xd0\xbe\xd0\xba \xd0\xb0\xd1\x802\xd0\xb2\xd0\xb0\xd0\xbb 1\xd0\xb0\xd1\x80\xd0\xb3\xd1\x83 \xd0\xb01\xd1\x80\xd0\xb5 \xd0\xb0\xd1\x80\xd0\xb51\xd0\xb4\xd0\xb2 \xd0\xb0\xd1\x80\xd0\xb51\xd0\xbe\xd0\xbb \xd0\xb0\xd1\x802\xd0\xb6\xd0\xb0 \xd0\xb01\xd1\x80\xd0\xb8 \xd0\xb01\xd1\x80\xd0\xbe \xd0\xb0\xd1\x802\xd1\x82\xd0\xbe\xd1\x80 \xd0\xb0\xd1\x802\xd1\x821\xd1\x80 \xd0\xb01\xd1\x80\xd1\x83 \xd0\xb0\xd1\x801\xd1\x85 \xd0\xb01\xd1\x80\xd1\x8b \xd0\xb01\xd1\x80\xd1\x8e \xd0\xb01\xd1\x80\xd1\x8f 2\xd0\xb0\xd1\x811\xd0\xba \xd0\xb0\xd1\x813\xd0\xbc\xd0\xb8 \xd0\xb0\xd1\x813\xd0\xbd\xd0\xbe 1\xd0\xb0\xd1\x81\xd1\x81\xd0\xb8\xd0\xb3 \xd0\xb0\xd1\x81\xd1\x821\xd0\xb2\xd1\x83 \xd0\xb0\xd1\x813\xd1\x82\xd0\xb5\xd0\xbc \xd0\xb0\xd1\x812\xd1\x82\xd0\xb8\xd0\xbd \xd0\xb0\xd1\x812\xd1\x82\xd0\xb8\xd1\x8f \xd0\xb0\xd1\x811\xd1\x82\xd0\xbe\xd0\xbe \xd0\xb0\xd1\x811\xd1\x82\xd1\x83\xd1\x85 \xd0\xb01\xd1\x81\xd1\x82\xd1\x8c\xd0\xb5 \xd0\xb0\xd1\x812\xd1\x88\xd0\xb5\xd0\xb4 \xd0\xb0\xd1\x812\xd1\x88\xd0\xb5\xd1\x81 \xd0\xb01\xd1\x81\xd1\x8c\xd0\xb8 \xd0\xb01\xd1\x82\xd0\xb0 1\xd0\xb0\xd1\x82\xd0\xb0\xd0\xba \xd0\xb0\xd1\x823\xd0\xb2\xd0\xb0 \xd0\xb0\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xb0\xd1\x821\xd0\xb2\xd1\x83 2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xb7 \xd0\xb01\xd1\x82\xd0\xb8 \xd0\xb01\xd1\x82\xd0\xbe \xd0\xb0\xd1\x821\xd0\xbe\xd0\xb1\xd0\xb5 \xd0\xb02\xd1\x82\xd0\xbe\xd0\xbc\xd0\xbd \xd0\xb0\xd1\x82\xd0\xbe2\xd1\x88 \xd0\xb0\xd1\x821\xd1\x80\xd0\xb0\xd1\x85 \xd0\xb0\xd1\x821\xd1\x80\xd0\xb8 \xd0\xb01\xd1\x82\xd1\x83 \xd0\xb0\xd1\x822\xd1\x85 \xd0\xb01\xd1\x82\xd1\x8b \xd0\xb01\xd1\x82\xd1\x8c\xd0\xb5 \xd0\xb03\xd1\x82\xd1\x8c\xd1\x8e \xd0\xb03\xd1\x82\xd1\x8c\xd1\x8f \xd0\xb01\xd1\x82\xd1\x8e \xd0\xb01\xd1\x82\xd1\x8f \xd0\xb01\xd1\x83 \xd0\xb02\xd1\x83\xd0\xb1 \xd0\xb0\xd1\x832\xd0\xb4 \xd0\xb0\xd1\x833\xd0\xb4\xd0\xbe \xd0\xb02\xd1\x83\xd0\xbb\xd0\xb5 \xd0\xb0\xd1\x83\xd1\x821\xd1\x80 \xd0\xb0\xd1\x832\xd1\x85 \xd0\xb0\xd1\x832\xd1\x87 \xd0\xb0\xd1\x833\xd1\x87\xd1\x8c \xd0\xb0\xd1\x83\xd1\x8d1 \xd0\xb02\xd1\x841\xd0\xbb \xd0\xb0\xd1\x852\xd0\xb0 \xd0\xb0\xd1\x85\xd0\xbc\xd0\xb82 \xd0\xb0\xd1\x853\xd1\x81 \xd0\xb01\xd1\x87 2\xd0\xb0\xd1\x87\xd0\xb0 \xd0\xb02\xd1\x87\xd0\xbb \xd0\xb0\xd1\x871\xd1\x82 \xd0\xb02\xd1\x88\xd0\xbb \xd0\xb0\xd1\x8d2\xd0\xbb\xd0\xb8 \xd0\xb02\xd1\x8d\xd1\x80 \xd0\xb0\xd1\x8e1\xd1\x82\xd0\xb0 \xd0\xb01\xd1\x8f \xd0\xb0\xd1\x8f2\xd0\xb1 \xd0\xb0\xd1\x8f2\xd0\xb2 \xd0\xb0\xd1\x8f2\xd0\xb7 1\xd0\xb1\xd0\xb0 \xd0\xb1\xd0\xb02\xd0\xb1\xd0\xb2 \xd0\xb1\xd0\xb02\xd0\xb31\xd1\x80 \xd0\xb1\xd0\xb02\xd0\xb4\xd1\x80 \xd0\xb1\xd0\xb01\xd0\xb7 \xd0\xb1\xd0\xb03\xd0\xb7\xd1\x83 \xd0\xb1\xd0\xb0\xd0\xbb\xd1\x8e1 \xd0\xb1\xd0\xb02\xd0\xbe \xd0\xb1\xd0\xb0\xd1\x813\xd0\xbc \xd0\xb1\xd0\xb01\xd1\x81\xd1\x82 \xd0\xb1\xd0\xb01\xd1\x82\xd1\x80 2\xd0\xb11\xd0\xb1 \xd0\xb11\xd0\xb2 \xd0\xb1\xd0\xb2\xd1\x8b2 \xd0\xb1\xd0\xb32 2\xd0\xb11\xd0\xb4 1\xd0\xb1\xd0\xb5 3\xd0\xb1\xd0\xb5\xd0\xb2 \xd0\xb1\xd0\xb52\xd0\xb3\xd0\xbb \xd0\xb1\xd0\xb52\xd0\xb3\xd0\xbd \xd0\xb1\xd0\xb52\xd0\xb41\xd1\x80 3\xd0\xb1\xd0\xb5\xd0\xb5 3\xd0\xb1\xd0\xb52\xd0\xb7 \xd0\xb1\xd0\xb5\xd0\xb71\xd0\xb02 \xd0\xb1\xd0\xb5\xd0\xb75\xd0\xb44 \xd0\xb1\xd0\xb53\xd0\xb7\xd0\xb8 \xd0\xb1\xd0\xb5\xd0\xb73\xd0\xbd \xd0\xb1\xd0\xb5\xd0\xb71\xd0\xbe2 \xd0\xb1\xd0\xb5\xd0\xb71\xd1\x80 \xd0\xb1\xd0\xb52\xd1\x811\xd0\xba \xd0\xb1\xd0\xb5\xd1\x813\xd0\xbf \xd0\xb1\xd0\xb52\xd1\x811\xd1\x82 \xd0\xb1\xd0\xb5\xd1\x813\xd1\x82\xd0\xb5 \xd0\xb1\xd0\xb5\xd1\x813\xd1\x82\xd0\xb8 3\xd0\xb1\xd0\xb5\xd1\x86 2\xd0\xb1\xd0\xb5\xd1\x89 2\xd0\xb1\xd0\xb6 \xd0\xb11\xd0\xb72 1\xd0\xb12\xd0\xb8 3\xd0\xb1\xd0\xb8\xd0\xb0 \xd0\xb1\xd0\xb82\xd0\xb1 2\xd0\xb1\xd0\xb8\xd0\xb6 3\xd0\xb1\xd0\xb8\xd0\xba \xd0\xb1\xd0\xb8\xd0\xbb\xd0\xb83\xd1\x822 3\xd0\xb1\xd0\xb8\xd0\xbe \xd0\xb1\xd0\xb82\xd0\xbe\xd0\xb1 \xd0\xb1\xd0\xb82\xd0\xbe\xd0\xb4 \xd0\xb1\xd0\xb82\xd0\xbe\xd0\xbd \xd0\xb1\xd0\xb82\xd0\xbe\xd1\x80 \xd0\xb1\xd0\xb82\xd1\x82\xd0\xb2 \xd0\xb1\xd0\xb81\xd1\x85 2\xd0\xb13\xd0\xba \xd0\xb11\xd0\xbb 1\xd0\xb1\xd0\xbb\xd0\xb0\xd0\xb3 1\xd0\xb12\xd0\xbb\xd0\xb0\xd0\xb7 \xd0\xb13\xd0\xbb\xd0\xb0\xd0\xb7\xd0\xb8 \xd0\xb12\xd0\xbb\xd0\xb0\xd0\xbd 1\xd0\xb12\xd0\xbb\xd0\xb5\xd0\xb5 \xd0\xb13\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xb12\xd0\xbb\xd0\xb5\xd1\x811\xd0\xba 1\xd0\xb12\xd0\xbb\xd0\xb5\xd1\x8f \xd0\xb12\xd0\xbb\xd1\x83\xd0\xb4 1\xd0\xb12\xd0\xbb\xd1\x83\xd0\xb6 2\xd0\xb1\xd0\xbb\xd1\x8b 2\xd0\xb12\xd0\xbb\xd1\x8c 2\xd0\xb13\xd0\xbb\xd1\x8e_ \xd0\xb12\xd0\xbb\xd1\x8e\xd0\xb4 \xd0\xb12\xd0\xbb\xd1\x8e\xd0\xb5 \xd0\xb12\xd0\xbb\xd1\x8e\xd0\xbb 2\xd0\xb13\xd0\xbb\xd1\x8e\xd1\x81\xd1\x8c 2\xd0\xb1\xd0\xbb\xd1\x8f 2\xd0\xb13\xd0\xbd 1\xd0\xb1\xd0\xbe \xd0\xb1\xd0\xbe1\xd0\xb1\xd1\x80\xd0\xb0 \xd0\xb1\xd0\xbe3\xd0\xb2\xd1\x88 \xd0\xb1\xd0\xbe2\xd0\xb3\xd0\xb4 \xd0\xb1\xd0\xbe1\xd0\xb4\xd1\x80\xd0\xb0 \xd0\xb1\xd0\xbe1\xd0\xb72 \xd0\xb1\xd0\xbe1\xd0\xbb2\xd0\xb6 \xd0\xb1\xd0\xbe1\xd0\xbb\xd1\x8c\xd1\x81 \xd0\xb1\xd0\xbe3\xd0\xbc2\xd0\xbb \xd0\xb1\xd0\xbe2\xd0\xbc\xd1\x87 \xd0\xb1\xd0\xbe3\xd0\xbc\xd1\x88 \xd0\xb1\xd0\xbe\xd0\xbd\xd1\x831 \xd0\xb1\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xb1\xd0\xbe2\xd1\x81\xd0\xb0 \xd0\xb1\xd0\xbe1\xd1\x81\xd0\xba \xd0\xb1\xd0\xbe3\xd1\x81\xd0\xba\xd0\xbe \xd0\xb1\xd0\xbe3\xd1\x81\xd1\x82\xd0\xb8 3\xd0\xb1\xd0\xbe\xd1\x82 \xd0\xb1\xd0\xbe2\xd1\x82\xd0\xb2 \xd0\xb1\xd0\xbe\xd1\x822\xd1\x80 \xd0\xb1\xd0\xbe\xd1\x8f2\xd1\x80 2\xd0\xb1\xd1\x80_ \xd0\xb13\xd1\x80\xd0\xb0\xd0\xb1 \xd0\xb12\xd1\x80\xd0\xb0\xd0\xb2 \xd0\xb1\xd1\x80\xd0\xb01\xd0\xb7\xd0\xbe 1\xd0\xb12\xd1\x80\xd0\xb0\xd0\xbb 2\xd0\xb11\xd1\x80\xd0\xb0\xd0\xbc \xd0\xb12\xd1\x80\xd0\xb0\xd0\xbd 1\xd0\xb1\xd1\x80\xd0\xb0\xd1\x81 \xd0\xb12\xd1\x80\xd0\xb0\xd1\x82\xd1\x8c \xd0\xb11\xd1\x80\xd0\xb0\xd1\x85 1\xd0\xb12\xd1\x80\xd0\xb0\xd1\x87 2\xd0\xb13\xd1\x80\xd0\xb0\xd1\x8f 1\xd0\xb12\xd1\x80\xd0\xb5\xd0\xb4 \xd0\xb11\xd1\x80\xd0\xb5\xd0\xb9 \xd0\xb11\xd1\x80\xd0\xb5\xd0\xba \xd0\xb12\xd1\x80\xd0\xb5\xd0\xbc \xd0\xb12\xd1\x80\xd0\xb5\xd1\x85 \xd0\xb12\xd1\x80\xd0\xb8\xd0\xb4 \xd0\xb12\xd1\x80\xd0\xb8\xd1\x82\xd0\xbe \xd0\xb12\xd1\x80\xd0\xb8\xd1\x82\xd1\x8b 1\xd0\xb12\xd1\x80\xd0\xbe\xd0\xb4\xd0\xb8 \xd0\xb11\xd1\x80\xd0\xbe\xd0\xbb \xd0\xb11\xd1\x80\xd0\xbe\xd0\xbc_ 1\xd0\xb12\xd1\x80\xd0\xbe\xd1\x81\xd0\xb8 \xd0\xb1\xd1\x80\xd0\xbe2\xd1\x811\xd0\xba 2\xd0\xb1\xd1\x80\xd1\x81 \xd0\xb11\xd1\x80\xd1\x83 3\xd0\xb1\xd1\x80\xd1\x83\xd0\xba\xd1\x81 2\xd0\xb1\xd1\x80\xd1\x8c 1\xd0\xb12\xd1\x80\xd1\x8e 2\xd0\xb13\xd1\x80\xd1\x8e_ \xd0\xb11\xd1\x80\xd1\x8f 2\xd0\xb11\xd1\x812 \xd0\xb13\xd1\x81\xd0\xba \xd0\xb1\xd1\x814\xd0\xbb \xd0\xb11\xd1\x82 1\xd0\xb12\xd1\x83 \xd0\xb1\xd1\x832\xd0\xb31\xd1\x80 \xd0\xb1\xd1\x83\xd0\xba1\xd0\xbb \xd0\xb1\xd1\x831\xd1\x81 2\xd0\xb1\xd1\x84 2\xd0\xb11\xd1\x85 2\xd0\xb1\xd1\x86 2\xd0\xb11\xd1\x87 2\xd0\xb1\xd1\x88 2\xd0\xb1\xd1\x89 1\xd0\xb1\xd1\x8b \xd0\xb1\xd1\x8b2\xd0\xb31 \xd0\xb1\xd1\x8b2\xd1\x81 \xd0\xb1\xd1\x8b\xd1\x811\xd0\xba \xd0\xb1\xd1\x8b\xd1\x81\xd1\x821 1\xd0\xb1\xd1\x8c 2\xd0\xb1\xd1\x8c_ 2\xd0\xb1\xd1\x8c\xd1\x81 2\xd0\xb1\xd1\x8c\xd1\x82 \xd0\xb1\xd1\x8d1\xd1\x80 3\xd0\xb12\xd1\x8e \xd0\xb1\xd1\x8e1\xd1\x82\xd0\xb0 1\xd0\xb1\xd1\x8f 1\xd0\xb2\xd0\xb0 \xd0\xb2\xd0\xb02\xd0\xb1\xd1\x80 3\xd0\xb2\xd0\xb0\xd0\xb3 \xd0\xb2\xd0\xb02\xd0\xb41\xd1\x80 \xd0\xb2\xd0\xb0\xd0\xb4\xd1\x8c2 \xd0\xb2\xd0\xb03\xd0\xb62\xd0\xb4 \xd0\xb2\xd0\xb01\xd0\xb7 \xd0\xb2\xd0\xb0\xd0\xbd\xd1\x812 \xd0\xb2\xd0\xb01\xd1\x81\xd1\x82 \xd0\xb2\xd0\xb02\xd1\x81\xd1\x82\xd1\x80 \xd0\xb2\xd0\xb01\xd1\x82\xd1\x80 \xd0\xb2\xd0\xb0\xd1\x851 3\xd0\xb2\xd0\xb0\xd1\x86 3\xd0\xb2\xd0\xb0\xd1\x8f 2\xd0\xb21\xd0\xb1 \xd0\xb21\xd0\xb2\xd0\xb8 \xd0\xb21\xd0\xb2\xd1\x80 2\xd0\xb2\xd0\xb32 \xd0\xb21\xd0\xb4 \xd0\xb22\xd0\xb4\xd0\xbe\xd1\x85 1\xd0\xb2\xd0\xb5\xd0\xb2 3\xd0\xb2\xd0\xb5\xd0\xb3 \xd0\xb2\xd0\xb5\xd0\xb41\xd1\x80 \xd0\xb2\xd0\xb53\xd0\xb4\xd1\x83 1\xd0\xb2\xd0\xb5\xd0\xb5 1\xd0\xb2\xd0\xb5\xd0\xb7 3\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb5 3\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xbb \xd0\xb2\xd0\xb5\xd0\xb72\xd1\x83 1\xd0\xb2\xd0\xb5\xd0\xb9_ \xd0\xb2\xd0\xb52\xd0\xbf1 2\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb4 1\xd0\xb2\xd0\xb5\xd1\x81 \xd0\xb2\xd0\xb52\xd1\x811\xd0\xba \xd0\xb2\xd0\xb52\xd1\x81\xd1\x821\xd0\xb2 \xd0\xb2\xd0\xb5\xd1\x823\xd1\x80 1\xd0\xb2\xd0\xb5\xd1\x86 1\xd0\xb2\xd0\xb5\xd1\x8e 1\xd0\xb2\xd0\xb5\xd1\x8f 1\xd0\xb22\xd0\xb72 \xd0\xb2\xd0\xb7\xd0\xb32 \xd0\xb2\xd0\xb7\xd0\xb42 \xd0\xb2\xd0\xb7\xd0\xbe1\xd0\xb1 \xd0\xb2\xd0\xb7\xd1\x8a2 \xd0\xb2\xd0\xb7\xd1\x8a\xd0\xb53\xd0\xb4 \xd0\xb2\xd0\xb82\xd0\xb0\xd0\xb7 \xd0\xb2\xd0\xb82\xd0\xb0\xd0\xba \xd0\xb2\xd0\xb82\xd0\xb0\xd1\x80 \xd0\xb2\xd0\xb82\xd0\xb01\xd1\x812 \xd0\xb2\xd0\xb8\xd0\xb01\xd1\x82 \xd0\xb2\xd0\xb83\xd0\xb0\xd1\x84 \xd0\xb2\xd0\xb82\xd0\xb3\xd0\xb2 \xd0\xb2\xd0\xb82\xd0\xb3\xd0\xbb 1\xd0\xb2\xd0\xb8\xd0\xb7 1\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x82 1\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x87 \xd0\xb2\xd0\xb81\xd0\xbe \xd0\xb2\xd0\xb81\xd1\x812\xd0\xbd\xd0\xb8 \xd0\xb2\xd0\xb8\xd1\x833 \xd0\xb2\xd0\xb82\xd1\x84 2\xd0\xb21\xd0\xba \xd0\xb2\xd0\xba2\xd0\xbb 3\xd0\xb22\xd0\xba\xd1\x83\xd1\x81 \xd0\xb21\xd0\xbb \xd0\xb22\xd0\xbb\xd0\xb0 2\xd0\xb23\xd0\xbb\xd0\xb0\xd0\xb1 \xd0\xb22\xd0\xbb\xd0\xb5\xd0\xb2 \xd0\xb22\xd0\xbb\xd0\xb5\xd0\xba \xd0\xb22\xd0\xbb\xd0\xb5\xd1\x82 \xd0\xb22\xd0\xbb\xd0\xb5\xd1\x87 2\xd0\xb2\xd0\xbb\xd0\xb8 \xd0\xb22\xd0\xbb\xd0\xb8\xd1\x8f 2\xd0\xb2\xd0\xbb\xd1\x8e \xd0\xb22\xd0\xbb\xd1\x8e\xd0\xb1 2\xd0\xb2\xd0\xbb\xd1\x8f 2\xd0\xb2\xd0\xbc 1\xd0\xb2\xd0\xbc\xd0\xb5 2\xd0\xb21\xd0\xbd 4\xd0\xb23\xd0\xbd\xd0\xb0 \xd0\xb22\xd0\xbd\xd0\xb5\xd1\x81 \xd0\xb2\xd0\xbd\xd0\xbe1 \xd0\xb23\xd0\xbd\xd1\x83_ 3\xd0\xb22\xd0\xbd\xd1\x83\xd0\xba 3\xd0\xb22\xd0\xbd\xd1\x83\xd1\x87 \xd0\xb23\xd0\xbd\xd1\x8b \xd0\xb2\xd0\xbe1\xd0\xb12 \xd0\xb2\xd0\xbe2\xd0\xb13\xd0\xbb\xd0\xb0 \xd0\xb2\xd0\xbe\xd0\xb22 \xd0\xb2\xd0\xbe3\xd0\xb2\xd0\xba 1\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xb2\xd0\xbe1\xd0\xb4\xd0\xb2 \xd0\xb2\xd0\xbe1\xd0\xb4\xd1\x80 \xd0\xb2\xd0\xbe2\xd0\xb5\xd1\x80 \xd0\xb2\xd0\xbe2\xd0\xb6\xd0\xb6 \xd0\xb2\xd0\xbe\xd0\xb82\xd1\x811 1\xd0\xb2\xd0\xbe\xd0\xba \xd0\xb2\xd0\xbe3\xd0\xbc2 \xd0\xb2\xd0\xbe\xd0\xbf2 \xd0\xb2\xd0\xbe1\xd1\x80\xd1\x83 2\xd0\xb2\xd0\xbe\xd1\x80\xd1\x86 2\xd0\xb2\xd0\xbe\xd1\x80\xd1\x8c \xd0\xb2\xd0\xbe\xd1\x811\xd0\xba \xd0\xb2\xd0\xbe1\xd1\x81\xd0\xbc \xd0\xb2\xd0\xbe1\xd1\x81\xd0\xbd \xd0\xb2\xd0\xbe\xd1\x813\xd0\xbf\xd0\xb5 \xd0\xb2\xd0\xbe2\xd1\x81\xd1\x82\xd1\x80 \xd0\xb2\xd0\xbe\xd1\x822\xd1\x80 1\xd0\xb2\xd0\xbe\xd1\x85 \xd0\xb2\xd0\xbe1\xd1\x85\xd0\xbb \xd0\xb2\xd0\xbe3\xd1\x852\xd1\x82 1\xd0\xb2\xd0\xbe\xd1\x8e 2\xd0\xb2\xd0\xbf2 2\xd0\xb2\xd1\x80_ 2\xd0\xb2\xd1\x80\xd0\xb0_ \xd0\xb22\xd1\x80\xd0\xb0\xd0\xb2 2\xd0\xb21\xd1\x80\xd0\xb0\xd0\xbc \xd0\xb21\xd1\x80\xd0\xb0\xd1\x81 2\xd0\xb21\xd1\x80\xd0\xb0\xd1\x85 2\xd0\xb2\xd1\x80\xd0\xb0\xd1\x86 2\xd0\xb2\xd1\x80\xd0\xb5_ 2\xd0\xb21\xd1\x80\xd0\xb5\xd0\xbd 1\xd0\xb2\xd1\x80\xd0\xb8\xd0\xb4 1\xd0\xb22\xd1\x80\xd0\xb8\xd0\xb7 \xd0\xb21\xd1\x80\xd0\xb8\xd0\xb8 \xd0\xb21\xd1\x80\xd0\xb8\xd0\xba \xd0\xb21\xd1\x80\xd0\xb8\xd0\xbb \xd0\xb21\xd1\x80\xd0\xb8\xd1\x81 \xd0\xb21\xd1\x80\xd0\xb8\xd1\x82 2\xd0\xb21\xd1\x80\xd0\xbe \xd0\xb2\xd1\x80\xd0\xbe3\xd1\x822 2\xd0\xb21\xd1\x80\xd1\x8b 1\xd0\xb2\xd1\x80\xd1\x8e \xd0\xb21\xd1\x80\xd1\x8f 2\xd0\xb21\xd1\x812 3\xd0\xb2\xd1\x81\xd0\xb53 \xd0\xb23\xd1\x81\xd0\xba\xd0\xb0\xd1\x8f 4\xd0\xb23\xd1\x81\xd0\xba\xd0\xb8 4\xd0\xb23\xd1\x81\xd0\xba\xd1\x83 3\xd0\xb22\xd1\x81\xd0\xbf 3\xd0\xb22\xd1\x81\xd1\x8e \xd0\xb21\xd1\x822 \xd0\xb2\xd1\x82\xd0\xbe1\xd0\xb12 \xd0\xb2\xd1\x82\xd0\xbe3\xd1\x88 1\xd0\xb2\xd1\x83\xd0\xb0 \xd0\xb2\xd1\x833\xd0\xb3 1\xd0\xb2\xd1\x831\xd0\xb7 2\xd0\xb2\xd1\x83\xd0\xb8 2\xd0\xb2\xd1\x831\xd0\xba \xd0\xb2\xd1\x833\xd0\xbf \xd0\xb2\xd1\x831\xd1\x812 \xd0\xb2\xd1\x832\xd1\x851\xd0\xb0 \xd0\xb2\xd1\x83\xd1\x853\xd0\xb2 \xd0\xb2\xd1\x831\xd1\x87\xd0\xbb \xd0\xb2\xd1\x842 1\xd0\xb2\xd1\x85\xd0\xbe 2\xd0\xb2\xd1\x86 2\xd0\xb21\xd1\x87 2\xd0\xb2\xd1\x88 3\xd0\xb22\xd1\x88\xd0\xb8\xd0\xb2 2\xd0\xb2\xd1\x89 \xd0\xb2\xd1\x8a2 1\xd0\xb2\xd1\x8b \xd0\xb2\xd1\x8b3\xd0\xb32 \xd0\xb2\xd1\x8b3\xd0\xb7\xd0\xbd \xd0\xb2\xd1\x8b\xd0\xbf2 \xd0\xb2\xd1\x8b3\xd1\x822 \xd0\xb2\xd1\x8b\xd1\x852 \xd0\xb2\xd1\x8b3\xd1\x882\xd0\xbb 2\xd0\xb2\xd1\x8c_ 1\xd0\xb2\xd1\x8c\xd0\xb5 1\xd0\xb2\xd1\x8c\xd0\xb8\xd0\xbd 2\xd0\xb2\xd1\x8c\xd1\x81 2\xd0\xb2\xd1\x8c\xd1\x82 1\xd0\xb2\xd1\x8c\xd1\x8e 1\xd0\xb2\xd1\x8c\xd1\x8f 1\xd0\xb22\xd1\x8d1 1\xd0\xb22\xd1\x8e 1\xd0\xb2\xd1\x8f 1\xd0\xb3 \xd0\xb32\xd0\xb0 \xd0\xb3\xd0\xb01\xd0\xb7 \xd0\xb3\xd0\xb01\xd1\x81\xd1\x822 \xd0\xb3\xd0\xb02\xd1\x83 2\xd0\xb33\xd0\xb1 \xd0\xb3\xd0\xb1\xd0\xb02 \xd0\xb31\xd0\xb2\xd0\xb8 2\xd0\xb3\xd0\xb3 \xd0\xb33\xd0\xb4\xd0\xb0\xd0\xbd 2\xd0\xb33\xd0\xb4\xd0\xb8 3\xd0\xb3\xd0\xb5_ \xd0\xb3\xd0\xb52\xd0\xb11 \xd0\xb3\xd0\xb5\xd0\xbd\xd0\xbe1 \xd0\xb3\xd0\xb52\xd0\xbe\xd0\xb1 \xd0\xb3\xd0\xb52\xd0\xbe\xd0\xb4 \xd0\xb3\xd0\xb51\xd0\xbe\xd1\x80 2\xd0\xb33\xd0\xb6 2\xd0\xb31\xd0\xb7 \xd0\xb32\xd0\xb8 \xd0\xb3\xd0\xb82\xd0\xb1\xd0\xbb \xd0\xb3\xd0\xb83\xd0\xb1\xd1\x80 \xd0\xb3\xd0\xb82\xd0\xb3\xd1\x80 \xd0\xb3\xd0\xb81\xd1\x81\xd0\xbb \xd0\xb3\xd0\xb8\xd1\x81\xd1\x822 2\xd0\xb31\xd0\xba 2\xd0\xb3\xd0\xbb\xd0\xb0_ \xd0\xb32\xd0\xbb\xd0\xb0\xd0\xb2 \xd0\xb31\xd0\xbb\xd0\xb0\xd0\xb9 \xd0\xb31\xd0\xbb\xd0\xb0\xd0\xbc\xd0\xb8 2\xd0\xb3\xd0\xbb\xd0\xb0\xd1\x81\xd1\x8c 2\xd0\xb3\xd0\xbb\xd0\xb0\xd1\x8f \xd0\xb31\xd0\xbb\xd0\xb5 \xd0\xb32\xd0\xbb\xd0\xb5\xd1\x82 2\xd0\xb3\xd0\xbb\xd0\xb8_ \xd0\xb32\xd0\xbb\xd0\xb8\xd0\xbd 3\xd0\xb32\xd0\xbb\xd0\xb8\xd1\x84 2\xd0\xb3\xd0\xbb\xd0\xbe_ \xd0\xb33\xd0\xbb\xd0\xbe\xd0\xb1\xd0\xbb 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb2 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb3 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb5 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb9 2\xd0\xb3\xd0\xbb\xd0\xbe\xd1\x8e 2\xd0\xb3\xd0\xbb\xd1\x83\xd1\x8e 2\xd0\xb31\xd0\xbb\xd1\x8b \xd0\xb32\xd0\xbb\xd1\x8f\xd0\xb6 2\xd0\xb3\xd0\xbb\xd1\x8f\xd0\xba 2\xd0\xb33\xd0\xbc \xd0\xb32\xd0\xbd\xd0\xb0\xd0\xb2 \xd0\xb32\xd0\xbd\xd0\xb0\xd0\xbd \xd0\xb33\xd0\xbd\xd0\xb5_ \xd0\xb32\xd0\xbd\xd0\xb5\xd0\xb2 \xd0\xb33\xd0\xbd\xd0\xb5\xd0\xbd \xd0\xb33\xd0\xbd\xd0\xb5\xd0\xbf \xd0\xb33\xd0\xbd\xd0\xb5\xd1\x81 \xd0\xb32\xd0\xbd\xd0\xb8\xd1\x80 \xd0\xb3\xd0\xbd\xd0\xb8\xd1\x822\xd1\x80 \xd0\xb32\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xb32\xd0\xbd\xd0\xbe\xd0\xb8 \xd0\xb32\xd0\xbd\xd0\xbe\xd1\x81 \xd0\xb33\xd0\xbd\xd1\x8f \xd0\xb3\xd0\xbe1\xd0\xb12 \xd0\xb3\xd0\xbe2\xd0\xb2\xd0\xbb \xd0\xb3\xd0\xbe3\xd0\xb62\xd0\xb4 \xd0\xb3\xd0\xbe1\xd0\xb7 \xd0\xb3\xd0\xbe2\xd0\xb7\xd0\xbb \xd0\xb3\xd0\xbe\xd0\xb72\xd0\xbd \xd0\xb3\xd0\xbe\xd0\xb8\xd0\xb32 3\xd0\xb3\xd0\xbe\xd0\xb9 \xd0\xb32\xd0\xbe\xd0\xbb \xd0\xb3\xd0\xbe\xd0\xbc\xd0\xb82 \xd0\xb3\xd0\xbe2\xd1\x811\xd0\xb0 \xd0\xb3\xd0\xbe2\xd1\x81\xd0\xb4 \xd0\xb3\xd0\xbe1\xd1\x81\xd0\xba\xd0\xbb \xd0\xb3\xd0\xbe1\xd1\x81\xd0\xbd \xd0\xb3\xd0\xbe1\xd1\x81\xd0\xbf\xd0\xb0 2\xd0\xb3\xd0\xbe\xd1\x82\xd0\xb4 \xd0\xb3\xd0\xbe\xd1\x833\xd1\x82 \xd0\xb3\xd0\xbe1\xd1\x87\xd0\xbb 3\xd0\xb3\xd0\xbe\xd1\x8e 2\xd0\xb3\xd0\xbf 2\xd0\xb3\xd1\x80_ \xd0\xb31\xd1\x80\xd0\xb0\xd0\xb5 \xd0\xb31\xd1\x80\xd0\xb0\xd0\xb9 \xd0\xb31\xd1\x80\xd0\xb0\xd1\x80 \xd0\xb31\xd1\x80\xd0\xb5\xd0\xb3 \xd0\xb31\xd1\x80\xd0\xb5\xd0\xba \xd0\xb31\xd1\x80\xd0\xb5\xd1\x86 \xd0\xb3\xd1\x80\xd0\xb84\xd0\xb23\xd0\xbd \xd0\xb31\xd1\x80\xd0\xb8\xd0\xba \xd0\xb31\xd1\x80\xd0\xb8\xd0\xbb \xd0\xb31\xd1\x80\xd0\xb8\xd0\xbd \xd0\xb31\xd1\x80\xd0\xb8\xd1\x81 \xd0\xb31\xd1\x80\xd0\xb8\xd1\x87 \xd0\xb31\xd1\x80\xd0\xbe\xd0\xb2 \xd0\xb32\xd1\x80\xd0\xbe\xd0\xb7 \xd0\xb31\xd1\x80\xd0\xbe\xd0\xba \xd0\xb31\xd1\x80\xd0\xbe\xd0\xbd \xd0\xb31\xd1\x80\xd0\xbe\xd0\xbf \xd0\xb31\xd1\x80\xd0\xbe\xd1\x82 \xd0\xb31\xd1\x80\xd0\xbe\xd1\x84 \xd0\xb3\xd1\x80\xd1\x832\xd0\xbf \xd0\xb31\xd1\x80\xd1\x8b\xd0\xb2 2\xd0\xb3\xd1\x80\xd1\x8e \xd0\xb31\xd1\x80\xd1\x8f\xd0\xb5 \xd0\xb31\xd1\x80\xd1\x8f\xd0\xbb \xd0\xb31\xd1\x80\xd1\x8f\xd1\x82 2\xd0\xb33\xd1\x812 \xd0\xb34\xd1\x81\xd0\xb0 \xd0\xb34\xd1\x81\xd0\xb1 2\xd0\xb33\xd1\x82 \xd0\xb3\xd1\x831\xd0\xb2 \xd0\xb3\xd1\x831\xd1\x81 \xd0\xb3\xd1\x832\xd1\x811\xd0\xba 2\xd0\xb3\xd1\x84 2\xd0\xb31\xd1\x87 2\xd0\xb33\xd1\x88 2\xd0\xb33\xd1\x8d 1\xd0\xb4\xd0\xb0 \xd0\xb4\xd0\xb02\xd0\xb11 \xd0\xb4\xd0\xb02\xd0\xb3\xd0\xb5\xd0\xbd \xd0\xb4\xd0\xb02\xd0\xb3\xd1\x80 \xd0\xb4\xd0\xb01\xd0\xb7 \xd0\xb4\xd0\xb02\xd0\xbe \xd0\xb4\xd0\xb0\xd1\x81\xd1\x821\xd1\x80 \xd0\xb4\xd0\xb0\xd1\x821\xd1\x80 2\xd0\xb41\xd0\xb1 \xd0\xb4\xd0\xb22 \xd0\xb41\xd0\xb2\xd0\xb5 1\xd0\xb4\xd0\xb2\xd0\xb8 2\xd0\xb41\xd0\xb2\xd0\xb8\xd0\xb4 2\xd0\xb4\xd0\xb2\xd0\xb8\xd0\xb7 2\xd0\xb4\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x82 2\xd0\xb4\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x87 2\xd0\xb41\xd0\xb2\xd0\xb8\xd1\x81 2\xd0\xb41\xd0\xb2\xd0\xb8\xd1\x82 \xd0\xb43\xd0\xb2\xd0\xba \xd0\xb41\xd0\xb2\xd0\xbb 2\xd0\xb4\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xb41\xd0\xb2\xd0\xbe\xd0\xb7 1\xd0\xb4\xd0\xb2\xd0\xbe\xd1\x80\xd1\x8c 2\xd0\xb4\xd0\xb2\xd1\x8f 2\xd0\xb4\xd0\xb32 2\xd0\xb41\xd0\xb42 1\xd0\xb4\xd0\xb5 \xd0\xb4\xd0\xb51\xd0\xb12\xd0\xbb \xd0\xb4\xd0\xb51\xd0\xb12\xd1\x80 3\xd0\xb4\xd0\xb5\xd0\xb2\xd1\x80 3\xd0\xb4\xd0\xb5\xd0\xb7 \xd0\xb4\xd0\xb52\xd0\xb71\xd0\xb02 \xd0\xb4\xd0\xb52\xd0\xb7\xd0\xb8 \xd0\xb4\xd0\xb5\xd0\xb71\xd0\xbe2 \xd0\xb4\xd0\xb52\xd0\xb7\xd1\x83 \xd0\xb4\xd0\xb5\xd0\xb8\xd0\xbe2 \xd0\xb4\xd0\xb51\xd0\xba\xd0\xbb 3\xd0\xb4\xd0\xb5\xd0\xbc\xd0\xb5 \xd0\xb4\xd0\xb52\xd0\xbe\xd0\xb4 \xd0\xb4\xd0\xb5\xd0\xbe3\xd0\xbf \xd0\xb4\xd0\xb53\xd0\xbf\xd0\xbb \xd0\xb4\xd0\xb5\xd1\x80\xd0\xb0\xd1\x812 \xd0\xb4\xd0\xb52\xd1\x813\xd0\xb2 \xd0\xb4\xd0\xb5\xd1\x812\xd0\xba \xd0\xb4\xd0\xb52\xd1\x81\xd1\x80 \xd0\xb4\xd0\xb51\xd1\x85\xd0\xbb 2\xd0\xb4\xd0\xb6_ \xd0\xb42\xd0\xb6\xd0\xb0\xd0\xbc \xd0\xb42\xd0\xb63\xd0\xbc 2\xd0\xb4\xd0\xb6\xd1\x81 2\xd0\xb41\xd0\xb72 1\xd0\xb4\xd0\xb8 \xd0\xb4\xd0\xb82\xd0\xb0\xd0\xb4 \xd0\xb4\xd0\xb8\xd0\xb02\xd0\xb7 \xd0\xb4\xd0\xb82\xd0\xb0\xd0\xbb\xd0\xb8 \xd0\xb4\xd0\xb82\xd0\xb0\xd0\xbb\xd0\xbe \xd0\xb4\xd0\xb82\xd0\xb0\xd1\x80 \xd0\xb4\xd0\xb82\xd0\xb0\xd1\x81 \xd0\xb4\xd0\xb82\xd0\xbe\xd0\xb1 \xd0\xb4\xd0\xb8\xd0\xbe3\xd0\xb4\xd0\xb5 \xd0\xb4\xd0\xb82\xd0\xbe\xd1\x80 \xd0\xb4\xd0\xb8\xd0\xbe1\xd1\x81 \xd0\xb4\xd0\xb81\xd0\xbe\xd1\x82\xd0\xb8 \xd0\xb4\xd0\xb8\xd0\xbf2 \xd0\xb4\xd0\xb82\xd0\xbf\xd0\xb8 \xd0\xb4\xd0\xb83\xd0\xbf\xd1\x82 \xd0\xb4\xd0\xb82\xd1\x811\xd1\x82\xd1\x80 \xd0\xb4\xd0\xb8\xd1\x833 \xd0\xb4\xd0\xb83\xd1\x84\xd1\x80 \xd0\xb4\xd0\xb83\xd1\x84\xd1\x82\xd0\xbe \xd0\xb4\xd0\xb81\xd1\x85 2\xd0\xb41\xd0\xba \xd0\xb41\xd0\xbb \xd0\xb42\xd0\xbb\xd0\xb5\xd0\xb2 2\xd0\xb43\xd0\xbc2 2\xd0\xb41\xd0\xbd \xd0\xb43\xd0\xbd\xd0\xb0 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb02 3\xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb2\xd0\xbd 4\xd0\xb43\xd0\xbd\xd0\xbe1 \xd0\xb4\xd0\xbd\xd0\xbe3\xd0\xb42 \xd0\xb4\xd0\xbd\xd0\xbe\xd1\x812 4\xd0\xb43\xd0\xbd\xd1\x8b 3\xd0\xb42\xd0\xbd\xd1\x8f\xd1\x88 1\xd0\xb4\xd0\xbe 2\xd0\xb41\xd0\xbe2\xd0\xb1\xd0\xb5\xd0\xb4 \xd0\xb4\xd0\xbe2\xd0\xb1\xd0\xbb 2\xd0\xb41\xd0\xbe\xd0\xb1\xd0\xbb\xd0\xb0 \xd0\xb4\xd0\xbe1\xd0\xb12\xd1\x80\xd0\xb0 \xd0\xb4\xd0\xbe\xd0\xb22\xd0\xbb \xd0\xb4\xd0\xbe3\xd0\xb22\xd0\xbc \xd0\xb4\xd0\xbe1\xd0\xb42 \xd0\xb4\xd0\xbe3\xd0\xb4\xd0\xbd \xd0\xb4\xd0\xbe3\xd0\xb62\xd0\xb4 \xd0\xb4\xd0\xbe1\xd0\xb7 \xd0\xb4\xd0\xbe\xd0\xb72\xd0\xbd \xd0\xb4\xd0\xbe\xd0\xb82\xd1\x80 2\xd0\xb4\xd0\xbe\xd0\xba\xd1\x82 2\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xbc \xd0\xb4\xd0\xbe2\xd0\xbc1\xd1\x80 \xd0\xb4\xd0\xbe\xd0\xbf2 \xd0\xb4\xd0\xbe3\xd0\xbf\xd0\xbb 2\xd0\xb4\xd0\xbe\xd0\xbf\xd0\xbb\xd0\xb5 \xd0\xb4\xd0\xbe2\xd0\xbf\xd1\x80\xd0\xb5 \xd0\xb4\xd0\xbe2\xd1\x80\xd1\x83\xd0\xb1 \xd0\xb4\xd0\xbe1\xd1\x81 \xd0\xb41\xd0\xbe2\xd1\x81\xd0\xb5\xd0\xbd \xd0\xb41\xd0\xbe2\xd1\x81\xd0\xb8\xd0\xbd 2\xd0\xb41\xd0\xbe\xd1\x81\xd0\xbd\xd0\xbe \xd0\xb4\xd0\xbe\xd1\x812\xd0\xbf 2\xd0\xb4\xd0\xbe\xd1\x82\xd0\xb4 2\xd0\xb4\xd0\xbe\xd1\x82\xd0\xbb \xd0\xb4\xd0\xbe\xd1\x822\xd1\x80\xd0\xb8 2\xd0\xb41\xd0\xbe\xd1\x82\xd1\x80\xd1\x8f 2\xd0\xb4\xd0\xbe\xd1\x82\xd1\x8a \xd0\xb4\xd0\xbe3\xd1\x82\xd1\x8c 3\xd0\xb4\xd0\xbe\xd1\x85\xd0\xbb \xd0\xb4\xd0\xbe2\xd1\x883\xd0\xb2 \xd0\xb4\xd0\xbe3\xd1\x882\xd0\xba \xd0\xb4\xd0\xbe2\xd1\x88\xd0\xbb\xd1\x8b \xd0\xb4\xd0\xbe2\xd1\x89\xd1\x83 2\xd0\xb4\xd0\xbf 2\xd0\xb4\xd1\x80_ \xd0\xb41\xd1\x80\xd0\xb0\xd0\xb1 1\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb2\xd1\x88 2\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb7\xd0\xb2 1\xd0\xb42\xd1\x80\xd0\xb0\xd0\xb7\xd0\xbd \xd0\xb41\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb5 \xd0\xb41\xd1\x80\xd0\xb0\xd1\x80 \xd0\xb41\xd1\x80\xd0\xb02\xd1\x813 \xd0\xb41\xd1\x80\xd0\xb0\xd1\x85 \xd0\xb41\xd1\x80\xd0\xb0\xd1\x87 \xd0\xb42\xd1\x80\xd0\xb0\xd1\x8e \xd0\xb41\xd1\x80\xd0\xb5 \xd0\xb42\xd1\x80\xd0\xb5\xd0\xb1 2\xd0\xb43\xd1\x80\xd0\xb5\xd0\xb6 2\xd0\xb4\xd1\x80\xd0\xb5\xd0\xb7 \xd0\xb42\xd1\x80\xd0\xb5\xd0\xbb \xd0\xb42\xd1\x80\xd0\xb5\xd0\xbc 1\xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc\xd0\xb0 1\xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc\xd0\xbb \xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc3\xd0\xbd 1\xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc\xd1\x8b 2\xd0\xb43\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb4\xd1\x80\xd0\xb52\xd1\x81\xd0\xba \xd0\xb42\xd1\x80\xd0\xb5\xd1\x81\xd1\x81 \xd0\xb41\xd1\x80\xd0\xb8 \xd0\xb42\xd1\x80\xd0\xb8\xd0\xb9 2\xd0\xb4\xd1\x80\xd0\xb8\xd0\xbd \xd0\xb42\xd1\x80\xd0\xb8\xd0\xbf \xd0\xb42\xd1\x80\xd0\xb8\xd1\x85 \xd0\xb4\xd1\x80\xd0\xbe2\xd0\xb33\xd0\xbd \xd0\xb41\xd1\x80\xd0\xbe\xd0\xb4 \xd0\xb41\xd1\x80\xd0\xbe\xd0\xb5 1\xd0\xb42\xd1\x80\xd0\xbe\xd0\xb6 2\xd0\xb43\xd1\x80\xd0\xbe\xd0\xb7 \xd0\xb41\xd1\x80\xd0\xbe\xd0\xb9 \xd0\xb41\xd1\x80\xd0\xbe\xd0\xbb \xd0\xb41\xd1\x80\xd0\xbe\xd0\xbd \xd0\xb41\xd1\x80\xd0\xbe\xd1\x81 \xd0\xb41\xd1\x80\xd0\xbe\xd1\x82 \xd0\xb41\xd1\x80\xd0\xbe\xd1\x8e \xd0\xb41\xd1\x80\xd1\x83\xd0\xb1 1\xd0\xb4\xd1\x80\xd1\x83\xd0\xb3 1\xd0\xb4\xd1\x80\xd1\x83\xd0\xb6 \xd0\xb41\xd1\x80\xd1\x83\xd0\xbc \xd0\xb41\xd1\x80\xd1\x83\xd1\x8e \xd0\xb41\xd1\x80\xd1\x8b 2\xd0\xb4\xd1\x80\xd1\x8b\xd0\xb2 1\xd0\xb42\xd1\x80\xd1\x8b\xd0\xb3 \xd0\xb41\xd1\x80\xd1\x8f \xd0\xb42\xd1\x80\xd1\x8f\xd0\xb1 1\xd0\xb42\xd1\x80\xd1\x8f\xd0\xb3 \xd0\xb42\xd1\x80\xd1\x8f\xd1\x85 2\xd0\xb41\xd1\x812 \xd0\xb4\xd1\x81\xd0\xba2 \xd0\xb4\xd1\x813\xd0\xba\xd0\xbd 2\xd0\xb41\xd1\x82 1\xd0\xb4\xd1\x83 \xd0\xb4\xd1\x83\xd0\xb13\xd1\x80 \xd0\xb4\xd1\x833\xd0\xb3 2\xd0\xb41\xd1\x83\xd0\xb4 \xd0\xb4\xd1\x832\xd0\xb4\xd0\xb0 \xd0\xb4\xd1\x832\xd0\xbe \xd0\xb4\xd1\x83\xd0\xbf1\xd0\xbb \xd0\xb4\xd1\x83\xd1\x811\xd0\xba \xd0\xb41\xd1\x83\xd1\x81\xd0\xbb \xd0\xb4\xd1\x831\xd1\x81\xd1\x82 \xd0\xb4\xd1\x832\xd1\x81\xd1\x82\xd0\xb0 2\xd0\xb4\xd1\x83\xd1\x821\xd1\x80 \xd0\xb4\xd1\x831\xd1\x85 \xd0\xb4\xd1\x832\xd1\x87\xd0\xb8 \xd0\xb4\xd1\x83\xd1\x8d1\xd1\x82 2\xd0\xb4\xd1\x84 \xd0\xb41\xd1\x85 2\xd0\xb43\xd1\x86\xd0\xb5 2\xd0\xb4\xd1\x86\xd1\x83 2\xd0\xb4\xd1\x86\xd1\x8b 2\xd0\xb41\xd1\x87 2\xd0\xb43\xd1\x882 2\xd0\xb4\xd1\x89 2\xd0\xb4\xd1\x8a \xd0\xb4\xd1\x8a\xd0\xb52\xd0\xbc 1\xd0\xb4\xd1\x8b 2\xd0\xb4\xd1\x8b\xd0\xb3 \xd0\xb4\xd1\x8b2\xd0\xb31\xd1\x80 2\xd0\xb4\xd1\x8b\xd0\xb4 2\xd0\xb4\xd1\x8b\xd0\xbc\xd0\xb5 2\xd0\xb4\xd1\x8b2\xd1\x811 2\xd0\xb4\xd1\x8b\xd1\x82 2\xd0\xb4\xd1\x8b\xd1\x89 2\xd0\xb4\xd1\x8c_ 1\xd0\xb4\xd1\x8c\xd0\xb5 2\xd0\xb4\xd1\x8c\xd0\xba 2\xd0\xb4\xd1\x8c\xd1\x82 1\xd0\xb4\xd1\x8c\xd1\x8e 1\xd0\xb4\xd1\x8c\xd1\x8f \xd0\xb4\xd1\x8c3\xd1\x8f\xd1\x80 1\xd0\xb42\xd1\x8e 1\xd0\xb4\xd1\x8f \xd0\xb51\xd0\xb0 \xd0\xb5\xd0\xb02\xd0\xb4 \xd0\xb5\xd0\xb0\xd0\xb4\xd0\xb83 \xd0\xb5\xd0\xb03\xd0\xb4\xd0\xbe \xd0\xb5\xd0\xb02\xd0\xb7 \xd0\xb5\xd0\xb0\xd0\xbd2\xd0\xb41\xd1\x80 \xd0\xb5\xd0\xb0\xd1\x821\xd1\x80 2\xd0\xb5\xd0\xb1 \xd0\xb5\xd0\xb1\xd0\xb02\xd1\x81 \xd0\xb51\xd0\xb1\xd1\x80\xd0\xb0 \xd0\xb5\xd0\xb11\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb5\xd0\xb11\xd1\x80\xd0\xb8 \xd0\xb51\xd0\xb1\xd1\x80\xd0\xbe \xd0\xb5\xd0\xb11\xd1\x80\xd0\xbe\xd0\xb2 \xd0\xb5\xd0\xb11\xd1\x80\xd1\x8b \xd0\xb52\xd0\xb13\xd1\x80\xd1\x8e \xd0\xb51\xd0\xb2\xd0\xb5 2\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80 \xd0\xb51\xd0\xb2\xd0\xb8 \xd0\xb53\xd0\xb22\xd0\xbc\xd0\xb5 \xd0\xb5\xd0\xb22\xd0\xbd\xd0\xb8\xd0\xbc \xd0\xb5\xd0\xb22\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xb51\xd0\xb2\xd0\xbe 2\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xbb \xd0\xb5\xd0\xb2\xd1\x80\xd0\xb01\xd1\x81 2\xd0\xb51\xd0\xb2\xd1\x80\xd0\xb5 \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb5\xd0\xb5 \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb5\xd0\xb9 \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb5\xd1\x8f \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb8 \xd0\xb52\xd0\xb2\xd1\x82 \xd0\xb51\xd0\xb2\xd1\x83 \xd0\xb51\xd0\xb2\xd1\x85 \xd0\xb5\xd0\xb22\xd1\x85\xd0\xbe \xd0\xb51\xd0\xb2\xd1\x8c \xd0\xb5\xd0\xb3\xd0\xb01\xd1\x812 \xd0\xb5\xd0\xb32\xd0\xb4 \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xb0\xd0\xbd \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xb5 \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xbe \xd0\xb5\xd0\xb32\xd0\xbd\xd0\xb0 \xd0\xb5\xd0\xb32\xd0\xbd\xd0\xbe 2\xd0\xb5\xd0\xb32\xd1\x80 \xd0\xb5\xd0\xb41\xd0\xb2\xd0\xbe \xd0\xb5\xd0\xb42\xd0\xb6 \xd0\xb51\xd0\xb4\xd0\xb6\xd0\xb5 \xd0\xb51\xd0\xb42\xd0\xbb\xd0\xb8\xd0\xbd \xd0\xb5\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x833 \xd0\xb5\xd0\xb41\xd0\xbe\xd0\xbf\xd1\x80 \xd0\xb52\xd0\xb4\xd0\xbe\xd1\x82\xd0\xb2 \xd0\xb52\xd0\xb4\xd0\xbe\xd1\x85 \xd0\xb52\xd0\xb41\xd0\xbe\xd1\x89 \xd0\xb51\xd0\xb4\xd1\x80\xd1\x83 \xd0\xb52\xd0\xb4\xd1\x80\xd1\x83_ \xd0\xb52\xd0\xb4\xd1\x832\xd0\xb1 \xd0\xb5\xd0\xb41\xd1\x83\xd0\xb1\xd0\xbe \xd0\xb52\xd0\xb4\xd1\x83\xd0\xb2\xd0\xb5 \xd0\xb52\xd0\xb4\xd1\x83\xd0\xb3 \xd0\xb52\xd0\xb4\xd1\x83\xd1\x81 \xd0\xb5\xd0\xb41\xd1\x83\xd1\x81\xd1\x82 2\xd0\xb53\xd0\xb4\xd1\x83\xd1\x88 \xd0\xb52\xd0\xb4\xd1\x8b\xd0\xbd \xd0\xb51\xd0\xb5 \xd0\xb52\xd0\xb5\xd0\xb2\xd0\xb8\xd0\xb4 \xd0\xb5\xd0\xb52\xd0\xb21\xd1\x80 \xd0\xb5\xd0\xb52\xd0\xb3\xd0\xb8 \xd0\xb5\xd0\xb51\xd1\x812 \xd0\xb5\xd0\xb52\xd1\x81\xd1\x82 \xd0\xb5\xd0\xb5\xd1\x81\xd1\x821\xd1\x80 \xd0\xb5\xd0\xb52\xd1\x85 \xd0\xb52\xd0\xb6\xd0\xb3 \xd0\xb54\xd0\xb6\xd0\xb4\xd0\xb5\xd0\xb2 \xd0\xb5\xd0\xb63\xd0\xb4\xd0\xb8 2\xd0\xb5\xd0\xb6\xd0\xb5 \xd0\xb52\xd0\xb61\xd1\x80 \xd0\xb5\xd0\xb7\xd0\xb02\xd0\xb2\xd1\x80 \xd0\xb5\xd0\xb7\xd0\xb0\xd1\x833 \xd0\xb51\xd0\xb72\xd0\xb2\xd0\xb0 \xd0\xb5\xd0\xb7\xd0\xb41\xd1\x80 \xd0\xb53\xd0\xb7\xd0\xb5 \xd0\xb5\xd0\xb7\xd0\xb7\xd1\x833 \xd0\xb53\xd0\xb7\xd0\xb8\xd1\x82 \xd0\xb5\xd0\xb71\xd0\xbe\xd0\xb1 \xd0\xb5\xd0\xb71\xd0\xbe2\xd0\xb3 \xd0\xb51\xd0\xb7\xd0\xbe\xd0\xbc \xd0\xb5\xd0\xb71\xd0\xbe\xd0\xbf \xd0\xb5\xd0\xb71\xd0\xbe2\xd1\x80 \xd0\xb5\xd0\xb71\xd0\xbe\xd1\x82 \xd0\xb5\xd0\xb71\xd0\xbe\xd1\x88 \xd0\xb5\xd0\xb72\xd1\x80\xd1\x8f \xd0\xb5\xd0\xb71\xd1\x832\xd0\xb4 \xd0\xb5\xd0\xb71\xd1\x832\xd0\xba \xd0\xb5\xd0\xb71\xd1\x83\xd0\xbf \xd0\xb5\xd0\xb71\xd1\x83\xd1\x81 \xd0\xb5\xd0\xb7\xd1\x832\xd1\x81\xd0\xbe \xd0\xb5\xd0\xb7\xd1\x832\xd1\x81\xd1\x8b \xd0\xb5\xd0\xb71\xd1\x832\xd1\x85 \xd0\xb5\xd0\xb71\xd1\x83\xd1\x87\xd0\xb0 \xd0\xb53\xd0\xb7\xd1\x8f \xd0\xb51\xd0\xb8 \xd0\xb5\xd0\xb82\xd0\xb31 \xd0\xb5\xd0\xb82\xd0\xb4 \xd0\xb5\xd0\xb82\xd0\xbc \xd0\xb5\xd0\xb82\xd0\xbe \xd0\xb5\xd0\xb8\xd1\x811\xd0\xbb \xd0\xb5\xd0\xb8\xd1\x811\xd1\x82\xd1\x80 \xd0\xb51\xd0\xba\xd0\xb0 \xd0\xb5\xd0\xba\xd0\xb02\xd0\xb1 \xd0\xb5\xd0\xba2\xd0\xb7 \xd0\xb51\xd0\xba\xd0\xb8 2\xd0\xb51\xd0\xba\xd0\xbe 2\xd0\xb51\xd0\xba\xd1\x80 \xd0\xb5\xd0\xba2\xd1\x80\xd0\xbe \xd0\xb5\xd0\xba1\xd1\x81\xd0\xba \xd0\xb5\xd0\xba1\xd1\x81\xd1\x82\xd0\xb5 \xd0\xb51\xd0\xba\xd1\x83 \xd0\xb51\xd0\xbb\xd0\xb0 \xd0\xb51\xd0\xbb\xd0\xb5 \xd0\xb5\xd0\xbb\xd0\xb53\xd1\x81\xd0\xba \xd0\xb5\xd0\xbb\xd0\xb51\xd1\x81\xd1\x86 \xd0\xb51\xd0\xbb\xd1\x83 \xd0\xb51\xd0\xbb\xd1\x8b \xd0\xb51\xd0\xbb\xd1\x8e \xd0\xb53\xd0\xbb\xd1\x8f \xd0\xb5\xd0\xbc\xd0\xb83\xd0\xb42 \xd0\xb5\xd0\xbc\xd0\xb83\xd0\xba \xd0\xb5\xd0\xbc\xd0\xbe1\xd1\x81 2\xd0\xb5\xd0\xbc\xd1\x83\xd0\xb6 \xd0\xb52\xd0\xbc\xd1\x87 2\xd0\xb5\xd0\xbc\xd1\x8b\xd1\x81 \xd0\xb53\xd0\xbd\xd0\xb0 \xd0\xb5\xd0\xbd2\xd0\xb41\xd1\x80 2\xd0\xb51\xd0\xbd\xd1\x80 \xd0\xb5\xd0\xbd\xd1\x812 \xd0\xb5\xd0\xbd3\xd1\x882 \xd0\xb51\xd0\xbd\xd1\x8d 2\xd0\xb5\xd0\xbe \xd0\xb51\xd0\xbe2\xd0\xb1 \xd0\xb5\xd0\xbe\xd0\xb12\xd1\x80\xd0\xbe \xd0\xb52\xd0\xbe3\xd0\xb3\xd0\xbb \xd0\xb5\xd0\xbe2\xd0\xb3\xd1\x80\xd0\xbe \xd0\xb51\xd0\xbe\xd0\xb4 \xd0\xb5\xd0\xbe3\xd0\xb4\xd0\xb0 \xd0\xb5\xd0\xbe2\xd0\xb4\xd0\xb5 \xd0\xb5\xd0\xbe\xd0\xb4\xd0\xb53\xd0\xb7 \xd0\xb5\xd0\xbe2\xd0\xb4\xd0\xbe \xd0\xb51\xd0\xbe2\xd0\xb6 \xd0\xb52\xd0\xbe\xd0\xb8 \xd0\xb5\xd0\xbe3\xd0\xba\xd0\xbb \xd0\xb51\xd0\xbe\xd0\xbb_ \xd0\xb51\xd0\xbe\xd0\xbb\xd0\xb0 \xd0\xb5\xd0\xbe3\xd0\xbb\xd0\xb8 \xd0\xb51\xd0\xbe\xd0\xbb\xd0\xba \xd0\xb51\xd0\xbe\xd0\xbb\xd1\x8b \xd0\xb51\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xb52\xd0\xbe\xd0\xbc \xd0\xb51\xd0\xbe\xd0\xbd_ \xd0\xb52\xd0\xbe\xd0\xbd\xd0\xb0 \xd0\xb52\xd0\xbe\xd0\xbd\xd0\xb8 \xd0\xb5\xd0\xbe3\xd0\xbd\xd0\xbe \xd0\xb51\xd0\xbe\xd0\xbd\xd1\x81 \xd0\xb5\xd0\xbe\xd0\xbf2 \xd0\xb51\xd0\xbe\xd0\xbf\xd0\xb5 \xd0\xb5\xd0\xbe2\xd0\xbf\xd1\x80 \xd0\xb5\xd0\xbe4\xd0\xbf\xd1\x83 \xd0\xb52\xd0\xbe3\xd1\x80\xd0\xbe \xd0\xb5\xd0\xbe\xd1\x812 \xd0\xb51\xd0\xbe2\xd1\x81\xd0\xb2\xd0\xb8 \xd0\xb5\xd0\xbe1\xd1\x81\xd0\xba \xd0\xb51\xd0\xbe\xd1\x81\xd0\xbc \xd0\xb51\xd0\xbe\xd1\x81\xd0\xbd \xd0\xb5\xd0\xbe\xd1\x81\xd1\x821\xd1\x80 \xd0\xb5\xd0\xbe3\xd1\x81\xd1\x85 \xd0\xb51\xd0\xbe\xd1\x82\xd0\xbb \xd0\xb5\xd0\xbe\xd1\x822\xd1\x80\xd1\x83 \xd0\xb51\xd0\xbe2\xd1\x87 \xd0\xb51\xd0\xbe2\xd1\x89 \xd0\xb5\xd0\xbf\xd0\xb0\xd1\x822 \xd0\xb5\xd0\xbf\xd0\xb01\xd1\x82\xd1\x80 2\xd0\xb5\xd0\xbf\xd0\xb5 \xd0\xb5\xd0\xbf\xd0\xb8\xd1\x812\xd0\xba \xd0\xb52\xd0\xbf\xd0\xbb \xd0\xb53\xd0\xbf\xd0\xbb\xd0\xb0 \xd0\xb5\xd0\xbf1\xd0\xbb\xd0\xb5\xd1\x88 \xd0\xb53\xd0\xbf2\xd0\xbb\xd0\xbe\xd0\xb4 \xd0\xb5\xd0\xbf1\xd0\xbb\xd1\x83 \xd0\xb53\xd0\xbf\xd0\xbb\xd1\x8b \xd0\xb5\xd0\xbf1\xd0\xbb\xd1\x8e\xd1\x89 \xd0\xb54\xd0\xbf\xd0\xbd 2\xd0\xb5\xd0\xbf\xd0\xbe \xd0\xb54\xd0\xbf3\xd1\x81 \xd0\xb54\xd0\xbf\xd1\x82 \xd0\xb51\xd1\x80\xd0\xb0 \xd0\xb5\xd1\x801\xd0\xb0\xd0\xba\xd1\x82 \xd0\xb52\xd1\x80\xd0\xb2 \xd0\xb5\xd1\x801\xd0\xb2\xd0\xb5 \xd0\xb51\xd1\x80\xd0\xb5 \xd0\xb53\xd1\x80\xd0\xb5_ \xd0\xb5\xd1\x80\xd0\xb53\xd0\xb4\xd0\xbe \xd0\xb5\xd1\x80\xd0\xb51\xd0\xb4\xd1\x80 \xd0\xb5\xd1\x80\xd0\xb51\xd0\xba2 \xd0\xb5\xd1\x80\xd0\xb53\xd0\xbc2\xd0\xbd \xd0\xb5\xd1\x80\xd0\xb53\xd0\xbf \xd0\xb5\xd1\x80\xd0\xb51\xd1\x854 \xd0\xb51\xd1\x80\xd0\xb8 \xd0\xb5\xd1\x80\xd0\xb8\xd0\xbe3\xd0\xb7 \xd0\xb51\xd1\x80\xd0\xbe \xd0\xb5\xd1\x80\xd0\xbe2\xd0\xb1 \xd0\xb5\xd1\x801\xd0\xbe\xd0\xb1\xd0\xbb 2\xd0\xb5\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb8 2\xd0\xb5\xd1\x80\xd0\xbe\xd0\xba\xd1\x80 2\xd0\xb5\xd1\x80\xd0\xbe\xd0\xbb \xd0\xb5\xd1\x80\xd0\xbe3\xd1\x842 \xd0\xb5\xd1\x803\xd1\x81\xd0\xba \xd0\xb51\xd1\x80\xd1\x83 \xd0\xb52\xd1\x801\xd1\x832\xd0\xbf \xd0\xb51\xd1\x80\xd1\x8b \xd0\xb51\xd1\x80\xd1\x8e \xd0\xb51\xd1\x80\xd1\x8f \xd0\xb53\xd1\x812\xd0\xb0 \xd0\xb5\xd1\x812\xd0\xb1\xd0\xb0 \xd0\xb51\xd1\x81\xd0\xb3 \xd0\xb51\xd1\x81\xd0\xba \xd0\xb52\xd1\x811\xd0\xba\xd0\xb0_ \xd0\xb5\xd1\x811\xd0\xba\xd0\xb0\xd0\xbb \xd0\xb52\xd1\x81\xd0\xba\xd0\xb5 \xd0\xb52\xd1\x81\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xb54\xd1\x811\xd0\xba\xd1\x83_ 2\xd0\xb5\xd1\x81\xd0\xbb \xd0\xb5\xd1\x811\xd0\xbb\xd0\xb0\xd1\x81 \xd0\xb5\xd1\x812\xd0\xbb\xd0\xb8\xd0\xbd \xd0\xb5\xd1\x812\xd0\xbb\xd0\xbe\xd0\xb2 \xd0\xb5\xd1\x812\xd0\xbb\xd0\xbe\xd0\xbc \xd0\xb51\xd1\x81\xd0\xbb\xd1\x83 \xd0\xb51\xd1\x81\xd0\xbb\xd1\x8b \xd0\xb51\xd1\x814\xd0\xbc \xd0\xb53\xd1\x81\xd0\xbe 2\xd0\xb5\xd1\x81\xd0\xbf \xd0\xb5\xd1\x812\xd0\xbf\xd0\xb5\xd0\xba \xd0\xb5\xd1\x813\xd0\xbf\xd0\xbe\xd0\xbb \xd0\xb52\xd1\x81\xd0\xbf\xd1\x83 \xd0\xb51\xd1\x81\xd1\x82 \xd0\xb5\xd1\x812\xd1\x82\xd0\xb0\xd0\xbd \xd0\xb52\xd1\x81\xd1\x82\xd0\xbb \xd0\xb53\xd1\x81\xd1\x82\xd1\x83 \xd0\xb5\xd1\x812\xd1\x87\xd0\xb5\xd1\x82 \xd0\xb51\xd1\x82\xd0\xb0 \xd0\xb5\xd1\x821\xd0\xb2\xd0\xb5 \xd0\xb5\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xb51\xd1\x82\xd0\xb2\xd0\xbe 2\xd0\xb5\xd1\x82\xd0\xb5\xd1\x87 \xd0\xb51\xd1\x82\xd0\xb8 \xd0\xb51\xd1\x82\xd0\xbe \xd0\xb5\xd1\x82\xd0\xbe1\xd1\x81 \xd0\xb5\xd1\x821\xd1\x80 \xd0\xb5\xd1\x822\xd1\x80\xd1\x8f \xd0\xb51\xd1\x82\xd1\x83 \xd0\xb51\xd1\x82\xd1\x8b \xd0\xb51\xd1\x82\xd1\x8c\xd0\xb5 \xd0\xb53\xd1\x82\xd1\x8c\xd1\x8e \xd0\xb53\xd1\x82\xd1\x8c\xd1\x8f \xd0\xb51\xd1\x82\xd1\x8e \xd0\xb51\xd1\x82\xd1\x8f \xd0\xb51\xd1\x832 2\xd0\xb5\xd1\x83\xd0\xb1 \xd0\xb5\xd1\x83\xd0\xb13\xd1\x80 \xd0\xb5\xd1\x83\xd0\xb72 \xd0\xb5\xd1\x83\xd0\xba2\xd0\xbb\xd0\xbe \xd0\xb5\xd1\x84\xd0\xb83\xd0\xb12 \xd0\xb5\xd1\x842\xd0\xbb \xd0\xb5\xd1\x841\xd1\x80\xd0\xb5 \xd0\xb5\xd1\x85\xd0\xb02\xd1\x82 \xd0\xb5\xd1\x851\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb5\xd1\x853\xd0\xb2\xd0\xb0\xd0\xbb \xd0\xb5\xd1\x853\xd0\xbb\xd0\xbe\xd0\xbf \xd0\xb5\xd1\x851\xd0\xbe\xd0\xb1 \xd0\xb5\xd1\x851\xd0\xbe\xd0\xbf\xd0\xbe \xd0\xb5\xd1\x851\xd1\x80\xd0\xb5 \xd0\xb5\xd1\x851\xd1\x80\xd1\x83 \xd0\xb5\xd1\x851\xd1\x832\xd1\x87 2\xd0\xb5\xd1\x86\xd0\xb2 \xd0\xb51\xd1\x87\xd0\xbb \xd0\xb52\xd1\x88\xd0\xbb \xd0\xb5\xd1\x8d2 \xd0\xb5\xd1\x8e2\xd0\xb3 \xd0\xb51\xd1\x8f \xd0\xb5\xd1\x8f2\xd0\xb7 1\xd0\xb6 \xd0\xb6\xd0\xb02\xd0\xb1\xd0\xbb \xd0\xb6\xd0\xb02\xd0\xb1\xd1\x80 \xd0\xb6\xd0\xb01\xd0\xb7 \xd0\xb6\xd0\xb0\xd1\x821\xd0\xb2 2\xd0\xb61\xd0\xb12 2\xd0\xb61\xd0\xb2 \xd0\xb6\xd0\xb32 2\xd0\xb6\xd0\xb3\xd0\xb0 \xd0\xb62\xd0\xb3\xd0\xb8 3\xd0\xb62\xd0\xb3\xd0\xbb \xd0\xb62\xd0\xb3\xd1\x83 2\xd0\xb61\xd0\xb4 \xd0\xb62\xd0\xb4\xd0\xb0\xd0\xba \xd0\xb62\xd0\xb4\xd0\xb0\xd1\x87 3\xd0\xb62\xd0\xb4\xd0\xb5\xd0\xbb 4\xd0\xb6\xd0\xb4\xd0\xb5\xd0\xbc\xd0\xb5 \xd0\xb62\xd0\xb4\xd0\xb5\xd0\xbf \xd0\xb62\xd0\xb4\xd0\xb8 4\xd0\xb62\xd0\xb4\xd0\xbb \xd0\xb6\xd0\xb4\xd0\xbe3 \xd0\xb6\xd0\xb4\xd1\x831 4\xd0\xb6\xd0\xb4\xd1\x8c 3\xd0\xb62\xd0\xb4\xd1\x8f 3\xd0\xb6\xd0\xb5\xd0\xb2 \xd0\xb6\xd0\xb53\xd0\xb42 \xd0\xb6\xd0\xb51\xd0\xba2\xd0\xb2 \xd0\xb6\xd0\xb51\xd0\xba\xd0\xbb \xd0\xb6\xd0\xb51\xd0\xbe2 \xd0\xb6\xd0\xb53\xd0\xbf2 \xd0\xb6\xd0\xb51\xd1\x812 \xd0\xb6\xd0\xb53\xd1\x81\xd0\xba 2\xd0\xb6\xd0\xb6\xd0\xb0 \xd0\xb62\xd0\xb6\xd0\xb5 2\xd0\xb6\xd0\xb6\xd0\xb5\xd0\xb2 2\xd0\xb61\xd0\xb72 \xd0\xb6\xd0\xb81\xd0\xbe 2\xd0\xb6\xd0\xb8\xd1\x80\xd1\x80 2\xd0\xb61\xd0\xba 2\xd0\xb61\xd0\xbb \xd0\xb62\xd0\xbc \xd0\xb63\xd0\xbc\xd0\xb0 2\xd0\xb63\xd0\xbc\xd0\xbe 2\xd0\xb61\xd0\xbd \xd0\xb6\xd0\xbd\xd0\xbe1 2\xd0\xb61\xd0\xbe\xd0\xb1 2\xd0\xb61\xd0\xbe2\xd1\x821 \xd0\xb6\xd0\xbe\xd1\x833 \xd0\xb6\xd0\xbe\xd1\x831\xd1\x81 2\xd0\xb6\xd0\xbf2 \xd0\xb6\xd0\xbf\xd0\xbe1 \xd0\xb62\xd1\x80\xd1\x83 2\xd0\xb61\xd1\x81 2\xd0\xb6\xd1\x84 2\xd0\xb6\xd1\x86 2\xd0\xb61\xd1\x87 2\xd0\xb6\xd1\x8a 2\xd0\xb6\xd1\x8c_ 2\xd0\xb6\xd1\x8c\xd1\x81 2\xd0\xb6\xd1\x8c\xd1\x82 1\xd0\xb7\xd0\xb01 \xd0\xb7\xd0\xb0\xd0\xb02 \xd0\xb7\xd0\xb0\xd0\xb12 \xd0\xb7\xd0\xb02\xd0\xb21\xd1\x80\xd0\xb8 \xd0\xb7\xd0\xb02\xd0\xb2\xd1\x80\xd1\x83 \xd0\xb71\xd0\xb0\xd0\xb2\xd1\x83 \xd0\xb7\xd0\xb0\xd0\xb34 \xd0\xb71\xd0\xb0\xd0\xb4\xd1\x80 \xd0\xb7\xd0\xb0\xd0\xb52\xd0\xb4 \xd0\xb7\xd0\xb0\xd0\xb52\xd1\x85 \xd0\xb7\xd0\xb03\xd0\xb62\xd0\xb4 \xd0\xb7\xd0\xb03\xd0\xb72 \xd0\xb71\xd0\xb0\xd0\xba\xd1\x82 \xd0\xb7\xd0\xb03\xd0\xbc\xd0\xbd\xd0\xb5 3\xd0\xb72\xd0\xb0\xd0\xbd \xd0\xb7\xd0\xb03\xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xbd\xd1\x812 \xd0\xb7\xd0\xb0\xd0\xbf2 \xd0\xb7\xd0\xb0\xd1\x802\xd0\xb2 \xd0\xb7\xd0\xb03\xd1\x802\xd0\xb4 \xd0\xb7\xd0\xb0\xd1\x802\xd0\xb6 \xd0\xb7\xd0\xb0\xd1\x812 \xd0\xb7\xd0\xb0\xd1\x81\xd1\x822 \xd0\xb7\xd0\xb0\xd1\x822 \xd0\xb7\xd0\xb03\xd1\x82\xd0\xba \xd0\xb7\xd0\xb0\xd1\x832 \xd0\xb7\xd0\xb0\xd1\x852 \xd0\xb7\xd0\xb0\xd1\x872\xd1\x82 \xd0\xb7\xd0\xb03\xd1\x882 \xd0\xb7\xd0\xb0\xd1\x8f2 \xd0\xb71\xd0\xb12 2\xd0\xb73\xd0\xb2\xd0\xb0_ \xd0\xb72\xd0\xb2\xd0\xb0\xd0\xb2 \xd0\xb73\xd0\xb2\xd0\xb0\xd0\xbb\xd1\x8c \xd0\xb72\xd0\xb2\xd0\xb0\xd0\xbd 2\xd0\xb7\xd0\xb2\xd0\xb0\xd1\x8f \xd0\xb71\xd0\xb2\xd0\xb5 \xd0\xb72\xd0\xb2\xd0\xb5\xd0\xb7 \xd0\xb71\xd0\xb2\xd0\xb8 \xd0\xb73\xd0\xb22\xd0\xba \xd0\xb71\xd0\xb2\xd0\xbb\xd0\xb0 \xd0\xb71\xd0\xb2\xd0\xbe 2\xd0\xb7\xd0\xb2\xd0\xbe\xd0\xbb 1\xd0\xb72\xd0\xb2\xd0\xbe\xd0\xbd \xd0\xb71\xd0\xb2\xd1\x80 1\xd0\xb7\xd0\xb2\xd1\x83 2\xd0\xb71\xd0\xb2\xd1\x83\xd1\x8e \xd0\xb71\xd0\xb2\xd1\x8c 2\xd0\xb7\xd0\xb3 \xd0\xb73\xd0\xb3\xd0\xb0 \xd0\xb72\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb7\xd0\xb32\xd0\xbd\xd0\xb0 \xd0\xb72\xd0\xb3\xd0\xbd\xd1\x83 \xd0\xb71\xd0\xb42\xd0\xb2 \xd0\xb72\xd0\xb4\xd0\xb5\xd1\x88 \xd0\xb7\xd0\xb4\xd0\xbe\xd0\xb63 1\xd0\xb7\xd0\xb5 \xd0\xb7\xd0\xb52\xd0\xb11 \xd0\xb7\xd0\xb52\xd0\xb5\xd0\xb2 \xd0\xb7\xd0\xb52\xd0\xbe\xd0\xb4 2\xd0\xb7\xd0\xb62 \xd0\xb73\xd0\xb72 1\xd0\xb7\xd0\xb8 3\xd0\xb7\xd0\xb8_ 3\xd0\xb7\xd0\xb8\xd0\xb9_ \xd0\xb71\xd0\xb8\xd0\xbd\xd1\x82 \xd0\xb7\xd0\xb82\xd0\xbe\xd0\xb7 \xd0\xb7\xd0\xb82\xd0\xbe\xd0\xbd\xd0\xbe \xd0\xb7\xd0\xb81\xd0\xbe\xd0\xbf 3\xd0\xb7\xd0\xb8\xd1\x81 \xd0\xb7\xd0\xb83\xd1\x822\xd1\x80 \xd0\xb7\xd0\xb8\xd1\x833\xd0\xbc 3\xd0\xb7\xd0\xb8\xd1\x87 2\xd0\xb71\xd0\xba \xd0\xb7\xd0\xba\xd0\xbe1 \xd0\xb7\xd0\xba\xd0\xbe3\xd0\xbf2 \xd0\xb71\xd0\xbb \xd0\xb72\xd0\xbb\xd0\xb0\xd1\x89 \xd0\xb72\xd0\xbb\xd0\xbe\xd0\xb1 \xd0\xb72\xd0\xbb\xd0\xbe\xd0\xbf \xd0\xb72\xd0\xbb\xd0\xbe\xd1\x80 \xd0\xb72\xd0\xbb\xd1\x8e\xd1\x89 2\xd0\xb7\xd0\xbc2 \xd0\xb73\xd0\xbc\xd0\xbd \xd0\xb71\xd0\xbd 2\xd0\xb7\xd0\xbd\xd0\xb0_ \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xb2 \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xb5 \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xb9 \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xba \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xbd \xd0\xb72\xd0\xbd\xd0\xb0\xd1\x82 \xd0\xb72\xd0\xbd\xd0\xb0\xd1\x8e 2\xd0\xb7\xd0\xbd\xd0\xb0\xd1\x8f 2\xd0\xb7\xd0\xbd\xd0\xb5 2\xd0\xb73\xd0\xbd\xd0\xb8 2\xd0\xb7\xd0\xbd\xd0\xbe 2\xd0\xb7\xd0\xbd\xd1\x83 2\xd0\xb73\xd0\xbd\xd1\x8b \xd0\xb72\xd0\xbe\xd0\xb1\xd0\xb5 \xd0\xb7\xd0\xbe2\xd0\xb1\xd0\xb8 1\xd0\xb7\xd0\xbe\xd0\xb2 \xd0\xb7\xd0\xbe3\xd0\xb22\xd0\xbc \xd0\xb7\xd0\xbe2\xd0\xb3\xd0\xbb \xd0\xb7\xd0\xbe1\xd0\xb4\xd1\x80 1\xd0\xb7\xd0\xbe\xd0\xb5 \xd0\xb7\xd0\xbe1\xd0\xb72 1\xd0\xb7\xd0\xbe\xd0\xb8 1\xd0\xb7\xd0\xbe\xd0\xb9_ 1\xd0\xb7\xd0\xbe\xd0\xba_ \xd0\xb71\xd0\xbe\xd0\xba\xd1\x81 1\xd0\xb7\xd0\xbe\xd0\xbb2 \xd0\xb7\xd0\xbe1\xd0\xbb\xd0\xb3 \xd0\xb7\xd0\xbe1\xd0\xbb\xd0\xb6 \xd0\xb7\xd0\xbe3\xd0\xbc2 1\xd0\xb7\xd0\xbe\xd0\xbc_ 2\xd0\xb7\xd0\xbe\xd0\xbc\xd0\xbd 1\xd0\xb7\xd0\xbe\xd0\xbd 2\xd0\xb7\xd0\xbe\xd0\xbd\xd1\x80 1\xd0\xb7\xd0\xbe\xd0\xbe \xd0\xb7\xd0\xbe2\xd0\xbe3\xd0\xbf \xd0\xb7\xd0\xbe2\xd0\xbe\xd1\x81 \xd0\xb7\xd0\xbe2\xd0\xbf\xd0\xb0 \xd0\xb72\xd0\xbe\xd0\xbf\xd0\xbb \xd0\xb72\xd0\xbe\xd0\xbf\xd1\x80 \xd0\xb71\xd0\xbe\xd1\x80\xd0\xb3 1\xd0\xb72\xd0\xbe3\xd1\x80\xd0\xb5 \xd0\xb7\xd0\xbe\xd1\x812 \xd0\xb71\xd0\xbe\xd1\x81\xd0\xbd \xd0\xb7\xd0\xbe1\xd1\x81\xd0\xbf \xd0\xb7\xd0\xbe2\xd1\x82\xd0\xb2 \xd0\xb72\xd0\xbe\xd1\x82\xd0\xb5 \xd0\xb71\xd0\xbe\xd1\x82\xd0\xba \xd0\xb72\xd0\xbe\xd1\x82\xd0\xbe \xd0\xb7\xd0\xbe\xd1\x822\xd1\x80\xd0\xb5 \xd0\xb7\xd0\xbe\xd1\x822\xd1\x80\xd0\xb8 1\xd0\xb7\xd0\xbe\xd1\x85 \xd0\xb7\xd0\xbe\xd1\x882 \xd0\xb7\xd0\xbe2\xd1\x88\xd0\xb8 1\xd0\xb7\xd0\xbe\xd1\x8d 1\xd0\xb7\xd0\xbe\xd1\x8e \xd0\xb71\xd1\x80\xd0\xb0 \xd0\xb72\xd1\x80\xd0\xb0\xd0\xba \xd0\xb7\xd1\x80\xd0\xb02\xd1\x81 \xd0\xb72\xd1\x80\xd0\xb0\xd1\x87 \xd0\xb72\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb71\xd1\x80\xd0\xb5\xd1\x81 \xd0\xb72\xd1\x80\xd0\xb8\xd1\x88 \xd0\xb71\xd1\x80\xd0\xbe \xd0\xb7\xd1\x80\xd0\xbe2\xd1\x813 \xd0\xb71\xd1\x80\xd1\x83 \xd0\xb72\xd1\x80\xd1\x8e \xd0\xb71\xd1\x80\xd1\x8f 2\xd0\xb71\xd1\x81 2\xd0\xb7\xd1\x82 \xd0\xb71\xd1\x82\xd0\xb8 1\xd0\xb7\xd1\x83 3\xd0\xb7\xd1\x83_ 2\xd0\xb71\xd1\x832\xd0\xb1\xd0\xb5 \xd0\xb7\xd1\x832\xd0\xb13\xd1\x80 \xd0\xb7\xd1\x831\xd0\xb2 2\xd0\xb7\xd1\x83\xd0\xb2\xd0\xb5 2\xd0\xb7\xd1\x832\xd0\xb3 3\xd0\xb7\xd1\x83\xd0\xb5 2\xd0\xb71\xd1\x83\xd0\xb73 2\xd0\xb7\xd1\x831\xd0\xba 3\xd0\xb7\xd1\x83\xd0\xbc\xd0\xb5 \xd0\xb71\xd1\x832\xd0\xbc\xd0\xbe 2\xd0\xb7\xd1\x83\xd0\xbf \xd0\xb7\xd1\x832\xd0\xbf\xd1\x80 \xd0\xb71\xd1\x83\xd1\x80\xd0\xb1 \xd0\xb71\xd1\x832\xd1\x82\xd0\xb5 \xd0\xb7\xd1\x832\xd1\x87\xd0\xb0\xd1\x81 2\xd0\xb7\xd1\x86 \xd0\xb71\xd1\x87 2\xd0\xb7\xd1\x88 \xd0\xb7\xd1\x8a\xd0\xb52\xd0\xbc 1\xd0\xb7\xd1\x8b 2\xd0\xb7\xd1\x8b2\xd0\xb31 \xd0\xb7\xd1\x8b2\xd0\xb7 2\xd0\xb7\xd1\x8b\xd0\xbc\xd0\xb5 2\xd0\xb7\xd1\x8b\xd0\xbc\xd1\x87 2\xd0\xb7\xd1\x8b2\xd1\x811 2\xd0\xb7\xd1\x8b\xd1\x89 1\xd0\xb7\xd1\x8c\xd0\xb5 1\xd0\xb7\xd1\x8c\xd0\xb8 1\xd0\xb7\xd1\x8c\xd1\x8e 3\xd0\xb7\xd1\x8c\xd1\x8f 1\xd0\xb72\xd1\x8e 1\xd0\xb7\xd1\x8f \xd0\xb81\xd0\xb0 \xd0\xb82\xd0\xb0\xd0\xb1 \xd0\xb82\xd0\xb0\xd0\xb2 \xd0\xb8\xd0\xb0\xd0\xb32 \xd0\xb82\xd0\xb0\xd0\xb3\xd1\x80 \xd0\xb82\xd0\xb0\xd0\xb4\xd0\xb5 \xd0\xb82\xd0\xb0\xd0\xb4\xd0\xb8 \xd0\xb8\xd0\xb02\xd0\xb7\xd0\xbe\xd0\xb2 \xd0\xb8\xd0\xb02\xd0\xbc\xd1\x83 \xd0\xb83\xd0\xb0\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xb02\xd0\xbd\xd0\xb0\xd0\xbb \xd0\xb8\xd0\xb0\xd0\xbd\xd0\xb42 \xd0\xb8\xd0\xb0\xd0\xbe2 \xd0\xb82\xd0\xb0\xd0\xbf \xd0\xb8\xd0\xb01\xd1\x812\xd0\xba \xd0\xb8\xd0\xb01\xd1\x81\xd1\x82\xd0\xb0 \xd0\xb8\xd0\xb01\xd1\x81\xd1\x82\xd0\xbe \xd0\xb8\xd0\xb0\xd1\x821\xd1\x80\xd0\xbe \xd0\xb83\xd0\xb0\xd1\x82\xd1\x83 \xd0\xb82\xd0\xb0\xd1\x84 \xd0\xb82\xd0\xb01\xd1\x85 \xd0\xb8\xd0\xb02\xd1\x86\xd0\xb5 2\xd0\xb81\xd0\xb1 \xd0\xb82\xd0\xb11\xd1\x80 2\xd0\xb8\xd0\xb2\xd0\xb0\xd0\xb6 2\xd0\xb81\xd0\xb2\xd0\xb5 \xd0\xb82\xd0\xb23\xd0\xb7 \xd0\xb81\xd0\xb2\xd0\xb8 2\xd0\xb81\xd0\xb2\xd0\xbe \xd0\xb81\xd0\xb22\xd1\x80 \xd0\xb83\xd0\xb22\xd1\x81 \xd0\xb81\xd0\xb2\xd1\x83 \xd0\xb8\xd0\xb22\xd1\x85\xd0\xbe 2\xd0\xb8\xd0\xb2\xd1\x8b \xd0\xb8\xd0\xb32\xd0\xb4 \xd0\xb83\xd0\xb3\xd0\xb5 2\xd0\xb8\xd0\xb3\xd0\xbb \xd0\xb82\xd0\xb3\xd0\xbb\xd0\xb5 \xd0\xb82\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb82\xd0\xb3\xd0\xbd \xd0\xb8\xd0\xb3\xd0\xbd\xd0\xb83 \xd0\xb8\xd0\xb31\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb8\xd0\xb31\xd1\x80\xd0\xbe \xd0\xb8\xd0\xb31\xd1\x80\xd1\x83 \xd0\xb8\xd0\xb31\xd1\x80\xd1\x8b \xd0\xb82\xd0\xb31\xd1\x80\xd1\x8f \xd0\xb81\xd0\xb4\xd0\xb2 \xd0\xb82\xd0\xb4\xd0\xb5\xd0\xb9 \xd0\xb81\xd0\xb42\xd0\xb6 \xd0\xb8\xd0\xb4\xd0\xb81\xd0\xbe\xd0\xbc \xd0\xb8\xd0\xb4\xd0\xb81\xd0\xbe\xd1\x82 \xd0\xb8\xd0\xb41\xd1\x80 \xd0\xb81\xd0\xb4\xd1\x8c \xd0\xb81\xd0\xb5 \xd0\xb82\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xb8\xd0\xb52\xd0\xb3 \xd0\xb8\xd0\xb52\xd0\xb4 \xd0\xb8\xd0\xb53\xd0\xb4\xd0\xb5 \xd0\xb8\xd0\xb52\xd0\xb7\xd1\x83 \xd0\xb83\xd0\xb5\xd0\xbd\xd0\xb8 \xd0\xb8\xd0\xb51\xd0\xbe2 \xd0\xb8\xd0\xb5\xd0\xbf\xd0\xb81 \xd0\xb8\xd0\xb52\xd1\x80 \xd0\xb83\xd0\xb62\xd0\xb4 \xd0\xb8\xd0\xb71\xd0\xb22 \xd0\xb8\xd0\xb72\xd0\xb3\xd0\xbd\xd0\xb5 1\xd0\xb8\xd0\xb71\xd0\xb4 \xd0\xb8\xd0\xb72\xd0\xbd\xd0\xb0\xd0\xbb \xd0\xb81\xd0\xb7\xd0\xbe \xd0\xb8\xd0\xb7\xd0\xbe2\xd0\xbe \xd0\xb8\xd0\xb71\xd1\x80 \xd0\xb81\xd0\xb8 \xd0\xb8\xd0\xb9\xd1\x812 \xd0\xb81\xd0\xba \xd0\xb83\xd0\xba2\xd0\xb0 \xd0\xb8\xd0\xba\xd0\xb01\xd1\x812 \xd0\xb8\xd0\xba2\xd0\xb2\xd0\xb0 \xd0\xb82\xd0\xba\xd0\xb2\xd0\xb8 \xd0\xb82\xd0\xba\xd0\xbb\xd1\x8f \xd0\xb83\xd0\xba\xd0\xbe \xd0\xb8\xd0\xba1\xd1\x80\xd0\xbe \xd0\xb8\xd0\xba1\xd1\x81\xd0\xba \xd0\xb8\xd0\xba2\xd1\x811\xd1\x82 \xd0\xb83\xd0\xba\xd1\x83 \xd0\xb81\xd0\xbb \xd0\xb82\xd0\xbb1\xd0\xb02\xd1\x86 \xd0\xb8\xd0\xbb\xd0\xbe1\xd1\x81\xd0\xba \xd0\xb8\xd0\xbb\xd0\xbf2 \xd0\xb82\xd0\xbb1\xd1\x832\xd0\xbf \xd0\xb82\xd0\xbb\xd1\x8c \xd0\xb8\xd0\xbb\xd1\x8c\xd1\x822 2\xd0\xb8\xd0\xbc\xd0\xb0 \xd0\xb82\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xbe \xd0\xb82\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x83 2\xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x8c \xd0\xb83\xd0\xbc\xd0\xb8 \xd0\xb8\xd0\xbc\xd0\xbe\xd0\xb82 \xd0\xb8\xd0\xbc3\xd0\xbf\xd0\xbb \xd0\xb82\xd0\xbc1\xd1\x80 \xd0\xb82\xd0\xbc\xd1\x87 \xd0\xb8\xd0\xbc2\xd1\x87\xd0\xb0 \xd0\xb8\xd0\xbd\xd0\xb42 1\xd0\xb8\xd0\xbd\xd0\xb6 \xd0\xb8\xd0\xbd\xd0\xbe2\xd0\xba3\xd0\xbb \xd0\xb8\xd0\xbd\xd0\xbe3\xd0\xbf2\xd0\xbb \xd0\xb8\xd0\xbd\xd0\xbe1\xd1\x81 \xd0\xb8\xd0\xbd\xd1\x812 1\xd0\xb8\xd0\xbd\xd1\x81\xd0\xbf 1\xd0\xb8\xd0\xbd\xd1\x81\xd1\x82\xd0\xb8 1\xd0\xb8\xd0\xbd\xd1\x81\xd1\x83 1\xd0\xb8\xd0\xbd\xd1\x84 1\xd0\xb8\xd0\xbd\xd1\x8a \xd0\xb81\xd0\xbe\xd0\xb1 \xd0\xb8\xd0\xbe2\xd0\xb1\xd0\xbe \xd0\xb8\xd0\xbe2\xd0\xb2\xd1\x80 \xd0\xb82\xd0\xbe\xd0\xb3 \xd0\xb81\xd0\xbe\xd0\xb4 \xd0\xb8\xd0\xbe2\xd0\xb4\xd0\xb5 \xd0\xb81\xd0\xbe\xd0\xb7 \xd0\xb8\xd0\xbe3\xd0\xb7\xd0\xbe \xd0\xb81\xd0\xbe\xd0\xba\xd1\x81 \xd0\xb81\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xb81\xd0\xbe\xd0\xbd \xd0\xb83\xd0\xbe\xd0\xbd\xd0\xbe\xd0\xb2 \xd0\xb81\xd0\xbe\xd0\xbf\xd1\x82 \xd0\xb81\xd0\xbe\xd1\x80 \xd0\xb83\xd0\xbe\xd1\x80\xd0\xb0 \xd0\xb8\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xb8\xd0\xbe2\xd1\x81\xd0\xb0 \xd0\xb8\xd0\xbe3\xd1\x81\xd0\xba\xd0\xbb \xd0\xb8\xd0\xbe1\xd1\x812\xd0\xbf \xd0\xb81\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xb8\xd0\xbe2\xd1\x821\xd0\xb2 \xd0\xb81\xd0\xbe\xd1\x82\xd0\xba \xd0\xb81\xd0\xbe\xd1\x82\xd1\x81 \xd0\xb8\xd0\xbe\xd1\x83\xd0\xb32 \xd0\xb8\xd0\xbe2\xd1\x85\xd0\xbe \xd0\xb81\xd0\xbe\xd1\x88 2\xd0\xb8\xd0\xbf \xd0\xb8\xd0\xbf\xd0\xb0\xd1\x822 \xd0\xb8\xd0\xbf\xd0\xb01\xd1\x82\xd1\x80 \xd0\xb8\xd0\xbf2\xd0\xbb\xd1\x8f \xd0\xb8\xd0\xbf3\xd0\xbd \xd0\xb8\xd0\xbf\xd0\xbe3\xd0\xba2 \xd0\xb81\xd1\x80 \xd0\xb8\xd1\x80\xd0\xb02\xd1\x81\xd1\x82 \xd0\xb82\xd1\x801\xd0\xb0\xd1\x83 \xd0\xb82\xd1\x80\xd0\xb2 \xd0\xb82\xd1\x80\xd0\xb6 \xd0\xb8\xd1\x80\xd0\xb82\xd1\x81\xd0\xba \xd0\xb8\xd1\x80\xd0\xb8\xd1\x833 \xd0\xb8\xd1\x80\xd0\xbe1\xd0\xb72 1\xd0\xb8\xd1\x80\xd1\x80 \xd0\xb8\xd1\x81\xd0\xb0\xd0\xbd2\xd0\xb41 \xd0\xb82\xd1\x81\xd0\xb1 \xd0\xb82\xd1\x81\xd0\xb4 \xd0\xb8\xd1\x811\xd0\xba \xd0\xb8\xd1\x813\xd0\xba\xd0\xb0_ \xd0\xb8\xd1\x813\xd0\xba\xd0\xb0\xd0\xbc \xd0\xb8\xd1\x813\xd0\xba\xd0\xb0\xd1\x85 \xd0\xb8\xd1\x813\xd0\xba\xd0\xb5 \xd0\xb8\xd1\x813\xd0\xba\xd0\xb8 \xd0\xb8\xd1\x813\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xb8\xd1\x813\xd0\xba\xd1\x83_ \xd0\xb82\xd1\x81\xd0\xbb\xd0\xb0\xd0\xbc \xd0\xb8\xd1\x811\xd0\xbb\xd1\x8b \xd0\xb8\xd1\x813\xd0\xbc\xd0\xb5 \xd0\xb8\xd1\x813\xd0\xbc\xd1\x83 \xd0\xb8\xd1\x813\xd0\xbd\xd0\xbe \xd0\xb8\xd1\x81\xd0\xbe2\xd1\x81\xd0\xba \xd0\xb82\xd1\x813\xd0\xbf\xd1\x80 \xd0\xb84\xd1\x81\xd1\x81 \xd0\xb81\xd1\x81\xd1\x82 \xd0\xb82\xd1\x81\xd1\x821\xd0\xb2 \xd0\xb82\xd1\x81\xd1\x82\xd0\xbb \xd0\xb8\xd1\x811\xd1\x82\xd1\x8f\xd0\xb7 \xd0\xb81\xd1\x81\xd1\x8c\xd0\xb8 \xd0\xb81\xd1\x82 \xd0\xb8\xd1\x82\xd0\xb02\xd0\xb2 \xd0\xb8\xd1\x823\xd0\xb2\xd0\xb0 \xd0\xb82\xd1\x821\xd0\xb2\xd0\xb5 \xd0\xb8\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xb8\xd1\x821\xd0\xb2\xd1\x83 \xd0\xb82\xd1\x82\xd0\xbc \xd0\xb82\xd1\x821\xd1\x80 \xd0\xb8\xd1\x822\xd1\x80\xd0\xb5\xd1\x81 \xd0\xb8\xd1\x823\xd1\x80\xd0\xbe\xd0\xbc \xd0\xb82\xd1\x821\xd1\x83\xd1\x87 \xd0\xb83\xd1\x82\xd1\x8c\xd1\x8e \xd0\xb83\xd1\x82\xd1\x8c\xd1\x8f \xd0\xb81\xd1\x832 \xd0\xb8\xd1\x833\xd0\xbf \xd0\xb8\xd1\x841\xd0\xbb \xd0\xb8\xd1\x842\xd0\xbb\xd1\x8e \xd0\xb82\xd1\x84\xd1\x80 \xd0\xb8\xd1\x85\xd0\xb03\xd0\xb4 \xd0\xb82\xd1\x851\xd0\xb0\xd1\x81 \xd0\xb8\xd1\x852\xd0\xbb\xd0\xbe2 \xd0\xb8\xd1\x85\xd0\xbb\xd0\xbe\xd1\x801 \xd0\xb83\xd1\x852\xd0\xbe \xd0\xb8\xd1\x85\xd0\xbe3\xd0\xba \xd0\xb8\xd1\x851\xd1\x80\xd0\xb5 \xd0\xb8\xd1\x851\xd1\x80\xd0\xb8 \xd0\xb81\xd1\x85\xd1\x83 \xd0\xb81\xd1\x87 \xd0\xb8\xd1\x882\xd0\xbb\xd0\xb8 \xd0\xb82\xd1\x88\xd0\xbb\xd1\x8b \xd0\xb82\xd1\x88\xd1\x82 \xd0\xb8\xd1\x8e4\xd0\xbb \xd0\xb8\xd1\x8e2\xd0\xbd \xd0\xb8\xd1\x8e2\xd1\x82 \xd0\xb8\xd1\x8e3\xd1\x82\xd0\xb0 \xd0\xb81\xd1\x8f \xd0\xb8\xd1\x8f2\xd0\xb4 2\xd0\xb91 \xd0\xb9\xd0\xb42 \xd0\xb92\xd0\xb43\xd0\xb2 \xd0\xb9\xd0\xbd\xd0\xbe1 \xd0\xb92\xd0\xbe1\xd1\x81 \xd0\xb9\xd0\xbe2\xd1\x82\xd1\x80 \xd0\xb9\xd0\xbf2\xd0\xbb \xd0\xb92\xd1\x81\xd0\xb1 \xd0\xb93\xd1\x81\xd0\xba\xd0\xb0 \xd0\xb9\xd1\x812\xd0\xba\xd0\xb5 \xd0\xb9\xd1\x814\xd0\xbc\xd0\xbe \xd0\xb92\xd1\x813\xd0\xbc\xd1\x83 \xd0\xb92\xd1\x81\xd0\xbd \xd0\xb92\xd1\x813\xd1\x84 \xd0\xb92\xd1\x81\xd1\x88 \xd0\xb92\xd1\x82\xd0\xbc \xd0\xb92\xd1\x85\xd0\xbc \xd0\xb9\xd1\x852\xd1\x813 \xd0\xb9\xd1\x8f1 \xd0\xba\xd0\xb02\xd0\xb1\xd0\xbb \xd0\xba\xd0\xb02\xd0\xb1\xd1\x80\xd0\xb8 1\xd0\xba\xd0\xb0\xd0\xb2 \xd0\xba2\xd0\xb0\xd0\xb4 \xd0\xba\xd0\xb03\xd0\xb4\xd0\xbd\xd0\xb5 \xd0\xba\xd0\xb02\xd0\xb41\xd1\x80 1\xd0\xba\xd0\xb0\xd0\xb5 \xd0\xba\xd0\xb0\xd0\xb73\xd0\xbd \xd0\xba\xd0\xb01\xd0\xb7\xd0\xbe 1\xd0\xba\xd0\xb0\xd0\xb9 1\xd0\xba\xd0\xb0\xd0\xbb_ 1\xd0\xba\xd0\xb0\xd0\xbb\xd0\xbe 1\xd0\xba\xd0\xb0\xd0\xbb\xd1\x81 1\xd0\xba\xd0\xb0\xd0\xbc 1\xd0\xba\xd0\xb0\xd0\xbd \xd0\xba\xd0\xb02\xd0\xbf1\xd0\xbb \xd0\xba\xd0\xb02\xd0\xbf\xd1\x80\xd0\xb5 \xd0\xba\xd0\xb0\xd1\x803\xd1\x82\xd1\x80 3\xd0\xba2\xd0\xb0\xd1\x81 \xd0\xba\xd0\xb01\xd1\x81\xd1\x82 1\xd0\xba\xd0\xb0\xd1\x82 \xd0\xba\xd0\xb01\xd1\x822\xd1\x80 1\xd0\xba\xd0\xb0\xd1\x85 \xd0\xba\xd0\xb02\xd1\x881\xd1\x82 1\xd0\xba\xd0\xb0\xd1\x8e 2\xd0\xba1\xd0\xb1 \xd0\xba2\xd0\xb2\xd0\xb0\xd0\xba \xd0\xba2\xd0\xb2\xd0\xb0\xd1\x81 \xd0\xba2\xd0\xb2\xd0\xb0\xd1\x88 \xd0\xba1\xd0\xb2\xd0\xb8 \xd0\xba2\xd0\xb2\xd0\xbe\xd0\xb7 \xd0\xba1\xd0\xb2\xd1\x83 2\xd0\xba\xd0\xb3 2\xd0\xba1\xd0\xb4 \xd0\xba\xd0\xb4\xd0\xb02 1\xd0\xba\xd0\xb5 2\xd0\xba\xd0\xb5\xd0\xb0 \xd0\xba\xd0\xb52\xd0\xb3\xd0\xbb \xd0\xba\xd0\xb5\xd0\xb41\xd1\x80 \xd0\xba\xd0\xb52\xd1\x811\xd0\xba \xd0\xba\xd0\xb52\xd1\x81\xd1\x821 2\xd0\xba1\xd0\xb7 1\xd0\xba\xd0\xb8\xd0\xb2 \xd0\xba\xd0\xb81\xd0\xbe \xd0\xba\xd0\xb8\xd0\xbe\xd1\x811 \xd0\xba\xd0\xb82\xd0\xbf\xd0\xbb \xd0\xba\xd0\xb81\xd1\x812\xd0\xbd\xd0\xb8 1\xd0\xba\xd0\xb8\xd1\x82 2\xd0\xba1\xd0\xba2 \xd0\xba\xd0\xba3\xd1\x81 2\xd0\xba3\xd0\xbb\xd0\xb0_ 2\xd0\xba3\xd0\xbb\xd0\xb0\xd1\x81\xd1\x8c 2\xd0\xba3\xd0\xbb\xd0\xb5_ 2\xd0\xba\xd0\xbb\xd0\xb5\xd0\xbc \xd0\xba3\xd0\xbb\xd0\xb5\xd0\xbc_ \xd0\xba3\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xba1\xd0\xbb\xd0\xb5\xd0\xbe 2\xd0\xba3\xd0\xbb\xd0\xb8_ 2\xd0\xba3\xd0\xbb\xd0\xb8\xd0\xb2 \xd0\xba2\xd0\xbb\xd0\xb8\xd0\xba \xd0\xba2\xd0\xbb\xd0\xb8\xd0\xbd 2\xd0\xba3\xd0\xbb\xd0\xb8\xd1\x81 \xd0\xba3\xd0\xbb\xd0\xb8\xd1\x8f 2\xd0\xba3\xd0\xbb\xd0\xbe_ \xd0\xba2\xd0\xbb\xd0\xbe\xd0\xb7 \xd0\xba3\xd0\xbb\xd0\xbe\xd0\xbc 2\xd0\xba3\xd0\xbb\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbb\xd0\xbe3\xd1\x82 1\xd0\xba\xd0\xbb\xd1\x83\xd0\xba \xd0\xba3\xd0\xbb\xd1\x8b 2\xd0\xba\xd0\xbb\xd1\x8c 1\xd0\xba\xd0\xbb\xd1\x8e 2\xd0\xba3\xd0\xbb\xd1\x8e_ 2\xd0\xba\xd0\xbb\xd1\x8f_ 2\xd0\xba\xd0\xbb\xd1\x8f\xd0\xbc 2\xd0\xba\xd0\xbb\xd1\x8f\xd1\x85 2\xd0\xba\xd0\xbc 2\xd0\xba1\xd0\xbd 3\xd0\xba2\xd0\xbd\xd0\xb8\xd0\xb6 \xd0\xba2\xd0\xbd\xd0\xbe\xd0\xbf 3\xd0\xba2\xd0\xbd\xd1\x8f\xd0\xb6 \xd0\xba2\xd0\xbe \xd0\xba\xd0\xbe1\xd0\xb12\xd1\x80\xd0\xb8 1\xd0\xba\xd0\xbe\xd0\xb2 3\xd0\xba\xd0\xbe\xd0\xb2\xd0\xb0 1\xd0\xba\xd0\xbe\xd0\xb4 \xd0\xba\xd0\xbe1\xd0\xb4\xd1\x80 1\xd0\xba\xd0\xbe\xd0\xb7 1\xd0\xba\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x81 2\xd0\xba\xd0\xbe\xd0\xbc\xd0\xb8\xd0\xbd 3\xd0\xba\xd0\xbe\xd0\xbd\xd1\x81 \xd0\xba\xd0\xbe\xd0\xbf2\xd1\x80 \xd0\xba\xd0\xbe2\xd1\x803\xd0\xb2 \xd0\xba\xd0\xbe1\xd1\x80\xd1\x83 1\xd0\xba\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbe1\xd1\x81\xd0\xba \xd0\xba\xd0\xbe\xd1\x813\xd0\xbc \xd0\xba\xd0\xbe1\xd1\x81\xd0\xbf 1\xd0\xba\xd0\xbe\xd1\x82\xd0\xbd \xd0\xba\xd0\xbe2\xd1\x84\xd1\x80 \xd0\xba\xd0\xbe\xd1\x85\xd0\xbe2\xd1\x803 1\xd0\xba\xd0\xbe\xd1\x88 2\xd0\xba\xd0\xbf 2\xd0\xba\xd1\x80_ \xd0\xba1\xd1\x80\xd0\xb5\xd0\xbb \xd0\xba\xd1\x80\xd0\xb51\xd0\xbe \xd0\xba\xd1\x80\xd0\xb52\xd1\x81\xd0\xbb \xd0\xba1\xd1\x80\xd0\xb5\xd1\x87 1\xd0\xba\xd1\x80\xd0\xb8\xd0\xb1 \xd0\xba1\xd1\x80\xd0\xb8\xd0\xb4 \xd0\xba2\xd1\x80\xd0\xb8\xd0\xb7 \xd0\xba\xd1\x80\xd0\xb82\xd0\xbe3 \xd0\xba2\xd1\x80\xd0\xb8\xd1\x82 \xd0\xba1\xd1\x80\xd0\xb8\xd1\x85 \xd0\xba1\xd1\x80\xd0\xbe\xd0\xb0 \xd0\xba1\xd1\x80\xd0\xbe\xd0\xb1 \xd0\xba2\xd1\x80\xd0\xbe\xd0\xb5 \xd0\xba1\xd1\x80\xd0\xbe\xd0\xba \xd0\xba1\xd1\x80\xd0\xbe\xd0\xbe \xd0\xba1\xd1\x80\xd0\xbe\xd1\x80 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x81 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x84 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x85 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x8d \xd0\xba\xd1\x80\xd1\x831\xd1\x81 \xd0\xba1\xd1\x80\xd1\x8f\xd0\xb4 2\xd0\xba\xd1\x81 \xd0\xba\xd1\x81\xd0\xb0\xd0\xbd\xd0\xb42 \xd0\xba2\xd1\x813\xd0\xb2 \xd0\xba\xd1\x813\xd0\xb3 \xd0\xba2\xd1\x813\xd0\xb4 \xd0\xba2\xd1\x81\xd0\xb8\xd0\xb1 \xd0\xba1\xd1\x81\xd0\xba\xd0\xb8 \xd0\xba\xd1\x811\xd0\xba\xd0\xbb \xd0\xba1\xd1\x81\xd0\xba\xd0\xbe \xd0\xba\xd1\x813\xd0\xbc \xd0\xba3\xd1\x81\xd0\xbe \xd0\xba1\xd1\x81\xd1\x82\xd0\xb0\xd0\xbc \xd0\xba1\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd \xd0\xba\xd1\x813\xd1\x82\xd0\xb5 \xd0\xba1\xd1\x81\xd1\x82\xd0\xbe \xd0\xba\xd1\x811\xd1\x82\xd1\x80 \xd0\xba1\xd1\x81\xd1\x82\xd1\x83 \xd0\xba3\xd1\x81\xd1\x83 2\xd0\xba1\xd1\x82 \xd0\xba\xd1\x82\xd0\xb02\xd0\xba 3\xd0\xba2\xd1\x82\xd0\xbe_ \xd0\xba\xd1\x82\xd0\xbe1\xd1\x81 \xd0\xba\xd1\x822\xd1\x80 \xd0\xba2\xd1\x83 \xd0\xba\xd1\x831\xd0\xb2\xd0\xb5 3\xd0\xba\xd1\x83\xd0\xb5 1\xd0\xba\xd1\x83\xd0\xb9 1\xd0\xba\xd1\x83\xd0\xbb\xd1\x8f 3\xd0\xba\xd1\x83\xd0\xbc \xd0\xba\xd1\x83\xd0\xbf1\xd0\xbb \xd0\xba\xd1\x832\xd0\xbf1\xd1\x80 1\xd0\xba\xd1\x83\xd1\x80 \xd0\xba\xd1\x833\xd1\x80\xd0\xbe \xd0\xba\xd1\x83\xd1\x811\xd0\xba \xd0\xba\xd1\x831\xd1\x81\xd1\x82 1\xd0\xba\xd1\x83\xd1\x82 \xd0\xba\xd1\x833\xd1\x82\xd1\x8c 1\xd0\xba\xd1\x83\xd1\x87\xd0\xb5 1\xd0\xba\xd1\x83\xd1\x8e\xd1\x82 3\xd0\xba\xd1\x83\xd1\x8e\xd1\x89 2\xd0\xba\xd1\x84 2\xd0\xba1\xd1\x852 2\xd0\xba\xd1\x86 2\xd0\xba1\xd1\x87 2\xd0\xba\xd1\x88 1\xd0\xba\xd1\x8c \xd0\xba2\xd1\x8e 1\xd0\xbb\xd0\xb0_ 2\xd0\xbb\xd0\xb0\xd0\xb1\xd0\xb5 \xd0\xbb\xd0\xb02\xd0\xb1\xd0\xbb 2\xd0\xbb\xd0\xb0\xd0\xb3\xd0\xbe \xd0\xbb\xd0\xb02\xd0\xb3\xd1\x80 \xd0\xbb\xd0\xb02\xd0\xb41\xd0\xb0\xd0\xb3 1\xd0\xbb\xd0\xb0\xd0\xb5 \xd0\xbb\xd0\xb03\xd0\xb62\xd0\xb4 \xd0\xbb\xd0\xb01\xd0\xb7\xd0\xbe \xd0\xbb2\xd0\xb0\xd0\xba \xd0\xbb\xd0\xb0\xd0\xba2\xd1\x80 1\xd0\xbb\xd0\xb0\xd0\xbc_ 1\xd0\xbb\xd0\xb0\xd0\xbc\xd0\xb8_ \xd0\xbb\xd0\xb0\xd0\xbd2\xd0\xb41\xd1\x80 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd0\xb0 \xd0\xbb\xd0\xb0\xd1\x81\xd1\x821\xd0\xb2 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd0\xb5 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd0\xbe \xd0\xbb\xd0\xb02\xd1\x81\xd1\x821\xd1\x80 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd1\x83 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd1\x8f \xd0\xbb\xd0\xb01\xd1\x822\xd1\x80 \xd0\xbb\xd0\xb0\xd1\x831 \xd0\xbb\xd0\xb02\xd1\x83\xd1\x81 \xd0\xbb\xd0\xb02\xd1\x84\xd1\x80 1\xd0\xbb\xd0\xb01\xd1\x85 1\xd0\xbb\xd0\xb0\xd1\x8f 2\xd0\xbb\xd0\xb1 \xd0\xbb1\xd0\xb1\xd1\x80 \xd0\xbb1\xd0\xb2\xd0\xb5 \xd0\xbb1\xd0\xb2\xd0\xb8 \xd0\xbb1\xd0\xb2\xd0\xbe \xd0\xbb1\xd0\xb2\xd1\x83 1\xd0\xbb2\xd0\xb3\xd0\xb0\xd0\xbb \xd0\xbb2\xd0\xb3\xd0\xbb \xd0\xbb\xd0\xb3\xd0\xbe1 2\xd0\xbb3\xd0\xb42 1\xd0\xbb\xd0\xb5_ \xd0\xbb\xd0\xb51\xd0\xb2\xd0\xbb \xd0\xbb\xd0\xb5\xd0\xb21\xd1\x80\xd0\xb0 \xd0\xbb\xd0\xb52\xd0\xb31\xd0\xbb \xd0\xbb\xd0\xb51\xd0\xb4\xd0\xb6 \xd0\xbb\xd0\xb53\xd0\xb4\xd0\xbe \xd0\xbb\xd0\xb51\xd0\xb72\xd0\xbe3 \xd0\xbb\xd0\xb51\xd0\xb7\xd1\x80 \xd0\xbb\xd0\xb5\xd0\xba1\xd0\xbb 2\xd0\xbb\xd0\xb5\xd0\xbc\xd0\xbd 1\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xbb\xd0\xb51\xd0\xbe\xd0\xbd\xd1\x82 \xd0\xbb\xd0\xb51\xd0\xbe2\xd1\x81 \xd0\xbb\xd0\xb52\xd1\x81\xd0\xb1 \xd0\xbb\xd0\xb52\xd1\x81\xd0\xba \xd0\xbb\xd0\xb54\xd1\x81\xd0\xba\xd0\xb0 \xd0\xbb\xd0\xb51\xd1\x812\xd0\xbb \xd0\xbb\xd0\xb51\xd1\x81\xd0\xbf\xd0\xb5 \xd0\xbb\xd0\xb51\xd1\x82\xd0\xb2 \xd0\xbb\xd0\xb51\xd1\x822\xd1\x80 1\xd0\xbb\xd0\xb5\xd1\x85 \xd0\xbb\xd0\xb51\xd1\x85\xd1\x80 \xd0\xbb1\xd0\xb7\xd0\xbe 1\xd0\xbb\xd0\xb8 \xd0\xbb\xd0\xb8\xd0\xb02\xd0\xbc 3\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xbe 3\xd0\xbb\xd0\xb8\xd0\xb2\xd1\x8b \xd0\xbb\xd0\xb8\xd0\xb32\xd0\xbb \xd0\xbb\xd0\xb82\xd0\xb3\xd1\x80\xd0\xbe \xd0\xbb\xd0\xb8\xd0\xb53\xd1\x80 \xd0\xbb\xd0\xb82\xd0\xba\xd0\xb2 2\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xbf \xd0\xbb\xd0\xb8\xd0\xbe1\xd1\x81 \xd0\xbb\xd0\xb82\xd0\xbf\xd0\xbb \xd0\xbb\xd0\xb8\xd1\x813\xd0\xbc 2\xd0\xbb1\xd0\xb8\xd1\x81\xd0\xbf \xd0\xbb\xd0\xb82\xd1\x82\xd0\xb2 \xd0\xbb\xd0\xb8\xd1\x833\xd0\xbc \xd0\xbb\xd0\xb82\xd1\x853\xd0\xb2 \xd0\xbb\xd0\xb81\xd1\x85\xd0\xbb \xd0\xbb\xd0\xb81\xd1\x85\xd1\x80 2\xd0\xbb1\xd0\xba \xd0\xbb\xd0\xba2\xd0\xb2 \xd0\xbb2\xd0\xba1\xd0\xbb 2\xd0\xbb1\xd0\xbb \xd0\xbb2\xd0\xbb\xd1\x8c \xd0\xbb\xd0\xbb\xd1\x8e1 2\xd0\xbb\xd0\xbc 2\xd0\xbb1\xd0\xbd \xd0\xbb\xd0\xbd\xd0\xb82\xd0\xb5 1\xd0\xbb\xd0\xbe \xd0\xbb\xd0\xbe2\xd0\xb1\xd0\xbb \xd0\xbb\xd0\xbe1\xd0\xb12\xd1\x80 2\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd1\x8f \xd0\xbb\xd0\xbe2\xd0\xb2\xd0\xbb 3\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xbb\xd0\xbe2\xd0\xb33\xd0\xb4 \xd0\xbb\xd0\xbe\xd0\xb3\xd0\xbe1\xd1\x81 \xd0\xbb\xd0\xbe1\xd0\xb4\xd1\x80 2\xd0\xbb\xd0\xbe\xd0\xb5\xd0\xbd \xd0\xbb\xd0\xbe1\xd0\xb7\xd0\xb2 \xd0\xbb\xd0\xbe2\xd0\xba1\xd0\xb02\xd1\x83 \xd0\xbb\xd0\xbe2\xd0\xba\xd0\xbb \xd0\xbb\xd0\xbe\xd0\xba3\xd0\xbb\xd0\xb0 3\xd0\xbb\xd0\xbe\xd0\xbf\xd0\xb0\xd1\x81 \xd0\xbb\xd0\xbe2\xd1\x80\xd0\xb2 2\xd0\xbb1\xd0\xbe\xd1\x80\xd0\xb3 \xd0\xbb\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbb\xd0\xbe\xd1\x811\xd0\xba \xd0\xbb\xd0\xbe1\xd1\x812\xd0\xbf 2\xd0\xbb\xd0\xbe\xd1\x82\xd0\xb4 \xd0\xbb\xd0\xbe\xd1\x822\xd1\x80 \xd0\xbb\xd0\xbe2\xd1\x88\xd0\xbb 2\xd0\xbb\xd0\xbf 2\xd0\xbb1\xd1\x812 \xd0\xbb\xd1\x813\xd0\xb1 \xd0\xbb1\xd1\x82 1\xd0\xbb\xd1\x83_ \xd0\xbb\xd1\x831\xd0\xb1\xd1\x80 \xd0\xbb\xd1\x831\xd0\xb2 \xd0\xbb\xd1\x833\xd0\xb3 \xd0\xbb\xd1\x831\xd0\xb44\xd1\x80 1\xd0\xbb\xd1\x83\xd0\xb5 \xd0\xbb\xd1\x831\xd0\xb7\xd0\xbd \xd0\xbb\xd1\x831\xd0\xba\xd1\x80 1\xd0\xbb\xd1\x83\xd0\xbd \xd0\xbb\xd1\x83\xd0\xbe2\xd0\xb4 \xd0\xbb\xd1\x833\xd0\xbf2\xd0\xbb\xd0\xbe \xd0\xbb\xd1\x831\xd1\x81 \xd0\xbb\xd1\x833\xd1\x82\xd1\x8c 1\xd0\xbb\xd1\x83\xd1\x8e 2\xd0\xbb3\xd1\x842 2\xd0\xbb1\xd1\x852 \xd0\xbb2\xd1\x853\xd0\xb2 2\xd0\xbb\xd1\x86 \xd0\xbb1\xd1\x87 1\xd0\xbb\xd1\x8b_ 1\xd0\xbb\xd1\x8b\xd0\xb5 1\xd0\xbb\xd1\x8b\xd0\xb6 1\xd0\xbb\xd1\x8b\xd0\xb9 1\xd0\xbb\xd1\x8b\xd0\xbc 1\xd0\xbb\xd1\x8b\xd1\x85_ 4\xd0\xbb\xd1\x8c_ 2\xd0\xbb\xd1\x8c\xd0\xb4 3\xd0\xbb\xd1\x8c\xd0\xb5 3\xd0\xbb\xd1\x8c\xd0\xb8 2\xd0\xbb\xd1\x8c\xd0\xba 2\xd0\xbb\xd1\x8c\xd0\xbc 2\xd0\xbb\xd1\x8c\xd0\xbd 3\xd0\xbb\xd1\x8c\xd0\xbe 2\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba 1\xd0\xbb\xd1\x8c\xd1\x81\xd1\x82\xd0\xb8 1\xd0\xbb\xd1\x8c\xd1\x81\xd1\x82\xd1\x8f 2\xd0\xbb\xd1\x8c\xd1\x82 2\xd0\xbb\xd1\x8c\xd1\x86 2\xd0\xbb\xd1\x8c\xd1\x87 1\xd0\xbb\xd1\x8c\xd1\x89\xd0\xb0 1\xd0\xbb\xd1\x8c\xd1\x89\xd0\xb5 1\xd0\xbb\xd1\x8c\xd1\x89\xd1\x83 3\xd0\xbb\xd1\x8c\xd1\x8e 3\xd0\xbb\xd1\x8c\xd1\x8f \xd0\xbb2\xd1\x8e 1\xd0\xbb\xd1\x8e_ 1\xd0\xbb\xd1\x8e\xd0\xb6 1\xd0\xbb\xd1\x8e\xd1\x81\xd1\x8c \xd0\xbb\xd1\x8e1\xd1\x82\xd0\xb0 1\xd0\xbb\xd1\x8f 3\xd0\xbb\xd1\x8f_ \xd0\xbb\xd1\x8f1\xd0\xb2\xd0\xb8 3\xd0\xbb\xd1\x8f\xd0\xb2\xd0\xbe 3\xd0\xbb\xd1\x8f\xd0\xb2\xd1\x8b 2\xd0\xbb\xd1\x8f\xd0\xb4 3\xd0\xbb\xd1\x8f\xd0\xbc \xd0\xbb\xd1\x8f1\xd1\x80\xd0\xb5 \xd0\xbb\xd1\x8f1\xd1\x80\xd1\x83 3\xd0\xbb\xd1\x8f\xd1\x85 1\xd0\xbc \xd0\xbc\xd0\xb02\xd0\xb2\xd0\xb7 3\xd0\xbc\xd0\xb0\xd0\xb3 \xd0\xbc\xd0\xb02\xd0\xb3\xd0\xbd \xd0\xbc\xd0\xb02\xd0\xb4\xd1\x80 \xd0\xbc\xd0\xb02\xd0\xb4\xd1\x8c \xd0\xbc\xd0\xb01\xd0\xb7\xd0\xbe \xd0\xbc\xd0\xb02\xd0\xba1\xd1\x80 2\xd0\xbc1\xd0\xb0\xd0\xbb\xd0\xbb \xd0\xbc\xd0\xb0\xd0\xbd2\xd0\xb41\xd1\x80 \xd0\xbc\xd0\xb0\xd1\x813\xd0\xbb \xd0\xbc\xd0\xb01\xd1\x814\xd1\x82 \xd0\xbc\xd0\xb02\xd1\x82\xd0\xbe\xd0\xb1 \xd0\xbc\xd0\xb02\xd1\x821\xd1\x80 \xd0\xbc\xd0\xb02\xd1\x83 \xd0\xbc\xd0\xb0\xd1\x842 3\xd0\xbc\xd0\xb0\xd1\x87 \xd0\xbc\xd0\xb02\xd1\x87\xd1\x82 4\xd0\xbc1\xd0\xb1 \xd0\xbc3\xd0\xb1\xd0\xb8 \xd0\xbc\xd0\xb12\xd0\xbb \xd0\xbc3\xd0\xb1\xd0\xbb\xd1\x8f 2\xd0\xbc3\xd0\xb22 2\xd0\xbc\xd0\xb32 3\xd0\xbc2\xd0\xb3\xd0\xbb 2\xd0\xbc1\xd0\xb4 \xd0\xbc\xd0\xb5\xd0\xb0\xd0\xbd2 \xd0\xbc\xd0\xb52\xd0\xb5\xd0\xb3 \xd0\xbc\xd0\xb52\xd0\xb5\xd0\xbb \xd0\xbc\xd0\xb52\xd0\xb61\xd0\xb0\xd1\x82 \xd0\xbc\xd0\xb51\xd0\xb7\xd0\xbe \xd0\xbc\xd0\xb52\xd1\x811\xd0\xba \xd0\xbc\xd0\xb52\xd1\x81\xd1\x821\xd1\x80 \xd0\xbc\xd0\xb5\xd1\x871\xd1\x82 2\xd0\xbc\xd0\xb6 2\xd0\xbc1\xd0\xb72 \xd0\xbc\xd0\xb82\xd0\xb3\xd1\x80\xd0\xb5 \xd0\xbc\xd0\xb81\xd0\xb7\xd0\xb2 2\xd0\xbc\xd0\xb8\xd0\xb7\xd0\xb4 \xd0\xbc\xd0\xb81\xd0\xb7\xd0\xbd \xd0\xbc\xd0\xb82\xd0\xba\xd1\x80 \xd0\xbc\xd0\xb8\xd0\xba1\xd1\x80\xd0\xb8 \xd0\xbc\xd0\xb82\xd0\xbe\xd0\xb7 \xd0\xbc\xd0\xb81\xd0\xbe\xd0\xbf\xd0\xb8 \xd0\xbc\xd0\xb82\xd0\xbe\xd1\x80 \xd0\xbc\xd0\xb81\xd1\x812\xd0\xbb 2\xd0\xbc1\xd0\xba2 3\xd0\xbc\xd0\xba\xd0\xbd 2\xd0\xbc1\xd0\xbb \xd0\xbc2\xd0\xbb\xd0\xb5\xd0\xb5 \xd0\xbc2\xd0\xbb\xd0\xb5\xd0\xbb 2\xd0\xbc\xd0\xbc 2\xd0\xbc1\xd0\xbd 4\xd0\xbc3\xd0\xbd\xd0\xb0 \xd0\xbc\xd0\xbd\xd0\xb51\xd0\xb4 3\xd0\xbc2\xd0\xbd\xd0\xb5\xd1\x88 4\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xbc2\xd0\xbd\xd0\xbe\xd0\xb6 4\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xb9 4\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbc \xd0\xbc2\xd0\xbd\xd0\xbe\xd1\x80 4\xd0\xbc\xd0\xbd\xd0\xbe\xd1\x8e \xd0\xbc2\xd0\xbd\xd1\x83\xd1\x82 4\xd0\xbc3\xd0\xbd\xd1\x8b \xd0\xbc\xd0\xbe1\xd0\xb12 \xd0\xbc\xd0\xbe3\xd0\xb2\xd0\xbb 3\xd0\xbc\xd0\xbe\xd0\xb4 \xd0\xbc\xd0\xbe1\xd0\xb4\xd1\x80 \xd0\xbc\xd0\xbe2\xd0\xb6\xd0\xb6 \xd0\xbc\xd0\xbe1\xd0\xb7\xd0\xb2 \xd0\xbc\xd0\xbe1\xd0\xb7\xd1\x80 \xd0\xbc\xd0\xbe\xd0\xb8\xd1\x811\xd1\x82 \xd0\xbc\xd0\xbe2\xd0\xba3\xd0\xb2 \xd0\xbc\xd0\xbe3\xd0\xbc2 3\xd0\xbc\xd0\xbe\xd0\xbd 3\xd0\xbc\xd0\xbe\xd0\xbf \xd0\xbc\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbc\xd0\xbe\xd1\x811\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xbe1\xd1\x81\xd0\xbc \xd0\xbc\xd0\xbe1\xd1\x81\xd0\xbd \xd0\xbc\xd0\xbe1\xd1\x812\xd0\xbf 3\xd0\xbc\xd0\xbe\xd1\x82\xd0\xb8 \xd0\xbc\xd0\xbe2\xd1\x821\xd1\x80 3\xd0\xbc\xd0\xbe\xd1\x84 2\xd0\xbc\xd0\xbf \xd0\xbc\xd0\xbf2\xd0\xbb \xd0\xbc1\xd1\x80\xd0\xb0\xd0\xb1 2\xd0\xbc\xd1\x80\xd0\xb8 2\xd0\xbc1\xd1\x80\xd0\xbe \xd0\xbc1\xd1\x80\xd1\x8b 2\xd0\xbc1\xd1\x81 \xd0\xbc\xd1\x812\xd0\xba \xd0\xbc\xd1\x812\xd0\xbd \xd0\xbc2\xd1\x811\xd0\xbe\xd1\x80 3\xd0\xbc2\xd1\x81\xd1\x82\xd0\xb8 2\xd0\xbc1\xd1\x82 \xd0\xbc\xd1\x831\xd1\x812\xd0\xba \xd0\xbc\xd1\x831\xd1\x814\xd0\xbb \xd0\xbc\xd1\x831\xd1\x81\xd1\x82 \xd0\xbc\xd1\x83\xd1\x821\xd1\x80 \xd0\xbc\xd1\x833\xd1\x82\xd1\x8c 2\xd0\xbc\xd1\x84 \xd0\xbc\xd1\x84\xd0\xb83 2\xd0\xbc1\xd1\x85 2\xd0\xbc\xd1\x86 \xd0\xbc2\xd1\x87\xd0\xb0\xd0\xb2 \xd0\xbc2\xd1\x87\xd0\xb0\xd0\xbb \xd0\xbc2\xd1\x87\xd0\xb8\xd1\x82 \xd0\xbc2\xd1\x87\xd0\xb8\xd1\x88 2\xd0\xbc\xd1\x882 2\xd0\xbc\xd1\x89 3\xd0\xbc2\xd1\x89\xd0\xb5 \xd0\xbc\xd1\x8b\xd0\xbc1 \xd0\xbc\xd1\x8b2\xd0\xbc\xd1\x80 \xd0\xbc\xd1\x8b2\xd1\x81 2\xd0\xbc\xd1\x8c_ 2\xd0\xbc\xd1\x8c\xd1\x81 \xd0\xbc\xd1\x8c\xd1\x8e1 2\xd0\xbc\xd1\x8d \xd0\xbc\xd1\x8d1\xd1\x80 \xd0\xbc2\xd1\x8e \xd0\xbc\xd1\x8f1\xd1\x80 \xd0\xbc\xd1\x8f1\xd1\x81\xd1\x82 1\xd0\xbd\xd0\xb0 \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xb81\xd0\xbe \xd0\xbd\xd0\xb0\xd0\xb12\xd1\x80 \xd0\xbd\xd0\xb01\xd0\xb22\xd1\x80 \xd0\xbd\xd0\xb0\xd0\xb32\xd0\xbd \xd0\xbd\xd0\xb03\xd0\xb6\xd0\xb4 \xd0\xbd\xd0\xb01\xd0\xb72 \xd0\xbd\xd0\xb02\xd0\xb8\xd0\xbb \xd0\xbd\xd0\xb02\xd0\xb8\xd0\xbd \xd0\xbd\xd0\xb02\xd0\xb81\xd1\x812 4\xd0\xbd\xd0\xb0\xd0\xba\xd0\xba \xd0\xbd\xd0\xb03\xd0\xbc2\xd0\xbd \xd0\xbd\xd0\xb0\xd0\xbf2\xd0\xbb \xd0\xbd\xd0\xb01\xd1\x80\xd0\xb2\xd0\xb0 \xd0\xbd\xd0\xb01\xd1\x802\xd0\xb2\xd0\xb8 \xd0\xbd\xd0\xb01\xd1\x812 \xd0\xbd\xd0\xb01\xd1\x82\xd0\xb2 \xd0\xbd\xd0\xb01\xd1\x822\xd1\x80 \xd0\xbd1\xd0\xb02\xd1\x84\xd1\x80 \xd0\xbd\xd0\xb01\xd1\x852 2\xd0\xbd\xd0\xb0\xd1\x87 \xd0\xbd\xd0\xb03\xd1\x882\xd0\xbb 2\xd0\xbd\xd0\xb0\xd1\x89 \xd0\xbd\xd0\xb0\xd1\x8d1\xd1\x80 3\xd0\xbd\xd0\xb0\xd1\x8f 2\xd0\xbd1\xd0\xb12 2\xd0\xbd1\xd0\xb2 2\xd0\xbd\xd0\xb3 \xd0\xbd2\xd0\xb31\xd0\xb2 \xd0\xbd\xd0\xb3\xd0\xb82\xd0\xbe \xd0\xbd\xd0\xb34\xd0\xbb \xd0\xbd\xd0\xb3\xd0\xbe1\xd1\x81 \xd0\xbd\xd0\xb32\xd1\x80 2\xd0\xbd1\xd0\xb4 \xd0\xbd2\xd0\xb4\xd0\xb0\xd0\xba \xd0\xbd2\xd0\xb41\xd0\xb2 \xd0\xbd\xd0\xb4\xd0\xb53\xd0\xb7 \xd0\xbd\xd0\xb4\xd0\xb52\xd1\x81 \xd0\xbd\xd0\xb42\xd0\xb6 \xd0\xbd3\xd0\xb42\xd0\xb7 \xd0\xbd2\xd0\xb4\xd0\xbb \xd0\xbd\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb3 \xd0\xbd\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb6 \xd0\xbd\xd0\xb42\xd1\x80\xd0\xb5 \xd0\xbd\xd0\xb42\xd1\x80\xd0\xb8\xd0\xb0 \xd0\xbd2\xd0\xb4\xd1\x80\xd1\x8f \xd0\xbd\xd0\xb42\xd1\x81\xd0\xbf \xd0\xbd2\xd0\xb4\xd1\x86 1\xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb51\xd0\xb12 \xd0\xbd\xd0\xb51\xd0\xb22\xd0\xb4 2\xd0\xbd\xd0\xb5\xd0\xb2\xd0\xbd \xd0\xbd\xd0\xb53\xd0\xb2\xd0\xbd\xd1\x8f \xd0\xbd\xd0\xb5\xd0\xb32 3\xd0\xbd\xd0\xb5\xd0\xb4 \xd0\xbd\xd0\xb51\xd0\xb42\xd0\xbb \xd0\xbd\xd0\xb5\xd0\xb42\xd0\xbe \xd0\xbd\xd0\xb52\xd0\xb4\xd1\x80\xd0\xb0 \xd0\xbd\xd0\xb51\xd0\xb4\xd1\x80\xd0\xbe \xd0\xbd\xd0\xb53\xd0\xb4\xd1\x83 \xd0\xbd\xd0\xb53\xd0\xb5 \xd0\xbd\xd0\xb5\xd0\xb52\xd0\xb4 \xd0\xbd\xd0\xb53\xd0\xb62\xd0\xb4 \xd0\xbd\xd0\xb51\xd0\xb7\xd0\xb2 \xd0\xbd\xd0\xb51\xd0\xb72\xd0\xbb \xd0\xbd\xd0\xb51\xd0\xb7\xd0\xbd \xd0\xbd\xd0\xb51\xd0\xb7\xd0\xbe \xd0\xbd\xd0\xb51\xd0\xb7\xd1\x80 \xd0\xbd\xd0\xb5\xd0\xb82 \xd0\xbd\xd0\xb51\xd0\xba2\xd0\xb2 \xd0\xbd\xd0\xb51\xd0\xba\xd0\xbb \xd0\xbd\xd0\xb53\xd0\xbc2\xd0\xbd 3\xd0\xbd\xd0\xb51\xd0\xbe2 \xd0\xbd\xd0\xb52\xd0\xbe\xd0\xb4\xd0\xb0 \xd0\xbd\xd0\xb52\xd0\xbe\xd0\xbb \xd0\xbd\xd0\xb53\xd0\xbf2 \xd0\xbd\xd0\xb51\xd1\x802\xd0\xb6 \xd0\xbd\xd0\xb52\xd1\x801\xd0\xbe\xd1\x82 \xd0\xbd\xd0\xb5\xd1\x812\xd0\xba \xd0\xbd\xd0\xb53\xd1\x812\xd0\xbd \xd0\xbd\xd0\xb51\xd1\x812\xd0\xbf \xd0\xbd\xd0\xb5\xd1\x81\xd1\x822 \xd0\xbd\xd0\xb51\xd1\x812\xd1\x85 \xd0\xbd\xd0\xb51\xd1\x812\xd1\x87 \xd0\xbd\xd0\xb51\xd1\x822\xd0\xb2 \xd0\xbd\xd0\xb53\xd1\x822\xd0\xbb \xd0\xbd\xd0\xb51\xd1\x822\xd1\x80 3\xd0\xbd\xd0\xb5\xd1\x83 \xd0\xbd\xd0\xb52\xd1\x84\xd1\x80 \xd0\xbd\xd0\xb51\xd1\x85\xd1\x80 \xd0\xbd\xd0\xb53\xd1\x88\xd0\xba \xd0\xbd\xd0\xb5\xd1\x8f2 2\xd0\xbd1\xd0\xb72 \xd0\xbd\xd0\xb7\xd0\xbe1\xd1\x81 1\xd0\xbd\xd0\xb8 \xd0\xbd\xd0\xb83\xd0\xb12 \xd0\xbd\xd0\xb82\xd0\xb5\xd0\xbd 3\xd0\xbd\xd0\xb8\xd0\xb9 \xd0\xbd\xd0\xb82\xd0\xba\xd0\xbb \xd0\xbd\xd0\xb8\xd0\xbb\xd0\xb02 \xd0\xbd\xd0\xb82\xd0\xbb1\xd0\xb0\xd0\xbb \xd0\xbd\xd0\xb82\xd0\xbb1\xd0\xb0\xd0\xbc 2\xd0\xbd\xd0\xb8\xd0\xbd\xd1\x81\xd0\xbf 2\xd0\xbd1\xd0\xb8\xd0\xbd\xd1\x81\xd1\x82 \xd0\xbd\xd0\xb81\xd1\x81\xd0\xbb \xd0\xbd\xd0\xb8\xd1\x813\xd0\xbf \xd0\xbd\xd0\xb8\xd1\x81\xd1\x822\xd1\x80 \xd0\xbd\xd0\xb8\xd1\x833 \xd0\xbd\xd0\xb81\xd1\x85 3\xd0\xbd\xd0\xb8\xd1\x86 3\xd0\xbd\xd0\xb8\xd1\x89 2\xd0\xbd1\xd0\xba \xd0\xbd\xd0\xba2\xd0\xb2 \xd0\xbd\xd0\xba2\xd0\xbb \xd0\xbd\xd0\xba\xd0\xbe\xd0\xb12 \xd0\xbd\xd0\xba\xd0\xbe3\xd0\xbf2 \xd0\xbd2\xd0\xba1\xd1\x80\xd0\xbe \xd0\xbd\xd0\xba1\xd1\x81 \xd0\xbd1\xd0\xbb 2\xd0\xbd1\xd0\xbd \xd0\xbd\xd0\xbd\xd0\xbe3\xd0\xbf2 1\xd0\xbd\xd0\xbe \xd0\xbd\xd0\xbe\xd0\xb12 \xd0\xbd\xd0\xbe1\xd0\xb1\xd1\x80 \xd0\xbd\xd0\xbe2\xd0\xb2\xd0\xbb \xd0\xbd\xd0\xbe1\xd0\xb4\xd0\xb2 \xd0\xbd\xd0\xbe1\xd0\xb4\xd1\x80 \xd0\xbd\xd0\xbe2\xd0\xb5\xd1\x80 \xd0\xbd\xd0\xbe1\xd0\xb7\xd0\xb2 \xd0\xbd\xd0\xbe2\xd0\xb7\xd0\xb4 \xd0\xbd\xd0\xbe3\xd0\xb72\xd0\xbe \xd0\xbd\xd0\xbe1\xd0\xb7\xd1\x80 \xd0\xbd\xd0\xbe3\xd0\xba\xd0\xbd 3\xd0\xbd\xd0\xbe\xd0\xbc\xd0\xb5 \xd0\xbd\xd0\xbe\xd0\xbc3\xd1\x88 \xd0\xbd\xd0\xbe2\xd1\x80\xd0\xb2 \xd0\xbd\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbd\xd0\xbe1\xd1\x81\xd0\xba\xd0\xbb \xd0\xbd\xd0\xbe2\xd1\x81\xd0\xbb\xd0\xb8 \xd0\xbd\xd0\xbe1\xd1\x812\xd0\xbf \xd0\xbd\xd0\xbe2\xd1\x81\xd1\x87 2\xd0\xbd\xd0\xbe\xd1\x82\xd0\xb4 \xd0\xbd\xd0\xbe3\xd1\x842 \xd0\xbd\xd0\xbe\xd1\x8d2 \xd0\xbd3\xd0\xbf2 2\xd0\xbd1\xd1\x80\xd0\xb5 2\xd0\xbd1\xd1\x80\xd0\xb8 \xd0\xbd1\xd1\x80\xd0\xbe 2\xd0\xbd1\xd1\x81 \xd0\xbd2\xd1\x813\xd0\xb2 \xd0\xbd2\xd1\x81\xd0\xb3 \xd0\xbd\xd1\x812\xd0\xba\xd0\xb5 \xd0\xbd2\xd1\x81\xd0\xba\xd0\xbe\xd0\xbd \xd0\xbd2\xd1\x81\xd0\xbb \xd0\xbd3\xd1\x81\xd0\xbb\xd0\xb0 \xd0\xbd2\xd1\x813\xd0\xbc \xd0\xbd2\xd1\x81\xd0\xbd \xd0\xbd2\xd1\x811\xd0\xbe\xd0\xba \xd0\xbd3\xd1\x812\xd0\xbf\xd0\xb5 \xd0\xbd\xd1\x81\xd1\x822\xd1\x80 \xd0\xbd\xd1\x81\xd1\x832\xd1\x80 \xd0\xbd2\xd1\x813\xd1\x84 \xd0\xbd2\xd1\x81\xd1\x8a3 2\xd0\xbd1\xd1\x82 \xd0\xbd2\xd1\x821\xd0\xb2 \xd0\xbd\xd1\x82\xd0\xb81\xd0\xbe2\xd0\xba \xd0\xbd2\xd1\x82\xd0\xbc \xd0\xbd\xd1\x822\xd1\x80\xd0\xb0 \xd0\xbd2\xd1\x82\xd1\x801\xd0\xb02\xd0\xb3 \xd0\xbd\xd1\x82\xd1\x801\xd0\xb0\xd0\xb6 \xd0\xbd2\xd1\x82\xd1\x80\xd0\xb0\xd1\x80 \xd0\xbd\xd1\x82\xd1\x80\xd0\xb0\xd1\x812 \xd0\xbd\xd1\x822\xd1\x80\xd0\xb5 \xd0\xbd2\xd1\x82\xd1\x80\xd0\xb8\xd0\xb2 \xd0\xbd2\xd1\x82\xd1\x80\xd0\xbe\xd0\xba \xd0\xbd\xd1\x822\xd1\x80\xd1\x83 \xd0\xbd\xd1\x82\xd1\x801\xd1\x83\xd0\xb4 \xd0\xbd\xd1\x822\xd1\x80\xd1\x8b \xd0\xbd2\xd1\x821\xd1\x80\xd1\x8f 1\xd0\xbd\xd1\x83 \xd0\xbd\xd1\x83\xd1\x821\xd1\x80 \xd0\xbd\xd1\x831\xd1\x85 3\xd0\xbd\xd1\x83\xd1\x8e 2\xd0\xbd\xd1\x842 \xd0\xbd1\xd1\x85 \xd0\xbd\xd1\x85\xd0\xbe1 2\xd0\xbd\xd1\x86 2\xd0\xbd1\xd1\x87 \xd0\xbd2\xd1\x87\xd0\xbb 2\xd0\xbd\xd1\x88 \xd0\xbd\xd1\x882\xd1\x82 2\xd0\xbd\xd1\x89 1\xd0\xbd\xd1\x8b 3\xd0\xbd\xd1\x8b_ 2\xd0\xbd\xd1\x8c_ 1\xd0\xbd\xd1\x8c\xd0\xb5 1\xd0\xbd\xd1\x8c\xd0\xb8 2\xd0\xbd\xd1\x8c\xd0\xba 1\xd0\xbd\xd1\x8c\xd0\xbe 2\xd0\xbd\xd1\x8c\xd1\x81 2\xd0\xbd\xd1\x8c\xd1\x82 2\xd0\xbd\xd1\x8c\xd1\x87 1\xd0\xbd\xd1\x8c\xd1\x8e 1\xd0\xbd\xd1\x8c\xd1\x8f \xd0\xbd2\xd1\x8d 1\xd0\xbd2\xd1\x8e 2\xd0\xbd3\xd1\x8e2\xd1\x80 1\xd0\xbd\xd1\x8f \xd0\xbd\xd1\x8f1\xd0\xb2\xd0\xb8 2\xd0\xbe1\xd0\xb02 \xd0\xbe3\xd0\xb0\xd0\xb2 \xd0\xbe\xd0\xb0\xd0\xbf1 2\xd0\xbe\xd0\xb1\xd0\xb0 2\xd0\xbe\xd0\xb1\xd0\xb8\xd0\xbe \xd0\xbe\xd0\xb12\xd0\xbb\xd0\xb5\xd0\xb2 \xd0\xbe\xd0\xb12\xd0\xbb\xd0\xb5\xd0\xbc \xd0\xbe1\xd0\xb1\xd0\xbb\xd1\x8e 1\xd0\xbe\xd0\xb1\xd0\xbc \xd0\xbe\xd0\xb1\xd0\xbe1\xd0\xbb2\xd0\xb3 \xd0\xbe\xd0\xb1\xd0\xbe3\xd0\xbc2 \xd0\xbe\xd0\xb1\xd0\xbe2\xd1\x81 2\xd0\xbe\xd0\xb1\xd0\xbe\xd1\x82 \xd0\xbe\xd0\xb11\xd1\x80 \xd0\xbe2\xd0\xb1\xd1\x80\xd0\xb0_ \xd0\xbe1\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb2 \xd0\xbe1\xd0\xb1\xd1\x80\xd0\xb0\xd0\xbd 1\xd0\xbe\xd0\xb1\xd1\x8a 2\xd0\xbe\xd0\xb1\xd1\x8c \xd0\xbe1\xd0\xb2 \xd0\xbe3\xd0\xb2\xd0\xbb\xd0\xb0 \xd0\xbe3\xd0\xb22\xd0\xbb\xd0\xbe \xd0\xbe\xd0\xb23\xd0\xbd\xd0\xbe \xd0\xbe3\xd0\xb22\xd0\xbd\xd1\x83\xd1\x88 \xd0\xbe2\xd0\xb21\xd1\x80\xd0\xb8 \xd0\xbe\xd0\xb22\xd1\x81\xd0\xb5 \xd0\xbe\xd0\xb23\xd1\x81\xd0\xba\xd0\xbe \xd0\xbe\xd0\xb22\xd1\x82 \xd0\xbe2\xd0\xb2\xd1\x85 \xd0\xbe\xd0\xb32 2\xd0\xbe3\xd0\xb3\xd0\xb5 \xd0\xbe\xd0\xb33\xd0\xbb\xd0\xb0_ \xd0\xbe\xd0\xb33\xd0\xbb\xd0\xb8_ \xd0\xbe\xd0\xb33\xd0\xbb\xd0\xbe_ \xd0\xbe3\xd0\xb3\xd1\x80\xd1\x8f 2\xd0\xbe\xd0\xb4\xd0\xb0\xd0\xbd \xd0\xbe\xd0\xb41\xd0\xb2\xd0\xbe\xd0\xb5 \xd0\xbe3\xd0\xb4\xd0\xb5_ 1\xd0\xbe2\xd0\xb4\xd0\xb5\xd1\x8f\xd0\xbb 2\xd0\xbe\xd0\xb4\xd0\xb83\xd0\xb0 2\xd0\xbe3\xd0\xb4\xd0\xb8\xd0\xbc \xd0\xbe\xd0\xb42\xd0\xbb\xd0\xb8\xd1\x82 \xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xbf\xd0\xb5 \xd0\xbe\xd0\xb4\xd0\xbe3\xd0\xbf\xd1\x80 \xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xbf\xd1\x8b \xd0\xbe2\xd0\xb4\xd0\xbe\xd1\x81\xd0\xb8 \xd0\xbe2\xd0\xb41\xd0\xbe\xd1\x82\xd1\x87 \xd0\xbe1\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb3 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb6 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb7 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xb0\xd0\xba \xd0\xbe1\xd0\xb4\xd1\x80\xd0\xb0\xd0\xbb \xd0\xbe\xd0\xb43\xd1\x80\xd0\xb5\xd0\xb1 \xd0\xbe1\xd0\xb4\xd1\x80\xd0\xbe\xd0\xb1 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xbe\xd0\xb2 \xd0\xbe2\xd0\xb41\xd1\x832\xd1\x87 \xd0\xbe2\xd0\xb4\xd1\x8b\xd0\xbc\xd0\xb0 \xd0\xbe2\xd0\xb4\xd1\x8b\xd0\xbc\xd1\x83 \xd0\xbe2\xd0\xb4\xd1\x8b\xd0\xbd \xd0\xbe1\xd0\xb4\xd1\x8c \xd0\xbe2\xd0\xb4\xd1\x8c\xd0\xb1 \xd0\xbe1\xd0\xb5 \xd0\xbe\xd0\xb51\xd0\xb1 \xd0\xbe2\xd0\xb51\xd0\xb2\xd0\xbb \xd0\xbe\xd0\xb52\xd0\xb4 \xd0\xbe3\xd0\xb5\xd0\xb6\xd0\xb5\xd0\xba \xd0\xbe\xd0\xb52\xd0\xb6\xd0\xb8 \xd0\xbe\xd0\xb51\xd0\xbe \xd0\xbe\xd0\xb51\xd1\x812 \xd0\xbe\xd0\xb52\xd1\x81\xd1\x82 \xd0\xbe2\xd0\xb5\xd1\x82\xd0\xbe \xd0\xbe\xd0\xb52\xd1\x86 \xd0\xbe3\xd0\xb6\xd0\xb4\xd0\xb8 \xd0\xbe3\xd0\xb62\xd0\xb4\xd1\x83 \xd0\xbe\xd0\xb7\xd0\xb02\xd0\xb13\xd0\xb2 2\xd0\xbe\xd0\xb7\xd0\xb0\xd0\xb2 \xd0\xbe1\xd0\xb72\xd0\xb2\xd0\xb0 \xd0\xbe\xd0\xb72\xd0\xb2\xd0\xb5\xd0\xbd \xd0\xbe\xd0\xb72\xd0\xb2\xd0\xb8 \xd0\xbe1\xd0\xb72\xd0\xb2\xd1\x8f \xd0\xbe\xd0\xb72\xd0\xb3\xd0\xbb\xd0\xbe \xd0\xbe\xd0\xb72\xd0\xb4\xd0\xbe\xd1\x80 \xd0\xbe1\xd0\xb7\xd0\xb4\xd1\x80 \xd0\xbe\xd0\xb7\xd0\xb51\xd0\xbe \xd0\xbe\xd0\xb73\xd0\xbd\xd0\xbe \xd0\xbe1\xd0\xb7\xd0\xbe \xd0\xbe2\xd0\xb71\xd0\xbe\xd0\xb1 2\xd0\xbe\xd0\xb7\xd0\xbe\xd0\xbd \xd0\xbe2\xd0\xb7\xd0\xbe\xd0\xbf \xd0\xbe\xd0\xb7\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbe\xd0\xb71\xd1\x83\xd0\xb3 \xd0\xbe2\xd0\xb7\xd1\x8b\xd0\xbc \xd0\xbe3\xd0\xb7\xd1\x8b\xd1\x81 \xd0\xbe3\xd0\xb8 \xd0\xbe\xd0\xb82\xd0\xb31 \xd0\xbe\xd0\xb8\xd0\xb32\xd0\xbd \xd0\xbe\xd0\xb8\xd0\xb53 \xd0\xbe\xd0\xb82\xd0\xb7 \xd0\xbe\xd0\xb82\xd0\xbc \xd0\xbe\xd0\xb83\xd0\xbc\xd0\xbe \xd0\xbe\xd0\xb82\xd0\xbe 2\xd0\xbe\xd0\xb9 \xd0\xbe\xd0\xb9\xd1\x812 \xd0\xbe1\xd0\xba 2\xd0\xbe3\xd0\xba\xd0\xb0\xd0\xbd \xd0\xbe\xd0\xba2\xd0\xb2 2\xd0\xbe\xd0\xba2\xd0\xbb \xd0\xbe3\xd0\xba\xd0\xbb\xd1\x8e \xd0\xbe\xd0\xba\xd0\xbe1\xd0\xb1 2\xd0\xbe3\xd0\xba\xd0\xbe\xd0\xbb \xd0\xbe\xd0\xba\xd0\xbe3\xd0\xbf2\xd0\xbb \xd0\xbe\xd0\xba1\xd1\x81\xd0\xba 1\xd0\xbe\xd0\xba\xd1\x82 2\xd0\xbe\xd0\xba\xd1\x82\xd0\xb8 2\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc \xd0\xbe3\xd0\xbb\xd0\xb0 \xd0\xbe\xd0\xbb2\xd0\xb3\xd0\xb0\xd0\xbd \xd0\xbe1\xd0\xbb\xd0\xb5 1\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xbf \xd0\xbe3\xd0\xbb\xd0\xbe \xd0\xbe1\xd0\xbb\xd1\x83 \xd0\xbe\xd0\xbb\xd1\x833\xd0\xb42 \xd0\xbe1\xd0\xbb\xd1\x8b \xd0\xbe1\xd0\xbb\xd1\x8e \xd0\xbe3\xd0\xbb\xd1\x8f \xd0\xbe3\xd0\xbc\xd0\xb0 \xd0\xbe\xd0\xbc2\xd0\xb1\xd0\xbb 2\xd0\xbe\xd0\xbc\xd0\xb5 \xd0\xbe3\xd0\xbc2\xd0\xbd\xd0\xb5\xd0\xbc \xd0\xbe3\xd0\xbc2\xd0\xbd\xd0\xb5\xd1\x82 \xd0\xbe3\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xb6 \xd0\xbe\xd0\xbc1\xd1\x80\xd0\xb8 \xd0\xbe\xd0\xbc2\xd1\x87 \xd0\xbe\xd0\xbc2\xd1\x88\xd0\xb5 \xd0\xbe2\xd0\xbc\xd1\x8c \xd0\xbe3\xd0\xbc\xd1\x8c\xd1\x8f \xd0\xbe3\xd0\xbd\xd0\xb0 \xd0\xbe\xd0\xbd\xd0\xb42 \xd0\xbe\xd0\xbd\xd0\xb53\xd1\x842 \xd0\xbe\xd0\xbd\xd0\xbe1\xd0\xb1 \xd0\xbe1\xd0\xbd\xd1\x80 \xd0\xbe\xd0\xbd\xd1\x812 \xd0\xbe\xd0\xbd2\xd1\x82\xd1\x80\xd1\x83 \xd0\xbe1\xd0\xbe2 \xd0\xbe2\xd0\xbe\xd0\xbb \xd0\xbe\xd0\xbe3\xd0\xbf\xd1\x81 \xd0\xbe\xd0\xbe\xd1\x813\xd0\xbc \xd0\xbe\xd0\xbe\xd1\x81\xd1\x821\xd1\x80 \xd0\xbe2\xd0\xbe\xd1\x82\xd0\xb8 \xd0\xbe2\xd0\xbe\xd1\x84 \xd0\xbe3\xd0\xbf\xd0\xb0\xd0\xba \xd0\xbe3\xd0\xbf\xd0\xb0\xd1\x80 \xd0\xbe2\xd0\xbf\xd0\xbb\xd0\xb5_ \xd0\xbe2\xd0\xbf1\xd0\xbb\xd0\xb5\xd0\xb9 \xd0\xbe2\xd0\xbf\xd0\xbb\xd0\xb8 \xd0\xbe\xd0\xbf2\xd0\xbb\xd0\xb8\xd1\x82 \xd0\xbe\xd0\xbf2\xd0\xbb\xd0\xbe \xd0\xbe\xd0\xbf3\xd0\xbb\xd1\x8e_ \xd0\xbe2\xd0\xbf\xd0\xbb\xd1\x8f \xd0\xbe3\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x81 \xd0\xbe\xd0\xbf\xd0\xbe4\xd0\xb2\xd1\x81 \xd0\xbe\xd0\xbf\xd0\xbe\xd0\xb72\xd0\xbd \xd0\xbe\xd0\xbf\xd0\xbe2\xd1\x883\xd0\xbb \xd0\xbe\xd0\xbf2\xd1\x80\xd0\xb8 \xd0\xbe3\xd0\xbf2\xd1\x82\xd0\xb5 \xd0\xbe\xd0\xbf2\xd1\x82\xd0\xbe \xd0\xbe1\xd1\x80\xd0\xb0 \xd0\xbe\xd1\x80\xd0\xb02\xd1\x813 \xd0\xbe\xd1\x802\xd0\xb13\xd0\xbb \xd0\xbe1\xd1\x802\xd0\xb2 \xd0\xbe1\xd1\x80\xd0\xb5 2\xd0\xbe3\xd1\x80\xd0\xb5\xd0\xb3 \xd0\xbe\xd1\x80\xd0\xb52\xd1\x81\xd0\xba \xd0\xbe1\xd1\x80\xd0\xb8 \xd0\xbe\xd1\x801\xd0\xb8\xd1\x81\xd0\xbf \xd0\xbe1\xd1\x80\xd0\xbe \xd0\xbe\xd1\x80\xd0\xbe2\xd1\x813\xd0\xbb \xd0\xbe\xd1\x802\xd1\x82\xd1\x80 \xd0\xbe1\xd1\x80\xd1\x83\xd0\xb5 \xd0\xbe1\xd1\x80\xd1\x83\xd0\xba \xd0\xbe\xd1\x801\xd1\x83\xd0\xba\xd1\x81 \xd0\xbe1\xd1\x80\xd1\x83\xd1\x81 2\xd0\xbe\xd1\x80\xd1\x86 \xd0\xbe1\xd1\x80\xd1\x8b \xd0\xbe1\xd1\x80\xd1\x8e \xd0\xbe1\xd1\x80\xd1\x8f \xd0\xbe3\xd1\x81\xd0\xb0\xd0\xb4 \xd0\xbe\xd1\x81\xd0\xb03\xd0\xb62 \xd0\xbe\xd1\x812\xd0\xb1 \xd0\xbe2\xd1\x813\xd0\xb1\xd0\xb0 \xd0\xbe2\xd1\x811\xd0\xba\xd0\xb0_ \xd0\xbe\xd1\x813\xd0\xba\xd0\xb0\xd1\x80 \xd0\xbe\xd1\x81\xd0\xba1\xd0\xb2\xd0\xbe \xd0\xbe2\xd1\x81\xd0\xba\xd0\xb5 \xd0\xbe\xd1\x811\xd0\xba\xd0\xb8 \xd0\xbe2\xd1\x81\xd0\xba\xd0\xb8_ \xd0\xbe2\xd1\x81\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe\xd1\x811\xd0\xba\xd0\xbe\xd0\xb9 \xd0\xbe\xd1\x811\xd0\xba\xd0\xbe\xd0\xbc \xd0\xbe1\xd1\x812\xd0\xba\xd0\xbe\xd0\xbf \xd0\xbe\xd1\x811\xd0\xba\xd0\xbe\xd1\x8e \xd0\xbe2\xd1\x811\xd0\xba\xd1\x83_ \xd0\xbe\xd1\x811\xd0\xba\xd1\x83\xd1\x8e \xd0\xbe1\xd1\x812\xd0\xbb \xd0\xbe\xd1\x813\xd0\xbb\xd0\xb5\xd0\xb9 \xd0\xbe\xd1\x813\xd0\xbb\xd0\xbe\xd0\xb3 \xd0\xbe\xd1\x813\xd0\xbb\xd1\x8b\xd1\x85 \xd0\xbe\xd1\x813\xd0\xbc\xd0\xb8 \xd0\xbe\xd1\x813\xd0\xbc\xd0\xbe\xd1\x81 \xd0\xbe1\xd1\x812\xd0\xbd\xd0\xb8\xd0\xbc \xd0\xbe\xd1\x812\xd0\xbd\xd1\x8f\xd0\xbb \xd0\xbe\xd1\x812\xd0\xbf\xd0\xb0\xd1\x81 \xd0\xbe1\xd1\x812\xd0\xbf\xd1\x83 \xd0\xbe\xd1\x812\xd0\xbf\xd1\x8f \xd0\xbe\xd1\x812\xd1\x81\xd0\xb2 \xd0\xbe\xd1\x812\xd1\x813\xd0\xbc \xd0\xbe1\xd1\x81\xd1\x82 \xd0\xbe\xd1\x812\xd1\x82\xd0\xb0 \xd0\xbe3\xd1\x81\xd1\x82\xd1\x80\xd0\xb0 \xd0\xbe2\xd1\x81\xd1\x83\xd1\x87 2\xd0\xbe\xd1\x81\xd1\x85 \xd0\xbe\xd1\x812\xd1\x86\xd0\xb5\xd0\xbd \xd0\xbe1\xd1\x812\xd1\x87 \xd0\xbe1\xd1\x812\xd1\x88\xd0\xb8\xd0\xb2 \xd0\xbe1\xd1\x82 \xd0\xbe\xd1\x82\xd0\xb22 \xd0\xbe\xd1\x823\xd0\xb2\xd0\xb0 \xd0\xbe\xd1\x821\xd0\xb2\xd0\xb5 \xd0\xbe\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xbe\xd1\x821\xd0\xb2\xd0\xbb 1\xd0\xbe\xd1\x82\xd0\xb3 1\xd0\xbe\xd1\x82\xd0\xb4 2\xd0\xbe3\xd1\x82\xd0\xb5\xd0\xba \xd0\xbe3\xd1\x82\xd0\xb5\xd1\x80 2\xd0\xbe3\xd1\x82\xd0\xb5\xd1\x85 \xd0\xbe3\xd1\x82\xd0\xb8 \xd0\xbe3\xd1\x82\xd0\xba\xd0\xb0\xd0\xbb \xd0\xbe2\xd1\x82\xd0\xbc \xd0\xbe\xd1\x821\xd1\x80\xd0\xb0\xd0\xb1 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb0\xd0\xb4 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb0\xd0\xb7 \xd0\xbe\xd1\x82\xd1\x80\xd0\xb02\xd1\x81 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd0\xb6 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd0\xba \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd1\x87 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd1\x88 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb8 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd0\xb4 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd0\xb5 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd0\xba \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd1\x81 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd1\x87 \xd0\xbe\xd1\x821\xd1\x80\xd1\x83\xd0\xb3 \xd0\xbe\xd1\x823\xd1\x81\xd0\xbc \xd0\xbe\xd1\x82\xd1\x832\xd0\xb0 \xd0\xbe\xd1\x821\xd1\x832\xd1\x87 1\xd0\xbe\xd1\x82\xd1\x85 \xd0\xbe3\xd1\x82\xd1\x8c\xd1\x8e \xd0\xbe3\xd1\x82\xd1\x8c\xd1\x8f \xd0\xbe1\xd1\x832 \xd0\xbe\xd1\x83\xd0\xbf2 \xd0\xbe\xd1\x83\xd1\x812\xd0\xba \xd0\xbe\xd1\x833\xd1\x82\xd0\xb0 \xd0\xbe\xd1\x833\xd1\x82\xd0\xbe 2\xd0\xbe\xd1\x84\xd0\xb0\xd1\x88 \xd0\xbe3\xd1\x84\xd0\xb5 2\xd0\xbe\xd1\x84\xd0\xb8\xd1\x82 2\xd0\xbe\xd1\x84\xd0\xbe\xd0\xbd \xd0\xbe2\xd1\x84\xd0\xbe\xd1\x80\xd0\xb8 2\xd0\xbe\xd1\x84\xd0\xbe\xd1\x82 \xd0\xbe2\xd1\x84\xd1\x80\xd0\xb8 2\xd0\xbe\xd1\x85\xd0\xb8 \xd0\xbe\xd1\x851\xd0\xbb\xd1\x8b \xd0\xbe2\xd1\x85\xd0\xbb\xd1\x8f \xd0\xbe\xd1\x852\xd0\xbc\xd0\xb5 2\xd0\xbe\xd1\x85\xd0\xbe\xd1\x80 \xd0\xbe1\xd1\x85\xd1\x80 \xd0\xbe1\xd1\x85\xd1\x83 \xd0\xbe2\xd1\x86\xd0\xbe \xd0\xbe\xd1\x87\xd0\xb01\xd1\x81 \xd0\xbe\xd1\x872\xd0\xbb \xd0\xbe\xd1\x871\xd0\xbb\xd0\xb5 \xd0\xbe3\xd1\x87\xd0\xbb\xd0\xb8 \xd0\xbe1\xd1\x87\xd1\x82 \xd0\xbe2\xd1\x871\xd1\x82\xd0\xbe \xd0\xbe\xd1\x883\xd0\xb2\xd0\xb0 \xd0\xbe\xd1\x882\xd0\xbb\xd0\xb0 \xd0\xbe\xd1\x88\xd0\xbf\xd0\xb02\xd0\xba3 \xd0\xbe\xd1\x882\xd1\x82 \xd0\xbe\xd1\x8d1\xd1\x82\xd0\xb8 2\xd0\xbe\xd1\x8e \xd0\xbe1\xd1\x8f \xd0\xbe\xd1\x8f2\xd0\xb2 \xd0\xbe\xd1\x8f2\xd0\xb4 \xd0\xbe\xd1\x8f2\xd0\xb7 \xd0\xbe\xd1\x8f2\xd1\x80\xd0\xb8 1\xd0\xbf \xd0\xbf\xd0\xb0\xd0\xb2\xd0\xb83 \xd0\xbf\xd0\xb0\xd0\xb23\xd0\xbb \xd0\xbf\xd0\xb02\xd0\xb2\xd1\x8c \xd0\xbf\xd0\xb02\xd0\xb4\xd1\x80 \xd0\xbf\xd0\xb02\xd0\xb5\xd0\xbd \xd0\xbf\xd0\xb01\xd0\xb7\xd0\xbe \xd0\xbf\xd0\xb0\xd1\x811\xd0\xbb \xd0\xbf\xd0\xb0\xd1\x811\xd1\x82\xd0\xb0 \xd0\xbf\xd0\xb01\xd1\x81\xd1\x82\xd0\xb5 \xd0\xbf\xd0\xb0\xd1\x811\xd1\x82\xd0\xbe \xd0\xbf\xd0\xb0\xd1\x811\xd1\x82\xd1\x83 \xd0\xbf\xd0\xb02\xd1\x811\xd1\x82\xd1\x8b \xd0\xbf\xd0\xb01\xd1\x82\xd1\x80\xd0\xbe \xd0\xbf\xd0\xb02\xd1\x83\xd0\xbd \xd0\xbf\xd0\xb03\xd1\x84 \xd0\xbf\xd0\xb01\xd1\x85\xd1\x83 \xd0\xbf\xd0\xb02\xd1\x88\xd1\x82 2\xd0\xbf1\xd0\xb22 2\xd0\xbf1\xd0\xb4 \xd0\xbf\xd0\xb51 \xd0\xbf\xd0\xb52\xd0\xb4\xd0\xb2 \xd0\xbf\xd0\xb52\xd0\xb41\xd0\xb8\xd0\xbd \xd0\xbf\xd0\xb52\xd0\xb7 \xd0\xbf\xd0\xb53\xd0\xb7\xd0\xb0 \xd0\xbf\xd0\xb53\xd0\xb7\xd0\xbe \xd0\xbf\xd0\xb52\xd0\xba1\xd0\xbb\xd0\xb0 \xd0\xbf\xd0\xb52\xd0\xbb\xd1\x8c \xd0\xbf\xd0\xb54\xd0\xbf\xd0\xbb \xd0\xbf\xd0\xb5\xd1\x80\xd0\xb81\xd0\xbe \xd0\xbf\xd0\xb52\xd1\x811\xd0\xba \xd0\xbf\xd0\xb52\xd1\x81\xd0\xbd \xd0\xbf\xd0\xb52\xd1\x81\xd1\x821\xd1\x80 \xd0\xbf\xd0\xb52\xd1\x81\xd1\x86 \xd0\xbf\xd0\xb52\xd1\x81\xd1\x87 \xd0\xbf\xd0\xb52\xd1\x82\xd1\x80 \xd0\xbf\xd0\xb52\xd1\x88\xd1\x82 \xd0\xbf\xd0\xb8\xd0\xb0\xd1\x81\xd1\x821 \xd0\xbf\xd0\xb82\xd0\xb63\xd0\xbc \xd0\xbf\xd0\xb82\xd0\xba1\xd1\x80 3\xd0\xbf\xd0\xb8\xd0\xbd\xd0\xba 3\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8f 4\xd0\xbf3\xd0\xba 2\xd0\xbf\xd0\xbb_ 4\xd0\xbf\xd0\xbb\xd0\xb0_ \xd0\xbf\xd0\xbb\xd0\xb01\xd1\x81 \xd0\xbf1\xd0\xbb\xd0\xb5\xd0\xbc_ \xd0\xbf1\xd0\xbb\xd0\xb5\xd0\xbc\xd1\x81 2\xd0\xbf\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xbf2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xba \xd0\xbf1\xd0\xbb\xd0\xb52\xd0\xbe \xd0\xbf\xd0\xbb\xd0\xb5\xd1\x811\xd0\xba \xd0\xbf1\xd0\xbb\xd0\xb5\xd1\x8e 2\xd0\xbf\xd0\xbb\xd0\xb8\xd0\xb2 3\xd0\xbf2\xd0\xbb\xd0\xb8\xd0\xba 2\xd0\xbf\xd0\xbb\xd0\xbe_ 2\xd0\xbf\xd0\xbb\xd0\xbe\xd0\xb2 2\xd0\xbf\xd0\xbb\xd0\xbe\xd0\xb3 2\xd0\xbf\xd0\xbb\xd1\x8b\xd0\xb9 2\xd0\xbf\xd0\xbb\xd1\x8b\xd0\xbc \xd0\xbf1\xd0\xbb\xd1\x8b\xd0\xbd \xd0\xbf1\xd0\xbb\xd1\x8b\xd1\x85 2\xd0\xbf\xd0\xbb\xd1\x8e_ \xd0\xbf1\xd0\xbb\xd1\x8e\xd1\x82 \xd0\xbf2\xd0\xbb\xd1\x8f\xd1\x81 \xd0\xbf2\xd0\xbb\xd1\x8f\xd1\x88 2\xd0\xbf1\xd0\xbd \xd0\xbf3\xd0\xbd\xd0\xb0 \xd0\xbf3\xd0\xbd\xd0\xbe1 \xd0\xbf3\xd0\xbd\xd1\x8b \xd0\xbf\xd0\xbe1\xd0\xb12 \xd0\xbf\xd0\xbe3\xd0\xb2\xd0\xbb \xd0\xbf\xd0\xbe3\xd0\xb22\xd1\x81 \xd0\xbf\xd0\xbe\xd0\xb41\xd0\xb2\xd0\xbe \xd0\xbf\xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xba \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xbe3\xd0\xbc2 \xd0\xbf\xd0\xbe\xd0\xb52\xd0\xbb \xd0\xbf\xd0\xbe\xd0\xb52\xd1\x85 \xd0\xbf\xd0\xbe1\xd0\xb7\xd0\xb2\xd0\xb5 \xd0\xbf\xd0\xbe1\xd0\xb7\xd0\xb4\xd0\xbe \xd0\xbf\xd0\xbe1\xd0\xb72\xd0\xbb \xd0\xbf\xd0\xbe1\xd0\xb7\xd0\xbd \xd0\xbf\xd0\xbe\xd0\xb82\xd1\x89 3\xd0\xbf\xd0\xbe\xd0\xb9 3\xd0\xbf\xd0\xbe\xd0\xbb\xd0\xba \xd0\xbf\xd0\xbe3\xd0\xbc\xd0\xbd\xd0\xbe \xd0\xbf\xd0\xbe3\xd0\xbc\xd0\xbd\xd1\x83 3\xd0\xbf\xd0\xbe3\xd0\xbf2 \xd0\xbf1\xd0\xbe\xd1\x80\xd0\xb3 \xd0\xbf\xd0\xbe\xd1\x802\xd0\xb6 \xd0\xbf\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbf\xd0\xbe1\xd1\x814 3\xd0\xbf\xd0\xbe\xd1\x81\xd0\xbb \xd0\xbf\xd0\xbe3\xd1\x81\xd1\x81 \xd0\xbf\xd0\xbe\xd1\x822\xd0\xb2 \xd0\xbf\xd0\xbe\xd1\x822\xd1\x80 \xd0\xbf\xd0\xbe1\xd1\x852 \xd0\xbf\xd0\xbe2\xd1\x88\xd0\xbb\xd0\xbe \xd0\xbf\xd0\xbe2\xd1\x88\xd0\xbb\xd1\x8b \xd0\xbf\xd0\xbe2\xd1\x88\xd0\xbb\xd1\x8f \xd0\xbf\xd0\xbe\xd1\x8d3\xd0\xbc 2\xd0\xbf\xd0\xbf2 \xd0\xbf\xd0\xbf\xd0\xbe1\xd0\xb4 2\xd0\xbf\xd1\x80_ 3\xd0\xbf\xd1\x80\xd0\xb5\xd0\xb2 \xd0\xbf\xd1\x80\xd0\xb51\xd0\xb7 \xd0\xbf\xd1\x80\xd0\xb5\xd0\xb92 \xd0\xbf\xd1\x80\xd0\xb51\xd0\xbb \xd0\xbf\xd1\x80\xd0\xb51\xd0\xbe\xd0\xb3 3\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82 \xd0\xbf\xd1\x80\xd0\xb81 \xd0\xbf\xd1\x80\xd0\xb83\xd0\xb2 \xd0\xbf\xd1\x80\xd0\xb8\xd0\xb32 \xd0\xbf\xd1\x80\xd0\xb83\xd0\xb42 \xd0\xbf\xd1\x80\xd0\xb83\xd0\xba \xd0\xbf\xd1\x80\xd0\xb83\xd0\xbb \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbb\xd1\x8c2 \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbf2 \xd0\xbf2\xd1\x80\xd0\xb8\xd1\x86 \xd0\xbf\xd1\x80\xd0\xbe1\xd0\xb1\xd0\xbb \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb42\xd0\xbb \xd0\xbf\xd1\x80\xd0\xbe3\xd0\xb62 \xd0\xbf\xd1\x80\xd0\xbe1\xd0\xb72 \xd0\xbf1\xd1\x80\xd0\xbe\xd0\xb7\xd0\xbe 3\xd0\xbf\xd1\x80\xd0\xbe\xd0\xb8 \xd0\xbf\xd1\x80\xd0\xbe3\xd0\xbf \xd0\xbf\xd1\x80\xd0\xbe\xd1\x84\xd0\xbe2 2\xd0\xbf\xd1\x80\xd1\x81 \xd0\xbf2\xd1\x80\xd1\x83 2\xd0\xbf1\xd1\x812 3\xd0\xbf2\xd1\x81\xd0\xb0\xd0\xbb \xd0\xbf3\xd1\x81\xd0\xb8\xd0\xbd 3\xd0\xbf2\xd1\x81\xd0\xb8\xd1\x85 \xd0\xbf3\xd1\x81\xd0\xbe 2\xd0\xbf1\xd1\x82 \xd0\xbf2\xd1\x823\xd0\xb2 3\xd0\xbf2\xd1\x82\xd0\xb8\xd1\x85 \xd0\xbf3\xd1\x82\xd1\x83 3\xd0\xbf\xd1\x83\xd0\xb1 \xd0\xbf\xd1\x83\xd0\xb33\xd0\xbd \xd0\xbf\xd1\x83\xd1\x811\xd0\xba\xd1\x83 \xd0\xbf\xd1\x831\xd1\x81\xd1\x82 \xd0\xbf\xd1\x833\xd1\x82\xd1\x8c 2\xd0\xbf\xd1\x842 \xd0\xbf\xd1\x852 2\xd0\xbf\xd1\x86 4\xd0\xbf3\xd1\x87 2\xd0\xbf\xd1\x88 2\xd0\xbf\xd1\x89 2\xd0\xbf\xd1\x8c_ 2\xd0\xbf\xd1\x8c\xd1\x82 \xd0\xbf\xd1\x8d1\xd1\x80\xd0\xb0 \xd0\xbf2\xd1\x8e1 1\xd1\x80\xd0\xb0_ \xd1\x80\xd0\xb0\xd0\xb02 \xd1\x80\xd0\xb02\xd0\xb1\xd0\xbb 1\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe \xd1\x80\xd0\xb02\xd0\xb11\xd1\x80 1\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbd\xd1\x8f \xd1\x80\xd0\xb02\xd0\xb3\xd0\xb2 \xd1\x80\xd0\xb02\xd0\xb3\xd0\xbb \xd1\x80\xd0\xb0\xd0\xb42\xd0\xb6 \xd1\x80\xd0\xb0\xd0\xb4\xd0\xbe1\xd0\xb12 \xd1\x80\xd0\xb02\xd0\xb4\xd1\x86 \xd1\x80\xd0\xb02\xd0\xb6\xd1\x83\xd1\x80 \xd1\x80\xd0\xb02\xd0\xb7\xd0\xb8\xd0\xb9 \xd1\x80\xd0\xb02\xd0\xb7\xd1\x83\xd0\xb1 \xd1\x80\xd0\xb0\xd0\xba2\xd0\xb2 1\xd1\x80\xd0\xb0\xd0\xba\xd0\xb8\xd0\xb7 \xd1\x80\xd0\xb02\xd0\xba3\xd0\xbb 1\xd1\x80\xd0\xb0\xd0\xbb\xd0\xb3 1\xd1\x80\xd0\xb0\xd0\xbc\xd0\xba 1\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbd \xd1\x80\xd0\xb02\xd0\xbd\xd0\xbe\xd1\x85 \xd1\x80\xd0\xb0\xd0\xbd2\xd1\x81\xd1\x86 \xd1\x80\xd0\xb02\xd0\xbf1\xd0\xbb \xd1\x80\xd0\xb0\xd1\x813\xd0\xba2 1\xd1\x80\xd0\xb0\xd1\x81\xd0\xbb \xd1\x80\xd0\xb0\xd1\x813\xd0\xbf \xd1\x80\xd0\xb0\xd1\x811\xd1\x82 1\xd1\x80\xd0\xb0\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb0\xd1\x813\xd1\x822\xd0\xbb \xd1\x80\xd0\xb02\xd1\x82\xd0\xb0\xd0\xba \xd1\x80\xd0\xb0\xd1\x821\xd0\xb2 \xd1\x80\xd0\xb01\xd1\x822\xd1\x80 2\xd1\x80\xd0\xb0\xd1\x85\xd0\xb8 1\xd1\x80\xd0\xb0\xd1\x89\xd0\xb8 1\xd1\x80\xd0\xb0\xd1\x8e 1\xd1\x80\xd0\xb0\xd1\x8f 2\xd1\x80\xd0\xb0\xd1\x8f\xd1\x82 2\xd1\x801\xd0\xb1 \xd1\x80\xd0\xb12\xd0\xbb\xd0\xb0 \xd1\x802\xd0\xb1\xd0\xbb\xd0\xb5 \xd1\x80\xd0\xb12\xd0\xbb\xd0\xbe \xd1\x80\xd0\xb12\xd0\xbb\xd1\x8e \xd1\x80\xd0\xb1\xd0\xbe3\xd1\x81 1\xd1\x802\xd0\xb2\xd0\xb0\xd0\xb2 \xd1\x803\xd0\xb2\xd0\xb0\xd0\xba \xd1\x803\xd0\xb2\xd0\xb0\xd1\x80 \xd1\x803\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x803\xd0\xb2\xd0\xb5\xd0\xb6 \xd1\x802\xd0\xb2\xd0\xb5\xd0\xbe 1\xd1\x80\xd0\xb2\xd0\xb5\xd1\x82 \xd1\x801\xd0\xb2\xd0\xb8 \xd1\x803\xd0\xb2\xd0\xb8\xd0\xbd \xd1\x802\xd0\xb2\xd0\xb8\xd1\x82 \xd1\x801\xd0\xb2\xd0\xbe \xd1\x80\xd0\xb2\xd0\xbe1\xd0\xb72\xd0\xb4 \xd1\x801\xd0\xb2\xd1\x8c 2\xd1\x80\xd0\xb3 \xd1\x802\xd0\xb3\xd0\xb2 \xd1\x802\xd0\xb31\xd0\xbb \xd1\x802\xd0\xb3\xd0\xbd \xd1\x80\xd0\xb32\xd1\x80 2\xd1\x801\xd0\xb4 \xd1\x80\xd0\xb4\xd0\xb01\xd1\x81 \xd1\x802\xd0\xb41\xd0\xb2 \xd1\x80\xd0\xb42\xd0\xb6 \xd1\x80\xd0\xb4\xd0\xb82\xd0\xb0 \xd1\x802\xd0\xb4\xd0\xbb \xd1\x80\xd0\xb4\xd0\xbe\xd1\x812 \xd1\x802\xd0\xb4\xd1\x86 1\xd1\x80\xd0\xb5_ \xd1\x80\xd0\xb51\xd0\xb2\xd1\x80 \xd1\x80\xd0\xb5\xd0\xb32\xd0\xbb\xd1\x8f \xd1\x80\xd0\xb5\xd0\xb32\xd0\xbd \xd1\x80\xd0\xb52\xd0\xb41\xd0\xbe2\xd0\xbf \xd1\x80\xd0\xb52\xd0\xb4\xd0\xbe\xd1\x81 \xd1\x80\xd0\xb5\xd0\xb52\xd0\xb2 \xd1\x80\xd0\xb5\xd0\xb52\xd0\xb4 \xd1\x80\xd0\xb5\xd0\xb52\xd0\xbb \xd1\x80\xd0\xb53\xd0\xb62\xd0\xb4 1\xd1\x80\xd0\xb5\xd0\xb7\xd0\xba \xd1\x80\xd0\xb51\xd0\xb72\xd0\xbb \xd1\x80\xd0\xb51\xd0\xb7\xd0\xbd\xd0\xb0 1\xd1\x80\xd0\xb51\xd0\xb7\xd0\xbe \xd1\x80\xd0\xb51\xd0\xb7\xd1\x80 \xd1\x80\xd0\xb5\xd0\xb72\xd1\x83 1\xd1\x80\xd0\xb5\xd0\xb9\xd1\x88 \xd1\x80\xd0\xb51\xd0\xba2\xd0\xbb 1\xd1\x80\xd0\xb5\xd0\xba\xd1\x88 \xd1\x80\xd0\xb53\xd0\xbc\xd0\xbd\xd0\xbe 3\xd1\x80\xd0\xb5\xd0\xbc\xd0\xbe \xd1\x80\xd0\xb5\xd0\xbc\xd0\xbe2\xd0\xb33 1\xd1\x80\xd0\xb5\xd0\xbd\xd0\xba 1\xd1\x80\xd0\xb5\xd0\xbd\xd1\x8c \xd1\x80\xd0\xb51\xd0\xbe\xd0\xbd \xd1\x80\xd0\xb51\xd0\xbe\xd0\xbf \xd1\x80\xd0\xb51\xd0\xbe2\xd1\x80 \xd1\x80\xd0\xb51\xd0\xbe2\xd1\x84 \xd1\x80\xd0\xb51\xd0\xbe\xd1\x85 \xd1\x80\xd0\xb51\xd0\xbe2\xd1\x86 1\xd1\x80\xd0\xb5\xd0\xbf\xd1\x8c \xd1\x80\xd0\xb53\xd1\x802 \xd1\x80\xd0\xb5\xd1\x811\xd0\xba\xd0\xb8 \xd1\x80\xd0\xb51\xd1\x81\xd0\xbb \xd1\x80\xd0\xb51\xd1\x812\xd0\xbf \xd1\x80\xd0\xb5\xd1\x812\xd1\x813\xd0\xbc \xd1\x80\xd0\xb53\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb53\xd1\x81\xd1\x82\xd0\xbe \xd1\x80\xd0\xb51\xd1\x81\xd1\x87 \xd1\x80\xd0\xb51\xd1\x82\xd0\xb2 \xd1\x80\xd0\xb51\xd1\x822\xd1\x80 \xd1\x80\xd0\xb5\xd1\x83\xd1\x873\xd1\x82 \xd1\x80\xd0\xb51\xd1\x87\xd1\x82 \xd1\x80\xd0\xb53\xd1\x88\xd0\xbb \xd1\x803\xd0\xb6\xd0\xb0_ \xd1\x803\xd0\xb6\xd0\xb0\xd0\xbc \xd1\x803\xd0\xb6\xd0\xb0\xd0\xbd \xd1\x803\xd0\xb62\xd0\xb4 2\xd1\x80\xd0\xb7 \xd1\x801\xd0\xb72\xd0\xb2 \xd1\x801\xd0\xb7\xd0\xbe \xd1\x80\xd0\xb83\xd0\xb0 \xd1\x80\xd0\xb8\xd0\xb12 \xd1\x80\xd0\xb83\xd0\xb1\xd1\x80 \xd1\x80\xd0\xb83\xd0\xb22\xd0\xbd 2\xd1\x80\xd0\xb8\xd0\xb3\xd0\xb8 \xd1\x80\xd0\xb82\xd0\xb3\xd0\xbb\xd0\xbe \xd1\x80\xd0\xb83\xd0\xb32\xd0\xbd 2\xd1\x80\xd0\xb8\xd0\xb4\xd0\xb6 \xd1\x80\xd0\xb81\xd0\xb42\xd1\x80 \xd1\x80\xd0\xb8\xd0\xb52\xd0\xbb \xd1\x80\xd0\xb8\xd0\xb53\xd1\x80 \xd1\x80\xd0\xb8\xd0\xb72\xd0\xb2 \xd1\x80\xd0\xb8\xd0\xba2\xd1\x80 \xd1\x80\xd0\xb83\xd0\xbc2\xd0\xbd \xd1\x80\xd0\xb83\xd0\xbc2\xd1\x87 \xd1\x802\xd0\xb8\xd0\xbd 1\xd1\x80\xd0\xb8\xd0\xbd\xd1\x81 \xd1\x80\xd0\xb8\xd0\xbe2\xd0\xb7 \xd1\x80\xd0\xb8\xd0\xbe2\xd1\x81 \xd1\x80\xd0\xb81\xd0\xbe\xd1\x82 \xd1\x80\xd0\xb83\xd1\x802 \xd1\x80\xd0\xb81\xd1\x812 \xd1\x80\xd0\xb83\xd1\x81\xd0\xb1 2\xd1\x80\xd0\xb8\xd1\x81\xd0\xbf \xd1\x80\xd0\xb83\xd1\x81\xd1\x82\xd0\xb2 \xd1\x80\xd0\xb83\xd1\x822\xd1\x80 1\xd1\x80\xd0\xb8\xd1\x83 \xd1\x80\xd0\xb82\xd1\x84\xd0\xbb \xd1\x80\xd0\xb83\xd1\x84\xd1\x80 \xd1\x80\xd0\xb81\xd1\x85\xd0\xbb 1\xd1\x80\xd0\xb8\xd1\x86 1\xd1\x80\xd0\xb8\xd1\x88 \xd1\x80\xd0\xb8\xd1\x8d\xd1\x82\xd0\xb82 2\xd1\x801\xd0\xba \xd1\x802\xd0\xba\xd0\xb2 \xd1\x802\xd0\xba1\xd0\xbb \xd1\x80\xd0\xba1\xd1\x81 2\xd1\x801\xd0\xbb2 \xd1\x802\xd0\xbb\xd1\x8c \xd1\x80\xd0\xbb\xd1\x8e1 \xd1\x803\xd0\xbb\xd1\x8f 2\xd1\x80\xd0\xbc \xd1\x802\xd0\xbc\xd1\x87 2\xd1\x801\xd0\xbd \xd1\x80\xd0\xbd\xd0\xb0\xd1\x814 \xd1\x80\xd0\xbd\xd0\xb53\xd0\xbe \xd1\x80\xd0\xbd\xd0\xb51\xd1\x812 \xd1\x80\xd0\xbd\xd0\xbe3\xd1\x81\xd0\xbb 1\xd1\x80\xd0\xbe_ \xd1\x80\xd0\xbe2\xd0\xb1\xd0\xbb\xd1\x8e \xd1\x80\xd0\xbe1\xd0\xb12\xd1\x80 \xd1\x80\xd0\xbe2\xd0\xb2\xd0\xbb 1\xd1\x80\xd0\xbe\xd0\xb3\xd0\xbe\xd0\xbb 1\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd1\x83 \xd1\x80\xd0\xbe1\xd0\xb4\xd0\xb2 \xd1\x80\xd0\xbe3\xd0\xb42\xd0\xb7 \xd1\x80\xd0\xbe1\xd0\xb4\xd0\xbb \xd1\x80\xd0\xbe\xd0\xb42\xd0\xbb\xd0\xb5 \xd1\x80\xd0\xbe2\xd0\xb41\xd0\xbe\xd1\x82 \xd1\x80\xd0\xbe1\xd0\xb4\xd1\x80 1\xd1\x80\xd0\xbe\xd0\xb4\xd1\x8c \xd1\x80\xd0\xbe\xd0\xb52\xd0\xbb \xd1\x80\xd0\xbe\xd0\xb52\xd0\xbc \xd1\x80\xd0\xbe\xd0\xb52\xd1\x85 1\xd1\x80\xd0\xbe\xd0\xb7\xd0\xb0\xd1\x80 \xd1\x80\xd0\xbe1\xd0\xb72\xd0\xb2 \xd1\x80\xd0\xbe1\xd0\xb7\xd1\x80 3\xd1\x80\xd0\xbe\xd0\xb7\xd1\x8b\xd1\x81 \xd1\x80\xd0\xbe\xd0\xb82\xd1\x813 1\xd1\x80\xd0\xbe\xd0\xba\xd0\xbe\xd0\xbd 1\xd1\x80\xd0\xbe\xd0\xba\xd1\x80 1\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb8\xd1\x81 1\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb8\xd1\x86 1\xd1\x80\xd0\xbe\xd0\xbc\xd0\xbe\xd1\x80 1\xd1\x80\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xb6 1\xd1\x80\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xbf 1\xd1\x80\xd0\xbe\xd0\xbd\xd0\xbe\xd1\x81 \xd1\x80\xd0\xbe\xd0\xbe\xd0\xbf1\xd1\x80 \xd1\x80\xd0\xbe2\xd0\xbf\xd0\xbb\xd1\x8e \xd1\x80\xd0\xbe3\xd0\xbf\xd1\x81 2\xd1\x801\xd0\xbe\xd1\x80\xd0\xb3 \xd1\x80\xd0\xbe1\xd1\x802\xd0\xb6 \xd1\x80\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x80\xd0\xbe1\xd1\x81\xd0\xba \xd1\x80\xd0\xbe2\xd1\x81\xd0\xba\xd0\xb8 \xd1\x80\xd0\xbe2\xd1\x81\xd0\xba\xd1\x83 1\xd1\x80\xd0\xbe\xd1\x81\xd0\xbb \xd1\x80\xd0\xbe1\xd1\x81\xd0\xbc \xd1\x80\xd0\xbe1\xd1\x812\xd0\xbf \xd1\x80\xd0\xbe\xd1\x812\xd1\x84 1\xd1\x80\xd0\xbe\xd1\x81\xd1\x88 1\xd1\x80\xd0\xbe\xd1\x81\xd1\x8e 1\xd1\x80\xd0\xbe\xd1\x822\xd0\xb2 1\xd1\x80\xd0\xbe\xd1\x82\xd0\xba \xd1\x80\xd0\xbe\xd1\x822\xd1\x80\xd0\xb8 1\xd1\x80\xd0\xbe\xd1\x83 \xd1\x80\xd0\xbe\xd1\x83\xd0\xb32 \xd1\x80\xd0\xbe2\xd1\x841\xd0\xb0\xd0\xba \xd1\x80\xd0\xbe2\xd1\x84\xd1\x80 \xd1\x80\xd0\xbe1\xd1\x85\xd0\xbb \xd1\x80\xd0\xbe\xd1\x882\xd0\xbb \xd1\x80\xd0\xbe3\xd1\x88\xd0\xbd 1\xd1\x80\xd0\xbe\xd1\x8f\xd0\xb7 2\xd1\x80\xd0\xbf \xd1\x80\xd0\xbf2\xd0\xbb\xd0\xbe \xd1\x802\xd0\xbf\xd0\xbb\xd1\x8e 2\xd1\x801\xd1\x80 4\xd1\x801\xd1\x81 \xd1\x80\xd1\x812\xd0\xba \xd1\x802\xd1\x81\xd0\xbd \xd1\x80\xd1\x812\xd0\xbf \xd1\x80\xd1\x81\xd1\x82\xd0\xb22 \xd1\x803\xd1\x81\xd1\x82\xd0\xb2\xd0\xbb 2\xd1\x801\xd1\x82 \xd1\x802\xd1\x82\xd0\xb0\xd0\xba\xd0\xba \xd1\x802\xd1\x821\xd0\xb0\xd0\xba\xd1\x82 \xd1\x802\xd1\x821\xd0\xb2 \xd1\x80\xd1\x823\xd0\xb2\xd0\xb0 \xd1\x80\xd1\x822\xd0\xb2\xd0\xbb \xd1\x802\xd1\x82\xd0\xbc \xd1\x802\xd1\x821\xd0\xbe\xd0\xb1 \xd1\x80\xd1\x821\xd0\xbe\xd1\x80\xd0\xb3 \xd1\x80\xd1\x821\xd1\x80\xd0\xb0 \xd1\x80\xd1\x822\xd1\x80\xd0\xb0\xd0\xbd \xd1\x80\xd1\x821\xd1\x80\xd0\xb5 \xd1\x80\xd1\x821\xd1\x80\xd0\xb8 \xd1\x80\xd1\x82\xd1\x83\xd1\x811 \xd1\x802\xd1\x821\xd1\x832\xd1\x87\xd0\xb8 \xd1\x803\xd1\x82\xd1\x8c\xd1\x8e \xd1\x80\xd1\x821\xd1\x8f\xd1\x87 1\xd1\x80\xd1\x83_ 1\xd1\x80\xd1\x83\xd0\xb1\xd0\xb0 \xd1\x80\xd1\x83\xd0\xb33\xd0\xbd \xd1\x80\xd1\x832\xd0\xb4\xd0\xb0\xd1\x80 1\xd1\x80\xd1\x83\xd0\xb6\xd0\xb5\xd0\xb9 2\xd1\x80\xd1\x83\xd0\xba\xd1\x81 1\xd1\x80\xd1\x83\xd0\xbb \xd1\x80\xd1\x83\xd1\x811\xd0\xba \xd1\x80\xd1\x83\xd1\x813\xd0\xbb \xd1\x80\xd1\x831\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd1\x83\xd1\x81\xd1\x821\xd1\x80 \xd1\x80\xd1\x833\xd1\x82\xd1\x8c 1\xd1\x80\xd1\x83\xd1\x85\xd0\xb0 1\xd1\x80\xd1\x83\xd1\x85\xd0\xbe 1\xd1\x80\xd1\x83\xd1\x87\xd0\xbd 2\xd1\x80\xd1\x84 \xd1\x80\xd1\x842\xd0\xbb 2\xd1\x80\xd1\x85 \xd1\x802\xd1\x85\xd0\xb2 \xd1\x802\xd1\x851\xd0\xb8\xd0\xbd \xd1\x80\xd1\x851\xd0\xbb \xd1\x801\xd1\x852\xd0\xbb\xd0\xbe \xd1\x802\xd1\x851\xd0\xbe\xd0\xbf \xd1\x80\xd1\x851\xd1\x80 2\xd1\x80\xd1\x86 \xd1\x802\xd1\x86\xd0\xb2 2\xd1\x801\xd1\x87 \xd1\x802\xd1\x87\xd0\xbb \xd1\x802\xd1\x87\xd0\xbc 2\xd1\x80\xd1\x88 \xd1\x803\xd1\x882\xd0\xbc \xd1\x80\xd1\x882\xd1\x82 2\xd1\x80\xd1\x89 2\xd1\x80\xd1\x8a 1\xd1\x80\xd1\x8b_ 1\xd1\x80\xd1\x8b\xd0\xb1 \xd1\x80\xd1\x8b2\xd0\xb4\xd0\xb2 2\xd1\x80\xd1\x8b\xd0\xb7 \xd1\x80\xd1\x8b2\xd0\xba\xd0\xbb 1\xd1\x80\xd1\x8b\xd0\xbc \xd1\x80\xd1\x8b2\xd1\x811\xd0\xba \xd1\x80\xd1\x8b2\xd1\x851 2\xd1\x80\xd1\x8c_ 1\xd1\x80\xd1\x8c\xd0\xb5 1\xd1\x80\xd1\x8c\xd0\xb8 2\xd1\x80\xd1\x8c\xd0\xba 2\xd1\x80\xd1\x8c\xd1\x81 2\xd1\x80\xd1\x8c\xd1\x82 1\xd1\x80\xd1\x8c\xd1\x8e 1\xd1\x80\xd1\x8c\xd1\x8f \xd1\x80\xd1\x8d1\xd0\xbb \xd1\x802\xd1\x8e 1\xd1\x80\xd1\x8e_ 1\xd1\x80\xd1\x8e\xd1\x81 \xd1\x80\xd1\x8f1\xd0\xb2\xd0\xb8 1\xd1\x80\xd1\x8f\xd1\x8e 1\xd1\x81\xd0\xb0 \xd1\x81\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x81\xd0\xb02\xd0\xb4\xd1\x8c \xd1\x81\xd0\xb02\xd0\xba\xd0\xb2 \xd1\x81\xd0\xb02\xd0\xba\xd0\xbb 2\xd1\x811\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbf \xd1\x811\xd0\xb0\xd0\xbf\xd0\xbf 2\xd1\x811\xd0\xb0\xd1\x80\xd0\xba 2\xd1\x811\xd0\xb0\xd1\x82\xd0\xbb \xd1\x81\xd0\xb01\xd1\x82\xd1\x80 \xd1\x81\xd0\xb02\xd1\x83\xd0\xbd \xd1\x81\xd0\xb02\xd1\x841\xd1\x80 \xd1\x81\xd0\xb01\xd1\x852 1\xd1\x81\xd0\xb12 2\xd1\x81\xd0\xb1\xd0\xb53\xd0\xb72 \xd1\x81\xd0\xb1\xd0\xb5\xd0\xb7\xd0\xbe3 \xd1\x81\xd0\xb1\xd0\xb53\xd1\x812 2\xd1\x813\xd0\xb1\xd1\x83 \xd1\x812\xd0\xb1\xd1\x8b 2\xd1\x81\xd0\xb1\xd1\x8e 1\xd1\x812\xd0\xb2 2\xd1\x813\xd0\xb2\xd0\xb5\xd0\xbd \xd1\x81\xd0\xb32 \xd1\x812\xd0\xb3\xd0\xb8 \xd1\x812\xd0\xb3\xd0\xbd \xd1\x812\xd0\xb3\xd0\xbe 1\xd1\x81\xd0\xb42 \xd1\x812\xd0\xb4\xd0\xb0 \xd1\x812\xd0\xb4\xd0\xb5 \xd1\x813\xd0\xb4\xd0\xb8 \xd1\x812\xd0\xb4\xd0\xbe 1\xd1\x812\xd0\xb5 \xd1\x81\xd0\xb5\xd0\xb32\xd0\xbd \xd1\x81\xd0\xb51\xd0\xb72 \xd1\x81\xd0\xb51\xd0\xba\xd0\xb2 \xd1\x81\xd0\xb5\xd0\xba1\xd0\xbb \xd1\x81\xd0\xb52\xd0\xba1\xd1\x80 \xd1\x81\xd0\xb5\xd0\xba\xd1\x814 \xd1\x81\xd0\xb5\xd0\xbc\xd0\xb81 \xd1\x81\xd0\xb5\xd1\x80\xd0\xb52\xd0\xb1 \xd1\x81\xd0\xb52\xd1\x81\xd0\xba \xd1\x81\xd0\xb52\xd1\x81\xd1\x82 \xd1\x81\xd0\xb53\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xb53\xd1\x81\xd1\x82\xd0\xb5 \xd1\x81\xd0\xb5\xd1\x81\xd1\x821\xd1\x80 1\xd1\x812\xd0\xb6 \xd1\x811\xd0\xb7 1\xd1\x812\xd0\xb8 3\xd1\x81\xd0\xb8\xd0\xb7 \xd1\x81\xd0\xb81\xd0\xbe\xd0\xbc \xd1\x81\xd0\xb81\xd0\xbe\xd0\xbf \xd1\x81\xd0\xb82\xd0\xbf\xd0\xbb \xd1\x81\xd0\xb81\xd1\x85 4\xd1\x81\xd0\xba_ 2\xd1\x81\xd0\xba\xd0\xb0\xd0\xbc \xd1\x812\xd0\xba\xd0\xb0\xd0\xbd\xd0\xb4 1\xd1\x812\xd0\xba\xd0\xb0\xd1\x84 2\xd1\x81\xd0\xba\xd0\xb0\xd1\x85 \xd1\x81\xd0\xba2\xd0\xb2\xd0\xb0 \xd1\x812\xd0\xba\xd0\xb2\xd0\xb8 3\xd1\x81\xd0\xba\xd0\xb8\xd0\xbd\xd0\xbe \xd1\x81\xd0\xba2\xd0\xbb \xd1\x812\xd0\xba\xd0\xbb\xd1\x8f \xd1\x81\xd0\xba3\xd0\xbb\xd1\x8f\xd0\xb2 2\xd1\x81\xd0\xba\xd0\xbd \xd1\x811\xd0\xba\xd0\xbe\xd0\xbd 2\xd1\x81\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb0 \xd1\x812\xd0\xba\xd0\xbe\xd0\xbf\xd1\x81 2\xd1\x81\xd0\xba\xd0\xbe\xd1\x88 \xd1\x81\xd0\xba2\xd1\x80 \xd1\x811\xd0\xba\xd1\x80\xd0\xb0 2\xd1\x81\xd0\xba\xd1\x80\xd0\xb8\xd0\xb1 \xd1\x81\xd0\xba1\xd1\x81 2\xd1\x81\xd0\xba\xd1\x83\xd0\xb5 2\xd1\x813\xd0\xbb\xd0\xb0_ 1\xd1\x81\xd0\xbb\xd0\xb0\xd0\xb2 1\xd1\x81\xd0\xbb\xd0\xb0\xd0\xb4 \xd1\x811\xd0\xbb\xd0\xb0\xd0\xbc 2\xd1\x813\xd0\xbb\xd0\xb0\xd1\x8f \xd1\x813\xd0\xbb\xd0\xb5\xd0\xb2 \xd1\x813\xd0\xbb\xd0\xb5\xd0\xb5 \xd1\x811\xd0\xbb\xd0\xb5\xd0\xb9 \xd1\x81\xd0\xbb\xd0\xb5\xd0\xbe2 \xd1\x811\xd0\xbb\xd0\xb5\xd1\x82 \xd1\x813\xd0\xbb\xd0\xb5\xd1\x8e 2\xd1\x813\xd0\xbb\xd0\xb8_ 2\xd1\x81\xd0\xbb\xd0\xb8\xd1\x86 2\xd1\x813\xd0\xbb\xd0\xbe_ \xd1\x812\xd0\xbb\xd0\xbe\xd0\xb6 \xd1\x813\xd0\xbb\xd0\xbe\xd0\xbc\xd1\x83 2\xd1\x813\xd0\xbb\xd0\xbe\xd1\x81 2\xd1\x813\xd0\xbb\xd1\x83\xd1\x8e 2\xd1\x813\xd0\xbb\xd1\x8b\xd0\xb5 2\xd1\x813\xd0\xbb\xd1\x8b\xd0\xb9 2\xd1\x813\xd0\xbb\xd1\x8b\xd0\xbc 2\xd1\x81\xd0\xbb\xd1\x8c \xd1\x811\xd0\xbb\xd1\x8e\xd1\x81 2\xd1\x813\xd0\xbb\xd1\x8f \xd1\x812\xd0\xbc 1\xd1\x81\xd0\xbc\xd0\xb5\xd1\x81 \xd1\x814\xd0\xbc\xd0\xb5\xd1\x8f \xd1\x813\xd0\xbc\xd1\x83\xd1\x80 \xd1\x811\xd0\xbd 1\xd1\x812\xd0\xbd\xd0\xb0\xd0\xb1 \xd1\x812\xd0\xbd\xd0\xb0\xd1\x81 2\xd1\x81\xd0\xbd\xd0\xb0\xd1\x8f 1\xd1\x812\xd0\xbd\xd0\xb5\xd0\xb6 2\xd1\x813\xd0\xbd\xd0\xb8\xd0\xba 2\xd1\x81\xd0\xbd\xd0\xbe \xd1\x81\xd0\xbd\xd0\xbe1\xd0\xb72 2\xd1\x81\xd0\xbd\xd1\x83\xd1\x8e 2\xd1\x813\xd0\xbd\xd1\x8b 1\xd1\x81\xd0\xbe \xd1\x81\xd0\xbe1\xd0\xb12\xd1\x80 \xd1\x812\xd0\xbe\xd0\xb2 \xd1\x81\xd0\xbe\xd0\xb22\xd1\x80 \xd1\x81\xd0\xbe1\xd0\xb4 \xd1\x81\xd0\xbe1\xd0\xb72 \xd1\x81\xd0\xbe1\xd0\xbb2\xd0\xb3 \xd1\x81\xd0\xbe3\xd0\xbc2 \xd1\x81\xd0\xbe2\xd1\x80\xd0\xb8\xd0\xb5 \xd1\x81\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x81\xd0\xbe1\xd1\x81\xd0\xba \xd1\x81\xd0\xbe1\xd1\x812\xd0\xbf \xd1\x81\xd0\xbe2\xd1\x81\xd1\x8c \xd1\x81\xd0\xbe\xd1\x822\xd1\x80 \xd1\x81\xd0\xbe1\xd1\x87\xd0\xbb \xd1\x81\xd0\xbe\xd1\x882\xd0\xbb \xd1\x81\xd0\xbf2 \xd1\x812\xd0\xbf\xd0\xb0\xd0\xb2 \xd1\x812\xd0\xbf\xd0\xb5\xd0\xb5 \xd1\x812\xd0\xbf\xd0\xb5\xd0\xbb \xd1\x812\xd0\xbf\xd0\xb5\xd0\xbd \xd1\x812\xd0\xbf\xd0\xb5\xd1\x85 1\xd1\x812\xd0\xbf\xd0\xb5\xd1\x86 \xd1\x812\xd0\xbf\xd0\xb5\xd1\x88 \xd1\x812\xd0\xbf\xd0\xb5\xd1\x8e \xd1\x812\xd0\xbf\xd0\xb8\xd0\xbc 2\xd1\x81\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8f \xd1\x813\xd0\xbf\xd0\xbd \xd1\x81\xd0\xbf\xd0\xbe1\xd0\xb72 2\xd1\x81\xd0\xbf\xd0\xbe\xd0\xbb \xd1\x812\xd0\xbf\xd0\xbe\xd1\x81 2\xd1\x81\xd0\xbf\xd1\x8c 1\xd1\x81\xd1\x80 2\xd1\x81\xd1\x80_ \xd1\x812\xd1\x80\xd0\xb0\xd0\xb1 \xd1\x81\xd1\x80\xd0\xb02\xd1\x81 \xd1\x811\xd1\x80\xd0\xb0\xd1\x82 \xd1\x81\xd1\x80\xd0\xb52\xd0\xb11 \xd1\x81\xd1\x80\xd0\xb53\xd0\xb4\xd0\xbe 2\xd1\x811\xd1\x81 \xd1\x81\xd1\x81\xd0\xb0\xd0\xbd\xd0\xb42 \xd1\x812\xd1\x81\xd0\xb1 \xd1\x81\xd1\x813\xd0\xb2\xd0\xbe 4\xd1\x815\xd1\x81\xd0\xb8 \xd1\x813\xd1\x812\xd0\xba \xd1\x81\xd1\x812\xd0\xbb \xd1\x812\xd1\x81\xd0\xbd \xd1\x813\xd1\x812\xd0\xbd\xd0\xb5 \xd1\x812\xd1\x81\xd0\xbe\xd1\x80\xd0\xb8 \xd1\x81\xd1\x812\xd0\xbf \xd1\x81\xd1\x81\xd1\x822 \xd1\x81\xd1\x812\xd1\x87 2\xd1\x81\xd1\x82_ 1\xd1\x81\xd1\x82\xd0\xb0_ 2\xd1\x81\xd1\x82\xd0\xb1 4\xd1\x81\xd1\x82\xd0\xb2_ \xd1\x81\xd1\x821\xd0\xb2\xd0\xb5\xd1\x80 2\xd1\x81\xd1\x82\xd0\xb2\xd0\xbb \xd1\x81\xd1\x822\xd0\xb2\xd0\xbe\xd0\xbb \xd1\x81\xd1\x822\xd0\xb2\xd1\x8f \xd1\x812\xd1\x82\xd0\xb5 1\xd1\x814\xd1\x82\xd0\xb5_ 1\xd1\x81\xd1\x82\xd0\xb5\xd0\xb9 1\xd1\x81\xd1\x82\xd0\xb5\xd0\xbb 1\xd1\x81\xd1\x82\xd0\xb5\xd0\xbd_ \xd1\x813\xd1\x82\xd0\xb5\xd1\x82_ \xd1\x813\xd1\x82\xd0\xb5\xd1\x82\xd0\xb5 \xd1\x81\xd1\x82\xd0\xb53\xd1\x85 \xd1\x813\xd1\x82\xd0\xb5\xd1\x88 1\xd1\x81\xd1\x82\xd0\xb8 \xd1\x812\xd1\x82\xd0\xb8\xd0\xb5 \xd1\x812\xd1\x82\xd0\xb8\xd0\xb8 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbc\xd0\xbf 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd0\xb4 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd1\x84 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd1\x8a \xd1\x812\xd1\x82\xd0\xb8\xd1\x87 \xd1\x812\xd1\x82\xd0\xb8\xd1\x88\xd0\xba \xd1\x812\xd1\x82\xd0\xb8\xd1\x8e 2\xd1\x81\xd1\x82\xd0\xba \xd1\x81\xd1\x822\xd0\xbb\xd0\xb0 \xd1\x813\xd1\x822\xd0\xbb\xd0\xb5 2\xd1\x81\xd1\x82\xd0\xbb\xd0\xb8 \xd1\x81\xd1\x822\xd0\xbb\xd0\xb8\xd0\xbb \xd1\x81\xd1\x822\xd0\xbb\xd0\xb8\xd1\x82 2\xd1\x81\xd1\x82\xd0\xbb\xd1\x8f 2\xd1\x81\xd1\x82\xd0\xbc 2\xd1\x81\xd1\x82\xd0\xbd 1\xd1\x81\xd1\x82\xd0\xbe_ \xd1\x812\xd1\x82\xd0\xbe1\xd0\xb1 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb2 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb3 \xd1\x81\xd1\x82\xd0\xbe2\xd0\xb33\xd0\xbd 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb4 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb5 3\xd1\x812\xd1\x82\xd0\xbe\xd0\xb8 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xba 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xbc 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xbd 2\xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xb3 2\xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xb6 2\xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd1\x81 1\xd1\x81\xd1\x82\xd0\xbe\xd1\x81 1\xd1\x81\xd1\x82\xd0\xbe\xd1\x82 \xd1\x812\xd1\x82\xd0\xbe\xd1\x86 1\xd1\x81\xd1\x82\xd0\xbe\xd1\x8e 2\xd1\x81\xd1\x82\xd0\xbf 2\xd1\x81\xd1\x82\xd1\x80_ \xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd1\x812 4\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd1\x8f 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb5\xd0\xb4 \xd1\x81\xd1\x821\xd1\x80\xd0\xb5\xd0\xb9 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd0\xb2 \xd1\x81\xd1\x821\xd1\x80\xd0\xb8\xd0\xb7 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd0\xbb 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd1\x89 \xd1\x81\xd1\x821\xd1\x80\xd0\xbe\xd0\xb0 \xd1\x814\xd1\x821\xd1\x80\xd0\xbe\xd0\xb2 \xd1\x81\xd1\x821\xd1\x80\xd0\xbe\xd0\xb4 \xd1\x81\xd1\x821\xd1\x80\xd0\xbe\xd1\x85 \xd1\x81\xd1\x822\xd1\x80\xd1\x83\xd0\xb1 \xd1\x81\xd1\x821\xd1\x80\xd1\x83\xd1\x88 2\xd1\x81\xd1\x82\xd1\x81 \xd1\x811\xd1\x82\xd1\x83\xd1\x82 1\xd1\x81\xd1\x82\xd1\x83\xd1\x8e 2\xd1\x81\xd1\x82\xd1\x84 2\xd1\x81\xd1\x82\xd1\x86 1\xd1\x81\xd1\x82\xd1\x8b \xd1\x812\xd1\x82\xd1\x8b\xd0\xb2 \xd1\x814\xd1\x82\xd1\x8c 2\xd1\x81\xd1\x82\xd1\x8c_ 2\xd1\x81\xd1\x82\xd1\x8c\xd1\x81 3\xd1\x81\xd1\x82\xd1\x8c\xd1\x8e 1\xd1\x81\xd1\x82\xd1\x8c\xd1\x8f 1\xd1\x81\xd1\x82\xd1\x8f\xd0\xbc 1\xd1\x81\xd1\x82\xd1\x8f\xd1\x85 1\xd1\x81\xd1\x83 \xd1\x81\xd1\x832\xd0\xb1 \xd1\x81\xd1\x83\xd0\xb11\xd0\xb02 \xd1\x81\xd1\x83\xd0\xb11\xd0\xbe \xd1\x81\xd1\x831\xd0\xb2 \xd1\x81\xd1\x833\xd0\xb3\xd0\xbb \xd1\x81\xd1\x832\xd0\xb5\xd0\xb2 \xd1\x81\xd1\x832\xd0\xb7 \xd1\x81\xd1\x831\xd0\xba\xd1\x80 \xd1\x81\xd1\x83\xd0\xbc\xd0\xb01 \xd1\x81\xd1\x83\xd0\xbf\xd0\xb52 \xd1\x81\xd1\x83\xd1\x813\xd0\xbb \xd1\x81\xd1\x83\xd1\x813\xd0\xbf \xd1\x81\xd1\x831\xd1\x81\xd1\x82 \xd1\x81\xd1\x83\xd1\x821\xd1\x80 \xd1\x81\xd1\x832\xd1\x843 \xd1\x81\xd1\x831\xd1\x85 1\xd1\x812\xd1\x84\xd0\xb5 \xd1\x811\xd1\x852 1\xd1\x812\xd1\x85\xd0\xb5 2\xd1\x81\xd1\x86\xd0\xb0 \xd1\x812\xd1\x86\xd0\xb5\xd0\xbd\xd0\xb0 2\xd1\x813\xd1\x86\xd0\xb8 2\xd1\x81\xd1\x86\xd0\xbe \xd1\x81\xd1\x872 1\xd1\x81\xd1\x87\xd0\xb0 \xd1\x812\xd1\x87\xd0\xb0\xd1\x81 \xd1\x81\xd1\x87\xd0\xb52\xd1\x811\xd0\xba \xd1\x813\xd1\x87\xd0\xb8\xd0\xb2 2\xd1\x81\xd1\x87\xd0\xb8\xd0\xba \xd1\x812\xd1\x87\xd0\xb8\xd1\x82 \xd1\x811\xd1\x87\xd0\xbb 2\xd1\x81\xd1\x87\xd0\xbe \xd1\x81\xd1\x882 \xd1\x813\xd1\x88\xd0\xbd 1\xd1\x81\xd1\x8a2 \xd1\x81\xd1\x8a\xd0\xb53\xd0\xb4 \xd1\x81\xd1\x8a\xd0\xb53\xd0\xbb 1\xd1\x81\xd1\x8b \xd1\x81\xd1\x8b2\xd0\xb31 \xd1\x81\xd1\x8b2\xd0\xb7 \xd1\x81\xd1\x8b2\xd0\xbf1\xd0\xbb \xd1\x81\xd1\x8b2\xd1\x81 \xd1\x81\xd1\x8b\xd1\x811\xd0\xba\xd0\xb0 2\xd1\x81\xd1\x8c_ 1\xd1\x81\xd1\x8c\xd0\xb5 2\xd1\x81\xd1\x8c\xd0\xba 2\xd1\x81\xd1\x8c\xd1\x82 1\xd1\x81\xd1\x8c\xd1\x8e 1\xd1\x81\xd1\x8c\xd1\x8f \xd1\x81\xd1\x8d1\xd1\x80 \xd1\x812\xd1\x8d\xd1\x81 1\xd1\x812\xd1\x8e \xd1\x81\xd1\x8e1\xd1\x81 1\xd1\x81\xd1\x8f 2\xd1\x81\xd1\x8f\xd0\xb7 \xd1\x81\xd1\x8f3\xd1\x82\xd1\x8c \xd1\x82\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x82\xd0\xb0\xd0\xb12\xd1\x80 \xd1\x82\xd0\xb01\xd0\xb2\xd1\x80\xd0\xb8 1\xd1\x82\xd0\xb0\xd0\xb3 \xd1\x82\xd0\xb02\xd0\xb3\xd0\xbd \xd1\x82\xd0\xb01\xd0\xb72 \xd1\x82\xd0\xb0\xd0\xba3\xd0\xbb\xd0\xb5 \xd1\x822\xd0\xb0\xd0\xbd \xd1\x82\xd0\xb02\xd0\xbf\xd0\xbb 1\xd1\x82\xd0\xb0\xd1\x81 \xd1\x82\xd0\xb01\xd1\x81\xd1\x82 \xd1\x82\xd0\xb01\xd1\x82\xd1\x80 1\xd1\x82\xd0\xb0\xd1\x89 2\xd1\x821\xd0\xb12 2\xd1\x82\xd0\xb2_ 2\xd1\x822\xd0\xb2\xd0\xb0 \xd1\x821\xd0\xb2\xd0\xb5\xd0\xb9 \xd1\x821\xd0\xb2\xd0\xb5\xd0\xbb \xd1\x821\xd0\xb2\xd0\xb5\xd1\x82 2\xd1\x82\xd0\xb2\xd0\xb8 \xd1\x821\xd0\xb2\xd0\xbe\xd0\xb5 \xd1\x821\xd0\xb2\xd0\xbe1\xd0\xb7 2\xd1\x821\xd0\xb2\xd0\xbe\xd0\xb9 \xd1\x821\xd0\xb2\xd0\xbe\xd1\x81 2\xd1\x82\xd0\xb2\xd0\xbe\xd1\x8e 2\xd1\x821\xd0\xb2\xd1\x80 2\xd1\x82\xd0\xb2\xd1\x83 2\xd1\x82\xd0\xb2\xd1\x8b 2\xd1\x82\xd0\xb2\xd1\x8f 2\xd1\x82\xd0\xb3 2\xd1\x821\xd0\xb4 1\xd1\x822\xd0\xb5 \xd1\x82\xd0\xb52\xd0\xb3\xd0\xbd \xd1\x82\xd0\xb51\xd0\xb4 \xd1\x82\xd0\xb51\xd0\xb7\xd0\xbe 3\xd1\x82\xd0\xb5\xd0\xba\xd0\xb0 \xd1\x82\xd0\xb5\xd0\xba1\xd0\xbb 3\xd1\x82\xd0\xb5\xd0\xba\xd1\x88 \xd1\x82\xd0\xb5\xd0\xbb\xd0\xb51\xd0\xbe \xd1\x82\xd0\xb5\xd0\xbc2\xd0\xb11 \xd1\x82\xd0\xb52\xd0\xbe3\xd0\xb4 \xd1\x82\xd0\xb51\xd0\xbe\xd1\x85 \xd1\x82\xd0\xb54\xd0\xbf1\xd0\xbb \xd1\x82\xd0\xb52\xd1\x80\xd0\xb0\xd0\xba \xd1\x82\xd0\xb5\xd1\x80\xd0\xb52\xd0\xbe 3\xd1\x82\xd0\xb5\xd1\x80\xd0\xb7 \xd1\x82\xd0\xb5\xd1\x803\xd0\xba 3\xd1\x82\xd0\xb5\xd1\x80\xd1\x8f \xd1\x82\xd0\xb52\xd1\x81\xd0\xba\xd0\xb0 \xd1\x82\xd0\xb52\xd1\x811\xd0\xba\xd0\xb8 \xd1\x82\xd0\xb52\xd1\x811\xd0\xba\xd0\xbe \xd1\x82\xd0\xb52\xd1\x81\xd0\xba\xd1\x83 \xd1\x82\xd0\xb5\xd1\x81\xd1\x822 \xd1\x82\xd0\xb52\xd1\x85\xd0\xbe 2\xd1\x82\xd0\xb6 2\xd1\x821\xd0\xb7 \xd1\x82\xd0\xb8\xd0\xb02\xd0\xbc \xd1\x82\xd0\xb82\xd0\xb1\xd0\xbb \xd1\x82\xd0\xb83\xd0\xb42 \xd1\x82\xd0\xb81\xd0\xb7\xd0\xbd\xd0\xb0 \xd1\x82\xd0\xb8\xd0\xb82 \xd1\x82\xd0\xb8\xd0\xb8\xd1\x811 \xd1\x82\xd0\xb8\xd0\xba2 \xd1\x82\xd0\xb8\xd0\xbb\xd0\xb02\xd0\xbc \xd1\x821\xd0\xb8\xd0\xbc\xd0\xbf 2\xd1\x821\xd0\xb8\xd0\xbd\xd0\xb2 \xd1\x821\xd0\xb8\xd0\xbd\xd0\xb4 2\xd1\x82\xd0\xb8\xd0\xbd\xd0\xb6 2\xd1\x82\xd0\xb8\xd0\xbd\xd1\x84 \xd1\x82\xd0\xb81\xd1\x812\xd0\xbb \xd1\x82\xd0\xb83\xd1\x81\xd1\x82\xd0\xb2 \xd1\x82\xd0\xb83\xd1\x842\xd1\x80 \xd1\x82\xd0\xb81\xd1\x85\xd1\x80 2\xd1\x821\xd0\xba2 3\xd1\x822\xd0\xba\xd0\xb0\xd0\xb2 3\xd1\x822\xd0\xba\xd0\xb0\xd0\xbd 3\xd1\x822\xd0\xba\xd0\xb5\xd1\x82 3\xd1\x82\xd0\xba\xd0\xbd 2\xd1\x821\xd0\xbb \xd1\x82\xd0\xbb\xd0\xbe2\xd0\xb1 \xd1\x822\xd0\xbb\xd1\x8c \xd1\x82\xd0\xbc2 \xd1\x82\xd0\xbc\xd0\xb82\xd1\x81 \xd1\x82\xd0\xbc\xd0\xb8\xd1\x81\xd1\x821 \xd1\x823\xd0\xbc\xd1\x89 2\xd1\x821\xd0\xbd \xd1\x82\xd0\xbe2\xd0\xb1\xd0\xb5\xd1\x81 \xd1\x82\xd0\xbe1\xd0\xb12\xd0\xbb 2\xd1\x82\xd0\xbe\xd0\xb1\xd1\x8a \xd1\x82\xd0\xbe2\xd0\xb2\xd0\xbb \xd1\x82\xd0\xbe1\xd0\xb4 \xd1\x82\xd0\xbe3\xd0\xb42\xd1\x80 \xd1\x82\xd0\xbe1\xd0\xb72 \xd1\x82\xd0\xbe\xd0\xba2\xd1\x80 2\xd1\x821\xd0\xbe\xd0\xbc\xd0\xbc 2\xd1\x82\xd0\xbe\xd0\xbc\xd1\x81 2\xd1\x82\xd0\xbe\xd0\xbd\xd0\xb3 1\xd1\x82\xd0\xbe\xd1\x80\xd0\xb3 1\xd1\x82\xd0\xbe\xd1\x80\xd0\xb6 1\xd1\x82\xd0\xbe\xd1\x80\xd1\x81 \xd1\x82\xd0\xbe1\xd1\x80\xd1\x83 1\xd1\x82\xd0\xbe\xd1\x80\xd1\x88 \xd1\x82\xd0\xbe1\xd1\x812\xd0\xbd \xd1\x82\xd0\xbe1\xd1\x812\xd0\xbf \xd1\x82\xd0\xbe1\xd1\x812\xd1\x86 2\xd1\x82\xd0\xbe\xd1\x82\xd0\xb4 \xd1\x82\xd0\xbe3\xd1\x82\xd0\xba 1\xd1\x82\xd0\xbe\xd1\x89 2\xd1\x82\xd0\xbf2 \xd1\x82\xd0\xbf\xd0\xb01\xd1\x82 \xd1\x821\xd1\x80\xd0\xb0\xd0\xb3\xd0\xb0 2\xd1\x821\xd1\x80\xd0\xb0\xd0\xb6 2\xd1\x82\xd1\x80\xd0\xb1 2\xd1\x82\xd1\x80\xd0\xb2 2\xd1\x82\xd1\x80\xd0\xb3 2\xd1\x82\xd1\x80\xd0\xb4 \xd1\x82\xd1\x80\xd0\xb4\xd0\xbe2 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb0 1\xd1\x82\xd1\x80\xd0\xb5\xd0\xb1\xd0\xbe 1\xd1\x82\xd1\x80\xd0\xb5\xd0\xb1\xd1\x83 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb1\xd1\x8c \xd1\x821\xd1\x80\xd0\xb5\xd0\xb2\xd0\xb5 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb2\xd1\x88 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb3 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb4 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb5 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb7\xd0\xb0 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb7\xd0\xbd \xd1\x82\xd1\x80\xd0\xb5\xd0\xbf1\xd0\xbb 3\xd1\x82\xd1\x80\xd0\xb52\xd1\x81 \xd1\x82\xd1\x80\xd0\xb5\xd1\x811\xd0\xba \xd1\x821\xd1\x80\xd0\xb5\xd1\x81\xd1\x82 \xd1\x821\xd1\x80\xd0\xb5\xd1\x82\xd1\x83 3\xd1\x822\xd1\x80\xd0\xb52\xd1\x85 \xd1\x821\xd1\x80\xd0\xb5\xd1\x86 \xd1\x822\xd1\x80\xd0\xb5\xd1\x88\xd1\x8c \xd1\x821\xd1\x80\xd0\xb5\xd1\x8e 1\xd1\x82\xd1\x80\xd0\xb8\xd0\xb1 \xd1\x821\xd1\x80\xd0\xb8\xd0\xb2 \xd1\x82\xd1\x80\xd0\xb82\xd0\xb31\xd0\xbb \xd1\x821\xd1\x80\xd0\xb8\xd0\xbb \xd1\x821\xd1\x80\xd0\xb8\xd0\xbc 4\xd1\x82\xd1\x80\xd0\xb8\xd0\xbd\xd1\x81 \xd1\x82\xd1\x80\xd0\xb81\xd0\xbe \xd1\x821\xd1\x80\xd0\xb8\xd1\x82 \xd1\x82\xd1\x80\xd0\xb83\xd1\x84 \xd1\x821\xd1\x80\xd0\xb8\xd1\x89 2\xd1\x82\xd1\x80\xd0\xbc 2\xd1\x82\xd1\x80\xd0\xbd \xd1\x821\xd1\x80\xd0\xbe\xd0\xb3\xd0\xbb \xd1\x821\xd1\x80\xd0\xbe\xd0\xb8\xd0\xb4 2\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9 \xd1\x82\xd1\x80\xd0\xbe3\xd0\xbf\xd0\xbb \xd1\x821\xd1\x80\xd0\xbe\xd1\x80 \xd1\x821\xd1\x80\xd0\xbe\xd1\x81\xd0\xbe \xd1\x82\xd1\x80\xd0\xbe3\xd1\x82 4\xd1\x823\xd1\x80\xd0\xbe\xd1\x86 2\xd1\x82\xd1\x80\xd0\xbe\xd1\x8e 2\xd1\x82\xd1\x80\xd0\xbf 2\xd1\x82\xd1\x80\xd1\x80 1\xd1\x82\xd1\x80\xd1\x83\xd0\xb1 \xd1\x822\xd1\x80\xd1\x83\xd0\xb4 2\xd1\x82\xd1\x80\xd1\x83\xd0\xba \xd1\x822\xd1\x80\xd1\x83\xd0\xbc \xd1\x822\xd1\x80\xd1\x83\xd1\x82 2\xd1\x82\xd1\x80\xd1\x84 2\xd1\x82\xd1\x80\xd1\x89 2\xd1\x82\xd1\x80\xd1\x8a \xd1\x821\xd1\x80\xd1\x8b \xd1\x821\xd1\x80\xd1\x8f_ \xd1\x821\xd1\x80\xd1\x8f\xd0\xb2 2\xd1\x821\xd1\x80\xd1\x8f\xd0\xb4 \xd1\x821\xd1\x80\xd1\x8f\xd0\xb5 \xd1\x821\xd1\x80\xd1\x8f\xd0\xb6 \xd1\x821\xd1\x80\xd1\x8f\xd0\xb9 \xd1\x823\xd1\x80\xd1\x8f\xd0\xba \xd1\x821\xd1\x80\xd1\x8f\xd1\x82 \xd1\x821\xd1\x80\xd1\x8f\xd1\x89 \xd1\x821\xd1\x80\xd1\x8f\xd1\x8f 4\xd1\x821\xd1\x812 \xd1\x822\xd1\x81\xd0\xb1 \xd1\x822\xd1\x813\xd0\xb4 \xd1\x82\xd1\x81\xd0\xb5\xd0\xbf2 \xd1\x822\xd1\x813\xd0\xbc \xd1\x822\xd1\x813\xd0\xbf 2\xd1\x821\xd1\x82 \xd1\x822\xd1\x82\xd0\xbc \xd1\x82\xd1\x832\xd0\xb3\xd1\x80 \xd1\x82\xd1\x832\xd0\xb6\xd0\xb8\xd0\xbd 2\xd1\x821\xd1\x832\xd0\xbf\xd1\x80 \xd1\x82\xd1\x831\xd1\x81\xd0\xbb \xd1\x82\xd1\x831\xd1\x81\xd1\x82 \xd1\x82\xd1\x832\xd1\x84\xd0\xbb 1\xd1\x82\xd1\x83\xd1\x88\xd0\xb0 1\xd1\x82\xd1\x83\xd1\x88\xd0\xbe 1\xd1\x82\xd1\x83\xd1\x88\xd1\x8c 1\xd1\x82\xd1\x83\xd1\x89 2\xd1\x82\xd1\x84 2\xd1\x821\xd1\x85 4\xd1\x82\xd1\x86 2\xd1\x821\xd1\x87 2\xd1\x82\xd1\x882 2\xd1\x82\xd1\x89 2\xd1\x82\xd1\x8a \xd1\x82\xd1\x8b2\xd0\xb31 \xd1\x82\xd1\x8b2\xd1\x811\xd0\xba 2\xd1\x82\xd1\x8c 4\xd1\x82\xd1\x8c_ 3\xd1\x82\xd1\x8c\xd0\xb5 3\xd1\x82\xd1\x8c\xd0\xb8 \xd1\x82\xd1\x8c2\xd0\xbc 4\xd1\x82\xd1\x8c\xd1\x82 \xd1\x82\xd1\x8c\xd1\x8e1 2\xd1\x82\xd1\x8d \xd1\x822\xd1\x8e \xd1\x82\xd1\x8e1\xd1\x82 1\xd1\x82\xd1\x8f\xd0\xb3 1\xd1\x82\xd1\x8f\xd0\xb6 1\xd1\x82\xd1\x8f\xd0\xbf 2\xd1\x82\xd1\x8f2\xd1\x87 \xd1\x831\xd0\xb0 \xd1\x832\xd0\xb0\xd0\xbb\xd0\xb5 \xd1\x832\xd0\xb0\xd1\x81 \xd1\x833\xd0\xb1\xd0\xb5\xd0\xbb \xd1\x83\xd0\xb1\xd0\xbe1\xd0\xb4 \xd1\x83\xd0\xb1\xd0\xbe\xd1\x812 \xd1\x83\xd0\xb11\xd1\x80 1\xd1\x83\xd0\xb1\xd1\x80\xd0\xb0 \xd1\x83\xd0\xb13\xd1\x80\xd1\x8e 1\xd1\x832\xd0\xb1\xd1\x8b\xd1\x82 \xd1\x831\xd0\xb2\xd0\xb5_ \xd1\x831\xd0\xb2\xd0\xb8 \xd1\x83\xd0\xb22\xd0\xbb \xd1\x831\xd0\xb2\xd0\xbe \xd1\x831\xd0\xb2\xd1\x83 \xd1\x832\xd0\xb3\xd0\xb2 \xd1\x832\xd0\xb3\xd0\xbb \xd1\x832\xd0\xb3\xd0\xbd \xd1\x83\xd0\xb32\xd0\xbd\xd0\xb0 \xd1\x83\xd0\xb32\xd0\xbd\xd0\xb5 \xd1\x83\xd0\xb31\xd1\x80\xd0\xb5 \xd1\x83\xd0\xb31\xd1\x80\xd1\x8f \xd1\x83\xd0\xb4\xd0\xb01\xd1\x81 \xd1\x83\xd0\xb42\xd0\xb2 \xd1\x83\xd0\xb41\xd1\x80\xd0\xb0\xd0\xbc \xd1\x83\xd0\xb41\xd1\x80\xd0\xbe \xd1\x833\xd0\xb4\xd1\x83 \xd1\x831\xd0\xb5 \xd1\x83\xd0\xb52\xd0\xb4 \xd1\x83\xd0\xb52\xd0\xbb \xd1\x83\xd0\xb51\xd1\x81 \xd1\x83\xd0\xb52\xd1\x811\xd0\xba \xd1\x83\xd0\xb5\xd1\x812\xd0\xbb \xd1\x83\xd0\xb52\xd1\x85 \xd1\x832\xd0\xb6\xd0\xb6 \xd1\x831\xd0\xb72\xd0\xb2 \xd1\x831\xd0\xb7\xd0\xbe \xd1\x83\xd0\xb7\xd0\xbe3\xd0\xbf \xd1\x831\xd0\xb8 \xd1\x831\xd0\xba\xd0\xb0 \xd1\x83\xd0\xba1\xd0\xb2 \xd1\x831\xd0\xba\xd0\xb8 \xd1\x831\xd0\xba\xd0\xbe \xd1\x83\xd0\xba\xd0\xbe1\xd0\xb1 \xd1\x831\xd0\xba\xd1\x831 \xd1\x831\xd0\xbb\xd0\xb0 \xd1\x831\xd0\xbb\xd0\xb5 \xd1\x831\xd0\xbb\xd1\x83 \xd1\x831\xd0\xbb\xd1\x8b\xd1\x85 \xd1\x831\xd0\xbb\xd1\x8e \xd1\x832\xd0\xbc\xd1\x87 \xd1\x833\xd0\xbd\xd0\xb0 \xd1\x83\xd0\xbd2\xd0\xb41\xd1\x80 \xd1\x831\xd0\xbd\xd1\x8c \xd1\x831\xd0\xbe \xd1\x83\xd0\xbe2\xd0\xb1 \xd1\x83\xd0\xbe2\xd0\xb2 \xd1\x832\xd0\xbe\xd0\xb7\xd0\xb0 \xd1\x83\xd0\xbe2\xd0\xba \xd1\x83\xd0\xbe2\xd0\xbf \xd1\x83\xd0\xbe2\xd1\x81 \xd1\x83\xd0\xbe\xd1\x81\xd1\x821 \xd1\x83\xd0\xbe2\xd1\x821 \xd1\x83\xd0\xbe2\xd1\x84 \xd1\x832\xd0\xbf\xd0\xbb \xd1\x83\xd0\xbf1\xd0\xbb\xd1\x8e \xd1\x833\xd0\xbf\xd1\x80\xd0\xbe \xd1\x831\xd1\x80\xd0\xb0 \xd1\x831\xd1\x80\xd0\xb5 \xd1\x83\xd1\x80\xd0\xb52\xd1\x823\xd1\x80 \xd1\x831\xd1\x80\xd0\xb8 \xd1\x83\xd1\x80\xd0\xba\xd0\xb53 \xd1\x831\xd1\x80\xd0\xbe \xd1\x832\xd1\x80\xd0\xbe\xd0\xb4 \xd1\x83\xd1\x80\xd0\xbe2\xd0\xb4\xd0\xbb \xd1\x83\xd1\x80\xd1\x822\xd1\x80 \xd1\x833\xd1\x80\xd1\x83 \xd1\x831\xd1\x80\xd1\x8b \xd1\x831\xd1\x80\xd1\x8e \xd1\x831\xd1\x80\xd1\x8f \xd1\x832\xd1\x81\xd0\xb0\xd0\xb4 \xd1\x831\xd1\x81\xd0\xb3 \xd1\x83\xd1\x811\xd0\xba\xd0\xb0 \xd1\x83\xd1\x811\xd0\xba\xd0\xb8 \xd1\x83\xd1\x81\xd0\xba3\xd0\xbb \xd1\x83\xd1\x811\xd0\xba\xd0\xbe\xd0\xbc \xd1\x831\xd1\x81\xd0\xba\xd1\x80 \xd1\x83\xd1\x811\xd0\xba\xd1\x83_ \xd1\x83\xd1\x812\xd0\xbb \xd1\x83\xd1\x81\xd0\xbb\xd0\xb04\xd0\xb63 \xd1\x83\xd1\x813\xd0\xbb\xd0\xb8 \xd1\x831\xd1\x81\xd0\xbc \xd1\x832\xd1\x81\xd0\xbd \xd1\x83\xd1\x812\xd0\xbf \xd1\x83\xd1\x813\xd1\x81 \xd1\x831\xd1\x81\xd1\x82\xd0\xb5 \xd1\x831\xd1\x81\xd1\x82\xd1\x8f \xd1\x831\xd1\x81\xd1\x84 2\xd1\x83\xd1\x81\xd1\x86 \xd1\x832\xd1\x81\xd1\x87 \xd1\x832\xd1\x81\xd1\x8c \xd1\x833\xd1\x81\xd1\x8c\xd1\x8f \xd1\x831\xd1\x82\xd0\xb0 \xd1\x833\xd1\x82\xd0\xb5\xd1\x80 \xd1\x831\xd1\x82\xd0\xb8 \xd1\x83\xd1\x822\xd0\xbb\xd1\x8f \xd1\x831\xd1\x82\xd0\xbe \xd1\x83\xd1\x82\xd0\xbe3\xd0\xbf2\xd1\x81 \xd1\x83\xd1\x821\xd1\x80\xd0\xb8 \xd1\x831\xd1\x82\xd1\x83 \xd1\x831\xd1\x82\xd1\x8b \xd1\x831\xd1\x82\xd1\x8c\xd0\xb5 \xd1\x833\xd1\x82\xd1\x8c\xd1\x8e 1\xd1\x83\xd1\x82\xd1\x8e \xd1\x831\xd1\x82\xd1\x8f \xd1\x831\xd1\x83 \xd1\x83\xd1\x83\xd0\xb32 \xd1\x83\xd1\x832\xd1\x81 \xd1\x833\xd1\x84\xd0\xb8 \xd1\x83\xd1\x841\xd0\xbb \xd1\x83\xd1\x842\xd0\xbb\xd1\x8f \xd1\x832\xd1\x84\xd1\x80 \xd1\x83\xd1\x851\xd0\xb0\xd0\xb4 \xd1\x83\xd1\x85\xd0\xb02\xd1\x82 \xd1\x832\xd1\x85\xd0\xb2 \xd1\x833\xd1\x854\xd0\xb2\xd0\xbe \xd1\x83\xd1\x851\xd0\xbb \xd1\x83\xd1\x853\xd0\xbb\xd1\x8f \xd1\x83\xd1\x851\xd1\x80 \xd1\x832\xd1\x87\xd0\xb5\xd0\xb1 1\xd1\x83\xd1\x87\xd1\x80 \xd1\x831\xd1\x87\xd1\x8c \xd1\x833\xd1\x88\xd0\xb5 \xd1\x833\xd1\x88\xd0\xb8 \xd1\x832\xd1\x88\xd0\xbb \xd1\x83\xd1\x881\xd0\xbb\xd0\xb0 \xd1\x832\xd1\x88\xd0\xbf 2\xd1\x83\xd1\x8d \xd1\x831\xd1\x8f \xd1\x83\xd1\x8f2\xd0\xb7 1\xd1\x84 \xd1\x84\xd0\xb02\xd0\xb11 \xd1\x84\xd0\xb02\xd0\xb3\xd0\xbd \xd1\x84\xd0\xb01\xd0\xb7\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbd2\xd0\xb4 \xd1\x84\xd0\xb0\xd0\xbd\xd0\xb41\xd1\x80 \xd1\x84\xd0\xb01\xd1\x82\xd1\x80 \xd1\x84\xd0\xb02\xd1\x85 3\xd1\x84\xd0\xb0\xd1\x88 \xd1\x84\xd0\xb0\xd1\x8d1 2\xd1\x841\xd0\xb1 2\xd1\x841\xd0\xb2 2\xd1\x84\xd0\xb3 2\xd1\x841\xd0\xb4 \xd1\x84\xd0\xb5\xd0\xb21\xd1\x80 \xd1\x84\xd0\xb5\xd0\xb41\xd1\x80 \xd1\x84\xd0\xb51\xd0\xbe3 \xd1\x84\xd0\xb52\xd1\x811\xd0\xba \xd1\x844\xd0\xb8 \xd1\x84\xd0\xb8\xd0\xb02\xd0\xba1 \xd1\x84\xd0\xb82\xd0\xb3\xd0\xbb \xd1\x84\xd0\xb82\xd0\xb6 \xd1\x84\xd0\xb82\xd0\xb7\xd0\xbe \xd1\x84\xd0\xb82\xd0\xbd\xd0\xb8\xd0\xbd \xd1\x84\xd0\xb81\xd0\xbe 3\xd1\x84\xd0\xb8\xd1\x82 2\xd1\x841\xd0\xba \xd1\x842\xd0\xbb\xd0\xb0 \xd1\x842\xd0\xbb\xd0\xb8 \xd1\x842\xd0\xbb\xd0\xbe 2\xd1\x84\xd0\xbc 2\xd1\x841\xd0\xbd 2\xd1\x84\xd0\xbe\xd0\xb1\xd1\x8a 3\xd1\x84\xd0\xbe\xd0\xbd \xd1\x84\xd0\xbe2\xd1\x80\xd0\xb2 2\xd1\x841\xd0\xbe\xd1\x80\xd0\xb3 \xd1\x84\xd0\xbe\xd1\x803\xd1\x82\xd1\x80 \xd1\x84\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x84\xd0\xbe\xd1\x811\xd0\xba 3\xd1\x84\xd0\xbe\xd1\x82 \xd1\x84\xd0\xbe\xd1\x82\xd0\xbe3\xd0\xbf \xd1\x841\xd1\x80\xd0\xb0\xd0\xb1 \xd1\x84\xd1\x80\xd0\xb01\xd0\xb7 \xd1\x84\xd1\x80\xd0\xb01\xd1\x81 \xd1\x841\xd1\x80\xd0\xb0\xd1\x82 \xd1\x842\xd1\x80\xd0\xb5\xd0\xbd \xd1\x84\xd1\x80\xd0\xb52\xd1\x81 \xd1\x841\xd1\x80\xd0\xb8 \xd1\x842\xd1\x80\xd0\xb8\xd0\xb6 \xd1\x842\xd1\x80\xd0\xb8\xd0\xb7 \xd1\x841\xd1\x80\xd0\xbe \xd1\x842\xd1\x80\xd0\xbe\xd0\xbd \xd1\x841\xd1\x80\xd1\x83 2\xd1\x843\xd1\x81 2\xd1\x841\xd1\x82 \xd1\x842\xd1\x82\xd0\xbc \xd1\x842\xd1\x82\xd0\xbe\xd1\x80 2\xd1\x841\xd1\x832\xd0\xbf \xd1\x84\xd1\x833\xd1\x82\xd0\xbb 2\xd1\x84\xd1\x83\xd1\x84 2\xd1\x84\xd1\x84 2\xd1\x841\xd1\x87 2\xd1\x84\xd1\x882 2\xd1\x84\xd1\x8c_ \xd1\x842\xd1\x8e1 1\xd1\x85\xd0\xb0 \xd1\x85\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x85\xd0\xb02\xd0\xb4 2\xd1\x851\xd0\xb0\xd0\xba \xd1\x85\xd0\xb0\xd0\xbd2\xd0\xb4 \xd1\x85\xd0\xb0\xd0\xbe3 \xd1\x851\xd0\xb0\xd1\x80\xd1\x88 2\xd1\x851\xd0\xb1 1\xd1\x852\xd0\xb2 2\xd1\x853\xd0\xb2\xd0\xb5 2\xd1\x853\xd0\xb2\xd0\xb8 \xd1\x853\xd0\xb2\xd1\x8b 2\xd1\x85\xd0\xb3 \xd1\x853\xd0\xb42 1\xd1\x85\xd0\xb5 \xd1\x85\xd0\xb5\xd0\xbe3 \xd1\x851\xd0\xb72 1\xd1\x85\xd0\xb8 \xd1\x85\xd0\xb8\xd0\xb0\xd1\x821 \xd1\x85\xd0\xb8\xd0\xb52 2\xd1\x851\xd0\xb8\xd0\xb7\xd1\x8b \xd1\x85\xd0\xb81\xd1\x812 \xd1\x851\xd0\xba2 \xd1\x851\xd0\xbb\xd0\xb0\xd0\xb2 \xd1\x851\xd0\xbb\xd0\xb0\xd1\x81 \xd1\x851\xd0\xbb\xd0\xb0\xd1\x82 \xd1\x851\xd0\xbb\xd0\xb0\xd1\x86 1\xd1\x85\xd0\xbb\xd0\xb5\xd0\xb1 \xd1\x852\xd0\xbb\xd0\xb5\xd1\x81 \xd1\x851\xd0\xbb\xd0\xb5\xd1\x82 \xd1\x853\xd0\xbb\xd0\xbe_ \xd1\x852\xd0\xbb\xd0\xbe\xd0\xbf 1\xd1\x852\xd0\xbb\xd0\xbe\xd1\x80 \xd1\x851\xd0\xbb\xd1\x83 1\xd1\x852\xd0\xbc\xd1\x83 2\xd1\x851\xd0\xbd 3\xd1\x852\xd0\xbd\xd1\x8b 1\xd1\x85\xd0\xbe 2\xd1\x851\xd0\xbe2\xd0\xba \xd1\x85\xd0\xbe\xd0\xbf2 \xd1\x85\xd0\xbe2\xd0\xbf\xd0\xb5 \xd1\x85\xd0\xbe2\xd0\xbf\xd0\xbe\xd1\x80 \xd1\x85\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x851\xd0\xbe\xd1\x81\xd0\xbc 2\xd1\x851\xd0\xbe\xd1\x81\xd0\xbd \xd1\x85\xd0\xbe\xd1\x842 \xd1\x85\xd0\xbe\xd1\x851\xd0\xbb \xd1\x85\xd0\xbe\xd1\x8f2 \xd1\x85\xd0\xbf2 \xd1\x851\xd1\x80\xd0\xb0\xd0\xb7 1\xd1\x85\xd1\x80\xd0\xb0\xd0\xbd \xd1\x851\xd1\x80\xd0\xb01\xd1\x812 \xd1\x851\xd1\x80\xd0\xb5\xd0\xb9 \xd1\x85\xd1\x80\xd0\xb82\xd0\xbf\xd0\xbb \xd1\x852\xd1\x80\xd0\xb8\xd1\x81 \xd1\x851\xd1\x80\xd0\xbe\xd0\xb2 1\xd1\x85\xd1\x80\xd0\xbe\xd0\xbc \xd1\x85\xd1\x80\xd0\xbe2\xd0\xbc\xd1\x87 \xd1\x851\xd1\x80\xd1\x8b \xd1\x851\xd1\x80\xd1\x8f 2\xd1\x851\xd1\x812 2\xd1\x851\xd1\x82 1\xd1\x85\xd1\x83_ \xd1\x851\xd1\x832\xd0\xb3 2\xd1\x85\xd1\x83\xd0\xb5 2\xd1\x85\xd1\x83\xd0\xb9 1\xd1\x85\xd1\x83\xd0\xbd \xd1\x851\xd1\x832\xd1\x80 \xd1\x85\xd1\x833\xd1\x80\xd0\xb0 1\xd1\x85\xd1\x83\xd1\x81 1\xd1\x85\xd1\x83\xd1\x88 2\xd1\x85\xd1\x83\xd1\x8e \xd1\x851\xd1\x852 2\xd1\x851\xd1\x872 2\xd1\x85\xd1\x88 \xd1\x85\xd1\x8c\xd1\x8e1 1\xd1\x86 \xd1\x86\xd0\xb01 3\xd1\x86\xd0\xb0_ 3\xd1\x86\xd0\xb0\xd0\xbc \xd1\x86\xd0\xb02\xd0\xbf\xd0\xbb 3\xd1\x86\xd0\xb0\xd1\x85 2\xd1\x861\xd0\xb1 \xd1\x862\xd0\xb2\xd0\xb5 2\xd1\x86\xd0\xb2\xd1\x8b 2\xd1\x86\xd0\xb3 2\xd1\x861\xd0\xb4 \xd1\x86\xd0\xb51\xd0\xb7 \xd1\x86\xd0\xb51\xd0\xba \xd1\x86\xd0\xb51\xd0\xbe\xd1\x82 \xd1\x86\xd0\xb5\xd0\xbf1\xd0\xbb \xd1\x86\xd0\xb5\xd1\x812\xd0\xbb \xd1\x86\xd0\xb51\xd1\x82 2\xd1\x86\xd0\xb5\xd1\x82\xd0\xb0\xd1\x82 2\xd1\x861\xd0\xb7 \xd1\x86\xd0\xb81 \xd1\x86\xd0\xb82\xd0\xba1 \xd1\x86\xd0\xb8\xd0\xba3\xd0\xbb \xd1\x86\xd0\xb82\xd0\xbe\xd0\xbb \xd1\x86\xd0\xb8\xd0\xbf2 \xd1\x86\xd0\xb82\xd1\x81\xd0\xba \xd1\x86\xd0\xb8\xd1\x833 \xd1\x86\xd0\xb8\xd1\x841\xd1\x80 2\xd1\x861\xd0\xba2 2\xd1\x861\xd0\xbb 2\xd1\x86\xd0\xbc 2\xd1\x861\xd0\xbd \xd1\x861\xd0\xbe2\xd0\xb1 2\xd1\x861\xd0\xbe2\xd0\xb4 2\xd1\x861\xd0\xbe\xd1\x82 2\xd1\x86\xd0\xbf2 2\xd1\x861\xd1\x80 2\xd1\x861\xd1\x81 2\xd1\x861\xd1\x82 3\xd1\x86\xd1\x83 2\xd1\x86\xd1\x86 2\xd1\x863\xd1\x882 3\xd1\x86\xd1\x8b \xd1\x86\xd1\x8b2\xd0\xbf \xd1\x86\xd1\x8b\xd0\xbf3\xd0\xbb \xd1\x86\xd1\x8e1 1\xd1\x87\xd0\xb0 \xd1\x87\xd0\xb02\xd0\xb4\xd1\x80 \xd1\x87\xd0\xb02\xd0\xb4\xd1\x86 \xd1\x87\xd0\xb02\xd0\xb5\xd0\xb2\xd0\xbe \xd1\x87\xd0\xb02\xd0\xb5\xd0\xb2\xd1\x8b \xd1\x87\xd0\xb02\xd0\xb5\xd1\x80 \xd1\x87\xd0\xb0\xd1\x81\xd1\x821\xd0\xb2 \xd1\x87\xd0\xb01\xd1\x81\xd1\x82\xd0\xb5 \xd1\x87\xd0\xb01\xd1\x81\xd1\x82\xd1\x83 \xd1\x87\xd0\xb01\xd1\x81\xd1\x82\xd1\x8f 3\xd1\x87\xd0\xb0\xd1\x82\xd0\xbe 3\xd1\x87\xd0\xb0\xd1\x82\xd1\x8b 2\xd1\x871\xd0\xb1 \xd1\x871\xd0\xb2 2\xd1\x871\xd0\xb4 1\xd1\x87\xd0\xb5 \xd1\x87\xd0\xb51\xd0\xb2\xd0\xbb \xd1\x87\xd0\xb52\xd0\xb3\xd0\xbb \xd1\x87\xd0\xb51\xd0\xbe \xd1\x87\xd0\xb5\xd1\x802\xd1\x81 \xd1\x87\xd0\xb5\xd1\x80\xd1\x81\xd1\x821 \xd1\x87\xd0\xb51\xd1\x81\xd0\xbb \xd1\x872\xd0\xb6 \xd1\x87\xd0\xb6\xd0\xbe2 1\xd1\x87\xd0\xb8 3\xd1\x87\xd0\xb8\xd0\xba 3\xd1\x87\xd0\xb8\xd1\x86 2\xd1\x871\xd0\xba 1\xd1\x872\xd0\xbb\xd0\xb0 \xd1\x872\xd0\xbb\xd0\xb5 \xd1\x873\xd0\xbb\xd0\xb5\xd0\xb3 \xd1\x873\xd0\xbb\xd0\xb5\xd0\xb6 2\xd1\x87\xd0\xbb\xd0\xb8 \xd1\x872\xd0\xbb\xd0\xb8_ 1\xd1\x872\xd0\xbb\xd0\xbe 1\xd1\x87\xd0\xbc 2\xd1\x87\xd0\xbc\xd0\xb0 2\xd1\x87\xd0\xbc\xd0\xb5 \xd1\x872\xd0\xbc\xd0\xbe 2\xd1\x871\xd0\xbd 3\xd1\x87\xd0\xbe 2\xd1\x871\xd1\x81 2\xd1\x871\xd1\x82\xd0\xb0 \xd1\x872\xd1\x82\xd0\xb5 2\xd1\x87\xd1\x82\xd0\xbc 1\xd1\x87\xd1\x83 3\xd1\x87\xd1\x83\xd0\xba \xd1\x872\xd1\x85 2\xd1\x871\xd1\x87 2\xd1\x87\xd1\x8c_ 1\xd1\x87\xd1\x8c\xd0\xb5 1\xd1\x87\xd1\x8c\xd0\xb8 2\xd1\x87\xd1\x8c\xd1\x81 2\xd1\x87\xd1\x8c\xd1\x82 1\xd1\x87\xd1\x8c\xd1\x8e 1\xd1\x87\xd1\x8c\xd1\x8f 1\xd1\x88 \xd1\x88\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x88\xd0\xb02\xd0\xb3\xd0\xbd \xd1\x88\xd0\xb02\xd0\xb31\xd1\x80 \xd1\x88\xd0\xb02\xd0\xb4\xd1\x80 \xd1\x88\xd0\xb0\xd0\xbd2\xd0\xba\xd1\x80 \xd1\x88\xd0\xb0\xd1\x803\xd1\x822 \xd1\x88\xd0\xb01\xd1\x81\xd1\x82 \xd1\x88\xd0\xb01\xd1\x82\xd1\x80\xd0\xbe 2\xd1\x881\xd0\xb1 \xd1\x882\xd0\xb2 \xd1\x883\xd0\xb2\xd0\xb5\xd0\xbd \xd1\x88\xd0\xb52\xd0\xb3\xd0\xbb \xd1\x88\xd0\xb51\xd0\xba \xd1\x88\xd0\xb51\xd0\xbe2 \xd1\x88\xd0\xb53\xd0\xbf\xd0\xbb \xd1\x88\xd0\xb51\xd1\x812 \xd1\x88\xd0\xb82\xd0\xb1\xd0\xbb \xd1\x88\xd0\xb82\xd0\xbf\xd0\xbb \xd1\x88\xd0\xb8\xd1\x841\xd1\x80 2\xd1\x881\xd0\xba2 3\xd1\x882\xd0\xba\xd0\xbe\xd0\xbb 2\xd1\x881\xd0\xbb\xd0\xb5\xd0\xb9 2\xd1\x88\xd0\xbb\xd0\xb5\xd0\xbd \xd1\x882\xd0\xbb\xd0\xb8_ 2\xd1\x88\xd0\xbb\xd0\xb8\xd0\xb2 2\xd1\x88\xd0\xbb\xd0\xb8\xd0\xbb \xd1\x882\xd0\xbb\xd0\xb8\xd0\xbd \xd1\x882\xd0\xbb\xd0\xb8\xd1\x81 \xd1\x882\xd0\xbb\xd0\xb8\xd1\x82\xd0\xb5 \xd1\x882\xd0\xbb\xd0\xb8\xd1\x84 \xd1\x882\xd0\xbb\xd0\xbe_ 2\xd1\x88\xd0\xbb\xd0\xbe\xd0\xb2 \xd1\x882\xd0\xbb\xd0\xbe\xd0\xb3 \xd1\x881\xd0\xbb\xd1\x8b \xd1\x882\xd0\xbb\xd1\x8e 2\xd1\x88\xd0\xbb\xd1\x8f\xd0\xb5 2\xd1\x88\xd0\xbb\xd1\x8f\xd0\xba \xd1\x882\xd0\xbb\xd1\x8f\xd0\xbf 2\xd1\x88\xd0\xbb\xd1\x8f\xd1\x82 2\xd1\x88\xd0\xbb\xd1\x8f\xd1\x87 2\xd1\x88\xd0\xbb\xd1\x8f\xd1\x8e 2\xd1\x88\xd0\xbc 3\xd1\x882\xd0\xbc\xd1\x8b 4\xd1\x883\xd0\xbc\xd1\x8b_ 2\xd1\x881\xd0\xbd 4\xd1\x88\xd0\xbd\xd0\xb8 \xd1\x882\xd0\xbd\xd1\x83\xd1\x80 \xd1\x882\xd0\xbf2 \xd1\x883\xd0\xbf\xd1\x80 2\xd1\x881\xd1\x80 2\xd1\x881\xd1\x81 \xd1\x881\xd1\x82\xd0\xb8 2\xd1\x88\xd1\x82\xd1\x81 \xd1\x88\xd1\x832\xd0\xb5\xd0\xb2 \xd1\x88\xd1\x83\xd1\x81\xd1\x821 2\xd1\x88\xd1\x84 \xd1\x881\xd1\x85 2\xd1\x88\xd1\x86 2\xd1\x881\xd1\x87 2\xd1\x88\xd1\x8c 4\xd1\x88\xd1\x8c_ 3\xd1\x88\xd1\x8c\xd0\xb5 3\xd1\x88\xd1\x8c\xd0\xb8 3\xd1\x88\xd1\x8c\xd1\x8e 3\xd1\x88\xd1\x8c\xd1\x8f \xd1\x882\xd1\x8e1 1\xd1\x89 2\xd1\x893\xd0\xb22 \xd1\x89\xd0\xb51\xd0\xb12\xd0\xbb \xd1\x89\xd0\xb52\xd0\xb3\xd0\xbb \xd1\x89\xd0\xb5\xd0\xb41\xd1\x80 \xd1\x89\xd0\xb5\xd0\xb82 \xd1\x89\xd0\xb5\xd0\xb8\xd1\x811 \xd1\x89\xd0\xb51\xd1\x81 \xd1\x89\xd0\xb51\xd1\x85 \xd1\x89\xd0\xb5\xd1\x882 \xd1\x89\xd0\xb53\xd1\x88\xd0\xba \xd1\x89\xd0\xb82\xd0\xbf1\xd0\xbb 2\xd1\x89\xd0\xbc 2\xd1\x891\xd0\xbd 2\xd1\x891\xd1\x80 2\xd1\x89\xd1\x8c_ \xd1\x8a1 \xd1\x8a\xd0\xb52\xd0\xb3 \xd1\x8a\xd0\xb52\xd0\xb4 \xd1\x8a\xd0\xb53\xd0\xb4\xd0\xbe \xd1\x8a\xd0\xb52\xd0\xbb \xd1\x8a2\xd0\xb52\xd1\x80 \xd1\x8a\xd0\xb52\xd1\x81 \xd1\x8a\xd0\xb52\xd1\x85\xd0\xb8 \xd1\x8a\xd1\x8e2 \xd1\x8a\xd1\x8f2 \xd1\x8a\xd1\x8f3\xd0\xbd \xd1\x8b1 \xd1\x8b2\xd0\xb1\xd0\xbb \xd1\x8b3\xd0\xb3\xd0\xb0 \xd1\x8b3\xd0\xb3\xd0\xb8 \xd1\x8b\xd0\xb32\xd0\xbb \xd1\x8b2\xd0\xb3\xd0\xbd \xd1\x8b2\xd0\xb4\xd0\xbb \xd1\x8b\xd0\xb42\xd1\x80\xd0\xb5 \xd1\x8b2\xd0\xb41\xd1\x80\xd0\xbe \xd1\x8b2\xd0\xb4\xd1\x80\xd1\x8f \xd1\x8b\xd0\xb52 \xd1\x8b3\xd0\xb62\xd0\xb4 \xd1\x8b\xd0\xb72\xd0\xb2\xd0\xb0 \xd1\x8b\xd0\xb72\xd0\xb4 \xd1\x8b2\xd0\xb7\xd0\xbb \xd1\x8b2\xd0\xb7\xd0\xbd \xd1\x8b\xd0\xb72\xd0\xbd\xd0\xb0 \xd1\x8b\xd0\xb82 \xd1\x8b\xd0\xb8\xd0\xb31 \xd1\x8b2\xd0\xba1\xd0\xb2 \xd1\x8b\xd0\xba2\xd0\xbb \xd1\x8b2\xd0\xba3\xd0\xbb\xd0\xbe \xd1\x8b\xd0\xba\xd0\xbe1\xd0\xb7 \xd1\x8b\xd0\xba1\xd1\x81 \xd1\x8b2\xd0\xbb\xd1\x8c \xd1\x8b2\xd0\xbc\xd1\x87 \xd1\x8b\xd0\xbd\xd0\xbe\xd1\x813\xd0\xbb \xd1\x8b3\xd0\xbf\xd0\xbe \xd1\x8b\xd1\x80\xd0\xb02\xd1\x813 \xd1\x8b\xd1\x802\xd0\xb2 \xd1\x8b\xd1\x80\xd0\xb52\xd1\x85 \xd1\x8b3\xd1\x81\xd0\xb0 \xd1\x8b3\xd1\x81\xd0\xb5 \xd1\x8b\xd1\x811\xd0\xba\xd0\xb8 \xd1\x8b\xd1\x811\xd0\xba\xd1\x83 \xd1\x8b2\xd1\x81\xd0\xbd \xd1\x8b3\xd1\x81\xd0\xbe \xd1\x8b\xd1\x812\xd0\xbf \xd1\x8b2\xd1\x81\xd1\x85 \xd1\x8b\xd1\x812\xd1\x87 \xd1\x8b2\xd1\x81\xd1\x88 \xd1\x8b\xd1\x821\xd0\xb2\xd0\xb8 \xd1\x8b\xd1\x822\xd1\x80 \xd1\x8b3\xd1\x82\xd1\x8c\xd1\x8e \xd1\x8b3\xd1\x82\xd1\x8c\xd1\x8f \xd1\x8b\xd1\x832 \xd1\x8b2\xd1\x881\xd0\xbb \xd1\x8b3\xd1\x88\xd1\x8c \xd1\x8c1 \xd1\x8c\xd0\xb12 \xd1\x8c2\xd0\xb2\xd1\x8f \xd1\x8c2\xd0\xb4\xd1\x86 \xd1\x8c2\xd0\xb5 \xd1\x8c\xd0\xb51\xd0\xb7\xd0\xbe \xd1\x8c\xd0\xb51\xd0\xba \xd1\x8c\xd0\xb52\xd1\x811\xd0\xba \xd1\x8c2\xd0\xb7\xd0\xbd \xd1\x8c2\xd0\xb81 \xd1\x8c2\xd0\xba\xd0\xbb \xd1\x8c\xd0\xbc\xd0\xb83\xd0\xb4 \xd1\x8c\xd0\xbc\xd0\xb83\xd0\xba \xd1\x8c\xd0\xbc\xd0\xbe1 \xd1\x8c\xd0\xbd\xd0\xb52\xd0\xbe \xd1\x8c2\xd0\xbe \xd1\x8c2\xd0\xbf1\xd0\xbb \xd1\x8c3\xd0\xbf2\xd1\x82\xd0\xbe \xd1\x8c\xd1\x812\xd0\xba \xd1\x8c2\xd1\x81\xd0\xbd \xd1\x8c2\xd1\x81\xd1\x82\xd0\xb8 \xd1\x8c2\xd1\x81\xd1\x82\xd1\x8f \xd1\x8c2\xd1\x821\xd0\xb0\xd0\xbc\xd0\xbf \xd1\x8c\xd1\x82\xd0\xb83\xd0\xbc \xd1\x8c2\xd1\x82\xd0\xbc \xd1\x8c2\xd1\x82\xd0\xbe\xd1\x82 \xd1\x8c2\xd1\x82\xd1\x80\xd0\xb0\xd0\xb1 \xd1\x8c\xd1\x822\xd1\x80\xd0\xb5 \xd1\x8c\xd1\x822\xd1\x80\xd1\x83 \xd1\x8c\xd1\x822\xd1\x80\xd1\x8b \xd1\x8c\xd1\x85\xd0\xbe2 \xd1\x8c\xd1\x85\xd0\xbe\xd0\xb71 \xd1\x8c2\xd1\x89\xd0\xb0 \xd1\x8c2\xd1\x89\xd0\xb5 \xd1\x8c2\xd1\x89\xd1\x83 \xd1\x8c2\xd1\x8e \xd1\x8c2\xd1\x8f \xd1\x8c\xd1\x8f1\xd0\xb2 \xd1\x8c3\xd1\x8f\xd0\xb3\xd1\x81 1\xd1\x8d \xd1\x8d1\xd0\xb2 \xd1\x8d\xd0\xb21\xd1\x80 2\xd1\x8d\xd0\xb3 \xd1\x8d\xd0\xb41\xd1\x80 \xd1\x8d\xd0\xba1\xd0\xbb \xd1\x8d\xd0\xba\xd1\x811 \xd1\x8d\xd0\xba2\xd1\x81\xd1\x82 \xd1\x8d\xd0\xbb\xd0\xb51\xd0\xbe \xd1\x8d2\xd0\xbc \xd1\x8d3\xd0\xbc\xd0\xb0 \xd1\x8d2\xd0\xbd \xd1\x8d3\xd0\xbd\xd1\x8c \xd1\x8d\xd0\xbe2\xd0\xb7 \xd1\x8d2\xd0\xbf \xd1\x8d\xd0\xbf\xd0\xb83\xd0\xba \xd1\x8d1\xd1\x80\xd0\xb5 \xd1\x8d1\xd1\x80\xd0\xb8 \xd1\x8d\xd1\x80\xd0\xb84\xd1\x82\xd1\x80 \xd1\x8d\xd1\x80\xd0\xbe1\xd1\x812 \xd1\x8d1\xd1\x80\xd1\x83 \xd1\x8d1\xd1\x80\xd1\x8b \xd1\x8d\xd1\x811 \xd1\x8d\xd1\x81\xd0\xba2 \xd1\x8d\xd1\x813\xd0\xbc \xd1\x8d2\xd1\x81\xd0\xbe \xd1\x8d\xd1\x813\xd1\x82\xd0\xb5 \xd1\x8d\xd1\x812\xd1\x821\xd1\x80 \xd1\x8d2\xd1\x82\xd0\xb5 \xd1\x8d\xd1\x82\xd0\xb8\xd0\xbb1\xd0\xb0 \xd1\x8d\xd1\x821\xd1\x80\xd0\xb0 \xd1\x8d2\xd1\x84 \xd1\x8d\xd1\x852 \xd1\x8d\xd1\x85\xd0\xbe3 \xd1\x8d2\xd1\x86 \xd1\x8d\xd1\x8f2 1\xd1\x8e \xd1\x8e1\xd0\xb0 \xd1\x8e1\xd0\xb1 \xd1\x8e2\xd0\xb1\xd0\xb2 \xd1\x8e2\xd0\xb1\xd0\xbb \xd1\x8e2\xd0\xb11\xd1\x80\xd0\xb5 \xd1\x8e1\xd0\xb2 \xd1\x8e1\xd0\xb4\xd1\x8c \xd1\x8e1\xd0\xb5 \xd1\x8e\xd0\xb72\xd0\xb3 \xd1\x8e\xd0\xb7\xd0\xb82\xd0\xba \xd1\x8e1\xd0\xb7\xd0\xbe \xd1\x8e1\xd0\xb8 \xd1\x8e2\xd0\xb8\xd0\xb4\xd0\xb0\xd0\xbb \xd1\x8e1\xd0\xba \xd1\x8e2\xd0\xba1\xd0\xb2 \xd1\x8e1\xd0\xbb\xd0\xb0 \xd1\x8e1\xd0\xbb\xd0\xb5 \xd1\x8e2\xd0\xbb\xd0\xb8 \xd1\x8e1\xd0\xbb\xd1\x8e 2\xd1\x8e\xd0\xbc \xd1\x8e2\xd0\xbc\xd1\x87 \xd1\x8e2\xd0\xbd\xd1\x8c \xd1\x8e1\xd0\xbe1 \xd1\x8e1\xd1\x80\xd0\xb0 \xd1\x8e1\xd1\x80\xd0\xb5 \xd1\x8e\xd1\x80\xd0\xb54\xd0\xbc \xd1\x8e1\xd1\x80\xd0\xb8 \xd1\x8e\xd1\x80\xd0\xb82\xd1\x81\xd0\xba \xd1\x8e1\xd1\x80\xd0\xbe \xd1\x8e1\xd1\x80\xd1\x83 \xd1\x8e1\xd1\x80\xd1\x8b \xd1\x8e2\xd1\x811\xd0\xba \xd1\x8e1\xd1\x81\xd1\x82\xd0\xb0 \xd1\x8e1\xd1\x81\xd1\x82\xd0\xb5 \xd1\x8e1\xd1\x81\xd1\x82\xd0\xbe \xd1\x8e1\xd1\x81\xd1\x82\xd1\x8f \xd1\x8e1\xd1\x82\xd0\xb8 \xd1\x8e1\xd1\x82\xd0\xbe \xd1\x8e1\xd1\x82\xd1\x83 \xd1\x8e1\xd1\x82\xd1\x8b \xd1\x8e1\xd1\x85 \xd1\x8e\xd1\x85\xd0\xb01\xd1\x81 \xd1\x8e1\xd1\x87 \xd1\x8e2\xd1\x89\xd1\x8c \xd1\x8e1\xd1\x8f \xd1\x8f2\xd0\xb1\xd1\x80 \xd1\x8f\xd0\xb11\xd1\x80\xd0\xb0 \xd1\x8f\xd0\xb13\xd1\x80\xd0\xb5 \xd1\x8f\xd0\xb11\xd1\x80\xd0\xb8 \xd1\x8f\xd0\xb13\xd1\x80\xd1\x8e 3\xd1\x8f\xd0\xb2\xd0\xb8\xd0\xba\xd1\x81 \xd1\x8f1\xd0\xb2\xd0\xbe \xd1\x8f1\xd0\xb2\xd1\x83 \xd1\x8f1\xd0\xb22\xd1\x85 \xd1\x8f2\xd0\xb31\xd0\xbb \xd1\x8f2\xd0\xb3\xd0\xbd \xd1\x8f\xd0\xb41\xd0\xb2 \xd1\x8f\xd0\xb41\xd1\x80 \xd1\x8f1\xd0\xb5 \xd1\x8f\xd0\xb72\xd0\xb3\xd0\xbd \xd1\x8f1\xd0\xb7\xd0\xbe \xd1\x8f1\xd0\xb8 \xd1\x8f1\xd0\xba \xd1\x8f2\xd0\xba1\xd0\xb2 \xd1\x8f2\xd0\xba1\xd0\xbb \xd1\x8f\xd0\xba1\xd1\x81 \xd1\x8f1\xd0\xbb \xd1\x8f2\xd0\xbb\xd1\x8c \xd1\x8f\xd0\xbc2\xd0\xb13\xd0\xbb \xd1\x8f2\xd0\xbc\xd1\x8c \xd1\x8f3\xd0\xbd\xd0\xb0 \xd1\x8f\xd0\xbd\xd1\x812 \xd1\x8f1\xd1\x80\xd0\xb0 \xd1\x8f1\xd1\x80\xd0\xb8 \xd1\x8f1\xd1\x80\xd0\xbe \xd1\x8f1\xd1\x80\xd1\x8c \xd1\x8f\xd1\x811\xd0\xba \xd1\x8f\xd1\x811\xd0\xbb \xd1\x8f\xd1\x812\xd1\x82 \xd1\x8f\xd1\x81\xd1\x823\xd0\xb2 \xd1\x8f1\xd1\x81\xd1\x82\xd0\xbe \xd1\x8f\xd1\x81\xd1\x821\xd1\x80 \xd1\x8f1\xd1\x82\xd0\xb0 \xd1\x8f\xd1\x823\xd0\xb2 \xd1\x8f3\xd1\x82\xd0\xb8 \xd1\x8f\xd1\x82\xd0\xb81\xd0\xb7 \xd1\x8f1\xd1\x82\xd0\xbe \xd1\x8f1\xd1\x82\xd1\x83 \xd1\x8f1\xd1\x82\xd1\x8b \xd1\x8f3\xd1\x82\xd1\x8c\xd1\x8e \xd1\x8f3\xd1\x82\xd1\x8c\xd1\x8f \xd1\x8f1\xd1\x82\xd1\x8f \xd1\x8f1\xd1\x83 \xd1\x8f\xd1\x851\xd0\xbb \xd1\x8f1\xd1\x85\xd1\x83 \xd1\x8f\xd1\x86\xd0\xb51 \xd1\x8f2\xd1\x88\xd0\xbb 2\xd1\x8f\xd1\x8e_ 2\xd1\x8f1\xd1\x8f % _\xd0\xb1\xd0\xbe2\xd0\xb4\xd1\x80\xd0\xb0 _\xd0\xb2\xd1\x81\xd1\x822\xd1\x80 _\xd0\xb4\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd0\xbb _\xd0\xb4\xd0\xbe1\xd0\xb12\xd1\x80\xd0\xb8 _\xd0\xbe\xd0\xb12\xd0\xbb\xd1\x8e\xd1\x8e _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd0\xb5 _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd0\xb9 _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd1\x8e _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb8\xd0\xb2 _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb8\xd0\xbb _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb8\xd1\x82 _\xd0\xbf\xd0\xb02\xd0\xbd1\xd0\xb8\xd1\x81 _\xd0\xbf\xd0\xbe\xd0\xbc2\xd0\xbd\xd1\x83 _\xd1\x80\xd0\xb5\xd0\xb02\xd0\xbd _\xd1\x80\xd0\xbe2\xd1\x813\xd0\xbf\xd0\xb8 _\xd1\x81\xd0\xbe2\xd0\xbf\xd0\xbb\xd0\xb0 \xd0\xb02\xd0\xbd\xd1\x8c\xd1\x88 \xd0\xb0\xd1\x82\xd1\x80\xd0\xbe2\xd1\x81\xd0\xba \xd0\xb1\xd0\xb5\xd0\xb7\xd1\x832\xd1\x81 \xd0\xb1\xd0\xb8\xd0\xbd\xd0\xbe2\xd1\x81\xd0\xba \xd0\xb2\xd0\xb8\xd0\xb72\xd0\xb3\xd0\xbd \xd0\xb2\xd1\x8b\xd0\xb12\xd1\x80\xd0\xb5 \xd0\xb3\xd1\x81\xd1\x824\xd1\x80 \xd0\xb4\xd0\xb81\xd1\x812\xd0\xbb\xd0\xbe\xd0\xb2 \xd0\xb4\xd0\xbe\xd1\x812\xd0\xbd\xd1\x8f \xd0\xb4\xd1\x80\xd0\xbe2\xd0\xb63\xd0\xb6 2\xd0\xb4\xd1\x80\xd1\x83\xd0\xb6\xd0\xb5\xd0\xb9 \xd0\xb52\xd0\xbc\xd1\x8c\xd0\xb4 \xd0\xb52\xd0\xbe3\xd0\xbf\xd0\xbb\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb52\xd0\xbe3\xd0\xbf\xd0\xbe\xd0\xb7\xd0\xb8 \xd0\xb5\xd1\x80\xd0\xb53\xd1\x812\xd1\x81\xd0\xbe 4\xd0\xb63\xd0\xb4\xd0\xb8\xd0\xba 4\xd0\xb63\xd0\xb4\xd0\xb8\xd1\x87 \xd0\xb7\xd0\xb0\xd0\xb82\xd0\xbb \xd0\xb7\xd0\xb0\xd0\xbe2\xd0\xb7 2\xd0\xb71\xd0\xb02\xd1\x85\xd0\xb0\xd0\xb2 \xd0\xb7\xd0\xb0\xd1\x8e2\xd0\xbb \xd0\xb72\xd1\x80\xd1\x8f\xd1\x82 \xd0\xb7\xd1\x832\xd0\xbc\xd1\x8c 6\xd0\xb7\xd1\x8c_ \xd0\xb82\xd0\xbb1\xd0\xb02\xd0\xbc\xd0\xb8\xd0\xbd \xd0\xb8\xd0\xbb\xd0\xbb\xd0\xbe3\xd0\xba2 \xd0\xb92\xd0\xba\xd1\x8c \xd0\xbb\xd0\xb02\xd0\xb11\xd1\x80 \xd0\xbb\xd1\x833\xd1\x814\xd0\xbd \xd0\xbc\xd0\xb52\xd0\xb4\xd0\xb8\xd0\xbd\xd1\x81 \xd0\xbc\xd0\xb52\xd0\xb41\xd0\xbe2\xd1\x81\xd0\xbc \xd0\xbc\xd0\xb5\xd1\x82\xd0\xb82\xd0\xbb1\xd0\xb0\xd0\xbc \xd0\xbc\xd0\xb8\xd1\x814\xd1\x813\xd0\xbd \xd0\xbd\xd0\xb0\xd1\x802\xd0\xb2\xd0\xb0\xd1\x82 \xd0\xbd\xd0\xb52\xd0\xbe3\xd1\x80\xd0\xb5 \xd0\xbd\xd0\xb81\xd1\x812\xd0\xba\xd0\xbe\xd0\xbb \xd0\xbd\xd0\xb84\xd1\x81\xd1\x8c_ \xd0\xbd\xd0\xbe4\xd0\xbb1\xd0\xb02\xd0\xbc\xd0\xb8\xd0\xbd \xd0\xbd2\xd1\x82\xd1\x80\xd0\xb0\xd1\x81\xd1\x81 \xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xb1\xd0\xbe\xd0\xbb \xd0\xbe4\xd0\xb63\xd0\xb4\xd0\xb5\xd0\xb2 \xd0\xbe1\xd0\xb82\xd1\x811\xd1\x82\xd1\x80 \xd0\xbe\xd0\xb9\xd1\x814\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe2\xd0\xbc3\xd1\x87\xd0\xb5_ \xd0\xbe\xd0\xbd\xd0\xb83\xd0\xbb2\xd0\xb0\xd0\xbc \xd0\xbe\xd0\xbd2\xd1\x82\xd1\x80\xd0\xb0\xd1\x82 \xd0\xbe2\xd0\xbf\xd0\xbb\xd1\x8e\xd1\x81 \xd0\xbe\xd1\x81\xd0\xbe4\xd0\xbc3\xd0\xbd \xd0\xbe\xd1\x82\xd0\xb84\xd0\xb4\xd0\xbd \xd0\xbf\xd0\xb5\xd1\x80\xd0\xb51\xd1\x812\xd0\xbd \xd0\xbf\xd0\xbe2\xd0\xb4\xd0\xbe\xd0\xb4\xd0\xb5 \xd0\xbf\xd0\xbe2\xd0\xb41\xd1\x832\xd1\x80\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xb52\xd0\xb6 \xd0\xbf\xd0\xbe2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd \xd0\xbf\xd1\x80\xd0\xb5\xd0\xbc2\xd0\xbd\xd0\xbe \xd0\xbf\xd1\x80\xd0\xb8\xd1\x87\xd0\xb52\xd1\x811\xd0\xba \xd0\xbf\xd1\x82\xd0\xb84\xd0\xb4\xd0\xbd \xd1\x80\xd0\xb5\xd0\xb4\xd0\xbe4\xd0\xbf\xd0\xbb \xd1\x80\xd0\xb5\xd0\xb64\xd0\xb4\xd0\xb8 \xd1\x80\xd0\xbd\xd0\xb83\xd0\xbb2\xd0\xb03\xd0\xbc \xd1\x80\xd0\xbe\xd0\xb12\xd0\xbb\xd0\xb5\xd1\x8e 2\xd1\x81\xd0\xb1\xd1\x80\xd1\x83\xd0\xba1 \xd1\x81\xd0\xbe2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd1\x82 \xd1\x81\xd0\xbe3\xd1\x822\xd0\xba\xd0\xb0\xd0\xbb 2\xd1\x81\xd1\x82\xd1\x87\xd0\xb5_ 2\xd1\x81\xd1\x82\xd1\x8c\xd1\x82 \xd1\x81\xd1\x8b2\xd0\xbc\xd0\xb8\xd1\x82 2\xd1\x81\xd1\x8c\xd1\x81\xd1\x8f_ 6\xd1\x82\xd1\x80_ \xd1\x82\xd1\x80\xd0\xbe2\xd0\xb5\xd1\x82\xd0\xb5\xd1\x81 6\xd1\x85\xd1\x83\xd1\x8f_ \xd1\x8b2\xd1\x80\xd1\x8c\xd0\xbc \xd1\x8b\xd1\x8f2\xd0\xb2\xd1\x8f \xd1\x8c\xd0\xb1\xd0\xb0\xd1\x822 \xd0\xb01\xd0\xb2\xd1\x91 \xd0\xb02\xd0\xb4\xd0\xb2\xd1\x91 \xd0\xb01\xd1\x91 \xd0\xb0\xd0\xb73\xd0\xb2\xd1\x91\xd0\xb7 \xd0\xb01\xd0\xbb\xd1\x91 2\xd0\xb0\xd0\xbb\xd1\x91\xd0\xba 2\xd0\xb0\xd0\xbc\xd1\x91\xd1\x82 \xd0\xb0\xd0\xbc2\xd0\xbd\xd1\x91\xd1\x82 \xd0\xb01\xd1\x80\xd1\x91 \xd0\xb0\xd1\x813\xd1\x82\xd1\x91\xd0\xbc \xd0\xb01\xd1\x82\xd1\x8c\xd1\x91 1\xd0\xb1\xd1\x91 \xd0\xb1\xd1\x912\xd0\xb41\xd1\x80 \xd0\xb13\xd0\xbb\xd1\x91\xd0\xbd \xd0\xb12\xd0\xbb\xd1\x91\xd1\x811\xd0\xba \xd0\xb12\xd0\xbb\xd1\x8e\xd1\x91 \xd0\xb11\xd1\x80\xd1\x91\xd0\xba \xd0\xb12\xd1\x80\xd1\x91\xd0\xbc \xd0\xb12\xd1\x80\xd1\x91\xd1\x85 1\xd0\xb2\xd0\xb5\xd1\x91 3\xd0\xb2\xd0\xb5\xd0\xb7\xd1\x91 \xd0\xb2\xd1\x91\xd0\xb41\xd1\x80 1\xd0\xb2\xd1\x91\xd0\xb7 2\xd0\xb2\xd1\x91\xd1\x80\xd0\xb4 1\xd0\xb2\xd1\x91\xd1\x81 \xd0\xb22\xd0\xbb\xd1\x91\xd0\xba \xd0\xb22\xd0\xbb\xd1\x91\xd1\x82 1\xd0\xb2\xd0\xbc\xd1\x91 \xd0\xb22\xd0\xbd\xd1\x91\xd1\x81 2\xd0\xb21\xd1\x80\xd1\x91\xd0\xbd 3\xd0\xb2\xd1\x81\xd1\x913 1\xd0\xb2\xd1\x8c\xd1\x91 \xd0\xb31\xd0\xbb\xd1\x91 \xd0\xb32\xd0\xbb\xd1\x91\xd1\x82 \xd0\xb32\xd0\xbd\xd1\x91\xd0\xb2 \xd0\xb33\xd0\xbd\xd1\x91\xd0\xbd \xd0\xb32\xd0\xbd\xd0\xbe\xd1\x91 \xd0\xb41\xd0\xb2\xd1\x91 1\xd0\xb4\xd1\x91 _\xd0\xb4\xd0\xbe\xd0\xb12\xd1\x80\xd1\x91\xd0\xbb 2\xd0\xb4\xd0\xbe\xd0\xbf\xd0\xbb\xd1\x91 \xd0\xb4\xd0\xbe2\xd0\xbf\xd1\x80\xd1\x91 \xd0\xb41\xd1\x80\xd1\x91 \xd0\xb42\xd1\x80\xd1\x91\xd0\xb1 2\xd0\xb43\xd1\x80\xd1\x91\xd0\xb6 \xd0\xb42\xd1\x80\xd1\x91\xd0\xbc 1\xd0\xb4\xd1\x80\xd1\x91\xd0\xbc\xd0\xb0 1\xd0\xb4\xd1\x80\xd1\x91\xd0\xbc\xd1\x8b 2\xd0\xb43\xd1\x80\xd1\x91\xd0\xbd \xd0\xb4\xd1\x8a\xd1\x912\xd0\xbc 1\xd0\xb4\xd1\x8c\xd1\x91 \xd0\xb5\xd0\xb11\xd1\x80\xd1\x91\xd0\xbd \xd0\xb51\xd0\xb2\xd1\x91 2\xd0\xb5\xd0\xb2\xd1\x91\xd1\x80 2\xd0\xb51\xd0\xb2\xd1\x80\xd1\x91 \xd0\xb52\xd0\xb3\xd0\xbb\xd1\x91 \xd0\xb51\xd1\x91 2\xd0\xb5\xd0\xb6\xd1\x91 \xd0\xb53\xd0\xb7\xd1\x91 \xd0\xb51\xd0\xbb\xd1\x91 2\xd0\xb5\xd0\xbf\xd1\x91 \xd0\xb5\xd1\x801\xd0\xb2\xd1\x91 \xd0\xb51\xd1\x80\xd1\x91 \xd0\xb5\xd1\x80\xd1\x913\xd0\xb4\xd0\xbe \xd0\xb5\xd1\x80\xd1\x911\xd0\xba2 \xd0\xb5\xd1\x812\xd1\x87\xd1\x91\xd1\x82 \xd0\xb5\xd1\x821\xd0\xb2\xd1\x91 \xd0\xb51\xd1\x82\xd1\x8c\xd1\x91 2\xd1\x91\xd0\xb1 \xd1\x911\xd0\xb1\xd1\x80\xd0\xb0 \xd1\x91\xd0\xb11\xd1\x80\xd1\x8b \xd1\x911\xd0\xb2\xd0\xb5 \xd1\x911\xd0\xb2\xd0\xbe 2\xd1\x911\xd0\xb2\xd1\x80\xd0\xb5 \xd1\x911\xd0\xb2\xd1\x83 \xd1\x911\xd0\xb4\xd1\x80\xd1\x83 2\xd1\x913\xd0\xb4\xd1\x83\xd1\x88 2\xd1\x91\xd0\xb6\xd0\xb5 \xd1\x913\xd0\xb7\xd0\xb5 \xd1\x91\xd0\xb71\xd0\xbe2\xd0\xb3 \xd1\x911\xd0\xb7\xd0\xbe\xd0\xbc \xd1\x911\xd0\xba\xd0\xb0 \xd1\x911\xd0\xba\xd0\xb8 2\xd1\x911\xd0\xba\xd0\xbe 2\xd1\x911\xd0\xba\xd1\x80 \xd1\x91\xd0\xba2\xd1\x80\xd0\xbe \xd1\x911\xd0\xba\xd1\x83 \xd1\x911\xd0\xbb\xd0\xb0 \xd1\x911\xd0\xbb\xd0\xb5 \xd1\x911\xd0\xbb\xd1\x83 \xd1\x911\xd0\xbb\xd1\x8b 2\xd1\x91\xd0\xbc\xd1\x83\xd0\xb6 \xd1\x912\xd0\xbc\xd1\x87 \xd1\x913\xd0\xbd\xd0\xb0 \xd1\x91\xd0\xbd2\xd0\xb41\xd1\x80 \xd1\x91\xd0\xbd\xd1\x812 \xd1\x91\xd0\xbf\xd0\xb0\xd1\x822 2\xd1\x91\xd0\xbf\xd0\xb5 \xd1\x912\xd0\xbf\xd0\xbb \xd1\x913\xd0\xbf\xd0\xbb\xd0\xb0 \xd1\x91\xd0\xbf1\xd0\xbb\xd1\x83 \xd1\x913\xd0\xbf\xd0\xbb\xd1\x8b \xd1\x914\xd0\xbf\xd0\xbd 2\xd1\x91\xd0\xbf\xd0\xbe \xd1\x914\xd0\xbf\xd1\x82 \xd1\x911\xd1\x80\xd0\xb0 \xd1\x911\xd1\x80\xd0\xb5 \xd1\x913\xd1\x80\xd0\xb5_ \xd1\x911\xd1\x80\xd0\xb8 \xd1\x911\xd1\x80\xd0\xbe \xd1\x91\xd1\x803\xd1\x81\xd0\xba \xd1\x911\xd1\x80\xd1\x83 \xd1\x911\xd1\x80\xd1\x8b \xd1\x913\xd1\x812\xd0\xb0 \xd1\x911\xd1\x81\xd0\xba \xd1\x912\xd1\x811\xd0\xba\xd0\xb0_ \xd1\x912\xd1\x81\xd0\xba\xd0\xb5 \xd1\x914\xd1\x811\xd0\xba\xd1\x83_ 2\xd1\x91\xd1\x81\xd0\xbb \xd1\x913\xd1\x81\xd0\xbe \xd1\x911\xd1\x81\xd1\x82 \xd1\x91\xd1\x812\xd1\x82\xd0\xb0\xd0\xbd \xd1\x913\xd1\x81\xd1\x82\xd1\x83 \xd1\x911\xd1\x82\xd0\xb0 2\xd1\x91\xd1\x82\xd0\xb5\xd1\x87 \xd1\x911\xd1\x82\xd0\xb8 \xd1\x911\xd1\x82\xd0\xbe \xd1\x91\xd1\x82\xd0\xbe1\xd1\x81 \xd1\x91\xd1\x821\xd1\x80 \xd1\x911\xd1\x82\xd1\x83 \xd1\x911\xd1\x82\xd1\x8b \xd1\x911\xd1\x82\xd1\x8e \xd1\x911\xd1\x82\xd1\x8f \xd1\x91\xd1\x85\xd0\xb02\xd1\x82 \xd1\x91\xd1\x851\xd0\xb0\xd1\x82\xd0\xbe \xd1\x91\xd1\x853\xd0\xb2\xd0\xb0\xd0\xbb \xd1\x91\xd1\x853\xd0\xbb\xd0\xbe\xd0\xbf \xd1\x91\xd1\x851\xd0\xbe\xd0\xbf\xd0\xbe \xd1\x91\xd1\x851\xd1\x80\xd1\x83 3\xd0\xb6\xd1\x91\xd0\xb2 \xd0\xb6\xd1\x911\xd1\x812 \xd0\xb62\xd0\xb6\xd1\x91 \xd0\xb7\xd0\xb03\xd0\xbc\xd0\xbd\xd1\x91 \xd0\xb71\xd0\xb2\xd1\x91 \xd0\xb72\xd0\xb2\xd1\x91\xd0\xb7 1\xd0\xb7\xd1\x91 \xd0\xb72\xd0\xbd\xd0\xb0\xd1\x91 2\xd0\xb7\xd0\xbd\xd1\x91 1\xd0\xb72\xd0\xbe3\xd1\x80\xd1\x91 \xd0\xb72\xd0\xbe\xd1\x82\xd1\x91 \xd0\xb7\xd0\xbe\xd1\x822\xd1\x80\xd1\x91 3\xd0\xb7\xd1\x83\xd1\x91 \xd0\xb7\xd1\x8a\xd1\x912\xd0\xbc 2\xd0\xb7\xd1\x8b\xd0\xbc\xd1\x91 2\xd0\xb81\xd0\xb2\xd1\x91 \xd0\xb8\xd0\xb31\xd1\x80\xd1\x91\xd0\xbd \xd0\xb81\xd1\x91 \xd0\xb8\xd1\x851\xd1\x80\xd1\x91 1\xd0\xba\xd0\xb0\xd1\x91 1\xd0\xba\xd1\x91 \xd0\xba3\xd0\xbb\xd1\x91\xd0\xbd \xd0\xba2\xd1\x80\xd0\xbe\xd1\x91 3\xd0\xba\xd1\x83\xd1\x91 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd1\x91 \xd0\xbb\xd1\x913\xd0\xb4\xd0\xbe \xd0\xbb\xd1\x911\xd0\xb72\xd0\xbe3 \xd0\xbb\xd1\x91\xd0\xba1\xd0\xbb 1\xd0\xbb\xd1\x91\xd0\xbd \xd0\xbb\xd1\x912\xd1\x81\xd0\xba \xd0\xbb\xd1\x914\xd1\x81\xd0\xba\xd0\xb0 1\xd0\xbb\xd1\x91\xd1\x85 2\xd0\xbb\xd0\xbe\xd1\x91\xd0\xbd 1\xd0\xbb\xd1\x83\xd1\x91 3\xd0\xbb\xd1\x8c\xd1\x91 1\xd0\xbb\xd1\x8c\xd1\x89\xd1\x91 3\xd0\xbc2\xd0\xbd\xd1\x91\xd1\x88 3\xd0\xbc2\xd1\x89\xd1\x91 \xd0\xbd\xd0\xb42\xd1\x80\xd1\x91 \xd0\xbd\xd0\xb53\xd1\x91 1\xd0\xbd\xd1\x91 \xd0\xbd\xd1\x911\xd0\xb12 3\xd0\xbd\xd0\xbe\xd0\xbc\xd1\x91 1\xd0\xbd\xd1\x8c\xd1\x91 \xd0\xbe\xd0\xb43\xd1\x80\xd1\x91\xd0\xb1 \xd0\xbe1\xd1\x91 \xd0\xbe\xd1\x912\xd0\xb6\xd0\xb8 \xd0\xbe1\xd0\xbb\xd1\x91 2\xd0\xbe\xd0\xbc\xd1\x91 \xd0\xbe3\xd0\xbc2\xd0\xbd\xd1\x91\xd0\xbc \xd0\xbe3\xd0\xbc2\xd0\xbd\xd1\x91\xd1\x82 \xd0\xbe2\xd0\xbf1\xd0\xbb\xd1\x91\xd0\xb9 \xd0\xbe1\xd1\x80\xd1\x91 \xd0\xbe2\xd1\x81\xd0\xba\xd1\x91 \xd0\xbe\xd1\x821\xd0\xb2\xd1\x91 2\xd0\xbe3\xd1\x82\xd1\x91\xd0\xba \xd0\xbe3\xd1\x82\xd1\x91\xd1\x80 \xd0\xbe\xd1\x821\xd1\x80\xd1\x91\xd0\xba \xd0\xbe\xd1\x821\xd1\x80\xd1\x91\xd1\x88 \xd0\xbe3\xd1\x84\xd1\x91 \xd0\xbf\xd1\x911 \xd0\xbf\xd1\x912\xd1\x81\xd1\x821\xd1\x80 \xd0\xbf\xd1\x912\xd1\x82\xd1\x80 2\xd0\xbf\xd0\xbb\xd1\x91\xd0\xbd \xd0\xbf2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xba \xd0\xbf\xd0\xbb\xd1\x91\xd1\x811\xd0\xba \xd0\xbf1\xd0\xbb\xd1\x91\xd1\x8e \xd0\xbf\xd0\xbe\xd1\x912\xd0\xb6 3\xd0\xbf\xd1\x80\xd1\x91\xd1\x82 \xd0\xbf\xd1\x80\xd0\xb8\xd1\x87\xd1\x912\xd1\x811\xd0\xba \xd1\x802\xd0\xb1\xd0\xbb\xd1\x91 1\xd1\x80\xd0\xb2\xd1\x91\xd1\x82 _\xd1\x80\xd1\x912\xd0\xb1\xd1\x80 1\xd1\x80\xd1\x91\xd0\xb7\xd0\xba \xd1\x80\xd1\x911\xd0\xb7\xd0\xbd\xd0\xb0 1\xd1\x80\xd1\x911\xd0\xb7\xd0\xbe \xd1\x80\xd1\x91\xd0\xb72\xd1\x83 1\xd1\x80\xd1\x91\xd0\xba\xd1\x88 3\xd1\x80\xd1\x91\xd0\xbc\xd0\xbe 1\xd1\x80\xd1\x91\xd0\xbd\xd0\xba \xd1\x80\xd1\x913\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd1\x913\xd1\x81\xd1\x82\xd0\xbe \xd1\x80\xd0\xbe\xd0\xb42\xd0\xbb\xd1\x91 \xd1\x80\xd0\xbe\xd1\x912\xd0\xbc 1\xd1\x80\xd1\x8c\xd1\x91 \xd1\x812\xd0\xb4\xd1\x91 \xd1\x81\xd0\xb53\xd1\x81\xd1\x82\xd1\x91 1\xd1\x812\xd1\x91 \xd1\x81\xd1\x91\xd0\xba\xd1\x814 \xd1\x81\xd1\x912\xd1\x81\xd1\x82 \xd1\x81\xd1\x91\xd1\x81\xd1\x821\xd1\x80 2\xd1\x81\xd0\xba\xd1\x83\xd1\x91 \xd1\x811\xd0\xbb\xd1\x91\xd1\x82 \xd1\x812\xd1\x82\xd1\x91 1\xd1\x81\xd1\x82\xd1\x91\xd0\xbb 1\xd1\x81\xd1\x82\xd1\x91\xd0\xbd_ \xd1\x813\xd1\x82\xd1\x91\xd1\x82_ \xd1\x813\xd1\x82\xd1\x91\xd1\x82\xd0\xb5 \xd1\x81\xd1\x82\xd1\x913\xd1\x85 \xd1\x813\xd1\x82\xd1\x91\xd1\x88 \xd1\x813\xd1\x822\xd0\xbb\xd1\x91 \xd1\x81\xd1\x87\xd1\x912\xd1\x811\xd0\xba 1\xd1\x81\xd1\x8c\xd1\x91 \xd1\x821\xd0\xb2\xd1\x91\xd0\xbb \xd1\x821\xd0\xb2\xd0\xbe\xd1\x91 1\xd1\x822\xd1\x91 \xd1\x82\xd1\x912\xd0\xb3\xd0\xbd \xd1\x82\xd1\x911\xd0\xb7\xd0\xbe 3\xd1\x82\xd1\x91\xd0\xba\xd0\xb0 \xd1\x82\xd1\x91\xd0\xba1\xd0\xbb 3\xd1\x82\xd1\x91\xd0\xba\xd1\x88 \xd1\x82\xd1\x914\xd0\xbf1\xd0\xbb \xd1\x82\xd1\x91\xd1\x803\xd0\xba \xd1\x82\xd1\x912\xd1\x81\xd0\xba\xd0\xb0 \xd1\x82\xd1\x912\xd1\x811\xd0\xba\xd0\xb8 \xd1\x82\xd1\x912\xd1\x811\xd0\xba\xd0\xbe \xd1\x82\xd1\x912\xd1\x81\xd0\xba\xd1\x83 \xd1\x82\xd1\x912\xd1\x85\xd0\xbe 3\xd1\x822\xd0\xba\xd1\x91\xd1\x82 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb2\xd1\x91 3\xd1\x822\xd1\x80\xd1\x912\xd1\x85 \xd1\x822\xd1\x80\xd1\x91\xd1\x88\xd1\x8c \xd1\x82\xd1\x80\xd0\xbe2\xd0\xb5\xd1\x82\xd1\x91\xd1\x81 3\xd1\x82\xd1\x8c\xd1\x91 \xd1\x83\xd0\xb32\xd0\xbd\xd1\x91 \xd1\x83\xd0\xb31\xd1\x80\xd1\x91 _\xd1\x83\xd1\x912 \xd1\x831\xd1\x91 \xd1\x831\xd0\xbb\xd1\x91 \xd1\x831\xd1\x80\xd1\x91 \xd1\x831\xd1\x81\xd1\x82\xd1\x91 \xd1\x833\xd1\x82\xd1\x91\xd1\x80 \xd1\x831\xd1\x82\xd1\x8c\xd1\x91 \xd1\x832\xd1\x87\xd1\x91\xd0\xb1 \xd1\x833\xd1\x88\xd1\x91 2\xd1\x853\xd0\xb2\xd1\x91 1\xd1\x85\xd0\xbb\xd1\x91\xd0\xb1 \xd1\x852\xd0\xbb\xd1\x91\xd1\x81 \xd1\x862\xd0\xb2\xd1\x91 1\xd1\x87\xd1\x91 \xd1\x87\xd1\x91\xd1\x802\xd1\x81 \xd1\x87\xd1\x91\xd1\x80\xd1\x81\xd1\x821 _\xd1\x87\xd1\x912\xd1\x811\xd0\xba \xd1\x872\xd1\x82\xd1\x91 1\xd1\x87\xd1\x8c\xd1\x91 2\xd1\x88\xd0\xbb\xd1\x91\xd0\xbd 3\xd1\x88\xd1\x8c\xd1\x91 \xd1\x8a2\xd1\x912\xd1\x80 \xd1\x8b\xd0\xb42\xd1\x80\xd1\x91 \xd1\x8b\xd1\x80\xd1\x912\xd1\x85 \xd1\x8b3\xd1\x81\xd1\x91 \xd1\x8c2\xd1\x91 \xd1\x8c\xd1\x911\xd0\xb7\xd0\xbe \xd1\x8c2\xd1\x89\xd1\x91 \xd1\x8e1\xd1\x91 \xd1\x8f\xd0\xb13\xd1\x80\xd1\x91 _\xd0\xbd\xd0\xb58 8\xd0\xbd\xd0\xb5_ 8\xd0\xb1\xd1\x8a_ 8\xd0\xb2\xd1\x8a_ 8\xd0\xb3\xd1\x8a_ 8\xd0\xb4\xd1\x8a_ 8\xd0\xb6\xd1\x8a_ 8\xd0\xb7\xd1\x8a_ 8\xd0\xba\xd1\x8a_ 8\xd0\xbb\xd1\x8a_ 8\xd0\xbc\xd1\x8a_ 8\xd0\xbd\xd1\x8a_ 8\xd0\xbf\xd1\x8a_ 8\xd1\x80\xd1\x8a_ 8\xd1\x81\xd1\x8a_ 8\xd1\x82\xd1\x8a_ 8\xd1\x84\xd1\x8a_ 8\xd1\x85\xd1\x8a_ 8\xd1\x86\xd1\x8a_ 8\xd1\x87\xd1\x8a_ 8\xd1\x88\xd1\x8a_ 8\xd1\x89\xd1\x8a_";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/sv.php b/inc/3rdparty/libraries/mpdf/patterns/sv.php
deleted file mode 100644 (file)
index b01ce72..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/*
-       Adapted from Hyphenator 1.0.2
-       http://code.google.com/p/hyphenator/
-       
-       Original created by Jan Michael Rynning, jmr@nada.kth.se
-       Modified for Hyphenator by Andreas Johansson, andreas@ibuypink.com
-*/
-
-$patterns="_a4b _ab5i _ab5ol _ab3r _ac3 _a4d _a3dr _ad3s _a5g4ra _a5gre _a5kl _a5le _al4pr _a3lu _am4br _amp3l _a5mu _and4rar _a2n5es _ang4er _an5go _an5s _ap1p _as2k _a3sket _as4t _a5sten _a3sti _a5ta _at3t _au3st _a4val _av3s4 _b4 _bak5s _ben5s _bild3s _bo2k _bort1 _cis4 _cy5klop _d4 _d\xc3\xa4r3 _ek1v _e3l4a _e2l5in _en5st _e4n\xc3\xa4 _e2r3i _e2s _e5skad _es3kal _es5kap _es4t _e5strad _e3tr _evan5 _ex3 _f4 _feb3r _fram3 _fres5 _f\xc3\xa5gel3 _f\xc3\xb6r1a _f\xc3\xb6r1en _g2 _gu4l\xc3\xa4 _gus3 _he2m _hu5sa _ib4 _ik4 _im3p _i2n1 _i4na _in3d _in4ger _ink2 _in3s2 _in3t _is5ka _i3so _k4 _kans4k _ko5li _kort5s _kring3 _krings2 _k\xc3\xb6p5s _l2 _lak5r _lek5tr _lu2st _m2 _mas2ke _ma5skeri _me4re _minis4 _mj\xc3\xb6lk5s _mon2s _m\xc3\xa5n3s _m\xc3\xa54st _m\xc3\xa4n5sko _m\xc3\xb6rk5r _n4 _ner1 _no4n _n\xc3\xb6d5r _oc1ku _ok3t _o3kv _o2ma _o2mo _om3s4 _o3mu _on4k _o3o _ord3s _o5sc _o1s4k _o3sl _o3stra _o3sv _o3tr _o1u _p4 _papp5s _pa3ste _pa5sti _pi5sti _pres2s _pub3lika _r2 _re4gr _re2ste _runs4 _rym2d _r\xc3\xb6ve5 _s4 _sa2k _seg3r _si5o _sj\xc3\xb61 _sk4 _skott3s _slut3s _st4 _sta2m _sten3s _string4 _sup3p _t4 _ta3bl _ta4k _tak5l _tes3ta _tig3r _til4l _ti3o _topp5s _tred2s _tre3s _tr\xc3\xa45k _u3k _ult5r _ung2e _up2 _u4ra _ur3s _u2t1 _u4ta _u5trer _ut5s _v2 _var4t _vatten3 _ved5s _v\xc3\xa42g _v\xc3\xa4g3s _x2 _y2a _y4e _\xc3\xa5ng3 _\xc3\xa5r4s5 _\xc3\xa53st _\xc3\xa5ter1 _\xc3\xa43ro _\xc3\xb63ro a2b ab4bu a5be abel4s abe2s ab1l ab3la ab3ort ab5ric ab3rio ab4sc ab4sk a5bu ac4kes ac4kis ack3sk ack3u4p a5dag a5dek a5del ad5ep ad3j ad3op a5dran a3dre 1adres ad3ril ad3ru ad2s a5ed af4fo 3aff\xc3\xa4 1af3ri af4tor a1ga aga4ra a1ge a2ge_ ag1gr ag1l ag5ord ag3ro a4gur a4hj aib4 a3iv a1j a3ka a4kart a5ke a1ki ak3n a1ko ak5ram akri5s ak3rob ak4sta 1aktig ak3tri a1ku a5kvari ak3ve a5k\xc3\xa5r ak5\xc3\xa5t 4ak\xc3\xb6 a1la al5adm ali2br a2lin a5lin_ a3line al3ins ali5stik a4lj alk3ak al2kv al4k\xc3\xa4 all3st al3l\xc3\xa5 alms4k a1lo al5ort als5pa al3tr al4tu al4t\xc3\xa4 a1lu alu5s alv3s a1ly a4maf am4i am4pr am1s am3\xc3\xa5t a3m\xc3\xb6 ana4bo an3alf an3ark an3c anci5 an5dak andel2s an4dun an4d\xc3\xa4n a4nef ang4es an3gi an1gr aniu4 ank3r ano2i a4nok a4nop an5sce ansis3t an4sj ans5ku ans3li ans3par an1st an4sto an4sty 1ansvar an4tj an4tre a1nu a5ny a3n\xc3\xb6 a1o a1pe a2pe_ ape4n3 a1pi ap4lan apo3str 1appara apps4k ap3ric ap3rif a5pris ap2s ap3se aps5l aps3p apu5s a5py a5p\xc3\xa4 2ara a4rann a4rarv 1arb 4arbi 2arbo 4arbr ar3dr ard5st a4rend arg5si 2arh a1ri a4rigen ar3ka ark3lan ar5kr 4arl 4arn_ ar4nal a1ro a2rob 4arp ar2sa ar5skal arsk5l ar2sv ar4tro arts5p ar4tur 4aru a4rur a5rus ar4v\xc3\xa4g a3ry a3r\xc3\xa4 2asa asbe4 a1sc as2h asis5t as3kis a2sko a4skr as3ku as5l as3pa as3pig as2sk as2s5op as2sp as2st ass5up as3ta a5stard as5ter as5tiker asti5o as3to as4tr ast5rak a5stral ast3rol as5t\xc3\xb6r a3su a4sul a4sund as2ut as3v a1sy a2s5\xc3\xa5 a2s\xc3\xb6 a1t ata5ra a5te ati5\xc3\xb6 a4tj a2tr a3tral 4atrar a4t3re at3ria a3tric at3rie a5trik a3tris a3t4ro a4tro_ at4ska 1attac at2tak at4tj at4tos att3s a4tung 2au au5b au2t5a 3autom aut5s 2a1va a4vart 1avg 2a1vi av3r 4a3v\xc3\xa4 a5\xc3\xa5 1b2 3ba ba4di ba4do bad3s4 bak5l ba4ko ba4ku bank5l bas4ta ba5stu 4bb b4bak b4batt bbb4 bb3l bb4ler b4b3r bb4so 4b3d 3be be3d4r be5e be1k 4beld be5lu be3ly be3l\xc3\xa5 be5l\xc3\xb6 beng4 be3n\xc3\xa5 be1r\xc3\xb6 be1s be3sl bes5s be4sta be4ste be5su be3tr be3tv be3u 4bex 2b3f 2b5h 3bi bi3d4 4binv bis3ko bi5skv b3je b3k b5lar b5lat ble4mo b5len 5blera 3bles 5blid 3blikr 3bliks 4b3m 2b3n 3bo bo4gr bo2kl bo1mu 5bon bors5te bor4ti bort3r borts2 bort3sl bo1s bo4sc boy5 4b3p 2b5raf 4brar 2b5rati 3brik_ b3rika 3brike 3briks b5rik\xc3\xb6 bru4st 3bry 3br\xc3\xb6 4b3s b5sce bs3ch b4slan b4sof b4sp bst4 b4stj 4b3t 3bu bund4s bus2st b3v 3by by5r 3b\xc3\xa5 b\xc3\xa5ng3 b\xc3\xa5t2s 3b\xc3\xa4 3b\xc3\xb6 b\xc3\xb6r2s c2 5cap c3c 1c4e cens3t 3centr ceu4s 4ch_ 3chau 3chef 5choc 4cht ch\xc3\xa4s3 ch\xc3\xb6r4 1ci ci4lu cim2 cipp4 4ck c3ka c3ke c3ki ck5j ck1l ck5lis ck3n c3ko c4kordn ck3org c4kort ck3r ck4re ck3sla ckus2 ck3va ck3ve ck3v\xc3\xa4 ck5\xc3\xa4 ck3\xc3\xb6 cle2a co2a co4m 4cr cros2 4cs 1cy 1d 3da 5da_ 4dadr dags3 2dak 5dako da3li 5dam da3m\xc3\xa5 4dand_ 4d1ap 4darb 4dart da4tr dat5t 4dax 2db 4dc dcen3 2dd ddd4 ddi4s d3dj d4dos dd3ra dd3re dd3ri d3dr\xc3\xa4 dd2s dds3v 3d2e de1k4 4deko 4deld del2sa dels5ti de5lut d4en denti5\xc3\xb6 den2to de3pr 5der der1k de2ro de5rol der5sti de4ru de2s de3se de3sp des3ti d4et de3tr 4dex 2d1f df\xc3\xb63ra 2d1g d3gl 2d5h 3di dias4 di5el di2gr di3ka di5ku 4dinf din3g4o 4dinr 4dins 2dinsp 4dint di1o di4od di3sc di4sj dis3ko dis1kr dis1p dis5to dis3tra di4tre 2dj d3jor djup5p 3djur 2d3k2 4d5l 2d1m 2d1n 3do d2ol do5lo 4domr dom2sk 5don do4pak 4d5ord 4dori 4dort d5ost do3y 2d1p 2d2r2 d3rad 3d4rag d3rand d5rarb d5rassera d5ratu 3drej d3ren 5dres d3ret d4ric 3drif d3rig 4d5rik d3rin 3d4riv d5roc 3dropp d3ror 4drot drotts3 d3r\xc3\xa4kn 3dr\xc3\xa4kt 5dr\xc3\xa4n d3r\xc3\xa4t d5r\xc3\xb6d 4ds d2s1an d2se ds5enh d4sf d2si ds3ins d2sj dsk2 d3skef ds4ken d3ski ds3kl ds5kn ds1l ds4lot ds4mo d4sm\xc3\xa5 ds5n\xc3\xa5 d2so ds3pl ds3s4 ds3tal d5stat ds4te dste4a d5stig ds3tin ds5tro d2su ds1v d2s\xc3\xb6 2d3t 3du dub3ble 4dup du1s du2sc du4ste du5s\xc3\xb6 4dut du4vu 2d1v d3vr 2d3w 3dy dy4kan dy4ro 4dz 5d\xc3\xa5g 2d\xc3\xa5s 4d\xc3\xa5t 4d\xc3\xa4g d\xc3\xa42r 3d\xc3\xb6 d\xc3\xb6ds1 4d\xc3\xb6g 4d\xc3\xb6p d5\xc3\xb6st d\xc3\xa94 e1a e2ake e4am 4eb e2br eb3ril 4ec e3ch echiff5 ecis4 e3co e2d e4dans edd4r edi4u ed3j e5dral ed1sk ed2sko ed3s2l edso4 e3d\xc3\xa5 e1e e2ed e4ei ee2k5 e4en_ e4ene e1f ef4s 3efte e1g e3ga e3ge ege2l eg1l eg2ler e3glera e5gleri e4gran eg5rat eg3rin e5gru egs3 e5g\xc3\xa5 eig2 ei5gn e3ik e1in ei5sh e1isk e1jo e3ju e3j\xc3\xa4 e5j\xc3\xb6 e3ka e1ki e1kl ek3lat ek4le ek3n e1ko ekord5s ek3orr ek4ret_ ek5ro e1ku e1kve ek5vis e1ky e1k\xc3\xa4 e1la el1akt el4arb 3eld_ eleb3r elekt3ri el4fra eli5ku el3k4 el3li ell3s el3l\xc3\xa4 e1lo e4lob el3p el2si el5ug e5luv 2e1l\xc3\xa4 e1m e5mat e5mis emon1s em5ort emp5le en5art e2nav en4ce e4ned e4nek ene3r\xc3\xb6 2enj en5klo en3kn en5kr en5k\xc3\xa4 enning5 ennings2 eno2m en3si ens5ke ens2m en2sp ens4te ens4vin en4s\xc3\xa5 ent4ha en2t1r ent4rat_ ent3rati ent3ri ent5ru e5nus 2eny 2e1n\xc3\xa4 e1o e2og eo4i e5or 2ep e1pe e1pi e3pla ep5le epp2s3 epps5t e1pr ep3s ep4tr epu3b e3p\xc3\xa5 er1ak 4eras er3d4 erg4l er4gu er4g\xc3\xa5s e1ri e5rib e4rinf erings3 eri5stik erk4lin erl\xc3\xa44 er5na e1ro e3rob e2rom erp4 er3ra er5sc ers4ken er3sl ers4le er4sta er2ste er3str er3sv e1ru e5rum e3ry e5r\xc3\xa5d e1r\xc3\xa4 e2sal es5all es3arm e1sc 2ese es4hi esi4u es2k e4skan es5kar e4s3ken es3ker es5kul e1sl e5slag es2mi e1sp es3pl es2sk ess5l\xc3\xa4 es2st e3stal es5ten_ esti2ge es3tin es5tor_ es4tr est5rer e3stru est4r\xc3\xb6 e3st\xc3\xa5 es2u e1sy eta3b e5ti eti3\xc3\xb6 e1to e5tri_ et3ris e5tr\xc3\xa4 et2s ets2ad ets3kr ets1l ets3m ets5pa et4sv ett3r e1tu etu4ri et4va et5vu e1ty 2etz e1t\xc3\xa4 et\xc3\xa4c4 euk4 e5um_ e5up4 4eur eu4se_ eu5tro e1v e4varm e4vj ev3r 3exp ext4r 4e\xc3\xa4 f2 3fa fac4 fac5ke 4fans 4farb fa3sh fa4st fa4t\xc3\xb6 4fav 4f3b f3d 3fe 4fef fe2l fes5ta fe3sto 4fex 2f1f fff4 ff3l ff3n f3fo ff3r ffs4 f3f\xc3\xa4 ff\xc3\xb65re f3g2 f5h 3fi fi2br fib5rig fi3li fin5sm fi3skal fisk3r fi2ti 2f3k 1fl flo4da 4f3m fma4 1fo 4fof fol2 folk1 2f5om fo2na for4mo fost3r 4f3p fra2m fram5p f4rer 5freri fre4s f4ri_ fri5sp 5frit fros5ta fru5str fr\xc3\xa5n5 2f3s fs2k f4sl f4sm f4sn f4sp f4st f4sv 2ft f3ta f4taf f4tak f4tap f4tarm fte4r f4tex f3ti f4tin f3to f4t3r ft2sa ft4set ft2s5i ft4sj fts4t fts5v\xc3\xa4 ft5t ft1v 3fu furs5te fu5ru fu3tu 4fv 5fy fy4ma f\xc3\xa53t\xc3\xb6 1f\xc3\xa4 f\xc3\xa4s5ti 3f\xc3\xb6 f\xc3\xb62ra f\xc3\xb62ren f\xc3\xb62ri f\xc3\xb6r3k f\xc3\xb6r3sm f\xc3\xb6r3su f\xc3\xb6rt4 f\xc3\xb6r1\xc3\xb6 ga5br 3g2ag 4gakt 3g2al gall3s ga5l\xc3\xa4 ga4no 2garb 4garm ga2ro 4gart ga4st ga4su 5g2ati gaus4 g4av g5avsn 4gax 2gb 2gd g3d4r ge2a ge5b4 2gef 2ge4j g2eli 3gelis gel5st gel5y 3gel\xc3\xa4 gel5\xc3\xa4n g4em ge4nap gen5g 3g2eni 3genj 4genm genom5 gen4sa g4ense 1g2ent 4genv ge5ny 3gen\xc3\xa4 ge2o 1g2era 4gerarb 3g2eri gers5n 5gese ge4to get5s 5g2ett 2g1f 2gg g1ga g4gap g1ge gg5g gg1l g4gos ggs4la ggs4m gg3s4t gg3s4v g4gu 2gh gh4te 1g2i gi1o gi5sn gi4ste gis4tr gi5stral gi5st4rat 3giv gi2\xc3\xb6 g2jo 3gjor g3j\xc3\xa4 2g3k2 2gl g4lans g1lar g2las 5glase glas5k 5glas\xc3\xb6 g4lid 4glj g4l\xc3\xb6g 5gl\xc3\xb6m 2g1m 2g1n g4nag g2no 1g2o 3go_ 3gol gon3s4 4gont 2gord 4gorm 4gort go3sl 2g1p g2r4 3graf 5gral gra2m5 5grans 4gras 5grec 5grett g3rig 4g5rik 5grip 3gris g5roi gro2v 4grum grus5t g4r\xc3\xa5 5gr\xc3\xa5_ gr\xc3\xa44n 5gr\xc3\xa4ns 2g2s gs1an g5satt g3sel g4sf gsi4d g3sju g5skaf gs4ki gs3kn gs4kot g3sky gs1l gs1m g4sme gs3n gs4ni gs4n\xc3\xb6 gs1or gs3pl gs3po gs4por gs5pre gs3pu gs3s gs3tak gs3tal g3stark gs4ten g3stif gs3till gs3tj g3stol gs3tra gst4re g3st\xc3\xa4m g4sug gs1v g4s3ve gs3vi gs3v\xc3\xa5 gs3yt gs1\xc3\xa4 2g1t g3tr 1g2u 4gug guld3 gul4da 4gul\xc3\xa4 gu2ma 4gup gu5ru gus4k 2gut g3utb 2g1v 4gw 3gy gytt3j 1g2\xc3\xa5 g\xc3\xa5rds5 2g5\xc3\xa5ri g4\xc3\xa4l g2\xc3\xa4r g\xc3\xa44s 1g2\xc3\xb6 4g\xc3\xb6g g\xc3\xb65ro 2g5\xc3\xb6rt 1h ha3bl ha5ge ha4li hal4so halv3\xc3\xa5 ham4st handels3 hands4l han5g2a ha5ra ha4sc ha4sp hasp5l has3t hav2 havs3 h5c 4hd he4at he4fr he4l\xc3\xa4 hets1 hets3t hets3v h3g h2i 4hir his2sk hi4t hj\xc3\xa4l3s h1k 2hl h4le 2hm 4hn h2na h2nit ho5nu hop5plo hop3s hos3p hos5ti 4how h3p h5ru h1s 2ht hu2s hust5r hyg5r hys4t hys5ta hy3ster h\xc3\xa5rd5s4 h\xc3\xa4ll2 h\xc3\xa4lls1 h\xc3\xa4lso3 h\xc3\xa44ri h\xc3\xa44s h\xc3\xa44var h2\xc3\xb6 h\xc3\xb62g h\xc3\xb65gen h\xc3\xb6g5r h\xc3\xb6rn5s h\xc3\xb64s h\xc3\xb6st5r i1a ia3fr ia3g ia4lu ia4sk ia3tr i2b3l i5bril i3ca i4ce_ i5cha ic4kord ick3u4 i5co i2d iden3s id4ge i4dom id1r id3ro id2s ids3v i4dun i3d\xc3\xa5 i4d\xc3\xb6 2i1e ifes4 i5fn i1fr 3ifr\xc3\xa5n i1g 4igan i2geb ig5ej ig1l ig3no i3i i4kart i1ki i3klo ik5l\xc3\xa4n ik3n i1ko ik3re i5krob ik5rof ik5ros ik5s2h ik5skor i3kul i3kum ik5u4t ik1v i3ky i3k\xc3\xa5 i3k\xc3\xb6 i1la il4dan i2lin il1j\xc3\xb6 il5k il5lak il4lik ill3s2 3illu il5l\xc3\xa4r il2min i1lo il2tj i3lu ilufts5 i4lup i5l\xc3\xa4 im2b3r im5sm im4so i1mu i5m\xc3\xa5 i3m\xc3\xa4 i5m\xc3\xb6 i4nau ind5sk\xc3\xa4 ind5sti 1indu in4ga in4ge_ ing4es_ ing5is in5glas ings5te i3ni i4nif in5j in5kve 1inneh 5inre 1inri 3inr\xc3\xa4 in4sem in3skr\xc3\xa4 in3sl ins4m in3sn 1inspe 5inspeln in5spr 3instink 3instru in4st\xc3\xa5 in5te 1intr in4tra int3s i1nu i4nun in3ym i1n\xc3\xa4 i5oc i1og i3ok io4kr i1ol io5li i5om ion2 i3ono ions3 i1op i1or i1os i1ot i1pe i1pi ipos4 ip5pi i3ra i4res i1ri irk5l i1ro iro3p i1ru i5sce isel4 is2h i2sk is5kep isk5na is3kopa is3ku is4kun is3ky i5slam is3l\xc3\xa4n is3m is3n i2s3p is4pri is3sa is3se iss5n is4s3tr iss3t\xc3\xa4 i1stal i1stans ist5att is5ten_ i1stent is4tes is3tig is5ting is5tor_ is5tore ist5ro ist\xc3\xa54 is5v i3sy i4s\xc3\xa5 i1t it5c i4tei i4tex i4tj it5ran i5trin i3tris it2t5op it4t3r it4tu i2t5\xc3\xa5 4i1u i1va i2vak i1vi i4vin iv3r iv2s i1v\xc3\xa5 ix2t ix5tu i1\xc3\xb6 1ja 3jakt_ 4jarb jas5p 2jb 2jd jd3r jd4sty j4du 1je je2a 5jef je5sta 2j1f 4j3g 4jh 1ji 4jin 4jk j4kl j3ko jk3v 2j1l 2jm 2j1n j2o 3job jo4kr 4jolj jo5l\xc3\xb6 jor4din jord3s4 3jou 4jp j5pl 2j3r 2j1s j5sa j4sk js4me js4te 2jt jts4 2j2u ju4kos juk3s jul3k 4jur jus5kr juss4 jus4t jus5ta jut4sta j\xc3\xa45lo j\xc3\xa4l4p5r j\xc3\xa4l4sa j\xc3\xa4rn3sk j\xc3\xa4r5s j\xc3\xb6r2s j\xc3\xb6s4t 5j\xc3\xa9 1k2a 3ka_ 3kad_ 3kade_ ka4dr 2kaf 5kaf\xc3\xa4 ka3i ka5ju 2kak k3akti 4kalf 4kalg kal4lo kall3s 3kamp 3kamr 3kan_ 4kand_ 5kano 2kap 3kapi ka5pla kap4pr kaps5t 5kapten 3kar_ ka3ra 4karb k5arbet ka5ri 4kark 3karna 4karp karp5s 4kart_ 4karte 4karv 3kas ka4sk kas3ti 3kat_ 3kats_ 4kau 2kb 4kc 2k3d4 kdom4 1k2e 3ke_ 2ked_ 2keda ke3dr ked4s ke4er 2kefu 4keld kels4 4kense ke5n\xc3\xa5 2kep 3kern ke2s kes3s 4kex 2k1f kf\xc3\xb62 kf\xc3\xb63ri 2k5g4 2kh4 kid3s 4kif 1kig kik4s kilt4 5kim\xc3\xa5 king3r 4kinne 4kins 2kint ki4nu ki4tr kiv3s 4kj 5kjol k3j\xc3\xa4 2k3k kl2 1klag k2lama kla4mi 3klang_ 3klass 2klat 5klav 2kle k2lej 2klig k2lim 3klip k2lis 5klist3r k5lock_ 5klocka 3klos 1klub 4kluk 1kl\xc3\xa4d 2k3l\xc3\xa4g 2k1m 2k2n k4nal 3k4nap 5knip 3k4niv 3k4nu k4ny k5nyk k2o 4koc ko5de k5odl kog3n ko4gr kog4s3 4kola ko2lin 4kolj kol5tr 5kolv_ 1kom 3komm 5komp 2k3omr kom4s 1kon 3konf 3konst 3kont ko3nu 1kor 3korg ko3ri 2korr 3korres 5kortera ko5s4k ko3sl 3kost ko4str 4k3ou 2k1p k2r4 3kraf 5kra3ge 4krang 5krera k4reten krid5s2 1krig krigs3 krings2k 4kriv 3kropp kropps5 kru5stad k3ryg kr\xc3\xa5k5s kr\xc3\xa54pa k5r\xc3\xa4dd_ kr\xc3\xa4k5l 4kr\xc3\xa4l k3r\xc3\xa4t 2ks ksaks5 k2s5as ks3ch k4ser ks2k4 ks3kl ks5kra ks5kv k3sk\xc3\xa4 k3sk\xc3\xb6 k5slag_ ks2li k5sly k2so ks3pl k1s4t kstavs3 ks5tid k2su 4k1t k4tex kti5ge k4tinn k2tins k2tod k2tom k2tr kt3re kt3rin k5trod kt5rog kt3rol kt5r\xc3\xa4t kt2st kt5t4 k4tug k2tut k4t\xc3\xa4l 4kug k5ugn ku5la 4kuld 3kul\xc3\xb6 kum5pl kungs5 5kunn ku4pen ku4ro 3kurs 3kus kust3a kv4 3kvali k5vare 3kvarn kvar3s 3kvart k4vato k2ve 2kvente 1kvinn 5kvire k4vo k1v\xc3\xa5 3kv\xc3\xa4ll k1v\xc3\xa4r kydds3 ky4lin 3kyrk k\xc3\xa4l4m 5k\xc3\xa4mp 5k\xc3\xa4nn 3k\xc3\xa4ns 3k\xc3\xa4rl 4k\xc3\xb6g k\xc3\xb6ks5t 5k\xc3\xb6p_ k\xc3\xb6r4l k\xc3\xb6r4sl 3la_ 1lade_ 2ladm 4ladr 2laf 3lagd_ la4gin 5lagm lag3r 2lak 5lakan_ 5laki 3laktis la5lo 3lande_ lan4di 2lappara 2larb 1larn lar5s 4lart las3h 4lask la4st 5laste_ 1lat_ la5tr lat4tis 2lau 2lav la5vu 2lb4 4l1c 2l2d lder4s l3dj ld3ra l5dry lds4an 1le 3le_ le4ge_ le5ig le2kl le4kv lem4s\xc3\xb6 2l5enl 3ler_ ler5k 3lern ler3ste le5s2l le5t\xc3\xa5 le3um le4vu 2lex 2l1f 2l1g l2gj l3g2l lgs4 lg5st 2lh 1li li5ch 3lif 3lig li4go lig3s lik2l li5kli lik3s 5limer 2lind 2linga_ ling5o 4lingr lings5t 2lini 5linj 2lint li1o 2lip lis3c li4sta li3str\xc3\xb6 li4vo livs1 l2jak 4l1jo 1lju l5j\xc3\xa5 l1j\xc3\xa4 l3j\xc3\xb6r 2l1k l3ke l5kju l2kl lk5lag l5kl\xc3\xa4 l2kr l3k4ra lk3t l1la lld4 ll3dr lle5b ll3k ll1l l1lo llok5v ll3p ll4san ll2se ll3ska ll2so ll4sva ll4tig ll3tr l1lu ll5un llust3ra ll5v l5ly ll\xc3\xa4ggs5 l5l\xc3\xb6d ll\xc3\xb6r4 ll5\xc3\xb6rt 4l1m l4mol lm3st l1n lo2af loc4ku 4lodl lo4do lod3st lo2ge_ 2lolj 2lom 4lord 2lorg lor4s lo4vo l4pak l1pe l1pi l5pla lp5l\xc3\xb6 lp4st 4l3r 2l1s l2sc l4sjo l4sj\xc3\xa4 l2sk l4skensv l3ski lsk3n l5skot l3skr\xc3\xa4 l3sky l3sk\xc3\xa5 lsk\xc3\xa54p l3sk\xc3\xa4 l3slu l4sm ls4mo ls5nyt l2sp l3spe ls3pl ls3pol ls5s l2st l3sta l4stak ls4te ls5ter l3sto l3sty l4styg l3st\xc3\xa5 l3st\xc3\xa4 l5st\xc3\xb6 l2su l5sur l2sv l4svi ls5vid l4s\xc3\xa5 4l1t lta2tu l4tef l4tif l4tih l4tos lt5rati l4tret l4tr\xc3\xb6 lt5sk ltu4 lu5i luk4to 4lull_ 2lun lung3 2lupp lu4pu lus2s5p 5lust_ 4lutb 4luts 2lv l1va l4varm lvers4 l1vi l4vos lv3ri lv3sp l1v\xc3\xa4 lv\xc3\xa4v4 lycks5t ly4gat lyg3r lyg3s2 3lyste 5lystn ly4str 2l\xc3\xa5_ l\xc3\xa5g3s 1l\xc3\xa5ng l\xc3\xa5ng3s l\xc3\xa54sk l\xc3\xa5s5te l\xc3\xa54st\xc3\xa5 4l\xc3\xa4c l\xc3\xa4g5r 1l\xc3\xa4nds 5l\xc3\xa4ngder l\xc3\xa44san l\xc3\xa44sp l\xc3\xa4tt3s 4l\xc3\xb6l 4l\xc3\xb6m 3l\xc3\xb6n 3l\xc3\xb6rer 1l\xc3\xb6s l\xc3\xb64v\xc3\xa4 3l\xc3\xa9 1ma ma5fr mag5n mag5s ma5ju mak3r ma3li mand4 mang2a man5g4o ma5ni mani1k 5ma3ri mash5 mas3ko mask3ro ma5sk\xc3\xb6 mas3ti mas4v 2mb mb4sk 2mc 2md m4dat m4di m4do m3d4r 1me 2meds me4du me4kl me4ko 4meld melo5 me5lu men5k me5nu me5ny mer2sko me4so mes4t me3sti 2meta me5trin met3ro meu4 2mex 2m1f m4fes m4fn 2m1g4 2mh 1mi mid3s mi4lu 2mind ming4o 4mink min4kr 4minv mi3n\xc3\xb6 mis2 mi5sf mi4sp miss3t mi4te_ mi4tr mitt3s 2m1k 2m3l 2m1m2 mme5d mm3s4 m4mul 2m1n m2nam mnas3t m4nav mn5dr mn3g4 mn5st mn5tu m2n3\xc3\xa5 1mo m4od mo4i 2momr mo3na mos3k mo2ta mo4tin mo4tu mot3v 2m1p m2pak m4part m2pl mp3lad m5plane mp3lat mp3lin mpos4 mp5p4 mps4k mp5sp m4p\xc3\xa5 2m1r 4ms m4sal m4ske m3slag ms3l\xc3\xa4 ms2m mste2 m1sto m2str mst3rin ms5\xc3\xa4p 2m1t 4mud mulls3 mult5r 5mum 4mun3g4 mun4ko 3mur 3musi mu3sta mut4sl 2m3v 1myn mys4te m\xc3\xa5g4 1m\xc3\xa5l_ 5m\xc3\xa5let_ 5m\xc3\xa5n_ 4m\xc3\xa5r m\xc3\xa51s 4m\xc3\xa4g m\xc3\xa4k3 1m\xc3\xa4n m\xc3\xa4ns4 3m\xc3\xa4rk 1m\xc3\xa4s m\xc3\xa4s5ta 1m\xc3\xa4t m\xc3\xb64bl m\xc3\xb64gen_ 3m\xc3\xb6j m\xc3\xb6r4kl 3m\xc3\xb6s 4m\xc3\xb6v 1na 3na_ 3nad nads3 2naf na5gr 2nak 3nako 3nakr na3kro n1akt 2nalf 5nalfl 4nalg nal3s na2lu n5amb 5namn 4nand_ 4nanv na4rap 2narb 2nark 4narm 2nart nast3r 2nb4 2n1c n2ch n3cha n3che n3chi ncis4 ncyk3l 2nd n4dak n4dav nd3d4 n5de nde3s n4dil nd5rak nd5ras nd3rat nd3ri n5dril n3drop nd5ros nd5skal nd3sn nds3or nds5v\xc3\xa4 nd5\xc3\xa5s 1ne 3ne_ ne4di 5nedl ne4d3r ned3s ne4d\xc3\xb6 ne2gr ne5gres 4nek_ ne5ly 4nenl ner5sm nes3s4 ne4sta ne5s4ti ne3tre ne1ut 2nex 2n1f4 nfalls5 nfis3 2ng1 n4gar n4gen_ n4gend n4gens n4genti n4germ n4get n2gi ng3ig ngi4s ng4ly n2go ng5om ng3or ng3rad n4gr\xc3\xb6 ng4ser ngs1k ngs3pa ngs5tim ngs3val n4g\xc3\xb6d 2nh 1n2i 4nid ni5ec ni4ki ni5li 3nin nings1 nings3k nings5v ni1o 4nip nip4pr ni5steri nist3ra ni3t4r niv5sk niv5st 2n1j n4jar n3jun nju4s n3j\xc3\xa4 2nk n4kart n1ki n4kis_ n3kny n1ko nkrafts5 nk3ri n1kro nkrus4 nk5sl nk3sp nk4tin n1ku n1k\xc3\xb6 2n1l 2n1m 2n1n nn3d n3ne nnis4 nn3k nn3s4t 1no 2nodl no4kl 2nolj 2nomr nom3s4 2nord 2norg no5sa no5sc no4tu 2n1p 2n1r 4ns ns2i n4sint n4sis_ n4sise ns2k ns3kan n1ski ns3kor nslags5 ns5las ns5mit n4soc n1spi ns3pl ns3po ns3s4 n3stans n3stap ns4tel n3stif ns3tig ns4tra n2strik nst5up nst5vil n3s4ty n1sva ns3vi ns3v\xc3\xa4r 2n1t n4tark nter5s4 n4tinf n2t5omb nt3rad n3trah n3trak n5trala nt3rali n5tram nt3rep n3trer nt3ria nt3rin nt3ris n4tropin n4tror n4tr\xc3\xb6 nts3c nt4se nts5kor nt4str n4tut n3tv\xc3\xa5 nufts4 4nug n5ugn 3nui 3num nums5 2nup n3upp 2nutb 2n1v ny5gr n5z 4n\xc3\xa5r 4n\xc3\xa4_ 4n\xc3\xa4c 3n\xc3\xa4m 3n\xc3\xa4t 4n\xc3\xb6g4 3n\xc3\xb6j n\xc3\xb62ja n\xc3\xb65kr 4n\xc3\xb6l n\xc3\xb6s4 n\xc3\xb6s5ke o1a o2ard o2b 5o4bj o4bli oby4 oc4k5r ock3sk oc3ku o2d ode4k odi4a 1odli o5dral o3dro ods4k od2st ods4ti od5stu o3d\xc3\xa4 o1e offs5t o4fl o3fr of\xc3\xb6rm\xc3\xa54 o1g o4gav og3gr o4gj o5glo o5gly ognos4 ogno5st o4gri o4gr\xc3\xb6 og3se og4s3t o4g\xc3\xa4 o1i o4il o1j o1k o4kli ok3n ok3sl ok4su o2kv o1la o5lak ol5au olf\xc3\xb64 1olj ol3ka olk3r ol4ku ol4k\xc3\xa4 oll4si oll5sl\xc3\xa4 ol3l\xc3\xa4 olm4s oln3s o1lo olo5kv ol4sa ol4t\xc3\xa5 o1lu o4lug o4lur o1ly ol5\xc3\xa5r o1l\xc3\xa4 om4br\xc3\xa4 o3men o4mord om5pa om3pl 1omr 4omra om1sk om4ste 3oms\xc3\xa4t om4tr om3tv on3c on5gi on1gr ongs4l o4nins on3j on1k4 ons3c onsi3s ons3m on5stel ons4ter on3tras on4tre ont4s o1ny on5\xc3\xa5 o1n\xc3\xa4 o3n\xc3\xb6 oo4d oom5s o3or o1pe o1pi o5pline op4pl opp3le op4pr op4pu o3pri op4st o3p\xc3\xa5 o5q 4ora o3rak oran3g4 o2rap 1ordn or4d5\xc3\xa4 o4reh 1orga 5organi or4gr or4g\xc3\xa5 o1ri 3orient 4ork or4m\xc3\xb6 or4nu or4n\xc3\xa4 o1ro or4pl or5pr or4spa ors5tig or5te or2tr ort3re ort3ro o1ru o3ry o1r\xc3\xa4 o1r\xc3\xb6 o3s2f\xc3\xa4 osk4l o1skop o3som os5pig os4sk os4s4t os3tig os5tiker o5still os4tr ost5ron ost5r\xc3\xb6 os3tul ota2lan 4oti_ 4otie 4otin o1to o5tro ot5run ot3sv ot5ti ot4tr\xc3\xa4 ott2s o1tu o5tun otvin4 o1ty o5t\xc3\xa5 o3t\xc3\xa4 oun4 oup4 4our ou3r\xc3\xb6 ou4s o3ut3t o1va ova4n o1vi ov3r ov4si ov3sl ovs4me o1v\xc3\xa4 o3we ox5 oy2 o3\xc3\xa5 o3\xc3\xa4n o3\xc3\xb6 1pa 4paf pag4 paki3 pakis4 pa5la pals5 pa5l\xc3\xa4 4pand_ pan4tr 3pap 2parb 4parm par3s 2pask pa5ski pa2st 3patr pa3u 2pb4 2pc 2p3d4 pek5tri pekt3ro 4peld pel3s4i 4pem 5peng 3penn pent5r per4bl 3perio 3pers per4sl pe5tro 4pex 2p1f 4p3g 2ph pi4el 1pig pi1o 3pip pi5so pi5sta pi5sto p2j 3pj\xc3\xa4s 4p3k2 p2l p4lac 5plan_ p4lane p3larn p3lev 3plex 3plic 1plik 4plit p3lj 1plom p3lop 2p1m 4p1n p3ni 1po 5poa 2poc 2pof po2i 3polit 4polj poly3 2porg 3pos pos4ter 4pov po4v\xc3\xa4 2pp p4part pp5ask p4pax p3pe p1pi p4pins pp3j pp1l pp3la pp3lin pp5lis pp5lu pp3ly pp3l\xc3\xa5n pp3l\xc3\xa5t pp3l\xc3\xa4 pp3l\xc3\xb6 pp5oc pp3of pp3p4 pp1r pp3ra pp3ri pp3ru pp3ry pp3r\xc3\xa4 pp3tr p2pu p5py pp3\xc3\xa5 p2r2 2pra 5prax 1pres pres4t pre3sta pres5to p3rig p3rik 5pril 3princ pring3 p5riol 3pro pro3g p3ror 4pr\xc3\xa5 3pr\xc3\xa4s 3pr\xc3\xb6v 2ps p2sal 3psalm p5s2ho ps4ken ps2li p3sna 4pso p3sod p1s4t p4stak p4st\xc3\xa4v p2s\xc3\xb6 2p1t p3tri 1pu 4pug pul2l5ov pul5tr 5pung 3punk pus3t 2p1v p\xc3\xa53dr 3p\xc3\xa4l p\xc3\xa45ro 4p\xc3\xb6r 3p\xc3\xa9 qu4 3que 1ra 3ra_ raci4t 3rade_ 4radr ra4du 5ra1e 2raff\xc3\xa4 ra3fr ra5is 2rak ra2lo r4ande 3rande_ 4ran4d3r rand3s 2ransv ra3pl 3rar r4ar_ 4rarb r4are 4rarg r4ark 4rarm r4arn r4ars 4rart r3arta ra5r\xc3\xb6 r4as ras3h ra2st 3raste_ 3rativ ra3tri 2rav ra5yo 2rb 2r1c 2r2d r4daf rda5gr r3dj r4dos rd3ran rd3rat r4dul r3d\xc3\xa5 r3d\xc3\xa4 r4d\xc3\xb6s 1re 3re_ 4reaus re3b 4rec 5reco re3d4r re5du 4reft 4regg 3regn_ re1kr rek5tri 4reld re3lu rem5p 3rems r4en_ 2reni 2renk 2renl re3n\xc3\xb6 re3o 3rer_ 3rern 3reso ress5k re1sti 3ret_ 4retet ret3ro 4rety re5t\xc3\xa5 2revig 4rex 2r1f rf\xc3\xb63ri 2r1g rg3g2 rgs5top 2rh rhands5 3rial 4rib 3rifi 2rifr r3ifr\xc3\xa5 3rifu 3rigt rik2s 3riktn ri4mo 2rind rind3s 5ringen_ ring3r 2rinr 2rins 2rint ri1o 3riot ri5ple ri2st\xc3\xa4 ri4tut ri4vis riv3s 4rj r4jis r3jo r5ju r5j\xc3\xb6 2rk rk3akt r4kek rkes3 r1ki r3klas rk2le r4kl\xc3\xb6 rk3n rk4ne r1ko r4kod rk3tr r1ku r4kup r1k\xc3\xa4 r5k\xc3\xb6r 2r1l r5laka r5lav rld2 rlds3 rl5sp 2r1m r4marb r4mil rm2s5j rm5tr 2r1n rnal4 rn3g4 rn1k r2nom rns4k rns4t rn3t ro3b ro4gro ro2kr 2rolj rol4li rom4a 5roman 5ronau 5rond_ ron4v ro3pl ropp2s ro4ra 2rord 2rorg 2rorie 3rorn ro4sin ro4sn ros3v ro5te 2r1p r4pl\xc3\xb6 r4p\xc3\xb6 4r1r rra4n rrd4 rreligi5 rres4 r5rib rr5k4 r4rob r4rom rr1s rrs2k r4rur 2rs r4seld r4sex r2sin r1ski r4skid rsk3na rs5koll rs4kos rskotts3 r2sku r3sk\xc3\xb6 rslags4v r4sle r4slo r4s5l\xc3\xb6 rs4mo rs5nat rs5n\xc3\xa4 r1sp r2spl r2spo rs3s4 rs5tak rs4te r5stek rs5tend r5steni rs5till r1sto r4ston rst4r r3str\xc3\xb6 r3stu r1sv rs4vag r2sv\xc3\xa4 r1sy 2r1t r2taf r2takti rt4an r4tins r4tom r5trit r3tr\xc3\xa4 rt3t r4tut rubb5l ru3br ru4dan ruks1 ruks3v 5rullera 3rum_ runn2 runns5 4rupp rus2h ru5sha 2rut 5rutig rut4ra ru4vi 5ru\xc3\xb6 2r1v rv4sj rv2s5k\xc3\xa4 r3w rydd5s ry5o r\xc3\xa5ge5l 4r\xc3\xa5l r\xc3\xa5ng3s r\xc3\xa55ra r\xc3\xa53st r\xc3\xa4ck5s 4r\xc3\xa4kt 4r\xc3\xa4m r\xc3\xa4ng3s r\xc3\xa4ns5t 4r\xc3\xa4s r\xc3\xa44san r\xc3\xa4s3s r\xc3\xa45sti r\xc3\xa4v5s r\xc3\xb6d5el r\xc3\xb6d5r r\xc3\xb6d3s 2r\xc3\xb6g r3\xc3\xb6i r\xc3\xb6k3s r\xc3\xb6ns4t 4r\xc3\xb6p 3r\xc3\xb6r r\xc3\xb6r4s r\xc3\xb64st r\xc3\xb6st3r r1\xc3\xb6vr 1sa 3sa_ 3sad_ 3sade 4sadj 2sa3dr sad5s 2saf sa3i sak5ri 2s1akt sa5lo 3s2am sa2ma samman3 sa2mor sand3s 4sang 2sanl s3anl\xc3\xa4 san3sla 2sap 3s4ar_ 2sarb 2sarm s5arm_ 3sarn 2sart 4sarv 4sass 5sat_ sa4tu 2sau s3auk 2s1av 4sb s2c 2sch_ 1scha 2schau 4schb 1schen 1scher 1schet 1schi 4schk 4schm 4schp 3schy 3sch\xc3\xb6 sci3p 4s3d 1se se4at_ se2g 2s3egg 3segl seg3ra sek5le sek3r sek5tr 3sel_ se5ly sem2 3sen_ s5ers\xc3\xa4 3set_ 2sexp 2s1f s4f\xc3\xa4r_ sf\xc3\xb62 4s3g2 2sh 5s2haw shi1s s5h\xc3\xb6 1si sid5s 5sie si4eri si4esk si2ett 3s2ig 3sik sikts3 5sill_ silver3 silv3r 2s1ind 2s1inf sinne2s3 3sinni 4sinr 2sin1s s1inst 5sint_ 2sintr 3sio sis4t siu4 1s2j 2sjak s3jakt 4sjn 4sjt s4ju 5sjuk 4sjur sj\xc3\xa4ls3 3sj\xc3\xb6 4sk_ 2ska_ 3s2kada s2kado 3skaffn 1skaft s4kag s2kal 3skal_ 1skap 5skap_ 5skapet 4skapi skaps1 4skar s4kara 5skarv 4skas s2kat s4kav 4ske_ 3sked_ s4kene 3skepp 4skh sk4i 3skif 5skin 4skis_ 5skiv 5skjor 3skju 4skl sk5lap s3klas 4skn 3s4ko_ 1s4kog 4skogsg 1skol 3skola s4kolo s4korp skor1st 1skot s5kran_ 3skrat sk4ret 3skrev 1skri 3skrif s3krig 5skrin 3skrip s5kris 3skriv s5kron s4kru 5skrub 3skruv 5skr\xc3\xa4c sk3s 2skt 3skulp s3kup 2skv s4kve 1s2ky s4kyn 2skyrk 1sk\xc3\xa5 s4k\xc3\xa5l 5sk\xc3\xa5p_ 4sk\xc3\xa5r 5sk\xc3\xa4nk 3sk\xc3\xa4rv 2sl2 4sla_ s5lad_ s3land 3s2lang s4lant s3lar_ 4slas s1lat s2lev 3slev_ s4lic slins3 4slis s2lit s5lor slotts3 s2lu s3luc s3luf 4slus s3lust 3slut slu4to 3sl\xc3\xa5_ 5s4l\xc3\xa5r s4l\xc3\xa4k s5l\xc3\xa4m s5l\xc3\xa4nn 3s4l\xc3\xa4p 4s3l\xc3\xa4r s2l\xc3\xa4t 3s2l\xc3\xb6j 2sm s2mak 3smak_ s3makt s2mal s2met_ s2mid s2mit 3smitta s3mj 5smug 5smyg sm\xc3\xa55g sm\xc3\xa53k sm\xc3\xa53s 3sm\xc3\xa4d 3sm\xc3\xa4l 4sm\xc3\xa4s 3sm\xc3\xb6r 2s2n4 3snab 3s4nac s3nam s5nare s3nast s5ner 3snib 3snil 3snit 1snitt s3niv 3snut s4n\xc3\xa5 5sn\xc3\xa5r 5sn\xc3\xa4c s4n\xc3\xa4r 3sn\xc3\xb6_ sn\xc3\xb65g 3sn\xc3\xb6r sn\xc3\xb63s 1so 3soc 5sock 2sod 5soi 2solj sol3s2 2som 5somm 3son son4st so5pra so4pu 3sor_ 2sord s5ord_ 2sorg 3sorn 3sot 4sott s2p2 5spann_ s4park 5sparv 4spas s3pass spa5tr 1spe 4sped 3s4pek 3s4pel 4spelsl 2spen 2sper 5spets 3spill 3spir 4spl s1pla s3plan s3plats spli4 s4plin 5split s5pl\xc3\xa4 4spre s3pres 4s3pris 3sprit 2spro s3pry 3spr\xc3\xa5 5spr\xc3\xa4n s3ps 1s4p\xc3\xa5 3sp\xc3\xa5n 3sp\xc3\xa5r 5sp\xc3\xa4n 3sp\xc3\xb6 4s1r 4s1s s5sad sse4lin s5sil ss2k ss5kl ss3kun ss1l ss2lag_ ss2l\xc3\xa4 ss2l\xc3\xb6 ss3na sss4 ss3unn s2sv ss3vi s2t 2st_ 4sta_ 5stac 3stadi s4taf 5stalgis 3stalla 2stalli 5stam_ 5stamm 1stant 5stark_ 5startad 1state 3statl 1stau st3c 2s5te_ 4stea 5steg_ s4tek_ 2stekn 5stekt s4tell 3stem_ 3steme 5stenar 3s4tene 3stense 5stensm 1stera 1stering s4teriu 3sterne 5stetis 2stia 2stib 3stick 2stid s4tiken 2stil 3stil_ 3stink 3stisc 1stit 2stj s5tju 3stj\xc3\xa4l 3stj\xc3\xa4r 2stm 5stoc 1stol 4stolk 4stom stori4eu 5storis stor3s 3straff 4strativ 3strato 3strec 3strej st3ren 1strer 2stria 1strid 5stride 2striel st4rif 1strikt st5risk 1stru 3struk 2strumm s3tryc 5stryk 5str\xc3\xa5k 3str\xc3\xa5l 3str\xc3\xa4c 4str\xc3\xa4d 3str\xc3\xa4ng 5str\xc3\xa4v 3str\xc3\xb6m 2st3s4 st3t 4stv s3tvis 1sty 2styp 1st\xc3\xa5 4st\xc3\xa5g 5st\xc3\xa5l 1st\xc3\xa4 3st\xc3\xa4l 1st\xc3\xb6 1su su4b 3sug su3i 3sum 2sun 5sun_ s1under 5sune s5ung 2sup 5supa su2pu 5sus 2s1ut su4to su4tr s2v2 5svag_ s3vagn 4s3vak 5svam 4svap svars3 3svart 4svas s3vat 4svec 3sven 5svep 4s3ver s5ves 4s3vil s4vine 4svis s5vitt s5v\xc3\xa5d 3sv\xc3\xa5ri 3sv\xc3\xa4ng 5sv\xc3\xa4rm_ s3v\xc3\xa4s s3v\xc3\xa4t 4syk 5syl 3syn syn3k s3yrk 3sys sys4t sys5ter syt2 sy5th 1s\xc3\xa5 5s\xc3\xa5g 4s\xc3\xa5k 2s\xc3\xa5lde s\xc3\xa5ng3 1s\xc3\xa4 s4\xc3\xa4d 2s5\xc3\xa4gg s4\xc3\xa4l 2s\xc3\xa4p 5s\xc3\xa4s 3s\xc3\xa4t 4s\xc3\xa4ta 1s\xc3\xb6 4s\xc3\xb6d 2s\xc3\xb6g s5\xc3\xb6ga s\xc3\xb64ko 4s\xc3\xb6l 4s\xc3\xb6p s\xc3\xb6r2s 2s3\xc3\xb6rt 1ta 3ta_ ta1ch 3tade_ 4tadi 4tads5 2taff 3taga 5tak_ ta5kre 2taktig tak4to 4talf 5tallise tall5s 4talv 3tame 3tami 3tan_ ta4nab 3tande_ 2t3anfa 4tanl t4ap3l 2tappar 3tar_ 4tarb tar4mi 3tarn tars4 4tart 5tartavl 4tarv 4task 3tast ta1str tat2 ta4tan tats3 2tatt 2tav 4tave 5tavla_ 3tavlan 3tavlo tav2s 3tax 2tb4 2tc t3cha t3che 2t3d4 3t2e te4as te3b4 5tec 4teg te2g1r te3gre te3i te4int 4tej tej2s te4kl 5teknik 5teknis 4teld 5te5l\xc3\xb6 5tema 4temo te4mu ten3g4 5tensi ten3tr te4n\xc3\xa4 te5n\xc3\xb6r 5ter_ 5teri\xc3\xb6 ter3k4 5term 5terna 5ters ter3t te4ru 5tes_ 5test tes4te te5stik te5stu 5tetik tets3 4texa 2texp 2t1f4 2t3g4 2th t4hen 1ti 3tial 5tib 5tici 3tid 5tide ti4du 4tid\xc3\xb6 ti4ed tifts5 ti2gel 3tigh ti4go ti2gr 3tigt tik3l 3tiks 5tikul t2il 5tilj 3tillst 3tillv 3till\xc3\xa4 5time 2tind 2tinr 2tint ti4od 3tion ti2os 3tis 4tisc 5tisk 3tiva ti4van 5tivite ti2\xc3\xb6 t2j 4tje 4tjob 2tjou 4tj\xc3\xa4l 4tj\xc3\xa4m 3tj\xc3\xa4n 2t3k2 2t3l 2t1m 2t5n4 tne4r 4todl 3tok 4tol_ 4tolj 2tomr 4toms t2op 5torap t5ord_ 5toriett 4torm torm3s 3torn tor1st 4tort_ tos4k t5ost_ t4ov 2t1p t2r4 2tra t4raf 3trafi 3t4ral_ t4rala 3t4rale 5tralo 3trals t4ralt 3trans tran2s5a 4trar t3ras_ t3rat_ t4rato 4treg 4tren 4trer_ 4trern t3rets_ 2tri 3tribu 5trick trids3 t5riel t1ring t3ring_ 2troc t3rock t4rog t5ronik t3rono 4tropi_ 5tross 5trotn t4rump t4rup 3trupp trus5ta 1tryc 5tryck_ 5tryggh 4tr\xc3\xa5k 5tr\xc3\xa4_ 3tr\xc3\xa4d tr\xc3\xa4ds4 3tr\xc3\xa4f 3tr\xc3\xa4g 4tr\xc3\xa4k t3r\xc3\xa4kn t4r\xc3\xa4n 5tr\xc3\xa4ni 5tr\xc3\xb6ja t4r\xc3\xb6t 5tr\xc3\xa9 2ts t5s4and ts5art t3s4at t3se t4seg ts4en t4sex ts2k t5skall t3skatt t1ski ts3kl tskotts5 t5slot ts5l\xc3\xa4k ts3n\xc3\xa4 t3sn\xc3\xb6 t2so ts3ord ts3pl tss4 t1st ts4te ts5ter ts5tillf ts3tj t3stol t4ston t2stra t4stry t4stur t5styr t2su t3sud t5sy 2tt t3tac t4tau t4ted tte5g4 t4tem tte2n ttes4 t4tex t4tins t4tip tt3ja t1to tt3rad tt3rand tt3rat tt3re tt3ri tt4ry tt4se tt2si tt4sta t3tu t4tug tt1v tt4v\xc3\xa5 t3ty t3t\xc3\xa4 t3t\xc3\xb6r 4t5ugn 2tund 3tunga tung3s 5tunn 2tupp tu5re 2tutb t3utv t3ut\xc3\xb6 tu4vu 5tu\xc3\xb6 2tv t1va 4tve t3vig 3tving t3vit 3tviv t3v\xc3\xa5g 3tv\xc3\xa5n t3v\xc3\xa4n tv\xc3\xa4r3s 3tv\xc3\xa4tt ty5da 5tyg_ 3tyngd 3typ ty3pi 5tys 2tz 3t\xc3\xa5g t\xc3\xa5s4 4t\xc3\xa5t t\xc3\xa4c4ko 4t5\xc3\xa4g 4t\xc3\xa4m 4t\xc3\xa4rm 3t\xc3\xa4vl 4t\xc3\xb64d t\xc3\xb65de 4t\xc3\xb6g 4t\xc3\xb6p t\xc3\xb64pi 3t\xc3\xb6rer t\xc3\xb6rs3t t\xc3\xb64vas 5t\xc3\xa9 u1a u2b ub5al ubb4le ub3lic u4bo u3cha u5cl u2d u4dak u5de ud3r ud4ret uds4a u4du u4dy u1e u2es uf4f\xc3\xa4 uf4tan uf4to 4u1ga u1ge ugg3s ugn4 ugns5 ug3s4 u5ie u1in u3is u3itet u3j u2keb u5ki u4kl uk5la uk3n u1ko ukos4 uk2s uks5ko uk3tris ukt5s uk4t\xc3\xa4 u3ku uk3v u1la ul4di ulds2m ul4du ul4d\xc3\xb6 ull3ste ull3\xc3\xa4n u1lo uls5ti ul2tr u3lu u1l\xc3\xa4 u1l\xc3\xb6 um4f\xc3\xa4 um4so ums4t u1mu u3m\xc3\xb6r 5underl 1unders\xc3\xb6 1underv un4dom und3r un4d\xc3\xa5 un5g2ef un3gersk ung5it ung3r ungs4p 3unif unk3l unk3n un4kr un1sk un4tr un5trati u5nu u1o u1pe u4pern u1pi u2pl u3plet up3lik 3uppfa 1uppg up4pin 1uppla 5uppl\xc3\xa4 up4p3r upp3s upp5sp up5ut ur5ak ur5arv u3re u1ri u1ro u4rob u4rom urs5tin ur4st\xc3\xa4 u5ry u2sak us5anl u3scha u3se usen3 u2s1k us3ka us4kla us4kr u5sky us4k\xc3\xa5 us5l\xc3\xa4 us3n u2sp us3pen us5tat us3tig u3stik us5tin ust5ro u4st\xc3\xa5 u4st\xc3\xa4 us3v u4s\xc3\xa5 u4s\xc3\xa4 u2s\xc3\xb6 u4tak 1utb u4tef ute3s utik2 u5til uti3\xc3\xb6 ut3j 3utj\xc3\xa4m utlands3 u1to u3top uto5s ut3r ut4rer ut4ro ut5rop 1utru 2utsid ut3sl 3utsl\xc3\xa4 2utt utt4j ut1v 3utvec u5ty ut3\xc3\xb6v u5u 2u1v u2vak u4vj u4v\xc3\xa4 u5\xc3\xa5 u3\xc3\xb6 va5dro 1vagn 2v1akti val3k val4li val4st 5valv 5vama 4vand_ 4vanp van4st van5tr 5vap 2varb va4res va4ri_ 4vark var2s vart5r va1ru vas5ti 5vattn 4vau 4vav 5vavi 2vb4 2v1c 2v3d4 1ve 5vec ve2k ve3ke 4veld vensk3\xc3\xa4 5ventera ve3ny ve5n\xc3\xb6 4vep ver5g 3verk ves4 ve2s5p ve1st 3veta 3vete vet5sa vett5s 2v1f 2v1g 2vh v4i vi4c vid3s vild3s vil4t 3vind_ ving3s4 3vinkl vi2no 5vinst_ 5vinste vi5ny 3vis_ vi5sa vis5h vis5ko vi4st vis3ta vi2tr vi4var 4vjo 2v3k2 2v1l 2v1m vm\xc3\xb6rk4 2v1n4 1vo 4vok_ 2vom 4vord 2vorg vos4 2v1p 2v2r 5vrak 3vrera v3ru 2vs v4sc v1s2k v2skri vs4mi v3sni v2so v1st vs4te vs5tr\xc3\xa5 v5styc vs3v\xc3\xa5 v2s\xc3\xb6 2v1t vu4d1 v1und 4v5up 4vut 2v1v 3vy 5v\xc3\xa5ld v\xc3\xa5ngs3 3v\xc3\xa5rd 4v\xc3\xa5ri v\xc3\xa53ru 3v\xc3\xa4g v\xc3\xa4gg5s v\xc3\xa44l v\xc3\xa4ll4s3 3v\xc3\xa4nl 3v\xc3\xa4rde v\xc3\xa44ril 4v\xc3\xa4rj 5v\xc3\xa4rk 3v\xc3\xa4rld 2v\xc3\xa4t 3v\xc3\xa4x 4v\xc3\xb6g 4v\xc3\xb6p 3v\xc3\xb6r 1wa we2 w2h whi2 wi2e w4na x1 xan5d4 xem3pla xis4 xk2 xli4 xs4 xti2 x4t\xc3\xa5 2y y1a y4bris yb4s y2d y4da y5dan y4do yd3r yds4 y4du y4d\xc3\xb6 y1e y1ga y1ge ygg3r yg4g\xc3\xa5 ygs4p y1i y1ki y5klist yk5lon yk3n y1ko y1la yl4gj y3li yl5k yl5l\xc3\xa4 y1lo yl4tr ym2fl ym4for y3m\xc3\xa5 yng3r ynk5l yn4sa yns4t y3or y5ou y1pe y5po yp3ri yre4s y1ri yr4ku yrk5v y1ro yrs4k yr5st yr5tu y1r\xc3\xa53 y5scho ys2st ys3ta ys3ti ys4tik_ yst3ra y2tak y4te_ y4tea y1to ytt3r yt5v y3va y3vi y3v\xc3\xa4 y5w y5\xc3\xa5 1za 1ze ze4ro 1zi 1zo zo4nal 4zp z5s 3zu z4zin \xc3\xa51a \xc3\xa53dj \xc3\xa5ds4l \xc3\xa51e \xc3\xa51f \xc3\xa51ga \xc3\xa51ge \xc3\xa5ge2l \xc3\xa5g3l \xc3\xa5g3s4k \xc3\xa5g3st \xc3\xa5g\xc3\xa54 \xc3\xa53i \xc3\xa51ki 5\xc3\xa5klag \xc3\xa5k4str\xc3\xa4 \xc3\xa51la 1\xc3\xa5lder \xc3\xa52lin \xc3\xa5l3k \xc3\xa5ll4sp \xc3\xa5l2s5e \xc3\xa5l3st \xc3\xa51l\xc3\xa4 \xc3\xa51m \xc3\xa5man4s \xc3\xa5nd4r \xc3\xa5n4du \xc3\xa5ns4t \xc3\xa5ns4v \xc3\xa53o \xc3\xa51p \xc3\xa52pl \xc3\xa55pla \xc3\xa54p\xc3\xb6 \xc3\xa5r4do \xc3\xa5rd4ra \xc3\xa5rd2s \xc3\xa5rd4s3t \xc3\xa54rel \xc3\xa51ri \xc3\xa55ror 5\xc3\xa5rsav \xc3\xa5r5s2li \xc3\xa5r2sv \xc3\xa5r5\xc3\xb6 \xc3\xa5s4ke \xc3\xa5s3n \xc3\xa5ss4 \xc3\xa5s4skr \xc3\xa5s4t \xc3\xa5te2 \xc3\xa5t3ri \xc3\xa53tr\xc3\xa5 \xc3\xa5t2sj \xc3\xa5tt5s \xc3\xa51v \xc3\xa41a \xc3\xa42b 2\xc3\xa4c \xc3\xa4ck5v \xc3\xa42d \xc3\xa4dd3s \xc3\xa4d4du \xc3\xa4de4s \xc3\xa4d3r \xc3\xa4d5se \xc3\xa4d3st \xc3\xa43e \xc3\xa41ga \xc3\xa41ge \xc3\xa4g4go \xc3\xa4g1l \xc3\xa4g3r \xc3\xa4g4re \xc3\xa4g3se \xc3\xa43i \xc3\xa45jo 4\xc3\xa4k \xc3\xa41ki \xc3\xa4k3n \xc3\xa4k3r \xc3\xa41la \xc3\xa4l4pap \xc3\xa4l4seg \xc3\xa4ls5kog \xc3\xa4l4slu \xc3\xa4l2t3r \xc3\xa4l2tu \xc3\xa4l4vin \xc3\xa4mp3l 4\xc3\xa4ndligh \xc3\xa4nd3r \xc3\xa4nd1st \xc3\xa4ng5r \xc3\xa4nni3s \xc3\xa4nn3s \xc3\xa44no \xc3\xa4ns1l \xc3\xa4n4st \xc3\xa4ns5te \xc3\xa4n4sv \xc3\xa4n2t3r \xc3\xa43pe \xc3\xa4pp3l \xc3\xa44pr \xc3\xa4p4st \xc3\xa44rap \xc3\xa4r2bre \xc3\xa4rg5l \xc3\xa4r4gr \xc3\xa41ri \xc3\xa4rib4 \xc3\xa4r4k\xc3\xa4 \xc3\xa4r4nis \xc3\xa4rn3st \xc3\xa4r2n\xc3\xa5 \xc3\xa4r4n\xc3\xb6 \xc3\xa4r5ob \xc3\xa45rol \xc3\xa43rop \xc3\xa45ror \xc3\xa45ros \xc3\xa4r2si \xc3\xa4r4sko \xc3\xa4r2so \xc3\xa4r4sp \xc3\xa4r2sv \xc3\xa4r4tand \xc3\xa4r2tr \xc3\xa4rt3s 4\xc3\xa4s \xc3\xa4s3pa \xc3\xa4s5pi \xc3\xa4s4sk \xc3\xa4s4sp \xc3\xa4s3ta \xc3\xa4st3r \xc3\xa44st\xc3\xa4 \xc3\xa44s\xc3\xa5 2\xc3\xa4t \xc3\xa43to \xc3\xa45tre \xc3\xa4t4s3k \xc3\xa4t5te \xc3\xa4t4top \xc3\xa4tt3r \xc3\xa4t4tu \xc3\xa4t4tv \xc3\xa41va \xc3\xa42vak \xc3\xa43vi \xc3\xa45vu \xc3\xb61a \xc3\xb62d \xc3\xb64dak \xc3\xb64dal \xc3\xb64darv \xc3\xb6de4s5 \xc3\xb64dis \xc3\xb6d3ra \xc3\xb6d2s \xc3\xb6d3se \xc3\xb64du \xc3\xb64d\xc3\xb6 \xc3\xb61e \xc3\xb61ga \xc3\xb6g5ak \xc3\xb65gar 1\xc3\xb6gd \xc3\xb61ge \xc3\xb65ger \xc3\xb6gg4 \xc3\xb6g1l \xc3\xb6g2n \xc3\xb6gn3e 1\xc3\xb6go \xc3\xb6g3si \xc3\xb6g3sk \xc3\xb61i \xc3\xb63jo \xc3\xb6j4sv \xc3\xb64karm \xc3\xb61ki \xc3\xb6k3n \xc3\xb6k2s \xc3\xb6k3sl \xc3\xb61la \xc3\xb6l4kv \xc3\xb6l4k\xc3\xb6 \xc3\xb6l2p \xc3\xb65l\xc3\xa4 \xc3\xb6man4 \xc3\xb6m2kl \xc3\xb64nal \xc3\xb62nom \xc3\xb6ns3ke \xc3\xb6n4so \xc3\xb6nst3r \xc3\xb63pe \xc3\xb64pel \xc3\xb63pi \xc3\xb6p5li \xc3\xb65plo 1\xc3\xb6ppn \xc3\xb64pr \xc3\xb63rande \xc3\xb63ras \xc3\xb64rask \xc3\xb6rb4 \xc3\xb6r3d4r \xc3\xb6r1eni \xc3\xb63res \xc3\xb64restr \xc3\xb63ret \xc3\xb6r5evig \xc3\xb6r3g \xc3\xb61ri \xc3\xb65rig \xc3\xb63ring \xc3\xb6r3int \xc3\xb6r5ir \xc3\xb6r5iv \xc3\xb6r4kal \xc3\xb6r1k2l \xc3\xb6r5kli \xc3\xb6r4nis \xc3\xb6r3ol \xc3\xb6r1or \xc3\xb6r2p5la \xc3\xb6r1s2k \xc3\xb6r3sl \xc3\xb6r4sl\xc3\xa4 \xc3\xb6r5te \xc3\xb6rt5s \xc3\xb6r1u \xc3\xb6r3vr \xc3\xb6r3y \xc3\xb6r1\xc3\xa4 \xc3\xb6r\xc3\xb64d \xc3\xb62sak \xc3\xb6s3n \xc3\xb6s4sj \xc3\xb6s2sk \xc3\xb6s4sp \xc3\xb6s3ta \xc3\xb6st3v \xc3\xb62tak \xc3\xb6ts5ko \xc3\xb6t4st \xc3\xb61v \xc3\xb6ve4 \xc3\xb6ver1 5\xc3\xb6vere \xc3\xb62vj \xc3\xb6v3ra \xc3\xb6v3ri \xc3\xb6v4sk \xc3\xa93e";
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/progbar.css b/inc/3rdparty/libraries/mpdf/progbar.css
deleted file mode 100644 (file)
index 78afc31..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-body {
-       margin : 0 auto;
-       width:100%;
-       font-family: "Verdana";
-       color: #40454b;
-       font-size: 12px;
-       text-align:center;
-}
-.main {
-       width:540px;
-       margin: 0 auto;
-       text-align:left;
-}
-.heading {
-       font-size:14px;
-       font-weight:bold;
-       color:#CC0000;
-       padding:5px;
-       margin-left:10px;
-       border-bottom:solid;
-       border-bottom-width:1px;
-       border-bottom-color:#333333;
-       /* Use this to suppress the horizontal line under the heading */
-       /* border-bottom: 0px solid #000000; */
-}
-table {
-       font-family: "Verdana";
-       color: #40454b;
-       font-size: 12px;
-}
-.demo {
-       margin : 0 auto;
-       width:100%;
-       margin:20px;
-       /* Use this to suppress all the bars and text */
-       /* display: none; */
-}
-td {
-       vertical-align: top;
-       padding: 0 0.5em 0 0;
-}
-.code {
-       font-family: "Courier New", Courier, monospace;
-       font-size: 10px;
-}
-.code2 {
-       font-family: "Courier New", Courier, monospace;
-       font-size: 11px; font-weight: bold; color: red;
-}
-.barheading {
-       color:#006600;
-       font-weight:bold;
-}
-.progressBar { 
-       border: 1px solid #000000;
-       background-color: #EEEEEE;
-       width: 200px;
-       font-size: 6px; 
-}
-.innerBar { 
-       background-color:#00CC00; 
-       width: 0%; 
-}
-#box3 { 
-       font-weight: bold; 
-}
diff --git a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt b/inc/3rdparty/libraries/mpdf/tmp/dummy.txt
deleted file mode 100644 (file)
index 4123496..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-This is just a placeholder file so that the folder is created on install.
-It can be deleted once installed.
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt b/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt
deleted file mode 100644 (file)
index 4123496..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-This is just a placeholder file so that the folder is created on install.
-It can be deleted once installed.
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt b/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt
deleted file mode 100644 (file)
index 1dc7335..0000000
+++ /dev/null
@@ -1,21488 +0,0 @@
-0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
-0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
-0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
-0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
-0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
-0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
-0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
-0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
-0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
-0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
-000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
-000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
-000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
-000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
-000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
-000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
-0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
-0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
-0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
-0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
-0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
-0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
-0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
-0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
-0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
-0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
-001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
-001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
-001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
-001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
-001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
-001F;<control>;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;;
-0020;SPACE;Zs;0;WS;;;;;N;;;;;
-0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;;
-0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;;
-0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;;
-0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-0026;AMPERSAND;Po;0;ON;;;;;N;;;;;
-0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;;
-0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;;
-0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;;
-002A;ASTERISK;Po;0;ON;;;;;N;;;;;
-002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;;
-002C;COMMA;Po;0;CS;;;;;N;;;;;
-002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;;
-002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;;
-002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;;
-0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
-0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
-0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
-0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
-0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
-0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
-0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
-0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
-0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
-0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
-003A;COLON;Po;0;CS;;;;;N;;;;;
-003B;SEMICOLON;Po;0;ON;;;;;N;;;;;
-003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
-003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;;
-003F;QUESTION MARK;Po;0;ON;;;;;N;;;;;
-0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;;
-0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061;
-0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062;
-0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063;
-0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064;
-0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065;
-0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066;
-0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067;
-0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068;
-0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069;
-004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A;
-004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B;
-004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C;
-004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D;
-004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E;
-004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F;
-0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070;
-0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071;
-0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072;
-0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073;
-0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074;
-0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075;
-0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076;
-0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077;
-0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078;
-0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079;
-005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A;
-005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;;
-005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;;
-005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;;
-005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;;
-005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;;
-0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;;
-0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041
-0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042
-0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043
-0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044
-0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045
-0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046
-0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047
-0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048
-0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049
-006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A
-006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B
-006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C
-006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D
-006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E
-006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F
-0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050
-0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051
-0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052
-0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053
-0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054
-0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055
-0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056
-0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057
-0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058
-0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059
-007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
-007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;;
-007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;;
-007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;;
-007E;TILDE;Sm;0;ON;;;;;N;;;;;
-007F;<control>;Cc;0;BN;;;;;N;DELETE;;;;
-0080;<control>;Cc;0;BN;;;;;N;;;;;
-0081;<control>;Cc;0;BN;;;;;N;;;;;
-0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
-0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
-0084;<control>;Cc;0;BN;;;;;N;;;;;
-0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
-0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
-0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
-0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
-0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
-008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
-008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
-008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
-008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
-008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
-008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
-0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
-0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
-0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
-0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
-0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
-0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
-0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
-0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
-0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
-0099;<control>;Cc;0;BN;;;;;N;;;;;
-009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
-009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
-009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
-009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
-009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
-009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
-00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
-00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;;
-00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;;
-00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;;
-00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;;
-00A7;SECTION SIGN;So;0;ON;;;;;N;;;;;
-00A8;DIAERESIS;Sk;0;ON;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
-00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
-00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 0061;;;;N;;;;;
-00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;;
-00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;;
-00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;;
-00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;;
-00AF;MACRON;Sk;0;ON;<compat> 0020 0304;;;;N;SPACING MACRON;;;;
-00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;;
-00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;;
-00B2;SUPERSCRIPT TWO;No;0;EN;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
-00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
-00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
-00B5;MICRO SIGN;Ll;0;L;<compat> 03BC;;;;N;;;039C;;039C
-00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;;
-00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;;
-00B8;CEDILLA;Sk;0;ON;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
-00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
-00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
-00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;;
-00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
-00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
-00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;;
-00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;;
-00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0;
-00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1;
-00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2;
-00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3;
-00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4;
-00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5;
-00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6;
-00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7;
-00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8;
-00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9;
-00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA;
-00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB;
-00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC;
-00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED;
-00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE;
-00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF;
-00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;00F0;
-00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1;
-00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2;
-00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3;
-00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4;
-00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5;
-00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6;
-00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;;
-00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8;
-00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9;
-00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA;
-00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB;
-00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC;
-00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD;
-00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;;;00FE;
-00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;;
-00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0
-00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1
-00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2
-00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3
-00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4
-00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5
-00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6
-00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7
-00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8
-00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9
-00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA
-00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB
-00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC
-00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD
-00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE
-00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF
-00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;;00D0;;00D0
-00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1
-00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2
-00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3
-00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4
-00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5
-00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6
-00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8
-00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9
-00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA
-00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB
-00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC
-00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD
-00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;;00DE;;00DE
-00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178
-0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101;
-0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100
-0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103;
-0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102
-0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105;
-0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
-0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107;
-0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106
-0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109;
-0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108
-010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B;
-010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A
-010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D;
-010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C
-010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F;
-010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E
-0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111;
-0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110
-0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113;
-0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112
-0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115;
-0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114
-0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117;
-0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116
-0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119;
-0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118
-011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B;
-011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A
-011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D;
-011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C
-011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F;
-011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E
-0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121;
-0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120
-0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123;
-0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122
-0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125;
-0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124
-0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127;
-0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126
-0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129;
-0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128
-012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B;
-012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A
-012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D;
-012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C
-012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F;
-012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E
-0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069;
-0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049
-0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
-0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132
-0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135;
-0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134
-0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137;
-0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136
-0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;;;;
-0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A;
-013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139
-013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C;
-013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B
-013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E;
-013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D
-013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L;<compat> 004C 00B7;;;;N;;;;0140;
-0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 006C 00B7;;;;N;;;013F;;013F
-0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142;
-0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141
-0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144;
-0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143
-0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146;
-0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145
-0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148;
-0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147
-0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
-014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B;
-014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;014A;;014A
-014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D;
-014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C
-014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F;
-014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E
-0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151;
-0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150
-0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153;
-0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152
-0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155;
-0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154
-0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157;
-0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156
-0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159;
-0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158
-015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B;
-015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A
-015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D;
-015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C
-015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F;
-015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E
-0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161;
-0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160
-0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163;
-0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162
-0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165;
-0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164
-0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167;
-0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166
-0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169;
-0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168
-016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B;
-016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A
-016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D;
-016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C
-016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F;
-016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E
-0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171;
-0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170
-0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173;
-0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172
-0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175;
-0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174
-0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177;
-0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176
-0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF;
-0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A;
-017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179
-017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C;
-017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B
-017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E;
-017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D
-017F;LATIN SMALL LETTER LONG S;Ll;0;L;<compat> 0073;;;;N;;;0053;;0053
-0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243
-0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253;
-0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183;
-0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182
-0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185;
-0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184
-0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254;
-0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188;
-0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187
-0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256;
-018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257;
-018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C;
-018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B
-018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;;
-018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD;
-018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259;
-0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B;
-0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192;
-0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191
-0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260;
-0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263;
-0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;01F6;;01F6
-0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269;
-0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268;
-0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199;
-0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198
-019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D
-019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;;
-019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F;
-019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272;
-019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220
-019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275;
-01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1;
-01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0
-01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3;
-01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2
-01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5;
-01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4
-01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280;
-01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8;
-01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7
-01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283;
-01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;;
-01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;;
-01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD;
-01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC
-01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288;
-01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0;
-01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF
-01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A;
-01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B;
-01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4;
-01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3
-01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6;
-01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5
-01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292;
-01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9;
-01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8
-01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;;
-01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;;
-01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD;
-01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC
-01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;;
-01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7
-01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;;
-01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;;
-01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;;
-01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;;
-01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L;<compat> 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5
-01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
-01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
-01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
-01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
-01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
-01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
-01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
-01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB
-01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE;
-01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD
-01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0;
-01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF
-01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2;
-01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1
-01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4;
-01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3
-01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6;
-01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5
-01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8;
-01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7
-01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA;
-01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9
-01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC;
-01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB
-01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E
-01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF;
-01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE
-01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1;
-01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0
-01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3;
-01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2
-01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5;
-01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4
-01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7;
-01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6
-01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9;
-01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8
-01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB;
-01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA
-01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED;
-01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC
-01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF;
-01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE
-01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;;
-01F1;LATIN CAPITAL LETTER DZ;Lu;0;L;<compat> 0044 005A;;;;N;;;;01F3;01F2
-01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
-01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 0064 007A;;;;N;;;01F1;;01F2
-01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5;
-01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4
-01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195;
-01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF;
-01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9;
-01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8
-01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB;
-01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA
-01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD;
-01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC
-01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF;
-01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE
-0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201;
-0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200
-0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203;
-0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202
-0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205;
-0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204
-0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207;
-0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206
-0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209;
-0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208
-020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B;
-020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A
-020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D;
-020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C
-020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F;
-020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E
-0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211;
-0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210
-0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213;
-0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212
-0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215;
-0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214
-0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217;
-0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216
-0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;;;0219;
-0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;;0218;;0218
-021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;;;021B;
-021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;;021A;;021A
-021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D;
-021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C
-021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F;
-021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E
-0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E;
-0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;;
-0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223;
-0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222
-0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225;
-0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224
-0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227;
-0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226
-0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229;
-0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228
-022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B;
-022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A
-022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D;
-022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C
-022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F;
-022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E
-0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231;
-0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230
-0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233;
-0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232
-0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;;
-0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;;
-0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;;
-0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;;
-0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;;
-0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;;
-023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65;
-023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C;
-023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B
-023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A;
-023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66;
-023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7E;;2C7E
-0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F
-0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242;
-0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241
-0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180;
-0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289;
-0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C;
-0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247;
-0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246
-0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249;
-0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248
-024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B;
-024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A
-024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D;
-024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C
-024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F;
-024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E
-0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F
-0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D
-0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70
-0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181
-0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186
-0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;;
-0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189
-0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A
-0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;;
-0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F
-025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;;
-025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190
-025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;;
-025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;;
-025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;;
-025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;;
-0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193
-0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;;
-0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;;
-0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194
-0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;;
-0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;;
-0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;;
-0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;;
-0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197
-0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196
-026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;;
-026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62
-026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;;
-026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;;
-026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;;
-026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C
-0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E
-0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D
-0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;;
-0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;;
-0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F
-0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;;
-0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;;
-0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;;
-0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;;
-027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;;
-027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;;
-027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64
-027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;;
-027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;;
-0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6
-0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;;
-0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;;
-0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9
-0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;;
-0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;;
-0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;;
-0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;;
-0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE
-0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244
-028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1
-028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2
-028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245
-028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;;
-028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;;
-028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;;
-0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;;
-0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;;
-0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7
-0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;;
-0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
-0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;;
-0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;;
-0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;;
-0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;;
-0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;;
-029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;;
-029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;;
-029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;;
-029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;;
-029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;;
-029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;;
-02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;;
-02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;;
-02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;;
-02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;;
-02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;;
-02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;;
-02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;;
-02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;;
-02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;;
-02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;;
-02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
-02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;;
-02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
-02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;;
-02B0;MODIFIER LETTER SMALL H;Lm;0;L;<super> 0068;;;;N;;;;;
-02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
-02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
-02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
-02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
-02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
-02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
-02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
-02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 0079;;;;N;;;;;
-02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;;
-02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;;
-02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;;
-02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;;
-02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;;
-02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;;
-02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;;
-02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;;
-02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;;
-02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;;
-02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;;
-02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;;
-02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
-02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;;
-02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;;
-02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;;
-02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;;
-02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;;
-02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;;
-02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;;
-02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;;
-02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;;
-02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;;
-02D8;BREVE;Sk;0;ON;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
-02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;;;;
-02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
-02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
-02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
-02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;;
-02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;;
-02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;;
-02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L;<super> 0263;;;;N;;;;;
-02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
-02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
-02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
-02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 0295;;;;N;;;;;
-02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;;
-02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;;
-02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;;
-02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;;
-02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;;
-02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;;
-02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;;
-02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;;
-02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;;
-02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;;
-02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;;
-02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;;
-02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;;
-02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;;
-02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;;
-02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;;
-02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;;
-02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;;
-0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;;
-0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;;
-0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;;
-0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;;
-0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;;
-0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;;
-0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;;;;
-0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
-0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;;
-0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;;
-030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;;
-030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;;
-030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;;
-030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;;
-030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;;
-030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;;
-0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;;
-0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;;
-0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;;
-0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;;;;
-0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;;
-0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;;
-0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;;
-0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;;
-0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;;
-0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;;
-031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;;
-031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;;
-031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;;
-031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;;
-031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;;
-031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;;
-0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;;
-0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;;
-0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;;
-0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;;
-0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;;
-0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;;
-0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;;
-0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;;
-0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;;
-0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;;
-032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;;
-032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;;
-032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;;
-032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;;
-032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;;
-032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;;
-0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;;
-0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;;
-0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;;
-0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;;
-0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;;
-0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;;
-0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;;
-0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;;
-0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;;
-0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;;
-033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;;
-033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;;
-033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;;
-033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;;
-033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;;
-033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;;
-0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;;;;
-0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;;
-0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;;
-0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;;
-0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;;
-0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399
-0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
-0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;;
-034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;;
-034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;;
-034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;;
-034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;;
-0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
-0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
-0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;;
-0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;;
-0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;;
-0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;;
-0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;;
-035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
-035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;;
-035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
-035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;;
-035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;;
-035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;;
-0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;;
-0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;;
-0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;;
-0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;;
-0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;;
-0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;;
-0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;;
-0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;;
-0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;;
-0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;;
-036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;;
-036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;;
-036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;;
-036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;;
-036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;;
-036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;;
-0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;
-0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370
-0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;
-0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372
-0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;;
-0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;;
-0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;
-0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376
-037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;;
-037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD
-037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE
-037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF
-037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;;;;
-0384;GREEK TONOS;Sk;0;ON;<compat> 0020 0301;;;;N;GREEK SPACING TONOS;;;;
-0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;;
-0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC;
-0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;;
-0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD;
-0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE;
-038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF;
-038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC;
-038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD;
-038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE;
-0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;;
-0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1;
-0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2;
-0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3;
-0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4;
-0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5;
-0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6;
-0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7;
-0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;
-0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9;
-039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA;
-039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB;
-039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC;
-039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD;
-039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE;
-039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF;
-03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0;
-03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1;
-03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3;
-03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4;
-03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5;
-03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6;
-03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7;
-03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8;
-03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9;
-03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA;
-03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB;
-03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386
-03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388
-03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389
-03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A
-03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;;
-03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391
-03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392
-03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393
-03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394
-03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395
-03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396
-03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397
-03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398
-03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399
-03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A
-03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B
-03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C
-03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D
-03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E
-03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F
-03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0
-03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1
-03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
-03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4
-03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5
-03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6
-03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7
-03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8
-03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9
-03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA
-03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB
-03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C
-03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E
-03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F
-03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;
-03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
-03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
-03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;;
-03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;;
-03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;;
-03D5;GREEK PHI SYMBOL;Ll;0;L;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
-03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
-03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF
-03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;;;03D9;
-03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;;03D8;;03D8
-03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB;
-03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA
-03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD;
-03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC
-03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF;
-03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE
-03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1;
-03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0
-03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3;
-03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2
-03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5;
-03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4
-03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7;
-03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6
-03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9;
-03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8
-03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB;
-03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA
-03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED;
-03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC
-03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF;
-03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE
-03F0;GREEK KAPPA SYMBOL;Ll;0;L;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
-03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
-03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9
-03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;;
-03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;
-03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 03B5;;;;N;;;0395;;0395
-03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;;
-03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8;
-03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7
-03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L;<compat> 03A3;;;;N;;;;03F2;
-03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB;
-03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA
-03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;;
-03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B;
-03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C;
-03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D;
-0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450;
-0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451;
-0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;;;0452;
-0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453;
-0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454;
-0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455;
-0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456;
-0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;;;0457;
-0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458;
-0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459;
-040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A;
-040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;;;045B;
-040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C;
-040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D;
-040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;;;045E;
-040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F;
-0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430;
-0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431;
-0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432;
-0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433;
-0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434;
-0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435;
-0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436;
-0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437;
-0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438;
-0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439;
-041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A;
-041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B;
-041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C;
-041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D;
-041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E;
-041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F;
-0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440;
-0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441;
-0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442;
-0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443;
-0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444;
-0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445;
-0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446;
-0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447;
-0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448;
-0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449;
-042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A;
-042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B;
-042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C;
-042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D;
-042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E;
-042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F;
-0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410
-0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411
-0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412
-0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413
-0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414
-0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415
-0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416
-0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417
-0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418
-0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419
-043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A
-043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B
-043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C
-043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D
-043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E
-043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F
-0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420
-0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421
-0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422
-0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423
-0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424
-0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425
-0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426
-0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427
-0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428
-0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429
-044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A
-044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B
-044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C
-044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D
-044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E
-044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F
-0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400
-0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401
-0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;;0402;;0402
-0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403
-0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404
-0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405
-0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406
-0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;;0407;;0407
-0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408
-0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409
-045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A
-045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;;040B;;040B
-045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C
-045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D
-045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;;040E;;040E
-045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F
-0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461;
-0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460
-0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463;
-0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462
-0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465;
-0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464
-0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467;
-0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466
-0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469;
-0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468
-046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B;
-046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A
-046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D;
-046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C
-046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F;
-046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E
-0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471;
-0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470
-0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473;
-0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472
-0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475;
-0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474
-0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477;
-0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476
-0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479;
-0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478
-047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B;
-047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A
-047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D;
-047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C
-047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F;
-047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E
-0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481;
-0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480
-0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;;
-0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;;
-0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;;
-0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;;
-0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;;
-0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;
-0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;;
-0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
-048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B;
-048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A
-048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D;
-048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C
-048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F;
-048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E
-0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491;
-0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490
-0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493;
-0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492
-0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495;
-0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494
-0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497;
-0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496
-0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499;
-0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498
-049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B;
-049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A
-049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D;
-049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C
-049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F;
-049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E
-04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1;
-04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0
-04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3;
-04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2
-04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5;
-04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4
-04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;;;04A7;
-04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;04A6;;04A6
-04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9;
-04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8
-04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB;
-04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA
-04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD;
-04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC
-04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF;
-04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE
-04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1;
-04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0
-04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3;
-04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2
-04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;;;04B5;
-04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;04B4;;04B4
-04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7;
-04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6
-04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9;
-04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8
-04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB;
-04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA
-04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD;
-04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC
-04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF;
-04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE
-04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF;
-04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2;
-04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1
-04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4;
-04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3
-04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6;
-04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5
-04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8;
-04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7
-04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA;
-04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9
-04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC;
-04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB
-04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE;
-04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD
-04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0
-04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1;
-04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0
-04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3;
-04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2
-04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5;
-04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4
-04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7;
-04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6
-04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9;
-04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8
-04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB;
-04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA
-04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD;
-04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC
-04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF;
-04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE
-04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1;
-04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0
-04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3;
-04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2
-04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5;
-04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4
-04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7;
-04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6
-04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9;
-04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8
-04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB;
-04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA
-04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED;
-04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC
-04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF;
-04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE
-04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1;
-04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0
-04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3;
-04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2
-04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5;
-04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4
-04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7;
-04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6
-04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9;
-04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8
-04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB;
-04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA
-04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD;
-04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC
-04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF;
-04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE
-0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501;
-0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500
-0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503;
-0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502
-0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505;
-0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504
-0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507;
-0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506
-0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509;
-0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508
-050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B;
-050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A
-050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D;
-050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C
-050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F;
-050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E
-0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511;
-0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510
-0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513;
-0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512
-0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;
-0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514
-0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;
-0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516
-0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;
-0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518
-051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;
-051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A
-051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;
-051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C
-051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;
-051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E
-0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;
-0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520
-0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;
-0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522
-0524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525;
-0525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524
-0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561;
-0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562;
-0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563;
-0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564;
-0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565;
-0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566;
-0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567;
-0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568;
-0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569;
-053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A;
-053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B;
-053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C;
-053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D;
-053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E;
-053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F;
-0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570;
-0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571;
-0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572;
-0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573;
-0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574;
-0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575;
-0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576;
-0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577;
-0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578;
-0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579;
-054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A;
-054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B;
-054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C;
-054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D;
-054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E;
-054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F;
-0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580;
-0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581;
-0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582;
-0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583;
-0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584;
-0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585;
-0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586;
-0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;;
-055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;;
-055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;;
-055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;;
-055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;;
-055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;;
-055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;;
-0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531
-0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532
-0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533
-0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534
-0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535
-0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536
-0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537
-0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538
-0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539
-056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A
-056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B
-056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C
-056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D
-056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E
-056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F
-0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540
-0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541
-0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542
-0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543
-0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544
-0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545
-0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546
-0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547
-0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548
-0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549
-057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A
-057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B
-057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C
-057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D
-057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E
-057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F
-0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550
-0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551
-0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552
-0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553
-0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554
-0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555
-0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556
-0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L;<compat> 0565 0582;;;;N;;;;;
-0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;;
-058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;;
-0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;;
-0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;;
-0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;;
-0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;;
-0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;;
-0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;;;;
-0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;;
-0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;;;;
-0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;;
-059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;;
-059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;;
-059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;;
-059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;;
-059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;;
-059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;;
-05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;;
-05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;;
-05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;;
-05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;;
-05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;;
-05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;;;;
-05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;;
-05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;;
-05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;;;;
-05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;;
-05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;;;;
-05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;;
-05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;;
-05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;;
-05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;;
-05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;;
-05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;;
-05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;;
-05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;;
-05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;;
-05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;;
-05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;;
-05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;;
-05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;;
-05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;;
-05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;;
-05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;;
-05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;;
-05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;;;;
-05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;;
-05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;;
-05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;;
-05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;;
-05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;;
-05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;;
-05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;;
-05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;;
-05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;;
-05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;;
-05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;;
-05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;;
-05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;;
-05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;;
-05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;;
-05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;;
-05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
-05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;;
-05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;;
-05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;;
-05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;;
-05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;;
-05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;;
-05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;;
-05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;;
-05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;;
-05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;;
-05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;;
-05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;;
-05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;;
-05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;;
-05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;;
-05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;;
-05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;;
-05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;;
-05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;;
-05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;;
-05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;;
-05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;;
-05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;;
-05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;;
-0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;;
-0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;
-0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;
-0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;
-0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;
-0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;
-0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;
-0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
-060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
-060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;;
-060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;;
-060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;;
-060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;;
-060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;;
-0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;;
-0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;;
-0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;;
-0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;;
-0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;;
-0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;;
-0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;
-0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;
-0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;
-0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
-061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
-061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
-061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
-061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
-0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;;
-0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;;
-0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;;
-0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;;
-0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;;
-0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;;
-0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;;
-0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;;
-0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;;
-062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;;
-062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;;
-062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;;
-062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;;
-062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;;
-062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;;
-0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;;
-0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;;
-0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
-0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;;
-0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;;
-0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;;
-0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;;
-0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;;
-0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;;
-0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;;
-063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;;
-063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
-063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;;
-0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;;
-0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;;
-0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;;
-0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;;
-0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;;
-0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;;
-0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;;
-0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;;
-0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;;
-064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;;
-064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;;
-064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;;
-064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;;
-064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;;
-064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;;
-0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;;
-0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;;
-0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;;
-0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;;
-0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;;
-0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;;
-0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;;
-0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;;
-0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;;
-065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
-065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;;
-065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
-065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;;
-065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;;
-0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
-0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
-0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
-0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
-0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
-0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
-0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
-0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
-0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
-0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
-066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;;
-066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;;
-066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;;
-066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;;
-066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;;
-066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;;
-0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;;
-0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;;
-0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;;
-0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;;
-0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;;
-0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
-0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
-0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
-0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;;
-0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;;
-067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;;
-067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;;
-067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;;
-067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;;
-067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;;
-067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;;
-0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;;
-0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;;
-0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;;
-0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;;
-0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;;
-0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;;
-0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;;
-0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;;
-0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;;
-0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;;
-068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
-068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;;
-068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;;
-068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;;
-068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;;
-0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;;
-0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;;
-0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;;
-0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;;
-0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;;
-0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;;
-0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;;
-0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;;
-0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;;
-069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;;
-06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;;
-06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;;
-06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;;
-06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;;
-06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;;
-06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;;
-06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;;
-06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;;
-06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;;
-06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;;
-06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;;
-06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;;;;
-06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;;
-06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;;
-06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;;
-06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;;
-06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;;
-06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;;
-06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;;
-06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;;
-06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;;
-06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;;
-06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;;
-06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;;
-06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;;
-06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;;
-06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;;
-06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;;
-06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;;
-06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;;
-06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;;
-06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;;
-06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;;
-06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;;
-06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;;
-06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;;
-06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;;
-06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;;
-06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;;
-06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;;
-06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;;
-06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;;
-06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;;
-06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;;
-06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;;
-06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;;
-06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;;
-06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;;
-06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;;
-06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;;
-06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;;
-06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;;
-06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;;
-06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;;
-06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;;
-06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;;
-06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;;
-06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;;
-06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;;
-06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;;
-06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;;
-06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;;
-06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
-06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
-06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
-06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
-06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
-06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
-06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
-06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
-06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
-06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
-06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
-06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
-06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;;
-06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;;
-06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
-0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;;
-0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
-0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;;
-0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;;
-0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;;
-0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;;
-0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
-0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
-0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;;
-0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;;
-070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;;
-070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;;
-070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;;
-070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;;
-070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;;
-0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;;
-0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;;
-0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;;
-0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;;
-0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;;
-0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;;
-0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;;
-0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;;
-0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;;
-0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;;
-071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;;
-071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;;
-071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;;
-071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;;
-071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;;
-071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;;
-0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;;
-0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;;
-0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;;
-0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;;
-0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;;
-0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;;
-0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;;
-0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;;
-0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;;
-0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;;
-072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;;
-072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;;
-072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;;
-072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;;
-072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;;
-072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;;
-0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;;
-0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;;
-0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;;
-0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;;
-0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;;
-0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;;
-0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;;
-073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;;
-073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;;
-073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;;
-073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;;
-073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;;
-0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;;
-0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;;
-0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;;
-0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
-0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
-0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;;
-0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;;
-0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;;
-074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;;
-074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;;
-074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;;
-074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;;
-0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;;
-0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
-0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;;
-075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
-075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;;
-075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;;
-075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
-0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;;
-0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
-0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
-0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
-0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;;
-0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;;
-076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;;
-076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
-076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
-076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;;
-076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;
-076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
-0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
-0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
-0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
-0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
-0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
-0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
-0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
-0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
-0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
-0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
-077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
-077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
-077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
-077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;
-077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
-077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
-0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;;
-0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;;
-0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;;
-0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;;
-0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;;
-0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;;
-0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;;
-0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;;
-078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;;
-078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;;
-078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;;
-078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;;
-078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;;
-078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;;
-0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;;
-0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;;
-0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;;
-0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;;
-0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;;
-0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;;
-0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;;
-0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;;
-0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;;
-0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;;
-079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;;
-079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;;
-079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;;
-079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;;
-079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;;
-079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;;
-07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;;
-07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;;
-07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;;
-07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;;
-07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;;
-07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;;
-07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;;
-07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;;
-07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;;
-07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;;
-07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;;
-07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;;
-07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;;
-07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;;
-07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;;
-07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;;
-07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;;
-07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;;
-07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
-07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
-07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
-07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
-07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
-07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
-07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
-07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
-07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
-07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
-07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;;
-07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;;
-07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;;
-07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;;
-07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;;
-07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;;
-07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;;
-07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;;
-07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;;
-07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;;
-07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;;
-07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;;
-07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;;
-07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;;
-07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;;
-07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;;
-07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;;
-07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;;
-07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;;
-07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;;
-07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;;
-07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;;
-07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;;
-07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;;
-07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;;
-07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;;
-07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;;
-07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;;
-07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;;
-07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;;
-07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;;
-07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;;
-07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;;
-07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;;
-07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;;
-07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;;
-07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;;
-07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;;
-07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;;
-07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;;
-07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;;
-07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
-07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
-07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;;
-07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;;
-07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;;
-07F8;NKO COMMA;Po;0;ON;;;;;N;;;;;
-07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;;
-0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;;
-0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;;
-0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;;
-0803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;;
-0804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;;
-0805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;;
-0806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;;
-0807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;;
-0808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;;
-0809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;;
-080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;;
-080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;;
-080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;;
-080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;;
-080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;;
-080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;;
-0810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;;
-0811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;;
-0812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;;
-0813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;;
-0814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;;
-0815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;;
-0816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;;
-0817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;;
-0818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;;
-0819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;;
-081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;;
-081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;;
-081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;;
-081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;
-081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;;
-081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;;
-0820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;;
-0821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;;
-0822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;;
-0823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;;
-0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;;
-0825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;;
-0826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;;
-0827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;;
-0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;;
-0829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;;
-082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
-082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;;
-082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;;
-082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;;
-0830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;;
-0831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;;
-0832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;;
-0833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;;
-0834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;;
-0835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;;
-0836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;;
-0837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;;
-0838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;;
-0839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;;
-083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;;
-083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;;
-083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;;
-083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;;
-083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;;
-0900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;;
-0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;;
-0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;;
-0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;;
-0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;;
-0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;;
-090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;;
-090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;;
-090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;;
-090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;;
-0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;;
-0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;;
-0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;;
-0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;;
-0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;;
-0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;;
-0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;;
-0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;;
-091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;;
-091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;;
-091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;;
-091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;;
-091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;;
-091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;;
-0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;;
-0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;;
-0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;;
-0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;;
-092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;;
-092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;;
-092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;;
-092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;;
-092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;;
-092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;;
-0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;;
-0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;;
-0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;;
-0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;;
-0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;;
-0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;;
-0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;;
-0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;;
-0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;;
-0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;;
-093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
-0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;;
-0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
-094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;;
-094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;;
-0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;;
-0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;;
-0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;;
-0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
-0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
-0955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;NSM;;;;;N;;;;;
-0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;;
-0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;;
-095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;;
-095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;;
-095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;;
-095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;;
-095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;;
-095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;;
-0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;;
-0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
-0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
-0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;
-0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;
-0979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;;
-097A;DEVANAGARI LETTER HEAVY YA;Lo;0;L;;;;;N;;;;;
-097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;;
-097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;;
-097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
-097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;;
-097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;;
-0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;;
-0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;;
-0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;;
-0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;;
-0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;;
-098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;;
-098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;;
-0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;;
-0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;;
-0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;;
-0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;;
-0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;;
-0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;;
-099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;;
-099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;;
-099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;;
-099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;;
-099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;;
-099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;;
-09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;;
-09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;;
-09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;;
-09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;;
-09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;;
-09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;;
-09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;;
-09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;;
-09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;;
-09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;;
-09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;;
-09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;;
-09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;;
-09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;;
-09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;;
-09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;;
-09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;;
-09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;;
-09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;;
-09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;;
-09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;;
-09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;;
-09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;;
-09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;;
-09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;;
-09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;;;;
-09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;;
-09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;;
-09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
-09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1/16;N;;;;;
-09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;;
-09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;;
-09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;;
-09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;;
-09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
-09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
-09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;;
-0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;;
-0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;;
-0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;;
-0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;;
-0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;;
-0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;;
-0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;;
-0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;;
-0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;;
-0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;;
-0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;;
-0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;;
-0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;;
-0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;;
-0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;;
-0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;;
-0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;;
-0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;;
-0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;;
-0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;;
-0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;;
-0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;;
-0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;;
-0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;;
-0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;;
-0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;;
-0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;;
-0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;;
-0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;;
-0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;;
-0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;;
-0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;;
-0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;;
-0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;;
-0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;;
-0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;;
-0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;;
-0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
-0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
-0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;;
-0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;;
-0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;;
-0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;;
-0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;;
-0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;;
-0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;;
-0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;;
-0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;;
-0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;;
-0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;;
-0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;;
-0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;;
-0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;;
-0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;;
-0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;;
-0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;;
-0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;;
-0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;;
-0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;;
-0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;;
-0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;;
-0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;;
-0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;;
-0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;;
-0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;;
-0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;;
-0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;;
-0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;;
-0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;;
-0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;;
-0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;;
-0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;;
-0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;;
-0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;;
-0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;;
-0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;;
-0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;;
-0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;;
-0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;;
-0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;;
-0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;;
-0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;;
-0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;;
-0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;;
-0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;;
-0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;;
-0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;;
-0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;;
-0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;;
-0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;;
-0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;;
-0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;;
-0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;;
-0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;;
-0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;;
-0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;;
-0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;;
-0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;;
-0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
-0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;;
-0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;;
-0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;;
-0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;;
-0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;;
-0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;;
-0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;;
-0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;;
-0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;;
-0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;;
-0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;;
-0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;;
-0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;;
-0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;;
-0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;;
-0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;;
-0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;;
-0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;;
-0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;;
-0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;;
-0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;;
-0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;;
-0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;;
-0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;;
-0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;;
-0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;;
-0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;;
-0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;;
-0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;;
-0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;;
-0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;;
-0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;;
-0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;;
-0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;;
-0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;;
-0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;;
-0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;;
-0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;;
-0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;;
-0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;;
-0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;;
-0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;;
-0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;;
-0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
-0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;;
-0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;;
-0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;;
-0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;;
-0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;;
-0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;;
-0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;;
-0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;;
-0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;;
-0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;;
-0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;;
-0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;;
-0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;;
-0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;;
-0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;;
-0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;;
-0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;;
-0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;;
-0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;;
-0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;;
-0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;;
-0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;;
-0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;;
-0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;;
-0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;;
-0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;;
-0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;;
-0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;;
-0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;;
-0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;;
-0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;;
-0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;;
-0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;;
-0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;;
-0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;;
-0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;;
-0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;;
-0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;;
-0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;;
-0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;;
-0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;;
-0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;;
-0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;;
-0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;;
-0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;;
-0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
-0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
-0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;;;;
-0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;;
-0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;;
-0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;;
-0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;;
-0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;;
-0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
-0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;;
-0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;;
-0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;;
-0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;;
-0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;;
-0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;;
-0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;;
-0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;;
-0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;;
-0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;;
-0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;;
-0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;;
-0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;;
-0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;;
-0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;;
-0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;;
-0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;;
-0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;;
-0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;;
-0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;;
-0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;;
-0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;;
-0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;;
-0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;;
-0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;;
-0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;;
-0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;;
-0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;;
-0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;;
-0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;;
-0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;;
-0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;;
-0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;;
-0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;;
-0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;;
-0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;;
-0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;;
-0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;;
-0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;;
-0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;;
-0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;;
-0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;;
-0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;;
-0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;;
-0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
-0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
-0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
-0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
-0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;;
-0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;;
-0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;;
-0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;;
-0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;;
-0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
-0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
-0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
-0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
-0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
-0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
-0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
-0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
-0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
-0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;;
-0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;;
-0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;;
-0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;;
-0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;;
-0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;;
-0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;;
-0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;;
-0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;;
-0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;;
-0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;;
-0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;;
-0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;;
-0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;;
-0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;;
-0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;;
-0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;;
-0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;;
-0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;;
-0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;;
-0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;;
-0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;;
-0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;;
-0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;;
-0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;;
-0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;;
-0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;;
-0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;;
-0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;;
-0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;;
-0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;;
-0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;;
-0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;;
-0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;;
-0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;;
-0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;;
-0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;;
-0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;;
-0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;;
-0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;;
-0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;;
-0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;;
-0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;;
-0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;;
-0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;;
-0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;;
-0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;;
-0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;;
-0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;;
-0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;;
-0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;;
-0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;;
-0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;;
-0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
-0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;;
-0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;;
-0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;;
-0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;;
-0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;;
-0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;;
-0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;;
-0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;;
-0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;;
-0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;;
-0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;;
-0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;;
-0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;;
-0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;;
-0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;;
-0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;;
-0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;;
-0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;;
-0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;;
-0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;;
-0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;;
-0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;;
-0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;;
-0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;;
-0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;;
-0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;;
-0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;;
-0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;;
-0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;;
-0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;;
-0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;;
-0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;;
-0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;;
-0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;;
-0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;;
-0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;;
-0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;;
-0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;;
-0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;;
-0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;;
-0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;;
-0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;;
-0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;;
-0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;;
-0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;;
-0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;;
-0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;;
-0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;;
-0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;;
-0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;;
-0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
-0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;;
-0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;;
-0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;;
-0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;;
-0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;;
-0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;
-0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
-0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
-0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
-0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
-0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
-0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
-0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
-0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
-0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;
-0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
-0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
-0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;;
-0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;;
-0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;;
-0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;;
-0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;;
-0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;;
-0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;;
-0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;;
-0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;;
-0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;;
-0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;;
-0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;;
-0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;;
-0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;;
-0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;;
-0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;;
-0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;;
-0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;;
-0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;;
-0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;;
-0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;;
-0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;;
-0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;;
-0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;;
-0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;;
-0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;;
-0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;;
-0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;;
-0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;;
-0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;;
-0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;;
-0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;;
-0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;;
-0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;;
-0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;;
-0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;;
-0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;;
-0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;;
-0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;;
-0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;;
-0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;;
-0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;;
-0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;;
-0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;;
-0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;;
-0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;;
-0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;;
-0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;;
-0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;;
-0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;;
-0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;;
-0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;;
-0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;;
-0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;;
-0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;;
-0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;;
-0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;;
-0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;;
-0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;;
-0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;;
-0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;;
-0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;;
-0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;;
-0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;;
-0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;;
-0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;;
-0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;;
-0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;;
-0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;;
-0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;;
-0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;;
-0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;;
-0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;;
-0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;;
-0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;;
-0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;;
-0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;;
-0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;;
-0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;;
-0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;;
-0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;;
-0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;;
-0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;;
-0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;;
-0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;;
-0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;;
-0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;;
-0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;;
-0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;;
-0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;;
-0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;;
-0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;;
-0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;;
-0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;;
-0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;;
-0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;;
-0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;;
-0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;;
-0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;;
-0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;;
-0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;;
-0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;;
-0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;;
-0E33;THAI CHARACTER SARA AM;Lo;0;L;<compat> 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;;
-0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;;
-0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;;
-0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;;
-0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;;;;
-0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;;
-0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;;
-0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;;
-0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;;
-0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;;
-0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;;
-0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;;
-0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;;
-0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
-0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
-0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
-0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
-0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;;
-0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;;
-0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;;
-0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;;
-0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;;
-0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;;;;
-0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;;
-0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;;
-0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;;
-0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;;
-0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;;
-0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;;
-0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;;
-0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;;
-0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;;
-0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;;
-0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;;
-0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;;
-0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;;
-0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;;
-0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;;
-0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;;
-0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;;
-0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;;
-0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;;
-0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;;
-0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;;
-0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;;
-0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;;
-0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;;
-0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;;
-0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;;
-0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;;
-0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;;
-0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;;
-0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;;
-0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;;
-0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;;
-0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;;
-0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;;
-0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;;
-0EB3;LAO VOWEL SIGN AM;Lo;0;L;<compat> 0ECD 0EB2;;;;N;;;;;
-0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;;
-0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;;
-0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;;
-0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;;
-0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;;
-0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;;
-0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;;
-0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;;
-0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;;
-0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;;
-0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;;
-0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;;
-0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;;
-0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;;
-0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
-0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
-0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
-0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0EDC;LAO HO NO;Lo;0;L;<compat> 0EAB 0E99;;;;N;;;;;
-0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
-0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
-0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;;
-0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;;
-0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;;
-0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;;
-0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;
-0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;;
-0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;;
-0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;;
-0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;;
-0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;;
-0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;;
-0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;;;;
-0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;;
-0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;;
-0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;;
-0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;;
-0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;;
-0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;;
-0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;;
-0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;;;;
-0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;;
-0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;;
-0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;;
-0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;;
-0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;;
-0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;;
-0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;;
-0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;;
-0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;;
-0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;;
-0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;;
-0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;;
-0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;;
-0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;;
-0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;;
-0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;;
-0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;;
-0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;;
-0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;;
-0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;;
-0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;;
-0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;;;;
-0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;;
-0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;;
-0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;;
-0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;;
-0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;;
-0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;;
-0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;;
-0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;;
-0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;;
-0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;;
-0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;;
-0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;;
-0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;;
-0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;;
-0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;;
-0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;;
-0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;;
-0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;;
-0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;;
-0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;;
-0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;;
-0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;;
-0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;;
-0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;;
-0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;;
-0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;;
-0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;;
-0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;;
-0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;;
-0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;;
-0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;;
-0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;;
-0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;;
-0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;;
-0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;;
-0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;;
-0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;;
-0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;;
-0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;;
-0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;;
-0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;;
-0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;;
-0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;;
-0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;;
-0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;;
-0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;;
-0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;;
-0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;;;;
-0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;
-0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;;
-0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;;
-0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;;
-0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;;
-0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;;
-0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;;
-0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;;
-0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM;<compat> 0FB2 0F81;;;;N;;;;;
-0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
-0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 0FB3 0F81;;;;N;;;;;
-0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;;
-0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;;
-0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;;
-0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;;
-0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;;;;
-0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;;
-0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;;
-0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;;
-0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;;;;
-0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;;
-0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;;
-0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;;
-0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;;;;
-0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;;
-0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;;
-0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;;
-0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;;
-0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;;
-0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;;
-0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;;
-0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;;
-0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;;
-0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;;
-0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;;
-0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;;
-0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;;
-0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;;
-0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;;
-0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;;
-0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;;
-0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;;
-0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;;
-0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;;
-0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;;
-0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;;
-0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;;
-0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;;
-0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;;
-0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;;
-0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;;
-0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;;
-0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;;
-0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;;
-0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;;
-0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;;
-0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;;
-0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;;
-0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;;
-0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;;
-0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;;
-0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;;;;
-0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;;
-0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;;
-0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;;
-0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;;
-0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;;
-0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;;
-0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;;
-0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;;
-0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;;;;
-0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;;;;
-0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;;;;
-0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;;;;
-0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;;
-0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;;
-0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;;
-0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;;;;
-0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;;
-0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;;
-0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;;
-0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;;
-0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;;
-0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;;
-0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;;
-0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;;
-0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;;
-0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;;
-0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;;
-0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
-0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;;
-0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;;
-0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;;
-0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;;
-0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;
-0FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;
-0FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;
-0FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;
-0FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;
-1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;;
-1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;;
-1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;;
-1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;;
-1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;;
-1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;;
-1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;;
-1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;;
-1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;;
-1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;;
-100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;;
-100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;;
-100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;;
-100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;;
-100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;;
-100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;;
-1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;;
-1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;;
-1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;;
-1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;;
-1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;;
-1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;;
-1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;;
-1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;;
-1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;;
-1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;;
-101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;;
-101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;;
-101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;;
-101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;;
-101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;;
-101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;;
-1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;;
-1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;;
-1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;;
-1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;;
-1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;;
-1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;;
-1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;;
-1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;;
-1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;
-1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
-102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
-102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
-102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;
-1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;
-1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;;
-1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;;
-1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;
-103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
-103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
-103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
-103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;
-103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
-1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;;
-104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;;
-104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;;
-104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;;
-104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;;
-104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;;
-1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;;
-1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;;
-1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
-1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;;
-105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;
-105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;
-105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;
-105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;
-105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;
-105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;
-1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
-1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;
-1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;
-1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;
-1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;
-1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;
-1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;
-1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;
-1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;
-1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;
-106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;
-106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;
-106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;
-106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;
-106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;
-106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;
-1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;
-1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;
-1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;
-1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;
-1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;
-1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;
-1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;
-1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;
-1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;
-1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;
-107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;
-107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;
-107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;
-107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;
-107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;
-107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;
-1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;
-1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;
-1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
-1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;
-1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;
-1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;
-1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;
-1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;
-1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;
-1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;
-108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;
-108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;
-108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;
-108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;
-108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;
-108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;
-1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;;
-109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;;
-109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;;
-109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;;
-109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;
-109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;
-10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00;
-10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01;
-10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02;
-10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03;
-10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04;
-10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05;
-10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06;
-10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07;
-10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08;
-10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09;
-10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A;
-10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B;
-10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C;
-10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D;
-10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E;
-10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F;
-10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10;
-10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11;
-10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12;
-10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13;
-10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14;
-10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15;
-10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16;
-10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17;
-10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18;
-10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19;
-10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A;
-10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B;
-10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C;
-10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D;
-10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E;
-10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F;
-10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20;
-10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21;
-10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22;
-10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23;
-10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24;
-10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25;
-10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;;
-10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;;
-10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;;
-10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;;
-10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;;
-10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;;
-10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;;
-10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;;
-10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;;
-10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;;
-10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;;
-10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;;
-10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;;
-10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;;
-10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;;
-10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;;
-10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;;
-10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;;
-10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;;
-10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;;
-10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;;
-10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;;
-10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;;
-10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;;
-10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;;
-10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;;
-10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;;
-10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;;
-10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;;
-10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;;
-10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;;
-10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;;
-10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;;
-10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;;
-10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;;
-10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;;
-10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;;
-10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;;
-10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;;
-10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;;
-10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;;
-10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;;
-10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;;
-10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L;<super> 10DC;;;;N;;;;;
-1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
-1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
-1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
-1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
-1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
-1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
-1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
-1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;
-1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
-110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;
-110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
-110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
-110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;
-110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
-110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
-1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
-1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
-1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
-1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
-1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
-1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
-1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;;
-1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
-1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
-1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
-111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
-111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
-111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
-111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
-111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
-111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;;
-1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
-1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
-1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
-1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;;
-112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;;
-112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;;
-112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
-1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
-1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;;
-1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;;
-1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
-1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;;
-1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
-113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;;
-113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
-113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;;
-113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
-113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;;
-113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;;
-1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
-1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
-1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;;
-1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
-1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;;
-1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;;
-1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
-1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
-1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;;
-1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;;
-114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;;
-114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;;
-114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
-114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;;
-114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;;
-114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
-1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;;
-1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;;
-1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;;
-1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;;
-1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
-1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;;
-1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
-1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
-1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;;
-1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;;
-115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
-115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;
-115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;
-115E;HANGUL CHOSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
-115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;;
-1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;;
-1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;;
-1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;;
-1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;;
-1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;;
-1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;;
-1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;;
-1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;;
-1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;;
-1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;;
-116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;;
-116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;;
-116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;;
-116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;;
-116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;;
-116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;;
-1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;;
-1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;;
-1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;;
-1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;;
-1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;;
-1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;;
-1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;;
-1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;;
-1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;;
-1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;;
-117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;;
-117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;;
-117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;;
-117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;;
-117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;;
-117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;;
-1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;;
-1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;;
-1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;;
-1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;;
-1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;;
-1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;;
-1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;;
-1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;;
-1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;;
-1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;;
-118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;;
-118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;;
-118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;;
-118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;;
-118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;;
-118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;;
-1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;;
-1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;;
-1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;;
-1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;;
-1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;;
-1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;;
-1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;;
-1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;;
-1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;;
-1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;;
-119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;;
-119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;;
-119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;;
-119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;;
-119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;;
-119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;;
-11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;;
-11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;;
-11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;;
-11A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;;
-11A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;;
-11A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;;
-11A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;;
-11A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;;
-11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
-11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
-11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
-11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;
-11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;
-11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
-11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
-11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;
-11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;
-11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;
-11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;
-11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;;
-11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;
-11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
-11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
-11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
-11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
-11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
-11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
-11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
-11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
-11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
-11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
-11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
-11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;;
-11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;;
-11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;;
-11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
-11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;;
-11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;;
-11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;;
-11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;;
-11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
-11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;;
-11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
-11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;;
-11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;;
-11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;;
-11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;;
-11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;;
-11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;;
-11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;;
-11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;;
-11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
-11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;;
-11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;;
-11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;;
-11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;;
-11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;;
-11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;;
-11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;;
-11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;;
-11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;;
-11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;;
-11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;;
-11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;;
-11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;;
-11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;;
-11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;;
-11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;;
-11FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;;
-11FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;;
-11FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;;
-11FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;;
-11FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;
-11FF;HANGUL JONGSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;;
-1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;;
-1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;;
-1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;;
-1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
-1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;;
-1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;;
-120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
-120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;;
-1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;;
-1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;;
-1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;;
-1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;;
-1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;;
-1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;;
-1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;;
-1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;;
-1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;;
-121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
-121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;;
-1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;;
-1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;;
-1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;;
-1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;;
-1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;;
-1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;;
-1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;;
-1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;;
-1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;;
-122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;;
-122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;;
-122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;;
-1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;;
-1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
-1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;;
-1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
-123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;;
-123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
-123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;;
-1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;;
-1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;;
-1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;;
-1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;;
-1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;;
-1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;;
-124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;;
-124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;;
-124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;;
-124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;;
-1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;;
-1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;;
-1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;;
-1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;;
-1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;;
-1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;;
-1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;;
-1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;;
-125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;;
-125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;;
-125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;;
-125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;;
-1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;;
-1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
-1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;;
-1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;;
-126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
-126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;;
-126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;;
-1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;;
-1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
-1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;;
-1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;;
-127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
-127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;;
-1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;;
-1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;;
-1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;;
-1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;;
-1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;;
-1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;;
-1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;;
-128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;;
-128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;;
-128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;;
-128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;;
-1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;;
-1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
-1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;;
-1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
-1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;;
-129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
-129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
-129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;;
-12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;;
-12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;;
-12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;;
-12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;;
-12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;;
-12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;;
-12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;;
-12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;;
-12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;;
-12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
-12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;;
-12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;;
-12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;;
-12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;;
-12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;;
-12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;;
-12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;;
-12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;;
-12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;;
-12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;;
-12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;;
-12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;;
-12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;;
-12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;;
-12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;;
-12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;;
-12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;;
-12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;;
-12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;;
-12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;;
-12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;;
-12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
-12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;;
-12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;;
-12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;;
-12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;;
-12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;;
-12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;;
-12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;;
-12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;;
-12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;;
-12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
-12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;;
-12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
-12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;;
-12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
-12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;;
-12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;;
-12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;;
-12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
-12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;;
-12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;;
-12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;;
-12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
-12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;;
-12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;;
-12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;;
-12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;;
-1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;;
-1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;;
-1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
-1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;;
-1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;;
-1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;;
-130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
-130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;;
-1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;;
-1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;;
-1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;;
-1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;;
-1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;;
-1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;;
-131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;;
-131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;;
-1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;;
-1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;;
-1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;;
-1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;;
-1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
-1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;;
-1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;;
-1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;;
-1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;;
-132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;;
-132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;;
-132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;;
-1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;;
-1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;;
-1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;;
-1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;;
-1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;;
-1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;;
-1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;;
-1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;;
-1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;;
-1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;;
-133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;;
-133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;;
-133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;;
-133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;;
-133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;;
-133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;;
-1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;;
-1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;;
-1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;;
-1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;;
-1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;;
-1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;;
-1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;;
-1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;;
-1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;;
-134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
-134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;;
-134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;;
-1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;;
-1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
-1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;;
-1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;;
-1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;;
-1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;;
-135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;;
-135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;;
-1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;;
-1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;;
-1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;;
-1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;;
-1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;;
-1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;;
-1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;;
-1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;;
-1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;;
-1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;;
-136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;;
-136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;;
-136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;;
-136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;;
-136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;;
-136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;;
-1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;;
-1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;;
-1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;;
-1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;;
-1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;;
-1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;;
-1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;;
-1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;;
-1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
-1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
-137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;;
-137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;;
-137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
-1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;;
-1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;;
-1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;;
-1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;;
-1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;;
-1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;;
-1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;;
-1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;;
-1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;;
-1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;;
-138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;;
-138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;;
-138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;;
-138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;;
-138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;;
-138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;;
-1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;;
-1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;;
-1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;;
-1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;;
-1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;;
-1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;;
-1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;;
-1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;;
-1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;;
-1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;;
-13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;;
-13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;;
-13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;;
-13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;;
-13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;;
-13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;;
-13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;;
-13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;;
-13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;;
-13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;;
-13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;;
-13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;;
-13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;;
-13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;;
-13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;;
-13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;;
-13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;;
-13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;;
-13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;;
-13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;;
-13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;;
-13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;;
-13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;;
-13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;;
-13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;;
-13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;;
-13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;;
-13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;;
-13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;;
-13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;;
-13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;;
-13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;;
-13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;;
-13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;;
-13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;;
-13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;;
-13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;;
-13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;;
-13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;;
-13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;;
-13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;;
-13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;;
-13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;;
-13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;;
-13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;;
-13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;;
-13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;;
-13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;;
-13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;;
-13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;;
-13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;;
-13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;;
-13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;;
-13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;;
-13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;;
-13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;;
-13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;;
-13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;;
-13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;;
-13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;;
-13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;;
-13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;;
-13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;;
-13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;;
-13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;;
-13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;;
-13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;;
-13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;;
-13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;;
-13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;;
-13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;;
-13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;;
-13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;;
-13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;;
-13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;;
-13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;;
-13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;;
-13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;;
-13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;;
-13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;;
-13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;;
-13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;;
-13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;;
-13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;;
-13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;;
-1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;;
-1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;;
-1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;;
-1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;;
-1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;;
-1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;;
-1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;;
-1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;;
-1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;;
-1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;;
-140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;;
-140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;;
-140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;;
-140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;;
-140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;;
-140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;;
-1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;;
-1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;;
-1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;;
-1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;;
-1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;;
-1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;;
-1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;;
-1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;;
-1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;;
-1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;;
-141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;;
-141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;;
-141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;;
-141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;;
-141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;;
-141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;;
-1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;;
-1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;;
-1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;;
-1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;;
-1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;;
-1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;;
-1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;;
-1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;;
-1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;;
-1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;;
-142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;;
-142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;;
-142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;;
-142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;;
-142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;;
-142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;;
-1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;;
-1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;;
-1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;;
-1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;;
-1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;;
-1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;;
-1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;;
-1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;;
-1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;;
-1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;;
-143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;;
-143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;;
-143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;;
-143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;;
-143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;;
-143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;;
-1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;;
-1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;;
-1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;;
-1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;;
-1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;;
-1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;;
-1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;;
-1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;;
-1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;;
-144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;;
-144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;;
-144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;;
-144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;;
-144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;;
-144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;;
-1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;;
-1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;;
-1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;;
-1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;;
-1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;;
-1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;;
-1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;;
-1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;;
-1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;;
-1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;;
-145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;;
-145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;;
-145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;;
-145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;;
-145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;;
-145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;;
-1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;;
-1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;;
-1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;;
-1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;;
-1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;;
-1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;;
-1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;;
-1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;;
-1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;;
-1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;;
-146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;;
-146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;;
-146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;;
-146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;;
-146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;;
-146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;;
-1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;;
-1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;;
-1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;;
-1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;;
-1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;;
-1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;;
-1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;;
-1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;;
-1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;;
-1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;;
-147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;;
-147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;;
-147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;;
-147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;;
-147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;;
-147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;;
-1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;;
-1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;;
-1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;;
-1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;;
-1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;;
-1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;;
-1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;;
-1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;;
-1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;;
-1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;;
-148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;;
-148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;;
-148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;;
-148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;;
-148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;;
-148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;;
-1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;;
-1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;;
-1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;;
-1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;;
-1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;;
-1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;;
-1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;;
-1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;;
-1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;;
-1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;;
-149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;;
-149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;;
-149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;;
-149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;;
-149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;;
-149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;;
-14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;;
-14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;;
-14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;;
-14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;;
-14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;;
-14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;;
-14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;;
-14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;;
-14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;;
-14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;;
-14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;;
-14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;;
-14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;;
-14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;;
-14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;;
-14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;;
-14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;;
-14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;;
-14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;;
-14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;;
-14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;;
-14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;;
-14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;;
-14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;;
-14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;;
-14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;;
-14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;;
-14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;;
-14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;;
-14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;;
-14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;;
-14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;;
-14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;;
-14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;;
-14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;;
-14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;;
-14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;;
-14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;;
-14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;;
-14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;;
-14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;;
-14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;;
-14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;;
-14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;;
-14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;;
-14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;;
-14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;;
-14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;;
-14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;;
-14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;;
-14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;;
-14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;;
-14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;;
-14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;;
-14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;;
-14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;;
-14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;;
-14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;;
-14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;;
-14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;;
-14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;;
-14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;;
-14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;;
-14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;;
-14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;;
-14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;;
-14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;;
-14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;;
-14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;;
-14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;;
-14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;;
-14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;;
-14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;;
-14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;;
-14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;;
-14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;;
-14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;;
-14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;;
-14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;;
-14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;;
-14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;;
-14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;;
-14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;;
-14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;;
-14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;;
-14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;;
-14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;;
-14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;;
-14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;;
-14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;;
-14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;;
-14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;;
-14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;;
-14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;;
-14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;;
-14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;;
-1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;;
-1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;;
-1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;;
-1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;;
-1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;;
-1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;;
-1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;;
-1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;;
-1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;;
-1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;;
-150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;;
-150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;;
-150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;;
-150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;;
-150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;;
-150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;;
-1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;;
-1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;;
-1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;;
-1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;;
-1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;;
-1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;;
-1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;;
-1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;;
-1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;;
-1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;;
-151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;;
-151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;;
-151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;;
-151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;;
-151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;;
-151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;;
-1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;;
-1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;;
-1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;;
-1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;;
-1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;;
-1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;;
-1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;;
-1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;;
-1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;;
-1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;;
-152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;;
-152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;;
-152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;;
-152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;;
-152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;;
-152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;;
-1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;;
-1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;;
-1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;;
-1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;;
-1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;;
-1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;;
-1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;;
-1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;;
-1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;;
-1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;;
-153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;;
-153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;;
-153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;;
-153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;;
-153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;;
-153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;;
-1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;;
-1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;;
-1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;;
-1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;;
-1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;;
-1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;;
-1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;;
-1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;;
-1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;;
-1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;;
-154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;;
-154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;;
-154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;;
-154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;;
-154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;;
-154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;;
-1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;;
-1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;;
-1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;;
-1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;;
-1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;;
-1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;;
-1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;;
-1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;;
-1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;;
-1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;;
-155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;;
-155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;;
-155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;;
-155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;;
-155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;;
-155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;;
-1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;;
-1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;;
-1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;;
-1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;;
-1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;;
-1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;;
-1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;;
-1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;;
-1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;;
-1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;;
-156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;;
-156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;;
-156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;;
-156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;;
-156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;;
-156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;;
-1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;;
-1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;;
-1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;;
-1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;;
-1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;;
-1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;;
-1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;;
-1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;;
-1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;;
-1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;;
-157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;;
-157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;;
-157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;;
-157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;;
-157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;;
-157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;;
-1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;;
-1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;;
-1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;;
-1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;;
-1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;;
-1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;;
-1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;;
-1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;;
-1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;;
-1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;;
-158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;;
-158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;;
-158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;;
-158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;;
-158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;;
-158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;;
-1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;;
-1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;;
-1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;;
-1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;;
-1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;;
-1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;;
-1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;;
-1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;;
-1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;;
-1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;;
-159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;;
-159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;;
-159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;;
-159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;;
-159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;;
-159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;;
-15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;;
-15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;;
-15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;;
-15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;;
-15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;;
-15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;;
-15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;;
-15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;;
-15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;;
-15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;;
-15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;;
-15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;;
-15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;;
-15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;;
-15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;;
-15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;;
-15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;;
-15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;;
-15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;;
-15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;;
-15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;;
-15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;;
-15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;;
-15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;;
-15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;;
-15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;;
-15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;;
-15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;;
-15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;;
-15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;;
-15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;;
-15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;;
-15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;;
-15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;;
-15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;;
-15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;;
-15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;;
-15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;;
-15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;;
-15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;;
-15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;;
-15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;;
-15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;;
-15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;;
-15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;;
-15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;;
-15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;;
-15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;;
-15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;;
-15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;;
-15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;;
-15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;;
-15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;;
-15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;;
-15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;;
-15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;;
-15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;;
-15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;;
-15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;;
-15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;;
-15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;;
-15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;;
-15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;;
-15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;;
-15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;;
-15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;;
-15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;;
-15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;;
-15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;;
-15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;;
-15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;;
-15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;;
-15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;;
-15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;;
-15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;;
-15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;;
-15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;;
-15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;;
-15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;;
-15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;;
-15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;;
-15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;;
-15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;;
-15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;;
-15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;;
-15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;;
-15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;;
-15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;;
-15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;;
-15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;;
-15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;;
-15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;;
-15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;;
-15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;;
-15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;;
-15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;;
-1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;;
-1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;;
-1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;;
-1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;;
-1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;;
-1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;;
-1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;;
-1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;;
-1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;;
-1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;;
-160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;;
-160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;;
-160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;;
-160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;;
-160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;;
-160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;;
-1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;;
-1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;;
-1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;;
-1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;;
-1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;;
-1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;;
-1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;;
-1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;;
-1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;;
-1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;;
-161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;;
-161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;;
-161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;;
-161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;;
-161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;;
-161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;;
-1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;;
-1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;;
-1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;;
-1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;;
-1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;;
-1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;;
-1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;;
-1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;;
-1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;;
-1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;;
-162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;;
-162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;;
-162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;;
-162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;;
-162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;;
-162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;;
-1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;;
-1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;;
-1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;;
-1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;;
-1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;;
-1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;;
-1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;;
-1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;;
-1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;;
-1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;;
-163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;;
-163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;;
-163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;;
-163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;;
-163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;;
-163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;;
-1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;;
-1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;;
-1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;;
-1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;;
-1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;;
-1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;;
-1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;;
-1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;;
-1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;;
-1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;;
-164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;;
-164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;;
-164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;;
-164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;;
-164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;;
-164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;;
-1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;;
-1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;;
-1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;;
-1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;;
-1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;;
-1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;;
-1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;;
-1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;;
-1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;;
-1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;;
-165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;;
-165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;;
-165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;;
-165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;;
-165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;;
-165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;;
-1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;;
-1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;;
-1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;;
-1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;;
-1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;;
-1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;;
-1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;;
-1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;;
-1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;;
-1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;;
-166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;;
-166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;;
-166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;;
-166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;;
-166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;;
-166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;;
-1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;;
-1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;;
-1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;;
-1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;;
-1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;;
-1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;;
-1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;;
-1677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;;
-1678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;;
-1679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;;
-167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;;
-167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;;
-167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;;
-167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;;
-167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;;
-167F;CANADIAN SYLLABICS BLACKFOOT W;Lo;0;L;;;;;N;;;;;
-1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;;
-1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;;
-1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;;
-1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;;
-1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;;
-1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;;
-1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;;
-1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;;
-1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;;
-1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;;
-168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;;
-168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;;
-168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;;
-168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;;
-168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;;
-168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;;
-1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;;
-1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;;
-1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;;
-1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;;
-1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;;
-1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;;
-1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;;
-1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;;
-1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;;
-1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;;
-169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;;
-169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;;
-169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;;
-16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;;
-16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;;
-16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;;
-16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;;
-16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;;
-16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;;
-16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;;
-16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;;
-16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;;
-16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;;
-16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;;
-16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;;
-16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;;
-16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;;
-16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;;
-16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;;
-16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;;
-16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;;
-16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;;
-16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;;
-16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;;
-16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;;
-16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;;
-16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;;
-16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;;
-16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;;
-16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;;
-16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;;
-16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;;
-16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;;
-16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;;
-16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;;
-16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;;
-16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;;
-16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;;
-16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;;
-16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;;
-16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;;
-16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;;
-16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;;
-16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;;
-16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;;
-16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;;
-16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;;
-16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;;
-16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;;
-16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;;
-16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;;
-16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;;
-16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;;
-16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;;
-16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;;
-16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;;
-16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;;
-16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;;
-16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;;
-16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;;
-16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;;
-16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;;
-16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;;
-16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;;
-16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;;
-16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;;
-16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;;
-16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;;
-16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;;
-16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;;
-16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;;
-16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;;
-16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;;
-16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;;
-16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;;
-16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;;
-16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;;
-16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;;;;
-16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;;
-16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;;
-1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;;
-1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;;
-1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;;
-1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;;
-1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;;
-1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;;
-1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;;
-1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;;
-1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;;
-1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;;
-170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
-170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
-170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
-170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
-170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
-1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
-1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;;
-1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
-1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
-1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
-1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;;
-1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;;
-1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;;
-1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;;
-1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;;
-1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;;
-1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;;
-172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;;
-172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;;
-172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;;
-172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;;
-172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;;
-172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;;
-1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;;
-1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
-1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
-1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
-1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
-1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;;
-1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;;
-1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;;
-1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;;
-1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;;
-1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;;
-1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;;
-1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;;
-1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;;
-174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;;
-174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;;
-174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;;
-174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;;
-174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;;
-174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;;
-1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;;
-1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;;
-1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;;
-1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;;
-1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;;
-1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;;
-1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;;
-1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;;
-1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;;
-1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;;
-1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;;
-1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;;
-176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;;
-176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;;
-176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;;
-176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;;
-176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;;
-1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;;
-1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;;
-1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;;
-1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;;
-1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;;
-1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;;
-1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;;
-1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;;
-1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;;
-1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;;
-1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;;
-178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;;
-178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;;
-178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;;
-178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;;
-178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;;
-178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;;
-1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;;
-1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;;
-1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;;
-1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;;
-1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;;
-1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;;
-1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;;
-1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;;
-1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;;
-1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;;
-179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;;
-179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;;
-179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;;
-179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;;
-179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;;
-179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;;
-17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;;
-17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;;
-17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;;
-17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;;
-17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;;
-17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;;
-17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;;
-17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;;
-17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;;
-17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;;
-17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;;
-17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;;
-17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;;
-17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;;
-17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;;
-17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;;
-17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;;
-17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;;
-17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;;
-17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;;
-17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;;;;
-17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;;;;
-17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;;
-17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;;
-17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;;
-17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;;
-17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;;
-17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;;
-17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;;
-17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;;
-17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;;
-17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;;
-17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;;
-17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;;
-17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;;
-17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;;
-17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;;
-17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;;
-17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;;
-17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;;
-17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;;
-17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;;
-17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;;
-17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;;
-17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;;
-17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;;
-17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;;
-17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;;
-17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;;
-17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;;
-17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;;
-17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;;
-17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;;
-17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;;
-17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;;
-17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;;
-17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;;
-17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;;
-17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;;
-17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;;
-17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;;
-17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;;
-1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;;
-1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;;
-1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;;
-1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;;
-1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;;
-1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;;
-1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;;
-1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;;
-1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;;
-1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;;
-180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;;
-180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;;
-180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
-180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
-180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;;
-1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;;
-1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;;
-1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;;
-1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;;
-1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;;
-1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;;
-1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;;
-1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;;
-1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;;
-1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;;
-182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;;
-182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;;
-182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;;
-182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;;
-182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;;
-182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;;
-1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;;
-1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;;
-1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;;
-1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;;
-1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;;
-1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;;
-1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;;
-1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;;
-1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;;
-1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;;
-183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;;
-183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;;
-183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;;
-183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;;
-183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;;
-183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;;
-1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;;
-1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;;
-1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;;
-1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;;
-1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;;
-1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;;
-1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;;
-1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;;
-1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;;
-1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;;
-184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;;
-184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;;
-184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;;
-184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;;
-184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;;
-184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;;
-1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;;
-1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;;
-1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;;
-1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;;
-1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;;
-1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;;
-1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;;
-1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;;
-1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;;
-1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;;
-185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;;
-185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;;
-185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;;
-185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;;
-185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;;
-185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;;
-1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;;
-1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;;
-1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;;
-1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;;
-1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;;
-1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;;
-1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;;
-1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;;
-1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;;
-1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;;
-186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;;
-186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;;
-186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;;
-186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;;
-186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;;
-186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;;
-1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;;
-1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;;
-1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;;
-1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;;
-1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;;
-1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;;
-1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;;
-1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;;
-1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;;
-1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;;
-1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;;
-1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;;
-1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;;
-1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;;
-1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;;
-1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;;
-1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;;
-1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;;
-188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;;
-188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;;
-188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;;
-188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;;
-188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;;
-188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;;
-1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;;
-1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;;
-1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;;
-1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;;
-1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;;
-1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;;
-1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;;
-1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;;
-1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;;
-189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;;
-189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;;
-189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;;
-189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;;
-189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;;
-18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;;
-18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;;
-18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;;
-18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;;
-18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;;
-18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;;
-18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;;
-18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;;
-18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;;
-18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;;
-18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;;
-18B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;;
-18B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;;
-18B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;;
-18B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;;
-18B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;;
-18B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;;
-18B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;;
-18B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;;
-18B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;;
-18B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;;
-18BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;;
-18BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;;
-18BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;;
-18BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;;
-18BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;;
-18BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;;
-18C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;;
-18C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;;
-18C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;;
-18C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;;
-18C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;;
-18C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;;
-18C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;;
-18C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;;
-18C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;;
-18C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;;
-18CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;;
-18CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;;
-18CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;;
-18CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;;
-18CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;;
-18CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;;
-18D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;;
-18D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;;
-18D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;;
-18D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;;
-18D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;;
-18D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;;
-18D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;;
-18D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;;
-18D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;;
-18D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;;
-18DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;;
-18DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;;
-18DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;;
-18DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;;
-18DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;;
-18DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;;
-18E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;;
-18E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;;
-18E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;;
-18E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;;
-18E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;;
-18E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;;
-18E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;;
-18E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;;
-18E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;;
-18E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;;
-18EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;;
-18EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;;
-18EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;;
-18ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;;
-18EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;;
-18EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;;
-18F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;;
-18F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;;
-18F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;;
-18F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;;
-18F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;;
-18F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;N;;;;;
-1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;;
-1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;;
-1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;;
-1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;;
-1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;;
-1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;;
-1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;;
-1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;;
-1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;;
-1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;;
-190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;;
-190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;;
-190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;;
-190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;;
-190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;;
-190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;;
-1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;;
-1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;;
-1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;;
-1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;;
-1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;;
-1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;;
-1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;;
-1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;;
-1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;;
-1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;;
-191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;;
-191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;;
-191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;;
-1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;;
-1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
-192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
-192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;;
-1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;;
-1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;;
-1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;;
-1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;;
-1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;;
-1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;;
-1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;;
-1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;;
-1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;;
-193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;;
-193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;;
-1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;;
-1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
-1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;;
-1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;;
-1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;;
-1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;;
-1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;;
-1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;;
-1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;;
-1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;;
-1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;;
-1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;;
-1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;;
-195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;;
-195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;;
-195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;;
-195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;;
-195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;;
-195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;;
-1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;;
-1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;;
-1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;;
-1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;;
-1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;;
-1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;;
-1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;;
-1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;;
-1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;;
-1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;;
-196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;;
-196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;;
-196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;;
-196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;;
-1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;;
-1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;;
-1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;;
-1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;;
-1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;;
-1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;;
-1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;;
-1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
-1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;;
-1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;;
-1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;;
-1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;;
-1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;;
-1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;;
-1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
-198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
-198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;;
-198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;;
-198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;;
-198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
-198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
-1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;;
-1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;;
-1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;;
-1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;;
-1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
-1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
-1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;;
-1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;;
-1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
-1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;;
-199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
-199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;;
-199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;;
-199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;;
-199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;;
-199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;;
-19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
-19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;;
-19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;;
-19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;;
-19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;;
-19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;;
-19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;;
-19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;;
-19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;;
-19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;;
-19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;;
-19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;;
-19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;;
-19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;;
-19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;;
-19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;;
-19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;;
-19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;;
-19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
-19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;;
-19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;;
-19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;;
-19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;;
-19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
-19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;;
-19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;;
-19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;;
-19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;;
-19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;;
-19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;;
-19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;;
-19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-19DA;NEW TAI LUE THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;;
-19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;;
-19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;;
-19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;;
-19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;;
-19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;;
-19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;;
-19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;;
-19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;;
-19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;;
-19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;;
-19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;;
-19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;;
-19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;;
-19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;;
-19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;;
-19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;;
-19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;;
-19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;;
-19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;;
-19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;;
-19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;;
-19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;;
-19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;;
-19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;;
-19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;;
-19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;;
-19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;;
-19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;;
-19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;;
-19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;;
-19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;;
-19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;;
-19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;;
-1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;;
-1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;;
-1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
-1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;;
-1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;;
-1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;;
-1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;;
-1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;;
-1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;;
-1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;;
-1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;;
-1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;;
-1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;;
-1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;;
-1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
-1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;;
-1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;;
-1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;;
-1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;;
-1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;;
-1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;;
-1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;;
-1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;;
-1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
-1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;;
-1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;;
-1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;;
-1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
-1A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;;
-1A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;;
-1A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;;
-1A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;;
-1A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;;
-1A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;;
-1A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;;
-1A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;;
-1A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;;
-1A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;;
-1A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;;
-1A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;;
-1A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;;
-1A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;;
-1A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;;
-1A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;;
-1A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;;
-1A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
-1A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
-1A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;;
-1A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;;
-1A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;;
-1A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;;
-1A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
-1A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
-1A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
-1A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;;
-1A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;;
-1A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
-1A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;;
-1A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;;
-1A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
-1A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;;
-1A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;;
-1A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;;
-1A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;;
-1A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;;
-1A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;;
-1A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;;
-1A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
-1A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
-1A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;;
-1A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;;
-1A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;;
-1A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;;
-1A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;;
-1A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;;
-1A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;;
-1A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;;
-1A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;;
-1A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;;
-1A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
-1A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
-1A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
-1A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;;
-1A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;;
-1A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;;
-1A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;;
-1A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;;
-1A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;;
-1A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;;
-1A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;;
-1A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;;
-1A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
-1A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;;
-1A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-1A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
-1A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-1A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-1A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
-1A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;;
-1A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-1A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-1A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-1A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;;
-1A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
-1A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-1A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
-1A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-1A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-1A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;;
-1A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;;
-1A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;;
-1A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;;
-1A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;;
-1A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;;
-1A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;;
-1A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;;
-1A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;;
-1A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;;
-1A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;;
-1A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;;
-1A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;;
-1AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;;
-1AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;;
-1AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;;
-1AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;;
-1AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;;
-1AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;;
-1AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;;
-1AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;;
-1AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;;
-1AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;;
-1AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;;
-1AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;;
-1AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;;
-1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;
-1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;
-1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;
-1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;;
-1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;;
-1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;;
-1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;;
-1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;;
-1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;;
-1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;;
-1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;;
-1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;;
-1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;;
-1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;;
-1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;;
-1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;;
-1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;;
-1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;;
-1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;;
-1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
-1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
-1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;;
-1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;;
-1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;;
-1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;;;;
-1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
-1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;;
-1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
-1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;;
-1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;;
-1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;;
-1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
-1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;;
-1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
-1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;;
-1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;;
-1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;;
-1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;;;;
-1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
-1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;;
-1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;;
-1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;;
-1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;;
-1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;;
-1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;;
-1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;;;;
-1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;;
-1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
-1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
-1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;;
-1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;;
-1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;;
-1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;;
-1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;
-1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;;
-1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;;
-1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;;
-1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;;
-1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;;
-1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
-1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;;
-1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;;
-1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;;
-1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
-1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;;
-1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;;
-1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;;
-1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;;
-1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;;
-1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;;
-1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
-1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
-1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
-1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1B5A;BALINESE PANTI;Po;0;L;;;;;N;;;;;
-1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;;
-1B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;;
-1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;;
-1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;;
-1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;;
-1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;;
-1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;;
-1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;;
-1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;;
-1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;;
-1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;;
-1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;;
-1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;;
-1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;;
-1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;;
-1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;;
-1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;;
-1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;;
-1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;;
-1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;;
-1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;;
-1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
-1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;;
-1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;;
-1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;;
-1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;;
-1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;;
-1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;;
-1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;;
-1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;;
-1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;;
-1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
-1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
-1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
-1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
-1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
-1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
-1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;
-1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;
-1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;
-1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;
-1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;
-1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;
-1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;
-1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;
-1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;
-1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;
-1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
-1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;
-1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;
-1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;
-1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
-1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;
-1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;
-1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;
-1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;
-1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;
-1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;
-1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;
-1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;
-1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;
-1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;
-1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;
-1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;
-1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;
-1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;
-1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;
-1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;
-1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;
-1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;
-1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;
-1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;
-1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;
-1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;
-1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;
-1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;
-1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;
-1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;
-1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;
-1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;
-1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;
-1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;
-1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;
-1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;
-1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;
-1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;
-1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;
-1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;
-1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;
-1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;
-1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;
-1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;
-1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;
-1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;
-1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;
-1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;
-1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;
-1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;
-1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;
-1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;
-1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;
-1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;
-1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;
-1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;
-1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;
-1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;
-1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;
-1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;
-1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;
-1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;
-1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;
-1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;
-1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;
-1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;
-1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;
-1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
-1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
-1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;
-1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;
-1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;
-1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
-1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;
-1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
-1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;
-1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;
-1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;
-1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;
-1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;
-1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;
-1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;
-1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;
-1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;
-1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;
-1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;
-1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;
-1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;
-1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;
-1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;
-1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;
-1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;
-1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;
-1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;
-1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;
-1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;
-1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;
-1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;
-1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;
-1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;
-1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;
-1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;
-1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;
-1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;
-1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;
-1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;
-1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;
-1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;
-1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;
-1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;
-1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;
-1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;
-1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;
-1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;
-1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;
-1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;
-1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;
-1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
-1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
-1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;
-1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;
-1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
-1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
-1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;
-1CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;;
-1CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;;
-1CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;;
-1CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;;
-1CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;;
-1CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
-1CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
-1CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
-1CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;;
-1CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;;
-1CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;;
-1CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;;
-1CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;;
-1CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;;
-1CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-1CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
-1CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;;
-1CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;;
-1CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;;
-1CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;
-1CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;
-1CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;
-1CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;
-1CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;
-1CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;
-1CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;;
-1CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;;
-1CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;;
-1CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;;
-1CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;;
-1CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
-1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
-1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
-1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;;
-1CF2;VEDIC SIGN ARDHAVISARGA;Mc;0;L;;;;;N;;;;;
-1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;;
-1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;;
-1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;;
-1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;;
-1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;;
-1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;;
-1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;;
-1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;;
-1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;;
-1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;;
-1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;;
-1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;;
-1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;;
-1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;;
-1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;;
-1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;;
-1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;;
-1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;;
-1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;;
-1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;;
-1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;;
-1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;;
-1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;;
-1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;;
-1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;;
-1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;;
-1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;;
-1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;;
-1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;;
-1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;;
-1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;;
-1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;;
-1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;;
-1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;;
-1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;;
-1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;;
-1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;;
-1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;;
-1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;;
-1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;;
-1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;;
-1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;;
-1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L;<super> 0041;;;;N;;;;;
-1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
-1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
-1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
-1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
-1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
-1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
-1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
-1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
-1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
-1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
-1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
-1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
-1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
-1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
-1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
-1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
-1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
-1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
-1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
-1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
-1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
-1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
-1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
-1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
-1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
-1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
-1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
-1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
-1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
-1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
-1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
-1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
-1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
-1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
-1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
-1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
-1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
-1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
-1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
-1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
-1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
-1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
-1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
-1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
-1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
-1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
-1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
-1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
-1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
-1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
-1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
-1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
-1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
-1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
-1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
-1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
-1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
-1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
-1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
-1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
-1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 03C7;;;;N;;;;;
-1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;;
-1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;;
-1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;;
-1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L;<super> 043D;;;;N;;;;;
-1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D
-1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;;
-1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63
-1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;;
-1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
-1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;;
-1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
-1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L;<super> 0252;;;;N;;;;;
-1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
-1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
-1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
-1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
-1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
-1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
-1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
-1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
-1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
-1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
-1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
-1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
-1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
-1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
-1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
-1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
-1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
-1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
-1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
-1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
-1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
-1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
-1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
-1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
-1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
-1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
-1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
-1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
-1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
-1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
-1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
-1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
-1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
-1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
-1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
-1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 03B8;;;;N;;;;;
-1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;;
-1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
-1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;;
-1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;;
-1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;;
-1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;;
-1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;;
-1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;;
-1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;;
-1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;;
-1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;;
-1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;
-1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;
-1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;
-1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;
-1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;
-1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;
-1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;
-1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;
-1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;
-1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;
-1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;
-1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;
-1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;
-1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;
-1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;
-1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;
-1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;
-1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;
-1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;
-1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;
-1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;
-1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;
-1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;
-1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;
-1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;
-1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;
-1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;
-1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;
-1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;;
-1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;;
-1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;;
-1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01;
-1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00
-1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03;
-1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02
-1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05;
-1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04
-1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07;
-1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06
-1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09;
-1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08
-1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B;
-1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A
-1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D;
-1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C
-1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F;
-1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E
-1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11;
-1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10
-1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13;
-1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12
-1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15;
-1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14
-1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17;
-1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16
-1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19;
-1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18
-1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B;
-1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A
-1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D;
-1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C
-1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F;
-1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E
-1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21;
-1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20
-1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23;
-1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22
-1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25;
-1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24
-1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27;
-1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26
-1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29;
-1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28
-1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B;
-1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A
-1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D;
-1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C
-1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F;
-1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E
-1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31;
-1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30
-1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33;
-1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32
-1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35;
-1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34
-1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37;
-1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36
-1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39;
-1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38
-1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B;
-1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A
-1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D;
-1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C
-1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F;
-1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E
-1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41;
-1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40
-1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43;
-1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42
-1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45;
-1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44
-1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47;
-1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46
-1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49;
-1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48
-1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B;
-1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A
-1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D;
-1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C
-1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F;
-1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E
-1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51;
-1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50
-1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53;
-1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52
-1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55;
-1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54
-1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57;
-1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56
-1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59;
-1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58
-1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B;
-1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A
-1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D;
-1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C
-1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F;
-1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E
-1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61;
-1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60
-1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63;
-1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62
-1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65;
-1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64
-1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67;
-1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66
-1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69;
-1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68
-1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B;
-1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A
-1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D;
-1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C
-1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F;
-1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E
-1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71;
-1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70
-1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73;
-1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72
-1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75;
-1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74
-1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77;
-1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76
-1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79;
-1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78
-1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B;
-1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A
-1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D;
-1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C
-1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F;
-1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E
-1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81;
-1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80
-1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83;
-1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82
-1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85;
-1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84
-1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87;
-1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86
-1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89;
-1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88
-1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B;
-1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A
-1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D;
-1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C
-1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F;
-1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E
-1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91;
-1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90
-1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93;
-1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92
-1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95;
-1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94
-1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;;
-1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;;
-1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;;
-1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;;
-1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;
-1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
-1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;
-1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;
-1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;
-1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;
-1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1;
-1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0
-1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3;
-1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2
-1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5;
-1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4
-1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7;
-1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6
-1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9;
-1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8
-1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB;
-1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA
-1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD;
-1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC
-1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF;
-1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE
-1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1;
-1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0
-1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3;
-1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2
-1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5;
-1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4
-1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7;
-1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6
-1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9;
-1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8
-1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB;
-1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA
-1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD;
-1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC
-1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF;
-1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE
-1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1;
-1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0
-1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3;
-1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2
-1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5;
-1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4
-1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7;
-1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6
-1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9;
-1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8
-1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB;
-1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA
-1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD;
-1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC
-1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF;
-1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE
-1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1;
-1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0
-1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3;
-1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2
-1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5;
-1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4
-1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7;
-1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6
-1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9;
-1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8
-1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB;
-1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA
-1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD;
-1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC
-1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF;
-1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE
-1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1;
-1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0
-1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3;
-1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2
-1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5;
-1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4
-1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7;
-1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6
-1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9;
-1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8
-1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB;
-1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA
-1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED;
-1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC
-1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF;
-1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE
-1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1;
-1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0
-1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3;
-1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2
-1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5;
-1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4
-1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7;
-1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6
-1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9;
-1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8
-1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;
-1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
-1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
-1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
-1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;
-1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE
-1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08
-1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09
-1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A
-1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B
-1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C
-1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D
-1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E
-1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F
-1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00;
-1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01;
-1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02;
-1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03;
-1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04;
-1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05;
-1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06;
-1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07;
-1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18
-1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19
-1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A
-1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B
-1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C
-1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D
-1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10;
-1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11;
-1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12;
-1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13;
-1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14;
-1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15;
-1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28
-1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29
-1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A
-1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B
-1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C
-1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D
-1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E
-1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F
-1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20;
-1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21;
-1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22;
-1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23;
-1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24;
-1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25;
-1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26;
-1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27;
-1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38
-1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39
-1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A
-1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B
-1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C
-1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D
-1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E
-1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F
-1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30;
-1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31;
-1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32;
-1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33;
-1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34;
-1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35;
-1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36;
-1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37;
-1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48
-1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49
-1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A
-1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B
-1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C
-1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D
-1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40;
-1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41;
-1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42;
-1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43;
-1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44;
-1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45;
-1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;;
-1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59
-1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;;
-1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B
-1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;;
-1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D
-1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;;
-1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F
-1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51;
-1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53;
-1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55;
-1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57;
-1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68
-1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69
-1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A
-1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B
-1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C
-1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D
-1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E
-1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F
-1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60;
-1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61;
-1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62;
-1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63;
-1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64;
-1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65;
-1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66;
-1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67;
-1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA
-1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB
-1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8
-1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9
-1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA
-1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB
-1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA
-1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB
-1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8
-1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9
-1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA
-1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB
-1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA
-1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB
-1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88
-1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89
-1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A
-1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B
-1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C
-1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D
-1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E
-1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F
-1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80;
-1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81;
-1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82;
-1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83;
-1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84;
-1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85;
-1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86;
-1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87;
-1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98
-1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99
-1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A
-1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B
-1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C
-1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D
-1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E
-1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F
-1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90;
-1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91;
-1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92;
-1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93;
-1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94;
-1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95;
-1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96;
-1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97;
-1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8
-1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9
-1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA
-1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB
-1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC
-1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD
-1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE
-1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF
-1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0;
-1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1;
-1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2;
-1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3;
-1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4;
-1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5;
-1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6;
-1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7;
-1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8
-1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9
-1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;;
-1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC
-1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;;
-1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;;
-1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;;
-1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0;
-1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1;
-1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70;
-1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71;
-1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3;
-1FBD;GREEK KORONIS;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
-1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
-1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
-1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 0020 0342;;;;N;;;;;
-1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;;
-1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;;
-1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC
-1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;;
-1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;;
-1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;;
-1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72;
-1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73;
-1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74;
-1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75;
-1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3;
-1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;;
-1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;;
-1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;;
-1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8
-1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9
-1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;;
-1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;;
-1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;;
-1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;;
-1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0;
-1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1;
-1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76;
-1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77;
-1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;;
-1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;;
-1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;;
-1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8
-1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9
-1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;;
-1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;;
-1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;;
-1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC
-1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;;
-1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;;
-1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0;
-1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1;
-1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A;
-1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B;
-1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5;
-1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;;
-1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;;
-1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;;
-1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;;
-1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC
-1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;;
-1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;;
-1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;;
-1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78;
-1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79;
-1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C;
-1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D;
-1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3;
-1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;;
-1FFE;GREEK DASIA;Sk;0;ON;<compat> 0020 0314;;;;N;;;;;
-2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;;
-2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;;
-2002;EN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
-2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-200A;HAIR SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;;
-200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;;
-200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;;
-200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;;
-200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;;
-2010;HYPHEN;Pd;0;ON;;;;;N;;;;;
-2011;NON-BREAKING HYPHEN;Pd;0;ON;<noBreak> 2010;;;;N;;;;;
-2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;;
-2013;EN DASH;Pd;0;ON;;;;;N;;;;;
-2014;EM DASH;Pd;0;ON;;;;;N;;;;;
-2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;;
-2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;;
-2017;DOUBLE LOW LINE;Po;0;ON;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
-2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
-2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
-201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
-201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
-201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
-201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
-201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
-201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;;
-2020;DAGGER;Po;0;ON;;;;;N;;;;;
-2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;;
-2022;BULLET;Po;0;ON;;;;;N;;;;;
-2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;;
-2024;ONE DOT LEADER;Po;0;ON;<compat> 002E;;;;N;;;;;
-2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
-2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 002E 002E 002E;;;;N;;;;;
-2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;;
-2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;;
-2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;;
-202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;;
-202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;;
-202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;;
-202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;;
-202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;;
-202F;NARROW NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;;;;;
-2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
-2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;;
-2032;PRIME;Po;0;ET;;;;;N;;;;;
-2033;DOUBLE PRIME;Po;0;ET;<compat> 2032 2032;;;;N;;;;;
-2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
-2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
-2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
-2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 2035 2035 2035;;;;N;;;;;
-2038;CARET;Po;0;ON;;;;;N;;;;;
-2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;;
-203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;;
-203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;;
-203C;DOUBLE EXCLAMATION MARK;Po;0;ON;<compat> 0021 0021;;;;N;;;;;
-203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
-203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
-203F;UNDERTIE;Pc;0;ON;;;;;N;;;;;
-2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;;
-2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;;
-2042;ASTERISM;Po;0;ON;;;;;N;;;;;
-2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;;
-2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;;
-2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;;
-2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;;
-2047;DOUBLE QUESTION MARK;Po;0;ON;<compat> 003F 003F;;;;N;;;;;
-2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
-2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 0021 003F;;;;N;;;;;
-204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;;
-204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;;
-204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;;
-204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;;
-204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;;
-2050;CLOSE UP;Po;0;ON;;;;;N;;;;;
-2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;;
-2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;;
-2053;SWUNG DASH;Po;0;ON;;;;;N;;;;;
-2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;;
-2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;;
-2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2057;QUADRUPLE PRIME;Po;0;ON;<compat> 2032 2032 2032 2032;;;;N;;;;;
-2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;;
-205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;;
-205D;TRICOLON;Po;0;ON;;;;;N;;;;;
-205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;;
-205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
-2060;WORD JOINER;Cf;0;BN;;;;;N;;;;;
-2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;;
-2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;;
-2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;;
-2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;;
-206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;;
-206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;;
-206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;;
-2070;SUPERSCRIPT ZERO;No;0;EN;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
-2071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L;<super> 0069;;;;N;;;;;
-2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
-2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
-2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
-2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
-2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
-2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
-207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
-207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
-207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
-207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
-207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
-207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L;<super> 006E;;;;N;;;;;
-2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
-2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
-2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
-2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
-2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
-2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
-2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
-2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
-2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
-2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
-208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
-208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
-208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
-208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
-208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
-2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
-2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
-2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
-2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
-2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 0259;;;;N;;;;;
-20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;;
-20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;;
-20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;;
-20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;;
-20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;;
-20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;;
-20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;;
-20A8;RUPEE SIGN;Sc;0;ET;<compat> 0052 0073;;;;N;;;;;
-20A9;WON SIGN;Sc;0;ET;;;;;N;;;;;
-20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;;
-20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;;
-20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;;
-20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;;
-20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;;
-20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;;
-20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;;
-20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;;
-20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;;
-20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;;
-20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;;
-20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;;
-20B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;;
-20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
-20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;
-20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
-20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
-20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
-20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;;
-20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;;
-20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;;
-20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;;
-20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;;
-20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;;
-20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;;
-20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;;
-20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;;
-20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;;
-20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;;
-20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;;
-20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;;
-20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;;
-20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;;
-20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;;
-20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;;
-20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;;
-20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;;
-20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;;
-20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;;
-20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;;
-20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
-20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;;
-20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;;
-20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;;
-2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
-2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
-2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
-2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
-2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
-2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
-2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
-2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
-2108;SCRUPLE;So;0;ON;;;;;N;;;;;
-2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
-210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
-210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
-210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
-210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
-210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
-2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
-2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
-2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
-2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
-2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
-2116;NUMERO SIGN;So;0;ON;<compat> 004E 006F;;;;N;NUMERO;;;;
-2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;;
-2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;;
-2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
-211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
-211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
-211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
-211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
-211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
-211F;RESPONSE;So;0;ON;;;;;N;;;;;
-2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
-2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
-2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
-2123;VERSICLE;So;0;ON;;;;;N;;;;;
-2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 005A;;;;N;DOUBLE-STRUCK Z;;;;
-2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;;
-2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9;
-2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;;
-2128;BLACK-LETTER CAPITAL Z;Lu;0;L;<font> 005A;;;;N;BLACK-LETTER Z;;;;
-2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;;
-212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B;
-212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5;
-212C;SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;SCRIPT B;;;;
-212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
-212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
-212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
-2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
-2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;
-2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
-2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
-2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
-2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
-2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
-2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
-213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
-213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
-213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 2211;;;;Y;;;;;
-2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;;
-2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
-2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;;
-2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;;
-2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-214A;PROPERTY LINE;So;0;ON;;;;;N;;;;;
-214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;;
-214C;PER SIGN;So;0;ON;;;;;N;;;;;
-214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;;
-214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132
-214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;;
-2150;VULGAR FRACTION ONE SEVENTH;No;0;ON;<fraction> 0031 2044 0037;;;1/7;N;;;;;
-2151;VULGAR FRACTION ONE NINTH;No;0;ON;<fraction> 0031 2044 0039;;;1/9;N;;;;;
-2152;VULGAR FRACTION ONE TENTH;No;0;ON;<fraction> 0031 2044 0031 0030;;;1/10;N;;;;;
-2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
-2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
-2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
-2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
-2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
-2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
-2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
-215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
-215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
-215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
-215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
-215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
-215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
-2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
-2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
-2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
-2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
-2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
-2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
-2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
-2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
-2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
-2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
-216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
-216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
-216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
-216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
-216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
-216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
-2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
-2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
-2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
-2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
-2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
-2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
-2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
-2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
-2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
-2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
-217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
-217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
-217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
-217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
-217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
-217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 006D;;;1000;N;;;216F;;216F
-2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;;
-2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;;
-2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;;
-2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184;
-2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183
-2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;
-2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;
-2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;
-2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;;
-2189;VULGAR FRACTION ZERO THIRDS;No;0;ON;<fraction> 0030 2044 0033;;;0;N;;;;;
-2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;;
-2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;;
-2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;;
-2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;;
-2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
-2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;;
-2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;;
-2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;;
-2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;;
-2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;;
-219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;;
-219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;;
-219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;;
-219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;;
-219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;;
-219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;;
-21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;;
-21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;;
-21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;;
-21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;;
-21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;;
-21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;;
-21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;;
-21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;;
-21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;;
-21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;;
-21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;;
-21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;;
-21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;;
-21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;;
-21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;;
-21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;;
-21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;;
-21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;;
-21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;;
-21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;;
-21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;;
-21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;;
-21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;;
-21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;;
-21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;;
-21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;;
-21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;;
-21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;;
-21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;;
-21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;;
-21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;;
-21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;;
-21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;;
-21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;;
-21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;;
-21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;;
-21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;;
-21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;;
-21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;;
-21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;;
-21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;;
-21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;;
-21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;;
-21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;;
-21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;;
-21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;;
-21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;;
-21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;;
-21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;;
-21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;;
-21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;;
-21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;;
-21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;;
-21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;;
-21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;;
-21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;;
-21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;;
-21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;;
-21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;;
-21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;;
-21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;;
-21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;;
-21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;;
-21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;;
-21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;;
-21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;;
-21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;;
-21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;;
-21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;;
-21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;;
-21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;;
-21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
-21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;;
-21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;;
-21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;;
-21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;;
-21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;;
-21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
-21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;;
-21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;;
-21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
-21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
-21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
-21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;;
-2200;FOR ALL;Sm;0;ON;;;;;N;;;;;
-2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;;
-2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;;
-2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;;
-2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;;
-2205;EMPTY SET;Sm;0;ON;;;;;N;;;;;
-2206;INCREMENT;Sm;0;ON;;;;;N;;;;;
-2207;NABLA;Sm;0;ON;;;;;N;;;;;
-2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;;
-220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;;
-220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;;
-220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;;
-220E;END OF PROOF;Sm;0;ON;;;;;N;;;;;
-220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;;
-2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;;
-2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;;
-2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;;
-2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;;
-2214;DOT PLUS;Sm;0;ON;;;;;N;;;;;
-2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2216;SET MINUS;Sm;0;ON;;;;;Y;;;;;
-2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;;
-221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;;
-221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;;
-221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;;
-221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;;
-221E;INFINITY;Sm;0;ON;;;;;N;;;;;
-221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;;
-2220;ANGLE;Sm;0;ON;;;;;Y;;;;;
-2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;;
-2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;;
-2223;DIVIDES;Sm;0;ON;;;;;N;;;;;
-2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;;
-2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;;
-2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2229;INTERSECTION;Sm;0;ON;;;;;N;;;;;
-222A;UNION;Sm;0;ON;;;;;N;;;;;
-222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222C;DOUBLE INTEGRAL;Sm;0;ON;<compat> 222B 222B;;;;Y;;;;;
-222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
-222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
-2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 222E 222E 222E;;;;Y;;;;;
-2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2234;THEREFORE;Sm;0;ON;;;;;N;;;;;
-2235;BECAUSE;Sm;0;ON;;;;;N;;;;;
-2236;RATIO;Sm;0;ON;;;;;N;;;;;
-2237;PROPORTION;Sm;0;ON;;;;;N;;;;;
-2238;DOT MINUS;Sm;0;ON;;;;;N;;;;;
-2239;EXCESS;Sm;0;ON;;;;;Y;;;;;
-223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;;
-223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;;
-223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;;
-223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;;
-223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;;
-2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;;
-2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;;
-2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;;
-2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;;
-2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;;
-224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;;
-224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;;
-2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;;
-2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;;
-2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;;
-2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;;
-2259;ESTIMATES;Sm;0;ON;;;;;N;;;;;
-225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;;
-225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;;
-225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;;
-225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;;
-225E;MEASURED BY;Sm;0;ON;;;;;N;;;;;
-225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;;
-2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;;
-2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;;
-2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;;
-2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;;
-2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;;
-2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;;
-2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;;
-2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;;
-2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;;
-226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;;
-226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;;
-226C;BETWEEN;Sm;0;ON;;;;;N;;;;;
-226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;;
-226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;;
-226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;;
-2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;;
-2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;;
-2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;;
-2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;;
-2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;;
-2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;;
-2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;;
-2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;;
-2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;;
-2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;;
-227A;PRECEDES;Sm;0;ON;;;;;Y;;;;;
-227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;;
-2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;;
-2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;;
-2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;;
-2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;;
-2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;;
-2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;;
-2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;;
-228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;;
-228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;;
-228C;MULTISET;Sm;0;ON;;;;;Y;;;;;
-228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;;
-228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;;
-228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;;
-2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;;
-2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;;
-2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;;
-2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;;
-2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;;
-229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;;
-229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;;
-229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;;
-229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;;
-229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;;
-22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;;
-22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
-22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;;
-22A5;UP TACK;Sm;0;ON;;;;;N;;;;;
-22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;;
-22A7;MODELS;Sm;0;ON;;;;;Y;;;;;
-22A8;TRUE;Sm;0;ON;;;;;Y;;;;;
-22A9;FORCES;Sm;0;ON;;;;;Y;;;;;
-22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;;
-22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;;
-22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;;
-22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;;
-22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;;
-22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;;
-22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;;
-22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;;
-22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;;
-22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;;
-22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;;
-22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;;
-22BB;XOR;Sm;0;ON;;;;;N;;;;;
-22BC;NAND;Sm;0;ON;;;;;N;;;;;
-22BD;NOR;Sm;0;ON;;;;;N;;;;;
-22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;;
-22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;;
-22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;;
-22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;;
-22C8;BOWTIE;Sm;0;ON;;;;;N;;;;;
-22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;;
-22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;;
-22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;;
-22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;;
-22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;;
-22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;;
-22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;;
-22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;;
-22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;;
-22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;;
-22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;;
-22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;;
-22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;;
-22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;;
-22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;;
-22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;;
-22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;;
-22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;;
-22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;;
-22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;;
-22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;;
-22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;;
-22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;;
-22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;;
-22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;;
-22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;;
-22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;;
-22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;;
-22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;;
-22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;;
-2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;;
-2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;;
-2302;HOUSE;So;0;ON;;;;;N;;;;;
-2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;;
-2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;;
-2305;PROJECTIVE;So;0;ON;;;;;N;;;;;
-2306;PERSPECTIVE;So;0;ON;;;;;N;;;;;
-2307;WAVY LINE;So;0;ON;;;;;N;;;;;
-2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;;
-2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;;
-230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;;
-230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;;
-230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;;
-230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;;
-230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;;
-2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;;
-2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;;
-2312;ARC;So;0;ON;;;;;N;;;;;
-2313;SEGMENT;So;0;ON;;;;;N;;;;;
-2314;SECTOR;So;0;ON;;;;;N;;;;;
-2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;;
-2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;;
-2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;;
-2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;;
-2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;;
-231A;WATCH;So;0;ON;;;;;N;;;;;
-231B;HOURGLASS;So;0;ON;;;;;N;;;;;
-231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;;
-231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;;
-231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;;
-231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;;
-2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2322;FROWN;So;0;ON;;;;;N;;;;;
-2323;SMILE;So;0;ON;;;;;N;;;;;
-2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;;
-2325;OPTION KEY;So;0;ON;;;;;N;;;;;
-2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;;
-2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;;
-2328;KEYBOARD;So;0;ON;;;;;N;;;;;
-2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;;
-232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;;
-232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;;
-232C;BENZENE RING;So;0;ON;;;;;N;;;;;
-232D;CYLINDRICITY;So;0;ON;;;;;N;;;;;
-232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;;
-232F;SYMMETRY;So;0;ON;;;;;N;;;;;
-2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;;
-2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;;
-2332;CONICAL TAPER;So;0;ON;;;;;N;;;;;
-2333;SLOPE;So;0;ON;;;;;N;;;;;
-2334;COUNTERBORE;So;0;ON;;;;;N;;;;;
-2335;COUNTERSINK;So;0;ON;;;;;N;;;;;
-2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;;
-2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;;
-2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;;
-2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;;
-233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;;
-233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;;
-233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;;
-233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;;
-233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;;
-233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;;
-2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;;
-2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;;
-2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;;
-2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;;
-2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;;
-2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;;
-2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;;
-2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;;
-2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;;
-2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;;
-234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;;
-234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;;
-234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;;
-234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;;
-234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;;
-234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;;
-2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;;
-2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;;
-2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;;
-2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;;
-2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;;
-2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;;
-2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;;
-2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;;
-2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;;
-2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;;
-235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;;
-235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;;
-235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;;
-235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;;
-235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;;
-235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;;
-2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;;
-2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;;
-2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;;
-2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;;
-2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;;
-2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;;
-2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;;
-2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;;
-2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;;
-2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;;
-236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;;
-236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;;
-236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;;
-236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;;
-236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;;
-236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;;
-2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;;
-2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;;
-2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;;
-2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;;
-2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;;
-2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;;
-2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;;
-2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;;
-2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;;
-2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;;
-237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;;
-237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;;
-237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;;
-237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;;
-237E;BELL SYMBOL;So;0;ON;;;;;N;;;;;
-237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;;
-2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;;
-2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;;
-2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;;
-2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;;
-2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;;
-2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;;
-2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2388;HELM SYMBOL;So;0;ON;;;;;N;;;;;
-2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;;;;
-238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;;
-238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;;
-238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;;
-238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;;
-238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;;
-238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;;
-2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;;
-2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;;
-2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;;
-2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;;
-2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;;
-2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;;
-2398;NEXT PAGE;So;0;ON;;;;;N;;;;;
-2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;;
-239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
-239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;;
-23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
-23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
-23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
-23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;;
-23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
-23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;;
-23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
-23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;;
-23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;;
-23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;;
-23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;;
-23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;;
-23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;;
-23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
-23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;;
-23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;;
-23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;;
-23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
-23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;;
-23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;;
-23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;;
-23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
-23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;;
-23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;;
-23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;;
-23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;;
-23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;;
-23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;;
-23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;;
-23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
-23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
-23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;;
-23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;;
-23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
-23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;;
-23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;;
-23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;;
-23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;;
-23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;;
-23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;;
-23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;;
-23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;;
-23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;;
-23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;;
-23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;;
-23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;;
-23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;;
-23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;;
-23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;;
-23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;;
-23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;;
-23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;;
-23DA;EARTH GROUND;So;0;ON;;;;;N;;;;;
-23DB;FUSE;So;0;ON;;;;;N;;;;;
-23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;;;;
-23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;;
-23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;;
-23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;;
-23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;
-23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;
-23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;;
-23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;;
-23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;;
-23E5;FLATNESS;So;0;ON;;;;;N;;;;;
-23E6;AC CURRENT;So;0;ON;;;;;N;;;;;
-23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;;
-23E8;DECIMAL EXPONENT SYMBOL;So;0;ON;;;;;N;;;;;
-2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;;
-2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;;
-2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;;
-2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;;
-2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;;
-2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;;
-2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;;
-2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;;
-2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;;
-2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;;
-240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;;
-240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;;
-240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;;
-240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;;
-240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;;
-240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;;
-2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;;
-2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;;
-2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;;
-2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;;
-2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;;
-2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;;
-2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;;
-2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;;
-2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;;
-2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;;
-241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;;
-241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;;
-241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;;
-241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;;
-241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;;
-241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;;
-2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;;
-2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;;
-2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;;
-2423;OPEN BOX;So;0;ON;;;;;N;;;;;
-2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;;
-2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;;
-2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;;
-2440;OCR HOOK;So;0;ON;;;;;N;;;;;
-2441;OCR CHAIR;So;0;ON;;;;;N;;;;;
-2442;OCR FORK;So;0;ON;;;;;N;;;;;
-2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;;
-2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;;
-2445;OCR BOW TIE;So;0;ON;;;;;N;;;;;
-2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;;
-2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;;
-2448;OCR DASH;So;0;ON;;;;;N;;;;;
-2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;;
-244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;;
-2460;CIRCLED DIGIT ONE;No;0;ON;<circle> 0031;;1;1;N;;;;;
-2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
-2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
-2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
-2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
-2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
-2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
-2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
-2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
-2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
-246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
-246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
-246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
-246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
-246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
-246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
-2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
-2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
-2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
-2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
-2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
-2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
-2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
-2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
-2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
-2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
-247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
-247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
-247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
-247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
-247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
-247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
-2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
-2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
-2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
-2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
-2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
-2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
-2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
-2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
-2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
-2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
-248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
-248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
-248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
-248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
-248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
-248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
-2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
-2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
-2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
-2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
-2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
-2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
-2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
-2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
-2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
-2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
-249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
-249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
-249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
-249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
-249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
-249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
-24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
-24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
-24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
-24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
-24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
-24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
-24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
-24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
-24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
-24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
-24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
-24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
-24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
-24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
-24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
-24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
-24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
-24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
-24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
-24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
-24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
-24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
-24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
-24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
-24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
-24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
-24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
-24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
-24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
-24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
-24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
-24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
-24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
-24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
-24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
-24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
-24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
-24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
-24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
-24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
-24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
-24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
-24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
-24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
-24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
-24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
-24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
-24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
-24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
-24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
-24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
-24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
-24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
-24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
-24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
-24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
-24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
-24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
-24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
-24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
-24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
-24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
-24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
-24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
-24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
-24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
-24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
-24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
-24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
-24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
-24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
-24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
-24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
-24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
-24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 0030;;0;0;N;;;;;
-24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;;
-24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;;
-24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;;
-24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;;
-24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;;
-24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;;
-24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;;
-24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;;
-24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;;
-24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;;
-24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;;
-24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;;
-24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;;
-24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;;
-24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;;
-24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;;
-24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;;
-24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;;
-24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;;
-24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;;
-24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;;
-2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;;
-2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;;
-2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;;
-2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;;
-2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;;
-2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;;
-2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;;
-2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;;
-2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;;
-2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;;
-250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;;
-250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;;
-250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;;
-250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;;
-250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;;
-250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;;
-2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;;
-2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;;
-2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;;
-2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;;
-2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;;
-2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;;
-2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;;
-2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;;
-2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;;
-2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;;
-251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;;
-251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;;
-251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;;
-251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;;
-251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;;
-251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;;
-2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;;
-2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;;
-2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;;
-2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;;
-2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;;
-2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;;
-2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;;
-2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;;
-2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;;
-2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;;
-252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;;
-252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;;
-252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;;
-252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;;
-252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;;
-252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;;
-2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;;
-2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;;
-2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;;
-2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;;
-2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;;
-2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;;
-2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;;
-2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;;
-2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;;
-2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;;
-253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;;
-253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;;
-253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;;
-253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;;
-253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;;
-253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;;
-2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;;
-2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;;
-2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;;
-2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;;
-2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;;
-2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;;
-2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;;
-2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;;
-2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;;
-2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;;
-254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;;
-254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;;
-254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;;
-254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;;
-254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;;
-254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;;
-2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;;
-2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;;
-2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;;
-2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;;
-2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;;
-2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;;
-2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;;
-2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;;
-2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;;
-2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;;
-255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;;
-255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;;
-255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;;
-255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;;
-255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;;
-255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;;
-2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;;
-2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;;
-2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;;
-2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;;
-2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;;
-2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;;
-2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;;
-2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;;
-2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;;
-2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;;
-256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;;
-256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;;
-256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;;
-256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;;
-256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;;
-256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;;
-2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;;
-2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;;
-2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;;
-2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;;
-2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;;
-2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;;
-2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;;
-2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;;
-2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;;
-2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;;
-257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;;
-257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;;
-257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;;
-257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;;
-257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;;
-257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;;
-2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;;
-2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
-2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;;
-2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;;
-2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-2588;FULL BLOCK;So;0;ON;;;;;N;;;;;
-2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;;
-258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;;
-258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;;
-258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;;
-258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;;
-2591;LIGHT SHADE;So;0;ON;;;;;N;;;;;
-2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;;
-2593;DARK SHADE;So;0;ON;;;;;N;;;;;
-2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;;
-2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;;
-2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;;
-2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;;
-2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
-259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;;
-259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;;
-259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;;
-25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;;
-25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;;
-25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;;
-25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;;
-25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;;
-25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;;
-25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;;
-25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;;
-25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;;
-25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;;
-25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;;
-25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;;
-25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;;
-25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;;
-25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;;
-25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;;
-25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;;
-25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;;
-25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;;
-25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;;
-25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;;
-25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;;
-25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;;
-25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;;
-25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;;
-25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;;
-25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;;
-25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;;
-25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;;
-25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;;
-25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;;
-25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;;
-25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;;
-25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;;
-25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
-25C9;FISHEYE;So;0;ON;;;;;N;;;;;
-25CA;LOZENGE;So;0;ON;;;;;N;;;;;
-25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;;
-25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;;
-25CE;BULLSEYE;So;0;ON;;;;;N;;;;;
-25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;;
-25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;;
-25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;;
-25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;;
-25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;;
-25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
-25E6;WHITE BULLET;So;0;ON;;;;;N;;;;;
-25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;;
-25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;;
-25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;;
-25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;;
-25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;;
-25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;;
-25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;;
-25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
-25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;;
-25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
-25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;;
-25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-2601;CLOUD;So;0;ON;;;;;N;;;;;
-2602;UMBRELLA;So;0;ON;;;;;N;;;;;
-2603;SNOWMAN;So;0;ON;;;;;N;;;;;
-2604;COMET;So;0;ON;;;;;N;;;;;
-2605;BLACK STAR;So;0;ON;;;;;N;;;;;
-2606;WHITE STAR;So;0;ON;;;;;N;;;;;
-2607;LIGHTNING;So;0;ON;;;;;N;;;;;
-2608;THUNDERSTORM;So;0;ON;;;;;N;;;;;
-2609;SUN;So;0;ON;;;;;N;;;;;
-260A;ASCENDING NODE;So;0;ON;;;;;N;;;;;
-260B;DESCENDING NODE;So;0;ON;;;;;N;;;;;
-260C;CONJUNCTION;So;0;ON;;;;;N;;;;;
-260D;OPPOSITION;So;0;ON;;;;;N;;;;;
-260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;;
-260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;;
-2610;BALLOT BOX;So;0;ON;;;;;N;;;;;
-2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;;
-2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;;
-2613;SALTIRE;So;0;ON;;;;;N;;;;;
-2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;;
-2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;;
-2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
-2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
-2618;SHAMROCK;So;0;ON;;;;;N;;;;;
-2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;;
-261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;;
-261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;;
-2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;;
-2621;CAUTION SIGN;So;0;ON;;;;;N;;;;;
-2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;;
-2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;;
-2624;CADUCEUS;So;0;ON;;;;;N;;;;;
-2625;ANKH;So;0;ON;;;;;N;;;;;
-2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;;
-2627;CHI RHO;So;0;ON;;;;;N;;;;;
-2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;;
-2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;;
-262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;;
-262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;;
-262C;ADI SHAKTI;So;0;ON;;;;;N;;;;;
-262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;;
-262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;;
-262F;YIN YANG;So;0;ON;;;;;N;;;;;
-2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;;
-2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;;
-2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;;
-2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;;
-2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;;
-2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;;
-2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;;
-2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;;
-2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;;
-263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;;
-263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;;
-263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;;
-263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;;
-263F;MERCURY;So;0;ON;;;;;N;;;;;
-2640;FEMALE SIGN;So;0;ON;;;;;N;;;;;
-2641;EARTH;So;0;ON;;;;;N;;;;;
-2642;MALE SIGN;So;0;ON;;;;;N;;;;;
-2643;JUPITER;So;0;ON;;;;;N;;;;;
-2644;SATURN;So;0;ON;;;;;N;;;;;
-2645;URANUS;So;0;ON;;;;;N;;;;;
-2646;NEPTUNE;So;0;ON;;;;;N;;;;;
-2647;PLUTO;So;0;ON;;;;;N;;;;;
-2648;ARIES;So;0;ON;;;;;N;;;;;
-2649;TAURUS;So;0;ON;;;;;N;;;;;
-264A;GEMINI;So;0;ON;;;;;N;;;;;
-264B;CANCER;So;0;ON;;;;;N;;;;;
-264C;LEO;So;0;ON;;;;;N;;;;;
-264D;VIRGO;So;0;ON;;;;;N;;;;;
-264E;LIBRA;So;0;ON;;;;;N;;;;;
-264F;SCORPIUS;So;0;ON;;;;;N;;;;;
-2650;SAGITTARIUS;So;0;ON;;;;;N;;;;;
-2651;CAPRICORN;So;0;ON;;;;;N;;;;;
-2652;AQUARIUS;So;0;ON;;;;;N;;;;;
-2653;PISCES;So;0;ON;;;;;N;;;;;
-2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;;
-2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;;
-2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;;
-2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;;
-2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;;
-265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;;
-265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;;
-265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;;
-265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;;
-265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;;
-265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;;
-2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;;
-2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;;
-2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;;
-2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;;
-2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;;
-2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;;
-2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;;
-2668;HOT SPRINGS;So;0;ON;;;;;N;;;;;
-2669;QUARTER NOTE;So;0;ON;;;;;N;;;;;
-266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;;
-266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;;
-266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;;
-266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;;
-266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;;
-266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;;
-2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;;
-2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
-2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;;;;
-2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;;
-2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;;
-2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;;
-2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;;
-2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;;
-2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;;
-267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;;
-267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;;
-267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
-267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;;
-267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;;
-267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;;
-2680;DIE FACE-1;So;0;ON;;;;;N;;;;;
-2681;DIE FACE-2;So;0;ON;;;;;N;;;;;
-2682;DIE FACE-3;So;0;ON;;;;;N;;;;;
-2683;DIE FACE-4;So;0;ON;;;;;N;;;;;
-2684;DIE FACE-5;So;0;ON;;;;;N;;;;;
-2685;DIE FACE-6;So;0;ON;;;;;N;;;;;
-2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;;
-2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;;
-2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;;
-2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;;
-268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;;
-268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;;
-268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;;
-268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;;
-268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;;
-268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;;
-2690;WHITE FLAG;So;0;ON;;;;;N;;;;;
-2691;BLACK FLAG;So;0;ON;;;;;N;;;;;
-2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;;
-2693;ANCHOR;So;0;ON;;;;;N;;;;;
-2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;;
-2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;;
-2696;SCALES;So;0;ON;;;;;N;;;;;
-2697;ALEMBIC;So;0;ON;;;;;N;;;;;
-2698;FLOWER;So;0;ON;;;;;N;;;;;
-2699;GEAR;So;0;ON;;;;;N;;;;;
-269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;;
-269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;;
-269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;;
-269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;;
-269F;THREE LINES CONVERGING LEFT;So;0;ON;;;;;N;;;;;
-26A0;WARNING SIGN;So;0;ON;;;;;N;;;;;
-26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;;
-26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;;
-26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;;
-26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;;
-26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
-26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
-26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;;
-26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
-26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;;
-26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;;
-26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;;
-26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;;
-26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;;
-26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;;
-26B0;COFFIN;So;0;ON;;;;;N;;;;;
-26B1;FUNERAL URN;So;0;ON;;;;;N;;;;;
-26B2;NEUTER;So;0;ON;;;;;N;;;;;
-26B3;CERES;So;0;ON;;;;;N;;;;;
-26B4;PALLAS;So;0;ON;;;;;N;;;;;
-26B5;JUNO;So;0;ON;;;;;N;;;;;
-26B6;VESTA;So;0;ON;;;;;N;;;;;
-26B7;CHIRON;So;0;ON;;;;;N;;;;;
-26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;
-26B9;SEXTILE;So;0;ON;;;;;N;;;;;
-26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;
-26BB;QUINCUNX;So;0;ON;;;;;N;;;;;
-26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;
-26BD;SOCCER BALL;So;0;ON;;;;;N;;;;;
-26BE;BASEBALL;So;0;ON;;;;;N;;;;;
-26BF;SQUARED KEY;So;0;ON;;;;;N;;;;;
-26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
-26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;
-26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
-26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;;
-26C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;;
-26C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;
-26C6;RAIN;So;0;ON;;;;;N;;;;;
-26C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;;
-26C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;;
-26C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
-26CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
-26CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;;
-26CC;CROSSING LANES;So;0;ON;;;;;N;;;;;
-26CD;DISABLED CAR;So;0;ON;;;;;N;;;;;
-26CF;PICK;So;0;ON;;;;;N;;;;;
-26D0;CAR SLIDING;So;0;ON;;;;;N;;;;;
-26D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;;
-26D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;;
-26D3;CHAINS;So;0;ON;;;;;N;;;;;
-26D4;NO ENTRY;So;0;ON;;;;;N;;;;;
-26D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
-26D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
-26D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
-26D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;;
-26D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;;
-26DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;;
-26DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
-26DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;;
-26DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;;
-26DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
-26DF;BLACK TRUCK;So;0;ON;;;;;N;;;;;
-26E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;;
-26E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;;
-26E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;;
-26E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;;
-26E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;;
-26EA;CHURCH;So;0;ON;;;;;N;;;;;
-26EB;CASTLE;So;0;ON;;;;;N;;;;;
-26EC;HISTORIC SITE;So;0;ON;;;;;N;;;;;
-26ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;;
-26EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;;
-26EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;;
-26F0;MOUNTAIN;So;0;ON;;;;;N;;;;;
-26F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;;
-26F2;FOUNTAIN;So;0;ON;;;;;N;;;;;
-26F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;;
-26F4;FERRY;So;0;ON;;;;;N;;;;;
-26F5;SAILBOAT;So;0;ON;;;;;N;;;;;
-26F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;;
-26F7;SKIER;So;0;ON;;;;;N;;;;;
-26F8;ICE SKATE;So;0;ON;;;;;N;;;;;
-26F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;;
-26FA;TENT;So;0;ON;;;;;N;;;;;
-26FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;;
-26FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;;
-26FD;FUEL PUMP;So;0;ON;;;;;N;;;;;
-26FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;;
-26FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;So;0;ON;;;;;N;;;;;
-2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;;
-2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;;
-2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;;
-2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;;
-2707;TAPE DRIVE;So;0;ON;;;;;N;;;;;
-2708;AIRPLANE;So;0;ON;;;;;N;;;;;
-2709;ENVELOPE;So;0;ON;;;;;N;;;;;
-270C;VICTORY HAND;So;0;ON;;;;;N;;;;;
-270D;WRITING HAND;So;0;ON;;;;;N;;;;;
-270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-270F;PENCIL;So;0;ON;;;;;N;;;;;
-2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;;
-2711;WHITE NIB;So;0;ON;;;;;N;;;;;
-2712;BLACK NIB;So;0;ON;;;;;N;;;;;
-2713;CHECK MARK;So;0;ON;;;;;N;;;;;
-2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;;
-2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;;
-2717;BALLOT X;So;0;ON;;;;;N;;;;;
-2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;;
-2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;;
-271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;;
-271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;;
-271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;;
-271D;LATIN CROSS;So;0;ON;;;;;N;;;;;
-271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;;
-271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;;
-2720;MALTESE CROSS;So;0;ON;;;;;N;;;;;
-2721;STAR OF DAVID;So;0;ON;;;;;N;;;;;
-2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;;
-2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
-272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;;
-272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;;
-272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;;
-272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;;
-272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;;
-2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;;
-2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;;
-2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;;
-2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;;
-2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;;
-273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;;
-273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;;
-273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;;
-2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;;
-2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;;
-2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;;
-2744;SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;;
-2747;SPARKLE;So;0;ON;;;;;N;;;;;
-2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;;
-2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;;
-274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;;
-274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;;
-274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;;
-2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;;
-2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;;
-2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;;
-2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;;
-275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;;
-2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;;
-2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;;
-2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;;
-2766;FLORAL HEART;So;0;ON;;;;;N;;;;;
-2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;;
-2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;;
-2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;;
-2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;;
-2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;;
-2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;;
-2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;;
-277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;;
-277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;;
-277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;;
-277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;;
-277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;;
-277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;;
-2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;;
-2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;;
-2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;;
-2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;;
-2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;;
-2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;;
-2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;;
-2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;;
-278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;;
-278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;;
-278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;;
-278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;;
-278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;;
-278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;;
-2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;;
-2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;;
-2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;;
-2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;;
-2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;;
-2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;;
-2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;;
-279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;;
-279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;;
-279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;;
-279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;;
-279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;;
-279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;;
-27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;;
-27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;;
-27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;;
-27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;;
-27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;;
-27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;;
-27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;;
-27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;;
-27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;;
-27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;;
-27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;;
-27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;;
-27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;;
-27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;;
-27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;;
-27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;;
-27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;;
-27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;;
-27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;;
-27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;;
-27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;;
-27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;;
-27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;;
-27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;;
-27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;;
-27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
-27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;;
-27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;;
-27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;;
-27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;;
-27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;;
-27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;;
-27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;
-27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;;
-27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;;
-27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;;
-27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
-27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;;
-27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
-27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;;
-27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;;
-27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;;
-27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;;
-27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;;
-27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;;
-27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;;
-27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;;
-27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;;
-27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;;
-27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;;
-27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;;
-27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;;
-27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
-27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
-27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
-27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
-27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
-27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
-27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
-27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
-27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;;
-27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;;
-27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
-2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;;
-2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;;
-2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;;
-2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;;
-2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;;
-2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;;
-2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;;
-2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;;
-2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;;
-2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;;
-280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;;
-280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;;
-280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;;
-280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;;
-280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;;
-280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;;
-2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;;
-2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;;
-2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;;
-2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;;
-2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;;
-2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;;
-2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;;
-2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;;
-2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;;
-2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;;
-281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;;
-281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;;
-281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;;
-281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;;
-281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;;
-281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;;
-2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;;
-2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;;
-2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;;
-2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;;
-2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;;
-2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;;
-2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;;
-2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;;
-2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;;
-2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;;
-282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;;
-282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;;
-282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;;
-282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;;
-282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;;
-282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;;
-2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;;
-2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;;
-2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;;
-2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;;
-2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;;
-2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;;
-2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;;
-2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;;
-2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;;
-2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;;
-283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;;
-283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;;
-283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;;
-283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;;
-283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;;
-283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;;
-2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;;
-2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;;
-2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;;
-2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;;
-2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;;
-2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;;
-2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;;
-2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;;
-2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;;
-2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;;
-284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;;
-284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;;
-284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;;
-284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;;
-284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;;
-284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;;
-2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;;
-2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;;
-2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;;
-2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;;
-2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;;
-2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;;
-2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;;
-2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;;
-2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;;
-2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;;
-285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;;
-285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;;
-285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;;
-285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;;
-285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;;
-285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;;
-2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;;
-2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;;
-2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;;
-2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;;
-2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;;
-2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;;
-2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;;
-2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;;
-2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;;
-2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;;
-286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;;
-286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;;
-286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;;
-286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;;
-286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;;
-286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;;
-2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;;
-2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;;
-2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;;
-2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;;
-2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;;
-2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;;
-2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;;
-2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;;
-2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;;
-2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;;
-287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;;
-287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;;
-287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;;
-287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;;
-287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;;
-287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;;
-2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;;
-2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;;
-2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;;
-2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;;
-2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;;
-2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;;
-2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;;
-2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;;
-2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;;
-2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;;
-288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;;
-288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;;
-288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;;
-288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;;
-288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;;
-288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;;
-2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;;
-2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;;
-2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;;
-2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;;
-2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;;
-2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;;
-2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;;
-2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;;
-2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;;
-2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;;
-289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;;
-289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;;
-289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;;
-289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;;
-289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;;
-289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;;
-28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;;
-28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;;
-28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;;
-28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;;
-28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;;
-28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;;
-28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;;
-28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;;
-28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;;
-28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;;
-28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;;
-28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;;
-28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;;
-28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;;
-28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;;
-28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;;
-28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;;
-28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;;
-28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;;
-28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;;
-28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;;
-28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;;
-28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;;
-28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;;
-28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;;
-28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;;
-28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;;
-28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;;
-28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;;
-28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;;
-28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;;
-28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;;
-28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;;
-28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;;
-28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;;
-28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;;
-28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;;
-28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;;
-28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;;
-28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;;
-28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;;
-28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;;
-28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;;
-28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;;
-28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;;
-28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;;
-28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;;
-28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;;
-28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;;
-28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;;
-28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;;
-28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;;
-28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;;
-28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;;
-28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;;
-28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;;
-28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;;
-28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;;
-28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;;
-28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;;
-28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;;
-28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;;
-28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;;
-28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;;
-28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;;
-28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;;
-28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;;
-28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;;
-28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;;
-28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;;
-28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;;
-28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;;
-28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;;
-28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;;
-28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;;
-28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;;
-28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;;
-28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;;
-28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;;
-28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;;
-28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;;
-28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;;
-28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;;
-28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;;
-28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;;
-28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;;
-28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;;
-28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;;
-28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;;
-28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;;
-28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;;
-28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;;
-28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;;
-28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;;
-28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;;
-28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;;
-2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
-290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;;
-290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
-2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
-2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;;
-2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
-2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;;
-291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;;
-2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;;
-292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;;
-292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;;
-2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;;
-2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;;
-2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;;
-2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
-2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;;
-2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;;
-2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;;
-293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;;
-293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;;
-2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;;
-2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
-2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;;
-2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
-2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
-294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
-294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
-294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
-294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;;
-294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;;
-2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;;
-2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;;
-2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
-2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;;
-2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
-2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;;
-2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
-2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;;
-2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
-2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;;
-295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
-295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;;
-295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
-295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;;
-295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
-295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;;
-2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
-2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;;
-2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
-2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;;
-2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;;
-296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
-296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
-296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;;
-296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;;
-296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;;
-2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;;
-2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
-2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
-2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;;
-2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;;
-297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;;
-297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;;
-297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;;
-297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;;
-2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;;
-2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;;
-2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;;
-2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;;
-2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;;
-2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
-2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
-2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;;
-2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;;
-2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;;
-298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;;
-298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;;
-298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;;
-298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;;
-298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;;
-298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;;
-2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;;
-2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;;
-2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;;
-2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
-2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
-2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;;
-2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;;
-2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
-2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
-2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;;
-299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;;
-299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
-299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;;
-299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;;
-299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;;
-299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;;
-29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;;
-29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
-29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;;
-29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;;
-29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;;
-29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;;
-29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;;
-29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;;
-29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;;
-29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;;
-29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;;
-29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;;
-29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;;
-29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;;
-29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;;
-29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
-29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;;
-29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;;
-29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;;
-29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;;
-29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;;
-29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;;
-29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;;
-29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;;
-29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
-29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;;
-29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
-29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;;
-29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;;
-29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;;
-29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;;
-29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;;
-29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;;
-29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;;
-29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;;
-29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;;
-29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;;
-29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
-29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
-29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;;
-29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;;
-29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;;
-29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;;
-29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;;
-29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;;
-29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;;
-29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;;
-29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
-29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
-29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;;
-29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;;
-29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;;
-29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;;
-29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
-29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;;
-29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
-29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;;
-29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;;
-29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;;
-29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;;
-29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;;
-29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;;
-29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;;
-29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;;
-29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
-29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;;
-29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;;
-29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;;
-29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;;
-29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;;
-29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;;
-29FE;TINY;Sm;0;ON;;;;;N;;;;;
-29FF;MINY;Sm;0;ON;;;;;N;;;;;
-2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;;
-2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;;
-2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;;
-2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;;
-2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON;<compat> 222B 222B 222B 222B;;;;Y;;;;;
-2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;;
-2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;;
-2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;;
-2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;;
-2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;;
-2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
-2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;;
-2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;;
-2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;;
-2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;;
-2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;;
-2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;;
-2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;;
-2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-2A1D;JOIN;Sm;0;ON;;;;;N;;;;;
-2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;;
-2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;;
-2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;;
-2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
-2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;;
-2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;;
-2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
-2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;;
-2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
-2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;;
-2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;;
-2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
-2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;;
-2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;;
-2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;;
-2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;;
-2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;;
-2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;;
-2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;;
-2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;;
-2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;;
-2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;;
-2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;;
-2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;;
-2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;;
-2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
-2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;;
-2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;;
-2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;;
-2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;;
-2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;;
-2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;;
-2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;;
-2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
-2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;;
-2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
-2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;;
-2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;;
-2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
-2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;;
-2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;;
-2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;;
-2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;;
-2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;;
-2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;;
-2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;;
-2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;;
-2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;;
-2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2A74;DOUBLE COLON EQUAL;Sm;0;ON;<compat> 003A 003A 003D;;;;Y;;;;;
-2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
-2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D 003D;;;;N;;;;;
-2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;;
-2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;;
-2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;;
-2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;;
-2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;;
-2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;;
-2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;;
-2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;;
-2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;;
-2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
-2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;;
-2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;;
-2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;;
-2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;;
-2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;;
-2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;;
-2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;;
-2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
-2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;;
-2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;;
-2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;;
-2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;;
-2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;;
-2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;;
-2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
-2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;;
-2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;;
-2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;;
-2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;;
-2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;;
-2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;;
-2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;;
-2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;;;;
-2ADD;NONFORKING;Sm;0;ON;;;;;N;;;;;
-2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;;
-2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
-2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;;
-2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;;
-2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;;
-2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;;
-2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;;
-2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;;
-2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;;
-2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;;
-2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;;
-2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
-2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;;
-2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;;
-2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;;
-2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
-2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;;
-2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;;
-2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
-2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;;
-2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;;
-2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;;
-2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;;
-2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;;
-2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;;
-2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;;
-2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;;
-2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;;
-2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;;
-2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
-2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
-2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;;
-2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;;
-2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
-2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
-2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;;
-2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;;
-2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;;
-2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;;
-2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;;
-2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;;
-2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;
-2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;
-2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
-2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
-2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;;
-2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;;
-2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;;
-2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;;
-2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;;
-2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;
-2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
-2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
-2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
-2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
-2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
-2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;
-2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;
-2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
-2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
-2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
-2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
-2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
-2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
-2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
-2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
-2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
-2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
-2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
-2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
-2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
-2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
-2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;
-2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;
-2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;
-2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
-2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
-2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
-2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
-2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
-2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
-2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;
-2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;
-2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;
-2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
-2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
-2B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;;
-2B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;;
-2B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;;
-2B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;;
-2B59;HEAVY CIRCLED SALTIRE;So;0;ON;;;;;N;;;;;
-2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30;
-2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31;
-2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32;
-2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33;
-2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34;
-2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35;
-2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36;
-2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37;
-2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38;
-2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39;
-2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A;
-2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B;
-2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C;
-2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D;
-2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E;
-2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F;
-2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40;
-2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41;
-2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42;
-2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43;
-2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44;
-2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45;
-2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46;
-2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47;
-2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48;
-2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49;
-2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A;
-2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B;
-2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C;
-2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D;
-2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E;
-2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F;
-2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50;
-2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51;
-2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52;
-2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53;
-2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54;
-2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55;
-2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56;
-2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57;
-2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58;
-2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59;
-2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A;
-2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B;
-2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
-2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
-2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
-2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
-2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
-2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
-2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03
-2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04
-2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05
-2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06
-2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07
-2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08
-2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09
-2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A
-2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B
-2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C
-2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D
-2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E
-2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F
-2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10
-2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11
-2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12
-2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13
-2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14
-2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15
-2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16
-2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17
-2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18
-2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19
-2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A
-2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B
-2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C
-2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D
-2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E
-2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F
-2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20
-2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21
-2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22
-2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23
-2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24
-2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25
-2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26
-2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27
-2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28
-2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29
-2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A
-2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B
-2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
-2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
-2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
-2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
-2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
-2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
-2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D;
-2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D;
-2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A
-2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E
-2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68;
-2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67
-2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A;
-2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69
-2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C;
-2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B
-2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;
-2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;
-2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;
-2C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252;
-2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;
-2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;
-2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72
-2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;;
-2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76;
-2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75
-2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;;
-2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;
-2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;
-2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;
-2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;
-2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;;
-2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
-2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F;
-2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240;
-2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81;
-2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80
-2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83;
-2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82
-2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85;
-2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84
-2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87;
-2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86
-2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89;
-2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88
-2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B;
-2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A
-2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D;
-2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C
-2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F;
-2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E
-2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91;
-2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90
-2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93;
-2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92
-2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95;
-2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94
-2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97;
-2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96
-2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99;
-2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98
-2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B;
-2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A
-2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D;
-2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C
-2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F;
-2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E
-2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1;
-2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0
-2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3;
-2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2
-2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5;
-2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4
-2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7;
-2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6
-2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9;
-2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8
-2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB;
-2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA
-2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD;
-2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC
-2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF;
-2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE
-2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1;
-2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0
-2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3;
-2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2
-2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5;
-2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4
-2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7;
-2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6
-2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9;
-2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8
-2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB;
-2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA
-2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD;
-2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC
-2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF;
-2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE
-2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1;
-2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0
-2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3;
-2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2
-2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5;
-2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4
-2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7;
-2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6
-2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9;
-2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8
-2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB;
-2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA
-2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD;
-2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC
-2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF;
-2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE
-2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1;
-2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0
-2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3;
-2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2
-2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5;
-2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4
-2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7;
-2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6
-2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9;
-2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8
-2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB;
-2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA
-2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD;
-2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC
-2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF;
-2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE
-2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1;
-2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0
-2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3;
-2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2
-2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;;
-2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;;
-2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;;
-2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;;
-2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;;
-2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;;
-2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;;
-2CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC;
-2CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB
-2CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE;
-2CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED
-2CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;;
-2CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;;
-2CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;N;;;;;
-2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;;
-2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
-2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;;
-2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;;
-2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;;
-2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;;
-2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;;
-2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;;10A0;;10A0
-2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1
-2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2
-2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3
-2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4
-2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5
-2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6
-2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7
-2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8
-2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9
-2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA
-2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB
-2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC
-2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD
-2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE
-2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF
-2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0
-2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1
-2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2
-2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3
-2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4
-2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5
-2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6
-2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7
-2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8
-2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9
-2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA
-2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB
-2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC
-2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD
-2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE
-2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF
-2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0
-2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1
-2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2
-2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3
-2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4
-2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;10C5;;10C5
-2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;;
-2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;;
-2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;;
-2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;;
-2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;;
-2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;;
-2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;;
-2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;;
-2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;;
-2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;;
-2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;;
-2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;;
-2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;;
-2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;;
-2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;;
-2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;;
-2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;;;;
-2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;;
-2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;;
-2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;;
-2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;;
-2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;;
-2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;;
-2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;;
-2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;;
-2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;;
-2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;;
-2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;;
-2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;;
-2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;;
-2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;;
-2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;;
-2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;;
-2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;;
-2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;;
-2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;;;;
-2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;;
-2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;;
-2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;;
-2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;;
-2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;;;;
-2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;;
-2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;;
-2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;;
-2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;;
-2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;;
-2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;;
-2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;;
-2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;;
-2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;;
-2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;;
-2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;;
-2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;;;;
-2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
-2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;;
-2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;;
-2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;;
-2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;;
-2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;;
-2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;;
-2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;;
-2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;;
-2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;;
-2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;;
-2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;;
-2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;;
-2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;;
-2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;;
-2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;;
-2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;;
-2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;;
-2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;;
-2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;;
-2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;;
-2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;;
-2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;;
-2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;;
-2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;;
-2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
-2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
-2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
-2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;;
-2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;;
-2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
-2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
-2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;;
-2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;;
-2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;;
-2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;;
-2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;;
-2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;;
-2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;;
-2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
-2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
-2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
-2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;;
-2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;;
-2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
-2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
-2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;;
-2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;;
-2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;;
-2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;;
-2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;;
-2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;;
-2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;;
-2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;;
-2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;;
-2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;;
-2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;;
-2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;;
-2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;;
-2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;;
-2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;;
-2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;;
-2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;;
-2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;;
-2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;;
-2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;;
-2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;;
-2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;;
-2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;;
-2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;;
-2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;;
-2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;;
-2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;;
-2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;;
-2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;;
-2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;;
-2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;;
-2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;;
-2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;;
-2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;;
-2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;;
-2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;
-2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;
-2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;
-2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;
-2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;
-2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;
-2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;
-2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;
-2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;
-2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;
-2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;
-2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;
-2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;
-2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;
-2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;
-2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;
-2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;
-2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;
-2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
-2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;
-2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
-2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;
-2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;
-2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;
-2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;
-2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;
-2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;
-2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
-2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;
-2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;
-2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
-2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;;
-2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
-2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;;
-2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
-2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;;
-2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;;
-2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;;
-2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;;
-2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
-2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
-2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;;
-2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;;
-2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;;
-2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;;
-2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;;
-2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;;
-2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
-2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;
-2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;
-2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;
-2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;
-2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
-2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
-2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;
-2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;
-2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;
-2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;
-2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
-2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
-2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
-2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
-2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;
-2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;
-2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
-2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
-2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;
-2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;
-2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;
-2E30;RING POINT;Po;0;ON;;;;;N;;;;;
-2E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;;
-2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
-2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
-2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
-2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;;
-2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;;
-2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;;
-2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;;
-2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;;
-2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;;
-2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;;
-2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;;
-2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;;
-2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;;
-2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;;
-2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;;
-2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;;
-2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;;
-2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;;
-2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;;
-2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;;
-2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;;
-2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;;
-2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;;
-2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;;
-2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;;
-2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;;
-2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;;
-2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;;
-2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;;
-2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;;
-2E9F;CJK RADICAL MOTHER;So;0;ON;<compat> 6BCD;;;;N;;;;;
-2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;;
-2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;;
-2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;;
-2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;;
-2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;;
-2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;;
-2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;;
-2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;;
-2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;;
-2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;;
-2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;;
-2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;;
-2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;;
-2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;;
-2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;;
-2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;;
-2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;;
-2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;;
-2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;;
-2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;;
-2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;;
-2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;;
-2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;;
-2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;;
-2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;;
-2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;;
-2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;;
-2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;;
-2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;;
-2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;;
-2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;;
-2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;;
-2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;;
-2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;;
-2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;;
-2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;;
-2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;;
-2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;;
-2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;;
-2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;;
-2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;;
-2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;;
-2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;;
-2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;;
-2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;;
-2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;;
-2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;;
-2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;;
-2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;;
-2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;;
-2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;;
-2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;;
-2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;;
-2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;;
-2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;;
-2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;;
-2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;;
-2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;;
-2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;;
-2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;;
-2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;;
-2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;;
-2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;;
-2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;;
-2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;;
-2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;;
-2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;;
-2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;;
-2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;;
-2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;;
-2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;;
-2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;;
-2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;;
-2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;;
-2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;;
-2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;;
-2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;;
-2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;;
-2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;;
-2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;;
-2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON;<compat> 9F9F;;;;N;;;;;
-2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
-2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
-2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
-2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
-2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
-2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
-2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
-2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
-2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
-2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
-2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
-2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
-2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
-2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
-2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
-2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
-2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
-2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
-2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
-2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
-2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
-2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
-2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
-2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
-2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
-2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
-2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
-2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
-2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
-2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
-2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
-2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
-2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
-2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
-2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
-2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
-2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
-2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
-2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
-2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
-2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
-2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
-2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
-2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
-2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
-2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
-2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
-2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
-2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
-2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
-2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
-2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
-2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
-2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
-2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
-2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
-2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
-2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
-2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
-2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
-2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
-2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
-2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
-2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
-2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
-2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
-2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
-2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
-2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
-2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
-2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
-2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
-2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
-2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
-2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
-2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
-2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
-2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
-2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
-2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
-2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
-2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
-2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
-2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
-2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
-2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
-2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
-2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
-2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
-2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
-2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
-2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
-2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
-2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
-2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
-2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
-2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
-2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
-2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
-2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
-2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
-2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
-2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
-2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
-2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
-2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
-2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
-2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
-2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
-2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
-2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
-2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
-2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
-2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
-2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
-2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
-2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
-2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
-2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
-2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
-2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
-2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
-2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
-2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
-2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
-2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
-2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
-2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
-2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
-2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
-2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
-2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
-2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
-2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
-2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
-2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
-2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
-2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
-2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
-2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
-2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
-2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
-2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
-2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
-2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
-2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
-2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
-2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
-2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
-2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
-2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
-2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
-2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
-2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
-2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
-2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
-2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
-2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
-2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
-2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
-2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
-2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
-2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
-2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
-2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
-2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
-2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
-2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
-2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
-2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
-2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
-2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
-2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
-2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
-2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
-2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
-2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
-2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
-2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
-2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
-2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
-2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
-2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
-2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
-2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
-2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
-2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
-2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
-2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
-2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
-2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
-2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
-2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
-2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
-2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
-2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
-2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
-2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
-2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
-2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
-2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
-2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
-2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
-2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
-2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
-2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
-2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
-2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
-2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
-2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
-2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
-2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
-2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
-2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 9FA0;;;;N;;;;;
-2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;;
-2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;;
-2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;;
-2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;;
-2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;;
-2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;;
-2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;;
-2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;;
-2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;;
-2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;;
-2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;;
-2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;;
-3000;IDEOGRAPHIC SPACE;Zs;0;WS;<wide> 0020;;;;N;;;;;
-3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;;
-3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;;
-3003;DITTO MARK;Po;0;ON;;;;;N;;;;;
-3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;;
-3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
-3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;;
-3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;;
-3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;;
-3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;;
-300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;;
-300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;;
-300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;;
-300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;;
-300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;;
-300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;;
-3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;;
-3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;;
-3012;POSTAL MARK;So;0;ON;;;;;N;;;;;
-3013;GETA MARK;So;0;ON;;;;;N;;;;;
-3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;;
-3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;;
-3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;;
-3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;;
-3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;;
-3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;;
-301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;;
-301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;;
-301C;WAVE DASH;Pd;0;ON;;;;;N;;;;;
-301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;;
-301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
-3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;;
-3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;;
-3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;;
-3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;;
-3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;;
-3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;;
-3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;;
-3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;;
-3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;;
-3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;;
-302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;;
-302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;;
-302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;;
-302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;;
-302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;;
-3030;WAVY DASH;Pd;0;ON;;;;;N;;;;;
-3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;;
-3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;;
-3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;;
-3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;;
-3036;CIRCLED POSTAL MARK;So;0;ON;<compat> 3012;;;;N;;;;;
-3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
-3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
-3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
-303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 5345;;;30;N;;;;;
-303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
-303C;MASU MARK;Lo;0;L;;;;;N;;;;;
-303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;;
-303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;;
-303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;;
-3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;;
-3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;;
-3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;;
-3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;;
-3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;;
-304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;;
-304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;;
-304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;;
-304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;;
-304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;;
-3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;;
-3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;;
-3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;;
-3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;;
-3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;;
-3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;;
-3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;;
-3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;;
-3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;;
-3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;;
-305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;;
-305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;;
-305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;;
-305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;;
-305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;;
-305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;;
-3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;;
-3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;;
-3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;;
-3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;;
-3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;;
-3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;;
-3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;;
-3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;;
-3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;;
-306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;;
-306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;;
-306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;;
-306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;;
-306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;;
-306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;;
-3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;;
-3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;;
-3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;;
-3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;;
-3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;;
-3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;;
-3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;;
-3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;;
-3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;;
-3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;;
-307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;;
-307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;;
-307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;;
-307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;;
-307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;;
-307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;;
-3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;;
-3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;;
-3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;;
-3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;;
-3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;;
-3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;;
-3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;;
-308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;;
-308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;;
-308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;;
-308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;;
-308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;;
-3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;;
-3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;;
-3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;;
-3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;;
-3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;;
-3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
-3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
-3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;;
-309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;;
-309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON;<compat> 0020 3099;;;;N;;;;;
-309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 0020 309A;;;;N;;;;;
-309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;;
-309F;HIRAGANA DIGRAPH YORI;Lo;0;L;<vertical> 3088 308A;;;;N;;;;;
-30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;;
-30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;;
-30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;;
-30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;;
-30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;;
-30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;;
-30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;;
-30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;;
-30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;;
-30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;;
-30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;;
-30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;;
-30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;;
-30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;;
-30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;;
-30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;;
-30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;;
-30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;;
-30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;;
-30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;;
-30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;;
-30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;;
-30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;;
-30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;;
-30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;;
-30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;;
-30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;;
-30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;;
-30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;;
-30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;;
-30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;;
-30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;;
-30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;;
-30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;;
-30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;;
-30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;;
-30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;;
-30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;;
-30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;;
-30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;;
-30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;;
-30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;;
-30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;;
-30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;;
-30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;;
-30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;;
-30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;;
-30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;;
-30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;;
-30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;;
-30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;;
-30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;;
-30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;;
-30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;;
-30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;;
-30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;;
-30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;;
-30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;;
-30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;;
-30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;;
-30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;;
-30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;;
-30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;;
-30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;;
-30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;;
-30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;;
-30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;;
-30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;;
-30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;;
-30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;;
-30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;;
-30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;;
-30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;;
-30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;;
-30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;;
-30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;;
-30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;;
-30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;;
-30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;;
-30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;;
-30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;;
-30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;;
-30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;;
-30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;;
-30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;;
-30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;;
-30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;;
-30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;;
-30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;;
-30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;;
-30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;;
-30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;;
-30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;;
-30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;;
-30FF;KATAKANA DIGRAPH KOTO;Lo;0;L;<vertical> 30B3 30C8;;;;N;;;;;
-3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;;
-3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;;
-3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;;
-3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;;
-3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;;
-310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;;
-310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;;
-310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;;
-310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;;
-310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;;
-310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;;
-3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;;
-3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;;
-3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;;
-3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;;
-3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;;
-3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;;
-3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;;
-3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;;
-3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;;
-3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;;
-311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;;
-311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;;
-311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;;
-311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;;
-311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;;
-311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;;
-3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;;
-3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;;
-3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;;
-3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;;
-3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;;
-3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;;
-3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;;
-3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;;
-3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;;
-3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;;
-312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;;
-312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;;
-312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;;
-312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
-3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
-3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
-3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
-3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
-3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
-3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
-3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
-3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
-3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
-313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
-313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
-313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
-313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
-313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
-313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
-3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
-3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
-3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
-3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
-3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
-3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
-3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
-3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
-3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
-3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
-314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
-314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
-314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
-314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
-314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
-314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
-3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
-3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
-3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
-3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
-3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
-3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
-3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
-3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
-3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
-3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
-315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
-315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
-315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
-315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
-315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
-315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
-3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
-3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
-3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
-3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
-3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
-3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
-3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
-3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
-3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
-3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
-316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
-316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
-316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
-316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
-316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
-316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
-3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
-3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
-3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
-3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
-3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
-3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
-3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
-3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
-3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
-3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
-317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
-317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
-317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
-317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
-317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
-317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
-3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
-3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
-3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
-3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
-3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
-3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
-3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
-3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
-3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
-3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
-318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
-318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
-318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
-318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
-318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
-3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;;
-3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;;
-3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;;;;
-3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;;;;
-3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;;;;
-3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;;;;
-3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;;;;
-3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;;;;
-3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;;;;
-3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;;;;
-319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;;;;
-319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;;;;
-319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;;;;
-319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;;;;
-319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;;;;
-319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;;;;
-31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;;
-31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;;
-31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;;
-31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;;
-31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;;
-31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;;
-31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;;
-31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;;
-31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;;
-31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;;
-31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;;
-31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;;
-31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;;
-31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;;
-31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;;
-31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;;
-31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;;
-31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;;
-31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;;
-31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;;
-31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;;
-31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;;
-31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;;
-31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;;
-31C0;CJK STROKE T;So;0;ON;;;;;N;;;;;
-31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;;
-31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;;
-31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;;
-31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;;
-31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;;
-31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;;
-31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;;
-31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;;
-31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;;
-31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;;
-31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;;
-31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;;
-31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;;
-31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;;
-31CF;CJK STROKE N;So;0;ON;;;;;N;;;;;
-31D0;CJK STROKE H;So;0;ON;;;;;N;;;;;
-31D1;CJK STROKE S;So;0;ON;;;;;N;;;;;
-31D2;CJK STROKE P;So;0;ON;;;;;N;;;;;
-31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;
-31D4;CJK STROKE D;So;0;ON;;;;;N;;;;;
-31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;
-31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;
-31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;
-31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;
-31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;
-31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;
-31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;
-31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;
-31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;
-31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;
-31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;
-31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;
-31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
-31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
-31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;;
-31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;;
-31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;;
-31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;;
-31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;;
-31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;;
-31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;;
-31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;;
-31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;;
-31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;;
-31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;;
-31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;;
-31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;;
-31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;;
-31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;;
-31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;;
-31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;;
-3200;PARENTHESIZED HANGUL KIYEOK;So;0;L;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
-3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
-3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
-3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
-3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
-3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
-3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
-3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
-3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
-3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
-320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
-320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
-320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
-320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
-320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
-320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
-3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
-3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
-3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
-3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
-3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
-3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
-3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
-3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
-3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
-3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
-321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
-321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
-321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
-321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
-321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
-3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
-3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
-3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
-3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
-3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
-3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
-3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
-3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
-3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
-3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
-322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
-322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
-322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
-322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
-322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
-322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
-3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
-3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
-3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
-3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
-3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
-3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
-3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
-3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
-3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
-3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
-323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
-323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
-323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
-323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
-323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
-323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
-3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
-3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
-3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
-3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
-3244;CIRCLED IDEOGRAPH QUESTION;So;0;L;<circle> 554F;;;;N;;;;;
-3245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L;<circle> 5E7C;;;;N;;;;;
-3246;CIRCLED IDEOGRAPH SCHOOL;So;0;L;<circle> 6587;;;;N;;;;;
-3247;CIRCLED IDEOGRAPH KOTO;So;0;L;<circle> 7B8F;;;;N;;;;;
-3248;CIRCLED NUMBER TEN ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-3249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
-3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
-3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
-3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
-3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
-3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
-3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
-3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
-3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
-3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
-3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
-325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
-325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
-325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
-325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
-325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
-325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
-3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
-3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
-3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
-3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
-3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
-3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
-3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
-3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
-3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
-3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
-326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
-326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
-326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
-326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
-326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
-326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
-3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
-3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
-3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
-3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
-3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
-3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
-3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
-3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
-3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
-3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
-327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
-327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
-327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
-327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
-327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
-327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
-3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
-3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
-3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
-3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
-3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
-3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
-3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
-3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
-3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
-3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
-328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
-328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
-328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
-328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
-328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
-328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
-3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
-3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
-3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
-3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
-3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
-3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
-3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
-3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
-3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
-3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
-329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
-329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
-329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
-329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
-329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
-329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
-32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
-32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
-32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
-32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
-32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
-32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
-32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
-32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
-32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
-32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
-32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
-32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
-32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
-32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
-32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
-32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
-32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
-32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
-32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
-32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
-32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
-32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
-32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
-32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
-32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
-32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
-32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
-32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
-32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
-32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
-32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
-32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
-32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
-32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
-32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
-32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
-32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
-32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
-32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
-32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
-32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
-32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
-32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
-32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
-32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
-32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
-32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
-32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
-32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
-32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
-32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
-32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
-32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
-32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
-32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
-32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
-32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
-32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
-32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
-32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
-32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
-32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
-32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
-32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
-32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
-32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
-32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
-32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
-32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
-32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
-32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
-32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
-32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
-32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
-32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
-32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
-32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
-32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
-32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
-32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
-32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
-32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
-32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
-32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
-32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
-32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
-32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
-32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
-32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
-32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
-32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
-32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
-32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
-32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
-32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
-3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
-3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
-3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
-3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
-3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
-3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
-3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
-3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
-3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
-3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
-330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
-330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
-330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
-330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
-330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
-330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
-3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
-3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
-3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
-3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
-3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
-3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
-3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
-3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
-3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
-3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
-331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
-331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
-331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
-331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
-331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
-331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
-3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
-3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
-3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
-3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
-3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
-3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
-3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
-3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
-3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
-3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
-332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
-332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
-332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
-332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
-332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
-332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
-3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
-3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
-3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
-3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
-3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
-3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
-3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
-3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
-3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
-3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
-333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
-333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
-333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
-333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
-333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
-333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
-3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
-3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
-3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
-3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
-3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
-3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
-3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
-3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
-3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
-3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
-334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
-334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
-334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
-334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
-334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
-334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
-3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
-3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
-3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
-3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
-3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
-3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
-3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
-3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
-3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
-3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
-335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
-335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
-335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
-335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
-335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
-335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
-3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
-3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
-3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
-3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
-3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
-3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
-3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
-3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
-3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
-3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
-336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
-336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
-336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
-336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
-336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
-336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
-3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
-3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
-3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
-3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
-3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
-3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
-3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
-3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
-3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
-3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
-337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
-337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
-337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
-337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
-337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
-337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
-3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
-3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
-3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
-3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
-3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
-3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
-3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
-3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
-3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
-3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
-338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
-338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
-338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
-338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
-338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
-338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
-3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
-3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
-3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
-3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
-3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
-3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
-3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
-3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
-3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
-3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
-339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
-339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
-339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
-339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
-339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
-339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
-33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
-33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
-33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
-33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
-33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
-33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
-33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
-33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
-33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
-33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
-33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
-33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
-33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
-33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
-33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
-33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
-33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
-33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
-33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
-33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
-33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
-33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
-33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
-33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
-33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
-33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
-33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
-33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
-33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
-33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
-33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
-33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
-33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
-33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
-33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
-33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
-33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
-33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
-33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
-33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
-33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
-33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
-33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
-33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
-33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
-33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
-33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
-33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
-33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
-33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
-33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
-33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
-33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
-33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
-33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
-33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
-33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
-33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
-33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
-33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
-33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
-33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
-33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
-33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
-33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
-33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
-33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
-33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
-33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
-33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
-33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
-33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
-33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
-33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
-33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
-33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
-33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
-33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
-33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
-33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
-33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
-33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
-33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
-33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
-33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
-33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
-33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
-33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
-33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
-33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
-33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
-33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
-33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
-33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
-33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
-33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
-3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
-4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;;
-4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;;
-4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;;
-4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;;
-4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;;
-4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
-4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;;
-4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;;
-4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;;
-4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;;
-4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;;
-4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;;
-4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;;
-4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;;
-4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;;
-4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;;
-4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;;
-4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
-4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;;
-4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;;
-4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;;
-4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;;
-4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;;
-4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;;
-4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;;
-4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;;
-4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;;
-4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;;
-4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;;
-4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;;
-4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;;
-4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;;
-4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;;
-4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;;
-4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;;
-4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;;
-4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;;
-4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;;
-4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
-4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;;
-4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;;
-4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;;
-4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
-4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;;
-4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;;
-4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;;
-4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;;
-4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;;
-4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;;
-4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;;
-4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;;
-4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;;
-4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;;
-4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;;
-4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;;
-4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;;
-4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;;
-4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;;
-4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;;
-4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;;
-4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;;
-4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;;
-4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;;
-4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
-4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
-4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
-9FCB;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
-A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
-A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
-A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
-A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;;
-A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;;
-A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;;
-A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;;
-A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;;
-A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;;
-A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;;
-A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;;
-A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;;
-A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;;
-A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;;
-A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;;
-A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;;
-A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;;
-A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;;
-A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;;
-A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;;
-A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;;
-A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;;
-A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;;
-A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;;
-A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;;
-A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;;
-A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;;
-A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;;
-A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;;
-A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;;
-A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;;
-A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;;
-A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;;
-A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;;
-A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;;
-A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;;
-A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;;
-A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;;
-A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;;
-A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;;
-A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;;
-A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;;
-A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;;
-A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;;
-A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;;
-A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;;
-A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;;
-A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;;
-A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;;
-A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;;
-A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;;
-A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;;
-A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;;
-A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;;
-A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;;
-A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;;
-A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;;
-A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;;
-A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;;
-A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;;
-A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;;
-A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;;
-A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;;
-A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;;
-A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;;
-A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;;
-A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;;
-A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;;
-A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;;
-A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;;
-A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;;
-A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;;
-A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;;
-A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;;
-A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;;
-A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;;
-A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;;
-A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;;
-A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;;
-A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;;
-A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;;
-A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;;
-A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;;
-A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;;
-A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;;
-A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;;
-A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;;
-A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;;
-A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;;
-A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;;
-A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;;
-A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;;
-A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;;
-A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;;
-A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;;
-A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;;
-A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;;
-A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;;
-A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;;
-A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;;
-A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;;
-A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;;
-A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;;
-A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;;
-A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;;
-A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;;
-A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;;
-A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;;
-A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;;
-A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;;
-A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;;
-A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;;
-A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;;
-A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;;
-A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;;
-A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;;
-A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;;
-A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;;
-A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;;
-A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;;
-A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;;
-A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;;
-A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;;
-A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;;
-A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;;
-A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;;
-A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;;
-A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;;
-A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;;
-A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;;
-A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;;
-A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;;
-A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;;
-A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;;
-A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;;
-A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;;
-A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;;
-A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;;
-A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;;
-A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;;
-A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;;
-A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;;
-A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;;
-A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;;
-A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;;
-A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;;
-A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;;
-A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;;
-A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;;
-A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;;
-A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;;
-A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;;
-A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;;
-A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;;
-A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;;
-A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;;
-A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;;
-A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;;
-A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;;
-A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;;
-A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;;
-A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;;
-A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;;
-A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;;
-A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;;
-A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;;
-A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;;
-A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;;
-A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;;
-A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;;
-A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;;
-A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;;
-A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;;
-A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;;
-A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;;
-A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;;
-A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;;
-A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;;
-A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;;
-A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;;
-A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;;
-A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;;
-A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;;
-A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;;
-A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;;
-A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;;
-A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;;
-A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;;
-A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;;
-A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;;
-A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;;
-A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;;
-A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;;
-A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;;
-A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;;
-A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;;
-A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;;
-A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;;
-A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;;
-A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;;
-A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;;
-A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;;
-A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;;
-A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;;
-A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;;
-A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;;
-A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;;
-A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;;
-A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;;
-A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;;
-A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;;
-A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;;
-A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;;
-A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;;
-A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;;
-A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;;
-A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;;
-A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;;
-A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;;
-A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;;
-A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;;
-A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;;
-A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;;
-A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;;
-A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;;
-A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;;
-A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;;
-A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;;
-A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;;
-A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;;
-A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;;
-A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;;
-A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;;
-A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;;
-A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;;
-A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;;
-A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;;
-A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;;
-A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;;
-A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;;
-A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;;
-A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;;
-A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;;
-A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;;
-A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;;
-A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;;
-A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;;
-A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;;
-A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;;
-A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;;
-A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;;
-A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;;
-A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;;
-A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;;
-A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;;
-A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;;
-A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;;
-A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;;
-A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;;
-A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;;
-A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;;
-A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;;
-A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;;
-A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;;
-A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;;
-A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;;
-A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;;
-A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;;
-A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;;
-A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;;
-A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;;
-A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;;
-A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;;
-A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;;
-A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;;
-A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;;
-A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;;
-A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;;
-A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;;
-A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;;
-A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;;
-A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;;
-A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;;
-A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;;
-A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;;
-A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;;
-A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;;
-A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;;
-A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;;
-A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;;
-A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;;
-A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;;
-A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;;
-A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;;
-A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;;
-A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;;
-A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;;
-A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;;
-A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;;
-A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;;
-A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;;
-A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;;
-A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;;
-A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;;
-A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;;
-A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;;
-A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;;
-A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
-A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;;
-A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;;
-A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;;
-A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;;
-A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;;
-A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
-A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;;
-A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;;
-A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;;
-A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
-A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;;
-A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;;
-A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
-A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;;
-A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;;
-A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;;
-A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
-A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;;
-A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;;
-A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;;
-A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;;
-A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;;
-A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;;
-A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;;
-A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;;
-A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;;
-A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;;
-A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;;
-A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;;
-A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;;
-A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;;
-A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;;
-A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;;
-A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;;
-A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;;
-A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;;
-A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;;
-A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;;
-A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;;
-A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;;
-A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;;
-A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;;
-A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;;
-A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;;
-A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;;
-A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;;
-A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;;
-A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;;
-A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;;
-A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;;
-A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;;
-A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;;
-A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;;
-A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;;
-A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;;
-A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;;
-A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;;
-A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;;
-A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;;
-A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;;
-A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;;
-A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;;
-A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;;
-A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;;
-A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;;
-A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;;
-A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;;
-A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;;
-A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;;
-A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;;
-A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;;
-A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;;
-A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;;
-A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;;
-A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;;
-A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;;
-A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;;
-A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;;
-A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;;
-A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;;
-A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;;
-A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;;
-A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;;
-A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;;
-A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;;
-A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;;
-A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;;
-A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;;
-A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;;
-A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;;
-A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;;
-A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;;
-A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;;
-A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;;
-A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;;
-A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;;
-A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;;
-A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;;
-A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;;
-A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;;
-A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;;
-A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;;
-A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;;
-A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;;
-A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;;
-A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;;
-A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;;
-A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;;
-A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;;
-A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;;
-A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;;
-A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;;
-A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;;
-A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;;
-A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;;
-A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;;
-A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;;
-A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;;
-A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;;
-A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;;
-A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;;
-A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;;
-A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;;
-A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;;
-A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;;
-A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;;
-A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;;
-A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;;
-A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;;
-A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;;
-A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;;
-A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;;
-A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;;
-A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;;
-A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;;
-A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;;
-A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;;
-A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;;
-A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;;
-A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;;
-A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;;
-A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;;
-A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;;
-A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;;
-A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;;
-A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;;
-A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;;
-A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;;
-A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;;
-A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;;
-A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;;
-A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;;
-A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;;
-A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;;
-A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;;
-A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;;
-A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;;
-A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;;
-A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;;
-A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;;
-A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;;
-A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;;
-A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;;
-A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;;
-A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;;
-A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;;
-A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;;
-A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;;
-A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;;
-A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;;
-A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;;
-A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;;
-A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;;
-A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;;
-A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;;
-A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;;
-A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;;
-A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;;
-A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;;
-A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;;
-A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;;
-A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;;
-A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;;
-A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;;
-A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;;
-A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;;
-A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;;
-A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;;
-A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;;
-A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;;
-A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;;
-A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;;
-A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;;
-A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;;
-A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;;
-A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;;
-A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;;
-A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;;
-A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;;
-A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;;
-A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;;
-A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;;
-A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;;
-A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;;
-A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;;
-A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;;
-A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;;
-A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;;
-A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;;
-A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;;
-A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;;
-A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;;
-A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;;
-A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;;
-A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;;
-A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;;
-A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;;
-A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;;
-A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;;
-A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;;
-A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;;
-A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;;
-A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;;
-A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;;
-A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;;
-A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;;
-A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;;
-A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;;
-A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;;
-A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;;
-A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;;
-A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;;
-A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;;
-A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;;
-A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;;
-A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;;
-A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;;
-A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;;
-A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;;
-A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;;
-A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;;
-A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;;
-A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;;
-A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;;
-A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;;
-A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;;
-A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;;
-A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;;
-A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;;
-A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;;
-A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;;
-A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;;
-A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;;
-A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;;
-A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;;
-A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;;
-A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;;
-A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;;
-A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;;
-A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;;
-A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;;
-A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;;
-A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;;
-A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;;
-A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;;
-A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;;
-A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;;
-A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;;
-A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;;
-A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;;
-A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;;
-A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;;
-A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;;
-A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;;
-A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;;
-A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;;
-A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;;
-A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;;
-A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;;
-A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;;
-A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;;
-A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;;
-A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;;
-A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;;
-A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;;
-A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;;
-A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;;
-A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;;
-A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;;
-A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;;
-A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;;
-A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;;
-A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;;
-A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;;
-A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;;
-A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;;
-A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;;
-A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;;
-A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;;
-A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;;
-A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;;
-A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;;
-A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;;
-A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;;
-A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;;
-A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;;
-A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;;
-A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;;
-A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;;
-A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;;
-A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;;
-A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;;
-A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;;
-A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;;
-A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;;
-A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;;
-A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;;
-A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;;
-A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;;
-A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;;
-A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;;
-A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;;
-A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;;
-A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;;
-A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;;
-A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;;
-A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;;
-A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;;
-A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;;
-A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;;
-A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;;
-A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;;
-A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;;
-A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;;
-A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;;
-A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;;
-A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;;
-A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;;
-A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;;
-A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;;
-A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;;
-A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;;
-A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;;
-A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;;
-A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;;
-A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;;
-A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;;
-A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;;
-A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;;
-A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;;
-A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;;
-A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;;
-A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;;
-A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;;
-A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;;
-A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;;
-A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;;
-A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;;
-A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;;
-A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;;
-A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;;
-A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;;
-A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;;
-A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;;
-A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;;
-A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;;
-A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;;
-A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;;
-A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;;
-A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;;
-A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;;
-A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;;
-A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;;
-A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;;
-A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;;
-A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;;
-A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;;
-A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;;
-A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;;
-A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;;
-A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;;
-A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;;
-A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;;
-A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;;
-A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;;
-A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;;
-A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;;
-A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;;
-A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;;
-A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;;
-A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;;
-A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;;
-A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;;
-A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;;
-A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;;
-A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;;
-A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;;
-A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;;
-A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;;
-A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;;
-A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;;
-A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;;
-A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;;
-A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;;
-A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;;
-A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;;
-A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;;
-A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;;
-A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;;
-A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;;
-A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;;
-A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;;
-A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;;
-A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;;
-A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;;
-A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;;
-A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;;
-A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;;
-A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;;
-A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;;
-A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;;
-A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;;
-A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;;
-A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;;
-A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;;
-A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;;
-A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;;
-A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;;
-A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;;
-A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;;
-A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;;
-A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;;
-A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;;
-A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;;
-A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;;
-A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;;
-A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;;
-A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;;
-A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;;
-A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;;
-A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;;
-A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;;
-A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;;
-A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;;
-A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;;
-A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;;
-A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;;
-A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;;
-A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;;
-A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;;
-A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;;
-A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;;
-A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;;
-A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;;
-A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;;
-A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;;
-A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;;
-A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;;
-A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;;
-A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;;
-A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;;
-A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;;
-A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;;
-A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;;
-A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;;
-A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;;
-A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;;
-A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;;
-A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;;
-A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;;
-A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;;
-A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;;
-A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;;
-A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;;
-A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;;
-A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;;
-A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;;
-A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;;
-A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;;
-A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;;
-A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;;
-A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;;
-A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;;
-A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;;
-A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;;
-A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;;
-A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;;
-A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;;
-A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;;
-A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;;
-A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;;
-A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;;
-A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;;
-A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;;
-A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;;
-A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;;
-A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;;
-A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;;
-A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;;
-A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;;
-A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;;
-A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;;
-A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;;
-A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;;
-A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;;
-A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;;
-A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;;
-A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;;
-A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;;
-A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;;
-A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;;
-A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;;
-A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;;
-A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;;
-A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;;
-A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;;
-A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;;
-A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;;
-A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;;
-A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;;
-A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;;
-A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;;
-A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;;
-A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;;
-A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;;
-A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;;
-A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;;
-A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;;
-A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;;
-A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;;
-A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;;
-A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;;
-A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;;
-A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;;
-A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;;
-A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;;
-A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;;
-A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;;
-A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;;
-A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;;
-A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;;
-A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;;
-A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;;
-A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;;
-A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;;
-A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;;
-A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;;
-A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;;
-A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;;
-A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;;
-A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;;
-A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;;
-A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;;
-A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;;
-A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;;
-A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;;
-A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;;
-A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;;
-A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;;
-A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;;
-A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;;
-A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;;
-A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;;
-A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;;
-A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;;
-A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;;
-A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;;
-A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;;
-A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;;
-A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;;
-A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;;
-A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;;
-A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;;
-A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;;
-A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;;
-A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;;
-A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;;
-A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;;
-A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;;
-A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;;
-A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;;
-A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;;
-A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;;
-A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;;
-A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;;
-A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;;
-A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;;
-A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;;
-A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;;
-A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;;
-A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;;
-A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;;
-A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;;
-A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;;
-A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;;
-A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;;
-A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;;
-A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;;
-A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;;
-A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;;
-A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;;
-A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;;
-A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;;
-A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;;
-A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;;
-A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;;
-A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;;
-A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;;
-A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;;
-A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;;
-A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;;
-A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;;
-A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;;
-A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;;
-A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;;
-A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;;
-A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;;
-A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;;
-A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;;
-A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;;
-A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;;
-A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;;
-A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;;
-A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;;
-A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;;
-A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;;
-A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;;
-A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;;
-A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;;
-A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;;
-A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;;
-A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;;
-A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;;
-A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;;
-A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;;
-A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;;
-A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;;
-A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;;
-A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;;
-A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;;
-A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;;
-A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;;
-A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;;
-A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;;
-A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;;
-A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;;
-A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;;
-A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;;
-A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;;
-A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;;
-A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;;
-A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;;
-A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;;
-A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;;
-A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;;
-A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;;
-A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;;
-A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;;
-A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;;
-A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;;
-A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;;
-A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;;
-A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;;
-A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;;
-A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;;
-A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;;
-A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;;
-A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;;
-A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;;
-A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;;
-A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;;
-A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;;
-A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;;
-A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;;
-A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;;
-A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;;
-A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;;
-A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;;
-A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;;
-A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
-A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;;
-A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;;
-A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;;
-A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;;
-A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;;
-A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;;
-A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;;
-A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;;
-A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;;
-A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
-A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;;
-A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;;
-A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
-A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;;
-A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;;
-A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;;
-A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;;
-A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;;
-A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;;
-A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;;
-A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;;
-A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;;
-A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;;
-A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;;
-A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;;
-A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;;
-A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;;
-A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;;
-A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;;
-A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;;
-A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;;
-A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;;
-A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;;
-A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;;
-A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;;
-A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;;
-A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;;
-A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;;
-A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;;
-A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;;
-A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;;
-A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;;
-A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;;
-A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;;
-A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;;
-A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;;
-A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;;
-A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;;
-A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;;
-A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;;
-A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;;
-A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;;
-A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;;
-A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;;
-A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;;
-A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;;
-A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;;
-A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;;
-A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;;
-A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;;
-A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;;
-A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;;
-A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;;
-A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;;
-A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;;
-A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;;
-A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;;
-A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;;
-A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;;
-A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;;
-A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;;
-A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;;
-A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;;
-A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;;
-A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;;
-A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;;
-A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;;
-A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;;
-A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;;
-A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;;
-A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;;
-A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;;
-A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;;
-A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;;
-A491;YI RADICAL LI;So;0;ON;;;;;N;;;;;
-A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;;
-A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;;
-A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;;
-A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;;
-A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;;
-A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;;
-A498;YI RADICAL MI;So;0;ON;;;;;N;;;;;
-A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;;
-A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;;
-A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;;
-A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;;
-A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;;
-A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;;
-A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;;
-A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;;
-A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;;
-A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;;
-A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;;
-A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;;
-A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;;
-A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;;
-A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;;
-A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;;
-A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;;
-A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;;
-A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;;
-A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;;
-A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;;
-A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;;
-A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;;
-A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;;
-A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;;
-A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;;
-A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;;
-A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;;
-A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;;
-A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;;
-A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;;
-A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;;
-A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;;
-A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;;
-A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;;
-A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;;
-A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;;
-A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;;
-A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;;
-A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;;
-A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;;
-A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;;
-A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;;
-A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;;
-A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;;
-A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;;
-A4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;;
-A4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;;
-A4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;;
-A4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;;
-A4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;;
-A4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;;
-A4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;;
-A4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;;
-A4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;;
-A4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;;
-A4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;;
-A4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;;
-A4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;;
-A4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;;
-A4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;;
-A4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;;
-A4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;;
-A4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;;
-A4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;;
-A4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;;
-A4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;;
-A4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;;
-A4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;;
-A4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;;
-A4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;;
-A4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;;
-A4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;;
-A4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;;
-A4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;;
-A4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;;
-A4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;;
-A4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;;
-A4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;;
-A4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;;
-A4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;;
-A4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;;
-A4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;;
-A4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;;
-A4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;;
-A4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;;
-A4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;;
-A4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;;
-A4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;;
-A4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;;
-A4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;;
-A4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;;
-A4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;;
-A4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;;
-A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;
-A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;
-A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
-A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
-A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;
-A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
-A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;
-A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
-A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;
-A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;
-A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;
-A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;
-A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
-A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
-A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
-A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
-A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;
-A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;
-A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
-A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;
-A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
-A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;
-A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
-A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
-A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
-A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
-A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
-A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
-A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;
-A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
-A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
-A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;
-A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
-A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
-A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
-A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
-A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;
-A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;
-A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;
-A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
-A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;
-A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
-A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
-A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;
-A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
-A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;
-A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;
-A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;
-A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;
-A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
-A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
-A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
-A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;
-A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;
-A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;
-A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
-A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;
-A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
-A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
-A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
-A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
-A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
-A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
-A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
-A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
-A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
-A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
-A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
-A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;
-A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
-A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
-A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
-A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
-A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;
-A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;
-A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;
-A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
-A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
-A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
-A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
-A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
-A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;
-A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
-A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;
-A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;
-A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;
-A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;
-A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;
-A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
-A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
-A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
-A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;
-A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;
-A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;
-A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
-A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
-A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
-A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
-A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
-A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
-A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
-A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
-A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
-A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;
-A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;
-A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;
-A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
-A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
-A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;
-A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
-A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
-A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
-A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
-A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;
-A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;
-A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;
-A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;
-A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;
-A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;
-A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;
-A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;
-A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;
-A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;
-A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;
-A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;
-A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;
-A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;
-A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;
-A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;
-A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;
-A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;
-A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;
-A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;
-A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;
-A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;
-A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;
-A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;
-A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;
-A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;
-A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;
-A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;
-A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;
-A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;
-A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;
-A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;
-A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;
-A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;
-A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;
-A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;
-A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;
-A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;
-A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;
-A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
-A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
-A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;
-A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
-A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;
-A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
-A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;
-A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;
-A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;
-A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;
-A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
-A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
-A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
-A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;
-A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;
-A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;
-A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
-A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
-A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
-A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
-A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
-A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
-A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
-A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
-A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
-A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
-A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
-A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
-A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
-A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;
-A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
-A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
-A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
-A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
-A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;
-A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;
-A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;
-A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
-A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;
-A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
-A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;
-A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
-A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;
-A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
-A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;
-A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;
-A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;
-A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;
-A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;
-A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
-A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
-A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
-A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;
-A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;
-A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;
-A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
-A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
-A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
-A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
-A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
-A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
-A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
-A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
-A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
-A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
-A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
-A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
-A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
-A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;
-A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
-A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
-A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
-A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
-A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;
-A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;
-A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;
-A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
-A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
-A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
-A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
-A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;
-A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;
-A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
-A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;
-A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;
-A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;
-A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;
-A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;
-A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;
-A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;
-A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;
-A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
-A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;
-A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;
-A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;
-A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
-A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
-A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
-A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
-A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
-A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
-A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
-A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
-A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
-A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;
-A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;
-A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;
-A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
-A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;
-A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;
-A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
-A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
-A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
-A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
-A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
-A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;
-A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
-A60D;VAI COMMA;Po;0;ON;;;;;N;;;;;
-A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;
-A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;
-A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;
-A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;
-A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;
-A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;
-A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;
-A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;
-A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;
-A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;
-A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;
-A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;
-A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;
-A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;
-A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;
-A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;
-A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;
-A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;
-A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;
-A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;
-A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
-A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
-A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;
-A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642
-A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;
-A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644
-A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;
-A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646
-A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;
-A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648
-A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;
-A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A
-A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;
-A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C
-A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
-A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E
-A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;
-A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650
-A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;
-A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652
-A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;
-A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654
-A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;
-A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656
-A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;
-A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658
-A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;
-A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A
-A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;
-A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C
-A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;
-A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
-A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;
-A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662
-A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;
-A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664
-A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;
-A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666
-A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;
-A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668
-A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;
-A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A
-A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;
-A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C
-A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;
-A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;
-A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
-A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
-A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
-A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;
-A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;
-A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;
-A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;
-A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;
-A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;
-A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680
-A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;
-A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682
-A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;
-A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684
-A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;
-A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686
-A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;
-A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688
-A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;
-A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A
-A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;
-A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C
-A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;
-A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E
-A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;
-A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690
-A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;
-A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692
-A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;
-A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694
-A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;
-A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696
-A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;;
-A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;;
-A6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;;
-A6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;;
-A6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;;
-A6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;;
-A6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;;
-A6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;;
-A6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;;
-A6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;;
-A6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;;
-A6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;;
-A6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;;
-A6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;;
-A6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;;
-A6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;;
-A6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;;
-A6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;;
-A6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;;
-A6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;;
-A6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;;
-A6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;;
-A6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;;
-A6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;;
-A6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;;
-A6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;;
-A6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;;
-A6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;;
-A6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;;
-A6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;;
-A6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;;
-A6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;;
-A6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;;
-A6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;;
-A6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;;
-A6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;;
-A6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;;
-A6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;;
-A6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;;
-A6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;;
-A6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;;
-A6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;;
-A6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;;
-A6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;;
-A6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;;
-A6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;;
-A6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;;
-A6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;;
-A6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;;
-A6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;;
-A6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;;
-A6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;;
-A6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;;
-A6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;;
-A6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;;
-A6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;;
-A6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;;
-A6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;;
-A6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;;
-A6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;;
-A6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;;
-A6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;;
-A6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;;
-A6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;;
-A6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;;
-A6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;;
-A6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;;
-A6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;;
-A6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;;
-A6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;;
-A6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;;
-A6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;;
-A6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;;
-A6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;;
-A6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;;
-A6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;;
-A6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;;
-A6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;;
-A6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;;
-A6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;;
-A6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;;
-A6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;;
-A6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;;
-A6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;;
-A6F4;BAMUM COLON;Po;0;L;;;;;N;;;;;
-A6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;;
-A6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;;
-A6F7;BAMUM QUESTION MARK;Po;0;L;;;;;N;;;;;
-A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;;
-A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;;
-A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;;
-A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;;
-A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;;
-A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;;
-A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;;
-A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;;
-A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;;
-A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;;
-A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;;
-A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;;
-A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;;
-A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
-A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
-A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
-A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;;
-A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;;
-A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;
-A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722
-A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;
-A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724
-A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;
-A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726
-A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;
-A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728
-A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;
-A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A
-A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;
-A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C
-A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;
-A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E
-A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;
-A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;
-A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;
-A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732
-A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;
-A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734
-A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;
-A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736
-A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;
-A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738
-A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;
-A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A
-A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;
-A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C
-A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;
-A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E
-A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;
-A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740
-A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;
-A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742
-A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;
-A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744
-A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;
-A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746
-A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;
-A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748
-A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;
-A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A
-A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;
-A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C
-A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;
-A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E
-A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;
-A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750
-A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;
-A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752
-A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;
-A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754
-A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;
-A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756
-A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;
-A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758
-A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;
-A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A
-A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;
-A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C
-A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;
-A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E
-A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;
-A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760
-A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;
-A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762
-A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;
-A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764
-A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;
-A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766
-A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;
-A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768
-A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;
-A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A
-A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;
-A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C
-A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;
-A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E
-A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
-A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;
-A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;
-A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;
-A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;
-A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;
-A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;
-A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;
-A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;
-A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;
-A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779
-A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;
-A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B
-A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;
-A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;
-A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E
-A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;
-A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780
-A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;
-A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782
-A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;
-A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784
-A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;
-A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786
-A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
-A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
-A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
-A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;
-A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B
-A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;
-A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;
-A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;
-A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;
-A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;
-A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
-A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
-A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;;
-A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;;
-A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;;
-A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;;
-A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;;
-A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;;
-A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;;
-A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;;
-A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;;
-A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;;
-A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;;
-A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;;
-A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;;
-A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;;
-A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;;
-A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;;
-A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;;
-A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;;
-A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;;
-A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;;
-A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;;
-A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;;
-A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;;
-A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;;
-A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;;
-A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;;
-A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;;
-A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;;
-A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;;
-A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;;
-A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;;
-A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;;
-A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
-A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;;
-A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;;
-A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;;
-A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;;
-A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
-A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
-A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
-A833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;
-A834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;
-A835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;
-A836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;;
-A837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;;
-A838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;;
-A839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;N;;;;;
-A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;;
-A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;;
-A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;;
-A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;;
-A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;;
-A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;;
-A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;;
-A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;;
-A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;;
-A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;;
-A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;;
-A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;;
-A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;;
-A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;;
-A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;;
-A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;;
-A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;;
-A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;;
-A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;;
-A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;;
-A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;;
-A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;;
-A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;;
-A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;;
-A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;;
-A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;;
-A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;;
-A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;;
-A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;;
-A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;;
-A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;;
-A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;;
-A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;;
-A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;;
-A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;;
-A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;;
-A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;;
-A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;;
-A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;;
-A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;;
-A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;;
-A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;;
-A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;;
-A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;;
-A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;;
-A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;;
-A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;;
-A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;;
-A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;;
-A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;;
-A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;;
-A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;;
-A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;;
-A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;;
-A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;;
-A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
-A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;
-A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;
-A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;
-A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;
-A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;
-A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;
-A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
-A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
-A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
-A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
-A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;
-A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;
-A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;
-A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;
-A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;
-A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;
-A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;
-A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;
-A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;
-A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;
-A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;
-A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;
-A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;
-A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;
-A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;
-A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;
-A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;
-A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
-A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;
-A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
-A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;
-A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;
-A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;
-A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;
-A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;
-A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;
-A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;
-A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;
-A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;
-A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;
-A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;
-A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;
-A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;
-A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;
-A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;
-A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;
-A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;
-A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;
-A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;
-A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;
-A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;
-A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
-A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
-A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
-A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
-A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;
-A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;
-A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
-A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
-A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
-A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
-A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
-A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-A8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;;
-A8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;;
-A8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;;
-A8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;;
-A8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;;
-A8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;;
-A8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;;
-A8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;;
-A8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;;
-A8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;;
-A8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;;
-A8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;;
-A8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;;
-A8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;;
-A8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;;
-A8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;;
-A8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;;
-A8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;;
-A8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;;
-A8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;
-A8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;
-A8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;;
-A8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;;
-A8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;;
-A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;;
-A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;;
-A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;;
-A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;
-A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;
-A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;
-A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;
-A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;
-A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;
-A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;
-A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;
-A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;
-A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;
-A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;
-A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;
-A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;
-A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;
-A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;
-A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;
-A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;
-A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;
-A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;
-A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;
-A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;
-A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;
-A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;
-A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;
-A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;
-A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;
-A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;
-A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;
-A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;
-A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;
-A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;
-A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;
-A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;
-A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;
-A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;
-A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;
-A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;
-A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;
-A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;
-A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;
-A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;
-A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;
-A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;
-A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;
-A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;
-A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;
-A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;
-A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;
-A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;
-A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;
-A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;
-A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;
-A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;
-A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;
-A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;
-A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;
-A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;
-A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;
-A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;
-A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;
-A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;
-A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;
-A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
-A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;
-A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;
-A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
-A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
-A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;
-A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;
-A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;
-A960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;;
-A961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
-A962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;
-A963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;
-A964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;
-A965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-A966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
-A967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
-A968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;
-A969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;
-A96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;;
-A96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-A96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;
-A96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;;
-A96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
-A96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
-A970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;;
-A971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
-A972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
-A973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;;
-A974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
-A975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-A976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;;
-A977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;;
-A978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;;
-A979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;;
-A97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;;
-A97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;;
-A97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;;
-A980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;;
-A981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;;
-A982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;;
-A983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;;
-A984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;;
-A985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;;
-A986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;;
-A987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;;
-A988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;;
-A989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;;
-A98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;;
-A98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;;
-A98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;;
-A98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;;
-A98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;;
-A98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;;
-A990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;;
-A991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;;
-A992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;;
-A993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;;
-A994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
-A995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;;
-A996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;;
-A997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;;
-A998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;;
-A999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-A99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
-A99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;;
-A99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-A99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;;
-A99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-A99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;;
-A9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;;
-A9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;;
-A9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;;
-A9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-A9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;;
-A9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;;
-A9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;;
-A9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;;
-A9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;;
-A9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;;
-A9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;;
-A9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;;
-A9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;;
-A9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;;
-A9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;;
-A9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;;
-A9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;;
-A9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;;
-A9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;;
-A9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;;
-A9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;;
-A9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;;
-A9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;;
-A9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;;
-A9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;
-A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;;
-A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
-A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;;
-A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
-A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;;
-A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;;
-A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;;
-A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;;
-A9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;;
-A9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;;
-A9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;;
-A9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;;
-A9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;;
-A9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;;
-A9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;;
-A9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;;
-A9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;;
-A9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;;
-A9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;;
-A9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;;
-A9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;;
-A9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;;
-A9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-A9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-A9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-A9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-A9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-A9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-A9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-A9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-A9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-A9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-A9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;;
-A9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;;
-AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;
-AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;
-AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;
-AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;
-AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;
-AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;
-AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;
-AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;
-AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;
-AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;
-AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;
-AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;
-AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;
-AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;
-AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;
-AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;
-AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;
-AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;
-AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;
-AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;
-AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;
-AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;
-AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;
-AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;
-AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;
-AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;
-AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;
-AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;
-AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;
-AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;
-AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;
-AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;
-AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;
-AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;
-AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;
-AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;
-AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;
-AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;
-AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;
-AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;
-AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;
-AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
-AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
-AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;
-AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
-AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
-AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
-AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
-AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;
-AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;
-AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;
-AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;
-AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;
-AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;
-AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
-AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;
-AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;
-AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;
-AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;
-AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;
-AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;
-AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;
-AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;
-AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;
-AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;
-AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;
-AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
-AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;
-AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;
-AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;;
-AA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;;
-AA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;;
-AA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;;
-AA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;;
-AA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;;
-AA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;;
-AA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;;
-AA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;;
-AA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;;
-AA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;;
-AA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;;
-AA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;;
-AA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;;
-AA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;;
-AA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;;
-AA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;;
-AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;;
-AA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;;
-AA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;;
-AA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;;
-AA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;;
-AA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;;
-AA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;;
-AA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;;
-AA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;;
-AA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;;
-AA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;;
-AA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;;
-AA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;;
-AA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;;
-AA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;;
-AA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;;
-AA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;;
-AA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;;
-AA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;;
-AA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;;
-AA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;;
-AA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;;
-AA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;;
-AA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;;
-AA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;;
-AA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;;
-AA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;;
-AA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;;
-AA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;;
-AA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;;
-AA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;;
-AA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;;
-AA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;;
-AA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;;
-AA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;;
-AA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;;
-AA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;;
-AA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;;
-AA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;;
-AA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;;
-AA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;;
-AA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;;
-AA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;;
-AA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;;
-AAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;;
-AAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;;
-AAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;;
-AAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;;
-AAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;;
-AAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;;
-AAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;;
-AAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;;
-AAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;;
-AAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;;
-AAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;;
-AAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;;
-AAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;;
-AAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;;
-AAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;;
-AAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;;
-AAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;;
-AAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;;
-AAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;;
-AAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;;
-AAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;;
-AAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;;
-AAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;;
-AAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;;
-AAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;;
-AAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;;
-AABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;;
-AABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;;
-AABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;;
-AABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;;
-AABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;;
-AABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;;
-AAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;;
-AAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;;
-AAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;;
-AADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;;
-AADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;;
-AADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;;
-AADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;;
-AADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;;
-ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;;
-ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;;
-ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;;
-ABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;;
-ABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;;
-ABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;;
-ABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;;
-ABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;;
-ABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;;
-ABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;;
-ABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;;
-ABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;;
-ABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;;
-ABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;;
-ABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;;
-ABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;;
-ABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;;
-ABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;;
-ABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;;
-ABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;;
-ABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;;
-ABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;;
-ABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;;
-ABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;;
-ABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;;
-ABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;;
-ABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;;
-ABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;;
-ABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;;
-ABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;;
-ABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;;
-ABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;;
-ABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;;
-ABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;;
-ABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;;
-ABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;;
-ABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;;
-ABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;;
-ABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;;
-ABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;;
-ABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;;
-ABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;;
-ABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;;
-ABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;;
-ABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;;
-ABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;;
-ABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-ABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-ABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-ABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-ABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-ABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-ABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-ABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-ABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-ABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
-D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
-D7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;;
-D7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;;
-D7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;;
-D7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;;
-D7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;;
-D7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;;
-D7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;;
-D7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;;
-D7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;;
-D7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;;
-D7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;;
-D7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;;
-D7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;;
-D7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;;
-D7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;;
-D7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;;
-D7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;;
-D7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;;
-D7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;;
-D7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;;
-D7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;;
-D7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;;
-D7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;;
-D7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;;
-D7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;;
-D7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
-D7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
-D7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
-D7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;
-D7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-D7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;
-D7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;;
-D7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;;
-D7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
-D7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;
-D7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
-D7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
-D7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
-D7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
-D7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;;
-D7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;;
-D7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
-D7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;;
-D7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;;
-D7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;;
-D7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
-D7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;;
-D7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
-D7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;
-D7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;;
-D7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;
-D7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-D7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
-D7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
-D7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
-D7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-D7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
-D7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
-D7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;;
-D7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
-D7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
-D7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
-D7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
-D7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;;
-D7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
-D7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
-D7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;;
-D7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;;
-D7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;;
-D7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;
-D7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;;
-D7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;;
-D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
-DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
-E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
-F8FF;<Private Use, Last>;Co;0;L;;;;;N;;;;;
-F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;;
-F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;;
-F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;;
-F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;;
-F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;;
-F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;;
-F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;;
-F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;;
-F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;;
-F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;;
-F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;;
-F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;;
-F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;;
-F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;;
-F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;;
-F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;;
-F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;;
-F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;;
-F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;;
-F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;;
-F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;;
-F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;;
-F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;;
-F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;;
-F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;;
-F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;;
-F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;;
-F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;;
-F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;;
-F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;;
-F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;;
-F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;;
-F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;;
-F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;;
-F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;;
-F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;;
-F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;;
-F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;;
-F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;;
-F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;;
-F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;;
-F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;;
-F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;;
-F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;;
-F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;;
-F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;;
-F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;;
-F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;;
-F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;;
-F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;;
-F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;;
-F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;;
-F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;;
-F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;;
-F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;;
-F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;;
-F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;;
-F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;;
-F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;;
-F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;;
-F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;;
-F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;;
-F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;;
-F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;;
-F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;;
-F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;;
-F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;;
-F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;;
-F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;;
-F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;;
-F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;;
-F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;;
-F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;;
-F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;;
-F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;;
-F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;;
-F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;;
-F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;;
-F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;;
-F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;;
-F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;;
-F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;;
-F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;;
-F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;;
-F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;;
-F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;;
-F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;;
-F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;;
-F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;;
-F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;;
-F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;;
-F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;;
-F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;;
-F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;;
-F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;;
-F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;;
-F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;;
-F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;;
-F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;;
-F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;;
-F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;;
-F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;;
-F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;;
-F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;;
-F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;;
-F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;;
-F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;;
-F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;;
-F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;;
-F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;;
-F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;;
-F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;;
-F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;;
-F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;;
-F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;;
-F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;;
-F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;;
-F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;;
-F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;;
-F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;;
-F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;;
-F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;;
-F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;;
-F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;;
-F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;;
-F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;;
-F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;;
-F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;;
-F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;;
-F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;;
-F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;;
-F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;;
-F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;;
-F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;;
-F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;;
-F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;;
-F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;;
-F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;;
-F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;;
-F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;;
-F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;;
-F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;;
-F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;;
-F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;;
-F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;;
-F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;;
-F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;;
-F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;;
-F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;;
-F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;;
-F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;;
-F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;;
-F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;;
-F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;;
-F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;;
-F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;;
-F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;;
-F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;;
-F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;;
-F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;;
-F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;;
-F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;;
-F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;;
-F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;;
-F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;;
-F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;;
-F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;;
-F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;;
-F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;;
-F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;;
-F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;;
-F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;;
-F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;;
-F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;;
-F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;;
-F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;;
-F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;;
-F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;;
-F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;;
-F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;;
-F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;;
-F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;;
-F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;;
-F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;;
-F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;;
-F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;;
-F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;;
-F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;;
-F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;;
-F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;;
-F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;;
-F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;;
-F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;;
-F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;;
-F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;;
-F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;;
-F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;;
-F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;;
-F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;;
-F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;;
-F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;;
-F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;;
-F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;;
-F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;;
-F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;;
-F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;;
-F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;;
-F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;;
-F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;;
-F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;;
-F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
-F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;;
-F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;;
-F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;;
-F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;;
-F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;;
-F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;;
-F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;;
-F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;;
-F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;;
-F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;;
-F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;;
-F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;;
-F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;;
-F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;;
-F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;;
-F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;;
-F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;;
-F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;;
-F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;;
-F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;;
-F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;;
-F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;;
-F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;;
-F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;;
-F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;;
-F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;;
-F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;;
-F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;;
-F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;;
-F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;;
-F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;;
-F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;;
-F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;;
-F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;;
-F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;;
-F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;;
-F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;;
-F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;;
-F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;;
-F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;;
-F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;;
-F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;;
-F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;;
-F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;;
-F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;;
-FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;;
-FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;;
-FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;;
-FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;;
-FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;;
-FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;;
-FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;;
-FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;;
-FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;;
-FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;;
-FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;;
-FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;;
-FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;;
-FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;;
-FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;;
-FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;;
-FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;;
-FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;;
-FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;;
-FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;;
-FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;;
-FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;;
-FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;;
-FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;;
-FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;;
-FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;;
-FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;;
-FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;;
-FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;;
-FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;;
-FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;;
-FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;;
-FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;;
-FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;;
-FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;;
-FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;;
-FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;;
-FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;;
-FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;;
-FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;;
-FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;;
-FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;;
-FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;;
-FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;;
-FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;;
-FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;;
-FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;;
-FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;;
-FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;;
-FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;;
-FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;;
-FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;;
-FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;;
-FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;;
-FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;;
-FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;;
-FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;;
-FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;;
-FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;;
-FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;;
-FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;;
-FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;;
-FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;;
-FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;;
-FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;;
-FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;;
-FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;;
-FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;;
-FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;;
-FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;;
-FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;;
-FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;;
-FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;;
-FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;;
-FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;;
-FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;;
-FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;;
-FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;;
-FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;;
-FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;;
-FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;;
-FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;;
-FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;;
-FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;;
-FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;;
-FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;;
-FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;;
-FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;;
-FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;;
-FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;;
-FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;;
-FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;;
-FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;;
-FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;;
-FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;;
-FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;;
-FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;;
-FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;;
-FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;;
-FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;;
-FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;;
-FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;;
-FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;;
-FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;;
-FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;;
-FA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;;
-FA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;;
-FA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;N;;;;;
-FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;;
-FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;;
-FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;;
-FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;;
-FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;;
-FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;;
-FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;;
-FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;;
-FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;;
-FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;;
-FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;;
-FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;;
-FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;;
-FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;;
-FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;;
-FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;;
-FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;;
-FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;;
-FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;;
-FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;;
-FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;;
-FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;;
-FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;;
-FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;;
-FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;;
-FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;;
-FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;;
-FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;;
-FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;;
-FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;;
-FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;;
-FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;;
-FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;;
-FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;;
-FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;;
-FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;;
-FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;;
-FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;;
-FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;;
-FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;;
-FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;;
-FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;;
-FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;;
-FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;;
-FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;;
-FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;;
-FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;;
-FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;;
-FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;;
-FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;;
-FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;;
-FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;;
-FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;;
-FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;;
-FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;;
-FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;;
-FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;;
-FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;;
-FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;;
-FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;;
-FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;;
-FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;;
-FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;;
-FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;;
-FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;;
-FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;;
-FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;;
-FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;;
-FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;;
-FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;;
-FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;;
-FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;;
-FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;;
-FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;;
-FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;;
-FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;;
-FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;;
-FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;;
-FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;;
-FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;;
-FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;;
-FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;;
-FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;;
-FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;;
-FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;;
-FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;;
-FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;;
-FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;;
-FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;;
-FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;;
-FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;;
-FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;;
-FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;;
-FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;;
-FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;;
-FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;;
-FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;;
-FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;;
-FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;;
-FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;;
-FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;;
-FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;;
-FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;;
-FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;;
-FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;;
-FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;;
-FB00;LATIN SMALL LIGATURE FF;Ll;0;L;<compat> 0066 0066;;;;N;;;;;
-FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
-FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
-FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
-FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
-FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
-FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
-FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
-FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
-FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
-FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
-FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 0574 056D;;;;N;;;;;
-FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;;
-FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;;
-FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;;
-FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R;<font> 05E2;;;;N;;;;;
-FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
-FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
-FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
-FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
-FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
-FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
-FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
-FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
-FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 002B;;;;N;;;;;
-FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;;
-FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;;
-FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;;
-FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;;
-FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;;
-FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;;
-FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;;
-FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;;
-FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;;
-FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;;
-FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;;
-FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;;
-FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;;
-FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;;
-FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;;
-FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;;
-FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;;
-FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;;
-FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;;
-FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;;
-FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;;
-FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;;
-FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;;
-FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;;
-FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;;
-FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;;
-FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;;
-FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;;
-FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;;
-FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;;
-FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;;
-FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;;
-FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R;<compat> 05D0 05DC;;;;N;;;;;
-FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
-FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
-FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
-FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
-FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
-FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
-FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
-FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
-FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
-FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
-FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
-FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
-FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
-FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
-FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
-FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
-FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
-FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
-FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
-FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
-FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
-FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
-FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
-FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
-FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
-FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
-FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
-FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
-FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
-FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
-FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
-FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
-FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
-FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
-FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
-FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
-FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
-FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
-FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
-FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
-FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
-FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
-FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
-FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
-FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
-FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
-FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
-FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
-FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
-FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
-FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
-FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
-FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
-FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
-FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
-FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
-FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
-FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
-FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
-FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
-FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
-FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
-FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
-FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
-FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
-FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
-FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
-FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
-FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
-FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
-FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
-FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
-FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
-FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
-FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
-FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
-FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
-FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
-FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
-FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
-FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
-FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
-FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
-FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
-FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
-FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
-FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
-FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
-FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
-FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
-FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
-FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
-FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
-FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
-FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
-FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
-FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
-FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
-FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
-FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
-FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
-FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
-FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
-FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
-FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
-FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
-FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
-FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
-FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
-FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
-FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
-FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
-FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
-FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
-FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
-FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
-FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
-FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
-FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
-FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
-FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
-FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
-FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
-FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
-FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
-FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
-FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
-FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
-FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
-FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
-FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
-FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
-FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
-FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
-FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
-FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
-FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
-FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
-FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
-FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
-FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
-FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
-FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
-FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
-FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
-FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
-FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
-FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
-FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
-FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
-FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
-FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
-FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
-FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
-FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
-FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
-FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
-FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
-FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
-FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
-FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
-FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
-FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
-FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
-FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
-FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
-FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
-FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
-FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
-FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
-FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
-FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
-FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
-FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
-FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
-FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
-FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
-FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
-FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
-FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
-FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
-FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
-FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
-FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
-FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
-FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
-FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
-FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
-FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
-FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
-FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
-FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
-FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
-FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
-FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
-FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
-FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
-FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
-FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
-FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
-FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
-FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
-FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
-FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
-FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
-FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
-FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
-FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
-FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
-FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
-FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
-FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
-FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
-FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
-FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
-FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
-FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
-FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
-FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
-FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
-FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
-FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
-FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
-FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
-FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
-FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
-FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
-FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
-FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
-FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
-FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
-FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
-FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
-FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
-FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
-FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
-FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
-FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
-FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
-FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
-FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
-FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
-FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
-FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
-FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
-FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
-FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
-FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
-FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
-FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
-FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
-FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
-FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
-FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
-FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
-FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
-FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
-FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
-FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
-FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
-FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
-FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
-FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
-FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
-FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
-FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
-FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
-FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
-FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
-FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
-FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
-FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
-FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
-FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
-FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
-FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
-FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
-FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
-FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
-FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
-FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
-FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
-FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
-FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
-FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
-FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
-FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
-FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
-FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
-FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
-FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
-FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
-FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
-FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
-FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
-FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
-FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
-FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
-FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
-FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
-FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
-FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
-FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
-FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
-FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
-FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
-FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
-FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
-FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
-FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
-FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
-FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
-FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
-FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
-FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
-FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
-FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
-FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
-FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
-FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
-FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
-FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
-FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
-FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
-FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
-FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
-FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
-FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
-FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
-FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
-FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
-FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
-FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
-FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
-FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
-FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
-FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
-FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
-FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
-FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
-FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
-FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
-FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
-FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
-FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
-FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
-FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
-FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
-FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
-FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
-FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
-FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
-FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
-FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
-FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
-FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
-FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
-FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
-FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
-FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
-FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
-FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
-FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
-FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
-FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
-FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
-FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
-FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
-FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
-FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
-FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
-FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
-FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
-FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
-FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
-FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
-FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
-FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
-FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
-FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
-FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
-FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
-FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
-FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
-FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
-FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
-FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
-FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
-FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
-FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
-FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
-FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
-FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
-FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
-FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
-FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
-FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
-FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
-FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
-FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
-FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
-FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
-FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
-FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
-FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
-FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
-FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
-FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
-FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
-FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
-FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
-FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
-FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
-FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
-FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
-FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
-FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
-FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
-FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
-FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
-FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
-FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
-FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
-FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
-FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
-FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
-FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
-FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
-FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
-FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
-FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
-FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
-FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
-FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
-FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
-FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
-FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
-FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
-FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
-FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
-FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
-FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
-FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
-FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
-FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
-FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
-FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
-FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
-FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
-FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
-FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
-FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
-FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
-FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
-FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
-FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
-FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
-FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
-FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
-FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
-FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
-FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
-FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
-FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
-FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
-FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
-FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
-FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
-FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
-FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
-FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
-FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
-FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
-FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
-FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
-FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
-FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
-FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
-FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
-FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
-FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
-FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
-FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
-FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
-FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
-FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
-FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
-FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
-FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
-FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
-FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
-FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
-FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
-FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
-FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
-FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
-FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
-FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
-FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
-FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
-FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
-FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
-FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
-FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
-FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
-FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
-FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
-FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
-FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
-FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
-FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
-FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
-FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
-FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
-FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
-FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
-FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
-FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
-FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
-FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
-FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
-FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
-FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
-FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
-FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
-FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
-FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
-FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
-FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
-FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
-FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
-FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
-FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
-FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
-FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
-FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
-FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
-FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
-FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
-FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
-FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
-FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
-FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
-FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
-FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
-FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
-FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
-FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
-FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
-FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
-FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
-FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
-FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
-FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
-FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
-FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
-FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
-FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
-FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
-FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
-FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
-FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
-FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
-FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
-FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
-FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
-FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
-FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
-FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
-FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
-FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
-FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
-FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
-FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
-FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
-FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
-FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
-FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
-FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
-FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
-FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
-FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
-FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
-FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
-FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
-FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
-FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
-FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
-FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
-FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;;
-FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
-FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
-FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
-FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
-FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
-FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
-FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;;
-FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;;
-FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;;
-FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;;
-FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;;
-FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;;
-FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;;
-FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;;
-FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;;
-FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;;
-FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;;
-FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;;
-FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;;
-FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON;<vertical> 002C;;;;N;;;;;
-FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
-FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
-FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
-FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
-FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
-FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
-FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
-FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
-FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 2026;;;;N;;;;;
-FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;
-FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
-FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;;
-FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
-FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
-FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
-FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
-FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
-FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
-FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
-FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
-FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
-FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
-FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
-FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
-FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
-FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
-FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
-FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
-FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
-FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
-FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
-FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
-FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;;
-FE45;SESAME DOT;Po;0;ON;;;;;N;;;;;
-FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;;
-FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON;<vertical> 005B;;;;N;;;;;
-FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
-FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
-FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
-FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
-FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
-FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
-FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
-FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
-FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
-FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
-FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
-FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
-FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
-FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
-FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
-FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
-FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;
-FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
-FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
-FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
-FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
-FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
-FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
-FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
-FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
-FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
-FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
-FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
-FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
-FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
-FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
-FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
-FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
-FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
-FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
-FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
-FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
-FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
-FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
-FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
-FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
-FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
-FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
-FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
-FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
-FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
-FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
-FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
-FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
-FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
-FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
-FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
-FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
-FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
-FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
-FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
-FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
-FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
-FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
-FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
-FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
-FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
-FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
-FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
-FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
-FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
-FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
-FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
-FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
-FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
-FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
-FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
-FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
-FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
-FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
-FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
-FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
-FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
-FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
-FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
-FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
-FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
-FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
-FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
-FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
-FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
-FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
-FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
-FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
-FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
-FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
-FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
-FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
-FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
-FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
-FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
-FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
-FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
-FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
-FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
-FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
-FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
-FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
-FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
-FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
-FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
-FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
-FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
-FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
-FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
-FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
-FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
-FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
-FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
-FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
-FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
-FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
-FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
-FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
-FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
-FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
-FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
-FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
-FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
-FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
-FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
-FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
-FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
-FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
-FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
-FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
-FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
-FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
-FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
-FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
-FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
-FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
-FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
-FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
-FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
-FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
-FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
-FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
-FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
-FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
-FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
-FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
-FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
-FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
-FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
-FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
-FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
-FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
-FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
-FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
-FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
-FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
-FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
-FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
-FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
-FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
-FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
-FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
-FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
-FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
-FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
-FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;;
-FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;;
-FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
-FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
-FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;;
-FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;;
-FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON;<wide> 0021;;;;N;;;;;
-FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
-FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
-FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
-FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
-FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
-FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
-FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
-FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
-FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
-FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
-FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
-FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
-FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
-FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
-FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
-FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
-FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
-FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
-FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
-FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
-FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
-FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
-FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
-FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
-FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
-FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
-FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
-FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
-FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
-FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
-FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
-FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
-FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
-FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
-FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
-FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
-FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
-FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
-FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
-FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
-FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
-FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
-FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
-FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
-FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
-FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
-FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
-FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
-FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
-FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
-FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
-FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
-FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
-FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
-FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
-FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
-FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
-FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
-FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
-FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
-FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
-FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
-FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
-FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
-FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
-FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
-FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
-FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
-FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
-FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
-FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
-FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
-FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
-FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
-FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
-FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
-FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
-FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
-FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
-FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
-FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
-FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
-FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
-FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
-FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
-FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
-FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
-FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
-FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
-FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
-FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
-FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
-FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
-FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;;;;
-FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;;;;
-FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
-FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
-FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
-FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
-FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;
-FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
-FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
-FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
-FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
-FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
-FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
-FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
-FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
-FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
-FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
-FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
-FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
-FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
-FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
-FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
-FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
-FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
-FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
-FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
-FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
-FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
-FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
-FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
-FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
-FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
-FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
-FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
-FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
-FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
-FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
-FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
-FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
-FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
-FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
-FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
-FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
-FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
-FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
-FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
-FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
-FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
-FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
-FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
-FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
-FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
-FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
-FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
-FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
-FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
-FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
-FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
-FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
-FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
-FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
-FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
-FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
-FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;
-FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
-FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
-FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
-FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
-FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
-FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
-FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
-FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
-FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
-FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
-FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
-FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
-FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
-FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
-FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
-FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
-FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
-FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
-FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
-FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
-FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
-FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
-FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
-FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
-FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
-FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
-FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
-FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
-FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
-FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
-FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
-FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
-FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
-FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
-FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
-FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
-FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
-FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
-FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
-FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
-FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
-FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
-FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
-FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
-FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
-FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
-FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
-FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
-FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
-FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
-FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
-FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
-FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
-FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
-FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
-FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
-FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
-FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
-FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
-FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
-FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
-FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
-FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
-FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
-FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
-FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
-FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 25CB;;;;N;;;;;
-FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;;
-FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;;
-FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;;
-FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
-10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;;
-10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;;
-10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;;
-10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;;
-10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;;
-10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;;
-10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;;
-10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;;
-10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;;
-10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;;
-1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;;
-1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;;
-1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;;
-1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;;
-1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;;
-10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;;
-10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;;
-10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;;
-10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;;
-10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;;
-10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;;
-10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;;
-10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;;
-10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;;
-10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;;
-1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;;
-1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;;
-1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;;
-1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;;
-1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;;
-1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;;
-10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;;
-10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;;
-10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;;
-10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;;
-10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;;
-10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;;
-10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;;
-10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;;
-10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;;
-1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;;
-1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;;
-1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;;
-1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;;
-1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;;
-1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;;
-10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;;
-10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;;
-10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;;
-10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;;
-10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;;
-10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;;
-10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;;
-10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;;
-10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;;
-10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;;
-1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;;
-1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;;
-1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;;
-1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;;
-10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;;
-10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;;
-10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;;
-10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;;
-10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;;
-10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;;
-10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;;
-10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;;
-10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;;
-10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;;
-1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;;
-1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;;
-1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;;
-1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;;
-10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;;
-10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;;
-10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;;
-10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;;
-10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;;
-10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;;
-10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;;
-10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;;
-10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;;
-10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;;
-1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;;
-1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;;
-1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;;
-1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;;
-10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;;
-10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;;
-10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;;
-10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;;
-10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;;
-10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;;
-10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;;
-10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;;
-10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;;
-10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;;
-1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;;
-1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;;
-1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;;
-1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;;
-1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;;
-1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;;
-10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;;
-10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;;
-10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;;
-10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;;
-10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;;
-10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;;
-10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;;
-10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;;
-10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;;
-10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;;
-1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;;
-1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;;
-1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;;
-1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;;
-1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;;
-1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;;
-100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;
-100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;;
-100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;;
-100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;;
-100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;;
-100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;;
-100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;;
-100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;;
-100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;;
-100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;;
-100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;;
-100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;;
-100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;;
-100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;;
-100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;;
-100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;;
-100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;;
-100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;;
-100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;;
-100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;;
-100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;;
-100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;;
-100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;;
-100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;;
-100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;;
-100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;;
-100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;;
-100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;;
-100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;;
-100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;;
-100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;;
-100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;;
-100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;;
-100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;;
-100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;;
-100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;;
-100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;;
-100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;;
-100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;;
-100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;;
-100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;;
-100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;;;;
-100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
-100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;;
-100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;;
-100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;;
-100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;;
-100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;;
-100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;;
-100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;;
-100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;;
-100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;;
-100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;;
-100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;;
-100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;;
-100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;;
-100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;;
-100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;;
-100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;;
-100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;;
-100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;;
-100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;;
-100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;;
-100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;;
-100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;;
-100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;;
-100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;;
-100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;;
-100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;;
-100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;;
-100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;;
-100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;;
-100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;;
-100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;;
-100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;;
-100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;;
-100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;;
-100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;;
-100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;;
-100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;;
-100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;;
-100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;;
-100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;;
-100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;;
-100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;;
-100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;;
-100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;;
-100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;;
-100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;;
-100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;;
-100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;;
-10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;;
-10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;;
-10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;;
-10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;;
-10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;;
-10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;;
-1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;;
-1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;;
-1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;;
-1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;;
-1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;;
-1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;;
-10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;;
-10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;;
-10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;;
-10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;;
-10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;;
-10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;;
-10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;;
-10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;;
-10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;;
-10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
-1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;;
-1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;;
-1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;;
-1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;;
-1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;;
-1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;;
-10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;;
-10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;;
-10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
-10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;;
-10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;;
-10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;;
-10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;;
-10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;;
-10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;;
-10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;;
-1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;;
-1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;;
-1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;;
-1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;;
-1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;;
-1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;;
-10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;;
-10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;;
-10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;;
-10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;;
-10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;;
-10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;;
-10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;;
-1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;;
-1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;;
-1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
-1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;;
-1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;;
-1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;;
-10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;;
-10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;;
-10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;;
-10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;;
-10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;;
-10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
-10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;;
-10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;;
-10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;;
-1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;;
-1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;;
-1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;;
-1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;;
-1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;;
-1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;;
-10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;;
-10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;;
-10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;;
-10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;;
-10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;;
-10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;;
-10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;;
-10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;;
-10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;;
-10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;;
-1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;;
-1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;;
-1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;;
-1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
-1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;;
-1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;;
-10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;;
-10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;;
-10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;;
-10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
-10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;;
-10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
-10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;;
-1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;;
-1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;;
-1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;;
-10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;;
-10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;;
-10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;;
-10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;;
-10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;;
-10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;;
-10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;;
-10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;;
-10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;;
-1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;;
-1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;;
-1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;;
-1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;;
-1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;;
-1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;;
-10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;;
-10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;;
-10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;;
-10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;;
-10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;;
-10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;;
-10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;;
-10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;;
-10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;;
-10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;;
-1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;;
-10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
-10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
-10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
-10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;
-10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;
-10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;
-10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;
-10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;
-10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;
-10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
-1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
-1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
-101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
-101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
-101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;
-101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;
-101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;
-101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;
-101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;
-101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;
-101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;
-101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;
-101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;
-101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;
-101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;
-101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;
-101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;
-101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;
-101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;
-101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;
-101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;
-101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;
-101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;
-101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;
-101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;
-101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;
-101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;
-101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;
-101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;
-101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;
-101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;
-101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;
-101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;
-101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;
-101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;
-101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;
-101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;
-101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;
-101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;
-101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;
-101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;
-101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;
-101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;
-101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;
-101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;
-101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;
-101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;
-101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;
-10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;
-10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;
-10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;
-10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;
-10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;
-10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;
-10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;
-10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;
-10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;
-10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;
-1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;
-1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;
-1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;
-1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;
-1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;
-1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;
-10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;
-10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;
-10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;
-10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;
-10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;
-10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;
-10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;
-10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;
-10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;
-10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;
-1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;
-1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;
-1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;
-102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;
-102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;
-102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;
-102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;
-102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;
-102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;
-102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;
-102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;
-102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;
-102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;
-102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;
-102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;
-102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;
-102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;
-102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;
-102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;
-102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;
-102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;
-102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;
-102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;
-102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;
-102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;
-102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;
-102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;
-102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;
-102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;
-102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;
-102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;
-102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;
-102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;
-102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;
-102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;
-102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;
-102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;
-102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;
-102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;
-102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;
-102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;
-102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;
-102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;
-102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;
-102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;
-102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;
-102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;
-102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;
-102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;
-102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;
-102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;
-102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;;
-10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;;
-10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;;
-10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;;
-10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;;
-10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;;
-10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;;
-10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;;
-10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;;
-10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;;
-10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;;
-1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;;
-1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;;
-1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;;
-1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;;
-1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;;
-1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;;;;
-10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;;
-10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;;
-10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;;
-10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;;
-10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;;
-10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;;
-10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;;
-10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;;;;
-10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;;
-10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;;
-1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;;
-1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;;;;
-1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;;
-1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;;
-1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;;
-10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;;
-10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;;
-10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;;
-10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;;
-10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;;
-10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;;
-10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;;
-10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;;
-10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;;
-10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;;
-10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;;
-10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;;
-10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;;
-10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;;
-1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;;
-1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;;
-1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;;
-1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;;
-1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;;
-1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;;
-10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;;
-10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;;
-10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;;
-10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;;
-10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;;
-10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;;
-10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;;
-10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;;
-10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;;
-10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;;
-1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;;
-10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;;
-10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;;
-10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;;
-10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;;
-10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;;
-10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;;
-10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;;
-10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;;
-10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;;
-10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;;
-1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;;
-1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;;
-1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;;
-1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;;
-1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;;
-1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;;
-10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;;
-10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;;
-10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;;
-10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;;
-10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;;
-10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;;
-10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;;
-10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;;
-10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;;
-10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;;
-1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;;
-1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;;
-1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;;
-1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;;
-1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;;
-103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;;
-103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;;
-103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;;
-103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;;
-103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;;
-103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;;
-103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;;
-103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;;
-103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;;
-103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;;
-103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;;
-103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;;
-103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;;
-103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;;
-103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;;
-103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;;
-103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;;
-103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;;
-103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;;
-103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;;
-103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;;
-103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;;
-103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;;
-103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;;
-103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;;
-103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;;
-103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;;
-103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;;
-103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;;
-103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;;
-103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;;
-103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;;
-103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;;
-103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;;
-103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;;
-103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;;
-103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;;
-103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;;
-103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;;
-103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;;
-103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;;
-103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;;
-103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;;
-103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;;
-103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
-103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;;
-103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;;
-103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;;
-103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;;
-103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;;
-10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428;
-10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429;
-10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A;
-10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B;
-10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C;
-10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D;
-10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E;
-10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F;
-10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430;
-10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431;
-1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432;
-1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433;
-1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434;
-1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435;
-1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436;
-1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437;
-10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438;
-10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439;
-10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A;
-10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B;
-10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C;
-10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D;
-10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E;
-10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F;
-10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440;
-10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441;
-1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442;
-1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443;
-1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444;
-1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445;
-1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446;
-1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447;
-10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448;
-10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449;
-10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A;
-10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B;
-10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C;
-10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D;
-10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E;
-10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F;
-10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400
-10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401
-1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402
-1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403
-1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404
-1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405
-1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406
-1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407
-10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408
-10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409
-10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A
-10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B
-10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C
-10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D
-10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E
-10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F
-10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410
-10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411
-1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412
-1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413
-1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414
-1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415
-1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416
-1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417
-10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418
-10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419
-10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A
-10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B
-10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C
-10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D
-10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E
-10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F
-10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420
-10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421
-1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422
-1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423
-1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424
-1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425
-1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426
-1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427
-10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;;
-10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;;
-10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;;
-10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;;
-10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;;
-10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;;
-10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;;
-10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;;
-10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;;
-10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;;
-1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;;
-1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;;
-1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;;
-1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;;
-1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;;
-1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;;
-10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;;
-10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;;
-10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;;
-10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;;
-10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;;
-10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;;
-10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;;
-10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;;
-10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;;
-10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;;
-1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;;
-1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;;
-1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;;
-1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;;
-1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;;
-1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;;
-10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;;
-10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;;
-10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;;
-10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;;
-10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;;
-10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;;
-10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;;
-10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;;
-10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;;
-10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;;
-1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;;
-1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;;
-1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;;
-1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;;
-1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;;
-1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;;
-10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;;
-10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;;
-10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;;
-10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;;
-10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;;
-10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;;
-10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;;
-10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;;
-10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;;
-10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;;
-1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;;
-1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;;
-1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;;
-1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;;
-1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;;
-1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;;
-10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;;
-10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;;
-10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;;
-10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;;
-10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;;
-10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;;
-10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;;
-10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;;
-10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;;
-10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;;
-1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;;
-1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;;
-1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;;
-1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;;
-104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
-104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
-104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
-104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
-104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
-104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
-104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
-104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
-104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
-104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
-10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
-10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
-10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
-10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;;
-10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;;
-10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;;
-10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;;
-1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;;
-1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;;
-1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;;
-1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;;
-1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;;
-1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;;
-10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;;
-10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;;
-10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;;
-10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;;
-10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;;
-10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;;
-10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;;
-10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;;
-10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;;
-10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;;
-1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;;
-1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;;
-1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;;
-1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;;
-1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;;
-1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;;
-10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;;
-10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;;
-10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;;
-10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;;
-10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;;
-10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;;
-10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;;
-10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;;
-10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;;
-10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;;
-1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;;
-1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;;
-1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;;
-1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;;
-1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;;
-1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;;
-10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;;
-10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;;
-10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;;
-10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;;
-10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;;
-10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;;
-10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;;
-10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;;
-1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;;
-1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;;
-10840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;
-10841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;
-10842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-10843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;;
-10844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;;
-10845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;;
-10846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
-10847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;;
-10848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;;
-10849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;;
-1084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;;
-1084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
-1084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;;
-1084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;;
-1084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-1084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;;
-10850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;;
-10851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;;
-10852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;;
-10853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;;
-10854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;;
-10855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;;
-10857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;;
-10858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;;
-10859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;;
-1085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;;
-1085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;;
-1085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;;
-1085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
-1085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
-1085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;;
-10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;;
-10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;;
-10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;;
-10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;;
-10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;;
-10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;;
-10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;;
-10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;;
-10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;;
-10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;;
-1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;;
-1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;;
-1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
-1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
-1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;;
-1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;;
-10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;;
-10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;;
-10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;;
-10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;;
-10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
-10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;;
-10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
-10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
-10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
-10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
-1091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
-1091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
-1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
-10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;
-10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;
-10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;
-10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;
-10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;
-10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;
-10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;
-10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;
-10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;
-10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;
-1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;
-1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;
-1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;
-1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;
-1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;
-1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;
-10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;
-10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;
-10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;
-10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;
-10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;
-10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;
-10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;
-10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;
-10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;
-10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;
-1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;;
-10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;;
-10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
-10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
-10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
-10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;;
-10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;;
-10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;;
-10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;;
-10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;;
-10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;;
-10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;;
-10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;;
-10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;;
-10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;;
-10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;;
-10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;;
-10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;;
-10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;;
-10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;;
-10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;;
-10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;;
-10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;;
-10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;;
-10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;;
-10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;;
-10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;;
-10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;;
-10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;;
-10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;;
-10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;;
-10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;;
-10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;;
-10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;;
-10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;;
-10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;;
-10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;;
-10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;;
-10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;;
-10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;;
-10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;;
-10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;;
-10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;;
-10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;;
-10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;;
-10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;;
-10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;;
-10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;;
-10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;;
-10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;;
-10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;;
-10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
-10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
-10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
-10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;;
-10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;;
-10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;;
-10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;;
-10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;;
-10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;;
-10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;;
-10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;;
-10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;;
-10A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;;
-10A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
-10A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
-10A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
-10A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;
-10A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
-10A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
-10A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
-10A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
-10A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
-10A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;;
-10A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
-10A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
-10A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;;
-10A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
-10A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-10A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;;
-10A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;;
-10A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;;
-10A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;;
-10A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-10A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
-10A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;;
-10A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;;
-10A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;;
-10A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;;
-10A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
-10A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;;
-10A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;;
-10A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
-10A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;
-10A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;;
-10B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;;
-10B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;;
-10B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;;
-10B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;;
-10B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;;
-10B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;;
-10B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;;
-10B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;;
-10B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;;
-10B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;;
-10B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;;
-10B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;;
-10B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;;
-10B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;;
-10B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;;
-10B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;;
-10B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;;
-10B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;;
-10B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;;
-10B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;;
-10B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;;
-10B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;;
-10B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;;
-10B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;;
-10B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;;
-10B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;;
-10B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;;
-10B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;;
-10B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;;
-10B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;;
-10B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;;
-10B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;;
-10B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;;
-10B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;;
-10B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;;
-10B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;;
-10B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;;
-10B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;;
-10B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;;
-10B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;;
-10B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;;
-10B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;;
-10B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;;
-10B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;;
-10B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;;
-10B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;;
-10B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;;
-10B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;;
-10B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;;
-10B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;;
-10B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;;
-10B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;;
-10B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;;
-10B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;;
-10B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;;
-10B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-10B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-10B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
-10B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
-10B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;;
-10B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;;
-10B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
-10B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
-10B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-10B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
-10B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;;
-10B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
-10B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
-10B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
-10B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;;
-10B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
-10B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
-10B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
-10B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
-10B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
-10B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-10B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;
-10B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;;
-10B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
-10B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;
-10B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
-10B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
-10B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
-10B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
-10B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
-10B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
-10B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;
-10B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
-10B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
-10B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
-10B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
-10B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;;
-10B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;;
-10B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;;
-10B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;;
-10B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;;
-10B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;;
-10B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
-10B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;;
-10B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;;
-10B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;;
-10B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;;
-10B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
-10B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;;
-10B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;;
-10B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
-10B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;;
-10B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;;
-10B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;;
-10B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;;
-10B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;;
-10B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;;
-10B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;;
-10B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;;
-10B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;;
-10B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
-10B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
-10B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
-10C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;;
-10C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;;
-10C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;;
-10C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;;
-10C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;;
-10C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;;
-10C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;;
-10C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;;
-10C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;;
-10C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;;
-10C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;;
-10C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;;
-10C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;;
-10C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;;
-10C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;;
-10C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;;
-10C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;;
-10C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;;
-10C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;;
-10C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;;
-10C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;;
-10C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;;
-10C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;;
-10C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;;
-10C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;;
-10C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;;
-10C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;;
-10C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;;
-10C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;;
-10C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;;
-10C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;;
-10C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;;
-10C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;;
-10C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;;
-10C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;;
-10C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;;
-10C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;;
-10C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;;
-10C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;;
-10C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;;
-10C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;;
-10C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;;
-10C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;;
-10C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;;
-10C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;;
-10C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;;
-10C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;;
-10C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;;
-10C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;;
-10C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;;
-10C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;;
-10C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;;
-10C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;;
-10C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;;
-10C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;;
-10C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;;
-10C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;;
-10C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;;
-10C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;;
-10C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;;
-10C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;;
-10C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;;
-10C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;;
-10C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;;
-10C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;;
-10C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;;
-10C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;;
-10C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;;
-10C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;;
-10C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;;
-10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;;
-10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;;
-10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;;
-10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
-10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
-10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
-10E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;;
-10E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;;
-10E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;;
-10E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;;
-10E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;;
-10E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;;
-10E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;;
-10E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;;
-10E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;;
-10E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;;
-10E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;;
-10E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;;
-10E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;;
-10E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;;
-10E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;;
-10E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;;
-10E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;;
-10E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;;
-10E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;;
-10E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;;
-10E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;;
-10E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;;
-10E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;;
-10E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;;
-10E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;;
-10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;
-10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;
-10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;
-11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
-11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
-11082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
-11083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;;
-11084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;;
-11085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;;
-11086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;;
-11087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;;
-11088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;;
-11089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;;
-1108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;;
-1108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;;
-1108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;;
-1108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;;
-1108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;;
-1108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;;
-11090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;;
-11091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;;
-11092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;;
-11093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;;
-11094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;;
-11095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;;
-11096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;;
-11097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;;
-11098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
-11099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;;
-1109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;;
-1109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
-1109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;;
-1109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;;
-1109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;;
-1109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;;
-110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;;
-110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;;
-110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;;
-110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;;
-110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;;
-110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;;
-110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;;
-110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;;
-110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;;
-110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;;
-110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;;
-110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;;
-110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;;
-110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;;
-110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;;
-110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;;
-110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
-110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
-110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
-110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
-110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
-110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
-110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
-110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
-110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
-110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
-110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
-110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
-110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;;
-110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;;
-110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;;
-110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
-110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
-110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
-12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;;
-12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;;
-12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;;
-12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;;
-12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;;
-12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;;
-12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;;
-12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;;
-12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;;
-1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;;
-1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;;
-1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
-1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;;
-1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;;
-12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;;
-12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
-12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;;
-12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
-12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;;
-12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;;
-12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;;
-12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
-1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;;
-1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
-1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;;
-1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;;
-1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;;
-1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;;
-12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;;
-12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;;
-12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;;
-12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;;
-12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;;
-12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;;
-12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;;
-12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;;
-12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;;
-12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;;
-1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;;
-1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;;
-1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;;
-1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;;
-1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;;
-1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;;
-12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;;
-12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;;
-12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;;
-12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;;
-12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;;
-12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;;
-12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;;
-12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;;
-12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;;
-12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
-1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;;
-1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;;
-1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
-1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;;
-1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;;
-1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;;
-12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;;
-12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;;
-12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;;
-12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;;
-12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;;
-12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;;
-12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;;
-12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;;
-12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;;
-12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;;
-1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;;
-1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;;
-1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;;
-1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;;
-1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;;
-12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;;
-12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;;
-12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;;
-12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;;
-12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;;
-12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;;
-12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;;
-12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;;
-12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;;
-12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;;
-1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
-1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;;
-1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;;
-1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;;
-1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;;
-1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;;
-12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;;
-12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;;
-12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;;
-12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;;
-12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;;
-12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;;
-12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;;
-12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;;
-12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;;
-12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;;
-1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;;
-1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;;
-1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;;
-1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;;
-1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;;
-1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;;
-12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;;
-12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;;
-12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;;
-12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;;
-12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;;
-12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
-12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;;
-12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;;
-12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;;
-12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;;
-1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;;
-1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;;
-1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;;
-1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;;
-1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;;
-1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;;
-12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;;
-12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;;
-12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;;
-12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;;
-12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;;
-12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;;
-12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;;
-12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
-12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;;
-12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;;
-1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;;
-1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;;
-1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;;
-1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;;
-1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;;
-1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;;
-12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;;
-12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;;
-12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;;
-12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;;
-12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;;
-12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;;
-12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;;
-12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;;
-12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;;
-12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;;
-1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;;
-1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;;
-1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;;
-1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;;
-1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;;
-120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;;
-120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;;
-120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;;
-120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
-120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
-120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;;
-120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;;
-120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;;
-120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;;
-120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;;
-120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;;
-120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;;
-120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;;
-120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;;
-120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;;
-120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
-120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;;
-120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;;
-120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;;
-120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;;
-120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;;
-120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;;
-120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;;
-120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
-120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
-120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
-120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;;
-120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;;
-120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
-120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;;
-120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;;
-120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;;
-120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;;
-120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;;
-120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;;
-120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;;
-120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;;
-120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;;
-120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;;
-120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;;
-120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;;
-120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;;
-120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;;
-120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;;
-120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;;
-120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;;
-120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;;
-120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;;
-120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;;
-120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;;
-120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;;
-120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;;
-120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;;
-120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
-120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;;
-120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;;
-120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;;
-120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;;
-120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
-120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;;
-120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
-120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;;
-120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;;
-120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;;
-120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;;
-120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
-120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;;
-120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;;
-120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;;
-120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;;
-120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;;
-120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;;
-120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;;
-120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;;
-120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;;
-120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;;
-120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;;
-120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;;
-120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;;
-120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;;
-120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;;
-120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;;
-120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;;
-120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;;
-120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;;
-120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;;
-120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;;
-120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;;
-120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;;
-120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;;
-12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;;
-12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;;
-12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;;
-12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;;
-12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;;
-12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;;
-12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;;
-12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;;
-12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;;
-12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;;
-1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;;
-1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;;
-1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;;
-1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;;
-1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;;
-12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;;
-12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;;
-12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
-12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;;
-12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;;
-12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;;
-12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;;
-12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;;
-12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;;
-12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;;
-1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;;
-1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;;
-1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;;
-1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;;
-1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;;
-12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;;
-12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;;
-12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;;
-12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;;
-12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;;
-12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;;
-12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;;
-12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;;
-12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;;
-12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;;
-1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;;
-1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;;
-1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;;
-1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;;
-1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;;
-1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
-12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;;
-12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;;
-12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;;
-12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;;
-12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;;
-12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;;
-12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;;
-12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;;
-12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;;
-12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;;
-1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;;
-1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
-1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;;
-1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;;
-1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;;
-1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;;
-12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;;
-12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;;
-12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;;
-12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;;
-12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;;
-12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;;
-12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;;
-12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;;
-12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;;
-12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;;
-1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;;
-1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;;
-1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;;
-1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;;
-1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;;
-12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;;
-12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;;
-12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;;
-12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;;
-12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;;
-12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;;
-12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;;
-12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;;
-12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;;
-12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;;
-1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;;
-1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;;
-1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;;
-1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;;
-1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;;
-1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;;
-12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;;
-12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;;
-12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;;
-12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;;
-12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;;
-12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;;
-12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;;
-12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;;
-12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;;
-1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;;
-1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;;
-1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;;
-1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;;
-1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;;
-1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;;
-12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;;
-12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;;
-12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;;
-12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;;
-12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;;
-12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;;
-12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;;
-12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;;
-12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;;
-12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;;
-1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;;
-1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;;
-1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;;
-1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;;
-1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;;
-1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;;
-12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;;
-12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;;
-12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;;
-12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;;
-12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;;
-12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;;
-12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;;
-12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;;
-12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;;
-12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;;
-1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
-1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;;
-1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;;
-1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;;
-1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;;
-1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;;
-12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;;
-12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;;
-12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;;
-12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;;
-12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;;
-12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;;
-12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;;
-12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;;
-12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;;
-1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;;
-1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;;
-1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;;
-1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
-1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
-1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;;
-121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;;
-121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;;
-121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;;
-121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;;
-121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;;
-121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;;
-121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;;
-121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;;
-121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;;
-121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;;
-121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;;
-121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;;
-121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;;
-121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;;
-121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;;
-121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;;
-121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;;
-121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;;
-121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;;
-121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;;
-121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;;
-121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;;
-121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;;
-121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;;
-121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;;
-121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;;
-121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;;
-121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;;
-121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;;
-121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;;
-121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;;
-121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;;
-121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;;
-121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;;
-121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;;
-121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;;
-121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;;
-121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;;
-121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;;
-121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;;
-121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;;
-121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;;
-121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;;
-121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;;
-121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;;
-121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;;
-121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;;
-121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;;
-121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;;
-121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;;
-121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;;
-121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;;
-121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;;
-121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;;
-121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;;
-121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;;
-121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
-121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;;
-121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;;
-121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
-121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;;
-121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;;
-121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;;
-121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;;
-121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;;
-121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;;
-121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;;
-121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;;
-121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;;
-121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
-121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
-121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
-121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;;
-121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;;
-121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;;
-121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;;
-121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;;
-121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;;
-121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;;
-121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;;
-121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;;
-121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;;
-121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;;
-121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;;
-121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;;
-121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;;
-121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;;
-121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;;
-121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;;
-121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;;
-121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;;
-121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;;
-121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;;
-121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;;
-121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;;
-12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;;
-12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;;
-12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;;
-12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;;
-12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;;
-12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
-12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;;
-12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;;
-12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;;
-1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;;
-1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;;
-1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;;
-1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;;
-1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;;
-1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;;
-12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;;
-12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;;
-12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;;
-12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;;
-12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;;
-12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;;
-12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;;
-12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;;
-12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;;
-12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;;
-1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;;
-1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;;
-1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;;
-1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;;
-1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;;
-1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;;
-12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;;
-12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;;
-12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;;
-12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;;
-12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;;
-12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;;
-12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;;
-12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;;
-12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;;
-1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;;
-1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;;
-1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;;
-1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;;
-1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;;
-1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;;
-12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;;
-12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;;
-12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;;
-12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;;
-12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;;
-12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;;
-12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;;
-12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
-12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;;
-12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;;
-1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;;
-1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;;
-1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;;
-1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;;
-1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;;
-1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;;
-12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;;
-12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;;
-12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;;
-12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;;
-12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;;
-12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;;
-12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;;
-12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;;
-12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;;
-12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;;
-1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;;
-1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;;
-1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;;
-1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;;
-1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;;
-1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;;
-12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;;
-12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;;
-12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;;
-12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
-12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;;
-12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;;
-12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;;
-12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;;
-1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;;
-1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;;
-1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;;
-1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;;
-1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
-1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;;
-12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;;
-12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;;
-12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;;
-12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;;
-12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;;
-12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;;
-12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
-12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;;
-12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;;
-12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;;
-1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;;
-1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;;
-1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;;
-1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;;
-1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
-1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;;
-12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;;
-12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;;
-12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;;
-12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;;
-12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;;
-12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;;
-12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;;
-12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;;
-12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;;
-1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;;
-1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;;
-1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;;
-1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;;
-1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;;
-1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;;
-12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;;
-12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;;
-12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;;
-12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;;
-12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;;
-12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;;
-12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;;
-12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;;
-12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;;
-12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;;
-1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;;
-1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;;
-1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;;
-1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;;
-1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;;
-1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;;
-12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;;
-12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;;
-12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;;
-12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;;
-12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;;
-12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;;
-12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;;
-12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;;
-12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;;
-12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;;
-1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;;
-1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;;
-1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;;
-1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;;
-1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;;
-1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;;
-122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;;
-122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;;
-122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;;
-122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;;
-122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;;
-122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;;
-122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;;
-122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;;
-122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;;
-122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;;
-122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;;
-122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;;
-122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;;
-122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;;
-122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;;
-122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;;
-122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;;
-122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;;
-122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;;
-122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;;
-122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;;
-122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;;
-122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;;
-122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;;
-122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;;
-122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;;
-122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;;
-122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;;
-122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;;
-122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;;
-122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;;
-122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;;
-122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;;
-122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;;
-122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;;
-122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;;
-122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;;
-122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;;
-122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;;
-122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;;
-122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;;
-122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;;
-122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;;
-122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;;
-122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;;
-122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;;
-122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;;
-122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;;
-122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;;
-122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;;
-122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;;
-122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;;
-122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;;
-122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;;
-122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;;
-122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;;
-122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;;
-122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;;
-122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;;
-122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;;
-122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;;
-122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;;
-122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;;
-122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;;
-122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;;
-122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;;
-122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;;
-122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;;
-122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;;
-122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;;
-122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;;
-122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;;
-122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;;
-122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;;
-122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;;
-122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;;
-122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;;
-122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;;
-122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;;
-122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;;
-122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;;
-122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;;
-122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;;
-122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;;
-122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;;
-122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;;
-122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;;
-122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;;
-122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;;
-122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;;
-122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;;
-122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;;
-122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;;
-122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;;
-12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;;
-12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;;
-12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;;
-12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;;
-12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;;
-12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;;
-12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;;
-12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;;
-12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;;
-1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;;
-1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;;
-1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;;
-1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;;
-1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;;
-1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;;
-12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;;
-12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;;
-12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;;
-12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;;
-12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;;
-12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;;
-12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;;
-12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;;
-12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;;
-12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;;
-1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;;
-1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;;
-1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;;
-1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;;
-1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;;
-1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;;
-12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;;
-12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;;
-12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;;
-12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;;
-12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;;
-12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;;
-12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;;
-12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;;
-12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;;
-12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;;
-1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;;
-1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;;
-1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;;
-1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;;
-1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;;
-1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;;
-12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;;
-12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;;
-12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;;
-12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;;
-12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;;
-12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;;
-12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;;
-12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;;
-12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;;
-12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;;
-1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;;
-1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;;
-1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;;
-1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;;
-1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;;
-1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;;
-12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;;
-12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;;
-12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;;
-12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;;
-12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;;
-12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;;
-12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;;
-12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;;
-12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;;
-12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;;
-1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;;
-1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;;
-1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;;
-1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;;
-1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;;
-1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;;
-12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;;
-12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;;
-12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;;
-12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;;
-12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;;
-12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;;
-12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;;
-12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;;
-12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;;
-12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;;
-1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;;
-1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;;
-1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;;
-1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;;
-1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;;
-1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;;
-12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;;
-12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;;
-12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;;
-12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;;
-12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;;
-12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;;
-12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;;
-12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;;
-12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;;
-12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;;
-1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;;
-1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;;
-1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;;
-1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;;
-1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;;
-12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;;
-12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;;
-12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;;
-12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;;
-12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;;
-12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;;
-12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;;
-12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;;
-12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;;
-12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;;
-1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;;
-1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;;
-1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;;
-1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;;
-1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;;
-1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;;
-12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;;
-12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;;
-12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;;
-12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;;
-12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;;
-12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;;
-12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;;
-12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;;
-12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;;
-12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;;
-1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;;
-1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;;
-1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;;
-1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;;
-1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;;
-1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;;
-12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;;
-12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;;
-12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;;
-12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;;
-12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;;
-12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;;
-12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;;
-12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;;
-12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;;
-12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;;
-1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;;
-1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;;
-1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;;
-1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;;
-1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;;
-1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
-12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
-12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
-12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
-12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
-12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
-12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
-12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
-12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
-12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;;
-12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;;
-1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;;
-1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;;
-1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;;
-1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;;
-1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;;
-1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;;
-12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;;
-12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;;
-12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;;
-12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;;
-12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;;
-12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;;
-12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;;
-12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;;
-12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;;
-12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;;
-1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;;
-1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;;
-1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;;
-1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;;
-1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;;
-1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;;
-12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;;
-12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;;
-12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;;
-12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
-12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
-12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
-12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
-12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
-12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
-12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
-1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
-1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;;
-1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;;
-1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;;
-1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;;
-1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;;
-12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;;
-12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;;
-12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;;
-12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;;
-12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;;
-12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;;
-12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;;
-13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
-13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
-13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
-13003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;;
-13004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;;
-13005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;;
-13006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;;
-13007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;;
-13008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;;
-13009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;;
-1300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;;
-1300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;;
-1300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;;
-1300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;;
-1300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;;
-1300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;;
-13010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;;
-13011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;;
-13012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;;
-13013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;;
-13014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;;
-13015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;;
-13016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;;
-13017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;;
-13018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;;
-13019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;;
-1301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;;
-1301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;;
-1301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;;
-1301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;;
-1301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;;
-1301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;;
-13020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;;
-13021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;;
-13022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;;
-13023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;;
-13024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;;
-13025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;;
-13026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;;
-13027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;;
-13028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;;
-13029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;;
-1302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;;
-1302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;;
-1302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;;
-1302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;;
-1302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;;
-1302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;;
-13030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;;
-13031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;;
-13032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;;
-13033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;;
-13034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;;
-13035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;;
-13036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;;
-13037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;;
-13038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;;
-13039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;;
-1303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;;
-1303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;;
-1303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;;
-1303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;;
-1303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;;
-1303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;;
-13040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;;
-13041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;;
-13042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;;
-13043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;;
-13044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;;
-13045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;;
-13046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;;
-13047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;;
-13048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;;
-13049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;;
-1304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;;
-1304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;;
-1304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;;
-1304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;;
-1304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;;
-1304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;;
-13050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;;
-13051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;;
-13052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;;
-13053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;;
-13054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;;
-13055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;;
-13056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;;
-13057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;;
-13058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;;
-13059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;;
-1305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;;
-1305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;;
-1305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;;
-1305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;;
-1305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;;
-1305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;;
-13060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;;
-13061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;;
-13062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;;
-13063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;;
-13064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;;
-13065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;;
-13066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;;
-13067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;;
-13068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;;
-13069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;;
-1306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;;
-1306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;;
-1306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;;
-1306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;;
-1306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;;
-1306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;;
-13070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;;
-13071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;;
-13072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;;
-13073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;;
-13074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;;
-13075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;;
-13076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;;
-13077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;;
-13078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;;
-13079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;;
-1307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;;
-1307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;;
-1307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;;
-1307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;;
-1307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;;
-1307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;;
-13080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;;
-13081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;;
-13082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;;
-13083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;;
-13084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;;
-13085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;;
-13086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;;
-13087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;;
-13088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;;
-13089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;;
-1308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;;
-1308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;;
-1308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;;
-1308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;;
-1308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;;
-1308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;;
-13090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;;
-13091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;;
-13092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;;
-13093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;;
-13094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;;
-13095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;;
-13096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;;
-13097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;;
-13098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;;
-13099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;;
-1309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;;
-1309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;;
-1309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;;
-1309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;;
-1309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;;
-1309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;;
-130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;;
-130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;;
-130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;;
-130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;;
-130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;;
-130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;;
-130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;;
-130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;;
-130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;;
-130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;;
-130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;;
-130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;;
-130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;;
-130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;;
-130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;;
-130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;;
-130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;;
-130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;;
-130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;;
-130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;;
-130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;;
-130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;;
-130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;;
-130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;;
-130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;;
-130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;;
-130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;;
-130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;;
-130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;;
-130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;;
-130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;;
-130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;;
-130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;;
-130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;;
-130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;;
-130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;;
-130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;;
-130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;;
-130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;;
-130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;;
-130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;;
-130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;;
-130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;;
-130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;;
-130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;;
-130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;;
-130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;;
-130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;;
-130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;;
-130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;;
-130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;;
-130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;;
-130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;;
-130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;;
-130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;;
-130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;;
-130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;;
-130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;;
-130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;;
-130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;;
-130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;;
-130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;;
-130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;;
-130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;;
-130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;;
-130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;;
-130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;;
-130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;;
-130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;;
-130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;;
-130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;;
-130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;;
-130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;;
-130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;;
-130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;;
-130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;;
-130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;;
-130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;;
-130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;;
-130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;;
-130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;;
-130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;;
-130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;;
-130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;;
-130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;;
-130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;;
-130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;;
-130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;;
-130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;;
-130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;;
-130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;;
-130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;;
-130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;;
-130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;;
-130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;;
-130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;;
-13100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;;
-13101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;;
-13102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;;
-13103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;;
-13104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;;
-13105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;;
-13106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;;
-13107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;;
-13108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;;
-13109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;;
-1310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;;
-1310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;;
-1310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;;
-1310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;;
-1310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;;
-1310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;;
-13110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;;
-13111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;;
-13112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;;
-13113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;;
-13114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;;
-13115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;;
-13116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;;
-13117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;;
-13118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;;
-13119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;;
-1311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;;
-1311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;;
-1311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;;
-1311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;;
-1311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;;
-1311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;;
-13120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;;
-13121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;;
-13122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;;
-13123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;;
-13124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;;
-13125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;;
-13126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;;
-13127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;;
-13128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;;
-13129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;;
-1312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;;
-1312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;;
-1312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;;
-1312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;;
-1312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;;
-1312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;;
-13130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;;
-13131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;;
-13132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;;
-13133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;;
-13134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;;
-13135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;;
-13136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;;
-13137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;;
-13138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;;
-13139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;;
-1313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;;
-1313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;;
-1313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;;
-1313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;;
-1313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;;
-1313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;;
-13140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;;
-13141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;;
-13142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;;
-13143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;;
-13144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;;
-13145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;;
-13146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;;
-13147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;;
-13148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;;
-13149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;;
-1314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;;
-1314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;;
-1314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;;
-1314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;;
-1314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;;
-1314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;;
-13150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;;
-13151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;;
-13152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;;
-13153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;;
-13154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;;
-13155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;;
-13156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;;
-13157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;;
-13158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;;
-13159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;;
-1315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;;
-1315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;;
-1315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;;
-1315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;;
-1315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;;
-1315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;;
-13160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;;
-13161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;;
-13162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;;
-13163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;;
-13164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;;
-13165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;;
-13166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;;
-13167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;;
-13168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;;
-13169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;;
-1316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;;
-1316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;;
-1316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;;
-1316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;;
-1316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;;
-1316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;;
-13170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;;
-13171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;;
-13172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;;
-13173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;;
-13174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;;
-13175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;;
-13176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;;
-13177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;;
-13178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;;
-13179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;;
-1317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;;
-1317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;;
-1317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;;
-1317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;;
-1317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;;
-1317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;;
-13180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;;
-13181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;;
-13182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;;
-13183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;;
-13184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;;
-13185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;;
-13186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;;
-13187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;;
-13188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;;
-13189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;;
-1318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;;
-1318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;;
-1318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;;
-1318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;;
-1318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;;
-1318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;;
-13190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;;
-13191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;;
-13192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;;
-13193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;;
-13194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;;
-13195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;;
-13196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;;
-13197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;;
-13198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;;
-13199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;;
-1319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;;
-1319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;;
-1319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;;
-1319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;;
-1319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;;
-1319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;;
-131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;;
-131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;;
-131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;;
-131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;;
-131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;;
-131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;;
-131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;;
-131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;;
-131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;;
-131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;;
-131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;;
-131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;;
-131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;;
-131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;;
-131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;;
-131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;;
-131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;;
-131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;;
-131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;;
-131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;;
-131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;;
-131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;;
-131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;;
-131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;;
-131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;;
-131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;;
-131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;;
-131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;;
-131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;;
-131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;;
-131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;;
-131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;;
-131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;;
-131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;;
-131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;;
-131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;;
-131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;;
-131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;;
-131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;;
-131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;;
-131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;;
-131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;;
-131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;;
-131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;;
-131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;;
-131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;;
-131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;;
-131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;;
-131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;;
-131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;;
-131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;;
-131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;;
-131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;;
-131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;;
-131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;;
-131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;;
-131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;;
-131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;;
-131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;;
-131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;;
-131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;;
-131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;;
-131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;;
-131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;;
-131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;;
-131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;;
-131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;;
-131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;;
-131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;;
-131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;;
-131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;;
-131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;;
-131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;;
-131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;;
-131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;;
-131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;;
-131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;;
-131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;;
-131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;;
-131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;;
-131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;;
-131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;;
-131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;;
-131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;;
-131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;;
-131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;;
-131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;;
-131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;;
-131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;;
-131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;;
-131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;;
-131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;;
-131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;;
-131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;;
-131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;;
-131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;;
-13200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;;
-13201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;;
-13202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;;
-13203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;;
-13204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;;
-13205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;;
-13206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;;
-13207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;;
-13208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;;
-13209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;;
-1320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;;
-1320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;;
-1320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;;
-1320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;;
-1320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;;
-1320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;;
-13210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;;
-13211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;;
-13212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;;
-13213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;;
-13214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;;
-13215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;;
-13216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;;
-13217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;;
-13218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;;
-13219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;;
-1321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;;
-1321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;;
-1321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;;
-1321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;;
-1321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;;
-1321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;;
-13220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;;
-13221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;;
-13222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;;
-13223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;;
-13224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;;
-13225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;;
-13226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;;
-13227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;;
-13228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;;
-13229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;;
-1322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;;
-1322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;;
-1322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;;
-1322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;;
-1322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;;
-1322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;;
-13230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;;
-13231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;;
-13232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;;
-13233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;;
-13234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;;
-13235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;;
-13236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;;
-13237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;;
-13238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;;
-13239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;;
-1323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;;
-1323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;;
-1323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;;
-1323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;;
-1323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;;
-1323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;;
-13240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;;
-13241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;;
-13242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;;
-13243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;;
-13244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;;
-13245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;;
-13246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;;
-13247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;;
-13248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;;
-13249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;;
-1324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;;
-1324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;;
-1324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;;
-1324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;;
-1324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;;
-1324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;;
-13250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;;
-13251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;;
-13252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;;
-13253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;;
-13254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;;
-13255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;;
-13256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;;
-13257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;;
-13258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;;
-13259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;;
-1325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;;
-1325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;;
-1325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;;
-1325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;;
-1325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;;
-1325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;;
-13260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;;
-13261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;;
-13262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;;
-13263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;;
-13264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;;
-13265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;;
-13266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;;
-13267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;;
-13268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;;
-13269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;;
-1326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;;
-1326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;;
-1326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;;
-1326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;;
-1326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;;
-1326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;;
-13270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;;
-13271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;;
-13272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;;
-13273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;;
-13274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;;
-13275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;;
-13276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;;
-13277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;;
-13278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;;
-13279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;;
-1327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;;
-1327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;;
-1327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;;
-1327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;;
-1327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;;
-1327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;;
-13280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;;
-13281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;;
-13282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;;
-13283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;;
-13284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;;
-13285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;;
-13286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;;
-13287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;;
-13288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;;
-13289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;;
-1328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;;
-1328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;;
-1328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;;
-1328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;;
-1328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;;
-1328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;;
-13290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;;
-13291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;;
-13292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;;
-13293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;;
-13294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;;
-13295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;;
-13296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;;
-13297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;;
-13298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;;
-13299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;;
-1329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;;
-1329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;;
-1329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;;
-1329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;;
-1329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;;
-1329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;;
-132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;;
-132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;;
-132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;;
-132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;;
-132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;;
-132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;;
-132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;;
-132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;;
-132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;;
-132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;;
-132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;;
-132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;;
-132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;;
-132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;;
-132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;;
-132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;;
-132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;;
-132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;;
-132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;;
-132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;;
-132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;;
-132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;;
-132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;;
-132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;;
-132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;;
-132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;;
-132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;;
-132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;;
-132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;;
-132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;;
-132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;;
-132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;;
-132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;;
-132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;;
-132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;;
-132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;;
-132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;;
-132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;;
-132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;;
-132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;;
-132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;;
-132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;;
-132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;;
-132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;;
-132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;;
-132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;;
-132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;;
-132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;;
-132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;;
-132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;;
-132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;;
-132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;;
-132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;;
-132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;;
-132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;;
-132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;;
-132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;;
-132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;;
-132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;;
-132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;;
-132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;;
-132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;;
-132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;;
-132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;;
-132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;;
-132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;;
-132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;;
-132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;;
-132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;;
-132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;;
-132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;;
-132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;;
-132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;;
-132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;;
-132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;;
-132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;;
-132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;;
-132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;;
-132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;;
-132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;;
-132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;;
-132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;;
-132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;;
-132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;;
-132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;;
-132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;;
-132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;;
-132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;;
-132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;;
-132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;;
-132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;;
-132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;;
-132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;;
-132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;;
-132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;;
-132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;;
-13300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;;
-13301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;;
-13302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;;
-13303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;;
-13304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;;
-13305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;;
-13306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;;
-13307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;;
-13308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;;
-13309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;;
-1330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;;
-1330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;;
-1330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;;
-1330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;;
-1330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;;
-1330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;;
-13310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;;
-13311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;;
-13312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;;
-13313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;;
-13314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;;
-13315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;;
-13316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;;
-13317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;;
-13318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;;
-13319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;;
-1331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;;
-1331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;;
-1331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;;
-1331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;;
-1331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;;
-1331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;;
-13320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;;
-13321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;;
-13322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;;
-13323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;;
-13324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;;
-13325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;;
-13326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;;
-13327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;;
-13328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;;
-13329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;;
-1332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;;
-1332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;;
-1332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;;
-1332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;;
-1332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;;
-1332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;;
-13330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;;
-13331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;;
-13332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;;
-13333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;;
-13334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;;
-13335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;;
-13336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;;
-13337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;;
-13338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;;
-13339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;;
-1333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;;
-1333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;;
-1333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;;
-1333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;;
-1333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;;
-1333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;;
-13340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;;
-13341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;;
-13342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;;
-13343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;;
-13344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;;
-13345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;;
-13346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;;
-13347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;;
-13348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;;
-13349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;;
-1334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;;
-1334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;;
-1334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;;
-1334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;;
-1334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;;
-1334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;;
-13350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;;
-13351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;;
-13352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;;
-13353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;;
-13354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;;
-13355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;;
-13356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;;
-13357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;;
-13358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;;
-13359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;;
-1335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;;
-1335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;;
-1335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;;
-1335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;;
-1335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;;
-1335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;;
-13360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;;
-13361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;;
-13362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;;
-13363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;;
-13364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;;
-13365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;;
-13366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;;
-13367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;;
-13368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;;
-13369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;;
-1336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;;
-1336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;;
-1336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;;
-1336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;;
-1336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;;
-1336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;;
-13370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;;
-13371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;;
-13372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;;
-13373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;;
-13374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;;
-13375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;;
-13376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;;
-13377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;;
-13378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;;
-13379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;;
-1337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;;
-1337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;;
-1337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;;
-1337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;;
-1337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;;
-1337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;;
-13380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;;
-13381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;;
-13382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;;
-13383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;;
-13384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;;
-13385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;;
-13386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;;
-13387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;;
-13388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;;
-13389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;;
-1338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;;
-1338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;;
-1338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;;
-1338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;;
-1338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;;
-1338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;;
-13390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;;
-13391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;;
-13392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;;
-13393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;;
-13394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;;
-13395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;;
-13396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;;
-13397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;;
-13398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;;
-13399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;;
-1339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;;
-1339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;;
-1339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;;
-1339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;;
-1339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;;
-1339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;;
-133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;;
-133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;;
-133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;;
-133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;;
-133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;;
-133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;;
-133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;;
-133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;;
-133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;;
-133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;;
-133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;;
-133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;;
-133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;;
-133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;;
-133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;;
-133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;;
-133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;;
-133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;;
-133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;;
-133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;;
-133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;;
-133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;;
-133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;;
-133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;;
-133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;;
-133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;;
-133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;;
-133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;;
-133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;;
-133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;;
-133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;;
-133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;;
-133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;;
-133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;;
-133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;;
-133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;;
-133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;;
-133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;;
-133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;;
-133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;;
-133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;;
-133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;;
-133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;;
-133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;;
-133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;;
-133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;;
-133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;;
-133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;;
-133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;;
-133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;;
-133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;;
-133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;;
-133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;;
-133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;;
-133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;;
-133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;;
-133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;;
-133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;;
-133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;;
-133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;;
-133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;;
-133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;;
-133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;;
-133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;;
-133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;;
-133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;;
-133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;;
-133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;;
-133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;;
-133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;;
-133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;;
-133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;;
-133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;;
-133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;;
-133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;;
-133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;;
-133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;;
-133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;;
-133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;;
-133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;;
-133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;;
-133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;;
-133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;;
-133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;;
-133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;;
-133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;;
-133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;;
-133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;;
-133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;;
-133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;;
-133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;;
-133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;;
-133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;;
-133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;;
-133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;;
-133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;;
-13400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;;
-13401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;;
-13402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;;
-13403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;;
-13404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;;
-13405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;;
-13406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;;
-13407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;;
-13408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;;
-13409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;;
-1340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;;
-1340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;;
-1340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;;
-1340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;;
-1340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;;
-1340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;;
-13410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;;
-13411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;;
-13412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;;
-13413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;;
-13414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;;
-13415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;;
-13416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;;
-13417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;;
-13418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;;
-13419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;;
-1341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;;
-1341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;;
-1341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;;
-1341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;;
-1341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;;
-1341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;;
-13420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;;
-13421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;;
-13422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;;
-13423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;;
-13424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;;
-13425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;;
-13426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;;
-13427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;;
-13428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;;
-13429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;;
-1342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;;
-1342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;;
-1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
-1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
-1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;
-1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
-1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
-1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
-1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;;
-1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;;
-1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;;
-1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;;
-1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;;
-1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;;
-1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;;
-1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;;
-1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;;
-1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;;
-1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;;
-1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;;
-1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;;
-1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;;
-1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;;
-1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;;
-1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;;
-1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;;
-1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;;
-1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;;
-1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;;
-1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;;
-1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;;
-1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;;
-1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;;
-1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;;
-1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;;
-1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;;
-1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;;
-1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;;
-1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;;
-1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;;
-1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;;
-1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;;
-1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;;
-1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;;
-1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;;
-1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;;
-1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;;
-1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;;
-1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;;
-1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;;
-1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;;
-1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;;
-1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;;
-1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;;
-1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;;
-1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;;
-1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;;
-1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;;
-1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;;
-1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;;
-1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;;
-1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;;
-1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;;
-1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;;
-1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;;
-1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;;
-1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;;
-1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;;
-1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;;
-1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;;
-1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;;
-1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;;
-1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;;
-1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;;
-1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;;
-1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;;
-1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;;
-1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;;
-1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;;
-1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;;
-1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;;
-1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;;
-1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;;
-1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;;
-1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;;
-1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;;
-1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;;
-1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;;
-1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;;
-1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;;
-1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;;
-1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;;
-1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;;
-1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;;
-1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;;
-1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;;
-1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;;
-1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;;
-1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;;
-1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;;
-1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;;
-1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;;
-1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;;
-1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;;
-1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;;
-1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;;
-1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;;
-1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;;
-1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;;
-1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;;
-1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;;
-1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;;
-1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;;
-1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;;
-1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;;
-1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;;
-1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;;
-1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;;
-1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;;
-1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;;
-1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;;
-1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;;
-1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;;
-1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;;
-1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;;
-1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;;
-1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;;
-1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;;
-1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;;
-1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;;
-1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;;
-1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;;
-1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;;
-1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;;
-1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;;
-1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;;
-1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;;
-1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;;
-1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;;
-1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;;
-1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;;
-1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;;
-1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;;
-1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;;
-1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;;
-1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;;
-1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;;
-1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;;
-1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;;
-1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;;
-1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
-1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;;
-1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;;
-1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;;
-1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;;
-1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;;
-1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;;
-1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;;
-1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;;
-1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;;
-1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;;
-1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;;
-1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;;
-1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;;
-1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;;
-1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;;
-1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;;
-1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
-1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;;
-1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;;
-1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;;
-1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;;
-1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;;
-1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
-1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;;
-1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;;
-1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;;
-1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;;
-1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;;
-1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;;
-1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;;
-1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;;
-1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;;
-1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;;
-1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;;
-1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;;
-1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;;
-1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;;
-1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;;
-1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;;
-1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;;
-1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;;
-1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;;
-1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;;
-1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;;
-1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;;
-1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;;
-1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;;
-1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;;
-1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;;
-1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;;
-1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;;
-1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;;
-1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;;
-1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;;
-1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;;
-1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;;
-1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;;
-1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;;
-1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
-1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
-1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;;
-1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;;
-1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;;
-1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;;
-1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;;
-1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;;
-1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;;
-1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;;
-1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;;
-1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;;
-1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;;
-1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;;
-1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;;
-1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;;
-1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;;
-1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;;
-1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;;
-1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;;
-1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;;
-1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;;
-1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;;
-1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;;
-1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;;
-1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;;
-1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;;
-1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;;
-1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;;
-1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;;
-1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;;
-1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;;
-1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;;
-1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;;
-1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;;
-1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;;
-1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;;
-1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;;
-1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;;
-1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;;
-1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;;
-1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;;
-1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;;
-1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;;
-1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;;
-1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;;
-1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;;
-1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;;
-1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;;
-1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;;
-1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;;
-1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;;
-1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;;
-1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;;
-1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;;
-1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;;
-1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;;
-1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;;
-1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;;
-1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;;
-1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;;
-1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;;
-1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;;
-1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;;
-1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;;
-1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;;
-1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
-1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
-1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;;
-1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;;
-1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;;
-1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;;
-1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;;
-1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;;
-1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;;
-1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;;
-1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;;
-1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;;
-1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;;
-1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;;
-1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;;
-1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;;
-1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;;
-1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;;
-1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;;
-1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;;
-1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;;
-1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;;
-1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;;
-1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;;
-1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;;
-1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;;
-1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;;
-1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;;
-1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;;
-1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;;
-1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;;
-1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;;
-1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;;
-1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;;
-1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;;
-1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;;
-1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;;
-1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
-1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;;
-1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;;
-1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;;
-1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;;
-1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;;
-1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;;
-1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
-1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
-1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;;
-1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;;
-1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
-1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;;
-1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;;
-1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;;
-1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;;
-1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;;
-1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;;
-1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;;
-1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;;
-1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;;
-1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;;
-1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;;
-1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;;
-1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;;
-1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;;
-1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;;
-1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;;
-1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;;
-1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;;
-1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;;
-1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;;
-1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;;
-1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;;
-1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;;
-1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;;
-1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;;
-1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;;
-1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;;
-1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;;
-1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;;
-1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;;
-1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;;
-1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;;
-1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;;
-1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;;
-1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;;
-1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;;
-1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;;
-1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;;
-1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;;
-1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;;
-1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;;
-1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;;
-1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;;
-1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;;
-1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;;
-1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;;
-1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;;
-1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;;
-1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;;
-1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;;
-1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;;
-1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;;
-1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;;
-1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;;
-1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;;
-1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;;
-1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;;
-1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;;
-1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;;
-1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;;
-1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;;
-1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;;
-1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;;
-1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;;
-1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;;
-1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;;
-1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;;
-1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;;
-1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;;
-1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;;
-1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;;
-1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;;
-1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;;
-1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;;
-1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;;
-1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;;
-1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;;
-1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;;
-1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;;
-1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;;
-1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;;
-1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;;
-1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;;
-1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;;
-1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;;
-1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;;
-1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;;
-1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;;
-1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;;
-1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;;
-1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;;
-1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;;
-1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;;
-1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;;
-1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;;
-1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;;
-1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;;
-1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;;
-1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;;
-1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;;
-1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;;
-1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;;
-1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;;
-1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;;
-1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;;
-1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;;
-1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;;
-1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;;
-1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;;
-1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;;
-1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;;
-1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;;
-1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;;
-1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;;
-1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
-1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
-1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
-1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;;
-1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;;
-1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;;
-1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;;
-1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;;
-1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;;
-1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;;
-1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;;
-1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;;
-1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;;
-1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;;
-1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;;
-1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;;
-1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;;
-1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;;
-1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;;
-1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;;
-1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;;
-1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;;
-1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;;
-1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
-1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
-1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
-1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
-1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
-1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;;
-1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
-1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
-1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;;
-1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;;
-1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
-1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
-1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
-1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
-1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;;
-1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;;
-1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
-1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
-1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
-1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;;
-1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;;
-1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;;
-1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
-1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
-1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
-1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
-1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
-1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
-1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
-1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
-1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
-1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;;
-1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;;
-1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;;
-1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;;
-1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;;
-1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;;
-1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;;
-1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;;
-1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;;
-1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;;
-1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;;
-1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;;
-1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;;
-1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;;
-1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;;
-1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;;
-1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;;
-1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;;
-1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;;
-1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;;
-1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;;
-1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;;
-1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;;
-1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;;
-1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;;
-1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;;
-1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;;
-1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;;
-1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;;
-1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;;
-1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;;
-1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;;
-1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;;
-1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;;
-1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;;
-1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;;
-1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
-1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
-1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
-1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
-1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
-1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;
-1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;
-1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
-1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;;
-1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;;
-1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;;
-1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;;
-1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;;
-1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;;
-1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;;
-1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;;
-1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;;
-1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;;
-1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;;
-1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;;
-1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;;
-1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;;
-1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;;
-1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;;
-1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;;
-1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;;
-1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;;
-1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;;
-1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;;
-1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;;
-1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;;
-1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;;
-1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;;
-1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;;
-1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;;
-1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;;
-1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;;
-1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;;
-1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;;
-1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;;
-1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;;
-1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;;
-1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;;
-1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;;
-1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;;
-1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;;
-1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;;
-1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;;
-1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;;
-1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;;
-1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;;
-1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;;
-1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;;
-1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;;
-1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;;
-1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;;
-1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;;
-1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;;
-1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;;
-1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;;
-1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;;
-1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;;
-1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;;
-1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;;
-1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;;
-1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;;
-1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;;
-1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;;
-1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;;
-1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;;
-1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;;
-1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;;
-1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;;
-1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;;
-1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;;
-1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;;
-1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;;
-1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;;
-1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;;
-1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;;
-1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;;
-1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;;
-1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;;
-1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;;
-1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;;
-1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;;
-1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;;
-1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;;
-1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;;
-1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;;
-1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;;
-1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;;
-1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;;
-1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;;
-1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;;
-1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;;
-1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;;
-1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;;
-1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;;
-1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;;
-1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;;
-1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;;
-1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;;
-1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;;
-1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;;
-1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;;
-1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;;
-1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
-1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
-1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
-1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
-1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
-1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
-1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
-1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
-1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
-1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
-1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
-1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
-1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
-1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
-1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
-1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
-1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
-1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
-1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
-1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
-1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
-1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
-1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
-1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
-1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
-1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
-1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
-1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
-1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
-1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
-1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
-1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
-1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
-1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
-1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
-1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
-1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
-1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
-1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
-1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
-1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
-1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
-1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
-1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
-1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
-1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
-1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
-1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
-1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
-1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
-1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
-1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
-1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
-1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
-1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
-1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
-1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
-1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
-1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
-1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
-1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
-1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
-1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
-1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
-1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
-1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
-1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
-1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
-1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
-1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
-1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
-1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
-1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
-1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
-1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
-1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
-1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
-1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
-1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
-1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
-1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
-1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
-1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
-1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
-1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
-1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
-1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
-1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
-1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
-1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
-1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
-1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
-1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
-1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
-1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
-1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
-1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
-1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
-1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
-1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
-1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
-1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
-1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
-1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
-1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
-1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
-1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
-1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
-1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
-1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
-1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
-1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
-1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
-1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
-1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
-1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
-1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
-1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;
-1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
-1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
-1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
-1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
-1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
-1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
-1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
-1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
-1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
-1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
-1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;
-1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;
-1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;
-1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;
-1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;
-1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;
-1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;
-1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;
-1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;
-1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;
-1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;
-1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;
-1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;
-1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;
-1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;
-1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;
-1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;
-1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;
-1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;
-1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;
-1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;
-1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;
-1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;
-1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;
-1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;
-1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;
-1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;
-1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;
-1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;
-1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;
-1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;
-1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;
-1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;
-1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;
-1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;
-1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;
-1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;
-1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;
-1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;
-1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;
-1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;
-1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;
-1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;
-1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;
-1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;
-1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;
-1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;
-1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;
-1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;
-1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;
-1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;
-1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;
-1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;
-1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;
-1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;
-1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;
-1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;
-1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;
-1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;
-1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;
-1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;
-1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;
-1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;
-1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;
-1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;
-1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;
-1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;
-1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;
-1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;
-1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;
-1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;
-1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;
-1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;
-1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;
-1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;
-1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;
-1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;
-1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;
-1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;
-1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;
-1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;
-1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;
-1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;
-1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;
-1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;
-1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;
-1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;
-1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;
-1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;
-1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;
-1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;
-1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;
-1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;
-1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;
-1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;
-1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;
-1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;
-1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;
-1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;
-1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;
-1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;
-1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;
-1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;
-1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;
-1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;
-1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;
-1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;
-1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;
-1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;
-1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;
-1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;
-1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;
-1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;
-1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;
-1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;
-1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;
-1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;
-1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;
-1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;
-1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;;
-1F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;;
-1F101;DIGIT ZERO COMMA;No;0;EN;<compat> 0030 002C;;0;0;N;;;;;
-1F102;DIGIT ONE COMMA;No;0;EN;<compat> 0031 002C;;1;1;N;;;;;
-1F103;DIGIT TWO COMMA;No;0;EN;<compat> 0032 002C;;2;2;N;;;;;
-1F104;DIGIT THREE COMMA;No;0;EN;<compat> 0033 002C;;3;3;N;;;;;
-1F105;DIGIT FOUR COMMA;No;0;EN;<compat> 0034 002C;;4;4;N;;;;;
-1F106;DIGIT FIVE COMMA;No;0;EN;<compat> 0035 002C;;5;5;N;;;;;
-1F107;DIGIT SIX COMMA;No;0;EN;<compat> 0036 002C;;6;6;N;;;;;
-1F108;DIGIT SEVEN COMMA;No;0;EN;<compat> 0037 002C;;7;7;N;;;;;
-1F109;DIGIT EIGHT COMMA;No;0;EN;<compat> 0038 002C;;8;8;N;;;;;
-1F10A;DIGIT NINE COMMA;No;0;EN;<compat> 0039 002C;;9;9;N;;;;;
-1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;
-1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;
-1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;
-1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;;
-1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;;
-1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;;
-1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;;
-1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;;
-1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;;
-1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;;
-1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;;
-1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;;
-1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;;
-1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;;
-1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;;
-1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;;
-1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;;
-1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;;
-1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;;
-1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;;
-1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;;
-1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;;
-1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;;
-1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;;
-1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;;
-1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;;
-1F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L;<compat> 3014 0053 3015;;;;N;;;;;
-1F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;;
-1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;;
-1F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;;
-1F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;;
-1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;;
-1F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L;<square> 004E;;;;N;;;;;
-1F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L;<square> 0050;;;;N;;;;;
-1F142;SQUARED LATIN CAPITAL LETTER S;So;0;L;<square> 0053;;;;N;;;;;
-1F146;SQUARED LATIN CAPITAL LETTER W;So;0;L;<square> 0057;;;;N;;;;;
-1F14A;SQUARED HV;So;0;L;<square> 0048 0056;;;;N;;;;;
-1F14B;SQUARED MV;So;0;L;<square> 004D 0056;;;;N;;;;;
-1F14C;SQUARED SD;So;0;L;<square> 0053 0044;;;;N;;;;;
-1F14D;SQUARED SS;So;0;L;<square> 0053 0053;;;;N;;;;;
-1F14E;SQUARED PPV;So;0;L;<square> 0050 0050 0056;;;;N;;;;;
-1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
-1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
-1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
-1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
-1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
-1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
-1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
-1F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;;
-1F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;;
-1F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;;
-1F190;SQUARE DJ;So;0;L;<square> 0044 004A;;;;N;;;;;
-1F200;SQUARE HIRAGANA HOKA;So;0;L;<square> 307B 304B;;;;N;;;;;
-1F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L;<square> 624B;;;;N;;;;;
-1F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L;<square> 5B57;;;;N;;;;;
-1F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L;<square> 53CC;;;;N;;;;;
-1F213;SQUARED KATAKANA DE;So;0;L;<square> 30C7;;;;N;;;;;
-1F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<square> 4E8C;;;;N;;;;;
-1F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L;<square> 591A;;;;N;;;;;
-1F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L;<square> 89E3;;;;N;;;;;
-1F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L;<square> 5929;;;;N;;;;;
-1F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L;<square> 4EA4;;;;N;;;;;
-1F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L;<square> 6620;;;;N;;;;;
-1F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L;<square> 7121;;;;N;;;;;
-1F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L;<square> 6599;;;;N;;;;;
-1F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L;<square> 524D;;;;N;;;;;
-1F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L;<square> 5F8C;;;;N;;;;;
-1F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L;<square> 518D;;;;N;;;;;
-1F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L;<square> 65B0;;;;N;;;;;
-1F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L;<square> 521D;;;;N;;;;;
-1F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L;<square> 7D42;;;;N;;;;;
-1F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L;<square> 751F;;;;N;;;;;
-1F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L;<square> 8CA9;;;;N;;;;;
-1F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L;<square> 58F0;;;;N;;;;;
-1F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L;<square> 5439;;;;N;;;;;
-1F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L;<square> 6F14;;;;N;;;;;
-1F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L;<square> 6295;;;;N;;;;;
-1F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L;<square> 6355;;;;N;;;;;
-1F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L;<square> 4E00;;;;N;;;;;
-1F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<square> 4E09;;;;N;;;;;
-1F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L;<square> 904A;;;;N;;;;;
-1F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L;<square> 5DE6;;;;N;;;;;
-1F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L;<square> 4E2D;;;;N;;;;;
-1F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L;<square> 53F3;;;;N;;;;;
-1F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L;<square> 6307;;;;N;;;;;
-1F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L;<square> 8D70;;;;N;;;;;
-1F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<square> 6253;;;;N;;;;;
-1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L;<compat> 3014 672C 3015;;;;N;;;;;
-1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<compat> 3014 4E09 3015;;;;N;;;;;
-1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<compat> 3014 4E8C 3015;;;;N;;;;;
-1F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L;<compat> 3014 5B89 3015;;;;N;;;;;
-1F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L;<compat> 3014 70B9 3015;;;;N;;;;;
-1F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<compat> 3014 6253 3015;;;;N;;;;;
-1F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L;<compat> 3014 76D7 3015;;;;N;;;;;
-1F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L;<compat> 3014 52DD 3015;;;;N;;;;;
-1F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L;<compat> 3014 6557 3015;;;;N;;;;;
-20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
-2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
-2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
-2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
-2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;;
-2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;;
-2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;;
-2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;;
-2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;;
-2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;;
-2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;;
-2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;;
-2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;;
-2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;;
-2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;;
-2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;;
-2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;;
-2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;;
-2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;;
-2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;;
-2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;;
-2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;;
-2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;;
-2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;;
-2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;;
-2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;;
-2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;;
-2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;;
-2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;;
-2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;;
-2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;;
-2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;;
-2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;;
-2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;;
-2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;;
-2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;;
-2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;;
-2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;;
-2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;;
-2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;;
-2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;;
-2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;;
-2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;;
-2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;;
-2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;;
-2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;;
-2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;;
-2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;;
-2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;;
-2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;;
-2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;;
-2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;;
-2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;;
-2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;;
-2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;;
-2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;;
-2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;;
-2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;;
-2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;;
-2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;;
-2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;;
-2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;;
-2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;;
-2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;;
-2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;;
-2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;;
-2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;;
-2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;;
-2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;;
-2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;;
-2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;;
-2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;;
-2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;;
-2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;;
-2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;;
-2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;;
-2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;;
-2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;;
-2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;;
-2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;;
-2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;;
-2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;;
-2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;;
-2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;;
-2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;;
-2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;;
-2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;;
-2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;;
-2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;;
-2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;;
-2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;;
-2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;;
-2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;;
-2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;;
-2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;;
-2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;;
-2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;;
-2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;;
-2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;;
-2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;;
-2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;;
-2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;;
-2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;;
-2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;;
-2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;;
-2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;;
-2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;;
-2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;;
-2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;;
-2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;;
-2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;;
-2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;;
-2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;;
-2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;;
-2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;;
-2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;;
-2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;;
-2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;;
-2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;;
-2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;;
-2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;;
-2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;;
-2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;;
-2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;;
-2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;;
-2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;;
-2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;;
-2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;;
-2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;;
-2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;;
-2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;;
-2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;;
-2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;;
-2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;;
-2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;;
-2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;;
-2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;;
-2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;;
-2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;;
-2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;;
-2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;;
-2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;;
-2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;;
-2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;;
-2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;;
-2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;;
-2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;;
-2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;;
-2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;;
-2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;;
-2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;;
-2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;;
-2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;;
-2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;;
-2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;;
-2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;;
-2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;;
-2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;;
-2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;;
-2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;;
-2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;;
-2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;;
-2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;;
-2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;;
-2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;;
-2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;;
-2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;;
-2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;;
-2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;;
-2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;;
-2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;;
-2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;;
-2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;;
-2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;;
-2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;;
-2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;;
-2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;;
-2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;;
-2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;;
-2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;;
-2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;;
-2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;;
-2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;;
-2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;;
-2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;;
-2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;;
-2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;;
-2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;;
-2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;;
-2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;;
-2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;;
-2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;;
-2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;;
-2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;;
-2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;;
-2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;;
-2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;;
-2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;;
-2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;;
-2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;;
-2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;;
-2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;;
-2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;;
-2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;;
-2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;;
-2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;;
-2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;;
-2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;;
-2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;;
-2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;;
-2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;;
-2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;;
-2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;;
-2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;;
-2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;;
-2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;;
-2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;;
-2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;;
-2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;;
-2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;;
-2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;;
-2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;;
-2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;;
-2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;;
-2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;;
-2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;;
-2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;;
-2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;;
-2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;;
-2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;;
-2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;;
-2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;;
-2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;;
-2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;;
-2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;;
-2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;;
-2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;;
-2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;;
-2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;;
-2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;;
-2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;;
-2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;;
-2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;;
-2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;;
-2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;;
-2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;;
-2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;;
-2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;;
-2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;;
-2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;;
-2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;;
-2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;;
-2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;;
-2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;;
-2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;;
-2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;;
-2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;;
-2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;;
-2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;;
-2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;;
-2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;;
-2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;;
-2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;;
-2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;;
-2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;;
-2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;;
-2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;;
-2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;;
-2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;;
-2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;;
-2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;;
-2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;;
-2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;;
-2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;;
-2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;;
-2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;;
-2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;;
-2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;;
-2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;;
-2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;;
-2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;;
-2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;;
-2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;;
-2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;;
-2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;;
-2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;;
-2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;;
-2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;;
-2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;;
-2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;;
-2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;;
-2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;;
-2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;;
-2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;;
-2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;;
-2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;;
-2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;;
-2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;;
-2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;;
-2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;;
-2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;;
-2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;;
-2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;;
-2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;;
-2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;;
-2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;;
-2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;;
-2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;;
-2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;;
-2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;;
-2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;;
-2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;;
-2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;;
-2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;;
-2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;;
-2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;;
-2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;;
-2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;;
-2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;;
-2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;;
-2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;;
-2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;;
-2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;;
-2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;;
-2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;;
-2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;;
-2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;;
-2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;;
-2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;;
-2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;;
-2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;;
-2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;;
-2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;;
-2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;;
-2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;;
-2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;;
-2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;;
-2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;;
-2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;;
-2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;;
-2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;;
-2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;;
-2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;;
-2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;;
-2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;;
-2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;;
-2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;;
-2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;;
-2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;;
-2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;;
-2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;;
-2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;;
-2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;;
-2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;;
-2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;;
-2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;;
-2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;;
-2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;;
-2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;;
-2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;;
-2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;;
-2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;;
-2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;;
-2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;;
-2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;;
-2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;;
-2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;;
-2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;;
-2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;;
-2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;;
-2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;;
-2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;;
-2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;;
-2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;;
-2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;;
-2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;;
-2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;;
-2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;;
-2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;;
-2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;;
-2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;;
-2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;;
-2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;;
-2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;;
-2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;;
-2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;;
-2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;;
-2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;;
-2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;;
-2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;;
-2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;;
-2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;;
-2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;;
-2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;;
-2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;;
-2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;;
-2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;;
-2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;;
-2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;;
-2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;;
-2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;;
-2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;;
-2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;;
-2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;;
-2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;;
-2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;;
-2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;;
-2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;;
-2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;;
-2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;;
-2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;;
-2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;;
-2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;;
-2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;;
-2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;;
-2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;;
-2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;;
-2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;;
-2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;;
-2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;;
-2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;;
-2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;;
-2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;;
-2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;;
-2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;;
-2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;;
-2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;;
-2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;;
-2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;;
-2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;;
-2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;;
-2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;;
-2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;;
-2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;;
-2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;;
-2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;;
-2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;;
-2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;;
-2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;;
-2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;;
-2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;;
-2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;;
-2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;;
-2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;;
-2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;;
-2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;;
-2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;;
-2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;;
-2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;;
-2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;;
-2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;;
-2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;;
-2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;;
-2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;;
-2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;;
-2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;;
-2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;;
-2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;;
-2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;;
-2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;;
-2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;;
-2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;;
-2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;;
-2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;;
-2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;;
-2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;;
-2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;;
-2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;;
-2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;;
-2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;;
-2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;;
-2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;;
-2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;;
-2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;;
-2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;;
-2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;;
-2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;;
-2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;;
-2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;;
-2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;;
-2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;;
-2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;;
-2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;;
-2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;;
-2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;;
-2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;;
-2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;;
-2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;;
-2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;;
-2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;;
-2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;;
-2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;;
-2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;;
-2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;;
-2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;;
-2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;;
-2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;;
-2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;;
-2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;;
-2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;;
-2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;;
-2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;;
-2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;;
-2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;;
-2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;;
-2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;;
-2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;;
-2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;;
-2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;;
-2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;;
-2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;;
-2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;;
-2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;;
-2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;;
-2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;;
-2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;;
-2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;;
-2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;;
-2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;;
-2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;;
-2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;;
-2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;;
-2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;;
-2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;;
-2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;;
-2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;;
-2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;;
-2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;;
-2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;;
-2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;;
-2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;;
-2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;;
-2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;;
-2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;;
-2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;;
-2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;;
-2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;;
-2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;;
-2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;;
-2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;;
-2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;;
-2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;;
-2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;;
-2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;;
-2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;;
-2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
diff --git a/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php b/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php
deleted file mode 100644 (file)
index ce2b1a2..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-<?php
-
-/////////////////
-$unicode_ranges = array(
-array('starthex'=> '0000', 'endhex'=>'007E', 'startdec'=> 0, 'enddec'=>126 , 'range'=>'Basic Latin'),
-array('starthex'=> '00A0', 'endhex'=>'00FF', 'startdec'=> 160, 'enddec'=>255 , 'range'=>'Latin-1 Supplement'),
-array('starthex'=> '0100', 'endhex'=>'017F', 'startdec'=> 256, 'enddec'=>383 , 'range'=>'Latin Extended-A'),
-array('starthex'=> '0180', 'endhex'=>'024F', 'startdec'=> 384, 'enddec'=>591 , 'range'=>'Latin Extended-B'),
-array('starthex'=> '0250', 'endhex'=>'02AF', 'startdec'=> 592, 'enddec'=>687 , 'range'=>'IPA Extensions'),
-array('starthex'=> '02B0', 'endhex'=>'02FF', 'startdec'=> 688, 'enddec'=>767 , 'range'=>'Spacing Modifier Letters'),
-array('starthex'=> '0300', 'endhex'=>'036F', 'startdec'=> 768, 'enddec'=>879 , 'range'=>'Combining Diacritical Marks', 'combining'=>true),
-array('starthex'=> '0370', 'endhex'=>'03FF', 'startdec'=> 880, 'enddec'=>1023 , 'range'=>'Greek'),
-array('starthex'=> '0400', 'endhex'=>'04FF', 'startdec'=> 1024, 'enddec'=>1279 , 'range'=>'Cyrillic'),
-array('starthex'=> '0500', 'endhex'=>'052F', 'startdec'=> 1280, 'enddec'=>1327 , 'range'=>'Cyrillic Supplement'),
-array('starthex'=> '0530', 'endhex'=>'058F', 'startdec'=> 1328, 'enddec'=>1423 , 'range'=>'Armenian'),
-array('starthex'=> '0590', 'endhex'=>'05FF', 'startdec'=> 1424, 'enddec'=>1535 , 'range'=>'Hebrew', 'rtl'=>true, 'special'=>true),
-array('starthex'=> '0600', 'endhex'=>'06FF', 'startdec'=> 1536, 'enddec'=>1791 , 'range'=>'Arabic', 'rtl'=>true, 'special'=>true),
-array('starthex'=> '0700', 'endhex'=>'074F', 'startdec'=> 1792, 'enddec'=>1871 , 'range'=>'Syriac', 'rtl'=>true, 'special'=>true),
-array('starthex'=> '0750', 'endhex'=>'077F', 'startdec'=> 1872, 'enddec'=>1919 , 'range'=>'Arabic Supplement', 'rtl'=>true, 'special'=>true),
-array('starthex'=> '0780', 'endhex'=>'07BF', 'startdec'=> 1920, 'enddec'=>1983 , 'range'=>'Thaana', 'rtl'=>true, 'special'=>true),
-array('starthex'=> '07C0', 'endhex'=>'07FF', 'startdec'=> 1984, 'enddec'=>2047 , 'range'=>'N\'Ko (Mandenkan)', 'rtl'=>true),
-array('starthex'=> '0800', 'endhex'=>'083E', 'startdec'=> 2048, 'enddec'=> 2110, 'range'=>'Samaritan', 'rtl'=>true),
-array('starthex'=> '0900', 'endhex'=>'097F', 'startdec'=> 2304, 'enddec'=>2431 , 'range'=>'Devanagari', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0980', 'endhex'=>'09FF', 'startdec'=> 2432, 'enddec'=>2559 , 'range'=>'Bengali', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0A00', 'endhex'=>'0A7F', 'startdec'=> 2560, 'enddec'=>2687 , 'range'=>'Gurmukhi', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0A80', 'endhex'=>'0AFF', 'startdec'=> 2688, 'enddec'=>2815 , 'range'=>'Gujarati', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0B00', 'endhex'=>'0B7F', 'startdec'=> 2816, 'enddec'=>2943 , 'range'=>'Oriya', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0B80', 'endhex'=>'0BFF', 'startdec'=> 2944, 'enddec'=>3071 , 'range'=>'Tamil', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0C00', 'endhex'=>'0C7F', 'startdec'=> 3072, 'enddec'=>3199 , 'range'=>'Telugu', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0C80', 'endhex'=>'0CFF', 'startdec'=> 3200, 'enddec'=>3327 , 'range'=>'Kannada', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0D00', 'endhex'=>'0D7F', 'startdec'=> 3328, 'enddec'=>3455 , 'range'=>'Malayalam', 'indic'=>true, 'special'=>true),
-array('starthex'=> '0D80', 'endhex'=>'0DFF', 'startdec'=> 3456, 'enddec'=>3583 , 'range'=>'Sinhala', 'special'=>true),
-array('starthex'=> '0E00', 'endhex'=>'0E7F', 'startdec'=> 3584, 'enddec'=>3711 , 'range'=>'Thai'),
-array('starthex'=> '0E80', 'endhex'=>'0EFF', 'startdec'=> 3712, 'enddec'=>3839 , 'range'=>'Lao'),
-array('starthex'=> '0F00', 'endhex'=>'0FFF', 'startdec'=> 3840, 'enddec'=>4095 , 'range'=>'Tibetan', 'special'=>true),
-array('starthex'=> '1000', 'endhex'=>'109F', 'startdec'=> 4096, 'enddec'=>4255 , 'range'=>'Myanmar', 'special'=>true),
-array('starthex'=> '10A0', 'endhex'=>'10FF', 'startdec'=> 4256, 'enddec'=>4351 , 'range'=>'Georgian'),
-array('starthex'=> '1100', 'endhex'=>'11FF', 'startdec'=> 4352, 'enddec'=>4607 , 'range'=>'Hangul Jamo', 'cjk'=>true),
-array('starthex'=> '1200', 'endhex'=>'137F', 'startdec'=> 4608, 'enddec'=>4991 , 'range'=>'Ethiopic'),
-array('starthex'=> '1380', 'endhex'=>'139F', 'startdec'=> 4992, 'enddec'=>5023 , 'range'=>'Ethiopic Supplement'),
-array('starthex'=> '13A0', 'endhex'=>'13FF', 'startdec'=> 5024, 'enddec'=>5119 , 'range'=>'Cherokee'),
-array('starthex'=> '1400', 'endhex'=>'167F', 'startdec'=> 5120, 'enddec'=>5759 , 'range'=>'Unified Canadian Aboriginal Syllabics'),
-array('starthex'=> '1680', 'endhex'=>'169F', 'startdec'=> 5760, 'enddec'=>5791 , 'range'=>'Ogham'),
-array('starthex'=> '16A0', 'endhex'=>'16FF', 'startdec'=> 5792, 'enddec'=>5887 , 'range'=>'Runic'),
-array('starthex'=> '1700', 'endhex'=>'171F', 'startdec'=> 5888, 'enddec'=> 5919, 'range'=>'Tagalog (Philippine)'),
-array('starthex'=> '1720', 'endhex'=>'173F', 'startdec'=> 5920, 'enddec'=> 5951, 'range'=>'Hanunoo (Philippine)'),
-array('starthex'=> '1740', 'endhex'=>'175F', 'startdec'=> 5952, 'enddec'=> 5983, 'range'=>'Buhid (Philippine)'),
-array('starthex'=> '1760', 'endhex'=>'177F', 'startdec'=> 5984, 'enddec'=> 6015, 'range'=>'Tagbanwa (Philippine)'),
-array('starthex'=> '1780', 'endhex'=>'17FF', 'startdec'=> 6016, 'enddec'=>6143 , 'range'=>'Khmer', 'special'=>true),
-array('starthex'=> '1800', 'endhex'=>'18AF', 'startdec'=> 6144, 'enddec'=>6319 , 'range'=>'Mongolian', 'vertical'=>true),
-array('starthex'=> '18B0', 'endhex'=>'18F5', 'startdec'=> 6320, 'enddec'=>6389 , 'range'=>'Canadian Syllabics'),
-array('starthex'=> '1900', 'endhex'=>'194F', 'startdec'=> 6400, 'enddec'=> 6479, 'range'=>'Limbu'),
-array('starthex'=> '1950', 'endhex'=>'197F', 'startdec'=> 6480, 'enddec'=> 6527, 'range'=>'Tai Le'),
-array('starthex'=> '1980', 'endhex'=>'19DF', 'startdec'=> 6528, 'enddec'=> 6623, 'range'=>'New Tai Lue'),
-array('starthex'=> '19E0', 'endhex'=>'19FF', 'startdec'=> 6624, 'enddec'=> 6655, 'range'=>'Khmer Symbols', 'special'=>true),
-array('starthex'=> '1A00', 'endhex'=>'1A1F', 'startdec'=> 6656, 'enddec'=> 6687, 'range'=>'Buginese'),
-array('starthex'=> '1A20', 'endhex'=>'1AAF', 'startdec'=> 6688, 'enddec'=> 6831, 'range'=>'Tai Tham'),
-array('starthex'=> '1B00', 'endhex'=>'1B7F', 'startdec'=> 6912, 'enddec'=> 7039, 'range'=>'Balinese', 'special'=>true),
-array('starthex'=> '1B80', 'endhex'=>'1BBF', 'startdec'=> 7040, 'enddec'=> 7103, 'range'=>'Sundanese'),
-array('starthex'=> '1C00', 'endhex'=>'1C4F', 'startdec'=> 7168, 'enddec'=> 7247, 'range'=>'Lepcha (Rong)'),
-array('starthex'=> '1C50', 'endhex'=>'1C7F', 'startdec'=> 7248, 'enddec'=> 7295, 'range'=>'Ol Chiki (Santali / Ol Cemet)'),
-array('starthex'=> '1CD0', 'endhex'=>'1CFF', 'startdec'=> 7376, 'enddec'=> 7423, 'range'=>'Vedic Extensions'),
-array('starthex'=> '1D00', 'endhex'=>'1D7F', 'startdec'=> 7424, 'enddec'=> 7551, 'range'=>'Phonetic Extensions'),
-array('starthex'=> '1D80', 'endhex'=>'1DBF', 'startdec'=> 7552, 'enddec'=> 7615, 'range'=>'Phonetic Extensions Supplement'),
-array('starthex'=> '1DC0', 'endhex'=>'1DFF', 'startdec'=> 7616, 'enddec'=> 7679, 'range'=>'Combining Diacritical Marks Supplement', 'combining'=>true),
-array('starthex'=> '1E00', 'endhex'=>'1EFF', 'startdec'=> 7680, 'enddec'=>7935 , 'range'=>'Latin Extended Additional'),
-array('starthex'=> '1F00', 'endhex'=>'1FFF', 'startdec'=> 7936, 'enddec'=>8191 , 'range'=>'Greek Extended'),
-array('starthex'=> '2000', 'endhex'=>'206F', 'startdec'=> 8192, 'enddec'=>8303 , 'range'=>'General Punctuation'),
-array('starthex'=> '2070', 'endhex'=>'209F', 'startdec'=> 8304, 'enddec'=>8351 , 'range'=>'Superscripts and Subscripts'),
-array('starthex'=> '20A0', 'endhex'=>'20CF', 'startdec'=> 8352, 'enddec'=>8399 , 'range'=>'Currency Symbols'),
-array('starthex'=> '20D0', 'endhex'=>'20FF', 'startdec'=> 8400, 'enddec'=>8447 , 'range'=>'Combining Marks for Symbols', 'combining'=>true),
-array('starthex'=> '2100', 'endhex'=>'214F', 'startdec'=> 8448, 'enddec'=>8527 , 'range'=>'Letterlike Symbols'),
-array('starthex'=> '2150', 'endhex'=>'218F', 'startdec'=> 8528, 'enddec'=>8591 , 'range'=>'Number Forms'),
-array('starthex'=> '2190', 'endhex'=>'21FF', 'startdec'=> 8592, 'enddec'=>8703 , 'range'=>'Arrows'),
-array('starthex'=> '2200', 'endhex'=>'22FF', 'startdec'=> 8704, 'enddec'=>8959 , 'range'=>'Mathematical Operators'),
-array('starthex'=> '2300', 'endhex'=>'23FF', 'startdec'=> 8960, 'enddec'=>9215 , 'range'=>'Miscellaneous Technical'),
-array('starthex'=> '2400', 'endhex'=>'243F', 'startdec'=> 9216, 'enddec'=>9279 , 'range'=>'Control Pictures'),
-array('starthex'=> '2440', 'endhex'=>'245F', 'startdec'=> 9280, 'enddec'=>9311 , 'range'=>'Optical Character Recognition'),
-array('starthex'=> '2460', 'endhex'=>'24FF', 'startdec'=> 9312, 'enddec'=>9471 , 'range'=>'Enclosed Alphanumerics'),
-array('starthex'=> '2500', 'endhex'=>'257F', 'startdec'=> 9472, 'enddec'=>9599 , 'range'=>'Box Drawing'),
-array('starthex'=> '2580', 'endhex'=>'259F', 'startdec'=> 9600, 'enddec'=>9631 , 'range'=>'Block Elements'),
-array('starthex'=> '25A0', 'endhex'=>'25FF', 'startdec'=> 9632, 'enddec'=>9727 , 'range'=>'Geometric Shapes'),
-array('starthex'=> '2600', 'endhex'=>'26FF', 'startdec'=> 9728, 'enddec'=>9983 , 'range'=>'Miscellaneous Symbols'),
-array('starthex'=> '2700', 'endhex'=>'27BF', 'startdec'=> 9984, 'enddec'=>10175 , 'range'=>'Dingbats'),
-array('starthex'=> '27C0', 'endhex'=>'27EF', 'startdec'=> 10176, 'enddec'=> 10223, 'range'=>'Miscellaneous Mathematical Symbols-A'),
-array('starthex'=> '27F0', 'endhex'=>'27FF', 'startdec'=> 10224, 'enddec'=> 10239, 'range'=>'Supplemental Arrows-A'),
-array('starthex'=> '2800', 'endhex'=>'28FF', 'startdec'=> 10240, 'enddec'=>10495 , 'range'=>'Braille Patterns'),
-array('starthex'=> '2900', 'endhex'=>'297F', 'startdec'=> 10496, 'enddec'=> 10623, 'range'=>'Supplemental Arrows-B'),
-array('starthex'=> '2980', 'endhex'=>'29FF', 'startdec'=> 10624, 'enddec'=> 10751, 'range'=>'Miscellaneous Mathematical Symbols-B'),
-array('starthex'=> '2A00', 'endhex'=>'2AFF', 'startdec'=> 10752, 'enddec'=> 11007, 'range'=>'Supplemental Mathematical Operators'),
-array('starthex'=> '2B00', 'endhex'=>'2BFF', 'startdec'=> 11008, 'enddec'=> 11263, 'range'=>'Miscellaneous Symbols and Arrows'),
-array('starthex'=> '2C00', 'endhex'=>'2C5F', 'startdec'=> 11264, 'enddec'=> 11359, 'range'=>'Glagolitic'),
-array('starthex'=> '2C60', 'endhex'=>'2C7F', 'startdec'=> 11360, 'enddec'=> 11391, 'range'=>'Latin Extended-C'),
-array('starthex'=> '2C80', 'endhex'=>'2CFF', 'startdec'=> 11392, 'enddec'=> 11519, 'range'=>'Coptic'),
-array('starthex'=> '2D00', 'endhex'=>'2D2F', 'startdec'=> 11520, 'enddec'=> 11567, 'range'=>'Georgian Supplement'),
-array('starthex'=> '2D30', 'endhex'=>'2D7F', 'startdec'=> 11568, 'enddec'=> 11647, 'range'=>'Tifinagh'),
-array('starthex'=> '2D80', 'endhex'=>'2DDF', 'startdec'=> 11648, 'enddec'=> 11743, 'range'=>'Ethiopic Extended'),
-array('starthex'=> '2DE0', 'endhex'=>'2DFF', 'startdec'=> 11744, 'enddec'=> 11775, 'range'=>'Cyrillic Extended-A'),
-array('starthex'=> '2E00', 'endhex'=>'2E7F', 'startdec'=> 11776, 'enddec'=> 11903, 'range'=>'Supplemental Punctuation'),
-
-array('starthex'=> '2E80', 'endhex'=>'2EFF', 'startdec'=> 11904, 'enddec'=>12031 , 'range'=>'CJK Radicals Supplement', 'cjk'=>true),
-array('starthex'=> '2F00', 'endhex'=>'2FDF', 'startdec'=> 12032, 'enddec'=>12255 , 'range'=>'Kangxi Radicals', 'cjk'=>true),
-array('starthex'=> '2FF0', 'endhex'=>'2FFF', 'startdec'=> 12272, 'enddec'=>12287 , 'range'=>'Ideographic Description Characters', 'cjk'=>true),
-array('starthex'=> '3000', 'endhex'=>'303F', 'startdec'=> 12288, 'enddec'=>12351 , 'range'=>'CJK Symbols and Punctuation', 'cjk'=>true),
-array('starthex'=> '3040', 'endhex'=>'309F', 'startdec'=> 12352, 'enddec'=>12447 , 'range'=>'Hiragana', 'cjk'=>true),
-array('starthex'=> '30A0', 'endhex'=>'30FF', 'startdec'=> 12448, 'enddec'=>12543 , 'range'=>'Katakana', 'cjk'=>true),
-array('starthex'=> '3100', 'endhex'=>'312F', 'startdec'=> 12544, 'enddec'=>12591 , 'range'=>'Bopomofo', 'cjk'=>true),
-array('starthex'=> '3130', 'endhex'=>'318F', 'startdec'=> 12592, 'enddec'=>12687 , 'range'=>'Hangul Compatibility Jamo', 'cjk'=>true),
-array('starthex'=> '3190', 'endhex'=>'319F', 'startdec'=> 12688, 'enddec'=>12703 , 'range'=>'Kanbun', 'cjk'=>true),
-array('starthex'=> '31A0', 'endhex'=>'31BF', 'startdec'=> 12704, 'enddec'=>12735 , 'range'=>'Bopomofo Extended', 'cjk'=>true),
-array('starthex'=> '31C0', 'endhex'=>'31EF', 'startdec'=> 12736, 'enddec'=> 12783, 'range'=>'CJK Strokes', 'cjk'=>true),
-array('starthex'=> '31F0', 'endhex'=>'31FF', 'startdec'=> 12784, 'enddec'=> 12799, 'range'=>'Katakana Phonetic Extensions', 'cjk'=>true),
-array('starthex'=> '3200', 'endhex'=>'32FF', 'startdec'=> 12800, 'enddec'=>13055 , 'range'=>'Enclosed CJK Letters and Months', 'cjk'=>true),
-array('starthex'=> '3300', 'endhex'=>'33FF', 'startdec'=> 13056, 'enddec'=>13311 , 'range'=>'CJK Compatibility', 'cjk'=>true),
-array('starthex'=> '3400', 'endhex'=>'4DB5', 'startdec'=> 13312, 'enddec'=>19893 , 'range'=>'CJK Unified Ideographs Extension A', 'cjk'=>true),
-array('starthex'=> '4DC0', 'endhex'=>'4DFF', 'startdec'=> 19904, 'enddec'=> 19967, 'range'=>'Yijing Hexagram Symbols', 'cjk'=>true),
-array('starthex'=> '4E00', 'endhex'=>'9FFF', 'startdec'=> 19968, 'enddec'=>40959 , 'range'=>'CJK Unified Ideographs', 'cjk'=>true),
-array('starthex'=> 'A000', 'endhex'=>'A48F', 'startdec'=> 40960, 'enddec'=>42127 , 'range'=>'Yi Syllables', 'cjk'=>true),
-array('starthex'=> 'A490', 'endhex'=>'A4CF', 'startdec'=> 42128, 'enddec'=> 42191, 'range'=>'Yi Radicals', 'cjk'=>true),
-
-array('starthex'=> 'A4D0', 'endhex'=>'A4FF', 'startdec'=> 42192, 'enddec'=> 42239, 'range'=>'Lisu'),
-
-array('starthex'=> 'A500', 'endhex'=>'A63F', 'startdec'=> 42240, 'enddec'=> 42559, 'range'=>'Vai'),
-array('starthex'=> 'A640', 'endhex'=>'A69F', 'startdec'=> 42560, 'enddec'=> 42655, 'range'=>'Cyrillic Extended-B'),
-
-array('starthex'=> 'A6A0', 'endhex'=>'A6FF', 'startdec'=> 42656, 'enddec'=> 42751, 'range'=>'Bamum'),
-
-array('starthex'=> 'A700', 'endhex'=>'A71F', 'startdec'=> 42752, 'enddec'=> 42783, 'range'=>'Modifier Tone Letters'),
-array('starthex'=> 'A720', 'endhex'=>'A7FF', 'startdec'=> 42784, 'enddec'=> 43007, 'range'=>'Latin Extended-D'),
-array('starthex'=> 'A800', 'endhex'=>'A82F', 'startdec'=> 43008, 'enddec'=> 43055, 'range'=>'Syloti Nagri'),
-
-array('starthex'=> 'A840', 'endhex'=>'A87F', 'startdec'=> 43072, 'enddec'=> 43135, 'range'=>'Phags-pa', 'vertical'=>true),
-array('starthex'=> 'A880', 'endhex'=>'A8DF', 'startdec'=> 43136, 'enddec'=> 43231, 'range'=>'Saurashtra'),
-
-array('starthex'=> 'A900', 'endhex'=>'A92F', 'startdec'=> 43264, 'enddec'=> 43311, 'range'=>'Kayah Li'),
-array('starthex'=> 'A930', 'endhex'=>'A95F', 'startdec'=> 43312, 'enddec'=> 43359, 'range'=>'Rejang'),
-
-array('starthex'=> 'A960', 'endhex'=>'A97F', 'startdec'=> 43360, 'enddec'=> 43391, 'range'=>'Hangul Choseong', 'cjk'=>true),
-array('starthex'=> 'A980', 'endhex'=>'A9DF', 'startdec'=> 43392, 'enddec'=> 43487, 'range'=>'Javanese'),
-
-array('starthex'=> 'AA00', 'endhex'=>'AA5F', 'startdec'=> 43520, 'enddec'=> 43615, 'range'=>'Cham'),
-array('starthex'=> 'AA60', 'endhex'=>'AA7B', 'startdec'=> 43616, 'enddec'=> 43647, 'range'=>'Myanmar', 'special'=>true),
-array('starthex'=> 'AA80', 'endhex'=>'AADF', 'startdec'=> 43648, 'enddec'=> 43743, 'range'=>'Tai Viet'),
-
-array('starthex'=> 'ABC0', 'endhex'=>'ABF9', 'startdec'=> 43968, 'enddec'=> 44025, 'range'=>'Meetei Mayek'),
-
-array('starthex'=> 'AC00', 'endhex'=>'D7FF', 'startdec'=> 44032, 'enddec'=>55295 , 'range'=>'Hangul Syllables', 'cjk'=>true),
-
-/*
-array('starthex'=> 'D800', 'endhex'=>'DB7F', 'startdec'=> 55296, 'enddec'=>56191 , 'range'=>'High Surrogates', 'reserved'=>true),
-array('starthex'=> 'DB80', 'endhex'=>'DBFF', 'startdec'=> 56192, 'enddec'=>56319 , 'range'=>'High Private Use Surrogates', 'reserved'=>true),
-array('starthex'=> 'DC00', 'endhex'=>'DFFF', 'startdec'=> 56320, 'enddec'=>57343 , 'range'=>'Low Surrogates', 'reserved'=>true),
-*/
-
-array('starthex'=> 'E000', 'endhex'=>'F8FF', 'startdec'=> 57344, 'enddec'=>63743 , 'range'=>'Private Use', 'pua'=>true),
-
-array('starthex'=> 'F900', 'endhex'=>'FAFF', 'startdec'=> 63744, 'enddec'=>64255 , 'range'=>'CJK Compatibility Ideographs', 'cjk'=>true),
-array('starthex'=> 'FB00', 'endhex'=>'FB4F', 'startdec'=> 64256, 'enddec'=>64335 , 'range'=>'Alphabetic Presentation Forms'),
-array('starthex'=> 'FB50', 'endhex'=>'FDFF', 'startdec'=> 64336, 'enddec'=>65023 , 'range'=>'Arabic Presentation Forms-A', 'rtl'=>true),
-
-array('starthex'=> 'FE00', 'endhex'=>'FE0F', 'startdec'=> 65024, 'enddec'=> 65039, 'range'=>'Variation Selectors'),
-
-array('starthex'=> 'FE10', 'endhex'=>'FE1F', 'startdec'=> 65040, 'enddec'=> 65055, 'range'=>'Vertical Forms'),
-array('starthex'=> 'FE20', 'endhex'=>'FE2F', 'startdec'=> 65056, 'enddec'=>65071 , 'range'=>'Combining Half Marks', 'combining'=>true),
-array('starthex'=> 'FE30', 'endhex'=>'FE4F', 'startdec'=> 65072, 'enddec'=>65103 , 'range'=>'CJK Compatibility Forms', 'cjk'=>true),
-array('starthex'=> 'FE50', 'endhex'=>'FE6F', 'startdec'=> 65104, 'enddec'=>65135 , 'range'=>'Small Form Variants', 'cjk'=>true),
-array('starthex'=> 'FE70', 'endhex'=>'FEFE', 'startdec'=> 65136, 'enddec'=>65278 , 'range'=>'Arabic Presentation Forms-B', 'rtl'=>true),
-array('starthex'=> 'FEFF', 'endhex'=>'FEFF', 'startdec'=> 65279, 'enddec'=>65279 , 'range'=>'Specials'),
-array('starthex'=> 'FF00', 'endhex'=>'FFEF', 'startdec'=> 65280, 'enddec'=>65519 , 'range'=>'Halfwidth and Fullwidth Forms', 'cjk'=>true),
-array('starthex'=> 'FFF0', 'endhex'=>'FFFD', 'startdec'=> 65520, 'enddec'=>65533 , 'range'=>'Specials'),
-
-/* PLANE 1 */
-
-array('starthex'=> '10000', 'endhex'=>'1007F', 'startdec'=> 65536 , 'enddec'=> 65663, 'range'=>'Linear B Syllabary'),
-array('starthex'=> '10080', 'endhex'=>'100FF', 'startdec'=> 65664 , 'enddec'=> 65791, 'range'=>'Linear B Ideograms'),
-array('starthex'=> '10100', 'endhex'=>'1013F', 'startdec'=> 65792 , 'enddec'=> 65855, 'range'=>'Aegean Numbers'),
-array('starthex'=> '10140', 'endhex'=>'1018F', 'startdec'=> 65856 , 'enddec'=> 65935, 'range'=>'Ancient Greek Numbers'),
-array('starthex'=> '10190', 'endhex'=>'101CF', 'startdec'=> 65936 , 'enddec'=> 65999, 'range'=>'Ancient Symbols'),
-array('starthex'=> '101D0', 'endhex'=>'101FF', 'startdec'=> 66000 , 'enddec'=> 66047, 'range'=>'Phaistos Disc'),
-array('starthex'=> '10280', 'endhex'=>'1029F', 'startdec'=> 66176 , 'enddec'=> 66207, 'range'=>'Lycian'),
-array('starthex'=> '102A0', 'endhex'=>'102DF', 'startdec'=> 66208 , 'enddec'=> 66271, 'range'=>'Carian'),
-array('starthex'=> '10300', 'endhex'=>'1032F', 'startdec'=> 66304 , 'enddec'=> 66351, 'range'=>'Old Italic'),
-array('starthex'=> '10330', 'endhex'=>'1034F', 'startdec'=> 66352 , 'enddec'=> 66383, 'range'=>'Gothic'),
-array('starthex'=> '10380', 'endhex'=>'1039F', 'startdec'=> 66432 , 'enddec'=> 66463, 'range'=>'Ugaritic'),
-array('starthex'=> '103A0', 'endhex'=>'103DF', 'startdec'=> 66464 , 'enddec'=> 66527, 'range'=>'Old Persian'),
-array('starthex'=> '10400', 'endhex'=>'1044F', 'startdec'=> 66560 , 'enddec'=> 66639, 'range'=>'Deseret'),
-array('starthex'=> '10450', 'endhex'=>'1047F', 'startdec'=> 66640 , 'enddec'=> 66687, 'range'=>'Shavian'),
-array('starthex'=> '10480', 'endhex'=>'104AF', 'startdec'=> 66688 , 'enddec'=> 66735, 'range'=>'Osmanya'),
-array('starthex'=> '10800', 'endhex'=>'1083F', 'startdec'=> 67584 , 'enddec'=> 67647, 'range'=>'Cypriot Syllabary'),
-array('starthex'=> '10900', 'endhex'=>'1091F', 'startdec'=> 67840 , 'enddec'=> 67871, 'range'=>'Phoenician'),
-array('starthex'=> '10920', 'endhex'=>'1093F', 'startdec'=> 67872 , 'enddec'=> 67903, 'range'=>'Lydian'),
-array('starthex'=> '10A00', 'endhex'=>'10A5F', 'startdec'=> 68096 , 'enddec'=> 68191, 'range'=>'Kharoshthi'),
-
-array('starthex'=> '11080', 'endhex'=>'110CF', 'startdec'=> 69760 , 'enddec'=> 69839, 'range'=>'Kaithi'),
-
-array('starthex'=> '12000', 'endhex'=>'123FF', 'startdec'=> 73728 , 'enddec'=> 74751, 'range'=>'Cuneiform (Sumero-Akkadian)'),
-array('starthex'=> '12400', 'endhex'=>'1247F', 'startdec'=> 74752 , 'enddec'=> 74879, 'range'=>'Cuneiform Numbers and Punctuation'),
-
-array('starthex'=> '13000', 'endhex'=>'1342F', 'startdec'=> 77824 , 'enddec'=> 78895, 'range'=>'Egyptian Hieroglyphs'),
-
-array('starthex'=> '1D000', 'endhex'=>'1D0FF', 'startdec'=> 118784 , 'enddec'=> 119039, 'range'=>'Byzantine Musical Symbols'),
-array('starthex'=> '1D100', 'endhex'=>'1D1FF', 'startdec'=> 119040 , 'enddec'=> 119295, 'range'=>'Musical Symbols'),
-array('starthex'=> '1D200', 'endhex'=>'1D24F', 'startdec'=> 119296 , 'enddec'=> 119375, 'range'=>'Ancient Greek Musical Notation'),
-array('starthex'=> '1D300', 'endhex'=>'1D35F', 'startdec'=> 119552 , 'enddec'=> 119647, 'range'=>'Tai Xuan Jing Symbols'),
-array('starthex'=> '1D360', 'endhex'=>'1D37F', 'startdec'=> 119648 , 'enddec'=> 119679, 'range'=>'Counting Rod Numerals'),
-array('starthex'=> '1D400', 'endhex'=>'1D7FF', 'startdec'=> 119808 , 'enddec'=> 120831, 'range'=>'Mathematical Alphanumeric Symbols'),
-array('starthex'=> '1F000', 'endhex'=>'1F02F', 'startdec'=> 126976 , 'enddec'=> 127023, 'range'=>'Mahjong Tiles'),
-array('starthex'=> '1F030', 'endhex'=>'1F09F', 'startdec'=> 127024 , 'enddec'=> 127135, 'range'=>'Domino Tiles'),
-
-/* PLANE 2 */
-
-array('starthex'=> '20000', 'endhex'=>'2A6DF', 'startdec'=> 131072 , 'enddec'=> 173791, 'range'=>'CJK Unified Ideographs Extension B'),
-array('starthex'=> '2A700', 'endhex'=>'2B734', 'startdec'=> 173824 , 'enddec'=> 177972, 'range'=>'CJK Unified Ideographs Extension C'),
-array('starthex'=> '2F800', 'endhex'=>'2FA1F', 'startdec'=> 194560 , 'enddec'=> 195103, 'range'=>'CJK Compatibility Ideographs Supplement'),
-
-);
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_collections.php b/inc/3rdparty/libraries/mpdf/utils/font_collections.php
deleted file mode 100644 (file)
index 20f387e..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-
-/* This script prints out details of any TrueType collection font files
-   in your font directory. Files ending wih .otc are examined.
-   Point your browser to 
-   http://your.domain/your_path_to _mpdf/utils/font_collections.php
-   By default this will examine the folder /ttfonts/ (or the default font
-   directory defined by _MPDF_TTFONTPATH.
-   You can optionally define an alternative folder to examine by setting 
-   the variable below (must be a relative path, or filesystem path):
-*/
-
-
-$checkdir = '';
-
-
-//////////////////////////////////
-//////////////////////////////////
-//////////////////////////////////
-
-ini_set("memory_limit","256M");
-
-
-define('_MPDF_PATH','../');
-
-include("../mpdf.php");
-$mpdf=new mPDF('');
-if ($checkdir) { 
-       $ttfdir = $checkdir;
-}
-else { $ttfdir = _MPDF_TTFONTPATH; }
-
-
-
-$mqr=ini_get("magic_quotes_runtime");
-if ($mqr) { set_magic_quotes_runtime(0); }
-if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); }
-$ttf = new TTFontFile_Analysis();
-
-$ff = scandir($ttfdir);
-
-echo '<h3>Font collection files found in '.$ttfdir.' directory</h3>';
-foreach($ff AS $f) {
-       $ret = array();
-       if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-4,4))=='.ttcf') {      // Mac ttcf
-               $ttf->getTTCFonts($ttfdir.$f);
-               $nf = $ttf->numTTCFonts;
-               echo '<p>Font collection file ('.$f.') contains the following fonts:</p>';
-               for ($i=1; $i<=$nf; $i++) {
-                       $ret = $ttf->extractCoreInfo($ttfdir.$f, $i);
-                       $tfname = $ret[0];
-                       $bold = $ret[1];
-                       $italic = $ret[2];
-                       $fname = strtolower($tfname );
-                       $fname = preg_replace('/[ ()]/','',$fname );
-                       $style = '';
-                       if ($bold) { $style .= 'Bold'; }
-                       if ($italic) { $style .= 'Italic'; }
-                       if (!$style) { $style = 'Regular'; }
-
-
-                       echo '<div>['.$i.'] '.$tfname.' ('.$fname.') '.$style.'</div>';
-
-               }
-               echo '<hr />';
-       }
-}
-
-
-exit;
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_coverage.php b/inc/3rdparty/libraries/mpdf/utils/font_coverage.php
deleted file mode 100644 (file)
index 5286d74..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-<?php
-
-/* This script prints out the Unicode coverage of all TrueType font files
-   in your font directory. 
-   Point your browser to 
-   http://your.domain/your_path_to _mpdf/utils/font_coverage.php
-   By default this will examine the folder /ttfonts/ (or the default font
-   directory defined by _MPDF_TTFONTPATH.
-   You can optionally define an alternative folder to examine by setting 
-   the variable below (must be a relative path, or filesystem path):
-*/
-
-
-$checkdir = '';
-
-
-//////////////////////////////////
-//////////////////////////////////
-//////////////////////////////////
-
-
-set_time_limit(600);
-ini_set("memory_limit","256M");
-
-//==============================================================
-//==============================================================
-include("../mpdf.php");
-
-$mpdf=new mPDF('','A4-L','','',10,10,10,10); 
-$mpdf->SetDisplayMode('fullpage');
-$mpdf->useSubstitutions = true;
-$mpdf->debug = true;
-$mpdf->simpleTables = true;
-if ($checkdir) { 
-       $ttfdir = $checkdir;
-}
-else { $ttfdir = _MPDF_TTFONTPATH; }
-
-
-
-$mqr=ini_get("magic_quotes_runtime");
-if ($mqr) { set_magic_quotes_runtime(0); }
-if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); }
-
-//==============================================================
-       $smp = true;
-       $maxt = 131071;
-//==============================================================
-//==============================================================
-$unifile = file('UnicodeData.txt');
-$unichars = array();
-foreach($unifile AS $line) {
-       if (preg_match('/<control>/',$line,$m)) { 
-         $rangename = '';
-         continue;
-       }
-       else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), Last>/',$line,$m)) { 
-         if ($rangename && $rangename == $m[2]) {
-               $endrange = hexdec($m[1]);
-               for ($i=$startrange;$i<=$endrange; $i++) {
-                       $unichars[$i] = $i;
-               }
-         }
-         $rangename = '';
-       }
-       else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), First>/',$line,$m)) { 
-         $startrange = hexdec($m[1]);
-         $rangename = $m[2];
-       }
-       else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});/',$line,$m)) { 
-         $unichars[hexdec($m[1])] = hexdec($m[1]);
-         $rangename = '';
-       }
-}
-
-// loads array $unicode_ranges
-include('UnicodeRanges.php'); 
-//==============================================================
-$html = '<html><head><style>td { border: 0.1mm solid #555555; } 
-body { font-weight: normal; font-family: helvetica;font-size:8pt; }
-td { font-family: helvetica;font-size:8pt; vertical-align: top;}
-</style></head><body>';
-
-//==============================================================
-$ff = scandir($ttfdir);
-$tempfontdata = array();
-foreach($ff AS $f) {
-       $ttf = new TTFontFile_Analysis();
-       $ret = array();
-       $isTTC = false;
-       if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf') {
-               $ret[] = $ttf->extractCoreInfo($ttfdir.$f);
-       }
-       for ($i=0; $i<count($ret); $i++) {
-          if (is_array($ret[$i])) { 
-               $tfname = $ret[$i][0];
-               $bold = $ret[$i][1];
-               $italic = $ret[$i][2];
-               $fname = strtolower($tfname );
-               $fname = preg_replace('/[ ()]/','',$fname );
-               //$tempfonttrans[$tfname] = $fname;
-               $style = '';
-               if ($bold) { $style .= 'B'; }
-               if ($italic) { $style .= 'I'; }
-               if (!$style) { 
-                       $tempfontdata[$fname]['file'] = $f;
-                       if ($isTTC) { 
-                               $tempfontdata[$fname]['TTCfontID'] = $ret[$i][4];
-                       }
-               }
-          }
-       }
-       unset($ttf);
-
-}
-
-$fullcovers = array();
-$nearlycovers = array();
-ksort($tempfontdata);
-$ningroup = 14;
-$nofgroups = ceil(count($unicode_ranges)/$ningroup);
-
-//==============================================================
-
-
-for ($urgp = 0; $urgp < $nofgroups; $urgp++) {
-
-
-   $html .= '<table cellpadding="2" cellspacing="0" style="page-break-inside:avoid; text-align:center; border-collapse: collapse; ">';
-   $html .= '<thead><tr><td></td>';
-
-   foreach($unicode_ranges AS $urk => $ur) {
-          if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) {
-                               $rangekey = $urk;
-                               $range = $ur['range'];
-                               $rangestart = $ur['starthex'];
-                               $rangeend = $ur['endhex'];
-                               $html .= '<td style="font-family:helvetica;font-size:8pt;font-weight:bold;">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')</td>';
-          }
-   }
-   $html .= '</tr></thead>';
-
-
-  foreach ($tempfontdata AS $fname => $v) {
-       $cw = '';
-       if (file_exists((_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'))) { $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); }
-       else {
-               $mpdf->fontdata[$fname]['R'] = $tempfontdata[$fname]['file']; 
-               $mpdf->AddFont($fname);
-               $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); 
-       }
-       if (!$cw) {
-               continue;
-               die("Font data not available for $fname");
-       }
-
-       $counter=0;
-       $max = $maxt;
-
-       // create HTML content
-       $html .= '<tr>';
-       $html .= '<td>'.$fname.'</td>';
-
-       foreach($unicode_ranges AS $urk => $ur) {
-          if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) {
-           if ($ur['pua'] || $ur['reserved'] || $ur['control']) {
-               $html .= '<td style="background-color: #000000;"></td>'; 
-           }
-           else {
-               $rangekey = $urk;
-               $range = $ur['range'];
-               $rangestart = $ur['starthex'];
-               $rangeend = $ur['endhex'];
-               $rangestartdec = $ur['startdec'];
-               $rangeenddec = $ur['enddec'];
-               $uniinrange = 0;
-               $fontinrange = 0;
-               for ($i=$rangestartdec; $i<=$rangeenddec; $i++) {
-                       //if (isset($cw[$i])) { $fontinrange++; }
-                       if ($mpdf->_charDefined($cw, $i)) { $fontinrange++; }
-                       if (isset($unichars[$i])) { $uniinrange++; }
-               }
-               if ($uniinrange) {
-                       if ($fontinrange) {
-                               $pc = ($fontinrange/$uniinrange);
-                               $str = '('.$fontinrange.'/'.$uniinrange.')';
-                               if ($pc==1) { 
-                                       $fullcovers[$urk][] = $fname;
-                                       $html .= '<td style="background-color: #00FF00;"></td>'; 
-                               }
-                               else if ($pc>1) { 
-                                       $fullcovers[$urk][] = $fname;
-                                       $html .= '<td style="background-color: #00FF00;">'.$str.'</td>'; 
-                               }
-                               else if ($pc>=0.9) { 
-                                       $html .= '<td style="background-color: #AAFFAA;">'.$str.'</td>'; 
-                                       $nearlycovers[$urk][] = $fname;
-                               }
-                               else if ($pc>0.75) { $html .= '<td style="background-color: #00FFAA;">'.$str.'</td>'; }
-                               else if ($pc>0.5) { $html .= '<td style="background-color: #AAAAFF;">'.$str.'</td>'; }
-                               else if ($pc>0.25) { $html .= '<td style="background-color: #FFFFAA;">'.$str.'</td>'; }
-                               else { $html .= '<td style="background-color: #FFAAAA;">'.$str.'</td>'; }
-                       }
-                       else { $html .= '<td style="background-color: #555555;">(0/0)</td>'; }
-               }
-               else { $html .= '<td style="background-color: #000000;"></td>'; }
-           }
-          }
-       }
-
-
-       $html .= '</tr>';
-
-   }
-//==============================================================
-  $html .= '</table><pagebreak />';
-}
-
-$html .= '<h4>Fonts with full coverage of Unicode Ranges</h4>';
-$html .= '<table>';
-//$html .= '<tr><td></td><td></td></tr>';
-foreach($unicode_ranges AS $urk => $ur) {
-       if ($ur['pua'] || $ur['reserved'] || $ur['control']) { continue; }
-       $rangekey = $urk;
-       $range = $ur['range'];
-       $rangestart = $ur['starthex'];
-       $rangeend = $ur['endhex'];
-       $ext = $ext2 = '';
-       if ($ur['combining']) { $ext = 'background-color:#DDDDFF;'; $ext2 = '<br /><span style="color:#AA0000">Special positioning required</span>'; }
-       if ($ur['vertical']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '<br /><span style="color:#AA0000">Vertical positioning required</span>'; }
-       if ($ur['special']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '<br /><span style="color:#AA0000">Special processing required</span>'; }
-
-
-       $html .= '<tr><td style="font-family:helvetica;font-size:8pt;font-weight:bold;'.$ext.'">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'.$ext2.'</td>';
-       $arr = $fullcovers[$urk];
-       $narr = $nearlycovers[$urk];
-       if (is_array($arr)) { $html .= '<td>'. implode(', ',$arr). '</td></tr>'; }
-       else if (is_array($narr)) { $html .= '<td style="background-color: #AAAAAA;">'. implode(', ',$narr). ' (>90%)</td></tr>'; }
-       else { $html .= '<td style="background-color: #555555;"> </td></tr>'; }
-}
-$html.= '</table>';
-
-
-//==============================================================
-echo $html;
-
-exit;
-
-//==============================================================
-//==============================================================
-//==============================================================
-//==============================================================
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_dump.php b/inc/3rdparty/libraries/mpdf/utils/font_dump.php
deleted file mode 100644 (file)
index 9073140..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-
-/* 
-   This script prints out all characters in a TrueType font file
-   to a PDF document. Point your browser to 
-   http://your.domain/your_path_to _mpdf/utils/font_dump.php
-   The font file must be located in /ttfonts/ (or the default font
-   directory defined by _MPDF_TTFONTPATH.
-   By default this will examine the font dejavusanscondensed.
-   You can optionally define an alternative font file to examine by setting 
-   the variable below (must be a relative path, or filesystem path):
-*/
-
-
-$font = 'dejavusanscondensed'; // Use internal mPDF font-name
-
-$showmissing = true;   // Show all missing unicode blocks / characters
-
-
-//////////////////////////////////
-//////////////////////////////////
-//////////////////////////////////
-
-set_time_limit(600);
-ini_set("memory_limit","256M");
-
-//==============================================================
-//==============================================================
-define('_MPDF_URI', '../');
-include("../mpdf.php");
-
-$mpdf=new mPDF(''); 
-$mpdf->StartProgressBarOutput(2);
-
-$mpdf->SetDisplayMode('fullpage');
-
-$mpdf->useSubstitutions = true;
-$mpdf->debug = true;
-$mpdf->simpleTables = true;
-// force fonts to be embedded whole i.e. NOT susbet
-$mpdf->percentSubset = 0;
-
-//==============================================================
-//==============================================================
-//==============================================================
-//==============================================================
-
-// This generates a .mtx.php file if not already generated
-$mpdf->WriteHTML('<style>td { border: 0.1mm solid #555555; } body { font-weight: normal; }</style>');
-$mpdf->WriteHTML('<h3 style="font-family:'.$font.'">'.strtoupper($font).'</h3>');      // Separate Paragraphs  defined by font
-$html = '';
-//==============================================================
-//==============================================================
-//==============================================================
-//==============================================================
-$unifile = file('UnicodeData.txt');
-$unichars = array();
-
-foreach($unifile AS $line) {
-       if ($smp && preg_match('/^(1[0-9A-Za-z]{4});/',$line,$m)) { 
-         $unichars[hexdec($m[1])] = hexdec($m[1]);
-       }
-       else if (preg_match('/^([0-9A-Za-z]{4});/',$line,$m)) { 
-         $unichars[hexdec($m[1])] = hexdec($m[1]);
-       }
-}
-
-// loads array $unicode_ranges
-include('UnicodeRanges.php'); 
-//==============================================================
-//==============================================================
-
-
-
-$cw = file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
-if (!$cw) { die("Error - Must be able to read font metrics file: "._MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
-$counter=0;
-
-
-include(_MPDF_TTFONTDATAPATH.$font.'.mtx.php');
-
-if ($smp) {
-       $max = 131071;
-}
-else { 
-       $max = 65535;
-}
-
-
-$justfinishedblank = false;
-$justfinishedblankinvalid = false;
-
-               foreach($unicode_ranges AS $urk => $ur) {
-                       if (0 >= $ur['startdec'] && 0 <= $ur['enddec']) {
-                               $rangekey = $urk;
-                               $range = $ur['range'];
-                               $rangestart = $ur['starthex'];
-                               $rangeend = $ur['endhex'];
-                               break;
-                       }
-               }
-         $lastrange  = $range ;
-    // create HTML content
-    $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
-    $html .= '<tr><td colspan="18" style="font-family:helvetica;font-weight:bold">'.strtoupper($font).'</td></tr>';
-    $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')</td></tr>';
-    $html .= '<tr><td></td>';
-
-    $html .= '<td></td>';
-    for ($i = 0; $i < 16; $i++) {
-            $html .= '<td><b>-'.sprintf('%X', $i).'</b></td>';
-    }
-
-
-    // print each character
-    for ($i = 32; $i < $max; ++$i) {
-        if (($i > 0) AND (($i % 16) == 0)) {
-               $notthisline = true;
-               while($notthisline) {
-                  for ($j = 0; $j < 16; $j++) {
-                       if ($mpdf->_charDefined($cw, ($i + $j))) {
-                       //if (isset($cw[($i+$j)])) { 
-                               $notthisline = false; 
-                       }
-                  }
-                  if ($notthisline) { 
-                   if ($showmissing) {
-                       $range = '';
-                       foreach($unicode_ranges AS $urk => $ur) {
-                               if ($i >= $ur['startdec'] && $i <= $ur['enddec']) {
-                                       $rangekey = $urk;
-                                       $range = $ur['range'];
-                                       $rangestart = $ur['starthex'];
-                                       $rangeend = $ur['endhex'];
-                                       break;
-                               }
-                       }
-                       $anyvalid = false;
-                       for ($j = 0; $j < 16; $j++) {
-                               if (isset($unichars[$i+$j])) { $anyvalid = true; break; }
-                       }
-                       if ($range && $range == $lastrange) {
-                               if (!$anyvalid) { 
-                                       if (!$justfinishedblankinvalid) { 
-                                               $html .= '<tr><td colspan="18" style="background-color:#555555; font-size: 4pt;">&nbsp;</td></tr>'; 
-                                       }
-                                       $justfinishedblankinvalid = true;
-                               }
-                               else if (!$justfinishedblank ) { 
-                                       $html .= '<tr><td colspan="18" style="background-color:#FFAAAA; font-size: 4pt;">&nbsp;</td></tr>'; 
-                                       $justfinishedblank = true;
-                               }
-                       }
-                       else if($range) {
-                               $html .= '</tr></table><br />';
-                               $mpdf->WriteHTML($html); $html = '';
-                               $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
-                               $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')</td></tr>';
-                               $html .= '<tr><td></td>';
-                               $html .= '<td></td>';
-                               for ($k = 0; $k < 16; $k++) {
-                             $html .= '<td><b>-'.sprintf('%X', $k).'</b></td>';
-                               }
-                               $justfinishedblank = false;
-                               $justfinishedblankinvalid = false;
-                       }
-                       $lastrange = $range ;
-                   }
-                   $i +=16; 
-                   if ($i > $max) { break 2; }
-                  }
-               }
-               foreach($unicode_ranges AS $urk => $ur) {
-                       if ($i >= $ur['startdec'] && $i <= $ur['enddec']) {
-                               $rangekey = $urk;
-                               $range = $ur['range'];
-                               $rangestart = $ur['starthex'];
-                               $rangeend = $ur['endhex'];
-                               break;
-                       }
-               }
-
-               if ($i > 0 && ($i % 16) == 0 && ($range != $lastrange)) {
-                       $html .= '</tr></table><br />';
-                       $mpdf->WriteHTML($html); $html = '';
-                       $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
-                       $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')</td></tr>';
-                       $html .= '<tr><td></td>';
-                       $html .= '<td></td>';
-                       for ($k = 0; $k < 16; $k++) {
-                     $html .= '<td><b>-'.sprintf('%X', $k).'</b></td>';
-                       }
-               }
-               $lastrange  = $range ;
-               $justfinishedblank = false;
-               $justfinishedblankinvalid = false;
-            $html .= '</tr><tr><td><i>'.(floor($i / 16)*16).'</i></td>';
-            $html .= '<td><b>'.sprintf('%03X', floor($i / 16)).'-</b></td>';
-        }
-         if ($mpdf->_charDefined($cw, $i)) { $html .= '<td>&#'.$i.';</td>'; $counter++; }
-         else if (isset($unichars[$i])) { $html .= '<td style="background-color: #FFAAAA;"></td>'; }
-         else { $html .= '<td style="background-color: #555555;"></td>'; }
-    }
-
-    if (($i % 16) > 0) {
-       for ($j = ($i % 16); $j < 16; ++$j) { $html .= '<td style="background-color: #555555;"></td>'; }
-    }
-    $html .= '</tr></table><br />';
-//==============================================================
-//==============================================================
-$mpdf->WriteHTML($html);       // Separate Paragraphs  defined by font
-
-$mpdf->Output(); 
-exit;
-
-//==============================================================
-//==============================================================
-//==============================================================
-//==============================================================
-
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_names.php b/inc/3rdparty/libraries/mpdf/utils/font_names.php
deleted file mode 100644 (file)
index 21773b8..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-<?php
-
-/* This script examines your font directory. 
-   Point your browser to 
-   http://your.domain/your_path_to _mpdf/utils/font_names.php
-   By default this will examine the folder /ttfonts/ (or the default font
-   directory defined by _MPDF_TTFONTPATH.
-   You can optionally define an alternative folder to examine by setting 
-   the variable checkdir below (must be a relative path, or filesystem path).
-   You can optionally output just the font samples as a PDF file by setting $pdf=true.
-*/
-
-
-$checkdir = '';
-
-$pdf = false;
-
-//////////////////////////////////
-//////////////////////////////////
-//////////////////////////////////
-
-ini_set("memory_limit","256M");
-
-define('_MPDF_PATH','../');
-
-include("../mpdf.php");
-$mpdf=new mPDF('s');
-$mpdf->useSubstitutions = true;
-if ($checkdir) { 
-       $ttfdir = $checkdir; 
-}
-else { $ttfdir = _MPDF_TTFONTPATH; }
-
-$mqr=ini_get("magic_quotes_runtime");
-if ($mqr) { set_magic_quotes_runtime(0); }
-if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
-$ttf = new TTFontFile();
-
-$tempfontdata = array();
-$tempsansfonts = array();
-$tempseriffonts = array();
-$tempmonofonts = array();
-$tempfonttrans = array();
-
-$ff = scandir($ttfdir);
-
-foreach($ff AS $f) {
-       $ret = array();
-       $isTTC = false;
-       if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-5,5))=='.ttcf') {      // Mac ttcf
-               $isTTC = true;
-               $ttf->getTTCFonts($ttfdir.$f);
-               $nf = $ttf->numTTCFonts;
-               for ($i=1; $i<=$nf; $i++) {
-                       $ret[] = $ttf->extractCoreInfo($ttfdir.$f, $i);
-               }
-       }
-       else if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf' ) {
-               $ret[] = $ttf->extractCoreInfo($ttfdir.$f);
-       }
-       for ($i=0; $i<count($ret); $i++) {
-          if (!is_array($ret[$i])) { 
-               if (!$pdf) echo $ret[$i].'<br />'; 
-          }
-          else {
-               $tfname = $ret[$i][0];
-               $bold = $ret[$i][1];
-               $italic = $ret[$i][2];
-               $fname = strtolower($tfname );
-               $fname = preg_replace('/[ ()]/','',$fname );
-               $tempfonttrans[$tfname] = $fname;
-               $style = '';
-               if ($bold) { $style .= 'B'; }
-               if ($italic) { $style .= 'I'; }
-               if (!$style) { $style = 'R'; }
-               $tempfontdata[$fname][$style] = $f;
-               if ($isTTC) { 
-                       $tempfontdata[$fname]['TTCfontID'][$style] = $ret[$i][4];
-               }
-               //if ($ret[$i][5]) { $tempfontdata[$fname]['rtl'] = true; }
-               //if ($ret[$i][7]) { $tempfontdata[$fname]['cjk'] = true; }
-               if ($ret[$i][8]) { $tempfontdata[$fname]['sip'] = true; }
-               if ($ret[$i][9]) { $tempfontdata[$fname]['smp'] = true; }
-
-               $ftype = $ret[$i][3];           // mono, sans or serif
-               if ($ftype=='sans') { $tempsansfonts[] = $fname; }
-               else if ($ftype=='serif') { $tempseriffonts[] = $fname; }
-               else if ($ftype=='mono') { $tempmonofonts[] = $fname; }
-          }
-       }
-
-}
-$tempsansfonts = array_unique($tempsansfonts);
-$tempseriffonts = array_unique($tempseriffonts );
-$tempmonofonts = array_unique($tempmonofonts );
-$tempfonttrans = array_unique($tempfonttrans);
-
-if (!$pdf) {
-       echo '<h3>Information</h3>';
-}
-
-foreach ($tempfontdata AS $fname => $v) {
-       if (!isset($tempfontdata[$fname]['R']) || !$tempfontdata[$fname]['R']) {
-               if (!$pdf) echo 'WARNING - Font file for '.$fname.' may be an italic cursive script, or extra-bold etc.<br />';
-               if (isset($tempfontdata[$fname]['I']) && $tempfontdata[$fname]['I']) {
-                       $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['I'];
-               }
-               else if (isset($tempfontdata[$fname]['B']) && $tempfontdata[$fname]['B']) {
-                       $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['B'];
-               }
-               else if (isset($tempfontdata[$fname]['BI']) && $tempfontdata[$fname]['BI']) {
-                       $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['BI'];
-               }
-       }
-       if (isset($tempfontdata[$fname]['smp']) && $tempfontdata[$fname]['smp']) {
-               if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 1 SMP<br />';
-               $tempfontdata[$fname]['smp'] = false;
-       }
-       if (isset($tempfontdata[$fname]['sip']) && $tempfontdata[$fname]['sip']) {
-               if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 2 SIP<br />';
-               if (preg_match('/^(.*)-extb/',$fname, $fm)) {
-                       if (isset($tempfontdata[($fm[1])]) && $tempfontdata[($fm[1])]) {
-                               $tempfontdata[($fm[1])]['sip-ext'] = $fname;
-                               if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1]).'<br />';
-                       }
-                       else if (isset($tempfontdata[($fm[1].'-exta')]) && $tempfontdata[($fm[1].'-exta')]) {
-                               $tempfontdata[($fm[1].'-exta')]['sip-ext'] = $fname;
-                               if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1].'-exta').'<br />';
-                       }
-               }
-               // else { unset($tempfontdata[$fname]['sip']); }
-       }
-       unset($tempfontdata[$fname]['sip']);
-       unset($tempfontdata[$fname]['smp']); 
-}
-
-$mpdf->fontdata = array_merge($tempfontdata ,$mpdf->fontdata);
-
-       $mpdf->available_unifonts = array();
-       foreach ($mpdf->fontdata AS $f => $fs) {
-               if (isset($fs['R']) && $fs['R']) { $mpdf->available_unifonts[] = $f; }
-               if (isset($fs['B']) && $fs['B']) { $mpdf->available_unifonts[] = $f.'B'; }
-               if (isset($fs['I']) && $fs['I']) { $mpdf->available_unifonts[] = $f.'I'; }
-               if (isset($fs['BI']) && $fs['BI']) { $mpdf->available_unifonts[] = $f.'BI'; }
-       }
-
-       $mpdf->default_available_fonts = $mpdf->available_unifonts;
-
-if (!$pdf) {
-       echo '<hr />';
-       echo '<h3>Font names as parsed by mPDF</h3>';
-}
-
-ksort($tempfonttrans);
-$html = '';
-foreach($tempfonttrans AS $on=>$mn) {
-       if (!file_exists($ttfdir.$mpdf->fontdata[$mn]['R'])) { continue; }
-       $ond = '"'.$on.'"'; 
-       $html .= '<p style="font-family:'.$on.';">'.$ond.' font is available as '.$mn;
-       if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) {
-               $html .= '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext'];
-       }
-       $html .= '</p>';
-}
-
-if ($pdf) {
-       $mpdf->WriteHTML($html);
-       $mpdf->Output();
-       exit;
-}
-
-foreach($tempfonttrans AS $on=>$mn) {
-       $ond = '"'.$on.'"'; 
-       echo '<div style="font-family:\''.$on.'\';">'.$ond.' font is available as '.$mn;
-       if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) {
-               echo '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext'];
-       }
-       echo '</div>';
-}
-echo '<hr />';
-
-echo '<h3>Sample config_fonts.php file</h3>';
-echo '<div>Remember to edit the following arrays to place your preferred default first in order:</div>';
-
-echo '<pre>';
-
-ksort($tempfontdata);
-echo '$this->fontdata = '.var_export($tempfontdata,true).";\n";
-
-sort($tempsansfonts);
-echo '$this->sans_fonts = array(\''.implode("', '", $tempsansfonts)."');\n";
-sort($tempseriffonts);
-echo '$this->serif_fonts = array(\''.implode("', '", $tempseriffonts)."');\n";
-sort($tempmonofonts);
-echo '$this->mono_fonts = array(\''.implode("', '", $tempmonofonts)."');\n";
-echo '</pre>';
-
-exit;
-
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/index.php b/inc/3rdparty/libraries/mpdf/utils/index.php
deleted file mode 100644 (file)
index 544f7f2..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-
-<html>
-<head>
-</head>
-<body bgcolor=#FFFFFF text=#001C66>
-
-<h2>mPDF Font Utility scripts for Version 5.0</h2>
-<p>
-<a href="font_dump.php">Dump all characters from a font (font_dump.php)</a> 
-</p>
-<p>
-<a href="font_names.php">Show a list of all font names available (font_names.php)</a> 
-</p>
-<p>
-<a href="font_collections.php">Show fonts in Collections .ttc (font_collections.php)</a> 
-</p>
-<p>
-<a href="font_coverage.php">Show coverage of characters from all fonts (font_coverage.php)</a> 
-</p>
-
-<p>Edit the scripts to change the font folder if you wish - this is set by default to /ttfonts/</p>
-
-
-
-</body>
-</html>
diff --git a/inc/3rdparty/libraries/tcpdf/CHANGELOG.TXT b/inc/3rdparty/libraries/tcpdf/CHANGELOG.TXT
new file mode 100644 (file)
index 0000000..a7dde3f
--- /dev/null
@@ -0,0 +1,2860 @@
+6.0.093 (2014-09-02)
+       - Security fix: some serialize/unserialize methods were replaced with json_encode/json_decode to avoid a potential object injection with user supplied content. Thanks to ownCloud Inc. for reporting this issue.
+       - K_TIMEZONE constant was added to the default configuration to supress date-time warnings.
+
+6.0.092 (2014-09-01)
+       - Bug item #956 "Monospaced fonts are not alignd at the baseline" was fixed.
+       - Bug item #964 "Problem when changing font size" was fixed.
+       - Bug item #969 "ImageSVG with radialGradient problem" was fixed.
+       - sRGB.icc file was replaced with the one from the Debian package icc-profiles-free (2.0.1+dfsg-1) 
+
+6.0.091 (2014-08-13)
+       - Issue #325"Division by zero when css fontsize equals 0" was fixed.
+
+6.0.090 (2014-08-08)
+       - Starting from this version TCPDF is also available in GitHub at https://github.com/tecnickcom/TCPDF
+       - Function getmypid() was removed for better compatibility with shared hosting environments.
+       - Support for pulling SVG stroke opacity value from RGBa color was mergeg [adf006].
+       - Bug item #951 "HTML Table within TCPDF columns doesnt flow correctly on page break ..." was fixed. 
+
+6.0.089 (2014-07-16)
+       - Bug item #948 "bottom line of rowspan cell not work correctly" was fixed.
+
+6.0.088 (2014-07-09)
+       - Bug item #946 "Case sensitive type check causes broken match for SVG" was fixed.
+       - Bug item #945 "Imagick load doesn't account for passed data string " was fixed.
+
+6.0.087 (2014-06-25)
+       - A bug affecting fitcell option in Multicell was fixed.
+
+6.0.086 (2014-06-20)
+       - Bug item #938 "Hyphenation-dash extends outside of cell" was fixed (collateral effect).
+
+6.0.085 (2014-06-19)
+       - Some example images were replaced.
+       - A race condition bug was fixed.
+       - Bug item #938 "Hyphenation-dash extends outside of cell" was fixed.
+
+6.0.084 (2014-06-13)
+       - A bug related to MultiCell fitcell feature was fixed.
+       - Bug item #931 "Documentation error for setPageFormat()" was fixed.
+
+6.0.083 (2014-05-29)
+       - Bug item #928 "setHtmlVSpace with HR element" was fixed.
+
+6.0.082 (2014-05-23)
+       - Bug item #926 "test statement instead of assignment used in tcpdf_fonts.php" was fixed.
+       - Bug item #925 "924 transparent images bug" was fixed.
+
+6.0.081 (2014-05-22)
+       - Bug item #922 "writehtml tables thead repeating" was fixed.
+       - Patch #71 "External and internal links, local and remote" wa applied.
+
+6.0.080 (2014-05-20)
+       - Bug item #921 "Fatal error in hyphenateText() function" was fixed.
+       - Bug item #923 "Automatic Hyphenation error" was fixed.
+       - Patch #70 "Augument TCPDFBarcode classes with ability to return raw png image data" was applied.
+
+6.0.079 (2014-05-19)
+       - Patch item #69 "Named destinations, HTML internal and external links" was merged.
+       - Bug item #920 "hyphenateText() should not hyphenate the content of style-tags in HTML mode" was fixed.
+       - Image method now trigs an error in case the cache is now writeable.
+       - Fixed issue with layer default status.
+
+6.0.078 (2014-05-12)
+       - A warning issue in addTTFfont() method was fixed.
+       - Fonts were updated to include cbbox metrics.
+
+6.0.077 (2014-05-06)
+       - A Datamatrix barcode bug was fixed.
+
+6.0.076 (2014-05-06)
+       - A bug in Datamatrix Base256 encoding was fixed.
+       - Merged fix for SVG use/clip-gradient.
+       - Now it is possible to prefix a page number in Link methods with the * character to avoid been changed when adding/deleting/moving pages (see example_045.php).
+
+6.0.075 (2014-05-05)
+       - Bug #917 "Using realtive Units like ex or em for images distort output in HTML mode" was fixed.
+
+6.0.074 (2014-05-03)
+       - Part of Bug #917 "Using realtive Units like ex or em for images distort output in HTML mode" was fixed.
+       - Bug #915 "Problem with SVG Image using Radial Gradients" was fixed.
+
+6.0.073 (2014-04-29)
+       - Bug #913 "Possible bug with line-height" was fixed.
+       - Bug #914 "MultiCell and FitCell" was fixed.
+       - Bug #915 "Problem with SVG Image using Radial Gradients" was fixed.
+
+6.0.072 (2014-04-27)
+       - Deprecated curly braces substring syntax was replaced with square braces.
+
+6.0.071 (2014-04-25)
+       - Bug #911 "error with buffered png pics" was fixed.
+
+6.0.070 (2014-04-24)
+       - Bug #910 "An SVG image is being cut off (with clipping mask) when you use align options" was fixed.
+
+6.0.069 (2014-04-24)
+       - Datamatrix Base256 encoding was fixed.
+
+6.0.068 (2014-04-22)
+       - Some Datamatrix barcode bugs were fixed.
+
+6.0.067 (2014-04-21)
+       - startLayer() method signature was changed to include a new "lock" parameter.
+
+6.0.066 (2014-04-20)
+       - Bug #908 "Linebreak is not considered when getting length of the next string" was fixed.
+
+6.0.065 (2014-04-10)
+       - Bug #905 "RGB percentage color bug in convertHTMLColorToDec()" was fixed.
+
+6.0.064 (2014-04-07)
+       - Header and Footer fonts are now set by default.
+       - Bug #904 "PDF corrupted" was fixed.
+
+6.0.063 (2014-04-03)
+       - Method TCPDF_IMAGES::_parsepng() was fixed to support transparency in Indexed images.
+
+6.0.062 (2014-03-02)
+       - The method startLayer() now accepts the NULL value for the $print parameter to not set the print layer option.
+
+6.0.061 (2014-02-18)
+       - Bug #893 "Parsing error on streamed xref for secured pdf" was fixed.
+
+6.0.060 (2014-02-16)
+       - Bug #891 "Error on parsing hexa fields" was fixed.
+       - Bug #892 "Parsing pdf with trailing space at start" was fixed.
+
+6.0.059 (2014-02-03)
+       - SVG 'use' support was imporved.
+
+6.0.058 (2014-01-31)
+       - Bug #886 "Bugs with SVG using <defs> and <use>" was fixed.
+
+6.0.057 (2014-01-26)
+       - Bug #883 "Parsing error" was fixed.
+
+6.0.056 (2014-01-25)
+       - The automatic cache folder selection now works also with some restricted hosting environments.
+       - CSS text-transform property is now supported (requires the multibyte string library for php) - see examle n. 061 (Thanks to Walter Ferraz).
+       - Bug #884 "Parsing error prev tag looking for" was fixed.
+
+6.0.055 (2014-01-15)
+       - Bug #880 "Error detecting hX tags (h1,h2..)" was fixed
+       - Bug #879 "Thead on the second page inherits style of previous tr" was fixed
+
+6.0.054 (2014-01-13)
+       - Bug #877 "Parenteses causing corrupt text" was fixed.
+
+6.0.053 (2014-01-03)
+       - Bug #876 "Cell padding should not be multiplied with number of lines in getStringHeight" was fixed.
+       - Patch #68 "Empty img src attribute leads to access of uninitialized string offset" was applied.
+
+6.0.052 (2013-12-12)
+       - Bug #871 "Datamatrix coding" was fixed.
+
+6.0.051 (2013-12-02)
+       - cbbox array values in addTTFfont() were converted to integers.
+
+6.0.050 (2013-12-01)
+       - The method getNumLines() was extended to support hyphenation.
+       - The CSS property line-height now supports non percentage values.
+
+6.0.050 (2013-11-27)
+       - A bug related to PNG images was fixed.
+
+6.0.048 (2013-11-24)
+       - SVG vars are now reset in ImageSVG() method.
+
+6.0.047 (2013-11-19)
+       - SVG support was extended to support some nested defs.
+
+6.0.046 (2013-11-17)
+       - preg_replace_callback functions were replaced to improve memory performances.
+
+6.0.045 (2013-11-17)
+       - Bug #862 "Parsing error on flate filter" was fixed.
+
+6.0.044 (2013-11-10)
+       - Bug #857 "Undefined offset error" was fixed.
+       - The uniord method now uses a static cache to improve performances (thanks to Mathieu Masseboeuf for the sugegstion).
+       - Two bugs in the TCPDF_FONTS class were fixed.
+
+6.0.043 (2013-10-29)
+       - Bug #854 "CSS instruction display" was fixed.
+
+6.0.042 (2013-10-25)
+       - Bug #852 "CMYK Colors Bug" was fixed.
+
+6.0.041 (2013-10-21)
+       - Bug #851 "Problem with images in PDF. PHP timing out" was fixed.
+
+6.0.040 (2013-10-20)
+       - Bug #849 "SVG import bug" was fixed.
+
+6.0.039 (2013-10-13)
+       - Bug #843 "Wrong call in parser" was fixed.
+       - Bug #844 "Wrong object type named" was fixed.
+       - Bug #845 "Parsing error on obj ref prefixed by '000000'" was fixed.
+
+6.0.038 (2013-10-06)
+       - Bug #841 "Division by zero warning at writeHTML a <li> tag" was fixed.
+
+6.0.037 (2013-09-30)
+       - Method getAllSpotColors() was added to return all spot colors.
+       - Method colorRegistrationBar() was extended to automatically print all spot colors and support individual spot colors.
+       - The method registrationMarkCMYK() was added to print a registration mark for CMYK colors.
+       - A bug related to page groups was fixed.
+       - Gradient() method now supports CMYK equivalents of spot colors.
+       - Example n. 56 was updated.
+
+6.0.036 (2013-09-29)
+       - Methods for registration bars and crop marks were extended to support registration color (see example n. 56).
+       - New default spot colors were added to tcpdf_colors.php, including the 'All' and 'None' special registration colors.
+
+6.0.035 (2013-09-25)
+       - TCPDF_PARSER class was improved.
+
+6.0.034 (2013-09-24)
+       - Bug #839 "Error in xref parsing in mixed newline chars" was fixed.
+
+6.0.033 (2013-09-23)
+       - Bug fix related to PNG image transparency using GD library.
+
+6.0.032 (2013-09-23)
+       - Bug #838 "Fatal error when imagick cannot handle the image, even though GD is available and can" was fixed.
+
+6.0.031 (2013-09-18)
+       - Bug #836 "Optional EOL marker before endstream" was fixed.
+       - Some additional controls were added to avoid "division by zero" error with badly formatted input.
+
+6.0.030 (2013-09-17)
+       - Bug #835 "PDF417 and Cyrilic simbols" was fixed.
+
+6.0.029 (2013-09-15)
+       - Constants K_TCPDF_PARSER_THROW_EXCEPTION_ERROR and K_TCPDF_PARSER_IGNORE_DECODING_ERRORS where removed in favor of a new configuration array in the TCPDF_PARSER class.
+       - The TCPDF_PARSER class can now be configured using the new $cfg parameter.
+
+6.0.028 (2013-09-15)
+       - A debug print_r was removed form tcpdf_parser.php.
+       - TCPDF_FILTERS class now throws an exception in case of error.
+       - TCPDF_PARSER class now throws an exception in case of error unless you define the constant K_TCPDF_PARSER_THROW_EXCEPTION_ERROR to false.
+       - The constant K_TCPDF_PARSER_IGNORE_DECODING_ERRORS can be set to tru eto ignore decoding errors on TCPDF_PARSER.
+
+6.0.027 (2013-09-14)
+       - A bug in tcpdf_parser wen parsing hexadecimal strings was fixed.
+       - A bug in tcpdf_parser wen looking for statxref was fixed.
+       - A bug on RC4 encryption was fixed.
+
+6.0.026 (2013-09-14)
+       - A bug in tcpdf_parser wen decoding streams was fixed.
+
+6.0.025 (2013-09-04)
+       - A pregSplit() bug was fixed.
+       - Improved content loading from URLs.
+       - Improved font path loading.
+
+6.0.024 (2013-09-02)
+       - Bug #826 "addEmptySignatureAppearance issue" was fixed.
+
+6.0.023 (2013-08-05)
+       - GNU Freefont fonts were updated.
+       - Licensing and copyright information about fonts were improved.
+       - PNG image support was improved.
+
+6.0.022 (2013-08-02)
+       - fixing initialization problem for signature_appearance property.
+
+6.0.021 (2013-07-18)
+       - The bug caused by the preg_split function on some PHP 5.2.x versions was fixed.
+
+6.0.020 (2013-06-04)
+       - The method addTTFfont() was fixed (Bug item #813 Undefined offset).
+
+6.0.019 (2013-06-04)
+       - The magic constant __DIR__ was replaced with dirname(__FILE__) for php 5.2 compatibility.
+       - The exceptions raised by file_exists() function were suppressed.
+
+6.0.018 (2013-05-19)
+       - The barcode examples were changed to automatically search for the barcode class path (in case the examples directory is not installed under the TCPDF root).
+
+6.0.017 (2013-05-16)
+       - The command line tool tcpdf_addfont.php was improved.
+       - The php logic was removed from configuration files that now contains only constant defines.
+       - The tcpdf_autoconfig.php file was added to automatically set missing configuration values.
+
+6.0.016 (2013-05-15)
+       - The tcpdf_addfont.php tool was improved (thanks to Remi Collet).
+       - Constant K_PATH_IMAGES is now automatically set in configuration file.
+
+6.0.015 (2013-05-14)
+       - Some unused vars were removed from AddFont() method.
+       - Some directories were moved inside the examples directory.
+       - All examples were updated to reflect the new default structure.
+       - Source code were clean-up up to be more compatible with system packaging.
+       - Files encodings and permissions were reset.
+       - The command line tool tcpdf_addfont.php was added on the tools directory.
+
+6.0.014 (2013-04-13)
+       - The signature of addTTFfont() method includes a new parameter to link existing fonts instead of copying and compressing them.
+
+6.0.013 (2013-04-10)
+       - Add support for SVG dx and dy text/tspan attributes.
+       - replace require() with require_once().
+       - fix some minor typos on documentation.
+       - fix a problem when deleting all pages.
+
+6.0.012 (2013-04-24)
+       - An error condition in addHtmlLink() method was fixed (bug #799).
+
+6.0.011 (2013-04-22)
+       - Minor documentation changes.
+
+6.0.010 (2013-04-03)
+       - The method Rect() was fixed to print borders correctly.
+
+6.0.009 (2013-04-02)
+       - Adding back some files that were not properly committed on the latest release.
+
+6.0.008 (2013-04-01)
+       - Duplicated encoding maps was removed from tcpdf_font_data.php.
+       - Fixing bug on AddTTFFont().
+
+6.0.007 (2013-03-29)
+       - HTML/CSS font size conversion were improved.
+
+6.0.006 (2013-03-27)
+       - Bug related to SVG and EPS files on xobjects were fixed.
+
+6.0.005 (2013-03-26)
+       - Default font path was fixed.
+
+6.0.004 (2013-03-21)
+       - Return value of addTTFfont() method was fixed.
+
+6.0.003 (2013-03-20)
+       - A bug related to non-unicode mode was fixed.
+
+6.0.002 (2013-03-18)
+       - _getFIXED call on tcpdf_fonts.php was fixed.
+
+6.0.001 (2013-03-18)
+       - Fixed $uni_type call on tcpdf.php.
+
+6.0.000 (2013-03-17)
+       - IMPORTANT: PHP4 support has been removed starting from this version.
+       - Several TCPDF methods and vars were moved to new class files: tcpdf_static.php, tcpdf_colors.php, tcpdf_images.php, tcpdf_font_data.php, tcpdf_fonts.php.
+       - Files htmlcolors.php, spotcolors.php, unicode_data.php and ecodings_maps.php were removed.
+       - Barcode classes were renamed and new barcode examples were added.
+       - Class TCPDF_PARSER was improved.
+
+********************************************************************************
+
+5.9.209 (2013-03-15)
+       - Image method was improved.
+
+5.9.208 (2013-03-15)
+       - objclone fuction was patched to support old imagick extensions.
+       - tcpdf_parser was improved to support Cross-Reference Streams and large streams.
+
+5.9.207 (2013-03-04)
+       - Datamatrix class was fixed (a debug echo was removed).
+
+5.9.206 (2013-02-22)
+       - Bug item #754 "PNG with alpha channel becomes gray scale" was fixed.
+       - Minor documentation fixes.
+
+5.9.205 (2013-02-06)
+       - The constant K_TCPDF_THROW_EXCEPTION_ERROR was added on configuration file to change the behavior of Error() method.
+       - PDF417 barcode bug was fixed.
+
+5.9.204 (2013-01-23)
+       - The method Bookmark() was extended to include named destinations, URLs, internal links or embedded files (see example n. 15).
+       - automatic path calculation on configuration file was fixed.
+       - Error() method was extended to throw new Exception if PHP > 5.
+
+5.9.203 (2013-01-22)
+       - Horizontal position of radiobuttons and checkboxes was adjusted.
+
+5.9.202 (2012-12-16)
+       - Vertical space problem after table was fixed.
+
+5.9.201 (2012-12-10)
+       - First 256 chars are now always included on font subset to overcome a problem reported on the forum.
+
+5.9.200 (2012-12-05)
+       - Bug item #768 "Rowspan with Pagebreak error" was fixed.
+       - Page regions now works also with limited MultiCell() cells.
+
+5.9.199 (2012-11-29)
+       - Internal setImageBuffer() method was improved.
+
+5.9.198 (2012-11-19)
+       - Datamatrix EDIFACT mode was fixed.
+
+5.9.197 (2012-11-06)
+       - Bug item #756 "TCPDF 5.9.196 shows line on top of all PDFs" was fixed.
+
+5.9.196 (2012-11-02)
+       - Several methods were improved to avoid output when the context is out of page.
+       - Bug item #755 "remove cached files before unsetting" was fixed.
+
+5.9.195 (2012-10-24)
+       - Method _putfonts() was improved.
+
+5.9.194 (2012-10-23)
+       - Text alignment on TextField() method was fixed.
+
+5.9.193 (2012-09-25)
+       - Support for named destinations on HTML links was added  (i.e.: <a href="#destinationname">link to named destination</a>).
+
+5.9.192 (2012-09-24)
+       - A problem on the releasing process was fixed.
+
+5.9.191 (2012-09-24)
+       - SVG image naow support svg and eps images.
+
+5.9.190 (2012-09-23)
+       - "page" word translation is now set to empty if not defined.
+       - Tooltip feature was added on the radiobutton annotation.
+
+5.9.189 (2012-09-18)
+       - Bug item #3568969 "ini_get safe_mode error" was fixed.
+
+5.9.188 (2012-09-15)
+       - A datamatrix barcode bug was fixed.
+
+5.9.187 (2012-09-14)
+       - Subset feature was extended to include the first 256 characters.
+
+5.9.186 (2012-09-13)
+       - barcodes.php file was resynced.
+       - Methods SetAbsX, SetAbsY, SetAbsXY where added to set the absolute pointer coordinates.
+       - Method getCharBBox were added to get single character bounding box.
+       - Signature of addTTFfont method was changed ($addcbbox paramter was added).
+
+5.9.185 (2012-09-12)
+       - Method _putfontwidths() was fixed.
+
+5.9.184 (2012-09-11)
+       - A problem with EAN barcodes was fixed.
+
+5.9.183 (2012-09-07)
+       - A problem with font names normalization was fixed.
+
+5.9.182 (2012-09-05)
+       - Bug item #3564982 "Infinite loop in Write() method" was fixed.
+
+5.9.181 (2012-08-31)
+       - composer.json file was added.
+       - Bug item #3563369 "Cached images are not unlinked some time" was fixed.
+
+5.9.180 (2012-08-22)
+       - Bug item #3560493 "Problems with nested cells in HTML" was fixed.
+
+5.9.179 (2012-08-04)
+       - SVG 'use' tag was fixed for 'circle' and 'ellipse' shift problem.
+       - Alpha status is now correctly stored and restored by getGraphicVars() and SetGraphicVars() methods.
+
+5.9.178 (2012-08-02)
+       - SVG 'use' tag was fixed for 'circle' and 'ellipse'.
+
+5.9.177 (2012-08-02)
+       - An additional control on annotations was fixed.
+
+5.9.176 (2012-07-25)
+       - A bug related to stroke width was fixed.
+       - A problem related to font spacing in HTML was fixed.
+
+5.9.175 (2012-07-25)
+       - The problem of missing letter on hyphen break was fixed.
+
+5.9.174 (2012-07-25)
+       - The problem of wrong filename when downloading PDF from an Android device was fixed.
+       - The method setHeaderData() was extended to set text and line color for header (see example n. 1).
+       - The method setFooterData() was added to set text and line color for footer (see example n. 1).
+       - The methods setTextShadow() and getTextShadow() were added to set text shadows (see example n. 1).
+       - The GetCharWidth() method was fixed for negative character spacing.
+       - A 'none' border mode is now correctly recognized.
+       - Break on hyphen problem was fixed.
+
+5.9.173 (2012-07-23)
+       - Some additional control wher added on barcode methods.
+       - The option CURLOPT_FOLLOWLOCATION on Image method is now disabled if PHP safe_mode is on or open_basedir is set.
+       - Method Bookmark() was extended to include X parameter.
+       - Method setDestination() was extended to include X parameter.
+       - A problem with Thai language was fixed.
+
+5.9.172 (2012-07-02)
+       - A PNG color profile issue was fixed.
+
+5.9.171 (2012-07-01)
+       - Some SVG rendering problems were fixed.
+
+5.9.170 (2012-06-27)
+       - Bug #3538227 "Numerous errors inserting shared images" was fixed.
+
+5.9.169 (2012-06-25)
+       - Some SVG rendering problems were fixed.
+
+5.9.168 (2012-06-22)
+       - Thai language rendering was fixed.
+
+5.9.167 (2012-06-22)
+       - Thai language rendering was fixed and improved.
+       - Method isCharDefined() was improved.
+       - Protected method replaceChar() was added.
+       - Font "kerning" word was corrected to "tracking".
+
+5.9.166 (2012-06-21)
+       - Array to string conversion on file_id creation was fixed.
+       - Thai language rendering was fixed (thanks to Atsawin Chaowanakritsanakul).
+
+5.9.165 (2012-06-07)
+       - Some HTML form related bugs were fixed.
+
+5.9.164 (2012-06-06)
+       - A bug introduced on the latest release was fixed.
+
+5.9.163 (2012-06-05)
+       - Method getGDgamma() was changed.
+       - Rendering performances of PNG images with alpha channel were improved.
+
+5.9.162 (2012-05-11)
+       - A bug related to long text on TD cells was fixed.
+
+5.9.161 (2012-05-09)
+       - A bug on XREF table was fixed (Bug ID: 3525051).
+       - Deprecated Imagick:clone was replaced.
+       - Method objclone() was fixed for PHP4.
+
+5.9.160 (2012-05-03)
+       - A bug on tcpdf_parser.php was fixed.
+
+5.9.159 (2012-04-30)
+       - Barcode classes were updated to fix PNG export Bug (ID: 3522291).
+
+5.9.158 (2012-04-22)
+       - Some SVG-related bugs were fixed.
+
+5.9.157 (2012-04-16)
+       - Some SVG-related bugs were fixed.
+
+5.9.156 (2012-04-10)
+       - Bug item #3515885 "TOC and booklet: left and right page exchanged".
+       - SetAutoPageBreak(false) now works also in multicolumn mode.
+
+5.9.155 (2012-04-02)
+       - Bug item #3512596 "font import problems" was fixed.
+       - Method addTTFfont() was modified to extract only specified Platform ID and Encoding ID (check the source code documentation).
+       - All fonts were updated.
+       - Bug item #3513867 "booklet and setHeaderTemplateAutoreset: header shifted left" was fixed.
+       - Bug item #3513749 "TCPDF Superscript/Subscript" was fixed.
+
+5.9.154 (2012-03-29)
+       - A debug echo was removed.
+
+5.9.153 (2012-03-28)
+       - A bug on font conversion was fixed.
+       - All fonts were updated.
+       - Method isCharDefined() was added to find if a character is defined on the selected font.
+       - Method replaceMissingChars() was added to automatically replace missing chars on selected font.
+       - SetFont() method was fixed.
+
+5.9.152 (2012-03-23)
+       - The following overprint methods were added: setOverprint(), getOverprint().
+       - Signature of setAlpha() method was changed and method getAlpha() was added.
+       - stroke-opacity support was added on SVG.
+       - The following date methods were added: setDocCreationTimestamp(), setDocModificationTimestamp(), getDocCreationTimestamp(), getDocModificationTimestamp(), getFormattedDate(), getTimestamp().
+       - Signature of _datestring() method was changed.
+       - Method getFontBBox() was added.
+       - Method setPageBoxTypes() was aded.
+
+5.9.151 (2012-03-22)
+       - Bug item #3509889 "Transform() distorts PDF" was fixed.
+       - Precision of real number were extended.
+       - ComboBox and ListBox methods were fixed.
+       - Bulgarian language file was added.
+       - addTOC() method was improved to include bookmark color and font style.
+
+5.9.150 (2012-03-16)
+       - A bug related to form fields in PDF/A mode was fixed.
+
+5.9.149 (2012-02-21)
+       - Bug item #3489933 "SVG Parser treats tspan like text" was fixed.
+
+5.9.148 (2012-02-17)
+       - Bug item #3488600 "Multiple radiobutton sets get first set value" was fixed.
+
+5.9.147 (2012-02-14)
+       - A problem with SVG gradients has been fixed.
+
+5.9.146 (2012-02-12)
+       - Bug item #3486880 "$filehash undefine error" was fixed.
+       - The default font is now the one specified at PDF_FONT_NAME_MAIN constant.
+
+5.9.145 (2012-01-28)
+       - Japanese language file was added.
+       - TCPDF license and README.TXT files were updated.
+
+5.9.144 (2012-01-12)
+       - HTML output on barcode classes was improved.
+
+5.9.143 (2012-01-08)
+       - Bug item #3471057 "setCreator() has no effect" was fixed.
+
+5.9.142 (2011-12-23)
+       - Source code documentation was updated.
+
+5.9.141 (2011-12-14)
+       - Some minor bugs were fixed.
+
+5.9.140 (2011-12-13)
+       - SVG now supports embedded images encoded as base64.
+
+5.9.139 (2011-12-11)
+       - Spot color methods were fixed.
+
+5.9.138 (2011-12-10)
+       - cropMark() method was improved (check source code documentation).
+       - Example n. 56 was updated.
+       - Bug item #3452390 "Check Box still not ticked when set to true" was fixed.
+
+5.9.137 (2011-12-01)
+       - Bug item #3447005 "Background color and border of Form Elements is printed" was fixed.
+       - Color support for Form elements was improved.
+
+5.9.136 (2011-11-27)
+       - Bug item #3443387 "SetMargins with keep option does not work for top margin" was fixed.
+
+5.9.135 (2011-11-04)
+       - Bug item #3433406 "Double keywords in description" was fixed.
+
+5.9.134 (2011-10-29)
+       - The default value for $defcol parameter on convertHTMLColorToDec() method was fixed.
+       - Deafult HTTP headers were changed to avoid browser caching.
+       - Some deprecated syntax were replaced.
+
+5.9.133 (2011-10-26)
+       - Bug item #3428446 "copyPage method not working when diskcache enabled" was fixed.
+
+5.9.132 (2011-10-20)
+       - Bug item #3426167 "bug in function convertHTMLColorToDec()" was fixed.
+
+5.9.131 (2011-10-13)
+       - An error message was added to ImagePngAlpha() method.
+
+5.9.130 (2011-10-12)
+       - Now you can set image data strings on HTML img tag by encoding the image binary data in this way: $imgsrc = '@'.base64_encode($imgdata);
+
+5.9.129 (2011-10-07)
+       - Core fonts metrics was fixed (replace all helvetica and times php files on fonts folder).
+       - Form fields support was improved and some problems were fixed (check the example n. 14).
+       - Bug item #3420249 "Issue with booklet and MultiCell" was fixed.
+
+5.9.128 (2011-10-06)
+       - Method addTTFfont() was improved (check the source code documentation).
+       - Method setExtraXMP() to set custom XMP data was added.
+
+5.9.127 (2011-10-04)
+       - Readonly mode option was activated for radiobuttons.
+
+5.9.126 (2011-10-03)
+       - Bug item #3417989 "Graphics State operator in form XObject fails to render" was fixed.
+       - Xobjects problems with transparency, gradients and spot colors were fixed.
+
+5.9.125 (2011-10-03)
+       - Support for 8-digit CMYK hexadecimal color representation was added (to be used with XHTML and SVG).
+       - Spot colors support was improved (check example n. 37).
+       - Color methods were improved.
+
+5.9.124 (2011-10-02)
+       - Core fonts were updated.
+
+5.9.123 (2011-10-02)
+       - The method addTTFfont() wad added to automatically convert TTF fonts (check the new fonts guide at http://www.tcpdf.org).
+       - Old font utils were removed.
+       - All fonts were updated and new arabic fonts were added (almohanad were removed and replaced by aefurat and aealarabiya).
+       - The file unicode_data.php was updated.
+       - The file encodings_maps.php was added.
+       - PDF/A files are now compressed to save space.
+       - XHTML input form fields now support text-alignment attribute.
+
+5.9.122 (2011-09-29)
+       - PDF/A-1b compliance was improved to pass some online testing.
+
+5.9.121 (2011-09-28)
+       - This version includes support for PDF/A-1b format (the class constructor signature was changed - see example n. 65).
+       - Method setSRGBmode() was added to force sRGB_IEC61966-2.1 black scaled ICC color profile for the whole document (file sRGB.icc was added).
+       - 14 new fonts were added to allow embedding core fonts (for PDF/A compliance).
+       - Font utils were fixed.
+
+5.9.120 (2011-09-22)
+       - This version includes a fix for _getTrueTypeFontSubset() method.
+
+5.9.119 (2011-09-19)
+       - This version includes a fix for extra page numbering on TOC.
+
+5.9.118 (2011-09-17)
+       - This version includes some changes that allows you to add a bookmark for a page that do not exist.
+
+5.9.117 (2011-09-15)
+       - TCPDFBarcode and TCPDF2DBarcode classes were extended to include a method for exporting barcodes as PNG images.
+
+5.9.116 (2011-09-14)
+       - Datamatrix class was improved and documentation was fixed.
+
+5.9.115 (2011-09-13)
+       - Datamatrix ECC200 barcode support was added (a new datamatrix.php file was added) - check example n. 50.
+       - getBarcodeHTML() method was added on TCPDFBarcode and TCPDF2DBarcode classes to return an HTML representation of the barcode.
+       - cURL options on Image() method were improved.
+       - A bug on write2DBarcode() was fixed.
+
+5.9.114 (2011-09-04)
+       - A bug related to column position was fixed.
+
+5.9.113 (2011-08-24)
+       - This release include two new experimental files for parsing an existing PDF document (the integration with TCPDF is under development).
+
+5.9.112 (2011-08-18)
+       - A newline character was added after the 'trailer' keyword for compatibility with some parsers.
+       - Support for layers was improved.
+
+5.9.111 (2011-08-17)
+       - Barcode CODE 39 default gap was restored at 1.
+
+5.9.110 (2011-08-17)
+       - Barcode CODE 39 was fixed.
+
+5.9.109 (2011-08-12)
+       - Method getNumLines() was fixed.
+       - A bug related to page break in multi-column mode was fixed.
+
+5.9.108 (2011-08-09)
+       - A bug on PHP4 version was fixed.
+
+5.9.107 (2011-08-08)
+       - This version includes a minor bugfix.
+
+5.9.106 (2011-08-04)
+       - This version includes transparency groups: check the new parameter on startTemplate() method and example 62.
+
+5.9.105 (2011-08-04)
+       - Bug item #3386153 "Check Box not ticked when set to true" was fixed.
+
+5.9.104 (2011-08-01)
+       - Bug item #3383698 "imagemagick, resize and dpi" was fixed.
+
+5.9.103 (2011-07-16)
+       - Alignment of XHTML lines was improved.
+       - Spell of the "length" word was fixed.
+
+5.9.102 (2011-07-13)
+       - Methods startLayer() and endLayer() were added to support arbitrary PDF layers.
+       - Some improvements/fixes for images were added (thanks to Brendan Abbott).
+
+5.9.101 (2011-07-07)
+       - Support for JPEG and PNG ICC Color Profiles was added.
+       - Method addEmptySignatureAppearance() was added to add empty signature fields (see example n. 52).
+       - Bug item #3354332 "Strange line spacing with reduced font-size in writeHTML" was fixed.
+
+5.9.100 (2011-06-29)
+       - An SVG bug has been fixed.
+
+5.9.099 (2011-06-27)
+       - Bug item #3335045 "Font freesans seems somehow corrupted in footer" was fixed.
+
+5.9.098 (2011-06-23)
+       - The Named Destination feature was fixed.
+
+5.9.097 (2011-06-23)
+       - The method setHtmlVSpace() now can be used also for tags: div, li, br, dt and dd.
+       - The Named Destination feature was added (check the example n. 15) - thanks to Christian Deligant.
+
+5.9.096 (2011-06-19)
+       - Bug item #3322234 "Surrogate pairs codes in arrUTF8ToUTF16BE" was fixed.
+
+5.9.095 (2011-06-18)
+       - Numbers alignment for Table-Of-Content methods was improved and fixed.
+       - Font subsetting was fixed to include all parts of composite fonts.
+
+5.9.094 (2011-06-17)
+       - Bug item #3317898 "Page Group numbering broken in 5.9.093" was fixed.
+
+5.9.093 (2011-06-16)
+       - Method setStartingPageNumber() was added to set starting page number (for automatic page numbering).
+
+5.9.092 (2011-06-15)
+       - Method _putpages() was improved.
+       - Bug item #3316678 "Memory overflow when use Rotate and SetAutoPageBreak" was fixed.
+       - Right alignment of page numbers was improved.
+
+5.9.090 (2011-06-14)
+       - Methods AliasNbPages() and AliasNumPage() were re-added as deprecated for backward compatibility.
+
+5.9.089 (2011-06-13)
+       - Example n. 8 was updated.
+       - Method sendOutputData() was changed to remove default compression (it was incompatible with some server settings).
+       - Bugs related to page group numbers were fixed.
+       - Method copyPage() was fixed.
+       - Method Image() was improved to include support for alternative and external images.
+
+5.9.088 (2011-06-01)
+       - Method getAutoPageBreak() was added (see example n. 51).
+       - Example n. 51 (full page background) was updated.
+
+5.9.087 (2011-06-01)
+       - Method sendOutputData() was improved to include deflate encoding.
+       - Barcode classes on PHP 4 version were fixed.
+
+5.9.086 (2011-05-31)
+       - Font files were updated (the ones on the previous release were broken).
+       - The script fonts/utils/makeallttffonts.php was updated and fixed.
+       - Output() method was improved to use compression when available.
+
+5.9.085 (2011-05-31)
+       - TCPDFBarcode class (barcodes.php) now includes getBarcodeSVG() and getBarcodeSVGcode() methods to get SVG image representation of the barcode.
+       - TCPDF2DBarcode class (2dbarcodes.php) now includes getBarcodeSVG() and getBarcodeSVGcode() methods to get SVG image representation of the barcode.
+
+5.9.084 (2011-05-29)
+       - Font files were updated.
+       - The file fonts/utils/makeallttffonts.php was updated.
+       - Bug item# 3308774 "Problems with font subsetting" was fixed.
+
+5.9.083 (2011-05-24)
+       - Bug item #3308387 "line height & SetCellHeightRatio" was fixed.
+
+5.9.082 (2011-05-22)
+       - Bug item #3305592 "Setting fill color <> text color breaks text clipping" was fixed.
+
+5.9.081 (2011-05-18)
+       - Method resetHeaderTemplate() was added to reset the xobject template used by Header() method.
+       - Method setHeaderTemplateAutoreset() was added to automatically reset the xobject template used by Header() method at each page.
+
+5.9.080 (2011-05-17)
+       - A problem related to file path calculation for images was fixed.
+       - A problem related to unsupressed getimagesize() error was fixed.
+
+5.9.079 (2011-05-16)
+       - Footer() method was changed to use C128 barcode as default (instead of the previous C128B).
+
+5.9.078 (2011-05-12)
+       - Bug item #3300878 "wrong rendering for html bullet list in some case" was fixed.
+       - Bug item #3301017 "Emphasized vs. font-weight" was fixed.
+       - Barcode Code 128 was improved to include AUTO mode (automatically switch between A, B and C modes).
+       - Examples n. 27 and 49 were updated.
+
+5.9.077 (2011-05-07)
+       - Bug item #3298591 "error code93" was fixed.
+       - SetLineStyle() function was improved.
+
+5.9.076 (2011-05-06)
+       - Bug item #3298264 "codebar 93 error" was fixed.
+
+5.9.075 (2011-05-02)
+       - Table header alignment when using WriteHTMLCell() or MultiCell() was fixed.
+
+5.9.074 (2011-04-28)
+       - Bug item #3294306 "CSS classes not work in <thead> table section" was fixed.
+
+5.9.073 (2011-04-27)
+       - A bug related to character entities on HTML cells was fixed.
+
+5.9.072 (2011-04-26)
+       - Method resetColumns() was added to remove multiple columns and reset page margins (example n. 10 was updated).
+
+5.9.071 (2011-04-19)
+       - Bug #3288574 "<br/> trouble" was fixed.
+
+5.9.069 (2011-04-19)
+       - Bug #3288763 "HTML-Table: non-breaking table rows: Bug" was fixed.
+
+5.9.068 (2011-04-15)
+       - Bookmark, addTOC and addHTMLTOC methods were improved to include font style and color (Examples 15, 49 and 59 were updated).
+       - Default $_SERVER['DOCUMENT_ROOT'] value on tcpdf_config.php file was changed.
+
+5.9.067 (2011-04-10)
+       - Performances were drastically improved (PDF documents are now created more quickly).
+
+5.9.066 (2011-04-09)
+       - A bug related to digital signature + encryption was fixed.
+       - A bug related to encryption + xobject templates was fixed.
+
+5.9.065 (2011-04-08)
+       - Bug item #3280512 "Text encoding iso-8859-2 crashes" was fixed.
+
+5.9.064 (2011-04-05)
+       - A bug related to character entities on HTML cells was fixed.
+
+5.9.063 (2011-04-01)
+       - Bug item #3267235 "WriteHTML() and image that doesn't fit on the page" was fixed.
+
+5.9.062 (2011-03-23)
+       - Bug item #3232650 "Using Write if there are pageRegions active creates error" was fixed.
+       - Bug item #3221891 "text input borders" was fixed.
+       - Bug item #3228958 "Adobe Reader 9.4.2 crash" was fixed.
+
+5.9.061 (2011-03-15)
+       - Bug item #3213488 "wrong function call in function Write" was fixed.
+       - Bug item #3203007 "list element with black background" was fixed.
+
+5.9.060 (2011-03-08)
+       - addTOC() method was fixed for text alignment problems.
+
+5.9.059 (2011-02-27)
+       - Default Header() method was improved to reduce document size.
+
+5.9.058 (2011-02-25)
+       - Image() method was improved to cache images with transparency layers (thanks to Korneliusz Jarzębski for reporting this problem).
+
+5.9.057 (2011-02-24)
+       - A problem with image caching system was fixed (thanks to Korneliusz Jarzębski for reporting this problem).
+
+5.9.056 (2011-02-22)
+       - A bug on fixHTMLCode() method was fixed.
+       - Automatic line break for HTML was fixed.
+
+5.9.055 (2011-02-17)
+       - Another bug related to HTML table page break was fixed.
+
+5.9.054 (2011-02-16)
+       - A bug related to HTML table page break was fixed.
+
+5.9.053 (2011-02-16)
+       - Support for HTML attribute display="none" was added.
+
+5.9.052 (2011-02-15)
+       - A bug related to HTML automatic newlines was fixed.
+
+5.9.051 (2011-02-12)
+       - "Commas at beginning of new lines" problem was fixed.
+
+5.9.050 (2011-02-11)
+       - Bug #3177606 "SVG Bar chart error" was fixed.
+
+5.9.049 (2011-02-03)
+       - Bug #3170777 "TCPDF creates a new page after a single line in writeHTML" was fixed.
+
+5.9.048 (2011-02-02)
+       - No changes. Just released to override previous release that was not uploaded correctly.
+
+5.9.047 (2011-01-28)
+       - Bug #3167115 "PDF error in <table> (example 48)" was fixed (was introduced in 5.8.046).
+
+5.9.046 (2011-01-18)
+       - PDF view/print layers are now automatically turned off if not used (see setVisibility() method).
+
+5.9.045 (2011-01-17)
+       - HTML list support were improved.
+
+5.9.044 (2011-01-15)
+       - Bug #3158422 "writeHTMLCell Loop" was fixed.
+       - Some HTML image alignment problems were fixed.
+
+5.9.043 (2011-01-14)
+       - Bug #3158178 "PHP Notice" was fixed.
+       - Bug #3158193 "Endless loop in writeHTML" was fixed.
+       - Bug #3157764 "SVG Pie chart incorrectly rendered2".
+
+5.9.042 (2011-01-14)
+       - Some problems of the PHP4 version were fixed.
+
+5.9.041 (2011-01-13)
+       - A problem with SVG elliptical arc path was fixed (ref. bug #3156574).
+       - A problem related to font weight on HTML table headers was fixed.
+
+5.9.040 (2011-01-12)
+       - A bug related to empty pages after table was fixed.
+
+5.9.039 (2011-01-12)
+       - Bug item #3155759 "openssl_random_pseudo_bytes() slow under Windows" was fixed.
+
+5.9.038 (2011-01-11)
+       - Minor bugs were fixed.
+
+5.9.037 (2011-01-09)
+       - An alignment problem for HTML texts was fixed.
+
+5.9.036 (2011-01-07)
+       - A bug related to HTML tables on header was fixed.
+
+5.9.035 (2011-01-03)
+       - A problem related to HTML table border alignment was fixed.
+       - Bug #2996366 "FastCGI and Header Problems" was fixed.
+
+5.9.034 (2010-12-19)
+       - DejaVu and GNU Free fonts were updated.
+
+5.9.033 (2010-12-18)
+       - Source code documetnation was improved.
+
+5.9.032 (2010-12-18)
+       - Default font stretching and spacing values are now inherited by HTML methods.
+
+5.9.031 (2010-12-16)
+       - Source code documentation errors were fixed.
+
+5.9.030 (2010-12-16)
+       - Several source code documentation errors were fixed.
+       - Source code style was changed for Doxygen.
+       - Source code documentation was moved online to http://www.tcpdf.org
+
+5.9.029 (2010-12-04)
+       - The $fitbox parameter on Image() method was extended to specify image alignment inside the box (check the example n. 9).
+
+5.9.028 (2010-12-03)
+       - Font utils makefont.php and makeallttffonts.php were updated.
+
+5.9.027 (2010-12-01)
+       - Spot Colors are now better integrated with HTML mode.
+       - Method SetDocInfoUnicode() was added to turn on/off Unicode mode for document information dictionary (meta tags) - check the example n. 19.
+
+5.9.026 (2010-12-01)
+       - A problem with mixed text directions on HTML was fixed.
+
+5.9.025 (2010-12-01)
+       - The AddSpotColor() now automatically fills the spotcolor array (defined on spotcolors.php file).
+
+5.9.024 (2010-11-30)
+       - Bug item #3123612 "SVG not use gradientTransform in percentage mode" was fixed.
+
+5.9.023 (2010-11-25)
+       - A potential bug on SVG transcoder was fixed.
+
+5.9.022 (2010-11-21)
+       - Method ImageEPS includes support for EPS/AI Spot colors.
+       - Method ImageEPS includes a new parameter $fixoutvals to remove values outside the bounding box.
+
+5.9.021 (2010-11-20)
+       - Support for custom bullet points images was added (check the example n.6)
+       - Examples n. 6 and 61 were update (check the comments inside).
+
+5.9.020 (2010-11-19)
+       - A problem related to additional page when using multicolumn mode was fixed.
+
+5.9.019 (2010-11-19)
+       - An SVG bug was fixed.
+       - ImageSVG() and ImageEPS() methods now accepts image data streams (put the string on the $file parameter preceded by '@' character).
+       - Option 'E' was added to the $dest parameter of Output() method to return the document as base64 mime multi-part email attachment (RFC 2045).
+
+5.9.018 (2010-11-19)
+       - An SVG bug was fixed.
+
+5.9.017 (2010-11-16)
+       - Tagline color was set to transparent.
+       - The method fixHTMLCode() was added to automatically clean up HTML code (requires HTML Tidy).
+
+5.9.016 (2010-11-16)
+       - Bug item #3109705 "list item page break hanging bullet" was fixed.
+
+5.9.015 (2010-11-16)
+       - Bug item affecting QRCode was fixed.
+       - Some bugs affecting HTML lists were fixed.
+       - ImageSVG() and fitBlock() methods were improved to handle some SVG problems.
+       - Some problems with PHP4 compatibility were fixed.
+
+5.9.014 (2010-11-15)
+       - Bug item #3109464 "QRCode error" was fixed.
+
+5.9.013 (2010-11-15)
+       - Bug item #3109257 "Problem with interlaced GIFs and PNGs" was fixed.
+       - Image function now accepts image data streams (check example n. 9).
+
+5.9.012 (2010-11-12)
+       - Method getTCPDFVersion() was added.
+       - PDF_PRODUCER constant was removed.
+       - Method convertHTMLColorToDec() was improved.
+       - HTML colors now support spot color names defined on the new spotcolors.php file.
+       - The default method Header() was improved to support SVG and EPS/AI images.
+       - A bug on SVG importer was fixed.
+
+5.9.011 (2010-11-02)
+       - Bug item #3101486 "Bug Fix for image loading" was fixed.
+
+5.9.010 (2010-10-27)
+       - Support for CSS properties 'border-spacing' and 'padding' for tables were added.
+       - Several language files were added.
+
+5.9.009 (2010-10-21)
+       - HTML text alignment was improved to include the case of RTL text on LTR direction and LTR text on RTL direction.
+
+5.9.008 (2010-10-21)
+       - Bug item #3091502 "Bookmark oddity" was fixed.
+       - HTML internal links now accepts page number and Y position.
+       - The method write1DBarcode() was improved to accept separate horizontal and vertical padding (see example n. 27).
+
+5.9.007 (2010-10-20)
+       - Method adjustCellPadding() was fixed to handle bad input.
+
+5.9.006 (2010-10-19)
+       - Support for AES 256 bit encryption was added (see example n. 16).
+       - Method getNumLines() was fixed for the empty string case.
+
+5.9.005 (2010-10-18)
+       - Method addPageRegion() was changed to accept regions starting exactly from the top of the page.
+
+5.9.004 (2010-10-18)
+       - A bug related to annotations was fixed.
+       - The file unicode_data.php was canged to encapsulate all data in a class.
+       - The file htmlcolors.php was changed to remove the global variable.
+
+5.9.003 (2010-10-15)
+       - Support for no-write page regions was added. Check the example n. 64 and new methods setPageRegions(), addPageRegion(), getPageRegions(), removePageRegion().
+       - A bug on Right-To-Left alignment was fixed.
+
+5.9.002 (2010-10-08)
+       - Cell method was improved to preserve the font stretching and spacing values when using the $stretch parameter (see example n. 4).
+
+5.9.001 (2010-10-07)
+       - The problem of blank page for nobr table higher than a single page was fixed.
+
+5.9.000 (2010-10-06)
+       - Support for text stretching and spacing (tracking) was added, see example n. 63 and methods setFontStretching(), getFontStretching(), setFontSpacing(), getFontSpacing().
+       - Support for CSS properties 'font-stretch' and 'letter-spacing' was added (see example n. 63).
+       - The cMargin state was replaced by cell_padding array that can be set/get using setCellPadding() and getCellPadding() methods.
+       - Methods getCellPaddings() and setCellPaddings() were added to fine tune cell paddings (see example n. 5).
+       - Methods getCellMargins() and setCellMargins() were added to fine tune cell margins (see example n. 5).
+       - Method write1DBarcode() was improved to permit custom labels (see example n. 27).
+       - Method ImagePngAlpha() now includes support for ImageMagick to improve performances.
+       - XObject Template support was extended to support Multicell(), writeHTML() and writeHTMLCell() methods.
+       - The signature of getNumLines() and getStringHeight() methods is changed.
+       - Example n. 57 was updated.
+
+// -------------------------------------------------------------------
+
+5.8.034 (2010-09-27)
+       - A bug related to SetFont on XObject templates was fixed.
+
+5.8.033 (2010-09-25)
+       - A problem with Footer() and multiple columns was fixed.
+
+5.8.032 (2010-09-22)
+       - Bug #3073165 "Issues with changes to addHTMLVertSpace()" was fixed.
+
+5.8.031 (2010-09-20)
+       - Bug #3071961 "Spaces in HTML" was fixed.
+
+5.8.030 (2010-09-17)
+       - SVG support was improved and some bugs were fixed.
+
+5.8.029 (2010-09-16)
+       - A problem with HTML borders was fixed.
+
+5.8.028 (2010-09-13)
+       - Bug #3065224 "mcrypt_create_iv error on TCPDF 5.8.027 on PHP 5.3.2" was fixed.
+
+5.8.027 (2010-09-13)
+       - Bug #3065118 "mcrypt_decrypt error on TCPDF 5.8.026 on PHP 5.3.2" was fixed.
+
+5.8.026 (2010-09-13)
+       - A bug on addHTMLTOC() method was fixed. Note: be sure that the #TOC_PAGE_NUMBER# template has enough width to be printed correctly.
+
+5.8.025 (2010-09-09)
+       - Bug #3062692 "Textarea inside a table" was fixed.
+
+5.8.024 (2010-09-08)
+       - Bug #3062005 "Undefined variable: ann_obj_id" was fixed.
+
+5.8.023 (2010-08-31)
+       - Forms bug added on version 5.8.019 was fixed.
+
+5.8.022 (2010-08-31)
+       - Bug #3056632 "SVG rendered vertically flipped" was fixed.
+
+5.8.021 (2010-08-30)
+       - A new CID-0 'chinese' font was added for traditional Chinese.
+       - Bug #3054287 'Inner tags are ignored due to "align" attribute' was fixed.
+
+5.8.020 (2010-08-26)
+       - CSS "catch-all" class selector is now supported.
+
+5.8.019 (2010-08-26)
+       - XObject Templates now includes support for links and annotations.
+       - A problem related to link alignment on cell was fixed.
+       - A problem related to SVG styles was fixed.
+
+5.8.018 (2010-08-25)
+       - Method getNumberOfColumns() was added.
+       - A problem related to table header was fixed.
+       - Method getSVGTransformMatrix() was fixed to apply SVG transformations in the correct order.
+       - SVG support was improved and several bugs were fixed.
+
+5.8.017 (2010-08-25)
+       - This version includes support for XObject Templates (see the new example n. 62).
+       - Methods starttemplate(), endTemplate() and printTemplate() were added (see the new example n. 62).
+
+5.8.016 (2010-08-24)
+       - Alignment problem on write2DBarcode was fixed.
+
+5.8.015 (2010-08-24)
+       - A problem arised with the latest bugfix was fixed.
+
+5.8.014 (2010-08-23)
+       - Method _getxobjectdict() was added for better compatibility with external extensions.
+       - A bug related to radiobuttons was fixed.
+       - Bug #3051509 "new line after punctuation marks" was fixed (partially).
+
+5.8.013 (2010-08-23)
+       - SVG support for 'direction' property was added.
+       - A problem on default width calculation for linear barcodes was fixed.
+       - New option was added to write1DBarcode() method to improve alignments (see example n. 27).
+       - Bug #3050896 "Nested HTML tables: styles are not applied" was fixed.
+       - Method _putresourcedict() was improved to include external XObject templates.
+
+5.8.012 (2010-08-22)
+       - Support for SVG 'text-anchor' property was added.
+
+5.8.011 (2010-08-21)
+       - Method write1DBarcode() was improved to be backward compatible (check the new example n. 27).
+       - Support for CSS width and height properties on images were added.
+
+5.8.010 (2010-08-20)
+       - Documentation of unhtmlentities() was fixed.
+       - The 'fitwidth' option was added and border color problem was fixed on write1DBarcode() method (check the example n. 27).
+
+5.8.009 (2010-08-20)
+       - Internal object numbering was improved.
+       - Some errors in object encryption were fixed.
+
+5.8.008 (2010-08-19)
+       - Method write1DBarcode() was changed, check the example n. 27.
+       - Method Footer() was changed to account for barcode changes.
+       - Automatic calculation of K_PATH_URL constant was fixed on configuration file.
+       - Method setEqualColumns() was fixed for $width=0 case.
+       - Method AddTOC() was fixed for multipage and multicolumn modes.
+       - Better support for SVG "font-family" property.
+       - A problem on default Page Zoom mode was fixed.
+       - Several Annotation bugs were fixed.
+
+5.8.007 (2010-08-18)
+       - A bug affecting HTML tables was fixed.
+       - Bug #3047500 "SVG not rendering paths properly" was fixed.
+
+5.8.006 (2010-08-17)
+       - A bug affecting HTML table nesting was fixed.
+
+5.8.005 (2010-08-17)
+       - A bug affecting the HTML 'select' tag in certain conditions was fixed.
+
+5.8.004 (2010-08-17)
+       - Better support for HTML "font-family" property.
+       - A bug related to HTML multicolumn was fixed.
+
+5.8.003 (2010-08-16)
+       - Better support for HTML "font-family" property.
+
+5.8.002 (2010-08-14)
+       - HTML alignments were improved
+       - IMPORTANT: Default regular expression to find spaces has been changed to exclude the non-breaking-space (160 DEC- A0 HEX). If you are using setSpacesRE() method, please read the new documentation.
+       - Example n. 1 was updated.
+
+5.8.001 (2010-08-12)
+       - Bug #3043650 "subsetchars incorrectly cached" was fixed.
+
+5.8.000 (2010-08-11)
+       - A control to avoid bookmarking page 0 was added.
+       - addTOC() method now includes support for multicolumn mode.
+       - Support for tables in multicolumn mode was improved.
+       - Example n.10 was updated.
+       - All trimming functions were replaced with stringLeftTrim(), stringRightTrim() and stringTrim().
+       - HTML alignments were improved.
+
+------------------------------------------------------------
+
+5.7.003 (2010-08-08)
+       - Bug #3041263 "php source ending is bad" was fixed (all PHP files were updated, including fonts).
+
+5.7.002 (2010-08-06)
+       - Methods copyPage(), movePage() and deletePage() were changed to account for internal markings.
+
+5.7.001 (2010-08-05)
+       - Bug #3040105 "Broken PDF when using TOC (example 45)" was fixed.
+
+5.7.000 (2010-08-03)
+       - CSS borders are now supported for HTML tables and other block tags (see example n. 61);
+       - Cell borders were improved (see example n. 57);
+       - Minor bugs were fixed.
+
+------------------------------------------------------------
+
+5.6.000 (2010-07-31)
+       - A bug with object IDs was fixes.
+       - Performances were improved.
+
+------------------------------------------------------------
+
+5.5.015 (2010-07-29)
+       - Automatic fix for unclosed self-closing tag.
+       - Support for deprecated 's' and 'strike' tags was added.
+       - Empty list items problem was fixed.
+
+5.5.014 (2010-07-15)
+       - Support for external images was improved.
+
+5.5.013 (2010-07-14)
+       - Bug #3029338 "FI and FO output destination filename bug" was fixed (previous fix was wrong).
+
+5.5.012 (2010-07-14)
+       - Bug #3029310 "Font baseline inconsistencies with line-height and font-size" was fixed.
+       - Bug #3029338 "FI and FO output destination filename bug" was fixed.
+
+5.5.011 (2010-07-09)
+       - Support for multiple CSS classes was added.
+       - The method getColumn() was added to return the current column number.
+       - Some regular Expressions were fixed to be more compatible with UTF-8.
+
+5.5.010 (2010-07-06)
+       - Bug item #3025772 "Borders in all image functions are still flawed" was fixed.
+
+5.5.009 (2010-07-05)
+       - A problem related to last page footer was fixed.
+       - Image alignments and fit-on-page features were improved.
+
+5.5.008 (2010-07-02)
+       - A problem on table header alignment in booklet mode was fixed.
+       - Default graphic vars are now applied for setHeader();
+
+5.5.007 (2010-07-02)
+       - Attribute "readonly" was added to input and textarea form fields.
+       - Vertical alignment feature was added on MultiCell() method only for simple text mode (see example n. 5).
+       - Text-Fit feature was added on MultiCell() method only for simple text mode (see example n. 5).
+
+5.5.006 (2010-06-29)
+       - getStringHeight() and getNumLines() methods were fixed.
+
+5.5.005 (2010-06-28)
+       - Bug #3022170 "getFontDescent() does not return correct descent value" was fixed.
+       - Some problems with multicolumn mode were fixed.
+
+5.5.004 (2010-06-27)
+       - Bug #3021803 "SVG Border" was fixed.
+
+5.5.003 (2010-06-26)
+       - On Write() method, blank lines at the beginning of a page or column are now automatically removed.
+
+5.5.002 (2010-06-24)
+       - ToUnicode Identity-H name was replaced with a full CMap (to avoid preflight syntax error).
+       - Bug #3020638 "str_split() not available in php4" was fixed.
+       - Bug #3020665 "file_get_contents() too many parameters for php4" was fixed.
+
+5.5.001 (2010-06-23)
+       - A problem on image streams was fixed.
+
+5.5.000 (2010-06-22)
+       - Several PDF syntax errors (and related bugs) were fixed.
+       - Bug #3019090 "/Length values are wrong if AES encryption is used" was fixed.
+
+------------------------------------------------------------
+
+5.4.003 (2010-06-19)
+       - A problem related to page boxes was fixed.
+       - Bug #3016920 "Font subsetting issues when editing pdf" was partially fixed (Note that flattening transparency layers is currently incompatible with TrueTypeUnicode fonts).
+
+5.4.002 (2010-06-18)
+       - A problem related with setProtection() method was fixed.
+
+5.4.001 (2010-06-18)
+       - A problem related with setProtection() method was fixed.
+
+5.4.000 (2010-06-18)
+       - The method setSignatureAppearance() was added, check the example n. 52.
+       - Several problems related to font subsetting were fixed.
+
+------------------------------------------------------------
+
+5.3.010 (2010-06-15)
+       - Previous release was corrupted.
+
+5.3.009 (2010-06-15)
+       - Bug #3015934 "Bullets don't display correctly" was fixed.
+
+5.3.008 (2010-06-13)
+       - This version fixes some problems of SVG rasterization.
+
+5.3.007 (2010-06-13)
+       - This version improves SVG support.
+
+5.3.006 (2010-06-10)
+       - This version includes a change in uniqid calls for backward compatibility with PHP4.
+
+5.3.005 (2010-06-09)
+       - The method getPageSizeFromFormat() was changed to include all standard page formats (includes 281 page formats + variation).
+
+5.3.004 (2010-06-08)
+       - Bug #3013291 "HTML table cell width" was fixed.
+       - Bug #3013294 "HTML table cell alignment" was fixed.
+       - The columns widths of HTML tables are now inherited from the first row.
+
+5.3.003 (2010-06-08)
+       - Bug #3013102 "HTML table header misaligned after page break" was fixed.
+
+5.3.002 (2010-06-07)
+       - The methods setFontSubsetting() and setFontSubsetting() were added to control the default font subsetting mode (see example n. 1).
+       - Bug #3012596 "Whitespace should not appeared after use Thai top characters" was fixed.
+       - Examples n. 1, 14, and 54 were updated.
+
+5.3.001 (2010-06-06)
+       - Barcode PDF417 was improved to support Macro Code Blocks (see example n. 50).
+
+5.3.000 (2010-06-05)
+       - License was changed to GNU-LGPLv3 (see the updated LICENSE.TXT file).
+       - PDF417 barcode support was added (check the example n. 50).
+       - The method write2DBarcode() was improved (some parameters were added and other changed - check example n. 50).
+
+------------------------------------------------------------
+
+5.2.000 (2010-06-02)
+       - IMPORTANT: Support for font subsetting was added by default to reduce the size of documents using large unicode font files.
+               If you embed the whole font in the PDF, the person on the other end can make changes to it even if he didn't have your font.
+               If you subset the font, file size of the PDF will be smaller but the person who receives your PDF would need to have your same font in order to make changes to your PDF.
+       - The signature of the SetFont() and AddFont() methods were changed to include the font subsetting option (subsetting is applied by default).
+       - Examples 14 and 54 were updated.
+
+------------------------------------------------------------
+
+5.1.002 (2010-05-27)
+       - Bug #3007818 "SetAutoPageBreak fails with MultiCell" was fixed.
+       - A bug related to MultiCell() minimun height was fixed.
+
+5.1.001 (2010-05-26)
+       - The problem of blank page after table was fixed.
+
+5.1.000 (2010-05-25)
+       - This version includes support for CSS (Cascading Style Sheets) (see example n. 61).
+       - The convertHTMLColorToDec() method was improved.
+
+------------------------------------------------------------
+
+5.0.014 (2010-05-21)
+       - A problem on color and style of HTML links was fixed.
+       - A bug relative to gradients was fixed.
+       - The getStringHeight() method was added and getNumLines() method was improved.
+       - All examples were updated.
+
+5.0.013 (2010-05-19)
+       - A bug related to page-breaks and table cells was fixed.
+
+5.0.012 (2010-05-19)
+       - Page orientation bug was fixed.
+       - The access to method setPageFormat() was changed to 'protected' because it is not intended to be directly called.
+
+5.0.011 (2010-05-19)
+       - Page orientation bug was fixed.
+       - Bug #3003966 "Multiple columns and nested lists" was fixed.
+
+5.0.010 (2010-05-17)
+       - The methods setPageFormat(), setPageOrientation() and related methods were extended to include page boxes, page rotations and page transitions.
+       - The method setPageBoxes() was added to set page boundaries (MediaBox, CropBox, BleedBox, TrimBox, ArtBox);
+       - A bug relative to underline, overline and linethrough was fixed.
+
+5.0.009 (2010-05-16)
+       - Bug #3002381 "Multiple columns and nested lists" was fixed.
+
+5.0.008 (2010-05-15)
+       - Bug "Columns WriteHTML and Justification" was fixed.
+
+5.0.007 (2010-05-14)
+       - Bug #3001347 "Bug when using  WriteHTML with setEqualColumns()" was fixed.
+       - Bug #3001505 "problem with sup and sub tags at the beginning of a line" was fixed.
+
+5.0.006 (2010-05-13)
+       - Length of hr tag was fixed.
+       - An error on 2d barcode method was fixed.
+
+5.0.005 (2010-05-12)
+       - WARNING: The logic of permissions on the SetProtection() method has been inverted and extended (see example 16). Now you have to specify the features you want to block.
+       - SetProtection() method was extended to support RSA and AES 128 encryption and public-keys (see example 16).
+       - Bug #2999489 "setEqualColumns() and TOC uses wrong columns" was fixed (see the example 10).
+
+5.0.004 (2010-05-10)
+       - HTML line alignment when using sub and sup tags was fixed.
+
+5.0.003 (2010-05-07)
+       - Horizontal alignment was fixed for images and barcodes. Now the X coordinate is always relative to the left margin. Use GetAbsX() instead of GetX() to get the X relative to left margin.
+       - Header() method was changed to account for new image alignment rules.
+
+5.0.002 (2010-05-06)
+       - Bookmark() and related methods were fixed to accept HTML code.
+       - A problem on HTML links was fixed.
+
+5.0.001 (2010-05-06)
+       - Protected method _putstream was re-added for backward compatibility.
+       - The following method were added to display HTML Table Of Content (see example n. 59):
+               addTOCPage(), endTOCPage(), addHTMLTOC().
+
+5.0.000 (2010-05-05)
+       - Method ImageSVG() was added to embedd SVG images (see example n. 58). Note that not all SVG images are supported.
+       - Method setRasterizeVectorImages() was added to enable/disable rasterization for vector images via ImageMagick library.
+       - Method RoundedRectXY() was added.
+       - Method PieSectorXY() was added.
+       - Gradient() method is now public and support new features.
+       - Shading to transparency is now supported.
+       - Image alignments were fixed.
+       - Support for dynamic images were improved.
+       - PDF_IMAGE_SCALE_RATIO has been changed to 1.25 for better compatibility with SVG.
+       - RAW and RAW2 modes were added to 2D Barcodes (see example n. 50).
+       - Automatic padding feature was added on barcodes (see examples n. 27 and 50).
+       - Bug #2995003 "Reproduced thead bug" was fixed.
+       - The Output() method now accepts FI and FD destinations to save the document on server before sending it to the client.
+       - Ellipse() method was improved and fixed (see page 2 of example n. 12).
+
+------------------------------------------------------------
+
+4.9.018 (2010-04-21)
+       - Bug item #2990356 "Current font size not respected with more than two HTML <p>" was fixed.
+
+4.9.017 (2010-04-21)
+       - Bug item #2990224 "Different behaviour for equivalent HTML strings" was fixed.
+       - Bug item #2990314 "Dash is not appearing with SHY character" was fixed.
+
+4.9.016 (2010-04-20)
+       - An error on htmlcolors.php was fixed.
+       - getImageFileType() method was improved.
+       - GIF images with transparency are now better supported.
+       - Automatic page orientation was improved.
+
+4.9.015 (2010-04-20)
+       - A new method copyPage() was added to clone pages (see example n. 44).
+       - Support for text overline was added.
+       - Underline and linethrough methods were fixed.
+       - Bug #2989058 "SHY character causes unnecessary word-wrapping" was fixed.
+
+4.9.014 (2010-04-18)
+       - Bug item #2988845 was fixed.
+
+4.9.013 (2010-04-15)
+       - Image() and ImageEPS() methods were fixed and improved; $fitonpage parameter was added.
+
+4.9.012 (2010-04-12)
+       - The hyphenateText() method was added to automatically hyphenate text (see example n. 46).
+
+4.9.011 (2010-04-07)
+       - Vertical alignments for Cell() method were improved (see example n. 57).
+
+4.9.010 (2010-04-06)
+       - Signature of Cell() method now includes new parameters for vertical alignment (see example n. 57).
+       - Text() method was extended to include all Cell() parameters.
+       - HTML line alignment procedure was changed to fix some bugs.
+
+4.9.009 (2010-04-05)
+       - Text() method was fixed for backward compatibility.
+
+4.9.008 (2010-04-03)
+       - Additional line space after table header was removed.
+       - Support for HTML lists in multicolumn mode was added.
+       - The method setTextRenderingMode() was added to set text rendering modes (see the example n. 26).
+       - The following HTML attributes were added to set text rendering modes (see the example n. 26): stroke, strokecolor, fill.
+
+4.9.007 (2010-04-03)
+       - Font Descent computation was fixed (patch #2981441).
+
+4.9.006 (2010-04-02)
+       - The constant K_TCPDF_CALLS_IN_HTML was added on configuration file to enable/disable the ability to call TCPDF methods in HTML.
+       - The usage of tcpdf tag in HTML mode was changed to remove the possible security flaw offered by the eval() function (thanks to Matthias Hecker for spotting this security problem). See the new example n. 49 for further information.
+
+4.9.005 (2010-04-01)
+       - Bug# 2980354 "Wrong File attachment description with security" was fixed.
+       - Several problems with HTML line alignment were fixed.
+       - The constant K_THAI_TOPCHAR was added on configuration file to enable/disable the special procedure used to avoid the overlappind of symbols on Thai language.
+       - A problem with font name directory was fixed.
+       - A bug on _destroy() method was fixed.
+
+4.9.004 (2010-03-31)
+       - Patch #979681 "GetCharWidth - default character width" was applied (bugfix).
+
+4.9.003 (2010-03-30)
+       - Problem of first <br /> on multiple columns was fixed.
+       - HTML line alignment was fixed.
+       - A QR-code bug was fixed.
+
+4.9.002 (2010-03-29)
+       - Patch #2978349 "$ignore_min_height is ignored in function Cell()" was applied.
+       - Bug #2978607 "2D Barcodes are wrong" was fixed.
+       - A problem with HTML block tags was fixed.
+       - Artificial italic for CID-0 fonts was added.
+       - Several multicolumn bugs were fixed.
+       - Support for HTML tables on multicolumn was added.
+
+4.9.001 (2010-03-28)
+       - QR Code minor bug was fixed.
+       - Multicolumn mode was added (see the new example n. 10).
+       - The following methods were added: setEqualColumns(), setColumnsArray(), selectColumn().
+       - Thai diacritics support were changed (note that this is incompatible with html justification).
+
+4.9.000 (2010-03-27)
+       - QR Code (2D barcode) support was added (see example n. 50).
+       - The following methods were added to print crop and registration marks (see example n. 56): colorRegistrationBar(), cropMark(), registrationMark().
+       - Limited support for CSS line-height property was added.
+       - Gradient method now supports Gray, RGB and CMYK space color.
+       - Example n. 51 was updated.
+       - Vertical alignment of font inside cell was fixed.
+       - Support for multiple Thai diacritics was added.
+       - Bug item #2974929 "Duplicate case values" was fixed.
+       - Bug item #2976729 "File attachment not working with security" was fixed.
+
+------------------------------------------------------------
+
+4.8.039 (2010-03-20)
+       - Problems related to custom locale settings were fixed.
+       - Problems related to HTML on Header and Footer were fixed.
+
+4.8.038 (2010-03-13)
+       - Various bugs related to page-break in HTML mode were fixed.
+       - Bug item #2968974 "Another <thead> pagebreak problem" was fixed.
+       - Bug item #2969276 "justification problem" was fixed.
+       - Bug item #2969289 "bug when using justified text and custom headers" was fixed.
+       - Images are now automatically resized to be contained on the page.
+       - Some HTML line alignments were fixed.
+       - Signature of AddPage() and SetMargins() methods were changed to include an option to set default page margins.
+
+4.8.037 (2010-03-03)
+       - Bug item #2962068 was fixed.
+       - Bug item #2967017 "Problems with <thead> and pagebreaks" was fixed.
+       - Bug item #2967023 "table header lost with pagebreak" was fixed.
+       - Bug item #2967032 "Header lost with nested tables" was fixed.
+
+4.8.036 (2010-02-24)
+       - Automatic page break for HTML images was improved.
+       - Example 10 was updated.
+       - Japanese was removed from example 8 because the freeserif font doesn't contain japanese (you can display it using arialunicid0 font).
+
+4.8.035 (2010-02-23)
+       - Automatic page break for HTML images was added.
+       - Support for multicolumn HTML was added (example 10 was updated).
+
+4.8.034 (2010-02-17)
+       - Language files were updated.
+
+4.8.033 (2010-02-12)
+       - A bug related to protection mode with links was fixed.
+
+4.8.032 (2010-02-04)
+       - A bug related to $maxh parameter on Write() and MultiCell() was fixed.
+       - Support for body tag was added.
+
+4.8.031 (2010-01-30)
+       - Bug item #2941589 "paragraph justify not working on some non-C locales" was fixed.
+
+4.8.030 (2010-01-27)
+       - Some text alignment cases were fixed.
+
+4.8.029 (2010-01-27)
+       - Bug item #2941057 "TOC Error in PDF File Output" was fixed.
+       - Some text alignment cases were fixed.
+
+4.8.028 (2010-01-26)
+       - Text alignment for RTL mode was fixed.
+
+4.8.027 (2010-01-25)
+       - Bug item #2938412 "Table related problems - thead, nobr, table width" was fixed.
+
+4.8.026 (2010-01-19)
+       - The misspelled word "lenght" was replaced with "length" in some variables and comments.
+
+4.8.025 (2010-01-18)
+       - addExtGState() method was improved to reuse existing ExtGState objects.
+
+4.8.024 (2010-01-15)
+       - Justification mode for HTML was fixed (Bug item #2932470).
+
+4.8.023 (2010-01-15)
+       - Bug item #2932470 "Some HTML entities breaks justification" was fixed.
+
+4.8.022 (2010-01-14)
+       - Source code documentation was fixed.
+
+4.8.021 (2010-01-03)
+       - A Bug relative to Table Of Content index was fixed.
+
+4.8.020 (2009-12-21)
+       - Bug item #2918545 "Display problem of the first row of a table with larger font" was fixed.
+       - A Bug relative to table rowspan mode was fixed.
+
+4.8.019 (2009-12-16)
+       - Bug item #2915684 "Image size" was fixed.
+       - Bug item #2914995 "Image jpeg quality" was fixed.
+       - The signature of the Image() method was changed (check the documentation for the $resize parameter).
+
+4.8.018 (2009-12-15)
+       - Bug item #2914352 "write error" was fixed.
+
+4.8.017 (2009-11-27)
+       - THEAD problem when table is used on header/footer was fixed.
+       - A first line alignment on HTML justification was fixed.
+       - Method getImageFileType() was added.
+       - Images with unknown extension and type are now supported via ImageMagick PHP extension.
+
+4.8.016 (2009-11-21)
+       - Document Information Dictionary was fixed.
+       - CSS attributes 'page-break-before', 'page-break-after' and 'page-break-inside' are now supported.
+       - Problem of unclosed last page was fixed.
+       - Problem of 'thead' unnecessarily repeated on the next page was fixed.
+
+4.8.015 (2009-11-20)
+       - A problem with some PNG transparency images was fixed.
+       - Bug #2900762 "Sort issues in Bookmarks" was fixed.
+       - Text justification was fixed for various modes: underline, strikeout and background.
+
+4.8.014 (2009-11-04)
+       - Bug item #2891316 "writeHTML, underlining replacing spaces" was fixed.
+       - The handling of temporary RTL text direction mode was fixed.
+
+4.8.013 (2009-10-26)
+       - Bug item #2884729 "Problem with word-wrap and hyphen" was fixed.
+
+4.8.012 (2009-10-23)
+       - Table cell alignments for RTL booklet mode were fixed.
+       - Images and barcode alignments for booklet mode were fixed.
+
+4.8.011 (2009-10-22)
+       - DejaVu fonts were updated to latest version.
+
+4.8.010 (2009-10-21)
+       - Bookmark for TOC page was added.
+       - Signature of addTOC() method is changed.
+       - Bookmarks are now automatically sorted by page and Y position.
+       - Example n. 45 was updated.
+       - Example n. 55 was added to display all charactes available on core fonts.
+
+4.8.009 (2009-09-30)
+       - Compatibility with PHP 5.3 was improved.
+       - All examples were updated.
+       - Index file for examples was added.
+
+4.8.008 (2009-09-29)
+       - Example 49 was updated.
+       - Underline and linethrough now works with cell stretching mode.
+
+4.8.007 (2009-09-23)
+       - Infinite loop problem caused by nobr attribute was fixed.
+
+4.8.006 (2009-09-23)
+       - Bug item #2864522 "No images if DOCUMENT_ROOT=='/'" was fixed.
+       - Support for text-indent CSS attribute was added.
+       - Method rollbackTransaction() was changed to support self-reassigment of previous object (check source code documentation).
+       - Support for the HTML "nobr" attribute was added to avoid splitting a table or a table row on two pages (i.e.: <tr nobr="true">...</tr>).
+
+4.8.005 (2009-09-17)
+       - A bug relative to multiple transformations and annotations was fixed.
+
+4.8.004 (2009-09-16)
+       - A bug on _putannotsrefs() method was fixed.
+
+4.8.003 (2009-09-15)
+       - Bug item #2858754 "Division by zero" was fixed.
+       - A bug relative to HTML list items was fixed.
+       - A bug relative to form fields on multiple pages was fixed.
+       - PolyLine() method was added (see example n. 12).
+       - Signature of Polygon() method was changed.
+
+4.8.002 (2009-09-12)
+       - A problem related to CID-0 fonts offset was fixed: if the $cw[1] entry on the CID-0 font file is not defined, then a CID keys offset is introduced.
+
+4.8.001 (2009-09-09)
+       - The appearance streams (AP) for anotations form fields was fixed (see examples n. 14 and 54).
+       - Radiobuttons were fixed.
+
+4.8.000 (2009-09-07)
+       - This version includes some support for Forms fields (see example n. 14) and XHTML forms (see example n. 54).
+       - The following methods were changed to work without JavaScript: TextField(), RadioButton(), ListBox(), ComboBox(), CheckBox(), Button().
+       - Support for Widget annotations was improved.
+       - Alignment of annotation objects was fixed (examples 36 and 41 were updated).
+       - addJavascriptObject() method was added.
+       - Signature of Image() method was changed.
+       - htmlcolors.php file was updated.
+
+------------------------------------------------------------
+
+4.7.003 (2009-09-03)
+       - Support for TCPDF methods on HTML was improved (see example n. 49).
+
+4.7.002 (2009-09-02)
+       - Bug item #2848892 "writeHTML + table: Gaps between rows" was fixed.
+       - JavaScript support was fixed (see example n. 53).
+
+4.7.001 (2009-08-30)
+       - The Polygon() and Arrow() methods were fixed and improved (see example n. 12).
+
+4.7.000 (2009-08-29)
+       - This is a major release.
+       - Some procedures were internally optimized.
+       - The problem of mixed signature and annotations was fixed (example n. 52).
+
+4.6.030 (2009-08-29)
+       - IMPORTANT: percentages on table cell widths are now relative to the full table width (as in standard HTML).
+       - Various minor bugs were fixed.
+       - Example n. 52 (digital signature) was updated.
+
+4.6.029 (2009-08-26)
+       - PHP4 version was fixed.
+
+4.6.028 (2009-08-25)
+       - Signature algorithm was finally fixed (see example n. 52).
+
+4.6.027 (2009-08-24)
+       - TCPDF now supports unembedded TrueTypeUnicode Fonts (just comment the $file entry on the fonts' php file.
+
+4.6.026 (2009-08-21)
+       - Bug #2841693 "Problem with MultiCell and ishtml and justification" was fixed.
+       - Signature functions were improved but not yet fixed (tcpdf.crt and example n. 52 were updated).
+
+4.6.025 (2009-08-17)
+       - Carriage returns (\r) were removed from source code.
+       - Problem related to set_magic_quotes_runtime() depracated was fixed.
+
+4.6.024 (2009-08-07)
+       - Bug item #2833556 "justification using other units than mm" was fixed.
+       - Documentation was fixed/updated.
+
+4.6.023 (2009-08-02)
+       - Bug item #2830537 "MirrorH can show mask for transparent PNGs" was fixed.
+
+4.6.022 (2009-07-24)
+       - A bug relative to single line printing when using WriteHTMLCell() was fixed.
+       - Signature support were improved but is still experimental.
+       - Fonts Free and Dejavu were updated to latest versions.
+
+4.6.021 (2009-07-20)
+       - Bug item #2824015 "XHTML Ampersand &amp; in hyperlink bug" was fixed.
+       - Bug item #2824036 "Image as hyperlink in table, text displaced at page break" was fixed.
+       - Links alignment on justified text was fixed.
+       - Unicode "\u" modifier was added to re_spaces variable by default.
+
+4.6.020 (2009-07-16)
+       - Bug item #2821921 "issue in example 18" was fixed.
+       - Signature of SetRTL() method was changed.
+
+4.6.019 (2009-07-13)
+       - Bug item #2820703 "xref table broken" was fixed.
+
+4.6.018 (2009-07-10)
+       - Bug item #2819319 "Text over text" was fixed.
+       - Method Arrow() was added to print graphic arrows (example 12 was updated).
+
+4.6.017 (2009-07-05)
+       - Bug item #2816079 "Example 48 not working" was fixed.
+       - The signature of the checkPageBreak() was changed. The parameter $addpage was added to turn off the automatic page creation.
+
+4.6.016 (2009-06-16)
+       - Method setSpacesRE() was added to set the regular expression used for detecting withespaces or word separators. If you are using chinese, try: setSpacesRE('/[\s\p{Z}\p{Lo}]/');, otherwise you can use setSpacesRE('/[\s\p{Z}]/');
+       - The method _putinfo() now automatically fills the metadata with '?' in case of empty string.
+
+4.6.015 (2009-06-11)
+       - Bug #2804667 "word wrap bug" was fixed.
+
+4.6.014 (2009-06-04)
+       - Bug #2800931 "Table thead tag bug" was fixed.
+       - A bug related to <pre> tag was fixed.
+
+4.6.013 (2009-05-28)
+       - List bullets position was fixed for RTL languages.
+
+4.6.012 (2009-05-23)
+       - setUserRights() method doesn't work anymore unless you call the setSignature() method with the Adobe private key!
+
+4.6.011 (2009-05-18)
+       - Signature of the Image() method was changed to include the new $fitbox parameter (see source code documentation).
+
+4.6.010 (2009-05-17)
+       - Image() method was improved: now is possible to specify the maximum dimensions for a constraint box defined by $w and $h parameters, and setting the $resize parameter to null.
+       - <tcpdf> tag indent problem was fixed.
+       - $y parameter was added to checkPageBreak() method.
+       - Bug n. 2791773 "writeHTML" was fixed.
+
+4.6.009 (2009-05-13)
+       - xref table for embedded files was fixed.
+
+4.6.008 (2009-05-07)
+       - setSignature() method was improved (but is still experimental).
+       - Example n. 52 was added.
+
+4.6.007 (2009-05-05)
+       - Bug #2786685 "writeHtmlCell and <br /> in custom footer" was fixed.
+       - Table header repeating bug was fixed.
+       - Some newlines and tabs are now automatically removed from HTML strings.
+
+4.6.006 (2009-04-28)
+       - Support for "<a name="...">...</a>" was added.
+       - By default TCPDF requires PCRE Unicode support turned on but now works also without it (with limited ability to detect some Unicode blank spaces).
+
+4.6.005 (2009-04-25)
+       - Points (pt) conversion in getHTMLUnitToUnits() was fixed.
+       - Default tcpdf.pem certificate file was added.
+       - Experimental support for signing document was added but it is not yet completed (some help is needed - I think that the calculation of the ByteRange is OK and the problem is on the signature calculation).
+
+4.6.004 (2009-04-23)
+       - Method deletePage() was added to delete pages (see example n. 44).
+
+4.6.003 (2009-04-21)
+       - The caching mechanism of the UTF8StringToArray() method was fixed.
+
+4.6.002 (2009-04-20)
+       - Documentation of rollbackTransaction() method was fixed.
+       - The setImageScale() and getImageScale() methods now set and get the adjusting parameter used by pixelsToUnits() method.
+       - HTML images now support other units of measure than pixels (getHTMLUnitToUnits() is now used instead of pixelsToUnits()).
+       - WARNING: PDF_IMAGE_SCALE_RATIO has been changed by default to 1.
+
+4.6.001 (2009-04-17)
+       - Spaces between HTML block tags are now automatically removed.
+       - The bug related to cMargin changes between tables was fixed.
+
+4.6.000 (2009-04-16)
+       - WARNING: THIS VERSION CHANGES THE BEHAVIOUR OF $x and $y parameters for several TCPDF methods:
+               zero coordinates for $x and $y are now valid coordinates;
+               set $x and $y as empty strings to get the current value.
+       - Some error caused by 'empty' funtion were fixed.
+       - Default color for convertHTMLColorToDec() method was changed to white and the return value for invalid color is false.
+       - HTML on footer bug was fixed.
+       - The following examples were fixed: 5,7,10,17,19,20,21,33,42,43.
+
+4.5.043 (2009-04-15)
+       - Barcode class (barcode.php) was extended to include new linear barcode types (see example n. 27):
+               C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9
+               C39+ : CODE 39 with checksum
+               C39E : CODE 39 EXTENDED
+               C39E+ : CODE 39 EXTENDED + CHECKSUM
+               C93 : CODE 93 - USS-93
+               S25 : Standard 2 of 5
+               S25+ : Standard 2 of 5 + CHECKSUM
+               I25 : Interleaved 2 of 5
+               I25+ : Interleaved 2 of 5 + CHECKSUM
+               C128A : CODE 128 A
+               C128B : CODE 128 B
+               C128C : CODE 128 C
+               EAN2 : 2-Digits UPC-Based Extention
+               EAN5 : 5-Digits UPC-Based Extention
+               EAN8 : EAN 8
+               EAN13 : EAN 13
+               UPCA : UPC-A
+               UPCE : UPC-E
+               MSI : MSI (Variation of Plessey code)
+               MSI+ : MSI + CHECKSUM (modulo 11)
+               POSTNET : POSTNET
+               PLANET : PLANET
+               RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
+               KIX : KIX (Klant index - Customer index)
+               IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200 (NOTE: requires BCMath PHP extension)
+               CODABAR : CODABAR
+               CODE11 : CODE 11
+               PHARMA : PHARMACODE
+               PHARMA2T : PHARMACODE TWO-TRACKS
+
+4.5.042 (2009-04-15)
+       - Method Write() was fixed for the strings containing only zero value.
+
+4.5.041 (2009-04-14)
+       - Barcode methods were fixed.
+
+4.5.040 (2009-04-14)
+       - Method Write() was fixed to handle empty strings.
+
+4.5.039 (2009-04-11)
+       - Support for linear barcodes was extended (see example n. 27 and barcodes.php documentation).
+
+4.5.038 (2009-04-10)
+       - Write() method was improved to support separators for Japanese, Korean, Chinese Traditional and Chinese Simplified.
+
+4.5.037 (2009-04-09)
+       - General performances were improved.
+       - The signature of the method utf8Bidi() was changed.
+       - The method UniArrSubString() was added.
+       - Experimental support for 2D barcodes were added (see example n. 50 and 2dbarcodes.php class).
+
+4.5.036 (2009-04-03)
+       - TCPDF methods can be called inside the HTML code (see example n. 49).
+       - All tag attributes, such as <p align="center"> must be enclosed within double quotes.
+
+4.5.035 (2009-03-28)
+       - Bug #2717436 "writeHTML rowspan problem (continued)" was fixed.
+       - Bug #2719090 "writeHTML fix follow up" was fixed.
+       - The method _putuserrights() was changed to avoid Adobe Reader 9.1 crash. This broken the 'trick' that was used to display forms in Acrobat Reader.
+
+4.5.034 (2009-03-27)
+       - Bug #2716914 "Bug writeHTML of a table in body and footer related with pb" was fixed.
+       - Bug #2717056 ] "writeHTML problem when setting tr style" was fixed.
+       - The signature of the Cell() method was changed.
+
+4.5.033 (2009-03-27)
+       - The support for rowspan/colspan on HTML tables was improved (see example n. 48).
+
+4.5.032 (2009-03-23)
+       - setPrintFooter(false) bug was fixed.
+
+4.5.031 (2009-03-20)
+       - Table header support was extended to multiple pages.
+
+4.5.030 (2009-03-20)
+       - thead tag is now supported on HTML tables (header rows are repeated after page breaks).
+       - The startTransaction() was improved to autocommit.
+       - List bullets now uses the foreground color (putHtmlListBullet()).
+
+4.5.029 (2009-03-19)
+       - The following methods were added to UNDO commands (see example 47): startTransaction(), commitTransaction(), rollbackTransaction().
+       - All examples were updated.
+
+4.5.028 (2009-03-18)
+       - Bug #2690945 "List Bugs" was fixed.
+       - HTML text alignment on lists was fixed.
+       - The constant PDF_FONT_MONOSPACED was added to the configuration file to define the default monospaced font.
+       - The following methods were fixed: getPageWidth(), getPageHeight(), getBreakMargin().
+       - All examples were updated.
+
+4.5.027 (2009-03-16)
+       - Method getPageDimensions() was added to get page dimensions.
+       - The signature of the following methos were changed: getPageWidth(), getPageHeight(), getBreakMargin().
+       - _parsepng() method was fixed for PNG URL images (fread bug).
+
+4.5.026 (2009-03-11)
+       - Bug #2681793 affecting URL images with spaces was fixed.
+
+4.5.025 (2009-03-10)
+       - A small bug affecting hyphenation support was fixed.
+       - The method SetDefaultMonospacedFont() was added to define the default monospaced font.
+
+4.5.024 (2009-03-07)
+       - The bug #2666493 was fixed "Footer corrupts document".
+
+4.5.023 (2009-03-06)
+       - The bug #2666688 was fixed "Rowspan in tables".
+
+4.5.022 (2009-03-05)
+       - The bug #2659676 was fixed "refer to #2157099 test 4 < BR > problem still not fixed".
+       - addTOC() function bug was fixed.
+
+4.5.020 (2009-03-03)
+       - The following bug was fixed: "function removeSHY corrupts unicode".
+
+4.5.019 (2009-02-28)
+       - The problem of decimal separator using different locale was fixed.
+       - The text hyphenation is now supported (see example n. 46).
+
+4.5.018 (2009-02-26)
+       - The _destroy() method was added to unset all class variables and frees memory.
+       - Now it's possible to call Output() method multiple times.
+
+4.5.017 (2009-02-24)
+       - A minor bug that raises a PHP warning was fixed.
+
+4.5.016 (2009-02-24)
+       - Bug item #2631200 "getNumLines() counts wrong" was fixed.
+       - Multiple attachments bug was fixed.
+       - All class variables are now cleared on Output() for memory otpimization.
+
+4.5.015 (2009-02-18)
+       - Bug item #2612553 "function Write() must not break a line on &nbsp;  character" was fixed.
+
+4.5.014 (2009-02-13)
+       - Bug item #2595015 "POSTNET Barcode Checksum Error" was fixed (on barcode.php).
+       - Pagebreak bug for barcode was fixed.
+
+4.5.013 (2009-02-12)
+       - border attribute is now supported on HTML images (only accepts the same values accepted by Cell()).
+
+4.5.012 (2009-02-12)
+       - An error on image border feature was fixed.
+
+4.5.011 (2009-02-12)
+       - HTML links for images are now supported.
+       - height attribute is now supported on HTML cells.
+       - $border parameter was added to Image() and ImageEps() methods.
+       - The method getNumLines() was added to estimate the number of lines required for the specified text.
+
+4.5.010 (2009-01-29)
+       - Bug n. 2546108 "BarCode Y position" was fixed.
+
+4.5.009 (2009-01-26)
+       - Bug n. 2538094 "Empty pdf file created" was fixed.
+
+4.5.008 (2009-01-26)
+       - setPage() method was fixed to correctly restore graphic states.
+       - Source code was cleaned up for performances.
+
+4.5.007 (2009-01-24)
+       - checkPageBreak() and write1DBarcode() methods were fixed.
+       - Source code was cleaned up for performances.
+       - barcodes.php was updated.
+
+4.5.006 (2009-01-23)
+       - getHTMLUnitToPoints() method was replaced by getHTMLUnitToUnits() to fix HTML units bugs.
+
+4.5.005 (2009-01-23)
+       - Page closing bug was fixed.
+
+4.5.004 (2009-01-21)
+       - The access of convertHTMLColorToDec() method was changed to public
+       - Fixed bug on UL tag.
+
+4.5.003 (2009-01-19)
+       - Fonts on different folders are now supported.
+
+4.5.002 (2009-01-07)
+       - addTOC() function was improved (see example n. 45).
+
+4.5.001 (2009-01-04)
+       - The signature of startPageGroup() function was changed.
+       - Method Footer() was improved to automatically print page or page-group number (see example n. 23).
+       - Protected method formatTOCPageNumber() was added to customize the format of page numbers on the Table Of Content.
+       - The signature of addTOC() was changed to include the font used for page numbers.
+
+4.5.000 (2009-01-03)
+       - A new $diskcache parameter was added to class constructor to enable disk caching and reduce RAM memory usage (see example n. 43).
+       - The method movePageTo() was added to move pages to previous positions (see example n. 44).
+       - The methods getAliasNumPage() and getPageNumGroupAlias() were added to get the alias for page number (needed when using movepageTo()).
+       - The methods addTOC() was added to print a Table Of Content (see example n. 45).
+       - Imagick class constant was removed for better compatibility with PHP4.
+       - All existing examples were updated and new examples were added.
+
+4.4.009 (2008-12-29)
+       - Examples 1 and 35 were fixed.
+
+4.4.008 (2008-12-28)
+       - Bug #2472169 "Unordered bullet size not adjusted for unit type" was fixed.
+
+4.4.007 (2008-12-23)
+       - Bug #2459935 "no unit conversion for header line" was fixed.
+       - Example n. 42 for image alpha channel was added.
+       - All examples were updated.
+
+4.4.006 (2008-12-11)
+       - Method setLIsymbol() was changed to reflect latest changes in HTML list handling.
+
+4.4.005 (2008-12-10)
+       - Bug item #2413870 "ordered list override value" was fixed.
+
+4.4.004 (2008-12-10)
+       - The protected method getHTMLUnitToPoints() was added to accept various HTML units of measure (em, ex, px, in, cm, mm, pt, pc, %).
+       - The method intToRoman() was added to convert integer number to Roman representation.
+       - Support fot HTML lists was improved: the CSS property list-style-type is now supported.
+
+4.4.003 (2008-12-09)
+       - Bug item #2412147 "Warning on line 3367" was fixed.
+       - Method setHtmlLinksStyle() was added to set default HTML link colors and font style.
+       - Method addHtmlLink() was changed to use color and style defined on the inline CSS.
+
+4.4.002 (2008-12-09)
+       - Borders on Multicell() were fixed.
+       - Problem of Multicell() on Header function (Bug item #2407579) was fixed.
+       - Problem on graphics tranformations applied to Multicell() was fixed.
+       - Support for ImageMagick was added.
+       - Width calculation for nested tables was fixed.
+
+4.4.001 (2008-12-08)
+       - Some missing core fonts were added on fonts directory.
+       - CID0 fonts rendering was fixed.
+       - HTML support was improved (<pre> and <tt> tags are now supported).
+       - Bug item #2406022 "Left padding bug in MultiCell with maxh" was fixed.
+
+4.4.000 (2008-12-07)
+       - File attachments are now supported (see example n. 41).
+       - Font functions were optimized to reduce document size.
+       - makefont.php was updated.
+       - Linux binaries were added on /fonts/utils
+       - All fonts were updated.
+       - $autopadding parameter was added to Multicell() to disable automatic padding features.
+       - $maxh parameter was added to Multicell() and Write() to set a maximum height.
+
+4.3.009 (2008-12-05)
+       - Bug item #2392989 (Custom header + setlinewidth + cell border bug) was fixed.
+
+4.3.008 (2008-12-05)
+       - Bug item #2390566 "rect bug" was fixed.
+       - File path was fixed for font embedded files.
+       - SetFont() method signature was changed to include the font filename.
+       - Some font-related methods were improved.
+       - Methods getFontFamily() and getFontStyle() were added.
+
+4.3.007 (2008-12-03)
+       - PNG alpha channel is now supported (GD library is required).
+       - AddFont() function now support custom font file path on $file parameter.
+       - The default width variable ($dw) is now always defined for any font.
+       - The 'Style' attribute on CID-0 fonts was removed because of protection bug.
+
+4.3.006 (2008-12-01)
+       - A regular expression on getHtmlDomArray() to find HTML tags was fixed.
+
+4.3.005 (2008-11-25)
+       - makefont.php was fixed.
+       - Bug item #2339877 was fixed (false loop condition detected on WriteHTML()).
+       - Bug item #2336733 was fixed (lasth value update on Multicell() when border and fill are disabled).
+       - Bug item #2342303 was fixed (automatic page-break on Image() and ImageEPS()).
+
+4.3.004 (2008-11-19)
+       - Function _textstring() was fixed (bug 2309051).
+       - All examples were updated.
+
+4.3.003 (2008-11-18)
+       - CID-0 font bug was fixed.
+       - Some functions were optimized.
+       - Function getGroupPageNoFormatted() was added.
+       - Example n. 23 was updated.
+
+4.3.002 (2008-11-17)
+       - Bug item #2305518 "CID-0 font don't work with encryption" was fixed.
+
+4.3.001 (2008-11-17)
+       - Bug item #2300007 "download mimetype pdf" was fixed.
+       - Double quotes were replaced by single quotes to improve PHP performances.
+       - A bug relative to HTML cell borders was fixed.
+
+4.3.000 (2008-11-14)
+       - The function setOpenCell() was added to set the top/bottom cell sides to be open or closed when the cell cross the page.
+       - A bug relative to list items indentation was fixed.
+       - A bug relative to borders on HTML tables and Multicell was fixed.
+       - A bug relative to rowspanned cells was fixed.
+       - A bug relative to html images across pages was fixed.
+
+4.2.009 (2008-11-13)
+       - Spaces between li tags are now automatically removed.
+
+4.2.008 (2008-11-12)
+       - A bug relative to fill color on next page was fixed.
+
+4.2.007 (2008-11-12)
+       - The function setListIndentWidth() was added to set custom indentation widht for HTML lists.
+
+4.2.006 (2008-11-06)
+       - A bug relative to HTML justification was fixed.
+
+4.2.005 (2008-11-06)
+       - A bug relative to HTML justification was fixed.
+       - The methods formatPageNumber() and PageNoFormatted() were added to format page numbers.
+       - Default Footer() method was changed to use PageNoFormatted() instead of PageNo().
+       - Example 6 was updated.
+
+4.2.004 (2008-11-04)
+       - Bug item n. 2217039 "filename handling improvement" was fixed.
+
+4.2.003 (2008-10-31)
+       - Font style bug was fixed.
+
+4.2.002 (2008-10-31)
+       - Bug item #2210922 (htm element br not work) was fixed.
+       - Write() function was improved to support margin changes.
+
+4.2.001 (2008-10-30)
+       - setHtmlVSpace($tagvs) function was added to set custom vertical spaces for HTML tags.
+       - writeHTML() function now support margin changes during execution.
+       - Signature of addHTMLVertSpace() function is changed.
+
+4.2.000 (2008-10-29)
+       - htmlcolors.php was changed to support class-loaders.
+       - ImageEps() function was improved in performances.
+       - Signature of Link() And Annotation() functions were changed.
+       - (Bug item #2198926) Links and Annotations alignment were fixed (support for geometric tranformations was added).
+       - rowspan mode for HTML table cells was improved and fixed.
+       - Booklet mode for double-sided pages was added; see SetBooklet() function and example n. 40.
+       - lastPage() signature is changed.
+       - Signature of Write() function is changed.
+       - Some HTML justification problems were fixed.
+       - Some functions were fixed to better support RTL mode.
+       - Example n. 10 was changed to support RTL mode.
+       - All examples were updated.
+
+4.1.004 (2008-10-23)
+       - unicode_data.php was changed to support class-loaders.
+       - Bug item #2186040/2 (writeHTML margin problem) was fixed.
+
+4.1.003 (2008-10-22)
+       - Bug item #2185399 was fixed (rowspan and page break).
+       - Bugs item #2186040 was fixed (writeHTML margin problem).
+       - Newline after table was removed.
+
+4.1.002 (2008-10-21)
+       - Bug item #2184525 was fixed (rowspan on HTML cell).
+
+4.1.001 (2008-10-21)
+       - Support for "start" attribute was added to HTML ordered list.
+       - unicode_data.php file was changed to include UTF-8 to ASCII table.
+       - Some functions were modified to better support UTF-8 extensions to core fonts.
+       - Support for images on HTML lists was improved.
+       - Examples n. 1 and 6 were updated.
+
+4.1.000 (2008-10-18)
+       - Page-break bug using HTML content was fixed.
+       - The "false" parameter was reintroduced to class_exists function on PHP5 version to avoid autoload.
+       - addHtmlLink() function was improved to support internal links (i.e.: <a href="#23">link to page 23</a>).
+       - Justification alignment is now supported on HTML (see example n. 39).
+       - example_006.php was updated.
+
+4.0.033 (2008-10-13)
+       - Bug n. 2157099 was fixed.
+       - SetX() and SetY() functions were improved.
+       - SetY() includes a new parameter to avoid the X reset.
+
+4.0.032 (2008-10-10)
+       - Bug n. 2156926 was fixed (bold, italic, underlined, linethrough).
+       - setStyle() method was removed.
+       - Configuration file was changed to use helvetica (non-unicode) font by default.
+       - The use of mixed font types was improved.
+       - All examples were updated.
+
+4.0.031 (2008-10-09)
+       - _putannots() and _putbookmarks() links alignments were fixed.
+
+4.0.030 (2008-10-07)
+       - _putbookmarks() function was fixed.
+       - _putannots() was fixed to include internal links.
+
+4.0.029 (2008-09-27)
+       - Infinite loop bug was fixed [Bug item #130309].
+       - Multicell() problem on Header() was fixed.
+
+4.0.028 (2008-09-26)
+       - setLIsymbol() was added to set the LI symbol used on UL lists.
+       - Missing $padding and $encryption_key variables declarations were added [Bug item #2129058].
+
+4.0.027 (2008-09-19)
+       - Bug #2118588 "Undefined offset in tcpdf.php on line 9581" was fixed.
+       - arailunicid0.php font was updated.
+       - The problem of javascript form fields duplication after saving was fixed.
+
+4.0.026 (2008-09-17)
+       - convertHTMLColorToDec() function was improved to support rgb(RR,GG,BB) notation.
+       - The following inline CSS attributes are now supported: text-decoration, color, background-color and font-size names: xx-small, x-small, small, medium, large, x-large, xx-large
+       - Example n. 6 was updated.
+
+4.0.025 (2008-09-15)
+       - _putcidfont0 function was improved to include CJK fonts (Chinese, Japanese, Korean, CJK, Asian fonts) without embedding.
+       - arialunicid0 font was added (see the new example n. 38).
+       - The following Unicode to CID-0 tables were added on fonts folder: uni2cid_ak12.php, uni2cid_aj16.php, uni2cid_ag15.php, uni2cid_ac15.php.
+
+4.0.024 (2008-09-12)
+       - "stripos" function was replaced with "strpos + strtolower" for backward compatibility with PHP4.
+       - support for Spot Colors were added. Check the new example n. 37 and the following new functions:
+               AddSpotColor()
+               SetDrawSpotColor()
+               SetFillSpotColor()
+               SetTextSpotColor()
+               _putspotcolors()
+       - Bookmark() function was improved to fix wrong levels.
+       - $lasth changes after header/footer calls were fixed.
+
+4.0.023 (2008-09-05)
+       - Some HTML related problems were fixed.
+       - Image alignment on HTML was changed, now it always defaults to the normal mode (see example_006.php).
+
+4.0.022 (2008-08-28)
+       - Line height on HTML was fixed.
+       - Image inside an HTML cell problem was fixed.
+       - A new "zarbold" persian font was added.
+
+4.0.021 (2008-08-24)
+       - HTTP headers were fixed on Output function().
+       - getAliasNbPages() and getPageGroupAlias() functions were changed to support non-unicode fonts on unicode documents.
+       - Function Write() was fixed.
+       - The problem of additional vertical spaces on HTML was fixed.
+       - The problem of frame around HTML links was fixed.
+
+4.0.020 (2008-08-15)
+       - "[2052259] WriteHTML <u> & <b>" bug was fixed.
+
+4.0.019 (2008-08-13)
+       - "Rowspan on first cell" bug was fixed.
+
+4.0.018 (2008-08-08)
+       - Default cellpadding for HTML tables was fixed.
+       - Annotation() function was added to support some PDF annotations (see example_036.php and section 8.4 of PDF reference 1.7).
+       - HTML links are now correclty shifted during line alignments.
+       - function getAliasNbPages() was added and Footer() was updated.
+       - RowSpan mode for HTML tables was fixed.
+       - Bugs item #2043610 "Multiple sizes vertical align wrong" was fixed.
+       - ImageEPS() function was improved and RTL alignment was fixed (see example_032.php).
+
+4.0.017 (2008-08-05)
+       - Missing CNZ and CEO style modes were added to Rect() function.
+       - Fonts utils were updated to include support for OpenType fonts.
+       - getLastH() function was added.
+
+4.0.016 (2008-07-30)
+       - setPageMark() function was added. This function must be called after calling Image() function for a background image.
+
+4.0.015 (2008-07-29)
+       - Some functions were changed to support different page formats (see example_028.php).
+       - The signature of setPage() function is changed.
+
+4.0.014 (2008-07-29)
+       - K_PATH_MAIN calculation on tcpdf_config.php was fixed.
+       - HTML support for EPS/AI images was added (see example_006.php).
+       - Bugs item #2030807 "Truncated text on multipage html fields" was fixed.
+       - PDF header bug was fixed.
+       - helvetica was added as default font family.
+       - Stroke mode was fixed on Text function.
+       - several minor bugs were fixed.
+
+4.0.013 (2008-07-27)
+       - Bugs item #2027799 " Big spaces between lines after page break" was fixed.
+       - K_PATH_MAIN calculation on tcpdf_config.php was changed.
+       - Function setVisibility() was fixed to avoid the "Incorrect PDEObject type" error message.
+
+4.0.012 (2008-07-24)
+       - Addpage(), Header() and Footer() functions were changed to simplify the implementation of external header/footer functions.
+       - The following functions were added:
+                       setHeader()
+                       setFooter()
+                       getImageRBX()
+                       getImageRBY()
+                       getCellHeightRatio()
+                       getHeaderFont()
+                       getFooterFont()
+                       getRTL()
+                       getBarcode()
+                       getHeaderData()
+                       getHeaderMargin()
+                       getFooterMargin()
+
+4.0.011 (2008-07-23)
+       - Font support was improved.
+       - The folder /fonts/utils contains new utilities and instructions for embedd font files.
+       - Documentation was updated.
+
+4.0.010 (2008-07-22)
+       - HTML tables were fixed to work across pages.
+       - Header() and Footer() functions were updated to preserve previous settings.
+       - example_035.php was added.
+
+4.0.009 (2008-07-21)
+       - UTF8StringToArray() function was fixed for non-unicode mode.
+
+4.0.008 (2008-07-21)
+       - Barcodes alignment was fixed (see example_027.php).
+       - unicode_data.php was updated.
+       - Arabic shaping for "Zero-Width Non-Joiner" character (U+200C) was fixed.
+
+4.0.007 (2008-07-18)
+       - str_split was replaced by preg_split for compatibility with PHP4 version.
+       - Clipping mode was added to all graphic functions by using parameter $style = "CNZ" or "CEO" (see example_034.php).
+
+4.0.006 (2008-07-16)
+       - HTML rowspan bug was fixed.
+       - Line style for MultiCell() was fixed.
+       - WriteHTML() function was improved.
+       - CODE128C barcode was fixed (barcodes.php).
+
+4.0.005 (2008-07-11)
+       - Bug [2015715] "PHP Error/Warning" was fixed.
+
+4.0.004 (2008-07-09)
+       - HTML cell internal padding was fixed.
+
+4.0.003 (2008-07-08)
+       - Removed URL encoding when F option is selected on Output() function.
+       - fixed some minor bugs in html tables.
+
+4.0.002 (2008-07-07)
+       - Bug [2000861] was still unfixed and has been fixed.
+
+4.0.001 (2008-07-05)
+       - Bug [2000861] was fixed.
+
+4.0.000 (2008-07-03)
+       - THIS IS A MAIN RELEASE THAT INCLUDES SEVERAL NEW FEATURES AND BUGFIXES
+       - Signature fo SetTextColor() and SetFillColor() functions was changed (parameter $storeprev was removed).
+       - HTML support was completely rewritten and improved (see example 6).
+       - Alignments parameters were fixed.
+       - Functions GetArrStringWidth() and GetStringWidth() now include font parameters.
+       - Fonts support was improved.
+       - All core fonts were replaced and moved to fonts/ directory.
+       - The following functions were added: getMargins(), getFontSize(), getFontSizePt().
+       - File config/tcpdf_config_old.php was renamed tcpdf_config_alt.php and updated.
+       - Multicell and WriteHTMLCell fill function was fixed.
+       - Several minor bugs were fixed.
+       - barcodes.php was updated.
+       - All examples were updated.
+
+------------------------------------------------------------
+
+3.1.001 (2008-06-13)
+       - Bug [1992515] "K_PATH_FONTS default value wrong" was fixed.
+       - Vera font was removed, DejaVu font and Free fonts were updated.
+       - Image handling was improved.
+       - All examples were updated.
+
+3.1.000 (2008-06-11)
+       - setPDFVersion() was added to change the default PDF version (currently 1.7).
+       - setViewerPreferences() was added to control the way the document is to be presented on the screen or printed (see example 29).
+       - SetDisplayMode() signature was changed (new options were added).
+       - LinearGradient(), RadialGradient(), CoonsPatchMesh() functions were added to print various color gradients (see example 30).
+       - PieSector() function was added to render render pie charts (see example 31).
+       - ImageEps() was added to display EPS and AI images with limited support (see example 32).
+       - writeBarcode() function is now depracated, a new write1DBarcode() function was added. The barcode directory was removed and a new barcodes.php file was added.
+       - The new write1DBarcode() function support more barcodes and do not need the GD library (see example 027). All barcodes are directly written to PDF using graphic functions.
+       - HTML lists were improved and could be nested (you may now represent trees).
+       - AddFont() bug was fixed.
+       - _putfonts() bug was fixed.
+       - graphics functions were fixed.
+       - unicode_data.php file was updated (fixed).
+       - almohanad font was updated.
+       - example 18 was updated (Farsi and Arabic languages).
+       - source code cleanup.
+       - All examples were updated and new examples were added.
+
+3.0.015 (2008-06-06)
+       - AddPage() function signature is changed to include page format.
+       - example 28 was added to show page format changes.
+       - setPageUnit() function was added to change the page units of measure.
+       - setPageFormat() function was added to change the page format and orientation between pages.
+       - setPageOrientation() function was added to change the page orientation.
+       - Arabic font shaping was fixed for laa letter and square boxes (see the example 18).
+
+3.0.014 (2008-06-04)
+       - Arabic font shaping was fixed.
+       - setDefaultTableColumns() function was added.
+       - $cell_height_ratio variable was added.
+       - setCellHeightRatio() function was added to define the default height of cell repect font height.
+
+3.0.013 (2008-06-03)
+       - Multicell height parameter was fixed.
+       - Arabic font shaping was improved.
+       - unicode_data.php was updated.
+
+3.0.012 (2008-05-30)
+       - K_PATH_MAIN and K_PATH_URL constants are now automatically set on config file.
+       - DOCUMENT_ROOT constant was fixed for IIS Webserver (config file was updated).
+       - Arabic font shaping was improved.
+       - TranslateY() function was fixed (bug [1977962]).
+       - setVisibility() function was fixed.
+       - writeBarcode() function was fixed to scale using $xref parameter.
+       - All examples were updated.
+
+3.0.011 (2008-05-23)
+       - CMYK color support was added to all graphic functions.
+       - HTML table support was improved:
+         -- now it's possible to include additional html tags inside a cell;
+         -- colspan attribute was added.
+       - example 006 was updated.
+
+3.0.010 (2008-05-21)
+       - fixed $laa_array inclusion on utf8Bidi() function.
+
+3.0.009 (2008-05-20)
+       - unicode_data.php was updated.
+       - Arabic laa letter problem was fixed.
+
+3.0.008 (2008-05-12)
+       - Arabic support was fixed and improved (unicode_data.php was updated).
+       - Polycurve() function was added to draw a poly-Bezier curve.
+       - list items alignment was fixed.
+       - example 6 was updated.
+
+3.0.007 (2008-05-06)
+       - Arabic support was fixed and improved.
+       - AlMohanad (arabic) font was added.
+       - C128 barcode bugs were fixed.
+
+3.0.006 (2008-04-21)
+       - Condition to check negative width values was added.
+
+3.0.005 (2008-04-18)
+       - back-Slash character escape was fixed on writeHTML() function.
+       - Exampe 6 was updated.
+
+3.0.004 (2008-04-11)
+       - Bug [1939304] (Right to Left Issue) was fixed.
+
+3.0.003 (2008-04-07)
+       - Bug [1934523](Words between HTML tags in cell not kept on one line) was fixed.
+       - "face" attribute of "font" tag is now fully supported.
+
+3.0.002 (2008-04-01)
+       - Write() functions now return the number of cells and not the number of lines.
+       - TCPDF is released under LGPL 2.1, or any later version.
+
+3.0.001 (2008-05-28)
+       - _legacyparsejpeg() and _legacyparsepng() were renamed _parsejpeg() and _parsepng().
+       - function writeBarcode() was fixed.
+       - all examples were updated.
+       - example 27 was added to show various barcodes.
+
+3.0.000 (2008-03-27)
+       - private function pixelsToMillimeters() was changed to public function pixelsToUnits() to fix html image size bug.
+       - Image-related functions were rewritten.
+       - resize parameter was added to Image() signature to reduce the image size and fit width and height (see example 9).
+       - TCPDF now supports all images supported by GD library: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM.
+       - CMYK support was added to SetDrawColor(), SetFillColor(), SetTextColor() (see example 22).
+       - Page Groups were added (see example 23).
+       - setVisibility() function was added to restrict the rendering of some elements to screen or printout (see example 24).
+       - All private variables and functions were changed to protected.
+       - setAlpha() function was added to give transparency support for all objects (see example 25).
+       - Clipping and stroke modes were added to Text() function (see example 26).
+       - All examples were moved to "examples" directory.
+       - function setJPEGQuality() was added to set the JPEG image comrpession (see example 9).
+
+2.9.000 (2008-03-26)
+       - htmlcolors.php file was added to include html colors.
+       - Support for HTML color names and three-digit hexadecimal color codes was added.
+       - private function convertColorHexToDec() was renamed convertHTMLColorToDec().
+       - color and bgcolor attributes are now supported on all HTML tags (color nesting is also supported).
+       - Write() function were fixed.
+       - example_006.php was updated.
+       - private function setUserRights() was added to release user rights on Acrobat Reader (this allows to display forms, see example 14)
+
+2.8.000 (2008-03-20)
+       - Private variables were changed to protected.
+       - Function Write() was fixed and improved.
+       - Support for dl, dt, dd, del HTML tags was introduced.
+       - Line-trought mode was added for HTML and text.
+       - Text vertical alignment on cells were fixed.
+       - Examples were updated to reflect changes.
+
+2.7.002 (2008-03-13)
+       - Bug "[1912142] Encrypted PDF created/modified date" was fixed.
+
+2.7.001 (2008-03-10)
+       - Cell justification was fixed for non-unicode mode.
+
+2.7.000 (2008-03-09)
+       - Cell() stretching mode 4 (forced character spacing) was fixed.
+       - writeHTMLCell() now uses Multicell() to write.
+       - Multicell() has a new parameter $ishtml to act as writeHTMLCell().
+       - Write() speed was improved for non-arabic strings.
+       - Example n. 20 was changed.
+
+2.6.000 (2008-03-07)
+       - various alignments bugs were fixed.
+
+2.5.000 (2008-03-07)
+       - Several bugs were fixed.
+       - example_019.php was added to test non-unicode mode using old fonts.
+
+2.4.000 (2008-03-06)
+       - RTL support was deeply improved.
+       - GetStringWidth() was fixed to support RTL languages.
+       - Text() RTL alignment was fixed.
+       - Some functions were added: GetArrStringWidth(), GetCharWidth(), uniord(), utf8Bidi().
+       - example_018.php was added and test_unicode.php was removed.
+
+2.3.000 (2008-03-05)
+       - MultiCell() signature is changed. Now support multiple columns across pages (see example_017).
+       - Write() signature is changed. Now support the cell mode to be used with MultiCell.
+       - Header() and Footer() were changed.
+       - The following functions were added: UTF8ArrSubString() and unichr().
+       - Examples were updated to reflect last changes.
+
+2.2.004 (2008-03-04)
+       - Several examples were added.
+       - AddPage() Header() and Footer() were fixed.
+       - Documentation is now available on http://www.tcpdf.org
+
+2.2.003 (2008-03-03)
+       - [1894853] Performance of MultiCell() was improved.
+       - RadioButton and ListBox functions were added.
+       - javascript form functions were rewritten and properties names are changed. The properties function supported by form fields are listed on Possible values are listed on http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf.
+
+2.2.002 (2008-02-28)
+       - [1900495] html images path was fixed.
+       - Legacy image functions were reintroduced to allow PNG and JPEG support without GD library.
+
+2.2.001 (2008-02-16)
+       - The bug "[1894700] bug with replace relative path" was fixed
+       - Justification was fixed
+
+2.2.000 (2008-02-12)
+       - fixed javascript bug introduced with latest release
+
+2.1.002 (2008-02-12)
+       - Justify function was fixed on PHP4 version.
+       - Bookmank function was added ([1578250] Table of contents).
+       - Javascript and Form fields support was added ([1796359] Form fields).
+
+2.1.001 (2008-02-10)
+       - The bug "[1885776] Race Condition in function justitfy" was fixed.
+       - The bug "[1890217] xpdf complains that pdf is incorrect" was fixed.
+
+2.1.000 (2008-01-07)
+       - FPDF_FONTPATH constant was changed to K_PATH_FONTS on config file
+       - Bidirectional Algorithm to correctly reverse bidirectional languages was added.
+       - SetLeftMargin, SetTopMargin, SetRightMargin functions were fixed.
+       - SetCellPadding function was added.
+       - writeHTML was updated with new parameters.
+       - Text function was fixed.
+       - MultiCell function was fixed, now works also across multiple pages.
+       - Line width was fixed on Header and Footer functions and <hr> tag.
+       - "GetImageSize" was renamed "getimagesize".
+       - Document version was changed from 1.3 to 1.5.
+       - _begindoc() function was fixed.
+       - ChangeDate was fixed and ModDate was added.
+       - The following functions were added:
+         setPage() : Move pointer to the specified document page.
+         getPage() : Get current document page number.
+         lastpage() : Reset pointer to the last document page.
+         getNumPages() : Get the total number of inserted pages.
+         GetNumChars() : count the number of (UTF-8) characters in a string.
+       - $stretch parameter was added to Cell() function to fit text on cell:
+                       0 = disabled
+                       1 = horizontal scaling only if necessary
+                       2 = forced horizontal scaling
+                       3 = character spacing only if necessary
+                       4 = forced character spacing
+       - Line function was fixed for RTL.
+       - Graphic transformation functions were added [1811158]:
+                       StartTransform()
+                       StopTransform()
+                       ScaleX()
+                       ScaleY()
+                       ScaleXY()
+                       Scale()
+                       MirrorH()
+                       MirrorV()
+                       MirrorP()
+                       MirrorL()
+                       TranslateX()
+                       TranslateY()
+                       Translate()
+                       Rotate()
+                       SkewX()
+                       SkewY()
+                       Skew()
+       - Graphic function were added/updated [1688549]:
+                       SetLineStyle()
+                       _outPoint()
+                       _outLine()
+                       _outRect()
+                       _outCurve()
+                       Line()
+                       Rect()
+                       Curve
+                       Ellipse
+                       Circle
+                       Polygon
+                       RegularPolygon
+
+2.0.000 (2008-01-04)
+       - RTL (Right-To-Left) languages support was added. Language direction is set using the $l['a_meta_dir'] setting on /configure/language/xxx.php language files.
+       - setRTL($enable) method was added to manually enable/disable the RTL text direction.
+       - The attribute "dir" was added to support custom text direction on HTML tags. Possible values are: ltr - for Left-To-Right and RTL for Right-To-Left.
+       - RC4 40bit encryption was added. Check the SetProtection method.
+       - [1815213] Improved image support for GIF, JPEG, PNG formats.
+       - [1800094] Attribute "value" was added to ordered list items <li>.
+       - Image function now has a new "align" parameter that indicates the alignment of the pointer next to image insertion and relative to image height. The value can be:
+                       T: top-right for LTR or top-left for RTL
+                       M: middle-right for LTR or middle-left for RTL
+                       B: bottom-right for LTR or bottom-left for RTL
+                       N: next line
+       - Attribute "align" was added to <img> html tag to set the above image "align" parameter. Possible values are:
+                       top: top-right for LTR or top-left for RTL
+                       middle: middle-right for LTR or middle-left for RTL
+                       bottom: bottom-right for LTR or bottom-left for RTL
+       - [1798103] newline was added after </ul>, </ol> and </p> tages.
+       - [1816393] Documentation was updated.
+       - 'ln' parameter was fixed on writeHTMLCell. Now it's possible to print two or more columns across several pages;
+       - The method lastPage() was added to move the pointer on the last page;
+
+------------------------------------------------------------
+
+1.53.0.TC034 (2007-07-30)
+       - fixed htmlentities conversion.
+       - MultiCell() function returns the number of cells.
+
+1.53.0.TC033 (2007-07-30)
+       - fixed bug 1762550: case sensitive for font files
+       - NOTE: all fonts files names must be in lowercase!
+
+1.53.0.TC032 (2007-07-27)
+       - setLastH method was added to resolve bug 1689071.
+       - all fonts names were converted in lowercase (bug 1713005).
+       - bug 1740954 was fixed.
+       - justification was added as Cell option.
+
+1.53.0.TC031 (2007-03-20)
+       - ToUnicode CMap were added on _puttruetypeunicode function. Now you may search and copy unicode text.
+
+1.53.0.TC030 (2007-03-06)
+       - fixed bug on PHP4 version.
+
+1.53.0.TC029 (2007-03-06)
+       - DejaVu Fonts were added.
+
+1.53.0.TC028 (2007-03-03)
+       - MultiCell function signature were changed: the $ln parameter were added. Check documentation for further information.
+       - Greek language were added on example sentences.
+       - setPrintHeader() and setPrintFooter() functions were added to enable or disable page header and footer.
+
+1.53.0.TC027 (2006-12-14)
+       - $attr['face'] bug were fixed.
+       - K_TCPDF_EXTERNAL_CONFIG control where introduced on /config/tcpdf_config.php to use external configuration files.
+
+1.53.0.TC026 (2006-10-28)
+       - writeHTML function call were fixed on examples.
+
+1.53.0.TC025 (2006-10-27)
+       - Bugs item #1421290 were fixed (0D - 0A substitution in some characters)
+       - Bugs item #1573174 were fixed (MultiCell documentation)
+
+1.53.0.TC024 (2006-09-26)
+       - getPageHeight() function were fixed (bug 1543476).
+       - fixed missing breaks on closedHTMLTagHandler function (bug 1535263).
+       - fixed extra spaces on Write function (bug 1535262).
+
+1.53.0.TC023 (2006-08-04)
+       - paths to barcode directory were fixed.
+       - documentation were updated.
+
+1.53.0.TC022 (2006-07-16)
+       - fixed bug: [ 1516858 ] Probs with PHP autoloader and class_exists()
+
+1.53.0.TC021 (2006-07-01)
+       - HTML attributes with whitespaces are now supported (thanks to Nelson Benitez for his support)
+
+1.53.0.TC020 (2006-06-23)
+       - code cleanup
+
+1.53.0.TC019 (2006-05-21)
+       - fixed <strong> and <em> closing tags
+
+1.53.0.TC018 (2006-05-18)
+       - fixed font names bug
+
+1.53.0.TC017 (2006-05-18)
+       - the TTF2UFM utility to convert True Type fonts for TCPDF were included on fonts folder.
+       - new free unicode fonts were included on /fonts/freefont.
+       - test_unicode.php example were exended.
+       - parameter $fill were added on Write, writeHTML and writeHTMLCell functions.
+       - documentation were updated.
+
+1.53.0.TC016 (2006-03-09)
+       - fixed closing <strong> tag on html parser.
+
+1.53.0.TC016 (2005-08-28)
+       - fpdf.php and tcpdf.php files were joined in one single class (you can still extend TCPDF with your own class).
+       - fixed problem when mb_internal_encoding is set.
+
+1.53.0.TC014 (2005-05-29)
+       - fixed WriteHTMLCell new page issue.
+
+1.53.0.TC013 (2005-05-29)
+       - fixed WriteHTMLCell across pages.
+
+1.53.0.TC012 (2005-05-29)
+       - font color attribute bug were fixed.
+
+1.53.0.TC011 (2005-03-31)
+       - SetFont function were fixed (thank Sjaak Lauwers for bug notice).
+
+1.53.0.TC010 (2005-03-22)
+       - the html functions were improved (thanks to Manfred Vervuert for bug reporting).
+
+1.53.0.TC009 (2005-03-19)
+       - a wrong reference to convertColorHexToDec were fixed.
+
+1.53.0.TC008 (2005-02-07)
+       - removed some extra bytes from PHP files.
+
+1.53.0.TC007 (2005-01-08)
+       - fill attribute were removed from writeHTMLCell method.
+
+1.53.0.TC006 (2005-01-08)
+       - the documentation were updated.
+
+1.53.0.TC005 (2005-01-05)
+       - Steven Wittens's unicode methods were removed.
+       - All unicode methods were rewritten from scratch.
+       - TCPDF is now licensed as LGPL.
+
+1.53.0.TC004 (2005-01-04)
+       - this changelog were added.
+       - removed commercial fonts for licensing issue.
+       - Bitstream Vera Fonts were added (http://www.bitstream.com/font_rendering/products/dev_fonts/vera.html).
+       - Now the AddFont and SetFont functions returns the basic font if the styled version do not exist.
+
+EOF --------------------------------------------------------
diff --git a/inc/3rdparty/libraries/tcpdf/LICENSE.TXT b/inc/3rdparty/libraries/tcpdf/LICENSE.TXT
new file mode 100644 (file)
index 0000000..daf21f7
--- /dev/null
@@ -0,0 +1,858 @@
+**********************************************************************
+* TCPDF LICENSE
+**********************************************************************
+
+  TCPDF is free software: you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as
+  published by the Free Software Foundation, either version 3 of the
+  License, or (at your option) any later version.
+
+**********************************************************************
+**********************************************************************
+
+                   GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this license
+   document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this license
+   document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of this
+       License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+**********************************************************************
+**********************************************************************
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+**********************************************************************
+**********************************************************************
diff --git a/inc/3rdparty/libraries/tcpdf/README.TXT b/inc/3rdparty/libraries/tcpdf/README.TXT
new file mode 100644 (file)
index 0000000..6d279ee
--- /dev/null
@@ -0,0 +1,115 @@
+TCPDF - README
+============================================================
+
+I WISH TO IMPROVE AND EXPAND TCPDF BUT I NEED YOUR SUPPORT.
+PLEASE MAKE A DONATION:
+http://sourceforge.net/donate/index.php?group_id=128076
+
+------------------------------------------------------------
+
+Name: TCPDF
+Version: 6.0.093
+Release date: 2014-09-02
+Author:        Nicola Asuni
+
+Copyright (c) 2002-2014:
+       Nicola Asuni
+       Tecnick.com LTD
+       www.tecnick.com
+
+URLs:
+       http://www.tcpdf.org
+       http://www.sourceforge.net/projects/tcpdf
+
+Description:
+       TCPDF is a PHP class for generating PDF files on-the-fly without requiring external extensions.
+       This library includes also a class to extract data from existing PDF documents and
+       classes to generate 1D and 2D barcodes in various formats.
+
+Main Features:
+    * no external libraries are required for the basic functions;
+    * all standard page formats, custom page formats, custom margins and units of measure;
+    * UTF-8 Unicode and Right-To-Left languages;
+    * TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 and CID-0 fonts;
+    * font subsetting;
+    * methods to publish some XHTML + CSS code, Javascript and Forms;
+    * images, graphic (geometric figures) and transformation methods;
+    * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http:  www.imagemagick.org/www/formats.html)
+    * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
+    * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
+    * automatic page header and footer management;
+    * document encryption up to 256 bit and digital signature certifications;
+    * transactions to UNDO commands;
+    * PDF annotations, including links, text and file attachments;
+    * text rendering modes (fill, stroke and clipping);
+    * multiple columns mode;
+    * no-write page regions;
+    * bookmarks, named destinations and table of content;
+    * text hyphenation;
+    * text stretching and spacing (tracking);
+    * automatic page break, line break and text alignments including justification;
+    * automatic page numbering and page groups;
+    * move and delete pages;
+    * page compression (requires php-zlib extension);
+    * XOBject Templates;
+       * Layers and object visibility.
+       * PDF/A-1b support.
+
+Installation (full instructions on http:  www.tcpdf.org):
+       1. copy the folder on your Web server
+       2. set your installation path and other parameters on the config/tcpdf_config.php
+       3. call the examples/example_001.php page with your browser to see an example
+
+Source Code Documentation:
+       http://www.tcpdf.org
+
+Additional Documentation:
+       http://www.tcpdf.org
+
+License:
+       Copyright (C) 2002-2014  Nicola Asuni - Tecnick.com LTD
+
+       TCPDF is free software: you can redistribute it and/or modify it
+       under the terms of the GNU Lesser General Public License as
+       published by the Free Software Foundation, either version 3 of the
+       License, or (at your option) any later version.
+
+       TCPDF is distributed in the hope that it will be useful, but
+       WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+       See the GNU Lesser General Public License for more details.
+
+       You should have received a copy of the License
+       along with TCPDF. If not, see
+       <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+
+       See LICENSE.TXT file for more information.
+
+Third party fonts:
+
+       This library may include third party font files released with different licenses.
+       
+       All the PHP files on the fonts directory are subject to the general TCPDF license (GNU-LGPLv3),
+       they do not contain any binary data but just a description of the general properties of a particular font.
+       These files can be also generated on the fly using the font utilities and TCPDF methods.
+       
+       All the original binary TTF font files have been renamed for compatibility with TCPDF and compressed using the gzcompress PHP function that uses the ZLIB data format (.z files).
+       
+       The binary files (.z) that begins with the prefix "free" have been extracted from the GNU FreeFont collection (GNU-GPLv3).
+       The binary files (.z) that begins with the prefix "pdfa" have been derived from the GNU FreeFont, so they are subject to the same license.
+       For the details of Copyright, License and other information, please check the files inside the directory fonts/freefont-20120503
+       Link : http://www.gnu.org/software/freefont/
+       
+       The binary files (.z) that begins with the prefix "dejavu" have been extracted from the DejaVu fonts 2.33 (Bitstream) collection.
+       For the details of Copyright, License and other information, please check the files inside the directory fonts/dejavu-fonts-ttf-2.33
+       Link : http://dejavu-fonts.org
+       
+       The binary files (.z) that begins with the prefix "ae" have been extracted from the Arabeyes.org collection (GNU-GPLv2).
+       Link : http://projects.arabeyes.org/
+
+ICC profile:
+    TCPDF includes the sRGB.icc profile from the icc-profiles-free Debian package:
+    https://packages.debian.org/source/stable/icc-profiles-free
+
+
+============================================================
diff --git a/inc/3rdparty/libraries/tcpdf/composer.json b/inc/3rdparty/libraries/tcpdf/composer.json
new file mode 100644 (file)
index 0000000..4310754
--- /dev/null
@@ -0,0 +1,40 @@
+{
+       "name": "tecnick.com/tcpdf",
+       "version": "6.0.093",
+       "homepage": "http://www.tcpdf.org/",
+       "type": "library",
+       "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
+       "keywords": ["PDF","tcpdf","PDFD32000-2008","qrcode","datamatrix","pdf417","barcodes"],
+       "license": "LGPLv3",
+       "authors": [
+       {
+               "name": "Nicola Asuni",
+               "email": "info@tecnick.com",
+               "homepage": "http://nicolaasuni.tecnick.com"
+       }
+       ],
+       "require": {
+               "php": ">=5.3.0"
+       },
+       "autoload": {
+               "classmap": [
+               "fonts",
+               "config",
+               "include",
+               "tcpdf.php",
+               "tcpdf_parser.php",
+               "tcpdf_import.php",
+               "tcpdf_barcodes_1d.php",
+               "tcpdf_barcodes_2d.php",
+               "include/tcpdf_colors.php",
+               "include/tcpdf_filters.php",
+               "include/tcpdf_font_data.php",
+               "include/tcpdf_fonts.php",
+               "include/tcpdf_images.php",
+               "include/tcpdf_static.php",
+               "include/barcodes/datamatrix.php",
+               "include/barcodes/pdf417.php",
+               "include/barcodes/qrcode.php"
+               ]
+       }
+}
diff --git a/inc/3rdparty/libraries/tcpdf/config/tcpdf_config.php b/inc/3rdparty/libraries/tcpdf/config/tcpdf_config.php
new file mode 100644 (file)
index 0000000..864a9d2
--- /dev/null
@@ -0,0 +1,227 @@
+<?php
+//============================================================+
+// File name   : tcpdf_config.php
+// Begin       : 2004-06-11
+// Last Update : 2014-09-02
+//
+// Description : Configuration file for TCPDF.
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2004-2014  Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+//============================================================+
+
+/**
+ * Configuration file for TCPDF.
+ * @author Nicola Asuni
+ * @package com.tecnick.tcpdf
+ * @version 4.9.005
+ * @since 2004-10-27
+ */
+
+// IMPORTANT:
+// If you define the constant K_TCPDF_EXTERNAL_CONFIG, all the following settings will be ignored.
+// If you use the tcpdf_autoconfig.php, then you can overwrite some values here.
+
+
+/**
+ * Installation path (/var/www/tcpdf/).
+ * By default it is automatically calculated but you can also set it as a fixed string to improve performances.
+ */
+//define ('K_PATH_MAIN', '');
+
+/**
+ * URL path to tcpdf installation folder (http://localhost/tcpdf/).
+ * By default it is automatically set but you can also set it as a fixed string to improve performances.
+ */
+//define ('K_PATH_URL', '');
+
+/**
+ * Path for PDF fonts.
+ * By default it is automatically set but you can also set it as a fixed string to improve performances.
+ */
+//define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
+
+/**
+ * Default images directory.
+ * By default it is automatically set but you can also set it as a fixed string to improve performances.
+ */
+//define ('K_PATH_IMAGES', '');
+
+/**
+ * Deafult image logo used be the default Header() method.
+ * Please set here your own logo or an empty string to disable it.
+ */
+//define ('PDF_HEADER_LOGO', '');
+
+/**
+ * Header logo image width in user units.
+ */
+//define ('PDF_HEADER_LOGO_WIDTH', 0);
+
+/**
+ * Cache directory for temporary files (full path).
+ */
+//define ('K_PATH_CACHE', '/tmp/');
+
+/**
+ * Generic name for a blank image.
+ */
+define ('K_BLANK_IMAGE', '_blank.png');
+
+/**
+ * Page format.
+ */
+define ('PDF_PAGE_FORMAT', 'A4');
+
+/**
+ * Page orientation (P=portrait, L=landscape).
+ */
+define ('PDF_PAGE_ORIENTATION', 'P');
+
+/**
+ * Document creator.
+ */
+define ('PDF_CREATOR', 'TCPDF');
+
+/**
+ * Document author.
+ */
+define ('PDF_AUTHOR', 'TCPDF');
+
+/**
+ * Header title.
+ */
+define ('PDF_HEADER_TITLE', 'TCPDF Example');
+
+/**
+ * Header description string.
+ */
+define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
+
+/**
+ * Document unit of measure [pt=point, mm=millimeter, cm=centimeter, in=inch].
+ */
+define ('PDF_UNIT', 'mm');
+
+/**
+ * Header margin.
+ */
+define ('PDF_MARGIN_HEADER', 5);
+
+/**
+ * Footer margin.
+ */
+define ('PDF_MARGIN_FOOTER', 10);
+
+/**
+ * Top margin.
+ */
+define ('PDF_MARGIN_TOP', 27);
+
+/**
+ * Bottom margin.
+ */
+define ('PDF_MARGIN_BOTTOM', 25);
+
+/**
+ * Left margin.
+ */
+define ('PDF_MARGIN_LEFT', 15);
+
+/**
+ * Right margin.
+ */
+define ('PDF_MARGIN_RIGHT', 15);
+
+/**
+ * Default main font name.
+ */
+define ('PDF_FONT_NAME_MAIN', 'helvetica');
+
+/**
+ * Default main font size.
+ */
+define ('PDF_FONT_SIZE_MAIN', 10);
+
+/**
+ * Default data font name.
+ */
+define ('PDF_FONT_NAME_DATA', 'helvetica');
+
+/**
+ * Default data font size.
+ */
+define ('PDF_FONT_SIZE_DATA', 8);
+
+/**
+ * Default monospaced font name.
+ */
+define ('PDF_FONT_MONOSPACED', 'courier');
+
+/**
+ * Ratio used to adjust the conversion of pixels to user units.
+ */
+define ('PDF_IMAGE_SCALE_RATIO', 1.25);
+
+/**
+ * Magnification factor for titles.
+ */
+define('HEAD_MAGNIFICATION', 1.1);
+
+/**
+ * Height of cell respect font height.
+ */
+define('K_CELL_HEIGHT_RATIO', 1.25);
+
+/**
+ * Title magnification respect main font size.
+ */
+define('K_TITLE_MAGNIFICATION', 1.3);
+
+/**
+ * Reduction factor for small font.
+ */
+define('K_SMALL_RATIO', 2/3);
+
+/**
+ * Set to true to enable the special procedure used to avoid the overlappind of symbols on Thai language.
+ */
+define('K_THAI_TOPCHARS', true);
+
+/**
+ * If true allows to call TCPDF methods using HTML syntax
+ * IMPORTANT: For security reason, disable this feature if you are printing user HTML content.
+ */
+define('K_TCPDF_CALLS_IN_HTML', true);
+
+/**
+ * If true and PHP version is greater than 5, then the Error() method throw new exception instead of terminating the execution.
+ */
+define('K_TCPDF_THROW_EXCEPTION_ERROR', false);
+
+/**
+ * Default timezone for datetime functions
+ */
+define('K_TIMEZONE', 'UTC');
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courier.php b/inc/3rdparty/libraries/tcpdf/fonts/courier.php
new file mode 100644 (file)
index 0000000..e935b67
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Courier';
+$up=-100;
+$ut=50;
+$dw=600;
+$diff='';
+$enc='';
+$desc=array('Flags'=>33,'FontBBox'=>'[-23 -250 715 805]','ItalicAngle'=>0,'Ascent'=>805,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>426,'StemV'=>51,'StemH'=>51,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600);
+$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courierb.php b/inc/3rdparty/libraries/tcpdf/fonts/courierb.php
new file mode 100644 (file)
index 0000000..acb01b0
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Courier-Bold';
+$up=-100;
+$ut=50;
+$dw=600;
+$diff='';
+$enc='';
+$desc=array('Flags'=>33,'FontBBox'=>'[-113 -250 749 801]','ItalicAngle'=>0,'Ascent'=>801,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>439,'StemV'=>106,'StemH'=>84,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600);
+$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courierbi.php b/inc/3rdparty/libraries/tcpdf/fonts/courierbi.php
new file mode 100644 (file)
index 0000000..631c623
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Courier-BoldOblique';
+$up=-100;
+$ut=50;
+$dw=600;
+$diff='';
+$enc='';
+$desc=array('Flags'=>97,'FontBBox'=>'[-57 -250 869 801]','ItalicAngle'=>-12,'Ascent'=>801,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>439,'StemV'=>106,'StemH'=>84,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600);
+$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courieri.php b/inc/3rdparty/libraries/tcpdf/fonts/courieri.php
new file mode 100644 (file)
index 0000000..5ae725d
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Courier-Oblique';
+$up=-100;
+$ut=50;
+$dw=600;
+$diff='';
+$enc='';
+$desc=array('Flags'=>97,'FontBBox'=>'[-27 -250 849 805]','ItalicAngle'=>-12,'Ascent'=>805,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>426,'StemV'=>51,'StemH'=>51,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600);
+$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helvetica.php b/inc/3rdparty/libraries/tcpdf/fonts/helvetica.php
new file mode 100644 (file)
index 0000000..d1aa6d8
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Helvetica';
+$up=-100;
+$ut=50;
+$dw=513;
+$diff='';
+$enc='';
+$desc=array('Flags'=>32,'FontBBox'=>'[-166 -225 1000 931]','ItalicAngle'=>0,'Ascent'=>931,'Descent'=>-225,'Leading'=>0,'CapHeight'=>718,'XHeight'=>523,'StemV'=>88,'StemH'=>76,'AvgWidth'=>513,'MaxWidth'=>1015,'MissingWidth'=>513);
+$cw=array(0=>500,1=>500,2=>500,3=>500,4=>500,5=>500,6=>500,7=>500,8=>500,9=>500,10=>500,11=>500,12=>500,13=>500,14=>500,15=>500,16=>500,17=>500,18=>500,19=>500,20=>500,21=>500,22=>500,23=>500,24=>500,25=>500,26=>500,27=>500,28=>500,29=>500,30=>500,31=>500,32=>278,33=>278,34=>355,35=>556,36=>556,37=>889,38=>667,39=>191,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>278,59=>278,60=>584,61=>584,62=>584,63=>556,64=>1015,65=>667,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>500,75=>667,76=>556,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>278,92=>278,93=>277,94=>469,95=>556,96=>333,97=>556,98=>556,99=>500,100=>556,101=>556,102=>278,103=>556,104=>556,105=>222,106=>222,107=>500,108=>222,109=>833,110=>556,111=>556,112=>556,113=>556,114=>333,115=>500,116=>278,117=>556,118=>500,119=>722,120=>500,121=>500,122=>500,123=>334,124=>260,125=>334,126=>584,127=>500,128=>655,129=>500,130=>222,131=>278,132=>333,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>250,140=>1000,141=>500,142=>611,143=>500,144=>500,145=>222,146=>221,147=>333,148=>333,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>500,155=>250,156=>938,157=>500,158=>500,159=>667,160=>278,161=>278,162=>556,163=>556,164=>556,165=>556,166=>260,167=>556,168=>333,169=>737,170=>370,171=>448,172=>584,173=>333,174=>737,175=>333,176=>606,177=>584,178=>350,179=>350,180=>333,181=>556,182=>537,183=>278,184=>333,185=>350,186=>365,187=>448,188=>869,189=>869,190=>879,191=>556,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>666,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>896,231=>500,232=>556,233=>556,234=>556,235=>556,236=>251,237=>251,238=>251,239=>251,240=>556,241=>556,242=>556,243=>556,244=>556,245=>556,246=>556,247=>584,248=>611,249=>556,250=>556,251=>556,252=>556,253=>500,254=>555,255=>500);
+
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helveticab.php b/inc/3rdparty/libraries/tcpdf/fonts/helveticab.php
new file mode 100644 (file)
index 0000000..8d6047f
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Helvetica-Bold';
+$up=-100;
+$ut=50;
+$dw=535;
+$diff='';
+$enc='';
+$desc=array('Flags'=>32,'FontBBox'=>'[-170 -228 1003 962]','ItalicAngle'=>0,'Ascent'=>962,'Descent'=>-228,'Leading'=>0,'CapHeight'=>718,'XHeight'=>532,'StemV'=>140,'StemH'=>118,'AvgWidth'=>535,'MaxWidth'=>1000,'MissingWidth'=>535);
+$cw=array(0=>278,1=>278,2=>278,3=>278,4=>278,5=>278,6=>278,7=>278,8=>278,9=>278,10=>278,11=>278,12=>278,13=>278,14=>278,15=>278,16=>278,17=>278,18=>278,19=>278,20=>278,21=>278,22=>278,23=>278,24=>278,25=>278,26=>278,27=>278,28=>278,29=>278,30=>278,31=>278,32=>278,33=>333,34=>474,35=>556,36=>556,37=>889,38=>722,39=>238,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>333,59=>333,60=>584,61=>584,62=>584,63=>611,64=>975,65=>722,66=>722,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>556,75=>722,76=>611,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>333,92=>278,93=>333,94=>584,95=>556,96=>333,97=>556,98=>611,99=>556,100=>611,101=>556,102=>333,103=>611,104=>611,105=>278,106=>278,107=>556,108=>278,109=>889,110=>611,111=>611,112=>611,113=>611,114=>389,115=>556,116=>333,117=>611,118=>556,119=>778,120=>556,121=>556,122=>500,123=>389,124=>280,125=>389,126=>584,127=>350,128=>556,129=>350,130=>278,131=>556,132=>500,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>333,140=>1000,141=>350,142=>611,143=>350,144=>350,145=>278,146=>278,147=>500,148=>500,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>556,155=>333,156=>944,157=>350,158=>500,159=>667,160=>278,161=>333,162=>556,163=>556,164=>556,165=>556,166=>280,167=>556,168=>333,169=>737,170=>370,171=>556,172=>584,173=>333,174=>737,175=>333,176=>400,177=>584,178=>333,179=>333,180=>333,181=>611,182=>556,183=>278,184=>333,185=>333,186=>365,187=>556,188=>834,189=>834,190=>834,191=>611,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>667,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>889,231=>556,232=>556,233=>556,234=>556,235=>556,236=>278,237=>278,238=>278,239=>278,240=>611,241=>611,242=>611,243=>611,244=>611,245=>611,246=>611,247=>584,248=>611,249=>611,250=>611,251=>611,252=>611,253=>556,254=>611,255=>556);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helveticabi.php b/inc/3rdparty/libraries/tcpdf/fonts/helveticabi.php
new file mode 100644 (file)
index 0000000..e2ecf38
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Helvetica-BoldOblique';
+$up=-100;
+$ut=50;
+$dw=535;
+$diff='';
+$enc='';
+$desc=array('Flags'=>96,'FontBBox'=>'[-174 -228 1114 962]','ItalicAngle'=>-12,'Ascent'=>962,'Descent'=>-228,'Leading'=>0,'CapHeight'=>718,'XHeight'=>532,'StemV'=>140,'StemH'=>118,'AvgWidth'=>535,'MaxWidth'=>1000,'MissingWidth'=>535);
+$cw=array(0=>278,1=>278,2=>278,3=>278,4=>278,5=>278,6=>278,7=>278,8=>278,9=>278,10=>278,11=>278,12=>278,13=>278,14=>278,15=>278,16=>278,17=>278,18=>278,19=>278,20=>278,21=>278,22=>278,23=>278,24=>278,25=>278,26=>278,27=>278,28=>278,29=>278,30=>278,31=>278,32=>278,33=>333,34=>474,35=>556,36=>556,37=>889,38=>722,39=>238,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>333,59=>333,60=>584,61=>584,62=>584,63=>611,64=>975,65=>722,66=>722,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>556,75=>722,76=>611,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>333,92=>278,93=>333,94=>584,95=>556,96=>333,97=>556,98=>611,99=>556,100=>611,101=>556,102=>333,103=>611,104=>611,105=>278,106=>278,107=>556,108=>278,109=>889,110=>611,111=>611,112=>611,113=>611,114=>389,115=>556,116=>333,117=>611,118=>556,119=>778,120=>556,121=>556,122=>500,123=>389,124=>280,125=>389,126=>584,127=>350,128=>556,129=>350,130=>278,131=>556,132=>500,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>333,140=>1000,141=>350,142=>611,143=>350,144=>350,145=>278,146=>278,147=>500,148=>500,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>556,155=>333,156=>944,157=>350,158=>500,159=>667,160=>278,161=>333,162=>556,163=>556,164=>556,165=>556,166=>280,167=>556,168=>333,169=>737,170=>370,171=>556,172=>584,173=>333,174=>737,175=>333,176=>400,177=>584,178=>333,179=>333,180=>333,181=>611,182=>556,183=>278,184=>333,185=>333,186=>365,187=>556,188=>834,189=>834,190=>834,191=>611,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>667,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>889,231=>556,232=>556,233=>556,234=>556,235=>556,236=>278,237=>278,238=>278,239=>278,240=>611,241=>611,242=>611,243=>611,244=>611,245=>611,246=>611,247=>584,248=>611,249=>611,250=>611,251=>611,252=>611,253=>556,254=>611,255=>556);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helveticai.php b/inc/3rdparty/libraries/tcpdf/fonts/helveticai.php
new file mode 100644 (file)
index 0000000..0404aeb
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Helvetica-Oblique';
+$up=-100;
+$ut=50;
+$dw=513;
+$diff='';
+$enc='';
+$desc=array('Flags'=>96,'FontBBox'=>'[-170 -225 1116 931]','ItalicAngle'=>-12,'Ascent'=>931,'Descent'=>-225,'Leading'=>0,'CapHeight'=>718,'XHeight'=>523,'StemV'=>88,'StemH'=>76,'AvgWidth'=>513,'MaxWidth'=>1015,'MissingWidth'=>513);
+$cw=array(0=>278,1=>278,2=>278,3=>278,4=>278,5=>278,6=>278,7=>278,8=>278,9=>278,10=>278,11=>278,12=>278,13=>278,14=>278,15=>278,16=>278,17=>278,18=>278,19=>278,20=>278,21=>278,22=>278,23=>278,24=>278,25=>278,26=>278,27=>278,28=>278,29=>278,30=>278,31=>278,32=>278,33=>278,34=>355,35=>556,36=>556,37=>889,38=>667,39=>191,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>278,59=>278,60=>584,61=>584,62=>584,63=>556,64=>1015,65=>667,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>500,75=>667,76=>556,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>278,92=>278,93=>278,94=>469,95=>556,96=>333,97=>556,98=>556,99=>500,100=>556,101=>556,102=>278,103=>556,104=>556,105=>222,106=>222,107=>500,108=>222,109=>833,110=>556,111=>556,112=>556,113=>556,114=>333,115=>500,116=>278,117=>556,118=>500,119=>722,120=>500,121=>500,122=>500,123=>334,124=>260,125=>334,126=>584,127=>350,128=>556,129=>350,130=>222,131=>556,132=>333,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>333,140=>1000,141=>350,142=>611,143=>350,144=>350,145=>222,146=>222,147=>333,148=>333,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>500,155=>333,156=>944,157=>350,158=>500,159=>667,160=>278,161=>333,162=>556,163=>556,164=>556,165=>556,166=>260,167=>556,168=>333,169=>737,170=>370,171=>556,172=>584,173=>333,174=>737,175=>333,176=>400,177=>584,178=>333,179=>333,180=>333,181=>556,182=>537,183=>278,184=>333,185=>333,186=>365,187=>556,188=>834,189=>834,190=>834,191=>611,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>667,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>889,231=>500,232=>556,233=>556,234=>556,235=>556,236=>278,237=>278,238=>278,239=>278,240=>556,241=>556,242=>556,243=>556,244=>556,245=>556,246=>556,247=>584,248=>611,249=>556,250=>556,251=>556,252=>556,253=>500,254=>556,255=>500);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/symbol.php b/inc/3rdparty/libraries/tcpdf/fonts/symbol.php
new file mode 100644 (file)
index 0000000..15f7f1d
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Symbol';
+$up=-100;
+$ut=50;
+$dw=587;
+$diff='';
+$enc='';
+$desc=array('Flags'=>4,'FontBBox'=>'[-180 -293 1090 1010]','ItalicAngle'=>0,'Ascent'=>1010,'Descent'=>-293,'Leading'=>0,'CapHeight'=>1010,'StemV'=>85,'StemH'=>92,'AvgWidth'=>587,'MaxWidth'=>1042,'MissingWidth'=>587);
+$cw=array(0=>587,1=>587,2=>587,3=>587,4=>587,5=>587,6=>587,7=>587,8=>587,9=>587,10=>587,11=>587,12=>587,13=>587,14=>587,15=>587,16=>587,17=>587,18=>587,19=>587,20=>587,21=>587,22=>587,23=>587,24=>587,25=>587,26=>587,27=>587,28=>587,29=>587,30=>587,31=>587,32=>250,33=>333,34=>713,35=>500,36=>549,37=>833,38=>778,39=>439,40=>333,41=>333,42=>500,43=>549,44=>250,45=>549,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>278,59=>278,60=>549,61=>549,62=>549,63=>444,64=>549,65=>722,66=>667,67=>722,68=>612,69=>611,70=>763,71=>603,72=>722,73=>333,74=>631,75=>722,76=>686,77=>889,78=>722,79=>722,80=>768,81=>741,82=>556,83=>592,84=>611,85=>690,86=>439,87=>768,88=>645,89=>795,90=>611,91=>333,92=>863,93=>333,94=>658,95=>500,96=>500,97=>631,98=>549,99=>549,100=>494,101=>439,102=>521,103=>411,104=>603,105=>329,106=>603,107=>549,108=>549,109=>576,110=>521,111=>549,112=>549,113=>521,114=>549,115=>603,116=>439,117=>576,118=>713,119=>686,120=>493,121=>686,122=>494,123=>480,124=>200,125=>480,126=>549,127=>587,128=>587,129=>587,130=>587,131=>587,132=>587,133=>587,134=>587,135=>587,136=>587,137=>587,138=>587,139=>587,140=>587,141=>587,142=>587,143=>587,144=>587,145=>587,146=>587,147=>587,148=>587,149=>587,150=>587,151=>587,152=>587,153=>587,154=>587,155=>587,156=>587,157=>587,158=>587,159=>587,160=>750,161=>620,162=>247,163=>549,164=>167,165=>713,166=>500,167=>753,168=>753,169=>753,170=>753,171=>1042,172=>987,173=>603,174=>987,175=>603,176=>400,177=>549,178=>411,179=>549,180=>549,181=>713,182=>494,183=>460,184=>549,185=>549,186=>549,187=>549,188=>1000,189=>603,190=>1000,191=>658,192=>823,193=>686,194=>795,195=>987,196=>768,197=>768,198=>823,199=>768,200=>768,201=>713,202=>713,203=>713,204=>713,205=>713,206=>713,207=>713,208=>768,209=>713,210=>790,211=>790,212=>890,213=>823,214=>549,215=>250,216=>713,217=>603,218=>603,219=>1042,220=>987,221=>603,222=>987,223=>603,224=>494,225=>329,226=>790,227=>790,228=>786,229=>713,230=>384,231=>384,232=>384,233=>384,234=>384,235=>384,236=>494,237=>494,238=>494,239=>494,240=>587,241=>329,242=>274,243=>686,244=>686,245=>686,246=>384,247=>384,248=>384,249=>384,250=>384,251=>384,252=>494,253=>494,254=>494,255=>587);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/times.php b/inc/3rdparty/libraries/tcpdf/fonts/times.php
new file mode 100644 (file)
index 0000000..cfcaf06
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Times-Roman';
+$up=-100;
+$ut=50;
+$dw=495;
+$diff='';
+$enc='';
+$desc=array('Flags'=>32,'FontBBox'=>'[-168 -218 1000 898]','ItalicAngle'=>0,'Ascent'=>898,'Descent'=>-218,'Leading'=>0,'CapHeight'=>662,'XHeight'=>450,'StemV'=>84,'StemH'=>28,'AvgWidth'=>495,'MaxWidth'=>1000,'MissingWidth'=>495);
+$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>333,34=>408,35=>500,36=>500,37=>833,38=>778,39=>180,40=>333,41=>333,42=>500,43=>564,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>278,59=>278,60=>564,61=>564,62=>564,63=>444,64=>921,65=>722,66=>667,67=>667,68=>722,69=>611,70=>556,71=>722,72=>722,73=>333,74=>389,75=>722,76=>611,77=>889,78=>722,79=>722,80=>556,81=>722,82=>667,83=>556,84=>611,85=>722,86=>722,87=>944,88=>722,89=>722,90=>611,91=>333,92=>278,93=>333,94=>469,95=>500,96=>333,97=>444,98=>500,99=>444,100=>500,101=>444,102=>333,103=>500,104=>500,105=>278,106=>278,107=>500,108=>278,109=>778,110=>500,111=>500,112=>500,113=>500,114=>333,115=>389,116=>278,117=>500,118=>500,119=>722,120=>500,121=>500,122=>444,123=>480,124=>200,125=>480,126=>541,127=>350,128=>500,129=>350,130=>333,131=>500,132=>444,133=>1000,134=>500,135=>500,136=>333,137=>1000,138=>556,139=>333,140=>889,141=>350,142=>611,143=>350,144=>350,145=>333,146=>333,147=>444,148=>444,149=>350,150=>500,151=>1000,152=>333,153=>980,154=>389,155=>333,156=>722,157=>350,158=>444,159=>722,160=>250,161=>333,162=>500,163=>500,164=>500,165=>500,166=>200,167=>500,168=>333,169=>760,170=>276,171=>500,172=>564,173=>333,174=>760,175=>333,176=>400,177=>564,178=>300,179=>300,180=>333,181=>500,182=>453,183=>250,184=>333,185=>300,186=>310,187=>500,188=>750,189=>750,190=>750,191=>444,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>889,199=>667,200=>611,201=>611,202=>611,203=>611,204=>333,205=>333,206=>333,207=>333,208=>722,209=>722,210=>722,211=>722,212=>722,213=>722,214=>722,215=>564,216=>722,217=>722,218=>722,219=>722,220=>722,221=>722,222=>556,223=>500,224=>444,225=>444,226=>444,227=>444,228=>444,229=>444,230=>667,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>500,242=>500,243=>500,244=>500,245=>500,246=>500,247=>564,248=>500,249=>500,250=>500,251=>500,252=>500,253=>500,254=>500,255=>500);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/timesb.php b/inc/3rdparty/libraries/tcpdf/fonts/timesb.php
new file mode 100644 (file)
index 0000000..9c41a7b
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Times-Bold';
+$up=-100;
+$ut=50;
+$dw=516;
+$diff='';
+$enc='';
+$desc=array('Flags'=>32,'FontBBox'=>'[-168 -218 1000 935]','ItalicAngle'=>0,'Ascent'=>935,'Descent'=>-218,'Leading'=>0,'CapHeight'=>676,'XHeight'=>461,'StemV'=>139,'StemH'=>44,'AvgWidth'=>516,'MaxWidth'=>1000,'MissingWidth'=>516);
+$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>333,34=>555,35=>500,36=>500,37=>1000,38=>833,39=>278,40=>333,41=>333,42=>500,43=>570,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>333,59=>333,60=>570,61=>570,62=>570,63=>500,64=>930,65=>722,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>778,73=>389,74=>500,75=>778,76=>667,77=>944,78=>722,79=>778,80=>611,81=>778,82=>722,83=>556,84=>667,85=>722,86=>722,87=>1000,88=>722,89=>722,90=>667,91=>333,92=>278,93=>333,94=>581,95=>500,96=>333,97=>500,98=>556,99=>444,100=>556,101=>444,102=>333,103=>500,104=>556,105=>278,106=>333,107=>556,108=>278,109=>833,110=>556,111=>500,112=>556,113=>556,114=>444,115=>389,116=>333,117=>556,118=>500,119=>722,120=>500,121=>500,122=>444,123=>394,124=>220,125=>394,126=>520,127=>350,128=>500,129=>350,130=>333,131=>500,132=>500,133=>1000,134=>500,135=>500,136=>333,137=>1000,138=>556,139=>333,140=>1000,141=>350,142=>667,143=>350,144=>350,145=>333,146=>333,147=>500,148=>500,149=>350,150=>500,151=>1000,152=>333,153=>1000,154=>389,155=>333,156=>722,157=>350,158=>444,159=>722,160=>250,161=>333,162=>500,163=>500,164=>500,165=>500,166=>220,167=>500,168=>333,169=>747,170=>300,171=>500,172=>570,173=>333,174=>747,175=>333,176=>400,177=>570,178=>300,179=>300,180=>333,181=>556,182=>540,183=>250,184=>333,185=>300,186=>330,187=>500,188=>750,189=>750,190=>750,191=>500,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>389,205=>389,206=>389,207=>389,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>570,216=>778,217=>722,218=>722,219=>722,220=>722,221=>722,222=>611,223=>556,224=>500,225=>500,226=>500,227=>500,228=>500,229=>500,230=>722,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>556,242=>500,243=>500,244=>500,245=>500,246=>500,247=>570,248=>500,249=>556,250=>556,251=>556,252=>556,253=>500,254=>556,255=>500);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/timesbi.php b/inc/3rdparty/libraries/tcpdf/fonts/timesbi.php
new file mode 100644 (file)
index 0000000..4feed74
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Times-BoldItalic';
+$up=-100;
+$ut=50;
+$dw=501;
+$diff='';
+$enc='';
+$desc=array('Flags'=>96,'FontBBox'=>'[-200 -218 996 921]','ItalicAngle'=>-15,'Ascent'=>921,'Descent'=>-218,'Leading'=>0,'CapHeight'=>669,'XHeight'=>462,'StemV'=>121,'StemH'=>42,'AvgWidth'=>501,'MaxWidth'=>1000,'MissingWidth'=>501);
+$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>389,34=>555,35=>500,36=>500,37=>833,38=>778,39=>278,40=>333,41=>333,42=>500,43=>570,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>333,59=>333,60=>570,61=>570,62=>570,63=>500,64=>832,65=>667,66=>667,67=>667,68=>722,69=>667,70=>667,71=>722,72=>778,73=>389,74=>500,75=>667,76=>611,77=>889,78=>722,79=>722,80=>611,81=>722,82=>667,83=>556,84=>611,85=>722,86=>667,87=>889,88=>667,89=>611,90=>611,91=>333,92=>278,93=>333,94=>570,95=>500,96=>333,97=>500,98=>500,99=>444,100=>500,101=>444,102=>333,103=>500,104=>556,105=>278,106=>278,107=>500,108=>278,109=>778,110=>556,111=>500,112=>500,113=>500,114=>389,115=>389,116=>278,117=>556,118=>444,119=>667,120=>500,121=>444,122=>389,123=>348,124=>220,125=>348,126=>570,127=>350,128=>500,129=>350,130=>333,131=>500,132=>500,133=>1000,134=>500,135=>500,136=>333,137=>1000,138=>556,139=>333,140=>944,141=>350,142=>611,143=>350,144=>350,145=>333,146=>333,147=>500,148=>500,149=>350,150=>500,151=>1000,152=>333,153=>1000,154=>389,155=>333,156=>722,157=>350,158=>389,159=>611,160=>250,161=>389,162=>500,163=>500,164=>500,165=>500,166=>220,167=>500,168=>333,169=>747,170=>266,171=>500,172=>606,173=>333,174=>747,175=>333,176=>400,177=>570,178=>300,179=>300,180=>333,181=>576,182=>500,183=>250,184=>333,185=>300,186=>300,187=>500,188=>750,189=>750,190=>750,191=>500,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>944,199=>667,200=>667,201=>667,202=>667,203=>667,204=>389,205=>389,206=>389,207=>389,208=>722,209=>722,210=>722,211=>722,212=>722,213=>722,214=>722,215=>570,216=>722,217=>722,218=>722,219=>722,220=>722,221=>611,222=>611,223=>500,224=>500,225=>500,226=>500,227=>500,228=>500,229=>500,230=>722,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>556,242=>500,243=>500,244=>500,245=>500,246=>500,247=>570,248=>500,249=>556,250=>556,251=>556,252=>556,253=>444,254=>500,255=>444);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/timesi.php b/inc/3rdparty/libraries/tcpdf/fonts/timesi.php
new file mode 100644 (file)
index 0000000..1e8b673
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='Times-Italic';
+$up=-100;
+$ut=50;
+$dw=491;
+$diff='';
+$enc='';
+$desc=array('Flags'=>96,'FontBBox'=>'[-169 -217 1010 883]','ItalicAngle'=>-15.5,'Ascent'=>883,'Descent'=>-217,'Leading'=>0,'CapHeight'=>653,'XHeight'=>441,'StemV'=>76,'StemH'=>32,'AvgWidth'=>491,'MaxWidth'=>1000,'MissingWidth'=>491);
+$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>333,34=>420,35=>500,36=>500,37=>833,38=>778,39=>214,40=>333,41=>333,42=>500,43=>675,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>333,59=>333,60=>675,61=>675,62=>675,63=>500,64=>920,65=>611,66=>611,67=>667,68=>722,69=>611,70=>611,71=>722,72=>722,73=>333,74=>444,75=>667,76=>556,77=>833,78=>667,79=>722,80=>611,81=>722,82=>611,83=>500,84=>556,85=>722,86=>611,87=>833,88=>611,89=>556,90=>556,91=>389,92=>278,93=>389,94=>422,95=>500,96=>333,97=>500,98=>500,99=>444,100=>500,101=>444,102=>278,103=>500,104=>500,105=>278,106=>278,107=>444,108=>278,109=>722,110=>500,111=>500,112=>500,113=>500,114=>389,115=>389,116=>278,117=>500,118=>444,119=>667,120=>444,121=>444,122=>389,123=>400,124=>275,125=>400,126=>541,127=>350,128=>500,129=>350,130=>333,131=>500,132=>556,133=>889,134=>500,135=>500,136=>333,137=>1000,138=>500,139=>333,140=>944,141=>350,142=>556,143=>350,144=>350,145=>333,146=>333,147=>556,148=>556,149=>350,150=>500,151=>889,152=>333,153=>980,154=>389,155=>333,156=>667,157=>350,158=>389,159=>556,160=>250,161=>389,162=>500,163=>500,164=>500,165=>500,166=>275,167=>500,168=>333,169=>760,170=>276,171=>500,172=>675,173=>333,174=>760,175=>333,176=>400,177=>675,178=>300,179=>300,180=>333,181=>500,182=>523,183=>250,184=>333,185=>300,186=>310,187=>500,188=>750,189=>750,190=>750,191=>500,192=>611,193=>611,194=>611,195=>611,196=>611,197=>611,198=>889,199=>667,200=>611,201=>611,202=>611,203=>611,204=>333,205=>333,206=>333,207=>333,208=>722,209=>667,210=>722,211=>722,212=>722,213=>722,214=>722,215=>675,216=>722,217=>722,218=>722,219=>722,220=>722,221=>556,222=>611,223=>500,224=>500,225=>500,226=>500,227=>500,228=>500,229=>500,230=>667,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>500,242=>500,243=>500,244=>500,245=>500,246=>500,247=>675,248=>500,249=>500,250=>500,251=>500,252=>500,253=>444,254=>500,255=>444);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/fonts/zapfdingbats.php b/inc/3rdparty/libraries/tcpdf/fonts/zapfdingbats.php
new file mode 100644 (file)
index 0000000..4c0bd75
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+// TCPDF FONT FILE DESCRIPTION
+$type='core';
+$name='ZapfDingbats';
+$up=-100;
+$ut=50;
+$dw=746;
+$diff='';
+$enc='';
+$desc=array('Flags'=>4,'FontBBox'=>'[-1 -143 981 820]','ItalicAngle'=>0,'Ascent'=>820,'Descent'=>-143,'Leading'=>0,'CapHeight'=>820,'StemV'=>90,'StemH'=>28,'AvgWidth'=>746,'MaxWidth'=>1016,'MissingWidth'=>746);
+$cw=array(0=>746,1=>746,2=>746,3=>746,4=>746,5=>746,6=>746,7=>746,8=>746,9=>746,10=>746,11=>746,12=>746,13=>746,14=>746,15=>746,16=>746,17=>746,18=>746,19=>746,20=>746,21=>746,22=>746,23=>746,24=>746,25=>746,26=>746,27=>746,28=>746,29=>746,30=>746,31=>746,32=>278,33=>974,34=>961,35=>974,36=>980,37=>719,38=>789,39=>790,40=>791,41=>690,42=>960,43=>939,44=>549,45=>855,46=>911,47=>933,48=>911,49=>945,50=>974,51=>755,52=>846,53=>762,54=>761,55=>571,56=>677,57=>763,58=>760,59=>759,60=>754,61=>494,62=>552,63=>537,64=>577,65=>692,66=>786,67=>788,68=>788,69=>790,70=>793,71=>794,72=>816,73=>823,74=>789,75=>841,76=>823,77=>833,78=>816,79=>831,80=>923,81=>744,82=>723,83=>749,84=>790,85=>792,86=>695,87=>776,88=>768,89=>792,90=>759,91=>707,92=>708,93=>682,94=>701,95=>826,96=>815,97=>789,98=>789,99=>707,100=>687,101=>696,102=>689,103=>786,104=>787,105=>713,106=>791,107=>785,108=>791,109=>873,110=>761,111=>762,112=>762,113=>759,114=>759,115=>892,116=>892,117=>788,118=>784,119=>438,120=>138,121=>277,122=>415,123=>392,124=>392,125=>668,126=>668,127=>746,128=>390,129=>390,130=>317,131=>317,132=>276,133=>276,134=>509,135=>509,136=>410,137=>410,138=>234,139=>234,140=>334,141=>334,142=>746,143=>746,144=>746,145=>746,146=>746,147=>746,148=>746,149=>746,150=>746,151=>746,152=>746,153=>746,154=>746,155=>746,156=>746,157=>746,158=>746,159=>746,160=>746,161=>732,162=>544,163=>544,164=>910,165=>667,166=>760,167=>760,168=>776,169=>595,170=>694,171=>626,172=>788,173=>788,174=>788,175=>788,176=>788,177=>788,178=>788,179=>788,180=>788,181=>788,182=>788,183=>788,184=>788,185=>788,186=>788,187=>788,188=>788,189=>788,190=>788,191=>788,192=>788,193=>788,194=>788,195=>788,196=>788,197=>788,198=>788,199=>788,200=>788,201=>788,202=>788,203=>788,204=>788,205=>788,206=>788,207=>788,208=>788,209=>788,210=>788,211=>788,212=>894,213=>838,214=>1016,215=>458,216=>748,217=>924,218=>748,219=>918,220=>927,221=>928,222=>928,223=>834,224=>873,225=>828,226=>924,227=>924,228=>917,229=>930,230=>931,231=>463,232=>883,233=>836,234=>836,235=>867,236=>867,237=>696,238=>696,239=>874,240=>746,241=>874,242=>760,243=>946,244=>771,245=>865,246=>771,247=>888,248=>967,249=>888,250=>831,251=>873,252=>927,253=>970,254=>918,255=>746);
+// --- EOF ---
diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php
new file mode 100644 (file)
index 0000000..c106729
--- /dev/null
@@ -0,0 +1,1176 @@
+<?php
+//============================================================+
+// File name   : datamatrix.php
+// Version     : 1.0.008
+// Begin       : 2010-06-07
+// Last Update : 2014-05-06
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2010-2014  Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// DESCRIPTION :
+//
+// Class to create DataMatrix ECC 200 barcode arrays for TCPDF class.
+// DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code.
+//============================================================+
+
+/**
+* @file
+* Class to create DataMatrix ECC 200 barcode arrays for TCPDF class.
+* DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code.
+*
+* @package com.tecnick.tcpdf
+* @author Nicola Asuni
+* @version 1.0.008
+*/
+
+// custom definitions
+if (!defined('DATAMATRIXDEFS')) {
+
+       /**
+        * Indicate that definitions for this class are set
+        */
+       define('DATAMATRIXDEFS', true);
+
+       // -----------------------------------------------------
+
+} // end of custom definitions
+
+// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
+
+
+/**
+* ASCII encoding: ASCII character 0 to 127 (1 byte per CW)
+*/
+define('ENC_ASCII', 0);
+
+/**
+* C40 encoding: Upper-case alphanumeric (3/2 bytes per CW)
+*/
+define('ENC_C40', 1);
+
+/**
+* TEXT encoding: Lower-case alphanumeric (3/2 bytes per CW)
+*/
+define('ENC_TXT', 2);
+
+/**
+* X12 encoding: ANSI X12 (3/2 byte per CW)
+*/
+define('ENC_X12', 3);
+
+/**
+* EDIFACT encoding: ASCII character 32 to 94 (4/3 bytes per CW)
+*/
+define('ENC_EDF', 4);
+
+/**
+* BASE 256 encoding: ASCII character 0 to 255 (1 byte per CW)
+*/
+define('ENC_BASE256', 5);
+
+/**
+* ASCII extended encoding: ASCII character 128 to 255 (1/2 byte per CW)
+*/
+define('ENC_ASCII_EXT', 6);
+
+/**
+* ASCII number encoding: ASCII digits (2 bytes per CW)
+*/
+define('ENC_ASCII_NUM', 7);
+
+/**
+* @class Datamatrix
+* Class to create DataMatrix ECC 200 barcode arrays for TCPDF class.
+* DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code.
+*
+* @package com.tecnick.tcpdf
+* @author Nicola Asuni
+* @version 1.0.004
+*/
+class Datamatrix {
+
+       /**
+        * Barcode array to be returned which is readable by TCPDF.
+        * @protected
+        */
+       protected $barcode_array = array();
+
+       /**
+        * Store last used encoding for data codewords.
+        * @protected
+        */
+       protected $last_enc = ENC_ASCII;
+
+       /**
+        * Table of Data Matrix ECC 200 Symbol Attributes:<ul>
+        * <li>total matrix rows (including finder pattern)</li>
+        * <li>total matrix cols (including finder pattern)</li>
+        * <li>total matrix rows (without finder pattern)</li>
+        * <li>total matrix cols (without finder pattern)</li>
+        * <li>region data rows (with finder pattern)</li>
+        * <li>region data col (with finder pattern)</li>
+        * <li>region data rows (without finder pattern)</li>
+        * <li>region data col (without finder pattern)</li>
+        * <li>horizontal regions</li>
+        * <li>vertical regions</li>
+        * <li>regions</li>
+        * <li>data codewords</li>
+        * <li>error codewords</li>
+        * <li>blocks</li>
+        * <li>data codewords per block</li>
+        * <li>error codewords per block</li>
+        * </ul>
+        * @protected
+        */
+       protected $symbattr = array(
+               // square form ---------------------------------------------------------------------------------------
+               array(0x00a,0x00a,0x008,0x008,0x00a,0x00a,0x008,0x008,0x001,0x001,0x001,0x003,0x005,0x001,0x003,0x005), // 10x10
+               array(0x00c,0x00c,0x00a,0x00a,0x00c,0x00c,0x00a,0x00a,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 12x12
+               array(0x00e,0x00e,0x00c,0x00c,0x00e,0x00e,0x00c,0x00c,0x001,0x001,0x001,0x008,0x00a,0x001,0x008,0x00a), // 14x14
+               array(0x010,0x010,0x00e,0x00e,0x010,0x010,0x00e,0x00e,0x001,0x001,0x001,0x00c,0x00c,0x001,0x00c,0x00c), // 16x16
+               array(0x012,0x012,0x010,0x010,0x012,0x012,0x010,0x010,0x001,0x001,0x001,0x012,0x00e,0x001,0x012,0x00e), // 18x18
+               array(0x014,0x014,0x012,0x012,0x014,0x014,0x012,0x012,0x001,0x001,0x001,0x016,0x012,0x001,0x016,0x012), // 20x20
+               array(0x016,0x016,0x014,0x014,0x016,0x016,0x014,0x014,0x001,0x001,0x001,0x01e,0x014,0x001,0x01e,0x014), // 22x22
+               array(0x018,0x018,0x016,0x016,0x018,0x018,0x016,0x016,0x001,0x001,0x001,0x024,0x018,0x001,0x024,0x018), // 24x24
+               array(0x01a,0x01a,0x018,0x018,0x01a,0x01a,0x018,0x018,0x001,0x001,0x001,0x02c,0x01c,0x001,0x02c,0x01c), // 26x26
+               array(0x020,0x020,0x01c,0x01c,0x010,0x010,0x00e,0x00e,0x002,0x002,0x004,0x03e,0x024,0x001,0x03e,0x024), // 32x32
+               array(0x024,0x024,0x020,0x020,0x012,0x012,0x010,0x010,0x002,0x002,0x004,0x056,0x02a,0x001,0x056,0x02a), // 36x36
+               array(0x028,0x028,0x024,0x024,0x014,0x014,0x012,0x012,0x002,0x002,0x004,0x072,0x030,0x001,0x072,0x030), // 40x40
+               array(0x02c,0x02c,0x028,0x028,0x016,0x016,0x014,0x014,0x002,0x002,0x004,0x090,0x038,0x001,0x090,0x038), // 44x44
+               array(0x030,0x030,0x02c,0x02c,0x018,0x018,0x016,0x016,0x002,0x002,0x004,0x0ae,0x044,0x001,0x0ae,0x044), // 48x48
+               array(0x034,0x034,0x030,0x030,0x01a,0x01a,0x018,0x018,0x002,0x002,0x004,0x0cc,0x054,0x002,0x066,0x02a), // 52x52
+               array(0x040,0x040,0x038,0x038,0x010,0x010,0x00e,0x00e,0x004,0x004,0x010,0x118,0x070,0x002,0x08c,0x038), // 64x64
+               array(0x048,0x048,0x040,0x040,0x012,0x012,0x010,0x010,0x004,0x004,0x010,0x170,0x090,0x004,0x05c,0x024), // 72x72
+               array(0x050,0x050,0x048,0x048,0x014,0x014,0x012,0x012,0x004,0x004,0x010,0x1c8,0x0c0,0x004,0x072,0x030), // 80x80
+               array(0x058,0x058,0x050,0x050,0x016,0x016,0x014,0x014,0x004,0x004,0x010,0x240,0x0e0,0x004,0x090,0x038), // 88x88
+               array(0x060,0x060,0x058,0x058,0x018,0x018,0x016,0x016,0x004,0x004,0x010,0x2b8,0x110,0x004,0x0ae,0x044), // 96x96
+               array(0x068,0x068,0x060,0x060,0x01a,0x01a,0x018,0x018,0x004,0x004,0x010,0x330,0x150,0x006,0x088,0x038), // 104x104
+               array(0x078,0x078,0x06c,0x06c,0x014,0x014,0x012,0x012,0x006,0x006,0x024,0x41a,0x198,0x006,0x0af,0x044), // 120x120
+               array(0x084,0x084,0x078,0x078,0x016,0x016,0x014,0x014,0x006,0x006,0x024,0x518,0x1f0,0x008,0x0a3,0x03e), // 132x132
+               array(0x090,0x090,0x084,0x084,0x018,0x018,0x016,0x016,0x006,0x006,0x024,0x616,0x26c,0x00a,0x09c,0x03e), // 144x144
+               // rectangular form (currently unused) ---------------------------------------------------------------------------
+               array(0x008,0x012,0x006,0x010,0x008,0x012,0x006,0x010,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 8x18
+               array(0x008,0x020,0x006,0x01c,0x008,0x010,0x006,0x00e,0x001,0x002,0x002,0x00a,0x00b,0x001,0x00a,0x00b), // 8x32
+               array(0x00c,0x01a,0x00a,0x018,0x00c,0x01a,0x00a,0x018,0x001,0x001,0x001,0x010,0x00e,0x001,0x010,0x00e), // 12x26
+               array(0x00c,0x024,0x00a,0x020,0x00c,0x012,0x00a,0x010,0x001,0x002,0x002,0x00c,0x012,0x001,0x00c,0x012), // 12x36
+               array(0x010,0x024,0x00e,0x020,0x010,0x012,0x00e,0x010,0x001,0x002,0x002,0x020,0x018,0x001,0x020,0x018), // 16x36
+               array(0x010,0x030,0x00e,0x02c,0x010,0x018,0x00e,0x016,0x001,0x002,0x002,0x031,0x01c,0x001,0x031,0x01c)  // 16x48
+       );
+
+       /**
+        * Map encodation modes whit character sets.
+        * @protected
+        */
+       protected $chset_id = array(ENC_C40 => 'C40', ENC_TXT => 'TXT', ENC_X12 =>'X12');
+
+       /**
+        * Basic set of characters for each encodation mode.
+        * @protected
+        */
+       protected $chset = array(
+               'C40' => array( // Basic set for C40 ----------------------------------------------------------------------------
+                       'S1'=>0x00,'S2'=>0x01,'S3'=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, //
+                       0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x41=>0x0e,0x42=>0x0f,0x43=>0x10,0x44=>0x11,0x45=>0x12,0x46=>0x13, //
+                       0x47=>0x14,0x48=>0x15,0x49=>0x16,0x4a=>0x17,0x4b=>0x18,0x4c=>0x19,0x4d=>0x1a,0x4e=>0x1b,0x4f=>0x1c,0x50=>0x1d, //
+                       0x51=>0x1e,0x52=>0x1f,0x53=>0x20,0x54=>0x21,0x55=>0x22,0x56=>0x23,0x57=>0x24,0x58=>0x25,0x59=>0x26,0x5a=>0x27),//
+               'TXT' => array( // Basic set for TEXT ---------------------------------------------------------------------------
+                       'S1'=>0x00,'S2'=>0x01,'S3'=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, //
+                       0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x61=>0x0e,0x62=>0x0f,0x63=>0x10,0x64=>0x11,0x65=>0x12,0x66=>0x13, //
+                       0x67=>0x14,0x68=>0x15,0x69=>0x16,0x6a=>0x17,0x6b=>0x18,0x6c=>0x19,0x6d=>0x1a,0x6e=>0x1b,0x6f=>0x1c,0x70=>0x1d, //
+                       0x71=>0x1e,0x72=>0x1f,0x73=>0x20,0x74=>0x21,0x75=>0x22,0x76=>0x23,0x77=>0x24,0x78=>0x25,0x79=>0x26,0x7a=>0x27),//
+               'SH1' => array( // Shift 1 set ----------------------------------------------------------------------------------
+                       0x00=>0x00,0x01=>0x01,0x02=>0x02,0x03=>0x03,0x04=>0x04,0x05=>0x05,0x06=>0x06,0x07=>0x07,0x08=>0x08,0x09=>0x09, //
+                       0x0a=>0x0a,0x0b=>0x0b,0x0c=>0x0c,0x0d=>0x0d,0x0e=>0x0e,0x0f=>0x0f,0x10=>0x10,0x11=>0x11,0x12=>0x12,0x13=>0x13, //
+                       0x14=>0x14,0x15=>0x15,0x16=>0x16,0x17=>0x17,0x18=>0x18,0x19=>0x19,0x1a=>0x1a,0x1b=>0x1b,0x1c=>0x1c,0x1d=>0x1d, //
+                       0x1e=>0x1e,0x1f=>0x1f),                                                                                        //
+               'SH2' => array( // Shift 2 set ----------------------------------------------------------------------------------
+                       0x21=>0x00,0x22=>0x01,0x23=>0x02,0x24=>0x03,0x25=>0x04,0x26=>0x05,0x27=>0x06,0x28=>0x07,0x29=>0x08,0x2a=>0x09, //
+                       0x2b=>0x0a,0x2c=>0x0b,0x2d=>0x0c,0x2e=>0x0d,0x2f=>0x0e,0x3a=>0x0f,0x3b=>0x10,0x3c=>0x11,0x3d=>0x12,0x3e=>0x13, //
+                       0x3f=>0x14,0x40=>0x15,0x5b=>0x16,0x5c=>0x17,0x5d=>0x18,0x5e=>0x19,0x5f=>0x1a,'F1'=>0x1b,'US'=>0x1e),           //
+               'S3C' => array( // Shift 3 set for C40 --------------------------------------------------------------------------
+                       0x60=>0x00,0x61=>0x01,0x62=>0x02,0x63=>0x03,0x64=>0x04,0x65=>0x05,0x66=>0x06,0x67=>0x07,0x68=>0x08,0x69=>0x09, //
+                       0x6a=>0x0a,0x6b=>0x0b,0x6c=>0x0c,0x6d=>0x0d,0x6e=>0x0e,0x6f=>0x0f,0x70=>0x10,0x71=>0x11,0x72=>0x12,0x73=>0x13, //
+                       0x74=>0x14,0x75=>0x15,0x76=>0x16,0x77=>0x17,0x78=>0x18,0x79=>0x19,0x7a=>0x1a,0x7b=>0x1b,0x7c=>0x1c,0x7d=>0x1d, //
+                       0x7e=>0x1e,0x7f=>0x1f),
+               'S3T' => array( // Shift 3 set for TEXT -------------------------------------------------------------------------
+                       0x60=>0x00,0x41=>0x01,0x42=>0x02,0x43=>0x03,0x44=>0x04,0x45=>0x05,0x46=>0x06,0x47=>0x07,0x48=>0x08,0x49=>0x09, //
+                       0x4a=>0x0a,0x4b=>0x0b,0x4c=>0x0c,0x4d=>0x0d,0x4e=>0x0e,0x4f=>0x0f,0x50=>0x10,0x51=>0x11,0x52=>0x12,0x53=>0x13, //
+                       0x54=>0x14,0x55=>0x15,0x56=>0x16,0x57=>0x17,0x58=>0x18,0x59=>0x19,0x5a=>0x1a,0x7b=>0x1b,0x7c=>0x1c,0x7d=>0x1d, //
+                       0x7e=>0x1e,0x7f=>0x1f),                                                                                        //
+               'X12' => array( // Set for X12 ----------------------------------------------------------------------------------
+                       0x0d=>0x00,0x2a=>0x01,0x3e=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, //
+                       0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x41=>0x0e,0x42=>0x0f,0x43=>0x10,0x44=>0x11,0x45=>0x12,0x46=>0x13, //
+                       0x47=>0x14,0x48=>0x15,0x49=>0x16,0x4a=>0x17,0x4b=>0x18,0x4c=>0x19,0x4d=>0x1a,0x4e=>0x1b,0x4f=>0x1c,0x50=>0x1d, //
+                       0x51=>0x1e,0x52=>0x1f,0x53=>0x20,0x54=>0x21,0x55=>0x22,0x56=>0x23,0x57=>0x24,0x58=>0x25,0x59=>0x26,0x5a=>0x27) //
+               );
+
+// -----------------------------------------------------------------------------
+
+       /**
+        * This is the class constructor.
+        * Creates a datamatrix object
+        * @param $code (string) Code to represent using Datamatrix.
+        * @public
+        */
+       public function __construct($code) {
+               $barcode_array = array();
+               if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
+                       return false;
+               }
+               // get data codewords
+               $cw = $this->getHighLevelEncoding($code);
+               // number of data codewords
+               $nd = count($cw);
+               // check size
+               if ($nd > 1558) {
+                       return false;
+               }
+               // get minimum required matrix size.
+               foreach ($this->symbattr as $params) {
+                       if ($params[11] >= $nd) {
+                               break;
+                       }
+               }
+               if ($params[11] < $nd) {
+                       // too much data
+                       return false;
+               } elseif ($params[11] > $nd) {
+                       // add padding
+                       if ((($params[11] - $nd) > 1) AND ($cw[($nd - 1)] != 254)) {
+                               if ($this->last_enc == ENC_EDF) {
+                                       // switch to ASCII encoding
+                                       $cw[] = 124;
+                                       ++$nd;
+                               } elseif (($this->last_enc != ENC_ASCII) AND ($this->last_enc != ENC_BASE256)) {
+                                       // switch to ASCII encoding
+                                       $cw[] = 254;
+                                       ++$nd;
+                               }
+                       }
+                       if ($params[11] > $nd) {
+                               // add first pad
+                               $cw[] = 129;
+                               ++$nd;
+                               // add remaining pads
+                               for ($i = $nd; $i < $params[11]; ++$i) {
+                                       $cw[] = $this->get253StateCodeword(129, $i);
+                               }
+                       }
+               }
+               // add error correction codewords
+               $cw = $this->getErrorCorrection($cw, $params[13], $params[14], $params[15]);
+               // initialize empty arrays
+               $grid = array_fill(0, ($params[2] * $params[3]), 0);
+               // get placement map
+               $places = $this->getPlacementMap($params[2], $params[3]);
+               // fill the grid with data
+               $grid = array();
+               $i = 0;
+               // region data row max index
+               $rdri = ($params[4] - 1);
+               // region data column max index
+               $rdci = ($params[5] - 1);
+               // for each vertical region
+               for ($vr = 0; $vr < $params[9]; ++$vr) {
+                       // for each row on region
+                       for ($r = 0; $r < $params[4]; ++$r) {
+                               // get row
+                               $row = (($vr * $params[4]) + $r);
+                               // for each horizontal region
+                               for ($hr = 0; $hr < $params[8]; ++$hr) {
+                                       // for each column on region
+                                       for ($c = 0; $c < $params[5]; ++$c) {
+                                               // get column
+                                               $col = (($hr * $params[5]) + $c);
+                                               // braw bits by case
+                                               if ($r == 0) {
+                                                       // top finder pattern
+                                                       if ($c % 2) {
+                                                               $grid[$row][$col] = 0;
+                                                       } else {
+                                                               $grid[$row][$col] = 1;
+                                                       }
+                                               } elseif ($r == $rdri) {
+                                                       // bottom finder pattern
+                                                       $grid[$row][$col] = 1;
+                                               } elseif ($c == 0) {
+                                                       // left finder pattern
+                                                       $grid[$row][$col] = 1;
+                                               } elseif ($c == $rdci) {
+                                                       // right finder pattern
+                                                       if ($r % 2) {
+                                                               $grid[$row][$col] = 1;
+                                                       } else {
+                                                               $grid[$row][$col] = 0;
+                                                       }
+                                               } else { // data bit
+                                                       if ($places[$i] < 2) {
+                                                               $grid[$row][$col] = $places[$i];
+                                                       } else {
+                                                               // codeword ID
+                                                               $cw_id = (floor($places[$i] / 10) - 1);
+                                                               // codeword BIT mask
+                                                               $cw_bit = pow(2, (8 - ($places[$i] % 10)));
+                                                               $grid[$row][$col] = (($cw[$cw_id] & $cw_bit) == 0) ? 0 : 1;
+                                                       }
+                                                       ++$i;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               $this->barcode_array['num_rows'] = $params[0];
+               $this->barcode_array['num_cols'] = $params[1];
+               $this->barcode_array['bcode'] = $grid;
+       }
+
+       /**
+        * Returns a barcode array which is readable by TCPDF
+        * @return array barcode array readable by TCPDF;
+        * @public
+        */
+       public function getBarcodeArray() {
+               return $this->barcode_array;
+       }
+
+       /**
+        * Product of two numbers in a Power-of-Two Galois Field
+        * @param $a (int) first number to multiply.
+        * @param $b (int) second number to multiply.
+        * @param $log (array) Log table.
+        * @param $alog (array) Anti-Log table.
+        * @param $gf (array) Number of Factors of the Reed-Solomon polynomial.
+        * @return int product
+        * @protected
+        */
+       protected function getGFProduct($a, $b, $log, $alog, $gf) {
+               if (($a == 0) OR ($b == 0)) {
+                       return 0;
+               }
+               return ($alog[($log[$a] + $log[$b]) % ($gf - 1)]);
+       }
+
+       /**
+        * Add error correction codewords to data codewords array (ANNEX E).
+        * @param $wd (array) Array of datacodewords.
+        * @param $nb (int) Number of blocks.
+        * @param $nd (int) Number of data codewords per block.
+        * @param $nc (int) Number of correction codewords per block.
+        * @param $gf (int) numner of fields on log/antilog table (power of 2).
+        * @param $pp (int) The value of its prime modulus polynomial (301 for ECC200).
+        * @return array data codewords + error codewords
+        * @protected
+        */
+       protected function getErrorCorrection($wd, $nb, $nd, $nc, $gf=256, $pp=301) {
+               // generate the log ($log) and antilog ($alog) tables
+               $log[0] = 0;
+               $alog[0] = 1;
+               for ($i = 1; $i < $gf; ++$i) {
+                       $alog[$i] = ($alog[($i - 1)] * 2);
+                       if ($alog[$i] >= $gf) {
+                               $alog[$i] ^= $pp;
+                       }
+                       $log[$alog[$i]] = $i;
+               }
+               ksort($log);
+               // generate the polynomial coefficients (c)
+               $c = array_fill(0, ($nc + 1), 0);
+               $c[0] = 1;
+               for ($i = 1; $i <= $nc; ++$i) {
+                       $c[$i] = $c[($i-1)];
+                       for ($j = ($i - 1); $j >= 1; --$j) {
+                               $c[$j] = $c[($j - 1)] ^ $this->getGFProduct($c[$j], $alog[$i], $log, $alog, $gf);
+                       }
+                       $c[0] = $this->getGFProduct($c[0], $alog[$i], $log, $alog, $gf);
+               }
+               ksort($c);
+               // total number of data codewords
+               $num_wd = ($nb * $nd);
+               // total number of error codewords
+               $num_we = ($nb * $nc);
+               // for each block
+               for ($b = 0; $b < $nb; ++$b) {
+                       // create interleaved data block
+                       $block = array();
+                       for ($n = $b; $n < $num_wd; $n += $nb) {
+                               $block[] = $wd[$n];
+                       }
+                       // initialize error codewords
+                       $we = array_fill(0, ($nc + 1), 0);
+                       // calculate error correction codewords for this block
+                       for ($i = 0; $i < $nd; ++$i) {
+                               $k = ($we[0] ^ $block[$i]);
+                               for ($j = 0; $j < $nc; ++$j) {
+                                       $we[$j] = ($we[($j + 1)] ^ $this->getGFProduct($k, $c[($nc - $j - 1)], $log, $alog, $gf));
+                               }
+                       }
+                       // add error codewords at the end of data codewords
+                       $j = 0;
+                       for ($i = $b; $i < $num_we; $i += $nb) {
+                               $wd[($num_wd + $i)] = $we[$j];
+                               ++$j;
+                       }
+               }
+               // reorder codewords
+               ksort($wd);
+               return $wd;
+       }
+
+       /**
+        * Return the 253-state codeword
+        * @param $cwpad (int) Pad codeword.
+        * @param $cwpos (int) Number of data codewords from the beginning of encoded data.
+        * @return pad codeword
+        * @protected
+        */
+       protected function get253StateCodeword($cwpad, $cwpos) {
+               $pad = ($cwpad + (((149 * $cwpos) % 253) + 1));
+               if ($pad > 254) {
+                       $pad -= 254;
+               }
+               return $pad;
+       }
+
+       /**
+        * Return the 255-state codeword
+        * @param $cwpad (int) Pad codeword.
+        * @param $cwpos (int) Number of data codewords from the beginning of encoded data.
+        * @return pad codeword
+        * @protected
+        */
+       protected function get255StateCodeword($cwpad, $cwpos) {
+               $pad = ($cwpad + (((149 * $cwpos) % 255) + 1));
+               if ($pad > 255) {
+                       $pad -= 256;
+               }
+               return $pad;
+       }
+
+       /**
+        * Returns true if the char belongs to the selected mode
+        * @param $chr (int) Character (byte) to check.
+        * @param $mode (int) Current encoding mode.
+        * @return boolean true if the char is of the selected mode.
+        * @protected
+        */
+       protected function isCharMode($chr, $mode) {
+               $status = false;
+               switch ($mode) {
+                       case ENC_ASCII: { // ASCII character 0 to 127
+                               $status = (($chr >= 0) AND ($chr <= 127));
+                               break;
+                       }
+                       case ENC_C40: { // Upper-case alphanumeric
+                               $status = (($chr == 32) OR (($chr >= 48) AND ($chr <= 57)) OR (($chr >= 65) AND ($chr <= 90)));
+                               break;
+                       }
+                       case ENC_TXT: { // Lower-case alphanumeric
+                               $status = (($chr == 32) OR (($chr >= 48) AND ($chr <= 57)) OR (($chr >= 97) AND ($chr <= 122)));
+                               break;
+                       }
+                       case ENC_X12: { // ANSI X12
+                               $status = (($chr == 13) OR ($chr == 42) OR ($chr == 62));
+                               break;
+                       }
+                       case ENC_EDF: { // ASCII character 32 to 94
+                               $status = (($chr >= 32) AND ($chr <= 94));
+                               break;
+                       }
+                       case ENC_BASE256: { // Function character (FNC1, Structured Append, Reader Program, or Code Page)
+                               $status = (($chr == 232) OR ($chr == 233) OR ($chr == 234) OR ($chr == 241));
+                               break;
+                       }
+                       case ENC_ASCII_EXT: { // ASCII character 128 to 255
+                               $status = (($chr >= 128) AND ($chr <= 255));
+                               break;
+                       }
+                       case ENC_ASCII_NUM: { // ASCII digits
+                               $status = (($chr >= 48) AND ($chr <= 57));
+                               break;
+                       }
+               }
+               return $status;
+       }
+
+       /**
+        * The look-ahead test scans the data to be encoded to find the best mode (Annex P - steps from J to S).
+        * @param $data (string) data to encode
+        * @param $pos (int) current position
+        * @param $mode (int) current encoding mode
+        * @return int encoding mode
+        * @protected
+        */
+       protected function lookAheadTest($data, $pos, $mode) {
+               $data_length = strlen($data);
+               if ($pos >= $data_length) {
+                       return $mode;
+               }
+               $charscount = 0; // count processed chars
+               // STEP J
+               if ($mode == ENC_ASCII) {
+                       $numch = array(0, 1, 1, 1, 1, 1.25);
+               } else {
+                       $numch = array(1, 2, 2, 2, 2, 2.25);
+                       $numch[$mode] = 0;
+               }
+               while (true) {
+                       // STEP K
+                       if (($pos + $charscount) == $data_length) {
+                               if ($numch[ENC_ASCII] <= ceil(min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256]))) {
+                                       return ENC_ASCII;
+                               }
+                               if ($numch[ENC_BASE256] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF]))) {
+                                       return ENC_BASE256;
+                               }
+                               if ($numch[ENC_EDF] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_BASE256]))) {
+                                       return ENC_EDF;
+                               }
+                               if ($numch[ENC_TXT] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256]))) {
+                                       return ENC_TXT;
+                               }
+                               if ($numch[ENC_X12] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256]))) {
+                                       return ENC_X12;
+                               }
+                               return ENC_C40;
+                       }
+                       // get char
+                       $chr = ord($data[$pos + $charscount]);
+                       $charscount++;
+                       // STEP L
+                       if ($this->isCharMode($chr, ENC_ASCII_NUM)) {
+                               $numch[ENC_ASCII] += (1 / 2);
+                       } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) {
+                               $numch[ENC_ASCII] = ceil($numch[ENC_ASCII]);
+                               $numch[ENC_ASCII] += 2;
+                       } else {
+                               $numch[ENC_ASCII] = ceil($numch[ENC_ASCII]);
+                               $numch[ENC_ASCII] += 1;
+                       }
+                       // STEP M
+                       if ($this->isCharMode($chr, ENC_C40)) {
+                               $numch[ENC_C40] += (2 / 3);
+                       } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) {
+                               $numch[ENC_C40] += (8 / 3);
+                       } else {
+                               $numch[ENC_C40] += (4 / 3);
+                       }
+                       // STEP N
+                       if ($this->isCharMode($chr, ENC_TXT)) {
+                               $numch[ENC_TXT] += (2 / 3);
+                       } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) {
+                               $numch[ENC_TXT] += (8 / 3);
+                       } else {
+                               $numch[ENC_TXT] += (4 / 3);
+                       }
+                       // STEP O
+                       if ($this->isCharMode($chr, ENC_X12) OR $this->isCharMode($chr, ENC_C40)) {
+                               $numch[ENC_X12] += (2 / 3);
+                       } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) {
+                               $numch[ENC_X12] += (13 / 3);
+                       } else {
+                               $numch[ENC_X12] += (10 / 3);
+                       }
+                       // STEP P
+                       if ($this->isCharMode($chr, ENC_EDF)) {
+                               $numch[ENC_EDF] += (3 / 4);
+                       } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) {
+                               $numch[ENC_EDF] += (17 / 4);
+                       } else {
+                               $numch[ENC_EDF] += (13 / 4);
+                       }
+                       // STEP Q
+                       if ($this->isCharMode($chr, ENC_BASE256)) {
+                               $numch[ENC_BASE256] += 4;
+                       } else {
+                               $numch[ENC_BASE256] += 1;
+                       }
+                       // STEP R
+                       if ($charscount >= 4) {
+                               if (($numch[ENC_ASCII] + 1) <= min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256])) {
+                                       return ENC_ASCII;
+                               }
+                               if ((($numch[ENC_BASE256] + 1) <= $numch[ENC_ASCII])
+                                       OR (($numch[ENC_BASE256] + 1) < min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF]))) {
+                                       return ENC_BASE256;
+                               }
+                               if (($numch[ENC_EDF] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_BASE256])) {
+                                       return ENC_EDF;
+                               }
+                               if (($numch[ENC_TXT] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256])) {
+                                       return ENC_TXT;
+                               }
+                               if (($numch[ENC_X12] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256])) {
+                                       return ENC_X12;
+                               }
+                               if (($numch[ENC_C40] + 1) < min($numch[ENC_ASCII], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256])) {
+                                       if ($numch[ENC_C40] < $numch[ENC_X12]) {
+                                               return ENC_C40;
+                                       }
+                                       if ($numch[ENC_C40] == $numch[ENC_X12]) {
+                                               $k = ($pos + $charscount + 1);
+                                               while ($k < $data_length) {
+                                                       $tmpchr = ord($data{$k});
+                                                       if ($this->isCharMode($tmpchr, ENC_X12)) {
+                                                               return ENC_X12;
+                                                       } elseif (!($this->isCharMode($tmpchr, ENC_X12) OR $this->isCharMode($tmpchr, ENC_C40))) {
+                                                               break;
+                                                       }
+                                                       ++$k;
+                                               }
+                                               return ENC_C40;
+                                       }
+                               }
+                       }
+               } // end of while
+       }
+
+       /**
+        * Get the switching codeword to a new encoding mode (latch codeword)
+        * @param $mode (int) New encoding mode.
+        * @return (int) Switch codeword.
+        * @protected
+        */
+       protected function getSwitchEncodingCodeword($mode) {
+               switch ($mode) {
+                       case ENC_ASCII: { // ASCII character 0 to 127
+                               $cw = 254;
+                               if ($this->last_enc == ENC_EDF) {
+                                       $cw = 124;
+                               }
+                               break;
+                       }
+                       case ENC_C40: { // Upper-case alphanumeric
+                               $cw = 230;
+                               break;
+                       }
+                       case ENC_TXT: { // Lower-case alphanumeric
+                               $cw = 239;
+                               break;
+                       }
+                       case ENC_X12: { // ANSI X12
+                               $cw = 238;
+                               break;
+                       }
+                       case ENC_EDF: { // ASCII character 32 to 94
+                               $cw = 240;
+                               break;
+                       }
+                       case ENC_BASE256: { // Function character (FNC1, Structured Append, Reader Program, or Code Page)
+                               $cw = 231;
+                               break;
+                       }
+               }
+               return $cw;
+       }
+
+       /**
+        * Choose the minimum matrix size and return the max number of data codewords.
+        * @param $numcw (int) Number of current codewords.
+        * @return number of data codewords in matrix
+        * @protected
+        */
+       protected function getMaxDataCodewords($numcw) {
+               foreach ($this->symbattr as $key => $matrix) {
+                       if ($matrix[11] >= $numcw) {
+                               return $matrix[11];
+                       }
+               }
+               return 0;
+       }
+
+       /**
+        * Get high level encoding using the minimum symbol data characters for ECC 200
+        * @param $data (string) data to encode
+        * @return array of codewords
+        * @protected
+        */
+       protected function getHighLevelEncoding($data) {
+               // STEP A. Start in ASCII encodation.
+               $enc = ENC_ASCII; // current encoding mode
+               $pos = 0; // current position
+               $cw = array(); // array of codewords to be returned
+               $cw_num = 0; // number of data codewords
+               $data_lenght = strlen($data); // number of chars
+               while ($pos < $data_lenght) {
+                       // set last used encoding
+                       $this->last_enc = $enc;
+                       switch ($enc) {
+                               case ENC_ASCII: { // STEP B. While in ASCII encodation
+                                       if (($data_lenght > 1) AND ($pos < ($data_lenght - 1)) AND ($this->isCharMode(ord($data[$pos]), ENC_ASCII_NUM) AND $this->isCharMode(ord($data[$pos + 1]), ENC_ASCII_NUM))) {
+                                               // 1. If the next data sequence is at least 2 consecutive digits, encode the next two digits as a double digit in ASCII mode.
+                                               $cw[] = (intval(substr($data, $pos, 2)) + 130);
+                                               ++$cw_num;
+                                               $pos += 2;
+                                       } else {
+                                               // 2. If the look-ahead test (starting at step J) indicates another mode, switch to that mode.
+                                               $newenc = $this->lookAheadTest($data, $pos, $enc);
+                                               if ($newenc != $enc) {
+                                                       // switch to new encoding
+                                                       $enc = $newenc;
+                                                       $cw[] = $this->getSwitchEncodingCodeword($enc);
+                                                       ++$cw_num;
+                                               } else {
+                                                       // get new byte
+                                                       $chr = ord($data[$pos]);
+                                                       ++$pos;
+                                                       if ($this->isCharMode($chr, ENC_ASCII_EXT)) {
+                                                               // 3. If the next data character is extended ASCII (greater than 127) encode it in ASCII mode first using the Upper Shift (value 235) character.
+                                                               $cw[] = 235;
+                                                               $cw[] = ($chr - 127);
+                                                               $cw_num += 2;
+                                                       } else {
+                                                               // 4. Otherwise process the next data character in ASCII encodation.
+                                                               $cw[] = ($chr + 1);
+                                                               ++$cw_num;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case ENC_C40 :   // Upper-case alphanumeric
+                               case ENC_TXT :   // Lower-case alphanumeric
+                               case ENC_X12 : { // ANSI X12
+                                       $temp_cw = array();
+                                       $p = 0;
+                                       $epos = $pos;
+                                       // get charset ID
+                                       $set_id = $this->chset_id[$enc];
+                                       // get basic charset for current encoding
+                                       $charset = $this->chset[$set_id];
+                                       do {
+                                               // 2. process the next character in C40 encodation.
+                                               $chr = ord($data[$epos]);
+                                               ++$epos;
+                                               // check for extended character
+                                               if ($chr & 0x80) {
+                                                       if ($enc == ENC_X12) {
+                                                               return false;
+                                                       }
+                                                       $chr = ($chr & 0x7f);
+                                                       $temp_cw[] = 1; // shift 2
+                                                       $temp_cw[] = 30; // upper shift
+                                                       $p += 2;
+                                               }
+                                               if (isset($charset[$chr])) {
+                                                       $temp_cw[] = $charset[$chr];
+                                                       ++$p;
+                                               } else {
+                                                       if (isset($this->chset['SH1'][$chr])) {
+                                                               $temp_cw[] = 0; // shift 1
+                                                               $shiftset = $this->chset['SH1'];
+                                                       } elseif (isset($chr, $this->chset['SH2'][$chr])) {
+                                                               $temp_cw[] = 1; // shift 2
+                                                               $shiftset = $this->chset['SH2'];
+                                                       } elseif (($enc == ENC_C40) AND isset($this->chset['S3C'][$chr])) {
+                                                               $temp_cw[] = 2; // shift 3
+                                                               $shiftset = $this->chset['S3C'];
+                                                       } elseif (($enc == ENC_TXT) AND isset($this->chset['S3T'][$chr])) {
+                                                               $temp_cw[] = 2; // shift 3
+                                                               $shiftset = $this->chset['S3T'];
+                                                       } else {
+                                                               return false;
+                                                       }
+                                                       $temp_cw[] = $shiftset[$chr];
+                                                       $p += 2;
+                                               }
+                                               if ($p >= 3) {
+                                                       $c1 = array_shift($temp_cw);
+                                                       $c2 = array_shift($temp_cw);
+                                                       $c3 = array_shift($temp_cw);
+                                                       $p -= 3;
+                                                       $tmp = ((1600 * $c1) + (40 * $c2) + $c3 + 1);
+                                                       $cw[] = ($tmp >> 8);
+                                                       $cw[] = ($tmp % 256);
+                                                       $cw_num += 2;
+                                                       $pos = $epos;
+                                                       // 1. If the C40 encoding is at the point of starting a new double symbol character and if the look-ahead test (starting at step J) indicates another mode, switch to that mode.
+                                                       $newenc = $this->lookAheadTest($data, $pos, $enc);
+                                                       if ($newenc != $enc) {
+                                                               // switch to new encoding
+                                                               $enc = $newenc;
+                                                               if ($enc != ENC_ASCII) {
+                                                                       // set unlatch character
+                                                                       $cw[] = $this->getSwitchEncodingCodeword(ENC_ASCII);
+                                                                       ++$cw_num;
+                                                               }
+                                                               $cw[] = $this->getSwitchEncodingCodeword($enc);
+                                                               ++$cw_num;
+                                                               $pos -= $p;
+                                                               $p = 0;
+                                                               break;
+                                                       }
+                                               }
+                                       } while (($p > 0) AND ($epos < $data_lenght));
+                                       // process last data (if any)
+                                       if ($p > 0) {
+                                               // get remaining number of data symbols
+                                               $cwr = ($this->getMaxDataCodewords($cw_num) - $cw_num);
+                                               if (($cwr == 1) AND ($p == 1)) {
+                                                       // d. If one symbol character remains and one C40 value (data character) remains to be encoded
+                                                       $c1 = array_shift($temp_cw);
+                                                       --$p;
+                                                       $cw[] = ($chr + 1);
+                                                       ++$cw_num;
+                                                       $pos = $epos;
+                                                       $enc = ENC_ASCII;
+                                                       $this->last_enc = $enc;
+                                               } elseif (($cwr == 2) AND ($p == 1)) {
+                                                       // c. If two symbol characters remain and only one C40 value (data character) remains to be encoded
+                                                       $c1 = array_shift($temp_cw);
+                                                       --$p;
+                                                       $cw[] = 254;
+                                                       $cw[] = ($chr + 1);
+                                                       $cw_num += 2;
+                                                       $pos = $epos;
+                                                       $enc = ENC_ASCII;
+                                                       $this->last_enc = $enc;
+                                               } elseif (($cwr == 2) AND ($p == 2)) {
+                                                       // b. If two symbol characters remain and two C40 values remain to be encoded
+                                                       $c1 = array_shift($temp_cw);
+                                                       $c2 = array_shift($temp_cw);
+                                                       $p -= 2;
+                                                       $tmp = ((1600 * $c1) + (40 * $c2) + 1);
+                                                       $cw[] = ($tmp >> 8);
+                                                       $cw[] = ($tmp % 256);
+                                                       $cw_num += 2;
+                                                       $pos = $epos;
+                                                       $enc = ENC_ASCII;
+                                                       $this->last_enc = $enc;
+                                               } else {
+                                                       // switch to ASCII encoding
+                                                       if ($enc != ENC_ASCII) {
+                                                               $enc = ENC_ASCII;
+                                                               $this->last_enc = $enc;
+                                                               $cw[] = $this->getSwitchEncodingCodeword($enc);
+                                                               ++$cw_num;
+                                                               $pos = ($epos - $p);
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case ENC_EDF: { // F. While in EDIFACT (EDF) encodation
+                                       // initialize temporary array with 0 lenght
+                                       $temp_cw = array();
+                                       $epos = $pos;
+                                       $field_lenght = 0;
+                                       $newenc = $enc;
+                                       do {
+                                               // 2. process the next character in EDIFACT encodation.
+                                               $chr = ord($data[$epos]);
+                                               if ($this->isCharMode($chr, ENC_EDF)) {
+                                                       ++$epos;
+                                                       $temp_cw[] = $chr;
+                                                       ++$field_lenght;
+                                               }
+                                               if (($field_lenght == 4) OR ($epos == $data_lenght) OR !$this->isCharMode($chr, ENC_EDF)) {
+                                                       if (($epos == $data_lenght) AND ($field_lenght < 3)) {
+                                                               $enc = ENC_ASCII;
+                                                               $cw[] = $this->getSwitchEncodingCodeword($enc);
+                                                               ++$cw_num;
+                                                               break;
+                                                       }
+                                                       if ($field_lenght < 4) {
+                                                               // set unlatch character
+                                                               $temp_cw[] = 0x1f;
+                                                               ++$field_lenght;
+                                                               // fill empty characters
+                                                               for ($i = $field_lenght; $i < 4; ++$i) {
+                                                                       $temp_cw[] = 0;
+                                                               }
+                                                               $enc = ENC_ASCII;
+                                                               $this->last_enc = $enc;
+                                                       }
+                                                       // encodes four data characters in three codewords
+                                                       $tcw = (($temp_cw[0] & 0x3F) << 2) + (($temp_cw[1] & 0x30) >> 4);
+                                                       if ($tcw > 0) {
+                                                               $cw[] = $tcw;
+                                                               $cw_num++;
+                                                       }
+                                                       $tcw= (($temp_cw[1] & 0x0F) << 4) + (($temp_cw[2] & 0x3C) >> 2);
+                                                       if ($tcw > 0) {
+                                                               $cw[] = $tcw;
+                                                               $cw_num++;
+                                                       }
+                                                       $tcw = (($temp_cw[2] & 0x03) << 6) + ($temp_cw[3] & 0x3F);
+                                                       if ($tcw > 0) {
+                                                               $cw[] = $tcw;
+                                                               $cw_num++;
+                                                       }
+                                                       $temp_cw = array();
+                                                       $pos = $epos;
+                                                       $field_lenght = 0;
+                                                       if ($enc == ENC_ASCII) {
+                                                               break; // exit from EDIFACT mode
+                                                       }
+                                               }
+                                       } while ($epos < $data_lenght);
+                                       break;
+                               }
+                               case ENC_BASE256: { // G. While in Base 256 (B256) encodation
+                                       // initialize temporary array with 0 lenght
+                                       $temp_cw = array();
+                                       $field_lenght = 0;
+                                       while (($pos < $data_lenght) AND ($field_lenght <= 1555)) {
+                                               $newenc = $this->lookAheadTest($data, $pos, $enc);
+                                               if ($newenc != $enc) {
+                                                       // 1. If the look-ahead test (starting at step J) indicates another mode, switch to that mode.
+                                                       $enc = $newenc;
+                                                       break; // exit from B256 mode
+                                               } else {
+                                                       // 2. Otherwise, process the next character in Base 256 encodation.
+                                                       $chr = ord($data[$pos]);
+                                                       ++$pos;
+                                                       $temp_cw[] = $chr;
+                                                       ++$field_lenght;
+                                               }
+                                       }
+                                       // set field lenght
+                                       if ($field_lenght <= 249) {
+                                               $cw[] = $this->get255StateCodeword($field_lenght, ($cw_num + 1));
+                                               ++$cw_num;
+                                       } else {
+                                               $cw[] = $this->get255StateCodeword((floor($field_lenght / 250) + 249), ($cw_num + 1));
+                                               $cw[] = $this->get255StateCodeword(($field_lenght % 250), ($cw_num + 2));
+                                               $cw_num += 2;
+                                       }
+                                       if (!empty($temp_cw)) {
+                                               // add B256 field
+                                               foreach ($temp_cw as $p => $cht) {
+                                                       $cw[] = $this->get255StateCodeword($cht, ($cw_num + $p + 1));
+                                               }
+                                       }
+                                       break;
+                               }
+                       } // end of switch enc
+               } // end of while
+               return $cw;
+       }
+
+       /**
+        * Places "chr+bit" with appropriate wrapping within array[].
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $marr (array) Array of symbols.
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @param $row (int) Row number.
+        * @param $col (int) Column number.
+        * @param $chr (int) Char byte.
+        * @param $bit (int) Bit.
+        * @return array
+        * @protected
+        */
+       protected function placeModule($marr, $nrow, $ncol, $row, $col, $chr, $bit) {
+               if ($row < 0) {
+                       $row += $nrow;
+                       $col += (4 - (($nrow + 4) % 8));
+               }
+               if ($col < 0) {
+                       $col += $ncol;
+                       $row += (4 - (($ncol + 4) % 8));
+               }
+               $marr[(($row * $ncol) + $col)] = ((10 * $chr) + $bit);
+               return $marr;
+       }
+
+       /**
+        * Places the 8 bits of a utah-shaped symbol character.
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $marr (array) Array of symbols.
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @param $row (int) Row number.
+        * @param $col (int) Column number.
+        * @param $chr (int) Char byte.
+        * @return array
+        * @protected
+        */
+       protected function placeUtah($marr, $nrow, $ncol, $row, $col, $chr) {
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row-2, $col-2, $chr, 1);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row-2, $col-1, $chr, 2);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col-2, $chr, 3);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col-1, $chr, 4);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col,   $chr, 5);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row,   $col-2, $chr, 6);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row,   $col-1, $chr, 7);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $row,   $col,   $chr, 8);
+               return $marr;
+       }
+
+       /**
+        * Places the 8 bits of the first special corner case.
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $marr (array) Array of symbols.
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @param $chr (int) Char byte.
+        * @return array
+        * @protected
+        */
+       protected function placeCornerA($marr, $nrow, $ncol, $chr) {
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0,       $chr, 1);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 1,       $chr, 2);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 2,       $chr, 3);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-2, $chr, 4);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-1, $chr, 5);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 1,       $ncol-1, $chr, 6);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 2,       $ncol-1, $chr, 7);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 3,       $ncol-1, $chr, 8);
+               return $marr;
+       }
+
+       /**
+        * Places the 8 bits of the second special corner case.
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $marr (array) Array of symbols.
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @param $chr (int) Char byte.
+        * @return array
+        * @protected
+        */
+       protected function placeCornerB($marr, $nrow, $ncol, $chr) {
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-3, 0,       $chr, 1);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-2, 0,       $chr, 2);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0,       $chr, 3);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-4, $chr, 4);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-3, $chr, 5);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-2, $chr, 6);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-1, $chr, 7);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 1,       $ncol-1, $chr, 8);
+               return $marr;
+       }
+
+       /**
+        * Places the 8 bits of the third special corner case.
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $marr (array) Array of symbols.
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @param $chr (int) Char byte.
+        * @return array
+        * @protected
+        */
+       protected function placeCornerC($marr, $nrow, $ncol, $chr) {
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-3, 0,       $chr, 1);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-2, 0,       $chr, 2);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0,       $chr, 3);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-2, $chr, 4);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-1, $chr, 5);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 1,       $ncol-1, $chr, 6);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 2,       $ncol-1, $chr, 7);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 3,       $ncol-1, $chr, 8);
+               return $marr;
+       }
+
+       /**
+        * Places the 8 bits of the fourth special corner case.
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $marr (array) Array of symbols.
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @param $chr (int) Char byte.
+        * @return array
+        * @protected
+        */
+       protected function placeCornerD($marr, $nrow, $ncol, $chr) {
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0,       $chr, 1);
+               $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, $ncol-1, $chr, 2);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-3, $chr, 3);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-2, $chr, 4);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 0,       $ncol-1, $chr, 5);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 1,       $ncol-3, $chr, 6);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 1,       $ncol-2, $chr, 7);
+               $marr = $this->placeModule($marr, $nrow, $ncol, 1,       $ncol-1, $chr, 8);
+               return $marr;
+       }
+
+       /**
+        * Build a placement map.
+        * (Annex F - ECC 200 symbol character placement)
+        * @param $nrow (int) Number of rows.
+        * @param $ncol (int) Number of columns.
+        * @return array
+        * @protected
+        */
+       protected function getPlacementMap($nrow, $ncol) {
+               // initialize array with zeros
+               $marr = array_fill(0, ($nrow * $ncol), 0);
+               // set starting values
+               $chr = 1;
+               $row = 4;
+               $col = 0;
+               do {
+                       // repeatedly first check for one of the special corner cases, then
+                       if (($row == $nrow) AND ($col == 0)) {
+                               $marr = $this->placeCornerA($marr, $nrow, $ncol, $chr);
+                               ++$chr;
+                       }
+                       if (($row == ($nrow - 2)) AND ($col == 0) AND ($ncol % 4)) {
+                               $marr = $this->placeCornerB($marr, $nrow, $ncol, $chr);
+                               ++$chr;
+                       }
+                       if (($row == ($nrow - 2)) AND ($col == 0) AND (($ncol % 8) == 4)) {
+                               $marr = $this->placeCornerC($marr, $nrow, $ncol, $chr);
+                               ++$chr;
+                       }
+                       if (($row == ($nrow + 4)) AND ($col == 2) AND (!($ncol % 8))) {
+                               $marr = $this->placeCornerD($marr, $nrow, $ncol, $chr);
+                               ++$chr;
+                       }
+                       // sweep upward diagonally, inserting successive characters,
+                       do {
+                               if (($row < $nrow) AND ($col >= 0) AND (!$marr[(($row * $ncol) + $col)])) {
+                                       $marr = $this->placeUtah($marr, $nrow, $ncol, $row, $col, $chr);
+                                       ++$chr;
+                               }
+                               $row -= 2;
+                               $col += 2;
+                       } while (($row >= 0) AND ($col < $ncol));
+                       ++$row;
+                       $col += 3;
+                       // & then sweep downward diagonally, inserting successive characters,...
+                       do {
+                               if (($row >= 0) AND ($col < $ncol) AND (!$marr[(($row * $ncol) + $col)])) {
+                                       $marr = $this->placeUtah($marr, $nrow, $ncol, $row, $col, $chr);
+                                       ++$chr;
+                               }
+                               $row += 2;
+                               $col -= 2;
+                       } while (($row < $nrow) AND ($col >= 0));
+                       $row += 3;
+                       ++$col;
+                       // ... until the entire array is scanned
+               } while (($row < $nrow) OR ($col < $ncol));
+               // lastly, if the lower righthand corner is untouched, fill in fixed pattern
+               if (!$marr[(($nrow * $ncol) - 1)]) {
+                       $marr[(($nrow * $ncol) - 1)] = 1;
+                       $marr[(($nrow * $ncol) - $ncol - 2)] = 1;
+               }
+               return $marr;
+       }
+
+} // end DataMatrix class
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php
new file mode 100644 (file)
index 0000000..07b36b9
--- /dev/null
@@ -0,0 +1,996 @@
+<?php
+//============================================================+
+// File name   : pdf417.php
+// Version     : 1.0.005
+// Begin       : 2010-06-03
+// Last Update : 2014-04-25
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2010-2013  Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// DESCRIPTION :
+//
+// Class to create PDF417 barcode arrays for TCPDF class.
+// PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991.
+// It is one of the most popular 2D codes because of its ability to be read with slightly modified handheld laser or linear CCD scanners.
+// TECHNICAL DATA / FEATURES OF PDF417:
+//             Encodable Character Set:     All 128 ASCII Characters (including extended)
+//             Code Type:                   Continuous, Multi-Row
+//             Symbol Height:               3 - 90 Rows
+//             Symbol Width:                90X - 583X
+//             Bidirectional Decoding:      Yes
+//             Error Correction Characters: 2 - 512
+//             Maximum Data Characters:     1850 text, 2710 digits, 1108 bytes
+//
+//============================================================+
+
+/**
+ * @file
+ * Class to create PDF417 barcode arrays for TCPDF class.
+ * PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991.
+ * (requires PHP bcmath extension)
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.005
+ */
+
+// definitions
+if (!defined('PDF417DEFS')) {
+
+       /**
+        * Indicate that definitions for this class are set
+        */
+       define('PDF417DEFS', true);
+
+       // -----------------------------------------------------
+
+       /**
+        * Row height respect X dimension of single module
+        */
+       define('ROWHEIGHT', 4);
+
+       /**
+        * Horizontal quiet zone in modules
+        */
+       define('QUIETH', 2);
+
+       /**
+        * Vertical quiet zone in modules
+        */
+       define('QUIETV', 2);
+
+} // end of definitions
+
+// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
+
+/**
+ * @class PDF417
+ * Class to create PDF417 barcode arrays for TCPDF class.
+ * PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991.
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.003
+ */
+class PDF417 {
+
+       /**
+        * Barcode array to be returned which is readable by TCPDF.
+        * @protected
+        */
+       protected $barcode_array = array();
+
+       /**
+        * Start pattern.
+        * @protected
+        */
+       protected $start_pattern = '11111111010101000';
+
+       /**
+        * Stop pattern.
+        * @protected
+        */
+       protected $stop_pattern = '111111101000101001';
+
+       /**
+        * Array of text Compaction Sub-Modes (values 0xFB - 0xFF are used for submode changers).
+        * @protected
+        */
+       protected $textsubmodes = array(
+               array(0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x20,0xFD,0xFE,0xFF), // Alpha
+               array(0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x20,0xFD,0xFE,0xFF), // Lower
+               array(0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x26,0x0d,0x09,0x2c,0x3a,0x23,0x2d,0x2e,0x24,0x2f,0x2b,0x25,0x2a,0x3d,0x5e,0xFB,0x20,0xFD,0xFE,0xFF), // Mixed
+               array(0x3b,0x3c,0x3e,0x40,0x5b,0x5c,0x5d,0x5f,0x60,0x7e,0x21,0x0d,0x09,0x2c,0x3a,0x0a,0x2d,0x2e,0x24,0x2f,0x22,0x7c,0x2a,0x28,0x29,0x3f,0x7b,0x7d,0x27,0xFF) // Puntuaction
+       );
+
+       /**
+        * Array of switching codes for Text Compaction Sub-Modes.
+        * @protected
+        */
+       protected $textlatch = array(
+               '01' => array(27), '02' => array(28), '03' => array(28,25), //
+               '10' => array(28,28), '12' => array(28), '13' => array(28,25), //
+               '20' => array(28), '21' => array(27), '23' => array(25), //
+               '30' => array(29), '31' => array(29,27), '32' => array(29,28) //
+       );
+
+       /**
+        * Clusters of codewords (0, 3, 6)<br/>
+        * Values are hex equivalents of binary representation of bars (1 = bar, 0 = space).<br/>
+        * The codewords numbered from 900 to 928 have special meaning, some enable to switch between modes in order to optimise the code:<ul>
+        * <li>900 : Switch to "Text" mode</li>
+        * <li>901 : Switch to "Byte" mode</li>
+        * <li>902 : Switch to "Numeric" mode</li>
+        * <li>903 - 912 : Reserved</li>
+        * <li>913 : Switch to "Octet" only for the next codeword</li>
+        * <li>914 - 920 : Reserved</li>
+        * <li>921 : Initialization</li>
+        * <li>922 : Terminator codeword for Macro PDF control block</li>
+        * <li>923 : Sequence tag to identify the beginning of optional fields in the Macro PDF control block</li>
+        * <li>924 : Switch to "Byte" mode (If the total number of byte is multiple of 6)</li>
+        * <li>925 : Identifier for a user defined Extended Channel Interpretation (ECI)</li>
+        * <li>926 : Identifier for a general purpose ECI format</li>
+        * <li>927 : Identifier for an ECI of a character set or code page</li>
+        * <li>928 : Macro marker codeword to indicate the beginning of a Macro PDF Control Block</li>
+        * </ul>
+        * @protected
+        */
+       protected $clusters = array(
+               array( // cluster 0 -----------------------------------------------------------------------
+                       0x1d5c0,0x1eaf0,0x1f57c,0x1d4e0,0x1ea78,0x1f53e,0x1a8c0,0x1d470,0x1a860,0x15040, //  10
+                       0x1a830,0x15020,0x1adc0,0x1d6f0,0x1eb7c,0x1ace0,0x1d678,0x1eb3e,0x158c0,0x1ac70, //  20
+                       0x15860,0x15dc0,0x1aef0,0x1d77c,0x15ce0,0x1ae78,0x1d73e,0x15c70,0x1ae3c,0x15ef0, //  30
+                       0x1af7c,0x15e78,0x1af3e,0x15f7c,0x1f5fa,0x1d2e0,0x1e978,0x1f4be,0x1a4c0,0x1d270, //  40
+                       0x1e93c,0x1a460,0x1d238,0x14840,0x1a430,0x1d21c,0x14820,0x1a418,0x14810,0x1a6e0, //  50
+                       0x1d378,0x1e9be,0x14cc0,0x1a670,0x1d33c,0x14c60,0x1a638,0x1d31e,0x14c30,0x1a61c, //  60
+                       0x14ee0,0x1a778,0x1d3be,0x14e70,0x1a73c,0x14e38,0x1a71e,0x14f78,0x1a7be,0x14f3c, //  70
+                       0x14f1e,0x1a2c0,0x1d170,0x1e8bc,0x1a260,0x1d138,0x1e89e,0x14440,0x1a230,0x1d11c, //  80
+                       0x14420,0x1a218,0x14410,0x14408,0x146c0,0x1a370,0x1d1bc,0x14660,0x1a338,0x1d19e, //  90
+                       0x14630,0x1a31c,0x14618,0x1460c,0x14770,0x1a3bc,0x14738,0x1a39e,0x1471c,0x147bc, // 100
+                       0x1a160,0x1d0b8,0x1e85e,0x14240,0x1a130,0x1d09c,0x14220,0x1a118,0x1d08e,0x14210, // 110
+                       0x1a10c,0x14208,0x1a106,0x14360,0x1a1b8,0x1d0de,0x14330,0x1a19c,0x14318,0x1a18e, // 120
+                       0x1430c,0x14306,0x1a1de,0x1438e,0x14140,0x1a0b0,0x1d05c,0x14120,0x1a098,0x1d04e, // 130
+                       0x14110,0x1a08c,0x14108,0x1a086,0x14104,0x141b0,0x14198,0x1418c,0x140a0,0x1d02e, // 140
+                       0x1a04c,0x1a046,0x14082,0x1cae0,0x1e578,0x1f2be,0x194c0,0x1ca70,0x1e53c,0x19460, // 150
+                       0x1ca38,0x1e51e,0x12840,0x19430,0x12820,0x196e0,0x1cb78,0x1e5be,0x12cc0,0x19670, // 160
+                       0x1cb3c,0x12c60,0x19638,0x12c30,0x12c18,0x12ee0,0x19778,0x1cbbe,0x12e70,0x1973c, // 170
+                       0x12e38,0x12e1c,0x12f78,0x197be,0x12f3c,0x12fbe,0x1dac0,0x1ed70,0x1f6bc,0x1da60, // 180
+                       0x1ed38,0x1f69e,0x1b440,0x1da30,0x1ed1c,0x1b420,0x1da18,0x1ed0e,0x1b410,0x1da0c, // 190
+                       0x192c0,0x1c970,0x1e4bc,0x1b6c0,0x19260,0x1c938,0x1e49e,0x1b660,0x1db38,0x1ed9e, // 200
+                       0x16c40,0x12420,0x19218,0x1c90e,0x16c20,0x1b618,0x16c10,0x126c0,0x19370,0x1c9bc, // 210
+                       0x16ec0,0x12660,0x19338,0x1c99e,0x16e60,0x1b738,0x1db9e,0x16e30,0x12618,0x16e18, // 220
+                       0x12770,0x193bc,0x16f70,0x12738,0x1939e,0x16f38,0x1b79e,0x16f1c,0x127bc,0x16fbc, // 230
+                       0x1279e,0x16f9e,0x1d960,0x1ecb8,0x1f65e,0x1b240,0x1d930,0x1ec9c,0x1b220,0x1d918, // 240
+                       0x1ec8e,0x1b210,0x1d90c,0x1b208,0x1b204,0x19160,0x1c8b8,0x1e45e,0x1b360,0x19130, // 250
+                       0x1c89c,0x16640,0x12220,0x1d99c,0x1c88e,0x16620,0x12210,0x1910c,0x16610,0x1b30c, // 260
+                       0x19106,0x12204,0x12360,0x191b8,0x1c8de,0x16760,0x12330,0x1919c,0x16730,0x1b39c, // 270
+                       0x1918e,0x16718,0x1230c,0x12306,0x123b8,0x191de,0x167b8,0x1239c,0x1679c,0x1238e, // 280
+                       0x1678e,0x167de,0x1b140,0x1d8b0,0x1ec5c,0x1b120,0x1d898,0x1ec4e,0x1b110,0x1d88c, // 290
+                       0x1b108,0x1d886,0x1b104,0x1b102,0x12140,0x190b0,0x1c85c,0x16340,0x12120,0x19098, // 300
+                       0x1c84e,0x16320,0x1b198,0x1d8ce,0x16310,0x12108,0x19086,0x16308,0x1b186,0x16304, // 310
+                       0x121b0,0x190dc,0x163b0,0x12198,0x190ce,0x16398,0x1b1ce,0x1638c,0x12186,0x16386, // 320
+                       0x163dc,0x163ce,0x1b0a0,0x1d858,0x1ec2e,0x1b090,0x1d84c,0x1b088,0x1d846,0x1b084, // 330
+                       0x1b082,0x120a0,0x19058,0x1c82e,0x161a0,0x12090,0x1904c,0x16190,0x1b0cc,0x19046, // 340
+                       0x16188,0x12084,0x16184,0x12082,0x120d8,0x161d8,0x161cc,0x161c6,0x1d82c,0x1d826, // 350
+                       0x1b042,0x1902c,0x12048,0x160c8,0x160c4,0x160c2,0x18ac0,0x1c570,0x1e2bc,0x18a60, // 360
+                       0x1c538,0x11440,0x18a30,0x1c51c,0x11420,0x18a18,0x11410,0x11408,0x116c0,0x18b70, // 370
+                       0x1c5bc,0x11660,0x18b38,0x1c59e,0x11630,0x18b1c,0x11618,0x1160c,0x11770,0x18bbc, // 380
+                       0x11738,0x18b9e,0x1171c,0x117bc,0x1179e,0x1cd60,0x1e6b8,0x1f35e,0x19a40,0x1cd30, // 390
+                       0x1e69c,0x19a20,0x1cd18,0x1e68e,0x19a10,0x1cd0c,0x19a08,0x1cd06,0x18960,0x1c4b8, // 400
+                       0x1e25e,0x19b60,0x18930,0x1c49c,0x13640,0x11220,0x1cd9c,0x1c48e,0x13620,0x19b18, // 410
+                       0x1890c,0x13610,0x11208,0x13608,0x11360,0x189b8,0x1c4de,0x13760,0x11330,0x1cdde, // 420
+                       0x13730,0x19b9c,0x1898e,0x13718,0x1130c,0x1370c,0x113b8,0x189de,0x137b8,0x1139c, // 430
+                       0x1379c,0x1138e,0x113de,0x137de,0x1dd40,0x1eeb0,0x1f75c,0x1dd20,0x1ee98,0x1f74e, // 440
+                       0x1dd10,0x1ee8c,0x1dd08,0x1ee86,0x1dd04,0x19940,0x1ccb0,0x1e65c,0x1bb40,0x19920, // 450
+                       0x1eedc,0x1e64e,0x1bb20,0x1dd98,0x1eece,0x1bb10,0x19908,0x1cc86,0x1bb08,0x1dd86, // 460
+                       0x19902,0x11140,0x188b0,0x1c45c,0x13340,0x11120,0x18898,0x1c44e,0x17740,0x13320, // 470
+                       0x19998,0x1ccce,0x17720,0x1bb98,0x1ddce,0x18886,0x17710,0x13308,0x19986,0x17708, // 480
+                       0x11102,0x111b0,0x188dc,0x133b0,0x11198,0x188ce,0x177b0,0x13398,0x199ce,0x17798, // 490
+                       0x1bbce,0x11186,0x13386,0x111dc,0x133dc,0x111ce,0x177dc,0x133ce,0x1dca0,0x1ee58, // 500
+                       0x1f72e,0x1dc90,0x1ee4c,0x1dc88,0x1ee46,0x1dc84,0x1dc82,0x198a0,0x1cc58,0x1e62e, // 510
+                       0x1b9a0,0x19890,0x1ee6e,0x1b990,0x1dccc,0x1cc46,0x1b988,0x19884,0x1b984,0x19882, // 520
+                       0x1b982,0x110a0,0x18858,0x1c42e,0x131a0,0x11090,0x1884c,0x173a0,0x13190,0x198cc, // 530
+                       0x18846,0x17390,0x1b9cc,0x11084,0x17388,0x13184,0x11082,0x13182,0x110d8,0x1886e, // 540
+                       0x131d8,0x110cc,0x173d8,0x131cc,0x110c6,0x173cc,0x131c6,0x110ee,0x173ee,0x1dc50, // 550
+                       0x1ee2c,0x1dc48,0x1ee26,0x1dc44,0x1dc42,0x19850,0x1cc2c,0x1b8d0,0x19848,0x1cc26, // 560
+                       0x1b8c8,0x1dc66,0x1b8c4,0x19842,0x1b8c2,0x11050,0x1882c,0x130d0,0x11048,0x18826, // 570
+                       0x171d0,0x130c8,0x19866,0x171c8,0x1b8e6,0x11042,0x171c4,0x130c2,0x171c2,0x130ec, // 580
+                       0x171ec,0x171e6,0x1ee16,0x1dc22,0x1cc16,0x19824,0x19822,0x11028,0x13068,0x170e8, // 590
+                       0x11022,0x13062,0x18560,0x10a40,0x18530,0x10a20,0x18518,0x1c28e,0x10a10,0x1850c, // 600
+                       0x10a08,0x18506,0x10b60,0x185b8,0x1c2de,0x10b30,0x1859c,0x10b18,0x1858e,0x10b0c, // 610
+                       0x10b06,0x10bb8,0x185de,0x10b9c,0x10b8e,0x10bde,0x18d40,0x1c6b0,0x1e35c,0x18d20, // 620
+                       0x1c698,0x18d10,0x1c68c,0x18d08,0x1c686,0x18d04,0x10940,0x184b0,0x1c25c,0x11b40, // 630
+                       0x10920,0x1c6dc,0x1c24e,0x11b20,0x18d98,0x1c6ce,0x11b10,0x10908,0x18486,0x11b08, // 640
+                       0x18d86,0x10902,0x109b0,0x184dc,0x11bb0,0x10998,0x184ce,0x11b98,0x18dce,0x11b8c, // 650
+                       0x10986,0x109dc,0x11bdc,0x109ce,0x11bce,0x1cea0,0x1e758,0x1f3ae,0x1ce90,0x1e74c, // 660
+                       0x1ce88,0x1e746,0x1ce84,0x1ce82,0x18ca0,0x1c658,0x19da0,0x18c90,0x1c64c,0x19d90, // 670
+                       0x1cecc,0x1c646,0x19d88,0x18c84,0x19d84,0x18c82,0x19d82,0x108a0,0x18458,0x119a0, // 680
+                       0x10890,0x1c66e,0x13ba0,0x11990,0x18ccc,0x18446,0x13b90,0x19dcc,0x10884,0x13b88, // 690
+                       0x11984,0x10882,0x11982,0x108d8,0x1846e,0x119d8,0x108cc,0x13bd8,0x119cc,0x108c6, // 700
+                       0x13bcc,0x119c6,0x108ee,0x119ee,0x13bee,0x1ef50,0x1f7ac,0x1ef48,0x1f7a6,0x1ef44, // 710
+                       0x1ef42,0x1ce50,0x1e72c,0x1ded0,0x1ef6c,0x1e726,0x1dec8,0x1ef66,0x1dec4,0x1ce42, // 720
+                       0x1dec2,0x18c50,0x1c62c,0x19cd0,0x18c48,0x1c626,0x1bdd0,0x19cc8,0x1ce66,0x1bdc8, // 730
+                       0x1dee6,0x18c42,0x1bdc4,0x19cc2,0x1bdc2,0x10850,0x1842c,0x118d0,0x10848,0x18426, // 740
+                       0x139d0,0x118c8,0x18c66,0x17bd0,0x139c8,0x19ce6,0x10842,0x17bc8,0x1bde6,0x118c2, // 750
+                       0x17bc4,0x1086c,0x118ec,0x10866,0x139ec,0x118e6,0x17bec,0x139e6,0x17be6,0x1ef28, // 760
+                       0x1f796,0x1ef24,0x1ef22,0x1ce28,0x1e716,0x1de68,0x1ef36,0x1de64,0x1ce22,0x1de62, // 770
+                       0x18c28,0x1c616,0x19c68,0x18c24,0x1bce8,0x19c64,0x18c22,0x1bce4,0x19c62,0x1bce2, // 780
+                       0x10828,0x18416,0x11868,0x18c36,0x138e8,0x11864,0x10822,0x179e8,0x138e4,0x11862, // 790
+                       0x179e4,0x138e2,0x179e2,0x11876,0x179f6,0x1ef12,0x1de34,0x1de32,0x19c34,0x1bc74, // 800
+                       0x1bc72,0x11834,0x13874,0x178f4,0x178f2,0x10540,0x10520,0x18298,0x10510,0x10508, // 810
+                       0x10504,0x105b0,0x10598,0x1058c,0x10586,0x105dc,0x105ce,0x186a0,0x18690,0x1c34c, // 820
+                       0x18688,0x1c346,0x18684,0x18682,0x104a0,0x18258,0x10da0,0x186d8,0x1824c,0x10d90, // 830
+                       0x186cc,0x10d88,0x186c6,0x10d84,0x10482,0x10d82,0x104d8,0x1826e,0x10dd8,0x186ee, // 840
+                       0x10dcc,0x104c6,0x10dc6,0x104ee,0x10dee,0x1c750,0x1c748,0x1c744,0x1c742,0x18650, // 850
+                       0x18ed0,0x1c76c,0x1c326,0x18ec8,0x1c766,0x18ec4,0x18642,0x18ec2,0x10450,0x10cd0, // 860
+                       0x10448,0x18226,0x11dd0,0x10cc8,0x10444,0x11dc8,0x10cc4,0x10442,0x11dc4,0x10cc2, // 870
+                       0x1046c,0x10cec,0x10466,0x11dec,0x10ce6,0x11de6,0x1e7a8,0x1e7a4,0x1e7a2,0x1c728, // 880
+                       0x1cf68,0x1e7b6,0x1cf64,0x1c722,0x1cf62,0x18628,0x1c316,0x18e68,0x1c736,0x19ee8, // 890
+                       0x18e64,0x18622,0x19ee4,0x18e62,0x19ee2,0x10428,0x18216,0x10c68,0x18636,0x11ce8, // 900
+                       0x10c64,0x10422,0x13de8,0x11ce4,0x10c62,0x13de4,0x11ce2,0x10436,0x10c76,0x11cf6, // 910
+                       0x13df6,0x1f7d4,0x1f7d2,0x1e794,0x1efb4,0x1e792,0x1efb2,0x1c714,0x1cf34,0x1c712, // 920
+                       0x1df74,0x1cf32,0x1df72,0x18614,0x18e34,0x18612,0x19e74,0x18e32,0x1bef4),        // 929
+               array( // cluster 3 -----------------------------------------------------------------------
+                       0x1f560,0x1fab8,0x1ea40,0x1f530,0x1fa9c,0x1ea20,0x1f518,0x1fa8e,0x1ea10,0x1f50c, //  10
+                       0x1ea08,0x1f506,0x1ea04,0x1eb60,0x1f5b8,0x1fade,0x1d640,0x1eb30,0x1f59c,0x1d620, //  20
+                       0x1eb18,0x1f58e,0x1d610,0x1eb0c,0x1d608,0x1eb06,0x1d604,0x1d760,0x1ebb8,0x1f5de, //  30
+                       0x1ae40,0x1d730,0x1eb9c,0x1ae20,0x1d718,0x1eb8e,0x1ae10,0x1d70c,0x1ae08,0x1d706, //  40
+                       0x1ae04,0x1af60,0x1d7b8,0x1ebde,0x15e40,0x1af30,0x1d79c,0x15e20,0x1af18,0x1d78e, //  50
+                       0x15e10,0x1af0c,0x15e08,0x1af06,0x15f60,0x1afb8,0x1d7de,0x15f30,0x1af9c,0x15f18, //  60
+                       0x1af8e,0x15f0c,0x15fb8,0x1afde,0x15f9c,0x15f8e,0x1e940,0x1f4b0,0x1fa5c,0x1e920, //  70
+                       0x1f498,0x1fa4e,0x1e910,0x1f48c,0x1e908,0x1f486,0x1e904,0x1e902,0x1d340,0x1e9b0, //  80
+                       0x1f4dc,0x1d320,0x1e998,0x1f4ce,0x1d310,0x1e98c,0x1d308,0x1e986,0x1d304,0x1d302, //  90
+                       0x1a740,0x1d3b0,0x1e9dc,0x1a720,0x1d398,0x1e9ce,0x1a710,0x1d38c,0x1a708,0x1d386, // 100
+                       0x1a704,0x1a702,0x14f40,0x1a7b0,0x1d3dc,0x14f20,0x1a798,0x1d3ce,0x14f10,0x1a78c, // 110
+                       0x14f08,0x1a786,0x14f04,0x14fb0,0x1a7dc,0x14f98,0x1a7ce,0x14f8c,0x14f86,0x14fdc, // 120
+                       0x14fce,0x1e8a0,0x1f458,0x1fa2e,0x1e890,0x1f44c,0x1e888,0x1f446,0x1e884,0x1e882, // 130
+                       0x1d1a0,0x1e8d8,0x1f46e,0x1d190,0x1e8cc,0x1d188,0x1e8c6,0x1d184,0x1d182,0x1a3a0, // 140
+                       0x1d1d8,0x1e8ee,0x1a390,0x1d1cc,0x1a388,0x1d1c6,0x1a384,0x1a382,0x147a0,0x1a3d8, // 150
+                       0x1d1ee,0x14790,0x1a3cc,0x14788,0x1a3c6,0x14784,0x14782,0x147d8,0x1a3ee,0x147cc, // 160
+                       0x147c6,0x147ee,0x1e850,0x1f42c,0x1e848,0x1f426,0x1e844,0x1e842,0x1d0d0,0x1e86c, // 170
+                       0x1d0c8,0x1e866,0x1d0c4,0x1d0c2,0x1a1d0,0x1d0ec,0x1a1c8,0x1d0e6,0x1a1c4,0x1a1c2, // 180
+                       0x143d0,0x1a1ec,0x143c8,0x1a1e6,0x143c4,0x143c2,0x143ec,0x143e6,0x1e828,0x1f416, // 190
+                       0x1e824,0x1e822,0x1d068,0x1e836,0x1d064,0x1d062,0x1a0e8,0x1d076,0x1a0e4,0x1a0e2, // 200
+                       0x141e8,0x1a0f6,0x141e4,0x141e2,0x1e814,0x1e812,0x1d034,0x1d032,0x1a074,0x1a072, // 210
+                       0x1e540,0x1f2b0,0x1f95c,0x1e520,0x1f298,0x1f94e,0x1e510,0x1f28c,0x1e508,0x1f286, // 220
+                       0x1e504,0x1e502,0x1cb40,0x1e5b0,0x1f2dc,0x1cb20,0x1e598,0x1f2ce,0x1cb10,0x1e58c, // 230
+                       0x1cb08,0x1e586,0x1cb04,0x1cb02,0x19740,0x1cbb0,0x1e5dc,0x19720,0x1cb98,0x1e5ce, // 240
+                       0x19710,0x1cb8c,0x19708,0x1cb86,0x19704,0x19702,0x12f40,0x197b0,0x1cbdc,0x12f20, // 250
+                       0x19798,0x1cbce,0x12f10,0x1978c,0x12f08,0x19786,0x12f04,0x12fb0,0x197dc,0x12f98, // 260
+                       0x197ce,0x12f8c,0x12f86,0x12fdc,0x12fce,0x1f6a0,0x1fb58,0x16bf0,0x1f690,0x1fb4c, // 270
+                       0x169f8,0x1f688,0x1fb46,0x168fc,0x1f684,0x1f682,0x1e4a0,0x1f258,0x1f92e,0x1eda0, // 280
+                       0x1e490,0x1fb6e,0x1ed90,0x1f6cc,0x1f246,0x1ed88,0x1e484,0x1ed84,0x1e482,0x1ed82, // 290
+                       0x1c9a0,0x1e4d8,0x1f26e,0x1dba0,0x1c990,0x1e4cc,0x1db90,0x1edcc,0x1e4c6,0x1db88, // 300
+                       0x1c984,0x1db84,0x1c982,0x1db82,0x193a0,0x1c9d8,0x1e4ee,0x1b7a0,0x19390,0x1c9cc, // 310
+                       0x1b790,0x1dbcc,0x1c9c6,0x1b788,0x19384,0x1b784,0x19382,0x1b782,0x127a0,0x193d8, // 320
+                       0x1c9ee,0x16fa0,0x12790,0x193cc,0x16f90,0x1b7cc,0x193c6,0x16f88,0x12784,0x16f84, // 330
+                       0x12782,0x127d8,0x193ee,0x16fd8,0x127cc,0x16fcc,0x127c6,0x16fc6,0x127ee,0x1f650, // 340
+                       0x1fb2c,0x165f8,0x1f648,0x1fb26,0x164fc,0x1f644,0x1647e,0x1f642,0x1e450,0x1f22c, // 350
+                       0x1ecd0,0x1e448,0x1f226,0x1ecc8,0x1f666,0x1ecc4,0x1e442,0x1ecc2,0x1c8d0,0x1e46c, // 360
+                       0x1d9d0,0x1c8c8,0x1e466,0x1d9c8,0x1ece6,0x1d9c4,0x1c8c2,0x1d9c2,0x191d0,0x1c8ec, // 370
+                       0x1b3d0,0x191c8,0x1c8e6,0x1b3c8,0x1d9e6,0x1b3c4,0x191c2,0x1b3c2,0x123d0,0x191ec, // 380
+                       0x167d0,0x123c8,0x191e6,0x167c8,0x1b3e6,0x167c4,0x123c2,0x167c2,0x123ec,0x167ec, // 390
+                       0x123e6,0x167e6,0x1f628,0x1fb16,0x162fc,0x1f624,0x1627e,0x1f622,0x1e428,0x1f216, // 400
+                       0x1ec68,0x1f636,0x1ec64,0x1e422,0x1ec62,0x1c868,0x1e436,0x1d8e8,0x1c864,0x1d8e4, // 410
+                       0x1c862,0x1d8e2,0x190e8,0x1c876,0x1b1e8,0x1d8f6,0x1b1e4,0x190e2,0x1b1e2,0x121e8, // 420
+                       0x190f6,0x163e8,0x121e4,0x163e4,0x121e2,0x163e2,0x121f6,0x163f6,0x1f614,0x1617e, // 430
+                       0x1f612,0x1e414,0x1ec34,0x1e412,0x1ec32,0x1c834,0x1d874,0x1c832,0x1d872,0x19074, // 440
+                       0x1b0f4,0x19072,0x1b0f2,0x120f4,0x161f4,0x120f2,0x161f2,0x1f60a,0x1e40a,0x1ec1a, // 450
+                       0x1c81a,0x1d83a,0x1903a,0x1b07a,0x1e2a0,0x1f158,0x1f8ae,0x1e290,0x1f14c,0x1e288, // 460
+                       0x1f146,0x1e284,0x1e282,0x1c5a0,0x1e2d8,0x1f16e,0x1c590,0x1e2cc,0x1c588,0x1e2c6, // 470
+                       0x1c584,0x1c582,0x18ba0,0x1c5d8,0x1e2ee,0x18b90,0x1c5cc,0x18b88,0x1c5c6,0x18b84, // 480
+                       0x18b82,0x117a0,0x18bd8,0x1c5ee,0x11790,0x18bcc,0x11788,0x18bc6,0x11784,0x11782, // 490
+                       0x117d8,0x18bee,0x117cc,0x117c6,0x117ee,0x1f350,0x1f9ac,0x135f8,0x1f348,0x1f9a6, // 500
+                       0x134fc,0x1f344,0x1347e,0x1f342,0x1e250,0x1f12c,0x1e6d0,0x1e248,0x1f126,0x1e6c8, // 510
+                       0x1f366,0x1e6c4,0x1e242,0x1e6c2,0x1c4d0,0x1e26c,0x1cdd0,0x1c4c8,0x1e266,0x1cdc8, // 520
+                       0x1e6e6,0x1cdc4,0x1c4c2,0x1cdc2,0x189d0,0x1c4ec,0x19bd0,0x189c8,0x1c4e6,0x19bc8, // 530
+                       0x1cde6,0x19bc4,0x189c2,0x19bc2,0x113d0,0x189ec,0x137d0,0x113c8,0x189e6,0x137c8, // 540
+                       0x19be6,0x137c4,0x113c2,0x137c2,0x113ec,0x137ec,0x113e6,0x137e6,0x1fba8,0x175f0, // 550
+                       0x1bafc,0x1fba4,0x174f8,0x1ba7e,0x1fba2,0x1747c,0x1743e,0x1f328,0x1f996,0x132fc, // 560
+                       0x1f768,0x1fbb6,0x176fc,0x1327e,0x1f764,0x1f322,0x1767e,0x1f762,0x1e228,0x1f116, // 570
+                       0x1e668,0x1e224,0x1eee8,0x1f776,0x1e222,0x1eee4,0x1e662,0x1eee2,0x1c468,0x1e236, // 580
+                       0x1cce8,0x1c464,0x1dde8,0x1cce4,0x1c462,0x1dde4,0x1cce2,0x1dde2,0x188e8,0x1c476, // 590
+                       0x199e8,0x188e4,0x1bbe8,0x199e4,0x188e2,0x1bbe4,0x199e2,0x1bbe2,0x111e8,0x188f6, // 600
+                       0x133e8,0x111e4,0x177e8,0x133e4,0x111e2,0x177e4,0x133e2,0x177e2,0x111f6,0x133f6, // 610
+                       0x1fb94,0x172f8,0x1b97e,0x1fb92,0x1727c,0x1723e,0x1f314,0x1317e,0x1f734,0x1f312, // 620
+                       0x1737e,0x1f732,0x1e214,0x1e634,0x1e212,0x1ee74,0x1e632,0x1ee72,0x1c434,0x1cc74, // 630
+                       0x1c432,0x1dcf4,0x1cc72,0x1dcf2,0x18874,0x198f4,0x18872,0x1b9f4,0x198f2,0x1b9f2, // 640
+                       0x110f4,0x131f4,0x110f2,0x173f4,0x131f2,0x173f2,0x1fb8a,0x1717c,0x1713e,0x1f30a, // 650
+                       0x1f71a,0x1e20a,0x1e61a,0x1ee3a,0x1c41a,0x1cc3a,0x1dc7a,0x1883a,0x1987a,0x1b8fa, // 660
+                       0x1107a,0x130fa,0x171fa,0x170be,0x1e150,0x1f0ac,0x1e148,0x1f0a6,0x1e144,0x1e142, // 670
+                       0x1c2d0,0x1e16c,0x1c2c8,0x1e166,0x1c2c4,0x1c2c2,0x185d0,0x1c2ec,0x185c8,0x1c2e6, // 680
+                       0x185c4,0x185c2,0x10bd0,0x185ec,0x10bc8,0x185e6,0x10bc4,0x10bc2,0x10bec,0x10be6, // 690
+                       0x1f1a8,0x1f8d6,0x11afc,0x1f1a4,0x11a7e,0x1f1a2,0x1e128,0x1f096,0x1e368,0x1e124, // 700
+                       0x1e364,0x1e122,0x1e362,0x1c268,0x1e136,0x1c6e8,0x1c264,0x1c6e4,0x1c262,0x1c6e2, // 710
+                       0x184e8,0x1c276,0x18de8,0x184e4,0x18de4,0x184e2,0x18de2,0x109e8,0x184f6,0x11be8, // 720
+                       0x109e4,0x11be4,0x109e2,0x11be2,0x109f6,0x11bf6,0x1f9d4,0x13af8,0x19d7e,0x1f9d2, // 730
+                       0x13a7c,0x13a3e,0x1f194,0x1197e,0x1f3b4,0x1f192,0x13b7e,0x1f3b2,0x1e114,0x1e334, // 740
+                       0x1e112,0x1e774,0x1e332,0x1e772,0x1c234,0x1c674,0x1c232,0x1cef4,0x1c672,0x1cef2, // 750
+                       0x18474,0x18cf4,0x18472,0x19df4,0x18cf2,0x19df2,0x108f4,0x119f4,0x108f2,0x13bf4, // 760
+                       0x119f2,0x13bf2,0x17af0,0x1bd7c,0x17a78,0x1bd3e,0x17a3c,0x17a1e,0x1f9ca,0x1397c, // 770
+                       0x1fbda,0x17b7c,0x1393e,0x17b3e,0x1f18a,0x1f39a,0x1f7ba,0x1e10a,0x1e31a,0x1e73a, // 780
+                       0x1ef7a,0x1c21a,0x1c63a,0x1ce7a,0x1defa,0x1843a,0x18c7a,0x19cfa,0x1bdfa,0x1087a, // 790
+                       0x118fa,0x139fa,0x17978,0x1bcbe,0x1793c,0x1791e,0x138be,0x179be,0x178bc,0x1789e, // 800
+                       0x1785e,0x1e0a8,0x1e0a4,0x1e0a2,0x1c168,0x1e0b6,0x1c164,0x1c162,0x182e8,0x1c176, // 810
+                       0x182e4,0x182e2,0x105e8,0x182f6,0x105e4,0x105e2,0x105f6,0x1f0d4,0x10d7e,0x1f0d2, // 820
+                       0x1e094,0x1e1b4,0x1e092,0x1e1b2,0x1c134,0x1c374,0x1c132,0x1c372,0x18274,0x186f4, // 830
+                       0x18272,0x186f2,0x104f4,0x10df4,0x104f2,0x10df2,0x1f8ea,0x11d7c,0x11d3e,0x1f0ca, // 840
+                       0x1f1da,0x1e08a,0x1e19a,0x1e3ba,0x1c11a,0x1c33a,0x1c77a,0x1823a,0x1867a,0x18efa, // 850
+                       0x1047a,0x10cfa,0x11dfa,0x13d78,0x19ebe,0x13d3c,0x13d1e,0x11cbe,0x13dbe,0x17d70, // 860
+                       0x1bebc,0x17d38,0x1be9e,0x17d1c,0x17d0e,0x13cbc,0x17dbc,0x13c9e,0x17d9e,0x17cb8, // 870
+                       0x1be5e,0x17c9c,0x17c8e,0x13c5e,0x17cde,0x17c5c,0x17c4e,0x17c2e,0x1c0b4,0x1c0b2, // 880
+                       0x18174,0x18172,0x102f4,0x102f2,0x1e0da,0x1c09a,0x1c1ba,0x1813a,0x1837a,0x1027a, // 890
+                       0x106fa,0x10ebe,0x11ebc,0x11e9e,0x13eb8,0x19f5e,0x13e9c,0x13e8e,0x11e5e,0x13ede, // 900
+                       0x17eb0,0x1bf5c,0x17e98,0x1bf4e,0x17e8c,0x17e86,0x13e5c,0x17edc,0x13e4e,0x17ece, // 910
+                       0x17e58,0x1bf2e,0x17e4c,0x17e46,0x13e2e,0x17e6e,0x17e2c,0x17e26,0x10f5e,0x11f5c, // 920
+                       0x11f4e,0x13f58,0x19fae,0x13f4c,0x13f46,0x11f2e,0x13f6e,0x13f2c,0x13f26),        // 929
+               array( // cluster 6 -----------------------------------------------------------------------
+                       0x1abe0,0x1d5f8,0x153c0,0x1a9f0,0x1d4fc,0x151e0,0x1a8f8,0x1d47e,0x150f0,0x1a87c, //  10
+                       0x15078,0x1fad0,0x15be0,0x1adf8,0x1fac8,0x159f0,0x1acfc,0x1fac4,0x158f8,0x1ac7e, //  20
+                       0x1fac2,0x1587c,0x1f5d0,0x1faec,0x15df8,0x1f5c8,0x1fae6,0x15cfc,0x1f5c4,0x15c7e, //  30
+                       0x1f5c2,0x1ebd0,0x1f5ec,0x1ebc8,0x1f5e6,0x1ebc4,0x1ebc2,0x1d7d0,0x1ebec,0x1d7c8, //  40
+                       0x1ebe6,0x1d7c4,0x1d7c2,0x1afd0,0x1d7ec,0x1afc8,0x1d7e6,0x1afc4,0x14bc0,0x1a5f0, //  50
+                       0x1d2fc,0x149e0,0x1a4f8,0x1d27e,0x148f0,0x1a47c,0x14878,0x1a43e,0x1483c,0x1fa68, //  60
+                       0x14df0,0x1a6fc,0x1fa64,0x14cf8,0x1a67e,0x1fa62,0x14c7c,0x14c3e,0x1f4e8,0x1fa76, //  70
+                       0x14efc,0x1f4e4,0x14e7e,0x1f4e2,0x1e9e8,0x1f4f6,0x1e9e4,0x1e9e2,0x1d3e8,0x1e9f6, //  80
+                       0x1d3e4,0x1d3e2,0x1a7e8,0x1d3f6,0x1a7e4,0x1a7e2,0x145e0,0x1a2f8,0x1d17e,0x144f0, //  90
+                       0x1a27c,0x14478,0x1a23e,0x1443c,0x1441e,0x1fa34,0x146f8,0x1a37e,0x1fa32,0x1467c, // 100
+                       0x1463e,0x1f474,0x1477e,0x1f472,0x1e8f4,0x1e8f2,0x1d1f4,0x1d1f2,0x1a3f4,0x1a3f2, // 110
+                       0x142f0,0x1a17c,0x14278,0x1a13e,0x1423c,0x1421e,0x1fa1a,0x1437c,0x1433e,0x1f43a, // 120
+                       0x1e87a,0x1d0fa,0x14178,0x1a0be,0x1413c,0x1411e,0x141be,0x140bc,0x1409e,0x12bc0, // 130
+                       0x195f0,0x1cafc,0x129e0,0x194f8,0x1ca7e,0x128f0,0x1947c,0x12878,0x1943e,0x1283c, // 140
+                       0x1f968,0x12df0,0x196fc,0x1f964,0x12cf8,0x1967e,0x1f962,0x12c7c,0x12c3e,0x1f2e8, // 150
+                       0x1f976,0x12efc,0x1f2e4,0x12e7e,0x1f2e2,0x1e5e8,0x1f2f6,0x1e5e4,0x1e5e2,0x1cbe8, // 160
+                       0x1e5f6,0x1cbe4,0x1cbe2,0x197e8,0x1cbf6,0x197e4,0x197e2,0x1b5e0,0x1daf8,0x1ed7e, // 170
+                       0x169c0,0x1b4f0,0x1da7c,0x168e0,0x1b478,0x1da3e,0x16870,0x1b43c,0x16838,0x1b41e, // 180
+                       0x1681c,0x125e0,0x192f8,0x1c97e,0x16de0,0x124f0,0x1927c,0x16cf0,0x1b67c,0x1923e, // 190
+                       0x16c78,0x1243c,0x16c3c,0x1241e,0x16c1e,0x1f934,0x126f8,0x1937e,0x1fb74,0x1f932, // 200
+                       0x16ef8,0x1267c,0x1fb72,0x16e7c,0x1263e,0x16e3e,0x1f274,0x1277e,0x1f6f4,0x1f272, // 210
+                       0x16f7e,0x1f6f2,0x1e4f4,0x1edf4,0x1e4f2,0x1edf2,0x1c9f4,0x1dbf4,0x1c9f2,0x1dbf2, // 220
+                       0x193f4,0x193f2,0x165c0,0x1b2f0,0x1d97c,0x164e0,0x1b278,0x1d93e,0x16470,0x1b23c, // 230
+                       0x16438,0x1b21e,0x1641c,0x1640e,0x122f0,0x1917c,0x166f0,0x12278,0x1913e,0x16678, // 240
+                       0x1b33e,0x1663c,0x1221e,0x1661e,0x1f91a,0x1237c,0x1fb3a,0x1677c,0x1233e,0x1673e, // 250
+                       0x1f23a,0x1f67a,0x1e47a,0x1ecfa,0x1c8fa,0x1d9fa,0x191fa,0x162e0,0x1b178,0x1d8be, // 260
+                       0x16270,0x1b13c,0x16238,0x1b11e,0x1621c,0x1620e,0x12178,0x190be,0x16378,0x1213c, // 270
+                       0x1633c,0x1211e,0x1631e,0x121be,0x163be,0x16170,0x1b0bc,0x16138,0x1b09e,0x1611c, // 280
+                       0x1610e,0x120bc,0x161bc,0x1209e,0x1619e,0x160b8,0x1b05e,0x1609c,0x1608e,0x1205e, // 290
+                       0x160de,0x1605c,0x1604e,0x115e0,0x18af8,0x1c57e,0x114f0,0x18a7c,0x11478,0x18a3e, // 300
+                       0x1143c,0x1141e,0x1f8b4,0x116f8,0x18b7e,0x1f8b2,0x1167c,0x1163e,0x1f174,0x1177e, // 310
+                       0x1f172,0x1e2f4,0x1e2f2,0x1c5f4,0x1c5f2,0x18bf4,0x18bf2,0x135c0,0x19af0,0x1cd7c, // 320
+                       0x134e0,0x19a78,0x1cd3e,0x13470,0x19a3c,0x13438,0x19a1e,0x1341c,0x1340e,0x112f0, // 330
+                       0x1897c,0x136f0,0x11278,0x1893e,0x13678,0x19b3e,0x1363c,0x1121e,0x1361e,0x1f89a, // 340
+                       0x1137c,0x1f9ba,0x1377c,0x1133e,0x1373e,0x1f13a,0x1f37a,0x1e27a,0x1e6fa,0x1c4fa, // 350
+                       0x1cdfa,0x189fa,0x1bae0,0x1dd78,0x1eebe,0x174c0,0x1ba70,0x1dd3c,0x17460,0x1ba38, // 360
+                       0x1dd1e,0x17430,0x1ba1c,0x17418,0x1ba0e,0x1740c,0x132e0,0x19978,0x1ccbe,0x176e0, // 370
+                       0x13270,0x1993c,0x17670,0x1bb3c,0x1991e,0x17638,0x1321c,0x1761c,0x1320e,0x1760e, // 380
+                       0x11178,0x188be,0x13378,0x1113c,0x17778,0x1333c,0x1111e,0x1773c,0x1331e,0x1771e, // 390
+                       0x111be,0x133be,0x177be,0x172c0,0x1b970,0x1dcbc,0x17260,0x1b938,0x1dc9e,0x17230, // 400
+                       0x1b91c,0x17218,0x1b90e,0x1720c,0x17206,0x13170,0x198bc,0x17370,0x13138,0x1989e, // 410
+                       0x17338,0x1b99e,0x1731c,0x1310e,0x1730e,0x110bc,0x131bc,0x1109e,0x173bc,0x1319e, // 420
+                       0x1739e,0x17160,0x1b8b8,0x1dc5e,0x17130,0x1b89c,0x17118,0x1b88e,0x1710c,0x17106, // 430
+                       0x130b8,0x1985e,0x171b8,0x1309c,0x1719c,0x1308e,0x1718e,0x1105e,0x130de,0x171de, // 440
+                       0x170b0,0x1b85c,0x17098,0x1b84e,0x1708c,0x17086,0x1305c,0x170dc,0x1304e,0x170ce, // 450
+                       0x17058,0x1b82e,0x1704c,0x17046,0x1302e,0x1706e,0x1702c,0x17026,0x10af0,0x1857c, // 460
+                       0x10a78,0x1853e,0x10a3c,0x10a1e,0x10b7c,0x10b3e,0x1f0ba,0x1e17a,0x1c2fa,0x185fa, // 470
+                       0x11ae0,0x18d78,0x1c6be,0x11a70,0x18d3c,0x11a38,0x18d1e,0x11a1c,0x11a0e,0x10978, // 480
+                       0x184be,0x11b78,0x1093c,0x11b3c,0x1091e,0x11b1e,0x109be,0x11bbe,0x13ac0,0x19d70, // 490
+                       0x1cebc,0x13a60,0x19d38,0x1ce9e,0x13a30,0x19d1c,0x13a18,0x19d0e,0x13a0c,0x13a06, // 500
+                       0x11970,0x18cbc,0x13b70,0x11938,0x18c9e,0x13b38,0x1191c,0x13b1c,0x1190e,0x13b0e, // 510
+                       0x108bc,0x119bc,0x1089e,0x13bbc,0x1199e,0x13b9e,0x1bd60,0x1deb8,0x1ef5e,0x17a40, // 520
+                       0x1bd30,0x1de9c,0x17a20,0x1bd18,0x1de8e,0x17a10,0x1bd0c,0x17a08,0x1bd06,0x17a04, // 530
+                       0x13960,0x19cb8,0x1ce5e,0x17b60,0x13930,0x19c9c,0x17b30,0x1bd9c,0x19c8e,0x17b18, // 540
+                       0x1390c,0x17b0c,0x13906,0x17b06,0x118b8,0x18c5e,0x139b8,0x1189c,0x17bb8,0x1399c, // 550
+                       0x1188e,0x17b9c,0x1398e,0x17b8e,0x1085e,0x118de,0x139de,0x17bde,0x17940,0x1bcb0, // 560
+                       0x1de5c,0x17920,0x1bc98,0x1de4e,0x17910,0x1bc8c,0x17908,0x1bc86,0x17904,0x17902, // 570
+                       0x138b0,0x19c5c,0x179b0,0x13898,0x19c4e,0x17998,0x1bcce,0x1798c,0x13886,0x17986, // 580
+                       0x1185c,0x138dc,0x1184e,0x179dc,0x138ce,0x179ce,0x178a0,0x1bc58,0x1de2e,0x17890, // 590
+                       0x1bc4c,0x17888,0x1bc46,0x17884,0x17882,0x13858,0x19c2e,0x178d8,0x1384c,0x178cc, // 600
+                       0x13846,0x178c6,0x1182e,0x1386e,0x178ee,0x17850,0x1bc2c,0x17848,0x1bc26,0x17844, // 610
+                       0x17842,0x1382c,0x1786c,0x13826,0x17866,0x17828,0x1bc16,0x17824,0x17822,0x13816, // 620
+                       0x17836,0x10578,0x182be,0x1053c,0x1051e,0x105be,0x10d70,0x186bc,0x10d38,0x1869e, // 630
+                       0x10d1c,0x10d0e,0x104bc,0x10dbc,0x1049e,0x10d9e,0x11d60,0x18eb8,0x1c75e,0x11d30, // 640
+                       0x18e9c,0x11d18,0x18e8e,0x11d0c,0x11d06,0x10cb8,0x1865e,0x11db8,0x10c9c,0x11d9c, // 650
+                       0x10c8e,0x11d8e,0x1045e,0x10cde,0x11dde,0x13d40,0x19eb0,0x1cf5c,0x13d20,0x19e98, // 660
+                       0x1cf4e,0x13d10,0x19e8c,0x13d08,0x19e86,0x13d04,0x13d02,0x11cb0,0x18e5c,0x13db0, // 670
+                       0x11c98,0x18e4e,0x13d98,0x19ece,0x13d8c,0x11c86,0x13d86,0x10c5c,0x11cdc,0x10c4e, // 680
+                       0x13ddc,0x11cce,0x13dce,0x1bea0,0x1df58,0x1efae,0x1be90,0x1df4c,0x1be88,0x1df46, // 690
+                       0x1be84,0x1be82,0x13ca0,0x19e58,0x1cf2e,0x17da0,0x13c90,0x19e4c,0x17d90,0x1becc, // 700
+                       0x19e46,0x17d88,0x13c84,0x17d84,0x13c82,0x17d82,0x11c58,0x18e2e,0x13cd8,0x11c4c, // 710
+                       0x17dd8,0x13ccc,0x11c46,0x17dcc,0x13cc6,0x17dc6,0x10c2e,0x11c6e,0x13cee,0x17dee, // 720
+                       0x1be50,0x1df2c,0x1be48,0x1df26,0x1be44,0x1be42,0x13c50,0x19e2c,0x17cd0,0x13c48, // 730
+                       0x19e26,0x17cc8,0x1be66,0x17cc4,0x13c42,0x17cc2,0x11c2c,0x13c6c,0x11c26,0x17cec, // 740
+                       0x13c66,0x17ce6,0x1be28,0x1df16,0x1be24,0x1be22,0x13c28,0x19e16,0x17c68,0x13c24, // 750
+                       0x17c64,0x13c22,0x17c62,0x11c16,0x13c36,0x17c76,0x1be14,0x1be12,0x13c14,0x17c34, // 760
+                       0x13c12,0x17c32,0x102bc,0x1029e,0x106b8,0x1835e,0x1069c,0x1068e,0x1025e,0x106de, // 770
+                       0x10eb0,0x1875c,0x10e98,0x1874e,0x10e8c,0x10e86,0x1065c,0x10edc,0x1064e,0x10ece, // 780
+                       0x11ea0,0x18f58,0x1c7ae,0x11e90,0x18f4c,0x11e88,0x18f46,0x11e84,0x11e82,0x10e58, // 790
+                       0x1872e,0x11ed8,0x18f6e,0x11ecc,0x10e46,0x11ec6,0x1062e,0x10e6e,0x11eee,0x19f50, // 800
+                       0x1cfac,0x19f48,0x1cfa6,0x19f44,0x19f42,0x11e50,0x18f2c,0x13ed0,0x19f6c,0x18f26, // 810
+                       0x13ec8,0x11e44,0x13ec4,0x11e42,0x13ec2,0x10e2c,0x11e6c,0x10e26,0x13eec,0x11e66, // 820
+                       0x13ee6,0x1dfa8,0x1efd6,0x1dfa4,0x1dfa2,0x19f28,0x1cf96,0x1bf68,0x19f24,0x1bf64, // 830
+                       0x19f22,0x1bf62,0x11e28,0x18f16,0x13e68,0x11e24,0x17ee8,0x13e64,0x11e22,0x17ee4, // 840
+                       0x13e62,0x17ee2,0x10e16,0x11e36,0x13e76,0x17ef6,0x1df94,0x1df92,0x19f14,0x1bf34, // 850
+                       0x19f12,0x1bf32,0x11e14,0x13e34,0x11e12,0x17e74,0x13e32,0x17e72,0x1df8a,0x19f0a, // 860
+                       0x1bf1a,0x11e0a,0x13e1a,0x17e3a,0x1035c,0x1034e,0x10758,0x183ae,0x1074c,0x10746, // 870
+                       0x1032e,0x1076e,0x10f50,0x187ac,0x10f48,0x187a6,0x10f44,0x10f42,0x1072c,0x10f6c, // 880
+                       0x10726,0x10f66,0x18fa8,0x1c7d6,0x18fa4,0x18fa2,0x10f28,0x18796,0x11f68,0x18fb6, // 890
+                       0x11f64,0x10f22,0x11f62,0x10716,0x10f36,0x11f76,0x1cfd4,0x1cfd2,0x18f94,0x19fb4, // 900
+                       0x18f92,0x19fb2,0x10f14,0x11f34,0x10f12,0x13f74,0x11f32,0x13f72,0x1cfca,0x18f8a, // 910
+                       0x19f9a,0x10f0a,0x11f1a,0x13f3a,0x103ac,0x103a6,0x107a8,0x183d6,0x107a4,0x107a2, // 920
+                       0x10396,0x107b6,0x187d4,0x187d2,0x10794,0x10fb4,0x10792,0x10fb2,0x1c7ea)         // 929
+       ); // end of $clusters array
+
+       /**
+        * Array of factors of the Reed-Solomon polynomial equations used for error correction; one sub array for each correction level (0-8).
+        * @protected
+        */
+       protected $rsfactors = array(
+               array( // ECL 0 (2 factors) -------------------------------------------------------------------------------
+                       0x01b,0x395),                                                                                    //   2
+               array( // ECL 1 (4 factors) -------------------------------------------------------------------------------
+                       0x20a,0x238,0x2d3,0x329),                                                                        //   4
+               array( // ECL 2 (8 factors) -------------------------------------------------------------------------------
+                       0x0ed,0x134,0x1b4,0x11c,0x286,0x28d,0x1ac,0x17b),                                                //   8
+               array( // ECL 3 (16 factors) ------------------------------------------------------------------------------
+                       0x112,0x232,0x0e8,0x2f3,0x257,0x20c,0x321,0x084,0x127,0x074,0x1ba,0x1ac,0x127,0x02a,0x0b0,0x041),//  16
+               array( // ECL 4 (32 factors) ------------------------------------------------------------------------------
+                       0x169,0x23f,0x39a,0x20d,0x0b0,0x24a,0x280,0x141,0x218,0x2e6,0x2a5,0x2e6,0x2af,0x11c,0x0c1,0x205, //  16
+                       0x111,0x1ee,0x107,0x093,0x251,0x320,0x23b,0x140,0x323,0x085,0x0e7,0x186,0x2ad,0x14a,0x03f,0x19a),//  32
+               array( // ECL 5 (64 factors) ------------------------------------------------------------------------------
+                       0x21b,0x1a6,0x006,0x05d,0x35e,0x303,0x1c5,0x06a,0x262,0x11f,0x06b,0x1f9,0x2dd,0x36d,0x17d,0x264, //  16
+                       0x2d3,0x1dc,0x1ce,0x0ac,0x1ae,0x261,0x35a,0x336,0x21f,0x178,0x1ff,0x190,0x2a0,0x2fa,0x11b,0x0b8, //  32
+                       0x1b8,0x023,0x207,0x01f,0x1cc,0x252,0x0e1,0x217,0x205,0x160,0x25d,0x09e,0x28b,0x0c9,0x1e8,0x1f6, //  48
+                       0x288,0x2dd,0x2cd,0x053,0x194,0x061,0x118,0x303,0x348,0x275,0x004,0x17d,0x34b,0x26f,0x108,0x21f),//  64
+               array( // ECL 6 (128 factors) -----------------------------------------------------------------------------
+                       0x209,0x136,0x360,0x223,0x35a,0x244,0x128,0x17b,0x035,0x30b,0x381,0x1bc,0x190,0x39d,0x2ed,0x19f, //  16
+                       0x336,0x05d,0x0d9,0x0d0,0x3a0,0x0f4,0x247,0x26c,0x0f6,0x094,0x1bf,0x277,0x124,0x38c,0x1ea,0x2c0, //  32
+                       0x204,0x102,0x1c9,0x38b,0x252,0x2d3,0x2a2,0x124,0x110,0x060,0x2ac,0x1b0,0x2ae,0x25e,0x35c,0x239, //  48
+                       0x0c1,0x0db,0x081,0x0ba,0x0ec,0x11f,0x0c0,0x307,0x116,0x0ad,0x028,0x17b,0x2c8,0x1cf,0x286,0x308, //  64
+                       0x0ab,0x1eb,0x129,0x2fb,0x09c,0x2dc,0x05f,0x10e,0x1bf,0x05a,0x1fb,0x030,0x0e4,0x335,0x328,0x382, //  80
+                       0x310,0x297,0x273,0x17a,0x17e,0x106,0x17c,0x25a,0x2f2,0x150,0x059,0x266,0x057,0x1b0,0x29e,0x268, //  96
+                       0x09d,0x176,0x0f2,0x2d6,0x258,0x10d,0x177,0x382,0x34d,0x1c6,0x162,0x082,0x32e,0x24b,0x324,0x022, // 112
+                       0x0d3,0x14a,0x21b,0x129,0x33b,0x361,0x025,0x205,0x342,0x13b,0x226,0x056,0x321,0x004,0x06c,0x21b),// 128
+               array( // ECL 7 (256 factors) -----------------------------------------------------------------------------
+                       0x20c,0x37e,0x04b,0x2fe,0x372,0x359,0x04a,0x0cc,0x052,0x24a,0x2c4,0x0fa,0x389,0x312,0x08a,0x2d0, //  16
+                       0x35a,0x0c2,0x137,0x391,0x113,0x0be,0x177,0x352,0x1b6,0x2dd,0x0c2,0x118,0x0c9,0x118,0x33c,0x2f5, //  32
+                       0x2c6,0x32e,0x397,0x059,0x044,0x239,0x00b,0x0cc,0x31c,0x25d,0x21c,0x391,0x321,0x2bc,0x31f,0x089, //  48
+                       0x1b7,0x1a2,0x250,0x29c,0x161,0x35b,0x172,0x2b6,0x145,0x0f0,0x0d8,0x101,0x11c,0x225,0x0d1,0x374, //  64
+                       0x13b,0x046,0x149,0x319,0x1ea,0x112,0x36d,0x0a2,0x2ed,0x32c,0x2ac,0x1cd,0x14e,0x178,0x351,0x209, //  80
+                       0x133,0x123,0x323,0x2c8,0x013,0x166,0x18f,0x38c,0x067,0x1ff,0x033,0x008,0x205,0x0e1,0x121,0x1d6, //  96
+                       0x27d,0x2db,0x042,0x0ff,0x395,0x10d,0x1cf,0x33e,0x2da,0x1b1,0x350,0x249,0x088,0x21a,0x38a,0x05a, // 112
+                       0x002,0x122,0x2e7,0x0c7,0x28f,0x387,0x149,0x031,0x322,0x244,0x163,0x24c,0x0bc,0x1ce,0x00a,0x086, // 128
+                       0x274,0x140,0x1df,0x082,0x2e3,0x047,0x107,0x13e,0x176,0x259,0x0c0,0x25d,0x08e,0x2a1,0x2af,0x0ea, // 144
+                       0x2d2,0x180,0x0b1,0x2f0,0x25f,0x280,0x1c7,0x0c1,0x2b1,0x2c3,0x325,0x281,0x030,0x03c,0x2dc,0x26d, // 160
+                       0x37f,0x220,0x105,0x354,0x28f,0x135,0x2b9,0x2f3,0x2f4,0x03c,0x0e7,0x305,0x1b2,0x1a5,0x2d6,0x210, // 176
+                       0x1f7,0x076,0x031,0x31b,0x020,0x090,0x1f4,0x0ee,0x344,0x18a,0x118,0x236,0x13f,0x009,0x287,0x226, // 192
+                       0x049,0x392,0x156,0x07e,0x020,0x2a9,0x14b,0x318,0x26c,0x03c,0x261,0x1b9,0x0b4,0x317,0x37d,0x2f2, // 208
+                       0x25d,0x17f,0x0e4,0x2ed,0x2f8,0x0d5,0x036,0x129,0x086,0x036,0x342,0x12b,0x39a,0x0bf,0x38e,0x214, // 224
+                       0x261,0x33d,0x0bd,0x014,0x0a7,0x01d,0x368,0x1c1,0x053,0x192,0x029,0x290,0x1f9,0x243,0x1e1,0x0ad, // 240
+                       0x194,0x0fb,0x2b0,0x05f,0x1f1,0x22b,0x282,0x21f,0x133,0x09f,0x39c,0x22e,0x288,0x037,0x1f1,0x00a),// 256
+               array( // ECL 8 (512 factors) -----------------------------------------------------------------------------
+                       0x160,0x04d,0x175,0x1f8,0x023,0x257,0x1ac,0x0cf,0x199,0x23e,0x076,0x1f2,0x11d,0x17c,0x15e,0x1ec, //  16
+                       0x0c5,0x109,0x398,0x09b,0x392,0x12b,0x0e5,0x283,0x126,0x367,0x132,0x058,0x057,0x0c1,0x160,0x30d, //  32
+                       0x34e,0x04b,0x147,0x208,0x1b3,0x21f,0x0cb,0x29a,0x0f9,0x15a,0x30d,0x26d,0x280,0x10c,0x31a,0x216, //  48
+                       0x21b,0x30d,0x198,0x186,0x284,0x066,0x1dc,0x1f3,0x122,0x278,0x221,0x025,0x35a,0x394,0x228,0x029, //  64
+                       0x21e,0x121,0x07a,0x110,0x17f,0x320,0x1e5,0x062,0x2f0,0x1d8,0x2f9,0x06b,0x310,0x35c,0x292,0x2e5, //  80
+                       0x122,0x0cc,0x2a9,0x197,0x357,0x055,0x063,0x03e,0x1e2,0x0b4,0x014,0x129,0x1c3,0x251,0x391,0x08e, //  96
+                       0x328,0x2ac,0x11f,0x218,0x231,0x04c,0x28d,0x383,0x2d9,0x237,0x2e8,0x186,0x201,0x0c0,0x204,0x102, // 112
+                       0x0f0,0x206,0x31a,0x18b,0x300,0x350,0x033,0x262,0x180,0x0a8,0x0be,0x33a,0x148,0x254,0x312,0x12f, // 128
+                       0x23a,0x17d,0x19f,0x281,0x09c,0x0ed,0x097,0x1ad,0x213,0x0cf,0x2a4,0x2c6,0x059,0x0a8,0x130,0x192, // 144
+                       0x028,0x2c4,0x23f,0x0a2,0x360,0x0e5,0x041,0x35d,0x349,0x200,0x0a4,0x1dd,0x0dd,0x05c,0x166,0x311, // 160
+                       0x120,0x165,0x352,0x344,0x33b,0x2e0,0x2c3,0x05e,0x008,0x1ee,0x072,0x209,0x002,0x1f3,0x353,0x21f, // 176
+                       0x098,0x2d9,0x303,0x05f,0x0f8,0x169,0x242,0x143,0x358,0x31d,0x121,0x033,0x2ac,0x1d2,0x215,0x334, // 192
+                       0x29d,0x02d,0x386,0x1c4,0x0a7,0x156,0x0f4,0x0ad,0x023,0x1cf,0x28b,0x033,0x2bb,0x24f,0x1c4,0x242, // 208
+                       0x025,0x07c,0x12a,0x14c,0x228,0x02b,0x1ab,0x077,0x296,0x309,0x1db,0x352,0x2fc,0x16c,0x242,0x38f, // 224
+                       0x11b,0x2c7,0x1d8,0x1a4,0x0f5,0x120,0x252,0x18a,0x1ff,0x147,0x24d,0x309,0x2bb,0x2b0,0x02b,0x198, // 240
+                       0x34a,0x17f,0x2d1,0x209,0x230,0x284,0x2ca,0x22f,0x03e,0x091,0x369,0x297,0x2c9,0x09f,0x2a0,0x2d9, // 256
+                       0x270,0x03b,0x0c1,0x1a1,0x09e,0x0d1,0x233,0x234,0x157,0x2b5,0x06d,0x260,0x233,0x16d,0x0b5,0x304, // 272
+                       0x2a5,0x136,0x0f8,0x161,0x2c4,0x19a,0x243,0x366,0x269,0x349,0x278,0x35c,0x121,0x218,0x023,0x309, // 288
+                       0x26a,0x24a,0x1a8,0x341,0x04d,0x255,0x15a,0x10d,0x2f5,0x278,0x2b7,0x2ef,0x14b,0x0f7,0x0b8,0x02d, // 304
+                       0x313,0x2a8,0x012,0x042,0x197,0x171,0x036,0x1ec,0x0e4,0x265,0x33e,0x39a,0x1b5,0x207,0x284,0x389, // 320
+                       0x315,0x1a4,0x131,0x1b9,0x0cf,0x12c,0x37c,0x33b,0x08d,0x219,0x17d,0x296,0x201,0x038,0x0fc,0x155, // 336
+                       0x0f2,0x31d,0x346,0x345,0x2d0,0x0e0,0x133,0x277,0x03d,0x057,0x230,0x136,0x2f4,0x299,0x18d,0x328, // 352
+                       0x353,0x135,0x1d9,0x31b,0x17a,0x01f,0x287,0x393,0x1cb,0x326,0x24e,0x2db,0x1a9,0x0d8,0x224,0x0f9, // 368
+                       0x141,0x371,0x2bb,0x217,0x2a1,0x30e,0x0d2,0x32f,0x389,0x12f,0x34b,0x39a,0x119,0x049,0x1d5,0x317, // 384
+                       0x294,0x0a2,0x1f2,0x134,0x09b,0x1a6,0x38b,0x331,0x0bb,0x03e,0x010,0x1a9,0x217,0x150,0x11e,0x1b5, // 400
+                       0x177,0x111,0x262,0x128,0x0b7,0x39b,0x074,0x29b,0x2ef,0x161,0x03e,0x16e,0x2b3,0x17b,0x2af,0x34a, // 416
+                       0x025,0x165,0x2d0,0x2e6,0x14a,0x005,0x027,0x39b,0x137,0x1a8,0x0f2,0x2ed,0x141,0x036,0x29d,0x13c, // 432
+                       0x156,0x12b,0x216,0x069,0x29b,0x1e8,0x280,0x2a0,0x240,0x21c,0x13c,0x1e6,0x2d1,0x262,0x02e,0x290, // 448
+                       0x1bf,0x0ab,0x268,0x1d0,0x0be,0x213,0x129,0x141,0x2fa,0x2f0,0x215,0x0af,0x086,0x00e,0x17d,0x1b1, // 464
+                       0x2cd,0x02d,0x06f,0x014,0x254,0x11c,0x2e0,0x08a,0x286,0x19b,0x36d,0x29d,0x08d,0x397,0x02d,0x30c, // 480
+                       0x197,0x0a4,0x14c,0x383,0x0a5,0x2d6,0x258,0x145,0x1f2,0x28f,0x165,0x2f0,0x300,0x0df,0x351,0x287, // 496
+                       0x03f,0x136,0x35f,0x0fb,0x16e,0x130,0x11a,0x2e2,0x2a3,0x19a,0x185,0x0f4,0x01f,0x079,0x12f,0x107) // 512
+       );
+
+       /**
+        * This is the class constructor.
+        * Creates a PDF417 object
+        * @param $code (string) code to represent using PDF417
+        * @param $ecl (int) error correction level (0-8); default -1 = automatic correction level
+        * @param $aspectratio (float) the width to height of the symbol (excluding quiet zones)
+        * @param $macro (array) information for macro block
+        * @public
+        */
+       public function __construct($code, $ecl=-1, $aspectratio=2, $macro=array()) {
+               $barcode_array = array();
+               if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
+                       return false;
+               }
+               // get the input sequence array
+               $sequence = $this->getInputSequences($code);
+               $codewords = array(); // array of code-words
+               foreach($sequence as $seq) {
+                       $cw = $this->getCompaction($seq[0], $seq[1], true);
+                       $codewords = array_merge($codewords, $cw);
+               }
+               if ($codewords[0] == 900) {
+                       // Text Alpha is the default mode, so remove the first code
+                       array_shift($codewords);
+               }
+               // count number of codewords
+               $numcw = count($codewords);
+               if ($numcw > 925) {
+                       // reached maximum data codeword capacity
+                       return false;
+               }
+               // build macro control block codewords
+               if (!empty($macro)) {
+                       $macrocw = array();
+                       // beginning of macro control block
+                       $macrocw[] = 928;
+                       // segment index
+                       $cw = $this->getCompaction(902, sprintf('%05d', $macro['segment_index']), false);
+                       $macrocw = array_merge($macrocw, $cw);
+                       // file ID
+                       $cw = $this->getCompaction(900, $macro['file_id'], false);
+                       $macrocw = array_merge($macrocw, $cw);
+                       // optional fields
+                       $optmodes = array(900,902,902,900,900,902,902);
+                       $optsize = array(-1,2,4,-1,-1,-1,2);
+                       foreach ($optmodes as $k => $omode) {
+                               if (isset($macro['option_'.$k])) {
+                                       $macrocw[] = 923;
+                                       $macrocw[] = $k;
+                                       if ($optsize[$k] == 2) {
+                                               $macro['option_'.$k] = sprintf('%05d', $macro['option_'.$k]);
+                                       } elseif ($optsize[$k] == 4) {
+                                               $macro['option_'.$k] = sprintf('%010d', $macro['option_'.$k]);
+                                       }
+                                       $cw = $this->getCompaction($omode, $macro['option_'.$k], false);
+                                       $macrocw = array_merge($macrocw, $cw);
+                               }
+                       }
+                       if ($macro['segment_index'] == ($macro['segment_total'] - 1)) {
+                               // end of control block
+                               $macrocw[] = 922;
+                       }
+                       // update total codewords
+                       $numcw += count($macrocw);
+               }
+               // set error correction level
+               $ecl = $this->getErrorCorrectionLevel($ecl, $numcw);
+               // number of codewords for error correction
+               $errsize = (2 << $ecl);
+               // calculate number of columns (number of codewords per row) and rows
+               $nce = ($numcw + $errsize + 1);
+               $cols = round((sqrt(4761 + (68 * $aspectratio * ROWHEIGHT * $nce)) - 69) / 34);
+               // adjust cols
+               if ($cols < 1) {
+                       $cols = 1;
+               } elseif ($cols > 30) {
+                       $cols = 30;
+               }
+               $rows = ceil($nce / $cols);
+               $size = ($cols * $rows);
+               // adjust rows
+               if (($rows < 3) OR ($rows > 90)) {
+                       if ($rows < 3) {
+                               $rows = 3;
+                       } elseif ($rows > 90) {
+                               $rows = 90;
+                       }
+                       $cols = ceil($size / $rows);
+                       $size = ($cols * $rows);
+               }
+               if ($size > 928) {
+                       // set dimensions to get maximum capacity
+                       if (abs($aspectratio - (17 * 29 / 32)) < abs($aspectratio - (17 * 16 / 58))) {
+                               $cols = 29;
+                               $rows = 32;
+                       } else {
+                               $cols = 16;
+                               $rows = 58;
+                       }
+                       $size = 928;
+               }
+               // calculate padding
+               $pad = ($size - $nce);
+               if ($pad > 0) {
+                       if (($size - $rows) == $nce) {
+                               --$rows;
+                               $size -= $rows;
+                       } else {
+                               // add pading
+                               $codewords = array_merge($codewords, array_fill(0, $pad, 900));
+                       }
+               }
+               if (!empty($macro)) {
+                       // add macro section
+                       $codewords = array_merge($codewords, $macrocw);
+               }
+               // Symbol Lenght Descriptor (number of data codewords including Symbol Lenght Descriptor and pad codewords)
+               $sld = $size - $errsize;
+               // add symbol length description
+               array_unshift($codewords, $sld);
+               // calculate error correction
+               $ecw = $this->getErrorCorrection($codewords, $ecl);
+               // add error correction codewords
+               $codewords = array_merge($codewords, $ecw);
+               // add horizontal quiet zones to start and stop patterns
+               $pstart = str_repeat('0', QUIETH).$this->start_pattern;
+               $pstop = $this->stop_pattern.str_repeat('0', QUIETH);
+               $barcode_array['num_rows'] = ($rows * ROWHEIGHT) + (2 * QUIETV);
+               $barcode_array['num_cols'] = (($cols + 2) * 17) + 35 + (2 * QUIETH);
+               $barcode_array['bcode'] = array();
+               // build rows for vertical quiet zone
+               if (QUIETV > 0) {
+                       $empty_row = array_fill(0, $barcode_array['num_cols'], 0);
+                       for ($i = 0; $i < QUIETV; ++$i) {
+                               // add vertical quiet rows
+                               $barcode_array['bcode'][] = $empty_row;
+                       }
+               }
+               $k = 0; // codeword index
+               $cid = 0; // initial cluster
+               // for each row
+               for ($r = 0; $r < $rows; ++$r) {
+                       // row start code
+                       $row = $pstart;
+                       switch ($cid) {
+                               case 0: {
+                                       $L = ((30 * intval($r / 3)) + intval(($rows - 1) / 3));
+                                       break;
+                               }
+                               case 1: {
+                                       $L = ((30 * intval($r / 3)) + ($ecl * 3) + (($rows - 1) % 3));
+                                       break;
+                               }
+                               case 2: {
+                                       $L = ((30 * intval($r / 3)) + ($cols - 1));
+                                       break;
+                               }
+                       }
+                       // left row indicator
+                       $row .= sprintf('%17b', $this->clusters[$cid][$L]);
+                       // for each column
+                       for ($c = 0; $c < $cols; ++$c) {
+                               $row .= sprintf('%17b', $this->clusters[$cid][$codewords[$k]]);
+                               ++$k;
+                       }
+                       switch ($cid) {
+                               case 0: {
+                                       $L = ((30 * intval($r / 3)) + ($cols - 1));
+                                       break;
+                               }
+                               case 1: {
+                                       $L = ((30 * intval($r / 3)) + intval(($rows - 1) / 3));
+                                       break;
+                               }
+                               case 2: {
+                                       $L = ((30 * intval($r / 3)) + ($ecl * 3) + (($rows - 1) % 3));
+                                       break;
+                               }
+                       }
+                       // right row indicator
+                       $row .= sprintf('%17b', $this->clusters[$cid][$L]);
+                       // row stop code
+                       $row .= $pstop;
+                       // convert the string to array
+                       $arow = preg_split('//', $row, -1, PREG_SPLIT_NO_EMPTY);
+                       // duplicate row to get the desired height
+                       for ($h = 0; $h < ROWHEIGHT; ++$h) {
+                               $barcode_array['bcode'][] = $arow;
+                       }
+                       ++$cid;
+                       if ($cid > 2) {
+                               $cid = 0;
+                       }
+               }
+               if (QUIETV > 0) {
+                       for ($i = 0; $i < QUIETV; ++$i) {
+                               // add vertical quiet rows
+                               $barcode_array['bcode'][] = $empty_row;
+                       }
+               }
+               $this->barcode_array = $barcode_array;
+       }
+
+       /**
+        * Returns a barcode array which is readable by TCPDF
+        * @return array barcode array readable by TCPDF;
+        * @public
+        */
+       public function getBarcodeArray() {
+               return $this->barcode_array;
+       }
+
+       /**
+        * Returns the error correction level (0-8) to be used
+        * @param $ecl (int) error correction level
+        * @param $numcw (int) number of data codewords
+        * @return int error correction level
+        * @protected
+        */
+       protected function getErrorCorrectionLevel($ecl, $numcw) {
+               // get maximum correction level
+               $maxecl = 8; // starting error level
+               $maxerrsize = (928 - $numcw); // available codewords for error
+               while ($maxecl > 0) {
+                       $errsize = (2 << $ecl);
+                       if ($maxerrsize >= $errsize) {
+                               break;
+                       }
+                       --$maxecl;
+               }
+               // check for automatic levels
+               if (($ecl < 0) OR ($ecl > 8)) {
+                       if ($numcw < 41) {
+                               $ecl = 2;
+                       } elseif ($numcw < 161) {
+                               $ecl = 3;
+                       } elseif ($numcw < 321) {
+                               $ecl = 4;
+                       } elseif ($numcw < 864) {
+                               $ecl = 5;
+                       } else {
+                               $ecl = $maxecl;
+                       }
+               }
+               if ($ecl > $maxecl) {
+                       $ecl = $maxecl;
+               }
+               return $ecl;
+       }
+
+       /**
+        * Returns the error correction codewords
+        * @param $cw (array) array of codewords including Symbol Lenght Descriptor and pad
+        * @param $ecl (int) error correction level 0-8
+        * @return array of error correction codewords
+        * @protected
+        */
+       protected function getErrorCorrection($cw, $ecl) {
+               // get error correction coefficients
+               $ecc = $this->rsfactors[$ecl];
+               // number of error correction factors
+               $eclsize = (2 << $ecl);
+               // maximum index for $rsfactors[$ecl]
+               $eclmaxid = ($eclsize - 1);
+               // initialize array of error correction codewords
+               $ecw = array_fill(0, $eclsize, 0);
+               // for each data codeword
+               foreach($cw as $k => $d) {
+                       $t1 = ($d + $ecw[$eclmaxid]) % 929;
+                       for ($j = $eclmaxid; $j > 0; --$j) {
+                               $t2 = ($t1 * $ecc[$j]) % 929;
+                               $t3 = 929 - $t2;
+                               $ecw[$j] = ($ecw[($j - 1)] + $t3) % 929;
+                       }
+                       $t2 = ($t1 * $ecc[0]) % 929;
+                       $t3 = 929 - $t2;
+                       $ecw[0] = $t3 % 929;
+               }
+               foreach($ecw as $j => $e) {
+                       if ($e != 0) {
+                               $ecw[$j] = 929 - $e;
+                       }
+               }
+               $ecw = array_reverse($ecw);
+               return $ecw;
+       }
+
+       /**
+        * Create array of sequences from input
+        * @param $code (string) code
+        * @return bidimensional array containing characters and classification
+        * @protected
+        */
+       protected function getInputSequences($code) {
+               $sequence_array = array(); // array to be returned
+               $numseq = array();
+               // get numeric sequences
+               preg_match_all('/([0-9]{13,44})/', $code, $numseq, PREG_OFFSET_CAPTURE);
+               $numseq[1][] = array('', strlen($code));
+               $offset = 0;
+               foreach($numseq[1] as $seq) {
+                       $seqlen = strlen($seq[0]);
+                       if ($seq[1] > 0) {
+                               // extract text sequence before the number sequence
+                               $prevseq = substr($code, $offset, ($seq[1] - $offset));
+                               $textseq = array();
+                               // get text sequences
+                               preg_match_all('/([\x09\x0a\x0d\x20-\x7e]{5,})/', $prevseq, $textseq, PREG_OFFSET_CAPTURE);
+                               $textseq[1][] = array('', strlen($prevseq));
+                               $txtoffset = 0;
+                               foreach($textseq[1] as $txtseq) {
+                                       $txtseqlen = strlen($txtseq[0]);
+                                       if ($txtseq[1] > 0) {
+                                               // extract byte sequence before the text sequence
+                                               $prevtxtseq = substr($prevseq, $txtoffset, ($txtseq[1] - $txtoffset));
+                                               if (strlen($prevtxtseq) > 0) {
+                                                       // add BYTE sequence
+                                                       if ((strlen($prevtxtseq) == 1) AND ((count($sequence_array) > 0) AND ($sequence_array[(count($sequence_array) - 1)][0] == 900))) {
+                                                               $sequence_array[] = array(913, $prevtxtseq);
+                                                       } elseif ((strlen($prevtxtseq) % 6) == 0) {
+                                                               $sequence_array[] = array(924, $prevtxtseq);
+                                                       } else {
+                                                               $sequence_array[] = array(901, $prevtxtseq);
+                                                       }
+                                               }
+                                       }
+                                       if ($txtseqlen > 0) {
+                                               // add numeric sequence
+                                               $sequence_array[] = array(900, $txtseq[0]);
+                                       }
+                                       $txtoffset = $txtseq[1] + $txtseqlen;
+                               }
+                       }
+                       if ($seqlen > 0) {
+                               // add numeric sequence
+                               $sequence_array[] = array(902, $seq[0]);
+                       }
+                       $offset = $seq[1] + $seqlen;
+               }
+               return $sequence_array;
+       }
+
+       /**
+        * Compact data by mode.
+        * @param $mode (int) compaction mode number
+        * @param $code (string) data to compact
+        * @param $addmode (boolean) if true add the mode codeword at first position
+        * @return array of codewords
+        * @protected
+        */
+       protected function getCompaction($mode, $code, $addmode=true) {
+               $cw = array(); // array of codewords to return
+               switch($mode) {
+                       case 900: { // Text Compaction mode latch
+                               $submode = 0; // default Alpha sub-mode
+                               $txtarr = array(); // array of characters and sub-mode switching characters
+                               $codelen = strlen($code);
+                               for ($i = 0; $i < $codelen; ++$i) {
+                                       $chval = ord($code{$i});
+                                       if (($k = array_search($chval, $this->textsubmodes[$submode])) !== false) {
+                                               // we are on the same sub-mode
+                                               $txtarr[] = $k;
+                                       } else {
+                                               // the sub-mode is changed
+                                               for ($s = 0; $s < 4; ++$s) {
+                                                       // search new sub-mode
+                                                       if (($s != $submode) AND (($k = array_search($chval, $this->textsubmodes[$s])) !== false)) {
+                                                               // $s is the new submode
+                                                               if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code{($i + 1)}), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) {
+                                                                       // shift (temporary change only for this char)
+                                                                       if ($s == 3) {
+                                                                               // shift to puntuaction
+                                                                               $txtarr[] = 29;
+                                                                       } else {
+                                                                               // shift from lower to alpha
+                                                                               $txtarr[] = 27;
+                                                                       }
+                                                               } else {
+                                                                       // latch
+                                                                       $txtarr = array_merge($txtarr, $this->textlatch[''.$submode.$s]);
+                                                                       // set new submode
+                                                                       $submode = $s;
+                                                               }
+                                                               // add characted code to array
+                                                               $txtarr[] = $k;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+                               $txtarrlen = count($txtarr);
+                               if (($txtarrlen % 2) != 0) {
+                                       // add padding
+                                       $txtarr[] = 29;
+                                       ++$txtarrlen;
+                               }
+                               // calculate codewords
+                               for ($i = 0; $i < $txtarrlen; $i += 2) {
+                                       $cw[] = (30 * $txtarr[$i]) + $txtarr[($i + 1)];
+                               }
+                               break;
+                       }
+                       case 901:
+                       case 924: { // Byte Compaction mode latch
+                               while (($codelen = strlen($code)) > 0) {
+                                       if ($codelen > 6) {
+                                               $rest = substr($code, 6);
+                                               $code = substr($code, 0, 6);
+                                               $sublen = 6;
+                                       } else {
+                                               $rest = '';
+                                               $sublen = strlen($code);
+                                       }
+                                       if ($sublen == 6) {
+                                               $t = bcmul(''.ord($code[0]), '1099511627776');
+                                               $t = bcadd($t, bcmul(''.ord($code[1]), '4294967296'));
+                                               $t = bcadd($t, bcmul(''.ord($code[2]), '16777216'));
+                                               $t = bcadd($t, bcmul(''.ord($code[3]), '65536'));
+                                               $t = bcadd($t, bcmul(''.ord($code[4]), '256'));
+                                               $t = bcadd($t, ''.ord($code[5]));
+                                               // tmp array for the 6 bytes block
+                                               $cw6 = array();
+                                               do {
+                                                       $d = bcmod($t, '900');
+                                                       $t = bcdiv($t, '900');
+                                                       // prepend the value to the beginning of the array
+                                                       array_unshift($cw6, $d);
+                                               } while ($t != '0');
+                                               // append the result array at the end
+                                               $cw = array_merge($cw, $cw6);
+                                       } else {
+                                               for ($i = 0; $i < $sublen; ++$i) {
+                                                       $cw[] = ord($code{$i});
+                                               }
+                                       }
+                                       $code = $rest;
+                               }
+                               break;
+                       }
+                       case 902: { // Numeric Compaction mode latch
+                               while (($codelen = strlen($code)) > 0) {
+                                       if ($codelen > 44) {
+                                               $rest = substr($code, 44);
+                                               $code = substr($code, 0, 44);
+                                       } else {
+                                               $rest = '';
+                                       }
+                                       $t = '1'.$code;
+                                       do {
+                                               $d = bcmod($t, '900');
+                                               $t = bcdiv($t, '900');
+                                               array_unshift($cw, $d);
+                                       } while ($t != '0');
+                                       $code = $rest;
+                               }
+                               break;
+                       }
+                       case 913: { // Byte Compaction mode shift
+                               $cw[] = ord($code);
+                               break;
+                       }
+               }
+               if ($addmode) {
+                       // add the compaction mode codeword at the beginning
+                       array_unshift($cw, $mode);
+               }
+               return $cw;
+       }
+
+} // end PDF417 class
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php
new file mode 100644 (file)
index 0000000..3127fe6
--- /dev/null
@@ -0,0 +1,2866 @@
+<?php
+//============================================================+
+// File name   : qrcode.php
+// Version     : 1.0.010
+// Begin       : 2010-03-22
+// Last Update : 2012-07-25
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2010-2012 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// DESCRIPTION :
+//
+// Class to create QR-code arrays for TCPDF class.
+// QR Code symbol is a 2D barcode that can be scanned by
+// handy terminals such as a mobile phone with CCD.
+// The capacity of QR Code is up to 7000 digits or 4000
+// characters, and has high robustness.
+// This class supports QR Code model 2, described in
+// JIS (Japanese Industrial Standards) X0510:2004
+// or ISO/IEC 18004.
+// Currently the following features are not supported:
+// ECI and FNC1 mode, Micro QR Code, QR Code model 1,
+// Structured mode.
+//
+// This class is derived from the following projects:
+// ---------------------------------------------------------
+// "PHP QR Code encoder"
+// License: GNU-LGPLv3
+// Copyright (C) 2010 by Dominik Dzienia <deltalab at poczta dot fm>
+// http://phpqrcode.sourceforge.net/
+// https://sourceforge.net/projects/phpqrcode/
+//
+// The "PHP QR Code encoder" is based on
+// "C libqrencode library" (ver. 3.1.1)
+// License: GNU-LGPL 2.1
+// Copyright (C) 2006-2010 by Kentaro Fukuchi
+// http://megaui.net/fukuchi/works/qrencode/index.en.html
+//
+// Reed-Solomon code encoder is written by Phil Karn, KA9Q.
+// Copyright (C) 2002-2006 Phil Karn, KA9Q
+//
+// QR Code is registered trademark of DENSO WAVE INCORPORATED
+// http://www.denso-wave.com/qrcode/index-e.html
+// ---------------------------------------------------------
+//============================================================+
+
+/**
+ * @file
+ * Class to create QR-code arrays for TCPDF class.
+ * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
+ * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
+ * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
+ * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
+ *
+ * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
+ * Please read comments on this class source file for full copyright and license information.
+ *
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.010
+ */
+
+// definitions
+if (!defined('QRCODEDEFS')) {
+
+       /**
+        * Indicate that definitions for this class are set
+        */
+       define('QRCODEDEFS', true);
+
+       // -----------------------------------------------------
+
+       // Encoding modes (characters which can be encoded in QRcode)
+
+       /**
+        * Encoding mode
+        */
+       define('QR_MODE_NL', -1);
+
+       /**
+        * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode.
+        */
+       define('QR_MODE_NM', 0);
+
+       /**
+        * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode.
+        */
+       define('QR_MODE_AN', 1);
+
+       /**
+        * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode.
+        */
+       define('QR_MODE_8B', 2);
+
+       /**
+        * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode.
+        */
+       define('QR_MODE_KJ', 3);
+
+       /**
+        * Encoding mode STRUCTURED (currently unsupported)
+        */
+       define('QR_MODE_ST', 4);
+
+       // -----------------------------------------------------
+
+       // Levels of error correction.
+       // QRcode has a function of an error correcting for miss reading that white is black.
+       // Error correcting is defined in 4 level as below.
+
+       /**
+        * Error correction level L : About 7% or less errors can be corrected.
+        */
+       define('QR_ECLEVEL_L', 0);
+
+       /**
+        * Error correction level M : About 15% or less errors can be corrected.
+        */
+       define('QR_ECLEVEL_M', 1);
+
+       /**
+        * Error correction level Q : About 25% or less errors can be corrected.
+        */
+       define('QR_ECLEVEL_Q', 2);
+
+       /**
+        * Error correction level H : About 30% or less errors can be corrected.
+        */
+       define('QR_ECLEVEL_H', 3);
+
+       // -----------------------------------------------------
+
+       // Version. Size of QRcode is defined as version.
+       // Version is from 1 to 40.
+       // Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases.
+       // So version 40 is 177*177 matrix.
+
+       /**
+        * Maximum QR Code version.
+        */
+       define('QRSPEC_VERSION_MAX', 40);
+
+       /**
+        * Maximum matrix size for maximum version (version 40 is 177*177 matrix).
+        */
+    define('QRSPEC_WIDTH_MAX', 177);
+
+       // -----------------------------------------------------
+
+       /**
+        * Matrix index to get width from $capacity array.
+        */
+    define('QRCAP_WIDTH',    0);
+
+    /**
+        * Matrix index to get number of words from $capacity array.
+        */
+    define('QRCAP_WORDS',    1);
+
+    /**
+        * Matrix index to get remainder from $capacity array.
+        */
+    define('QRCAP_REMINDER', 2);
+
+    /**
+        * Matrix index to get error correction level from $capacity array.
+        */
+    define('QRCAP_EC',       3);
+
+       // -----------------------------------------------------
+
+       // Structure (currently usupported)
+
+       /**
+        * Number of header bits for structured mode
+        */
+    define('STRUCTURE_HEADER_BITS',  20);
+
+    /**
+        * Max number of symbols for structured mode
+        */
+    define('MAX_STRUCTURED_SYMBOLS', 16);
+
+       // -----------------------------------------------------
+
+    // Masks
+
+    /**
+        * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column)
+        */
+    define('N1',  3);
+
+    /**
+        * Down point base value for case 2 mask pattern (module block of same color)
+        */
+       define('N2',  3);
+
+    /**
+        * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column)
+        */
+       define('N3', 40);
+
+    /**
+        * Down point base value for case 4 mask pattern (ration of dark modules in whole)
+        */
+       define('N4', 10);
+
+       // -----------------------------------------------------
+
+       // Optimization settings
+
+       /**
+        * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code
+        */
+       define('QR_FIND_BEST_MASK', true);
+
+       /**
+        * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly
+        */
+       define('QR_FIND_FROM_RANDOM', 2);
+
+       /**
+        * when QR_FIND_BEST_MASK === false
+        */
+       define('QR_DEFAULT_MASK', 2);
+
+       // -----------------------------------------------------
+
+} // end of definitions
+
+// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#
+
+// for compatibility with PHP4
+if (!function_exists('str_split')) {
+       /**
+        * Convert a string to an array (needed for PHP4 compatibility)
+        * @param $string (string) The input string.
+        * @param $split_length (int) Maximum length of the chunk.
+        * @return  If the optional split_length  parameter is specified, the returned array will be broken down into chunks with each being split_length  in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element.
+        */
+       function str_split($string, $split_length=1) {
+               if ((strlen($string) > $split_length) OR (!$split_length)) {
+                       do {
+                               $c = strlen($string);
+                               $parts[] = substr($string, 0, $split_length);
+                               $string = substr($string, $split_length);
+                       } while ($string !== false);
+               } else {
+                       $parts = array($string);
+               }
+               return $parts;
+       }
+}
+
+// #####################################################
+
+/**
+ * @class QRcode
+ * Class to create QR-code arrays for TCPDF class.
+ * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD.
+ * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness.
+ * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004.
+ * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode.
+ *
+ * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html).
+ * Please read comments on this class source file for full copyright and license information.
+ *
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.010
+ */
+class QRcode {
+
+       /**
+        * Barcode array to be returned which is readable by TCPDF.
+        * @protected
+        */
+       protected $barcode_array = array();
+
+       /**
+        * QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix.
+        * @protected
+        */
+       protected $version = 0;
+
+       /**
+        * Levels of error correction. See definitions for possible values.
+        * @protected
+        */
+       protected $level = QR_ECLEVEL_L;
+
+       /**
+        * Encoding mode.
+        * @protected
+        */
+       protected $hint = QR_MODE_8B;
+
+       /**
+        * Boolean flag, if true the input string will be converted to uppercase.
+        * @protected
+        */
+       protected $casesensitive = true;
+
+       /**
+        * Structured QR code (not supported yet).
+        * @protected
+        */
+       protected $structured = 0;
+
+       /**
+        * Mask data.
+        * @protected
+        */
+       protected $data;
+
+       // FrameFiller
+
+       /**
+        * Width.
+        * @protected
+        */
+       protected $width;
+
+       /**
+        * Frame.
+        * @protected
+        */
+       protected $frame;
+
+       /**
+        * X position of bit.
+        * @protected
+        */
+       protected $x;
+
+       /**
+        * Y position of bit.
+        * @protected
+        */
+       protected $y;
+
+       /**
+        * Direction.
+        * @protected
+        */
+       protected $dir;
+
+       /**
+        * Single bit value.
+        * @protected
+        */
+       protected $bit;
+
+       // ---- QRrawcode ----
+
+       /**
+        * Data code.
+        * @protected
+        */
+       protected $datacode = array();
+
+       /**
+        * Error correction code.
+        * @protected
+        */
+       protected $ecccode = array();
+
+       /**
+        * Blocks.
+        * @protected
+        */
+       protected $blocks;
+
+       /**
+        * Reed-Solomon blocks.
+        * @protected
+        */
+       protected $rsblocks = array(); //of RSblock
+
+       /**
+        * Counter.
+        * @protected
+        */
+       protected $count;
+
+       /**
+        * Data length.
+        * @protected
+        */
+       protected $dataLength;
+
+       /**
+        * Error correction length.
+        * @protected
+        */
+       protected $eccLength;
+
+       /**
+        * Value b1.
+        * @protected
+        */
+       protected $b1;
+
+       // ---- QRmask ----
+
+       /**
+        * Run length.
+        * @protected
+        */
+       protected $runLength = array();
+
+       // ---- QRsplit ----
+
+       /**
+        * Input data string.
+        * @protected
+        */
+       protected $dataStr = '';
+
+       /**
+        * Input items.
+        * @protected
+        */
+       protected $items;
+
+       // Reed-Solomon items
+
+       /**
+        * Reed-Solomon items.
+        * @protected
+        */
+       protected $rsitems = array();
+
+       /**
+        * Array of frames.
+        * @protected
+        */
+       protected $frames = array();
+
+       /**
+        * Alphabet-numeric convesion table.
+        * @protected
+        */
+       protected $anTable = array(
+               -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
+               -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
+               36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, //
+                0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 44, -1, -1, -1, -1, -1, //
+               -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, //
+               25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, //
+               -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, //
+               -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1  //
+               );
+
+       /**
+        * Array Table of the capacity of symbols.
+        * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004.
+        * @protected
+        */
+       protected $capacity = array(
+               array(  0,    0, 0, array(   0,    0,    0,    0)), //
+               array( 21,   26, 0, array(   7,   10,   13,   17)), //  1
+               array( 25,   44, 7, array(  10,   16,   22,   28)), //
+               array( 29,   70, 7, array(  15,   26,   36,   44)), //
+               array( 33,  100, 7, array(  20,   36,   52,   64)), //
+               array( 37,  134, 7, array(  26,   48,   72,   88)), //  5
+               array( 41,  172, 7, array(  36,   64,   96,  112)), //
+               array( 45,  196, 0, array(  40,   72,  108,  130)), //
+               array( 49,  242, 0, array(  48,   88,  132,  156)), //
+               array( 53,  292, 0, array(  60,  110,  160,  192)), //
+               array( 57,  346, 0, array(  72,  130,  192,  224)), // 10
+               array( 61,  404, 0, array(  80,  150,  224,  264)), //
+               array( 65,  466, 0, array(  96,  176,  260,  308)), //
+               array( 69,  532, 0, array( 104,  198,  288,  352)), //
+               array( 73,  581, 3, array( 120,  216,  320,  384)), //
+               array( 77,  655, 3, array( 132,  240,  360,  432)), // 15
+               array( 81,  733, 3, array( 144,  280,  408,  480)), //
+               array( 85,  815, 3, array( 168,  308,  448,  532)), //
+               array( 89,  901, 3, array( 180,  338,  504,  588)), //
+               array( 93,  991, 3, array( 196,  364,  546,  650)), //
+               array( 97, 1085, 3, array( 224,  416,  600,  700)), // 20
+               array(101, 1156, 4, array( 224,  442,  644,  750)), //
+               array(105, 1258, 4, array( 252,  476,  690,  816)), //
+               array(109, 1364, 4, array( 270,  504,  750,  900)), //
+               array(113, 1474, 4, array( 300,  560,  810,  960)), //
+               array(117, 1588, 4, array( 312,  588,  870, 1050)), // 25
+               array(121, 1706, 4, array( 336,  644,  952, 1110)), //
+               array(125, 1828, 4, array( 360,  700, 1020, 1200)), //
+               array(129, 1921, 3, array( 390,  728, 1050, 1260)), //
+               array(133, 2051, 3, array( 420,  784, 1140, 1350)), //
+               array(137, 2185, 3, array( 450,  812, 1200, 1440)), // 30
+               array(141, 2323, 3, array( 480,  868, 1290, 1530)), //
+               array(145, 2465, 3, array( 510,  924, 1350, 1620)), //
+               array(149, 2611, 3, array( 540,  980, 1440, 1710)), //
+               array(153, 2761, 3, array( 570, 1036, 1530, 1800)), //
+               array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35
+               array(161, 3034, 0, array( 600, 1120, 1680, 1980)), //
+               array(165, 3196, 0, array( 630, 1204, 1770, 2100)), //
+               array(169, 3362, 0, array( 660, 1260, 1860, 2220)), //
+               array(173, 3532, 0, array( 720, 1316, 1950, 2310)), //
+               array(177, 3706, 0, array( 750, 1372, 2040, 2430))  // 40
+       );
+
+       /**
+        * Array Length indicator.
+        * @protected
+        */
+       protected $lengthTableBits = array(
+               array(10, 12, 14),
+               array( 9, 11, 13),
+               array( 8, 16, 16),
+               array( 8, 10, 12)
+       );
+
+       /**
+        * Array Table of the error correction code (Reed-Solomon block).
+        * See Table 12-16 (pp.30-36), JIS X0510:2004.
+        * @protected
+        */
+       protected $eccTable = array(
+               array(array( 0,  0), array( 0,  0), array( 0,  0), array( 0,  0)), //
+               array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //  1
+               array(array( 1,  0), array( 1,  0), array( 1,  0), array( 1,  0)), //
+               array(array( 1,  0), array( 1,  0), array( 2,  0), array( 2,  0)), //
+               array(array( 1,  0), array( 2,  0), array( 2,  0), array( 4,  0)), //
+               array(array( 1,  0), array( 2,  0), array( 2,  2), array( 2,  2)), //  5
+               array(array( 2,  0), array( 4,  0), array( 4,  0), array( 4,  0)), //
+               array(array( 2,  0), array( 4,  0), array( 2,  4), array( 4,  1)), //
+               array(array( 2,  0), array( 2,  2), array( 4,  2), array( 4,  2)), //
+               array(array( 2,  0), array( 3,  2), array( 4,  4), array( 4,  4)), //
+               array(array( 2,  2), array( 4,  1), array( 6,  2), array( 6,  2)), // 10
+               array(array( 4,  0), array( 1,  4), array( 4,  4), array( 3,  8)), //
+               array(array( 2,  2), array( 6,  2), array( 4,  6), array( 7,  4)), //
+               array(array( 4,  0), array( 8,  1), array( 8,  4), array(12,  4)), //
+               array(array( 3,  1), array( 4,  5), array(11,  5), array(11,  5)), //
+               array(array( 5,  1), array( 5,  5), array( 5,  7), array(11,  7)), // 15
+               array(array( 5,  1), array( 7,  3), array(15,  2), array( 3, 13)), //
+               array(array( 1,  5), array(10,  1), array( 1, 15), array( 2, 17)), //
+               array(array( 5,  1), array( 9,  4), array(17,  1), array( 2, 19)), //
+               array(array( 3,  4), array( 3, 11), array(17,  4), array( 9, 16)), //
+               array(array( 3,  5), array( 3, 13), array(15,  5), array(15, 10)), // 20
+               array(array( 4,  4), array(17,  0), array(17,  6), array(19,  6)), //
+               array(array( 2,  7), array(17,  0), array( 7, 16), array(34,  0)), //
+               array(array( 4,  5), array( 4, 14), array(11, 14), array(16, 14)), //
+               array(array( 6,  4), array( 6, 14), array(11, 16), array(30,  2)), //
+               array(array( 8,  4), array( 8, 13), array( 7, 22), array(22, 13)), // 25
+               array(array(10,  2), array(19,  4), array(28,  6), array(33,  4)), //
+               array(array( 8,  4), array(22,  3), array( 8, 26), array(12, 28)), //
+               array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), //
+               array(array( 7,  7), array(21,  7), array( 1, 37), array(19, 26)), //
+               array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30
+               array(array(13,  3), array( 2, 29), array(42,  1), array(23, 28)), //
+               array(array(17,  0), array(10, 23), array(10, 35), array(19, 35)), //
+               array(array(17,  1), array(14, 21), array(29, 19), array(11, 46)), //
+               array(array(13,  6), array(14, 23), array(44,  7), array(59,  1)), //
+               array(array(12,  7), array(12, 26), array(39, 14), array(22, 41)), // 35
+               array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), //
+               array(array(17,  4), array(29, 14), array(49, 10), array(24, 46)), //
+               array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), //
+               array(array(20,  4), array(40,  7), array(43, 22), array(10, 67)), //
+               array(array(19,  6), array(18, 31), array(34, 34), array(20, 61))  // 40
+       );
+
+       /**
+        * Array Positions of alignment patterns.
+        * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them.
+        * See Table 1 in Appendix E (pp.71) of JIS X0510:2004.
+        * @protected
+        */
+       protected $alignmentPattern = array(
+               array( 0,  0),
+               array( 0,  0), array(18,  0), array(22,  0), array(26,  0), array(30,  0), //  1- 5
+               array(34,  0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), //  6-10
+               array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15
+               array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20
+               array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25
+               array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30
+               array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35
+               array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58)  // 35-40
+       );
+
+       /**
+        * Array Version information pattern (BCH coded).
+        * See Table 1 in Appendix D (pp.68) of JIS X0510:2004.
+        * size: [QRSPEC_VERSION_MAX - 6]
+        * @protected
+        */
+       protected $versionPattern = array(
+               0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, //
+               0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, //
+               0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, //
+               0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, //
+               0x27541, 0x28c69
+       );
+
+       /**
+        * Array Format information
+        * @protected
+        */
+       protected $formatInfo = array(
+               array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), //
+               array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), //
+               array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), //
+               array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b)  //
+       );
+
+
+       // -------------------------------------------------
+       // -------------------------------------------------
+
+
+       /**
+        * This is the class constructor.
+        * Creates a QRcode object
+        * @param $code (string) code to represent using QRcode
+        * @param $eclevel (string) error level: <ul><li>L : About 7% or less errors can be corrected.</li><li>M : About 15% or less errors can be corrected.</li><li>Q : About 25% or less errors can be corrected.</li><li>H : About 30% or less errors can be corrected.</li></ul>
+        * @public
+        * @since 1.0.000
+        */
+       public function __construct($code, $eclevel = 'L') {
+               $barcode_array = array();
+               if ((is_null($code)) OR ($code == '\0') OR ($code == '')) {
+                       return false;
+               }
+               // set error correction level
+               $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H'));
+               if ($this->level === false) {
+                       $this->level = QR_ECLEVEL_L;
+               }
+               if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) {
+                       return false;
+               }
+               if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) {
+                       return false;
+               }
+               $this->items = array();
+               $this->encodeString($code);
+               if (is_null($this->data)) {
+                       return false;
+               }
+               $qrTab = $this->binarize($this->data);
+               $size = count($qrTab);
+               $barcode_array['num_rows'] = $size;
+               $barcode_array['num_cols'] = $size;
+               $barcode_array['bcode'] = array();
+               foreach ($qrTab as $line) {
+                       $arrAdd = array();
+                       foreach (str_split($line) as $char) {
+                               $arrAdd[] = ($char=='1')?1:0;
+                       }
+                       $barcode_array['bcode'][] = $arrAdd;
+               }
+               $this->barcode_array = $barcode_array;
+       }
+
+       /**
+        * Returns a barcode array which is readable by TCPDF
+        * @return array barcode array readable by TCPDF;
+        * @public
+        */
+       public function getBarcodeArray() {
+               return $this->barcode_array;
+       }
+
+       /**
+        * Convert the frame in binary form
+        * @param $frame (array) array to binarize
+        * @return array frame in binary form
+        */
+       protected function binarize($frame) {
+               $len = count($frame);
+               // the frame is square (width = height)
+               foreach ($frame as &$frameLine) {
+                       for ($i=0; $i<$len; $i++) {
+                               $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0';
+                       }
+               }
+               return $frame;
+       }
+
+       /**
+        * Encode the input string to QR code
+        * @param $string (string) input string to encode
+        */
+       protected function encodeString($string) {
+               $this->dataStr = $string;
+               if (!$this->casesensitive) {
+                       $this->toUpper();
+               }
+               $ret = $this->splitString();
+               if ($ret < 0) {
+                       return NULL;
+               }
+               $this->encodeMask(-1);
+       }
+
+       /**
+        * Encode mask
+        * @param $mask (int) masking mode
+        */
+       protected function encodeMask($mask) {
+               $spec = array(0, 0, 0, 0, 0);
+               $this->datacode = $this->getByteStream($this->items);
+               if (is_null($this->datacode)) {
+                       return NULL;
+               }
+               $spec = $this->getEccSpec($this->version, $this->level, $spec);
+               $this->b1 = $this->rsBlockNum1($spec);
+               $this->dataLength = $this->rsDataLength($spec);
+               $this->eccLength = $this->rsEccLength($spec);
+               $this->ecccode = array_fill(0, $this->eccLength, 0);
+               $this->blocks = $this->rsBlockNum($spec);
+               $ret = $this->init($spec);
+               if ($ret < 0) {
+                       return NULL;
+               }
+               $this->count = 0;
+               $this->width = $this->getWidth($this->version);
+               $this->frame = $this->newFrame($this->version);
+               $this->x = $this->width - 1;
+               $this->y = $this->width - 1;
+               $this->dir = -1;
+               $this->bit = -1;
+               // inteleaved data and ecc codes
+               for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) {
+                       $code = $this->getCode();
+                       $bit = 0x80;
+                       for ($j=0; $j<8; $j++) {
+                               $addr = $this->getNextPosition();
+                               $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0));
+                               $bit = $bit >> 1;
+                       }
+               }
+               // remainder bits
+               $j = $this->getRemainder($this->version);
+               for ($i=0; $i<$j; $i++) {
+                       $addr = $this->getNextPosition();
+                       $this->setFrameAt($addr, 0x02);
+               }
+               // masking
+               $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0);
+               if ($mask < 0) {
+                       if (QR_FIND_BEST_MASK) {
+                               $masked = $this->mask($this->width, $this->frame, $this->level);
+                       } else {
+                               $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level);
+                       }
+               } else {
+                       $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level);
+               }
+               if ($masked == NULL) {
+                       return NULL;
+               }
+               $this->data = $masked;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // FrameFiller
+
+       /**
+        * Set frame value at specified position
+        * @param $at (array) x,y position
+        * @param $val (int) value of the character to set
+        */
+       protected function setFrameAt($at, $val) {
+               $this->frame[$at['y']][$at['x']] = chr($val);
+       }
+
+       /**
+        * Get frame value at specified position
+        * @param $at (array) x,y position
+        * @return value at specified position
+        */
+       protected function getFrameAt($at) {
+               return ord($this->frame[$at['y']][$at['x']]);
+       }
+
+       /**
+        * Return the next frame position
+        * @return array of x,y coordinates
+        */
+       protected function getNextPosition() {
+               do {
+                       if ($this->bit == -1) {
+                               $this->bit = 0;
+                               return array('x'=>$this->x, 'y'=>$this->y);
+                       }
+                       $x = $this->x;
+                       $y = $this->y;
+                       $w = $this->width;
+                       if ($this->bit == 0) {
+                               $x--;
+                               $this->bit++;
+                       } else {
+                               $x++;
+                               $y += $this->dir;
+                               $this->bit--;
+                       }
+                       if ($this->dir < 0) {
+                               if ($y < 0) {
+                                       $y = 0;
+                                       $x -= 2;
+                                       $this->dir = 1;
+                                       if ($x == 6) {
+                                               $x--;
+                                               $y = 9;
+                                       }
+                               }
+                       } else {
+                               if ($y == $w) {
+                                       $y = $w - 1;
+                                       $x -= 2;
+                                       $this->dir = -1;
+                                       if ($x == 6) {
+                                               $x--;
+                                               $y -= 8;
+                                       }
+                               }
+                       }
+                       if (($x < 0) OR ($y < 0)) {
+                               return NULL;
+                       }
+                       $this->x = $x;
+                       $this->y = $y;
+               } while(ord($this->frame[$y][$x]) & 0x80);
+               return array('x'=>$x, 'y'=>$y);
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRrawcode
+
+       /**
+        * Initialize code.
+        * @param $spec (array) array of ECC specification
+        * @return 0 in case of success, -1 in case of error
+        */
+       protected function init($spec) {
+               $dl = $this->rsDataCodes1($spec);
+               $el = $this->rsEccCodes1($spec);
+               $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
+               $blockNo = 0;
+               $dataPos = 0;
+               $eccPos = 0;
+               $endfor = $this->rsBlockNum1($spec);
+               for ($i=0; $i < $endfor; ++$i) {
+                       $ecc = array_slice($this->ecccode, $eccPos);
+                       $this->rsblocks[$blockNo] = array();
+                       $this->rsblocks[$blockNo]['dataLength'] = $dl;
+                       $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
+                       $this->rsblocks[$blockNo]['eccLength'] = $el;
+                       $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
+                       $this->rsblocks[$blockNo]['ecc'] = $ecc;
+                       $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc);
+                       $dataPos += $dl;
+                       $eccPos += $el;
+                       $blockNo++;
+               }
+               if ($this->rsBlockNum2($spec) == 0) {
+                       return 0;
+               }
+               $dl = $this->rsDataCodes2($spec);
+               $el = $this->rsEccCodes2($spec);
+               $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el);
+               if ($rs == NULL) {
+                       return -1;
+               }
+               $endfor = $this->rsBlockNum2($spec);
+               for ($i=0; $i < $endfor; ++$i) {
+                       $ecc = array_slice($this->ecccode, $eccPos);
+                       $this->rsblocks[$blockNo] = array();
+                       $this->rsblocks[$blockNo]['dataLength'] = $dl;
+                       $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos);
+                       $this->rsblocks[$blockNo]['eccLength'] = $el;
+                       $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc);
+                       $this->rsblocks[$blockNo]['ecc'] = $ecc;
+                       $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc);
+                       $dataPos += $dl;
+                       $eccPos += $el;
+                       $blockNo++;
+               }
+               return 0;
+       }
+
+       /**
+        * Return Reed-Solomon block code.
+        * @return array rsblocks
+        */
+       protected function getCode() {
+               if ($this->count < $this->dataLength) {
+                       $row = $this->count % $this->blocks;
+                       $col = $this->count / $this->blocks;
+                       if ($col >= $this->rsblocks[0]['dataLength']) {
+                               $row += $this->b1;
+                       }
+                       $ret = $this->rsblocks[$row]['data'][$col];
+               } elseif ($this->count < $this->dataLength + $this->eccLength) {
+                       $row = ($this->count - $this->dataLength) % $this->blocks;
+                       $col = ($this->count - $this->dataLength) / $this->blocks;
+                       $ret = $this->rsblocks[$row]['ecc'][$col];
+               } else {
+                       return 0;
+               }
+               $this->count++;
+               return $ret;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRmask
+
+       /**
+        * Write Format Information on frame and returns the number of black bits
+        * @param $width (int) frame width
+        * @param $frame (array) frame
+        * @param $mask (array) masking mode
+        * @param $level (int) error correction level
+        * @return int blacks
+        */
+        protected function writeFormatInformation($width, &$frame, $mask, $level) {
+               $blacks = 0;
+               $format =  $this->getFormatInfo($mask, $level);
+               for ($i=0; $i<8; ++$i) {
+                       if ($format & 1) {
+                               $blacks += 2;
+                               $v = 0x85;
+                       } else {
+                               $v = 0x84;
+                       }
+                       $frame[8][$width - 1 - $i] = chr($v);
+                       if ($i < 6) {
+                               $frame[$i][8] = chr($v);
+                       } else {
+                               $frame[$i + 1][8] = chr($v);
+                       }
+                       $format = $format >> 1;
+               }
+               for ($i=0; $i<7; ++$i) {
+               if ($format & 1) {
+                       $blacks += 2;
+                       $v = 0x85;
+               } else {
+                       $v = 0x84;
+               }
+               $frame[$width - 7 + $i][8] = chr($v);
+               if ($i == 0) {
+                       $frame[8][7] = chr($v);
+               } else {
+                       $frame[8][6 - $i] = chr($v);
+               }
+               $format = $format >> 1;
+               }
+               return $blacks;
+       }
+
+       /**
+        * mask0
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask0($x, $y) {
+               return ($x + $y) & 1;
+       }
+
+       /**
+        * mask1
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask1($x, $y) {
+               return ($y & 1);
+       }
+
+       /**
+        * mask2
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask2($x, $y) {
+               return ($x % 3);
+       }
+
+       /**
+        * mask3
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask3($x, $y) {
+               return ($x + $y) % 3;
+       }
+
+       /**
+        * mask4
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask4($x, $y) {
+               return (((int)($y / 2)) + ((int)($x / 3))) & 1;
+       }
+
+       /**
+        * mask5
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask5($x, $y) {
+               return (($x * $y) & 1) + ($x * $y) % 3;
+       }
+
+       /**
+        * mask6
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask6($x, $y) {
+               return ((($x * $y) & 1) + ($x * $y) % 3) & 1;
+       }
+
+       /**
+        * mask7
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @return int mask
+        */
+        protected function mask7($x, $y) {
+               return ((($x * $y) % 3) + (($x + $y) & 1)) & 1;
+       }
+
+       /**
+        * Return bitmask
+        * @param $maskNo (int) mask number
+        * @param $width (int) width
+        * @param $frame (array) frame
+        * @return array bitmask
+        */
+       protected function generateMaskNo($maskNo, $width, $frame) {
+               $bitMask = array_fill(0, $width, array_fill(0, $width, 0));
+               for ($y=0; $y<$width; ++$y) {
+                       for ($x=0; $x<$width; ++$x) {
+                               if (ord($frame[$y][$x]) & 0x80) {
+                                       $bitMask[$y][$x] = 0;
+                               } else {
+                                       $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y);
+                                       $bitMask[$y][$x] = ($maskFunc == 0)?1:0;
+                               }
+                       }
+               }
+               return $bitMask;
+       }
+
+       /**
+        * makeMaskNo
+        * @param $maskNo (int)
+        * @param $width (int)
+        * @param $s (int)
+        * @param $d (int)
+        * @param $maskGenOnly (boolean)
+        * @return int b
+        */
+        protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) {
+               $b = 0;
+               $bitMask = array();
+               $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d);
+               if ($maskGenOnly) {
+                       return;
+               }
+               $d = $s;
+               for ($y=0; $y<$width; ++$y) {
+                       for ($x=0; $x<$width; ++$x) {
+                               if ($bitMask[$y][$x] == 1) {
+                                       $d[$y][$x] = chr(ord($s[$y][$x]) ^ ((int)($bitMask[$y][$x])));
+                               }
+                               $b += (int)(ord($d[$y][$x]) & 1);
+                       }
+               }
+               return $b;
+       }
+
+       /**
+        * makeMask
+        * @param $width (int)
+        * @param $frame (array)
+        * @param $maskNo (int)
+        * @param $level (int)
+        * @return array mask
+        */
+        protected function makeMask($width, $frame, $maskNo, $level) {
+               $masked = array_fill(0, $width, str_repeat("\0", $width));
+               $this->makeMaskNo($maskNo, $width, $frame, $masked);
+               $this->writeFormatInformation($width, $masked, $maskNo, $level);
+               return $masked;
+       }
+
+       /**
+        * calcN1N3
+        * @param $length (int)
+        * @return int demerit
+        */
+        protected function calcN1N3($length) {
+               $demerit = 0;
+               for ($i=0; $i<$length; ++$i) {
+                       if ($this->runLength[$i] >= 5) {
+                               $demerit += (N1 + ($this->runLength[$i] - 5));
+                       }
+                       if ($i & 1) {
+                               if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) {
+                                       $fact = (int)($this->runLength[$i] / 3);
+                                       if (($this->runLength[$i-2] == $fact)
+                                               AND ($this->runLength[$i-1] == $fact)
+                                               AND ($this->runLength[$i+1] == $fact)
+                                               AND ($this->runLength[$i+2] == $fact)) {
+                                               if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) {
+                                                       $demerit += N3;
+                                               } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) {
+                                                       $demerit += N3;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               return $demerit;
+       }
+
+       /**
+        * evaluateSymbol
+        * @param $width (int)
+        * @param $frame (array)
+        * @return int demerit
+        */
+        protected function evaluateSymbol($width, $frame) {
+               $head = 0;
+               $demerit = 0;
+               for ($y=0; $y<$width; ++$y) {
+                       $head = 0;
+                       $this->runLength[0] = 1;
+                       $frameY = $frame[$y];
+                       if ($y > 0) {
+                               $frameYM = $frame[$y-1];
+                       }
+                       for ($x=0; $x<$width; ++$x) {
+                               if (($x > 0) AND ($y > 0)) {
+                                       $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]);
+                                       $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]);
+                                       if (($b22 | ($w22 ^ 1)) & 1) {
+                                               $demerit += N2;
+                                       }
+                               }
+                               if (($x == 0) AND (ord($frameY[$x]) & 1)) {
+                                       $this->runLength[0] = -1;
+                                       $head = 1;
+                                       $this->runLength[$head] = 1;
+                               } elseif ($x > 0) {
+                                       if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) {
+                                               $head++;
+                                               $this->runLength[$head] = 1;
+                                       } else {
+                                               $this->runLength[$head]++;
+                                       }
+                               }
+                       }
+                       $demerit += $this->calcN1N3($head+1);
+               }
+               for ($x=0; $x<$width; ++$x) {
+                       $head = 0;
+                       $this->runLength[0] = 1;
+                       for ($y=0; $y<$width; ++$y) {
+                               if (($y == 0) AND (ord($frame[$y][$x]) & 1)) {
+                                       $this->runLength[0] = -1;
+                                       $head = 1;
+                                       $this->runLength[$head] = 1;
+                               } elseif ($y > 0) {
+                                       if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) {
+                                               $head++;
+                                               $this->runLength[$head] = 1;
+                                       } else {
+                                               $this->runLength[$head]++;
+                                       }
+                               }
+                       }
+                       $demerit += $this->calcN1N3($head+1);
+               }
+               return $demerit;
+       }
+
+       /**
+        * mask
+        * @param $width (int)
+        * @param $frame (array)
+        * @param $level (int)
+        * @return array best mask
+        */
+        protected function mask($width, $frame, $level) {
+               $minDemerit = PHP_INT_MAX;
+               $bestMaskNum = 0;
+               $bestMask = array();
+               $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7);
+               if (QR_FIND_FROM_RANDOM !== false) {
+                       $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9);
+                       for ($i = 0; $i <  $howManuOut; ++$i) {
+                               $remPos = rand (0, count($checked_masks)-1);
+                               unset($checked_masks[$remPos]);
+                               $checked_masks = array_values($checked_masks);
+                       }
+               }
+               $bestMask = $frame;
+               foreach ($checked_masks as $i) {
+                       $mask = array_fill(0, $width, str_repeat("\0", $width));
+                       $demerit = 0;
+                       $blacks = 0;
+                       $blacks  = $this->makeMaskNo($i, $width, $frame, $mask);
+                       $blacks += $this->writeFormatInformation($width, $mask, $i, $level);
+                       $blacks  = (int)(100 * $blacks / ($width * $width));
+                       $demerit = (int)((int)(abs($blacks - 50) / 5) * N4);
+                       $demerit += $this->evaluateSymbol($width, $mask);
+                       if ($demerit < $minDemerit) {
+                               $minDemerit = $demerit;
+                               $bestMask = $mask;
+                               $bestMaskNum = $i;
+                       }
+               }
+               return $bestMask;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRsplit
+
+       /**
+        * Return true if the character at specified position is a number
+        * @param $str (string) string
+        * @param $pos (int) characted position
+        * @return boolean true of false
+        */
+        protected function isdigitat($str, $pos) {
+               if ($pos >= strlen($str)) {
+                       return false;
+               }
+               return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9')));
+       }
+
+       /**
+        * Return true if the character at specified position is an alphanumeric character
+        * @param $str (string) string
+        * @param $pos (int) characted position
+        * @return boolean true of false
+        */
+        protected function isalnumat($str, $pos) {
+               if ($pos >= strlen($str)) {
+                       return false;
+               }
+               return ($this->lookAnTable(ord($str[$pos])) >= 0);
+       }
+
+       /**
+        * identifyMode
+        * @param $pos (int)
+        * @return int mode
+        */
+        protected function identifyMode($pos) {
+               if ($pos >= strlen($this->dataStr)) {
+                       return QR_MODE_NL;
+               }
+               $c = $this->dataStr[$pos];
+               if ($this->isdigitat($this->dataStr, $pos)) {
+                       return QR_MODE_NM;
+               } elseif ($this->isalnumat($this->dataStr, $pos)) {
+                       return QR_MODE_AN;
+               } elseif ($this->hint == QR_MODE_KJ) {
+                       if ($pos+1 < strlen($this->dataStr)) {
+                               $d = $this->dataStr[$pos+1];
+                               $word = (ord($c) << 8) | ord($d);
+                               if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) {
+                                       return QR_MODE_KJ;
+                               }
+                       }
+               }
+               return QR_MODE_8B;
+       }
+
+       /**
+        * eatNum
+        * @return int run
+        */
+        protected function eatNum() {
+               $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
+               $p = 0;
+               while($this->isdigitat($this->dataStr, $p)) {
+                       $p++;
+               }
+               $run = $p;
+               $mode = $this->identifyMode($p);
+               if ($mode == QR_MODE_8B) {
+                       $dif = $this->estimateBitsModeNum($run) + 4 + $ln
+                       + $this->estimateBitsMode8(1)         // + 4 + l8
+                       - $this->estimateBitsMode8($run + 1); // - 4 - l8
+                       if ($dif > 0) {
+                               return $this->eat8();
+                       }
+               }
+               if ($mode == QR_MODE_AN) {
+                       $dif = $this->estimateBitsModeNum($run) + 4 + $ln
+                       + $this->estimateBitsModeAn(1)        // + 4 + la
+                       - $this->estimateBitsModeAn($run + 1);// - 4 - la
+                       if ($dif > 0) {
+                               return $this->eatAn();
+                       }
+               }
+               $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr));
+               return $run;
+       }
+
+       /**
+        * eatAn
+        * @return int run
+        */
+        protected function eatAn() {
+               $la = $this->lengthIndicator(QR_MODE_AN,  $this->version);
+               $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
+               $p =1 ;
+               while($this->isalnumat($this->dataStr, $p)) {
+                       if ($this->isdigitat($this->dataStr, $p)) {
+                               $q = $p;
+                               while($this->isdigitat($this->dataStr, $q)) {
+                                       $q++;
+                               }
+                               $dif = $this->estimateBitsModeAn($p) // + 4 + la
+                               + $this->estimateBitsModeNum($q - $p) + 4 + $ln
+                               - $this->estimateBitsModeAn($q); // - 4 - la
+                               if ($dif < 0) {
+                                       break;
+                               } else {
+                                       $p = $q;
+                               }
+                       } else {
+                               $p++;
+                       }
+               }
+               $run = $p;
+               if (!$this->isalnumat($this->dataStr, $p)) {
+                       $dif = $this->estimateBitsModeAn($run) + 4 + $la
+                       + $this->estimateBitsMode8(1) // + 4 + l8
+                       - $this->estimateBitsMode8($run + 1); // - 4 - l8
+                       if ($dif > 0) {
+                               return $this->eat8();
+                       }
+               }
+               $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr));
+               return $run;
+       }
+
+       /**
+        * eatKanji
+        * @return int run
+        */
+        protected function eatKanji() {
+               $p = 0;
+               while($this->identifyMode($p) == QR_MODE_KJ) {
+                       $p += 2;
+               }
+               $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr));
+               return $run;
+       }
+
+       /**
+        * eat8
+        * @return int run
+        */
+        protected function eat8() {
+               $la = $this->lengthIndicator(QR_MODE_AN, $this->version);
+               $ln = $this->lengthIndicator(QR_MODE_NM, $this->version);
+               $p = 1;
+               $dataStrLen = strlen($this->dataStr);
+               while($p < $dataStrLen) {
+                       $mode = $this->identifyMode($p);
+                       if ($mode == QR_MODE_KJ) {
+                               break;
+                       }
+                       if ($mode == QR_MODE_NM) {
+                               $q = $p;
+                               while($this->isdigitat($this->dataStr, $q)) {
+                                       $q++;
+                               }
+                               $dif = $this->estimateBitsMode8($p) // + 4 + l8
+                               + $this->estimateBitsModeNum($q - $p) + 4 + $ln
+                               - $this->estimateBitsMode8($q); // - 4 - l8
+                               if ($dif < 0) {
+                                       break;
+                               } else {
+                                       $p = $q;
+                               }
+                       } elseif ($mode == QR_MODE_AN) {
+                               $q = $p;
+                               while($this->isalnumat($this->dataStr, $q)) {
+                                       $q++;
+                               }
+                               $dif = $this->estimateBitsMode8($p)  // + 4 + l8
+                               + $this->estimateBitsModeAn($q - $p) + 4 + $la
+                               - $this->estimateBitsMode8($q); // - 4 - l8
+                               if ($dif < 0) {
+                                       break;
+                               } else {
+                                       $p = $q;
+                               }
+                       } else {
+                               $p++;
+                       }
+               }
+               $run = $p;
+               $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr));
+               return $run;
+       }
+
+       /**
+        * splitString
+        * @return (int)
+        */
+        protected function splitString() {
+               while (strlen($this->dataStr) > 0) {
+                       $mode = $this->identifyMode(0);
+                       switch ($mode) {
+                               case QR_MODE_NM: {
+                                       $length = $this->eatNum();
+                                       break;
+                               }
+                               case QR_MODE_AN: {
+                                       $length = $this->eatAn();
+                                       break;
+                               }
+                               case QR_MODE_KJ: {
+                                       if ($hint == QR_MODE_KJ) {
+                                               $length = $this->eatKanji();
+                                       } else {
+                                               $length = $this->eat8();
+                                       }
+                                       break;
+                               }
+                               default: {
+                                       $length = $this->eat8();
+                                       break;
+                               }
+                       }
+                       if ($length == 0) {
+                               return 0;
+                       }
+                       if ($length < 0) {
+                               return -1;
+                       }
+                       $this->dataStr = substr($this->dataStr, $length);
+               }
+               return 0;
+       }
+
+       /**
+        * toUpper
+        */
+        protected function toUpper() {
+               $stringLen = strlen($this->dataStr);
+               $p = 0;
+               while ($p < $stringLen) {
+                       $mode = $this->identifyMode(substr($this->dataStr, $p), $this->hint);
+                       if ($mode == QR_MODE_KJ) {
+                               $p += 2;
+                       } else {
+                               if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) {
+                                       $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32);
+                               }
+                               $p++;
+                       }
+               }
+               return $this->dataStr;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRinputItem
+
+       /**
+        * newInputItem
+        * @param $mode (int)
+        * @param $size (int)
+        * @param $data (array)
+        * @param $bstream (array)
+        * @return array input item
+        */
+        protected function newInputItem($mode, $size, $data, $bstream=null) {
+               $setData = array_slice($data, 0, $size);
+               if (count($setData) < $size) {
+                       $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0));
+               }
+               if (!$this->check($mode, $size, $setData)) {
+                       return NULL;
+               }
+               $inputitem = array();
+               $inputitem['mode'] = $mode;
+               $inputitem['size'] = $size;
+               $inputitem['data'] = $setData;
+               $inputitem['bstream'] = $bstream;
+               return $inputitem;
+       }
+
+       /**
+        * encodeModeNum
+        * @param $inputitem (array)
+        * @param $version (int)
+        * @return array input item
+        */
+        protected function encodeModeNum($inputitem, $version) {
+               $words = (int)($inputitem['size'] / 3);
+               $inputitem['bstream'] = array();
+               $val = 0x1;
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']);
+               for ($i=0; $i < $words; ++$i) {
+                       $val  = (ord($inputitem['data'][$i*3  ]) - ord('0')) * 100;
+                       $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10;
+                       $val += (ord($inputitem['data'][$i*3+2]) - ord('0'));
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val);
+               }
+               if ($inputitem['size'] - $words * 3 == 1) {
+                       $val = ord($inputitem['data'][$words*3]) - ord('0');
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val);
+               } elseif (($inputitem['size'] - ($words * 3)) == 2) {
+                       $val  = (ord($inputitem['data'][$words*3  ]) - ord('0')) * 10;
+                       $val += (ord($inputitem['data'][$words*3+1]) - ord('0'));
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val);
+               }
+               return $inputitem;
+       }
+
+       /**
+        * encodeModeAn
+        * @param $inputitem (array)
+        * @param $version (int)
+        * @return array input item
+        */
+        protected function encodeModeAn($inputitem, $version) {
+               $words = (int)($inputitem['size'] / 2);
+               $inputitem['bstream'] = array();
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']);
+               for ($i=0; $i < $words; ++$i) {
+                       $val  = (int)($this->lookAnTable(ord($inputitem['data'][$i*2])) * 45);
+                       $val += (int)($this->lookAnTable(ord($inputitem['data'][($i*2)+1])));
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val);
+               }
+               if ($inputitem['size'] & 1) {
+                       $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)]));
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val);
+               }
+               return $inputitem;
+       }
+
+       /**
+        * encodeMode8
+        * @param $inputitem (array)
+        * @param $version (int)
+        * @return array input item
+        */
+        protected function encodeMode8($inputitem, $version) {
+               $inputitem['bstream'] = array();
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']);
+               for ($i=0; $i < $inputitem['size']; ++$i) {
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i]));
+               }
+               return $inputitem;
+       }
+
+       /**
+        * encodeModeKanji
+        * @param $inputitem (array)
+        * @param $version (int)
+        * @return array input item
+        */
+        protected function encodeModeKanji($inputitem, $version) {
+               $inputitem['bstream'] = array();
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2));
+               for ($i=0; $i<$inputitem['size']; $i+=2) {
+                       $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]);
+                       if ($val <= 0x9ffc) {
+                               $val -= 0x8140;
+                       } else {
+                               $val -= 0xc140;
+                       }
+                       $h = ($val >> 8) * 0xc0;
+                       $val = ($val & 0xff) + $h;
+                       $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val);
+               }
+               return $inputitem;
+       }
+
+       /**
+        * encodeModeStructure
+        * @param $inputitem (array)
+        * @return array input item
+        */
+        protected function encodeModeStructure($inputitem) {
+               $inputitem['bstream'] = array();
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1);
+               $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2]));
+               return $inputitem;
+       }
+
+       /**
+        * encodeBitStream
+        * @param $inputitem (array)
+        * @param $version (int)
+        * @return array input item
+        */
+        protected function encodeBitStream($inputitem, $version) {
+               $inputitem['bstream'] = array();
+               $words = $this->maximumWords($inputitem['mode'], $version);
+               if ($inputitem['size'] > $words) {
+                       $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']);
+                       $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words));
+                       $st1 = $this->encodeBitStream($st1, $version);
+                       $st2 = $this->encodeBitStream($st2, $version);
+                       $inputitem['bstream'] = array();
+                       $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']);
+                       $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']);
+               } else {
+                       switch($inputitem['mode']) {
+                               case QR_MODE_NM: {
+                                       $inputitem = $this->encodeModeNum($inputitem, $version);
+                                       break;
+                               }
+                               case QR_MODE_AN: {
+                                       $inputitem = $this->encodeModeAn($inputitem, $version);
+                                       break;
+                               }
+                               case QR_MODE_8B: {
+                                       $inputitem = $this->encodeMode8($inputitem, $version);
+                                       break;
+                               }
+                               case QR_MODE_KJ: {
+                                       $inputitem = $this->encodeModeKanji($inputitem, $version);
+                                       break;
+                               }
+                               case QR_MODE_ST: {
+                                       $inputitem = $this->encodeModeStructure($inputitem);
+                                       break;
+                               }
+                               default: {
+                                       break;
+                               }
+                       }
+               }
+               return $inputitem;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRinput
+
+       /**
+        * Append data to an input object.
+        * The data is copied and appended to the input object.
+        * @param $items (arrray) input items
+        * @param $mode (int) encoding mode.
+        * @param $size (int) size of data (byte).
+        * @param $data (array) array of input data.
+        * @return items
+        *
+        */
+       protected function appendNewInputItem($items, $mode, $size, $data) {
+               $newitem = $this->newInputItem($mode, $size, $data);
+               if (!empty($newitem)) {
+                       $items[] = $newitem;
+               }
+               return $items;
+       }
+
+       /**
+        * insertStructuredAppendHeader
+        * @param $items (array)
+        * @param $size (int)
+        * @param $index (int)
+        * @param $parity (int)
+        * @return array items
+        */
+        protected function insertStructuredAppendHeader($items, $size, $index, $parity) {
+               if ($size > MAX_STRUCTURED_SYMBOLS) {
+                       return -1;
+               }
+               if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) {
+                       return -1;
+               }
+               $buf = array($size, $index, $parity);
+               $entry = $this->newInputItem(QR_MODE_ST, 3, buf);
+               array_unshift($items, $entry);
+               return $items;
+       }
+
+       /**
+        * calcParity
+        * @param $items (array)
+        * @return int parity
+        */
+        protected function calcParity($items) {
+               $parity = 0;
+               foreach ($items as $item) {
+                       if ($item['mode'] != QR_MODE_ST) {
+                               for ($i=$item['size']-1; $i>=0; --$i) {
+                                       $parity ^= $item['data'][$i];
+                               }
+                       }
+               }
+               return $parity;
+       }
+
+       /**
+        * checkModeNum
+        * @param $size (int)
+        * @param $data (array)
+        * @return boolean true or false
+        */
+        protected function checkModeNum($size, $data) {
+               for ($i=0; $i<$size; ++$i) {
+                       if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       /**
+        * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19).
+        * @param $c (int) character value
+        * @return value
+        */
+       protected function lookAnTable($c) {
+               return (($c > 127)?-1:$this->anTable[$c]);
+       }
+
+       /**
+        * checkModeAn
+        * @param $size (int)
+        * @param $data (array)
+        * @return boolean true or false
+        */
+        protected function checkModeAn($size, $data) {
+               for ($i=0; $i<$size; ++$i) {
+                       if ($this->lookAnTable(ord($data[$i])) == -1) {
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       /**
+        * estimateBitsModeNum
+        * @param $size (int)
+        * @return int number of bits
+        */
+        protected function estimateBitsModeNum($size) {
+               $w = (int)($size / 3);
+               $bits = ($w * 10);
+               switch($size - ($w * 3)) {
+                       case 1: {
+                               $bits += 4;
+                               break;
+                       }
+                       case 2: {
+                               $bits += 7;
+                               break;
+                       }
+               }
+               return $bits;
+       }
+
+       /**
+        * estimateBitsModeAn
+        * @param $size (int)
+        * @return int number of bits
+        */
+        protected function estimateBitsModeAn($size) {
+               $bits = (int)($size * 5.5); // (size / 2 ) * 11
+               if ($size & 1) {
+                       $bits += 6;
+               }
+               return $bits;
+       }
+
+       /**
+        * estimateBitsMode8
+        * @param $size (int)
+        * @return int number of bits
+        */
+        protected function estimateBitsMode8($size) {
+               return (int)($size * 8);
+       }
+
+       /**
+        * estimateBitsModeKanji
+        * @param $size (int)
+        * @return int number of bits
+        */
+        protected function estimateBitsModeKanji($size) {
+               return (int)($size * 6.5); // (size / 2 ) * 13
+       }
+
+       /**
+        * checkModeKanji
+        * @param $size (int)
+        * @param $data (array)
+        * @return boolean true or false
+        */
+        protected function checkModeKanji($size, $data) {
+               if ($size & 1) {
+                       return false;
+               }
+               for ($i=0; $i<$size; $i+=2) {
+                       $val = (ord($data[$i]) << 8) | ord($data[$i+1]);
+                       if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) {
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       /**
+        * Validate the input data.
+        * @param $mode (int) encoding mode.
+        * @param $size (int) size of data (byte).
+        * @param $data (array) data to validate
+        * @return boolean true in case of valid data, false otherwise
+        */
+       protected function check($mode, $size, $data) {
+               if ($size <= 0) {
+                       return false;
+               }
+               switch($mode) {
+                       case QR_MODE_NM: {
+                               return $this->checkModeNum($size, $data);
+                       }
+                       case QR_MODE_AN: {
+                               return $this->checkModeAn($size, $data);
+                       }
+                       case QR_MODE_KJ: {
+                               return $this->checkModeKanji($size, $data);
+                       }
+                       case QR_MODE_8B: {
+                               return true;
+                       }
+                       case QR_MODE_ST: {
+                               return true;
+                       }
+                       default: {
+                               break;
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * estimateBitStreamSize
+        * @param $items (array)
+        * @param $version (int)
+        * @return int bits
+        */
+        protected function estimateBitStreamSize($items, $version) {
+               $bits = 0;
+               if ($version == 0) {
+                       $version = 1;
+               }
+               foreach ($items as $item) {
+                       switch($item['mode']) {
+                               case QR_MODE_NM: {
+                                       $bits = $this->estimateBitsModeNum($item['size']);
+                                       break;
+                               }
+                               case QR_MODE_AN: {
+                                       $bits = $this->estimateBitsModeAn($item['size']);
+                                       break;
+                               }
+                               case QR_MODE_8B: {
+                                       $bits = $this->estimateBitsMode8($item['size']);
+                                       break;
+                               }
+                               case QR_MODE_KJ: {
+                                       $bits = $this->estimateBitsModeKanji($item['size']);
+                                       break;
+                               }
+                               case QR_MODE_ST: {
+                                       return STRUCTURE_HEADER_BITS;
+                               }
+                               default: {
+                                       return 0;
+                               }
+                       }
+                       $l = $this->lengthIndicator($item['mode'], $version);
+                       $m = 1 << $l;
+                       $num = (int)(($item['size'] + $m - 1) / $m);
+                       $bits += $num * (4 + $l);
+               }
+               return $bits;
+       }
+
+       /**
+        * estimateVersion
+        * @param $items (array)
+        * @return int version
+        */
+        protected function estimateVersion($items) {
+               $version = 0;
+               $prev = 0;
+               do {
+                       $prev = $version;
+                       $bits = $this->estimateBitStreamSize($items, $prev);
+                       $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
+                       if ($version < 0) {
+                               return -1;
+                       }
+               } while ($version > $prev);
+               return $version;
+       }
+
+       /**
+        * lengthOfCode
+        * @param $mode (int)
+        * @param $version (int)
+        * @param $bits (int)
+        * @return int size
+        */
+        protected function lengthOfCode($mode, $version, $bits) {
+               $payload = $bits - 4 - $this->lengthIndicator($mode, $version);
+               switch($mode) {
+                       case QR_MODE_NM: {
+                               $chunks = (int)($payload / 10);
+                               $remain = $payload - $chunks * 10;
+                               $size = $chunks * 3;
+                               if ($remain >= 7) {
+                                       $size += 2;
+                               } elseif ($remain >= 4) {
+                                       $size += 1;
+                               }
+                               break;
+                       }
+                       case QR_MODE_AN: {
+                               $chunks = (int)($payload / 11);
+                               $remain = $payload - $chunks * 11;
+                               $size = $chunks * 2;
+                               if ($remain >= 6) {
+                                       ++$size;
+                               }
+                               break;
+                       }
+                       case QR_MODE_8B: {
+                               $size = (int)($payload / 8);
+                               break;
+                       }
+                       case QR_MODE_KJ: {
+                               $size = (int)(($payload / 13) * 2);
+                               break;
+                       }
+                       case QR_MODE_ST: {
+                               $size = (int)($payload / 8);
+                               break;
+                       }
+                       default: {
+                               $size = 0;
+                               break;
+                       }
+               }
+               $maxsize = $this->maximumWords($mode, $version);
+               if ($size < 0) {
+                       $size = 0;
+               }
+               if ($size > $maxsize) {
+                       $size = $maxsize;
+               }
+               return $size;
+       }
+
+       /**
+        * createBitStream
+        * @param $items (array)
+        * @return array of items and total bits
+        */
+        protected function createBitStream($items) {
+               $total = 0;
+               foreach ($items as $key => $item) {
+                       $items[$key] = $this->encodeBitStream($item, $this->version);
+                       $bits = count($items[$key]['bstream']);
+                       $total += $bits;
+               }
+               return array($items, $total);
+       }
+
+       /**
+        * convertData
+        * @param $items (array)
+        * @return array items
+        */
+        protected function convertData($items) {
+               $ver = $this->estimateVersion($items);
+               if ($ver > $this->version) {
+                       $this->version = $ver;
+               }
+               while (true) {
+                       $cbs = $this->createBitStream($items);
+                       $items = $cbs[0];
+                       $bits = $cbs[1];
+                       if ($bits < 0) {
+                               return -1;
+                       }
+                       $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level);
+                       if ($ver < 0) {
+                               return -1;
+                       } elseif ($ver > $this->version) {
+                               $this->version = $ver;
+                       } else {
+                               break;
+                       }
+               }
+               return $items;
+       }
+
+       /**
+        * Append Padding Bit to bitstream
+        * @param $bstream (array)
+        * @return array bitstream
+        */
+        protected function appendPaddingBit($bstream) {
+               if (is_null($bstream)) {
+                       return null;
+               }
+               $bits = count($bstream);
+               $maxwords = $this->getDataLength($this->version, $this->level);
+               $maxbits = $maxwords * 8;
+               if ($maxbits == $bits) {
+                       return $bstream;
+               }
+               if ($maxbits - $bits < 5) {
+                       return $this->appendNum($bstream, $maxbits - $bits, 0);
+               }
+               $bits += 4;
+               $words = (int)(($bits + 7) / 8);
+               $padding = array();
+               $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0);
+               $padlen = $maxwords - $words;
+               if ($padlen > 0) {
+                       $padbuf = array();
+                       for ($i=0; $i<$padlen; ++$i) {
+                               $padbuf[$i] = ($i&1)?0x11:0xec;
+                       }
+                       $padding = $this->appendBytes($padding, $padlen, $padbuf);
+               }
+               return $this->appendBitstream($bstream, $padding);
+       }
+
+       /**
+        * mergeBitStream
+        * @param $items (array) items
+        * @return array bitstream
+        */
+        protected function mergeBitStream($items) {
+               $items = $this->convertData($items);
+               if (!is_array($items)) {
+                       return null;
+               }
+               $bstream = array();
+               foreach ($items as $item) {
+                       $bstream = $this->appendBitstream($bstream, $item['bstream']);
+               }
+               return $bstream;
+       }
+
+       /**
+        * Returns a stream of bits.
+        * @param $items (int)
+        * @return array padded merged byte stream
+        */
+       protected function getBitStream($items) {
+               $bstream = $this->mergeBitStream($items);
+               return $this->appendPaddingBit($bstream);
+       }
+
+       /**
+        * Pack all bit streams padding bits into a byte array.
+        * @param $items (int)
+        * @return array padded merged byte stream
+        */
+       protected function getByteStream($items) {
+               $bstream = $this->getBitStream($items);
+               return $this->bitstreamToByte($bstream);
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRbitstream
+
+       /**
+        * Return an array with zeros
+        * @param $setLength (int) array size
+        * @return array
+        */
+        protected function allocate($setLength) {
+               return array_fill(0, $setLength, 0);
+       }
+
+       /**
+        * Return new bitstream from number
+        * @param $bits (int) number of bits
+        * @param $num (int) number
+        * @return array bitstream
+        */
+        protected function newFromNum($bits, $num) {
+               $bstream = $this->allocate($bits);
+               $mask = 1 << ($bits - 1);
+               for ($i=0; $i<$bits; ++$i) {
+                       if ($num & $mask) {
+                               $bstream[$i] = 1;
+                       } else {
+                               $bstream[$i] = 0;
+                       }
+                       $mask = $mask >> 1;
+               }
+               return $bstream;
+       }
+
+       /**
+        * Return new bitstream from bytes
+        * @param $size (int) size
+        * @param $data (array) bytes
+        * @return array bitstream
+        */
+        protected function newFromBytes($size, $data) {
+               $bstream = $this->allocate($size * 8);
+               $p=0;
+               for ($i=0; $i<$size; ++$i) {
+                       $mask = 0x80;
+                       for ($j=0; $j<8; ++$j) {
+                               if ($data[$i] & $mask) {
+                                       $bstream[$p] = 1;
+                               } else {
+                                       $bstream[$p] = 0;
+                               }
+                               $p++;
+                               $mask = $mask >> 1;
+                       }
+               }
+               return $bstream;
+       }
+
+       /**
+        * Append one bitstream to another
+        * @param $bitstream (array) original bitstream
+        * @param $append (array) bitstream to append
+        * @return array bitstream
+        */
+        protected function appendBitstream($bitstream, $append) {
+               if ((!is_array($append)) OR (count($append) == 0)) {
+                       return $bitstream;
+               }
+               if (count($bitstream) == 0) {
+                       return $append;
+               }
+               return array_values(array_merge($bitstream, $append));
+       }
+
+       /**
+        * Append one bitstream created from number to another
+        * @param $bitstream (array) original bitstream
+        * @param $bits (int) number of bits
+        * @param $num (int) number
+        * @return array bitstream
+        */
+        protected function appendNum($bitstream, $bits, $num) {
+               if ($bits == 0) {
+                       return 0;
+               }
+               $b = $this->newFromNum($bits, $num);
+               return $this->appendBitstream($bitstream, $b);
+       }
+
+       /**
+        * Append one bitstream created from bytes to another
+        * @param $bitstream (array) original bitstream
+        * @param $size (int) size
+        * @param $data (array) bytes
+        * @return array bitstream
+        */
+        protected function appendBytes($bitstream, $size, $data) {
+               if ($size == 0) {
+                       return 0;
+               }
+               $b = $this->newFromBytes($size, $data);
+               return $this->appendBitstream($bitstream, $b);
+       }
+
+       /**
+        * Convert bitstream to bytes
+        * @param $bstream (array) original bitstream
+        * @return array of bytes
+        */
+        protected function bitstreamToByte($bstream) {
+               if (is_null($bstream)) {
+                       return null;
+               }
+               $size = count($bstream);
+               if ($size == 0) {
+                       return array();
+               }
+               $data = array_fill(0, (int)(($size + 7) / 8), 0);
+               $bytes = (int)($size / 8);
+               $p = 0;
+               for ($i=0; $i<$bytes; $i++) {
+                       $v = 0;
+                       for ($j=0; $j<8; $j++) {
+                               $v = $v << 1;
+                               $v |= $bstream[$p];
+                               $p++;
+                       }
+                       $data[$i] = $v;
+               }
+               if ($size & 7) {
+                       $v = 0;
+                       for ($j=0; $j<($size & 7); $j++) {
+                               $v = $v << 1;
+                               $v |= $bstream[$p];
+                               $p++;
+                       }
+                       $data[$bytes] = $v;
+               }
+               return $data;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRspec
+
+       /**
+        * Replace a value on the array at the specified position
+        * @param $srctab (array)
+        * @param $x (int) X position
+        * @param $y (int) Y position
+        * @param $repl (string) value to replace
+        * @param $replLen (int) length of the repl string
+        * @return array srctab
+        */
+        protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) {
+               $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl));
+               return $srctab;
+       }
+
+       /**
+        * Return maximum data code length (bytes) for the version.
+        * @param $version (int) version
+        * @param $level (int) error correction level
+        * @return int maximum size (bytes)
+        */
+       protected function getDataLength($version, $level) {
+               return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level];
+       }
+
+       /**
+        * Return maximum error correction code length (bytes) for the version.
+        * @param $version (int) version
+        * @param $level (int) error correction level
+        * @return int ECC size (bytes)
+        */
+       protected function getECCLength($version, $level){
+               return $this->capacity[$version][QRCAP_EC][$level];
+       }
+
+       /**
+        * Return the width of the symbol for the version.
+        * @param $version (int) version
+        * @return int width
+        */
+       protected function getWidth($version) {
+               return $this->capacity[$version][QRCAP_WIDTH];
+       }
+
+       /**
+        * Return the numer of remainder bits.
+        * @param $version (int) version
+        * @return int number of remainder bits
+        */
+       protected function getRemainder($version) {
+               return $this->capacity[$version][QRCAP_REMINDER];
+       }
+
+       /**
+        * Return a version number that satisfies the input code length.
+        * @param $size (int) input code length (bytes)
+        * @param $level (int) error correction level
+        * @return int version number
+        */
+       protected function getMinimumVersion($size, $level) {
+               for ($i = 1; $i <= QRSPEC_VERSION_MAX; ++$i) {
+                       $words = ($this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level]);
+                       if ($words >= $size) {
+                               return $i;
+                       }
+               }
+               // the size of input data is greater than QR capacity, try to lover the error correction mode
+               return -1;
+       }
+
+       /**
+        * Return the size of length indicator for the mode and version.
+        * @param $mode (int) encoding mode
+        * @param $version (int) version
+        * @return int the size of the appropriate length indicator (bits).
+        */
+       protected function lengthIndicator($mode, $version) {
+               if ($mode == QR_MODE_ST) {
+                       return 0;
+               }
+               if ($version <= 9) {
+                       $l = 0;
+               } elseif ($version <= 26) {
+                       $l = 1;
+               } else {
+                       $l = 2;
+               }
+               return $this->lengthTableBits[$mode][$l];
+       }
+
+       /**
+        * Return the maximum length for the mode and version.
+        * @param $mode (int) encoding mode
+        * @param $version (int) version
+        * @return int the maximum length (bytes)
+        */
+       protected function maximumWords($mode, $version) {
+               if ($mode == QR_MODE_ST) {
+                       return 3;
+               }
+               if ($version <= 9) {
+                       $l = 0;
+               } else if ($version <= 26) {
+                       $l = 1;
+               } else {
+                       $l = 2;
+               }
+               $bits = $this->lengthTableBits[$mode][$l];
+               $words = (1 << $bits) - 1;
+               if ($mode == QR_MODE_KJ) {
+                       $words *= 2; // the number of bytes is required
+               }
+               return $words;
+       }
+
+       /**
+        * Return an array of ECC specification.
+        * @param $version (int) version
+        * @param $level (int) error correction level
+        * @param $spec (array) an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code}
+        * @return array spec
+        */
+       protected function getEccSpec($version, $level, $spec) {
+               if (count($spec) < 5) {
+                       $spec = array(0, 0, 0, 0, 0);
+               }
+               $b1 = $this->eccTable[$version][$level][0];
+               $b2 = $this->eccTable[$version][$level][1];
+               $data = $this->getDataLength($version, $level);
+               $ecc = $this->getECCLength($version, $level);
+               if ($b2 == 0) {
+                       $spec[0] = $b1;
+                       $spec[1] = (int)($data / $b1);
+                       $spec[2] = (int)($ecc / $b1);
+                       $spec[3] = 0;
+                       $spec[4] = 0;
+               } else {
+                       $spec[0] = $b1;
+                       $spec[1] = (int)($data / ($b1 + $b2));
+                       $spec[2] = (int)($ecc  / ($b1 + $b2));
+                       $spec[3] = $b2;
+                       $spec[4] = $spec[1] + 1;
+               }
+               return $spec;
+       }
+
+       /**
+        * Put an alignment marker.
+        * @param $frame (array) frame
+        * @param $ox (int) X center coordinate of the pattern
+        * @param $oy (int) Y center coordinate of the pattern
+        * @return array frame
+        */
+       protected function putAlignmentMarker($frame, $ox, $oy) {
+               $finder = array(
+                       "\xa1\xa1\xa1\xa1\xa1",
+                       "\xa1\xa0\xa0\xa0\xa1",
+                       "\xa1\xa0\xa1\xa0\xa1",
+                       "\xa1\xa0\xa0\xa0\xa1",
+                       "\xa1\xa1\xa1\xa1\xa1"
+                       );
+               $yStart = $oy - 2;
+               $xStart = $ox - 2;
+               for ($y=0; $y < 5; $y++) {
+                       $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]);
+               }
+               return $frame;
+       }
+
+       /**
+        * Put an alignment pattern.
+        * @param $version (int) version
+        * @param $frame (array) frame
+        * @param $width (int) width
+        * @return array frame
+        */
+        protected function putAlignmentPattern($version, $frame, $width) {
+               if ($version < 2) {
+                       return $frame;
+               }
+               $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0];
+               if ($d < 0) {
+                       $w = 2;
+               } else {
+                       $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2);
+               }
+               if ($w * $w - 3 == 1) {
+                       $x = $this->alignmentPattern[$version][0];
+                       $y = $this->alignmentPattern[$version][0];
+                       $frame = $this->putAlignmentMarker($frame, $x, $y);
+                       return $frame;
+               }
+               $cx = $this->alignmentPattern[$version][0];
+               $wo = $w - 1;
+               for ($x=1; $x < $wo; ++$x) {
+                       $frame = $this->putAlignmentMarker($frame, 6, $cx);
+                       $frame = $this->putAlignmentMarker($frame, $cx,  6);
+                       $cx += $d;
+               }
+               $cy = $this->alignmentPattern[$version][0];
+               for ($y=0; $y < $wo; ++$y) {
+                       $cx = $this->alignmentPattern[$version][0];
+                       for ($x=0; $x < $wo; ++$x) {
+                               $frame = $this->putAlignmentMarker($frame, $cx, $cy);
+                               $cx += $d;
+                       }
+                       $cy += $d;
+               }
+               return $frame;
+       }
+
+       /**
+        * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits.
+        * @param $version (int) version
+        * @return BCH encoded version information pattern
+        */
+       protected function getVersionPattern($version) {
+               if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) {
+                       return 0;
+               }
+               return $this->versionPattern[($version - 7)];
+       }
+
+       /**
+        * Return BCH encoded format information pattern.
+        * @param $mask (array)
+        * @param $level (int) error correction level
+        * @return BCH encoded format information pattern
+        */
+       protected function getFormatInfo($mask, $level) {
+               if (($mask < 0) OR ($mask > 7)) {
+                       return 0;
+               }
+               if (($level < 0) OR ($level > 3)) {
+                       return 0;
+               }
+               return $this->formatInfo[$level][$mask];
+       }
+
+       /**
+        * Put a finder pattern.
+        * @param $frame (array) frame
+        * @param $ox (int) X center coordinate of the pattern
+        * @param $oy (int) Y center coordinate of the pattern
+        * @return array frame
+        */
+       protected function putFinderPattern($frame, $ox, $oy) {
+               $finder = array(
+               "\xc1\xc1\xc1\xc1\xc1\xc1\xc1",
+               "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
+               "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
+               "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
+               "\xc1\xc0\xc1\xc1\xc1\xc0\xc1",
+               "\xc1\xc0\xc0\xc0\xc0\xc0\xc1",
+               "\xc1\xc1\xc1\xc1\xc1\xc1\xc1"
+               );
+               for ($y=0; $y < 7; $y++) {
+                       $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]);
+               }
+               return $frame;
+       }
+
+       /**
+        * Return a copy of initialized frame.
+        * @param $version (int) version
+        * @return Array of unsigned char.
+        */
+       protected function createFrame($version) {
+               $width = $this->capacity[$version][QRCAP_WIDTH];
+               $frameLine = str_repeat ("\0", $width);
+               $frame = array_fill(0, $width, $frameLine);
+               // Finder pattern
+               $frame = $this->putFinderPattern($frame, 0, 0);
+               $frame = $this->putFinderPattern($frame, $width - 7, 0);
+               $frame = $this->putFinderPattern($frame, 0, $width - 7);
+               // Separator
+               $yOffset = $width - 7;
+               for ($y=0; $y < 7; ++$y) {
+                       $frame[$y][7] = "\xc0";
+                       $frame[$y][$width - 8] = "\xc0";
+                       $frame[$yOffset][7] = "\xc0";
+                       ++$yOffset;
+               }
+               $setPattern = str_repeat("\xc0", 8);
+               $frame = $this->qrstrset($frame, 0, 7, $setPattern);
+               $frame = $this->qrstrset($frame, $width-8, 7, $setPattern);
+               $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern);
+               // Format info
+               $setPattern = str_repeat("\x84", 9);
+               $frame = $this->qrstrset($frame, 0, 8, $setPattern);
+               $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8);
+               $yOffset = $width - 8;
+               for ($y=0; $y < 8; ++$y,++$yOffset) {
+                       $frame[$y][8] = "\x84";
+                       $frame[$yOffset][8] = "\x84";
+               }
+               // Timing pattern
+               $wo = $width - 15;
+               for ($i=1; $i < $wo; ++$i) {
+                       $frame[6][7+$i] = chr(0x90 | ($i & 1));
+                       $frame[7+$i][6] = chr(0x90 | ($i & 1));
+               }
+               // Alignment pattern
+               $frame = $this->putAlignmentPattern($version, $frame, $width);
+               // Version information
+               if ($version >= 7) {
+                       $vinf = $this->getVersionPattern($version);
+                       $v = $vinf;
+                       for ($x=0; $x<6; ++$x) {
+                               for ($y=0; $y<3; ++$y) {
+                                       $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1));
+                                       $v = $v >> 1;
+                               }
+                       }
+                       $v = $vinf;
+                       for ($y=0; $y<6; ++$y) {
+                               for ($x=0; $x<3; ++$x) {
+                                       $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1));
+                                       $v = $v >> 1;
+                               }
+                       }
+               }
+               // and a little bit...
+               $frame[$width - 8][8] = "\x81";
+               return $frame;
+       }
+
+       /**
+        * Set new frame for the specified version.
+        * @param $version (int) version
+        * @return Array of unsigned char.
+        */
+       protected function newFrame($version) {
+               if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) {
+                       return NULL;
+               }
+               if (!isset($this->frames[$version])) {
+                       $this->frames[$version] = $this->createFrame($version);
+               }
+               if (is_null($this->frames[$version])) {
+                       return NULL;
+               }
+               return $this->frames[$version];
+       }
+
+       /**
+        * Return block number 0
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsBlockNum($spec) {
+               return ($spec[0] + $spec[3]);
+       }
+
+       /**
+       * Return block number 1
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsBlockNum1($spec) {
+               return $spec[0];
+       }
+
+       /**
+        * Return data codes 1
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsDataCodes1($spec) {
+               return $spec[1];
+       }
+
+       /**
+        * Return ecc codes 1
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsEccCodes1($spec) {
+               return $spec[2];
+       }
+
+       /**
+        * Return block number 2
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsBlockNum2($spec) {
+               return $spec[3];
+       }
+
+       /**
+        * Return data codes 2
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsDataCodes2($spec) {
+               return $spec[4];
+       }
+
+       /**
+        * Return ecc codes 2
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsEccCodes2($spec) {
+               return $spec[2];
+       }
+
+       /**
+        * Return data length
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsDataLength($spec) {
+               return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]);
+       }
+
+       /**
+        * Return ecc length
+        * @param $spec (array)
+        * @return int value
+        */
+        protected function rsEccLength($spec) {
+               return ($spec[0] + $spec[3]) * $spec[2];
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRrs
+
+       /**
+        * Initialize a Reed-Solomon codec and add it to existing rsitems
+        * @param $symsize (int) symbol size, bits
+        * @param $gfpoly (int)  Field generator polynomial coefficients
+        * @param $fcr (int)  first root of RS code generator polynomial, index form
+        * @param $prim (int)  primitive element to generate polynomial roots
+        * @param $nroots (int) RS code generator polynomial degree (number of roots)
+        * @param $pad (int)  padding bytes at front of shortened block
+        * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
+        */
+        protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
+               foreach ($this->rsitems as $rs) {
+                       if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize)
+                               OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) {
+                               continue;
+                       }
+                       return $rs;
+               }
+               $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad);
+               array_unshift($this->rsitems, $rs);
+               return $rs;
+       }
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       // QRrsItem
+
+       /**
+        * modnn
+        * @param $rs (array) RS values
+        * @param $x (int) X position
+        * @return int X osition
+        */
+        protected function modnn($rs, $x) {
+               while ($x >= $rs['nn']) {
+                       $x -= $rs['nn'];
+                       $x = ($x >> $rs['mm']) + ($x & $rs['nn']);
+               }
+               return $x;
+       }
+
+       /**
+        * Initialize a Reed-Solomon codec and returns an array of values.
+        * @param $symsize (int) symbol size, bits
+        * @param $gfpoly (int)  Field generator polynomial coefficients
+        * @param $fcr (int)  first root of RS code generator polynomial, index form
+        * @param $prim (int)  primitive element to generate polynomial roots
+        * @param $nroots (int) RS code generator polynomial degree (number of roots)
+        * @param $pad (int)  padding bytes at front of shortened block
+        * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>.
+        */
+       protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) {
+               // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2)
+               $rs = null;
+               // Check parameter ranges
+               if (($symsize < 0) OR ($symsize > 8)) {
+                       return $rs;
+               }
+               if (($fcr < 0) OR ($fcr >= (1<<$symsize))) {
+                       return $rs;
+               }
+               if (($prim <= 0) OR ($prim >= (1<<$symsize))) {
+                       return $rs;
+               }
+               if (($nroots < 0) OR ($nroots >= (1<<$symsize))) {
+                       return $rs;
+               }
+               if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) {
+                       return $rs;
+               }
+               $rs = array();
+               $rs['mm'] = $symsize;
+               $rs['nn'] = (1 << $symsize) - 1;
+               $rs['pad'] = $pad;
+               $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0);
+               $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0);
+               // PHP style macro replacement ;)
+               $NN =& $rs['nn'];
+               $A0 =& $NN;
+               // Generate Galois field lookup tables
+               $rs['index_of'][0] = $A0; // log(zero) = -inf
+               $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0
+               $sr = 1;
+               for ($i=0; $i<$rs['nn']; ++$i) {
+                       $rs['index_of'][$sr] = $i;
+                       $rs['alpha_to'][$i] = $sr;
+                       $sr <<= 1;
+                       if ($sr & (1 << $symsize)) {
+                               $sr ^= $gfpoly;
+                       }
+                       $sr &= $rs['nn'];
+               }
+               if ($sr != 1) {
+                       // field generator polynomial is not primitive!
+                       return NULL;
+               }
+               // Form RS code generator polynomial from its roots
+               $rs['genpoly'] = array_fill(0, ($nroots + 1), 0);
+               $rs['fcr'] = $fcr;
+               $rs['prim'] = $prim;
+               $rs['nroots'] = $nroots;
+               $rs['gfpoly'] = $gfpoly;
+               // Find prim-th root of 1, used in decoding
+               for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) {
+                       ; // intentional empty-body loop!
+               }
+               $rs['iprim'] = (int)($iprim / $prim);
+               $rs['genpoly'][0] = 1;
+               for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) {
+                       $rs['genpoly'][$i+1] = 1;
+                       // Multiply rs->genpoly[] by  @**(root + x)
+                       for ($j = $i; $j > 0; --$j) {
+                               if ($rs['genpoly'][$j] != 0) {
+                                       $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)];
+                               } else {
+                                       $rs['genpoly'][$j] = $rs['genpoly'][$j-1];
+                               }
+                       }
+                       // rs->genpoly[0] can never be zero
+                       $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)];
+               }
+               // convert rs->genpoly[] to index form for quicker encoding
+               for ($i = 0; $i <= $nroots; ++$i) {
+                       $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]];
+               }
+               return $rs;
+       }
+
+       /**
+        * Encode a Reed-Solomon codec and returns the parity array
+        * @param $rs (array) RS values
+        * @param $data (array) data
+        * @param $parity (array) parity
+        * @return parity array
+        */
+        protected function encode_rs_char($rs, $data, $parity) {
+               $MM       =& $rs['mm']; // bits per symbol
+               $NN       =& $rs['nn']; // the total number of symbols in a RS block
+               $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form
+               $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form
+               $GENPOLY  =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form
+               $NROOTS   =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block
+               $FCR      =& $rs['fcr']; // first consecutive root, index form
+               $PRIM     =& $rs['prim']; // primitive element, index form
+               $IPRIM    =& $rs['iprim']; // prim-th root of 1, index form
+               $PAD      =& $rs['pad']; // the number of pad symbols in a block
+               $A0       =& $NN;
+               $parity = array_fill(0, $NROOTS, 0);
+               for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) {
+                       $feedback = $INDEX_OF[$data[$i] ^ $parity[0]];
+                       if ($feedback != $A0) {
+                               // feedback term is non-zero
+                               // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
+                               // always be for the polynomials constructed by init_rs()
+                               $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback);
+                               for ($j=1; $j < $NROOTS; ++$j) {
+                               $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])];
+                               }
+                       }
+                       // Shift
+                       array_shift($parity);
+                       if ($feedback != $A0) {
+                               array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]);
+                       } else {
+                               array_push($parity, 0);
+                       }
+               }
+               return $parity;
+       }
+
+} // end QRcode class
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/sRGB.icc b/inc/3rdparty/libraries/tcpdf/include/sRGB.icc
new file mode 100644 (file)
index 0000000..1d8f741
Binary files /dev/null and b/inc/3rdparty/libraries/tcpdf/include/sRGB.icc differ
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php
new file mode 100644 (file)
index 0000000..77f1c4c
--- /dev/null
@@ -0,0 +1,462 @@
+<?php
+//============================================================+
+// File name   : tcpdf_colors.php
+// Version     : 1.0.004
+// Begin       : 2002-04-09
+// Last Update : 2014-04-25
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2002-2013  Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : Array of WEB safe colors
+//
+//============================================================+
+
+/**
+ * @file
+ * PHP color class for TCPDF
+ * @author Nicola Asuni
+ * @package com.tecnick.tcpdf
+ */
+
+/**
+ * @class TCPDF_COLORS
+ * PHP color class for TCPDF
+ * @package com.tecnick.tcpdf
+ * @version 1.0.004
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_COLORS {
+
+       /**
+        * Array of WEB safe colors
+        * @public static
+        */
+       public static $webcolor = array (
+               'aliceblue' => 'f0f8ff',
+               'antiquewhite' => 'faebd7',
+               'aqua' => '00ffff',
+               'aquamarine' => '7fffd4',
+               'azure' => 'f0ffff',
+               'beige' => 'f5f5dc',
+               'bisque' => 'ffe4c4',
+               'black' => '000000',
+               'blanchedalmond' => 'ffebcd',
+               'blue' => '0000ff',
+               'blueviolet' => '8a2be2',
+               'brown' => 'a52a2a',
+               'burlywood' => 'deb887',
+               'cadetblue' => '5f9ea0',
+               'chartreuse' => '7fff00',
+               'chocolate' => 'd2691e',
+               'coral' => 'ff7f50',
+               'cornflowerblue' => '6495ed',
+               'cornsilk' => 'fff8dc',
+               'crimson' => 'dc143c',
+               'cyan' => '00ffff',
+               'darkblue' => '00008b',
+               'darkcyan' => '008b8b',
+               'darkgoldenrod' => 'b8860b',
+               'dkgray' => 'a9a9a9',
+               'darkgray' => 'a9a9a9',
+               'darkgrey' => 'a9a9a9',
+               'darkgreen' => '006400',
+               'darkkhaki' => 'bdb76b',
+               'darkmagenta' => '8b008b',
+               'darkolivegreen' => '556b2f',
+               'darkorange' => 'ff8c00',
+               'darkorchid' => '9932cc',
+               'darkred' => '8b0000',
+               'darksalmon' => 'e9967a',
+               'darkseagreen' => '8fbc8f',
+               'darkslateblue' => '483d8b',
+               'darkslategray' => '2f4f4f',
+               'darkslategrey' => '2f4f4f',
+               'darkturquoise' => '00ced1',
+               'darkviolet' => '9400d3',
+               'deeppink' => 'ff1493',
+               'deepskyblue' => '00bfff',
+               'dimgray' => '696969',
+               'dimgrey' => '696969',
+               'dodgerblue' => '1e90ff',
+               'firebrick' => 'b22222',
+               'floralwhite' => 'fffaf0',
+               'forestgreen' => '228b22',
+               'fuchsia' => 'ff00ff',
+               'gainsboro' => 'dcdcdc',
+               'ghostwhite' => 'f8f8ff',
+               'gold' => 'ffd700',
+               'goldenrod' => 'daa520',
+               'gray' => '808080',
+               'grey' => '808080',
+               'green' => '008000',
+               'greenyellow' => 'adff2f',
+               'honeydew' => 'f0fff0',
+               'hotpink' => 'ff69b4',
+               'indianred' => 'cd5c5c',
+               'indigo' => '4b0082',
+               'ivory' => 'fffff0',
+               'khaki' => 'f0e68c',
+               'lavender' => 'e6e6fa',
+               'lavenderblush' => 'fff0f5',
+               'lawngreen' => '7cfc00',
+               'lemonchiffon' => 'fffacd',
+               'lightblue' => 'add8e6',
+               'lightcoral' => 'f08080',
+               'lightcyan' => 'e0ffff',
+               'lightgoldenrodyellow' => 'fafad2',
+               'ltgray' => 'd3d3d3',
+               'lightgray' => 'd3d3d3',
+               'lightgrey' => 'd3d3d3',
+               'lightgreen' => '90ee90',
+               'lightpink' => 'ffb6c1',
+               'lightsalmon' => 'ffa07a',
+               'lightseagreen' => '20b2aa',
+               'lightskyblue' => '87cefa',
+               'lightslategray' => '778899',
+               'lightslategrey' => '778899',
+               'lightsteelblue' => 'b0c4de',
+               'lightyellow' => 'ffffe0',
+               'lime' => '00ff00',
+               'limegreen' => '32cd32',
+               'linen' => 'faf0e6',
+               'magenta' => 'ff00ff',
+               'maroon' => '800000',
+               'mediumaquamarine' => '66cdaa',
+               'mediumblue' => '0000cd',
+               'mediumorchid' => 'ba55d3',
+               'mediumpurple' => '9370d8',
+               'mediumseagreen' => '3cb371',
+               'mediumslateblue' => '7b68ee',
+               'mediumspringgreen' => '00fa9a',
+               'mediumturquoise' => '48d1cc',
+               'mediumvioletred' => 'c71585',
+               'midnightblue' => '191970',
+               'mintcream' => 'f5fffa',
+               'mistyrose' => 'ffe4e1',
+               'moccasin' => 'ffe4b5',
+               'navajowhite' => 'ffdead',
+               'navy' => '000080',
+               'oldlace' => 'fdf5e6',
+               'olive' => '808000',
+               'olivedrab' => '6b8e23',
+               'orange' => 'ffa500',
+               'orangered' => 'ff4500',
+               'orchid' => 'da70d6',
+               'palegoldenrod' => 'eee8aa',
+               'palegreen' => '98fb98',
+               'paleturquoise' => 'afeeee',
+               'palevioletred' => 'd87093',
+               'papayawhip' => 'ffefd5',
+               'peachpuff' => 'ffdab9',
+               'peru' => 'cd853f',
+               'pink' => 'ffc0cb',
+               'plum' => 'dda0dd',
+               'powderblue' => 'b0e0e6',
+               'purple' => '800080',
+               'red' => 'ff0000',
+               'rosybrown' => 'bc8f8f',
+               'royalblue' => '4169e1',
+               'saddlebrown' => '8b4513',
+               'salmon' => 'fa8072',
+               'sandybrown' => 'f4a460',
+               'seagreen' => '2e8b57',
+               'seashell' => 'fff5ee',
+               'sienna' => 'a0522d',
+               'silver' => 'c0c0c0',
+               'skyblue' => '87ceeb',
+               'slateblue' => '6a5acd',
+               'slategray' => '708090',
+               'slategrey' => '708090',
+               'snow' => 'fffafa',
+               'springgreen' => '00ff7f',
+               'steelblue' => '4682b4',
+               'tan' => 'd2b48c',
+               'teal' => '008080',
+               'thistle' => 'd8bfd8',
+               'tomato' => 'ff6347',
+               'turquoise' => '40e0d0',
+               'violet' => 'ee82ee',
+               'wheat' => 'f5deb3',
+               'white' => 'ffffff',
+               'whitesmoke' => 'f5f5f5',
+               'yellow' => 'ffff00',
+               'yellowgreen' => '9acd32'
+       ); // end of web colors
+
+       /**
+        * Array of valid JavaScript color names
+        * @public static
+        */
+       public static $jscolor = array ('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray');
+
+       /**
+        * Array of Spot colors (C,M,Y,K,name)
+        * Color keys must be in lowercase and without spaces.
+        * As long as no open standard for spot colours exists, you have to buy a colour book by one of the colour manufacturers and insert the values and names of spot colours directly.
+        * Common industry standard spot colors are: ANPA-COLOR, DIC, FOCOLTONE, GCMI, HKS, PANTONE, TOYO, TRUMATCH.
+        * @public static
+        */
+       public static $spotcolor = array (
+               // special registration colors
+               'none'    => array(  0,   0,   0,   0, 'None'),
+               'all'     => array(100, 100, 100, 100, 'All'),
+               // standard CMYK colors
+               'cyan'    => array(100,   0,   0,   0, 'Cyan'),
+               'magenta' => array(  0, 100,   0,   0, 'Magenta'),
+               'yellow'  => array(  0,   0, 100,   0, 'Yellow'),
+               'key'     => array(  0,   0,   0, 100, 'Key'),
+               // alias
+               'white'   => array(  0,   0,   0,   0, 'White'),
+               'black'   => array(  0,   0,   0, 100, 'Black'),
+               // standard RGB colors
+               'red'     => array(  0, 100, 100,   0, 'Red'),
+               'green'   => array(100,   0, 100,   0, 'Green'),
+               'blue'    => array(100, 100,   0,   0, 'Blue'),
+               // Add here standard spot colors or dynamically define them with AddSpotColor()
+               // ...
+       ); // end of spot colors
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       /**
+        * Return the Spot color array.
+        * @param $name (string) Name of the spot color.
+        * @param $spotc (array) Reference to an array of spot colors.
+        * @return (array) Spot color array or false if not defined.
+        * @since 5.9.125 (2011-10-03)
+        * @public static
+        */
+       public static function getSpotColor($name, &$spotc) {
+               if (isset($spotc[$name])) {
+                       return $spotc[$name];
+               }
+               $color = preg_replace('/[\s]*/', '', $name); // remove extra spaces
+               $color = strtolower($color);
+               if (isset(self::$spotcolor[$color])) {
+                       if (!isset($spotc[$name])) {
+                               $i = (1 + count($spotc));
+                               $spotc[$name] = array('C' => self::$spotcolor[$color][0], 'M' => self::$spotcolor[$color][1], 'Y' => self::$spotcolor[$color][2], 'K' => self::$spotcolor[$color][3], 'name' => self::$spotcolor[$color][4], 'i' => $i);
+                       }
+                       return $spotc[self::$spotcolor[$color][4]];
+               }
+               return false;
+       }
+
+       /**
+        * Returns an array (RGB or CMYK) from an html color name, or a six-digit (i.e. #3FE5AA), or three-digit (i.e. #7FF) hexadecimal color, or a javascript color array, or javascript color name.
+        * @param $hcolor (string) HTML color.
+        * @param $spotc (array) Reference to an array of spot colors.
+        * @param $defcol (array) Color to return in case of error.
+        * @return array RGB or CMYK color, or false in case of error.
+        * @public static
+        */
+       public static function convertHTMLColorToDec($hcolor, &$spotc, $defcol=array('R'=>128,'G'=>128,'B'=>128)) {
+               $color = preg_replace('/[\s]*/', '', $hcolor); // remove extra spaces
+               $color = strtolower($color);
+               // check for javascript color array syntax
+               if (strpos($color, '[') !== false) {
+                       if (preg_match('/[\[][\"\'](t|g|rgb|cmyk)[\"\'][\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\]]/', $color, $m) > 0) {
+                               $returncolor = array();
+                               switch ($m[1]) {
+                                       case 'cmyk': {
+                                               // RGB
+                                               $returncolor['C'] = max(0, min(100, (floatval($m[2]) * 100)));
+                                               $returncolor['M'] = max(0, min(100, (floatval($m[3]) * 100)));
+                                               $returncolor['Y'] = max(0, min(100, (floatval($m[4]) * 100)));
+                                               $returncolor['K'] = max(0, min(100, (floatval($m[5]) * 100)));
+                                               break;
+                                       }
+                                       case 'rgb': {
+                                               // RGB
+                                               $returncolor['R'] = max(0, min(255, (floatval($m[2]) * 255)));
+                                               $returncolor['G'] = max(0, min(255, (floatval($m[3]) * 255)));
+                                               $returncolor['B'] = max(0, min(255, (floatval($m[4]) * 255)));
+                                               break;
+                                       }
+                                       case 'g': {
+                                               // grayscale
+                                               $returncolor['G'] = max(0, min(255, (floatval($m[2]) * 255)));
+                                               break;
+                                       }
+                                       case 't':
+                                       default: {
+                                               // transparent (empty array)
+                                               break;
+                                       }
+                               }
+                               return $returncolor;
+                       }
+               } elseif ((substr($color, 0, 4) != 'cmyk') AND (substr($color, 0, 3) != 'rgb') AND (($dotpos = strpos($color, '.')) !== false)) {
+                       // remove class parent (i.e.: color.red)
+                       $color = substr($color, ($dotpos + 1));
+                       if ($color == 'transparent') {
+                               // transparent (empty array)
+                               return array();
+                       }
+               }
+               if (strlen($color) == 0) {
+                       return $defcol;
+               }
+               // RGB ARRAY
+               if (substr($color, 0, 3) == 'rgb') {
+                       $codes = substr($color, 4);
+                       $codes = str_replace(')', '', $codes);
+                       $returncolor = explode(',', $codes);
+                       foreach ($returncolor as $key => $val) {
+                               if (strpos($val, '%') > 0) {
+                                       // percentage
+                                       $returncolor[$key] = (255 * intval($val) / 100);
+                               } else {
+                                       $returncolor[$key] = intval($val);
+                               }
+                               // normalize value
+                               $returncolor[$key] = max(0, min(255, $returncolor[$key]));
+                       }
+                       return $returncolor;
+               }
+               // CMYK ARRAY
+               if (substr($color, 0, 4) == 'cmyk') {
+                       $codes = substr($color, 5);
+                       $codes = str_replace(')', '', $codes);
+                       $returncolor = explode(',', $codes);
+                       foreach ($returncolor as $key => $val) {
+                               if (strpos($val, '%') !== false) {
+                                       // percentage
+                                       $returncolor[$key] = (100 * intval($val) / 100);
+                               } else {
+                                       $returncolor[$key] = intval($val);
+                               }
+                               // normalize value
+                               $returncolor[$key] = max(0, min(100, $returncolor[$key]));
+                       }
+                       return $returncolor;
+               }
+               if ($color[0] != '#') {
+                       // COLOR NAME
+                       if (isset(self::$webcolor[$color])) {
+                               // web color
+                               $color_code = self::$webcolor[$color];
+                       } else {
+                               // spot color
+                               $returncolor = self::getSpotColor($color, $spotc);
+                               if ($returncolor === false) {
+                                       $returncolor = $defcol;
+                               }
+                               return $returncolor;
+                       }
+               } else {
+                       $color_code = substr($color, 1);
+               }
+               // HEXADECIMAL REPRESENTATION
+               switch (strlen($color_code)) {
+                       case 3: {
+                               // 3-digit RGB hexadecimal representation
+                               $r = substr($color_code, 0, 1);
+                               $g = substr($color_code, 1, 1);
+                               $b = substr($color_code, 2, 1);
+                               $returncolor = array();
+                               $returncolor['R'] = max(0, min(255, hexdec($r.$r)));
+                               $returncolor['G'] = max(0, min(255, hexdec($g.$g)));
+                               $returncolor['B'] = max(0, min(255, hexdec($b.$b)));
+                               break;
+                       }
+                       case 6: {
+                               // 6-digit RGB hexadecimal representation
+                               $returncolor = array();
+                               $returncolor['R'] = max(0, min(255, hexdec(substr($color_code, 0, 2))));
+                               $returncolor['G'] = max(0, min(255, hexdec(substr($color_code, 2, 2))));
+                               $returncolor['B'] = max(0, min(255, hexdec(substr($color_code, 4, 2))));
+                               break;
+                       }
+                       case 8: {
+                               // 8-digit CMYK hexadecimal representation
+                               $returncolor = array();
+                               $returncolor['C'] = max(0, min(100, round(hexdec(substr($color_code, 0, 2)) / 2.55)));
+                               $returncolor['M'] = max(0, min(100, round(hexdec(substr($color_code, 2, 2)) / 2.55)));
+                               $returncolor['Y'] = max(0, min(100, round(hexdec(substr($color_code, 4, 2)) / 2.55)));
+                               $returncolor['K'] = max(0, min(100, round(hexdec(substr($color_code, 6, 2)) / 2.55)));
+                               break;
+                       }
+                       default: {
+                               $returncolor = $defcol;
+                               break;
+                       }
+               }
+               return $returncolor;
+       }
+
+       /**
+        * Convert a color array into a string representation.
+        * @param $c (array) Array of colors.
+        * @return (string) The color array representation.
+        * @since 5.9.137 (2011-12-01)
+        * @public static
+        */
+       public static function getColorStringFromArray($c) {
+               $c = array_values($c);
+               $color = '[';
+               switch (count($c)) {
+                       case 4: {
+                               // CMYK
+                               $color .= sprintf('%F %F %F %F', (max(0, min(100, floatval($c[0]))) / 100), (max(0, min(100, floatval($c[1]))) / 100), (max(0, min(100, floatval($c[2]))) / 100), (max(0, min(100, floatval($c[3]))) / 100));
+                               break;
+                       }
+                       case 3: {
+                               // RGB
+                               $color .= sprintf('%F %F %F', (max(0, min(255, floatval($c[0]))) / 255), (max(0, min(255, floatval($c[1]))) / 255), (max(0, min(255, floatval($c[2]))) / 255));
+                               break;
+                       }
+                       case 1: {
+                               // grayscale
+                               $color .= sprintf('%F', (max(0, min(255, floatval($c[0]))) / 255));
+                               break;
+                       }
+               }
+               $color .= ']';
+               return $color;
+       }
+
+       /**
+        * Convert color to javascript color.
+        * @param $color (string) color name or "#RRGGBB"
+        * @protected
+        * @since 2.1.002 (2008-02-12)
+        * @public static
+        */
+       public static function _JScolor($color) {
+               if (substr($color, 0, 1) == '#') {
+                       return sprintf("['RGB',%F,%F,%F]", (hexdec(substr($color, 1, 2)) / 255), (hexdec(substr($color, 3, 2)) / 255), (hexdec(substr($color, 5, 2)) / 255));
+               }
+               if (!in_array($color, self::$jscolor)) {
+                       // default transparent color
+                       $color = $jscolor[0];
+               }
+               return 'color.'.$color;
+       }
+
+
+} // END OF TCPDF_COLORS CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php
new file mode 100644 (file)
index 0000000..96584db
--- /dev/null
@@ -0,0 +1,481 @@
+<?php
+//============================================================+
+// File name   : tcpdf_filters.php
+// Version     : 1.0.001
+// Begin       : 2011-05-23
+// Last Update : 2014-04-25
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2011-2013 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).
+//
+//============================================================+
+
+/**
+ * @file
+ * This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).<br>
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.001
+ */
+
+/**
+ * @class TCPDF_FILTERS
+ * This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).<br>
+ * @package com.tecnick.tcpdf
+ * @brief This is a PHP class for decoding common PDF filters.
+ * @version 1.0.001
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_FILTERS {
+
+       /**
+        * Define a list of available filter decoders.
+        * @private static
+        */
+       private static $available_filters = array('ASCIIHexDecode', 'ASCII85Decode', 'LZWDecode', 'FlateDecode', 'RunLengthDecode');
+
+// -----------------------------------------------------------------------------
+
+       /**
+        * Get a list of available decoding filters.
+        * @return (array) Array of available filter decoders.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function getAvailableFilters() {
+               return self::$available_filters;
+       }
+
+       /**
+        * Decode data using the specified filter type.
+        * @param $filter (string) Filter name.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilter($filter, $data) {
+               switch ($filter) {
+                       case 'ASCIIHexDecode': {
+                               return self::decodeFilterASCIIHexDecode($data);
+                               break;
+                       }
+                       case 'ASCII85Decode': {
+                               return self::decodeFilterASCII85Decode($data);
+                               break;
+                       }
+                       case 'LZWDecode': {
+                               return self::decodeFilterLZWDecode($data);
+                               break;
+                       }
+                       case 'FlateDecode': {
+                               return self::decodeFilterFlateDecode($data);
+                               break;
+                       }
+                       case 'RunLengthDecode': {
+                               return self::decodeFilterRunLengthDecode($data);
+                               break;
+                       }
+                       case 'CCITTFaxDecode': {
+                               return self::decodeFilterCCITTFaxDecode($data);
+                               break;
+                       }
+                       case 'JBIG2Decode': {
+                               return self::decodeFilterJBIG2Decode($data);
+                               break;
+                       }
+                       case 'DCTDecode': {
+                               return self::decodeFilterDCTDecode($data);
+                               break;
+                       }
+                       case 'JPXDecode': {
+                               return self::decodeFilterJPXDecode($data);
+                               break;
+                       }
+                       case 'Crypt': {
+                               return self::decodeFilterCrypt($data);
+                               break;
+                       }
+                       default: {
+                               return self::decodeFilterStandard($data);
+                               break;
+                       }
+               }
+       }
+
+       // --- FILTERS (PDF 32000-2008 - 7.4 Filters) ------------------------------
+
+       /**
+        * Standard
+        * Default decoding filter (leaves data unchanged).
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterStandard($data) {
+               return $data;
+       }
+
+       /**
+        * ASCIIHexDecode
+        * Decodes data encoded in an ASCII hexadecimal representation, reproducing the original binary data.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterASCIIHexDecode($data) {
+               // intialize string to return
+               $decoded = '';
+               // all white-space characters shall be ignored
+               $data = preg_replace('/[\s]/', '', $data);
+               // check for EOD character: GREATER-THAN SIGN (3Eh)
+               $eod = strpos($data, '>');
+               if ($eod !== false) {
+                       // remove EOD and extra data (if any)
+                       $data = substr($data, 0, $eod);
+                       $eod = true;
+               }
+               // get data length
+               $data_length = strlen($data);
+               if (($data_length % 2) != 0) {
+                       // odd number of hexadecimal digits
+                       if ($eod) {
+                               // EOD shall behave as if a 0 (zero) followed the last digit
+                               $data = substr($data, 0, -1).'0'.substr($data, -1);
+                       } else {
+                               self::Error('decodeFilterASCIIHexDecode: invalid code');
+                       }
+               }
+               // check for invalid characters
+               if (preg_match('/[^a-fA-F\d]/', $data) > 0) {
+                       self::Error('decodeFilterASCIIHexDecode: invalid code');
+               }
+               // get one byte of binary data for each pair of ASCII hexadecimal digits
+               $decoded = pack('H*', $data);
+               return $decoded;
+       }
+
+       /**
+        * ASCII85Decode
+        * Decodes data encoded in an ASCII base-85 representation, reproducing the original binary data.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterASCII85Decode($data) {
+               // intialize string to return
+               $decoded = '';
+               // all white-space characters shall be ignored
+               $data = preg_replace('/[\s]/', '', $data);
+               // remove start sequence 2-character sequence <~ (3Ch)(7Eh)
+               if (strpos($data, '<~') !== false) {
+                       // remove EOD and extra data (if any)
+                       $data = substr($data, 2);
+               }
+               // check for EOD: 2-character sequence ~> (7Eh)(3Eh)
+               $eod = strpos($data, '~>');
+               if ($eod !== false) {
+                       // remove EOD and extra data (if any)
+                       $data = substr($data, 0, $eod);
+               }
+               // data length
+               $data_length = strlen($data);
+               // check for invalid characters
+               if (preg_match('/[^\x21-\x75,\x74]/', $data) > 0) {
+                       self::Error('decodeFilterASCII85Decode: invalid code');
+               }
+               // z sequence
+               $zseq = chr(0).chr(0).chr(0).chr(0);
+               // position inside a group of 4 bytes (0-3)
+               $group_pos = 0;
+               $tuple = 0;
+               $pow85 = array((85*85*85*85), (85*85*85), (85*85), 85, 1);
+               $last_pos = ($data_length - 1);
+               // for each byte
+               for ($i = 0; $i < $data_length; ++$i) {
+                       // get char value
+                       $char = ord($data[$i]);
+                       if ($char == 122) { // 'z'
+                               if ($group_pos == 0) {
+                                       $decoded .= $zseq;
+                               } else {
+                                       self::Error('decodeFilterASCII85Decode: invalid code');
+                               }
+                       } else {
+                               // the value represented by a group of 5 characters should never be greater than 2^32 - 1
+                               $tuple += (($char - 33) * $pow85[$group_pos]);
+                               if ($group_pos == 4) {
+                                       $decoded .= chr($tuple >> 24).chr($tuple >> 16).chr($tuple >> 8).chr($tuple);
+                                       $tuple = 0;
+                                       $group_pos = 0;
+                               } else {
+                                       ++$group_pos;
+                               }
+                       }
+               }
+               if ($group_pos > 1) {
+                       $tuple += $pow85[($group_pos - 1)];
+               }
+               // last tuple (if any)
+               switch ($group_pos) {
+                       case 4: {
+                               $decoded .= chr($tuple >> 24).chr($tuple >> 16).chr($tuple >> 8);
+                               break;
+                       }
+                       case 3: {
+                               $decoded .= chr($tuple >> 24).chr($tuple >> 16);
+                               break;
+                       }
+                       case 2: {
+                               $decoded .= chr($tuple >> 24);
+                               break;
+                       }
+                       case 1: {
+                               self::Error('decodeFilterASCII85Decode: invalid code');
+                               break;
+                       }
+               }
+               return $decoded;
+       }
+
+       /**
+        * LZWDecode
+        * Decompresses data encoded using the LZW (Lempel-Ziv-Welch) adaptive compression method, reproducing the original text or binary data.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterLZWDecode($data) {
+               // intialize string to return
+               $decoded = '';
+               // data length
+               $data_length = strlen($data);
+               // convert string to binary string
+               $bitstring = '';
+               for ($i = 0; $i < $data_length; ++$i) {
+                       $bitstring .= sprintf('%08b', ord($data{$i}));
+               }
+               // get the number of bits
+               $data_length = strlen($bitstring);
+               // initialize code length in bits
+               $bitlen = 9;
+               // initialize dictionary index
+               $dix = 258;
+               // initialize the dictionary (with the first 256 entries).
+               $dictionary = array();
+               for ($i = 0; $i < 256; ++$i) {
+                       $dictionary[$i] = chr($i);
+               }
+               // previous val
+               $prev_index = 0;
+               // while we encounter EOD marker (257), read code_length bits
+               while (($data_length > 0) AND (($index = bindec(substr($bitstring, 0, $bitlen))) != 257)) {
+                       // remove read bits from string
+                       $bitstring = substr($bitstring, $bitlen);
+                       // update number of bits
+                       $data_length -= $bitlen;
+                       if ($index == 256) { // clear-table marker
+                               // reset code length in bits
+                               $bitlen = 9;
+                               // reset dictionary index
+                               $dix = 258;
+                               $prev_index = 256;
+                               // reset the dictionary (with the first 256 entries).
+                               $dictionary = array();
+                               for ($i = 0; $i < 256; ++$i) {
+                                       $dictionary[$i] = chr($i);
+                               }
+                       } elseif ($prev_index == 256) {
+                               // first entry
+                               $decoded .= $dictionary[$index];
+                               $prev_index = $index;
+                       } else {
+                               // check if index exist in the dictionary
+                               if ($index < $dix) {
+                                       // index exist on dictionary
+                                       $decoded .= $dictionary[$index];
+                                       $dic_val = $dictionary[$prev_index].$dictionary[$index][0];
+                                       // store current index
+                                       $prev_index = $index;
+                               } else {
+                                       // index do not exist on dictionary
+                                       $dic_val = $dictionary[$prev_index].$dictionary[$prev_index][0];
+                                       $decoded .= $dic_val;
+                               }
+                               // update dictionary
+                               $dictionary[$dix] = $dic_val;
+                               ++$dix;
+                               // change bit length by case
+                               if ($dix == 2047) {
+                                       $bitlen = 12;
+                               } elseif ($dix == 1023) {
+                                       $bitlen = 11;
+                               } elseif ($dix == 511) {
+                                       $bitlen = 10;
+                               }
+                       }
+               }
+               return $decoded;
+       }
+
+       /**
+        * FlateDecode
+        * Decompresses data encoded using the zlib/deflate compression method, reproducing the original text or binary data.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterFlateDecode($data) {
+               // intialize string to return
+               $decoded = @gzuncompress($data);
+               if ($decoded === false) {
+                       self::Error('decodeFilterFlateDecode: invalid code');
+               }
+               return $decoded;
+       }
+
+       /**
+        * RunLengthDecode
+        * Decompresses data encoded using a byte-oriented run-length encoding algorithm.
+        * @param $data (string) Data to decode.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterRunLengthDecode($data) {
+               // intialize string to return
+               $decoded = '';
+               // data length
+               $data_length = strlen($data);
+               $i = 0;
+               while($i < $data_length) {
+                       // get current byte value
+                       $byte = ord($data{$i});
+                       if ($byte == 128) {
+                               // a length value of 128 denote EOD
+                               break;
+                       } elseif ($byte < 128) {
+                               // if the length byte is in the range 0 to 127
+                               // the following length + 1 (1 to 128) bytes shall be copied literally during decompression
+                               $decoded .= substr($data, ($i + 1), ($byte + 1));
+                               // move to next block
+                               $i += ($byte + 2);
+                       } else {
+                               // if length is in the range 129 to 255,
+                               // the following single byte shall be copied 257 - length (2 to 128) times during decompression
+                               $decoded .= str_repeat($data{($i + 1)}, (257 - $byte));
+                               // move to next block
+                               $i += 2;
+                       }
+               }
+               return $decoded;
+       }
+
+       /**
+        * CCITTFaxDecode (NOT IMPLEMETED - RETURN AN EXCEPTION)
+        * Decompresses data encoded using the CCITT facsimile standard, reproducing the original data (typically monochrome image data at 1 bit per pixel).
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterCCITTFaxDecode($data) {
+               self::Error('~decodeFilterCCITTFaxDecode: this method has not been yet implemented');
+               //return $data;
+       }
+
+       /**
+        * JBIG2Decode (NOT IMPLEMETED - RETURN AN EXCEPTION)
+        * Decompresses data encoded using the JBIG2 standard, reproducing the original monochrome (1 bit per pixel) image data (or an approximation of that data).
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterJBIG2Decode($data) {
+               self::Error('~decodeFilterJBIG2Decode: this method has not been yet implemented');
+               //return $data;
+       }
+
+       /**
+        * DCTDecode (NOT IMPLEMETED - RETURN AN EXCEPTION)
+        * Decompresses data encoded using a DCT (discrete cosine transform) technique based on the JPEG standard, reproducing image sample data that approximates the original data.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterDCTDecode($data) {
+               self::Error('~decodeFilterDCTDecode: this method has not been yet implemented');
+               //return $data;
+       }
+
+       /**
+        * JPXDecode (NOT IMPLEMETED - RETURN AN EXCEPTION)
+        * Decompresses data encoded using the wavelet-based JPEG2000 standard, reproducing the original image data.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterJPXDecode($data) {
+               self::Error('~decodeFilterJPXDecode: this method has not been yet implemented');
+               //return $data;
+       }
+
+       /**
+        * Crypt (NOT IMPLEMETED - RETURN AN EXCEPTION)
+        * Decrypts data encrypted by a security handler, reproducing the data as it was before encryption.
+        * @param $data (string) Data to decode.
+        * @return Decoded data string.
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function decodeFilterCrypt($data) {
+               self::Error('~decodeFilterCrypt: this method has not been yet implemented');
+               //return $data;
+       }
+
+       // --- END FILTERS SECTION -------------------------------------------------
+
+       /**
+        * Throw an exception.
+        * @param $msg (string) The error message
+        * @since 1.0.000 (2011-05-23)
+        * @public static
+        */
+       public static function Error($msg) {
+               throw new Exception('TCPDF_PARSER ERROR: '.$msg);
+       }
+
+} // END OF TCPDF_FILTERS CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php
new file mode 100644 (file)
index 0000000..974e72e
--- /dev/null
@@ -0,0 +1,18447 @@
+<?php
+//============================================================+
+// File name   : tcpdf_font_data.php
+// Version     : 1.0.001
+// Begin       : 2008-01-01
+// Last Update : 2013-04-01
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2008-2013 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : Unicode data and encoding maps for TCPDF.
+//
+//============================================================+
+
+/**
+ * @file
+ * Unicode data and encoding maps for TCPDF.
+ * @author Nicola Asuni
+ * @package com.tecnick.tcpdf
+ */
+
+/**
+ * @class TCPDF_FONT_DATA
+ * Unicode data and encoding maps for TCPDF.
+ * @package com.tecnick.tcpdf
+ * @version 1.0.001
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_FONT_DATA {
+
+/**
+ * Unicode code for Left-to-Right Mark.
+ * @public
+ */
+public static $uni_LRM = 8206;
+
+/**
+ * Unicode code for Right-to-Left Mark.
+ * @public
+ */
+public static $uni_RLM = 8207;
+
+/**
+ * Unicode code for Left-to-Right Embedding.
+ * @public
+ */
+public static $uni_LRE = 8234;
+
+/**
+ * Unicode code for Right-to-Left Embedding.
+ * @public
+ */
+public static $uni_RLE = 8235;
+
+/**
+ * Unicode code for Pop Directional Format.
+ * @public
+ */
+public static $uni_PDF = 8236;
+
+/**
+ * Unicode code for Left-to-Right Override.
+ * @public
+ */
+public static $uni_LRO = 8237;
+
+/**
+ * Unicode code for Right-to-Left Override.
+ * @public
+ */
+public static $uni_RLO = 8238;
+
+/**
+ * Pattern to test RTL (Righ-To-Left) strings using regular expressions.
+ * @public
+ */
+public static $uni_RE_PATTERN_RTL = "/(
+         \xD6\xBE                                             # R
+       | \xD7[\x80\x83\x86\x90-\xAA\xB0-\xB4]                 # R
+       | \xDF[\x80-\xAA\xB4\xB5\xBA]                          # R
+       | \xE2\x80\x8F                                         # R
+       | \xEF\xAC[\x9D\x9F\xA0-\xA8\xAA-\xB6\xB8-\xBC\xBE]    # R
+       | \xEF\xAD[\x80\x81\x83\x84\x86-\x8F]                  # R
+       | \xF0\x90\xA0[\x80-\x85\x88\x8A-\xB5\xB7\xB8\xBC\xBF] # R
+       | \xF0\x90\xA4[\x80-\x99]                              # R
+       | \xF0\x90\xA8[\x80\x90-\x93\x95-\x97\x99-\xB3]        # R
+       | \xF0\x90\xA9[\x80-\x87\x90-\x98]                     # R
+       | \xE2\x80[\xAB\xAE]                                   # RLE & RLO
+       )/x";
+
+/**
+ * Pattern to test Arabic strings using regular expressions. Source: http://www.w3.org/International/questions/qa-forms-utf-8
+ * @public
+ */
+public static $uni_RE_PATTERN_ARABIC = "/(
+                 \xD8[\x80-\x83\x8B\x8D\x9B\x9E\x9F\xA1-\xBA]  # AL
+               | \xD9[\x80-\x8A\xAD-\xAF\xB1-\xBF]             # AL
+               | \xDA[\x80-\xBF]                               # AL
+               | \xDB[\x80-\x95\x9D\xA5\xA6\xAE\xAF\xBA-\xBF]  # AL
+               | \xDC[\x80-\x8D\x90\x92-\xAF]                  # AL
+               | \xDD[\x8D-\xAD]                               # AL
+               | \xDE[\x80-\xA5\xB1]                           # AL
+               | \xEF\xAD[\x90-\xBF]                           # AL
+               | \xEF\xAE[\x80-\xB1]                           # AL
+               | \xEF\xAF[\x93-\xBF]                           # AL
+               | \xEF[\xB0-\xB3][\x80-\xBF]                    # AL
+               | \xEF\xB4[\x80-\xBD]                           # AL
+               | \xEF\xB5[\x90-\xBF]                           # AL
+               | \xEF\xB6[\x80-\x8F\x92-\xBF]                  # AL
+               | \xEF\xB7[\x80-\x87\xB0-\xBC]                  # AL
+               | \xEF\xB9[\xB0-\xB4\xB6-\xBF]                  # AL
+               | \xEF\xBA[\x80-\xBF]                           # AL
+               | \xEF\xBB[\x80-\xBC]                           # AL
+               | \xD9[\xA0-\xA9\xAB\xAC]                       # AN
+               )/x";
+
+/**
+ * Array of Unicode types.
+ * @public
+ */
+public static $uni_type = array(
+0=>'BN',
+1=>'BN',
+2=>'BN',
+3=>'BN',
+4=>'BN',
+5=>'BN',
+6=>'BN',
+7=>'BN',
+8=>'BN',
+9=>'S',
+10=>'B',
+11=>'S',
+12=>'WS',
+13=>'B',
+14=>'BN',
+15=>'BN',
+16=>'BN',
+17=>'BN',
+18=>'BN',
+19=>'BN',
+20=>'BN',
+21=>'BN',
+22=>'BN',
+23=>'BN',
+24=>'BN',
+25=>'BN',
+26=>'BN',
+27=>'BN',
+28=>'B',
+29=>'B',
+30=>'B',
+31=>'S',
+32=>'WS',
+33=>'ON',
+34=>'ON',
+35=>'ET',
+36=>'ET',
+37=>'ET',
+38=>'ON',
+39=>'ON',
+40=>'ON',
+41=>'ON',
+42=>'ON',
+43=>'ES',
+44=>'CS',
+45=>'ES',
+46=>'CS',
+47=>'CS',
+48=>'EN',
+49=>'EN',
+50=>'EN',
+51=>'EN',
+52=>'EN',
+53=>'EN',
+54=>'EN',
+55=>'EN',
+56=>'EN',
+57=>'EN',
+58=>'CS',
+59=>'ON',
+60=>'ON',
+61=>'ON',
+62=>'ON',
+63=>'ON',
+64=>'ON',
+65=>'L',
+66=>'L',
+67=>'L',
+68=>'L',
+69=>'L',
+70=>'L',
+71=>'L',
+72=>'L',
+73=>'L',
+74=>'L',
+75=>'L',
+76=>'L',
+77=>'L',
+78=>'L',
+79=>'L',
+80=>'L',
+81=>'L',
+82=>'L',
+83=>'L',
+84=>'L',
+85=>'L',
+86=>'L',
+87=>'L',
+88=>'L',
+89=>'L',
+90=>'L',
+91=>'ON',
+92=>'ON',
+93=>'ON',
+94=>'ON',
+95=>'ON',
+96=>'ON',
+97=>'L',
+98=>'L',
+99=>'L',
+100=>'L',
+101=>'L',
+102=>'L',
+103=>'L',
+104=>'L',
+105=>'L',
+106=>'L',
+107=>'L',
+108=>'L',
+109=>'L',
+110=>'L',
+111=>'L',
+112=>'L',
+113=>'L',
+114=>'L',
+115=>'L',
+116=>'L',
+117=>'L',
+118=>'L',
+119=>'L',
+120=>'L',
+121=>'L',
+122=>'L',
+123=>'ON',
+124=>'ON',
+125=>'ON',
+126=>'ON',
+127=>'BN',
+128=>'BN',
+129=>'BN',
+130=>'BN',
+131=>'BN',
+132=>'BN',
+133=>'B',
+134=>'BN',
+135=>'BN',
+136=>'BN',
+137=>'BN',
+138=>'BN',
+139=>'BN',
+140=>'BN',
+141=>'BN',
+142=>'BN',
+143=>'BN',
+144=>'BN',
+145=>'BN',
+146=>'BN',
+147=>'BN',
+148=>'BN',
+149=>'BN',
+150=>'BN',
+151=>'BN',
+152=>'BN',
+153=>'BN',
+154=>'BN',
+155=>'BN',
+156=>'BN',
+157=>'BN',
+158=>'BN',
+159=>'BN',
+160=>'CS',
+161=>'ON',
+162=>'ET',
+163=>'ET',
+164=>'ET',
+165=>'ET',
+166=>'ON',
+167=>'ON',
+168=>'ON',
+169=>'ON',
+170=>'L',
+171=>'ON',
+172=>'ON',
+173=>'BN',
+174=>'ON',
+175=>'ON',
+176=>'ET',
+177=>'ET',
+178=>'EN',
+179=>'EN',
+180=>'ON',
+181=>'L',
+182=>'ON',
+183=>'ON',
+184=>'ON',
+185=>'EN',
+186=>'L',
+187=>'ON',
+188=>'ON',
+189=>'ON',
+190=>'ON',
+191=>'ON',
+192=>'L',
+193=>'L',
+194=>'L',
+195=>'L',
+196=>'L',
+197=>'L',
+198=>'L',
+199=>'L',
+200=>'L',
+201=>'L',
+202=>'L',
+203=>'L',
+204=>'L',
+205=>'L',
+206=>'L',
+207=>'L',
+208=>'L',
+209=>'L',
+210=>'L',
+211=>'L',
+212=>'L',
+213=>'L',
+214=>'L',
+215=>'ON',
+216=>'L',
+217=>'L',
+218=>'L',
+219=>'L',
+220=>'L',
+221=>'L',
+222=>'L',
+223=>'L',
+224=>'L',
+225=>'L',
+226=>'L',
+227=>'L',
+228=>'L',
+229=>'L',
+230=>'L',
+231=>'L',
+232=>'L',
+233=>'L',
+234=>'L',
+235=>'L',
+236=>'L',
+237=>'L',
+238=>'L',
+239=>'L',
+240=>'L',
+241=>'L',
+242=>'L',
+243=>'L',
+244=>'L',
+245=>'L',
+246=>'L',
+247=>'ON',
+248=>'L',
+249=>'L',
+250=>'L',
+251=>'L',
+252=>'L',
+253=>'L',
+254=>'L',
+255=>'L',
+256=>'L',
+257=>'L',
+258=>'L',
+259=>'L',
+260=>'L',
+261=>'L',
+262=>'L',
+263=>'L',
+264=>'L',
+265=>'L',
+266=>'L',
+267=>'L',
+268=>'L',
+269=>'L',
+270=>'L',
+271=>'L',
+272=>'L',
+273=>'L',
+274=>'L',
+275=>'L',
+276=>'L',
+277=>'L',
+278=>'L',
+279=>'L',
+280=>'L',
+281=>'L',
+282=>'L',
+283=>'L',
+284=>'L',
+285=>'L',
+286=>'L',
+287=>'L',
+288=>'L',
+289=>'L',
+290=>'L',
+291=>'L',
+292=>'L',
+293=>'L',
+294=>'L',
+295=>'L',
+296=>'L',
+297=>'L',
+298=>'L',
+299=>'L',
+300=>'L',
+301=>'L',
+302=>'L',
+303=>'L',
+304=>'L',
+305=>'L',
+306=>'L',
+307=>'L',
+308=>'L',
+309=>'L',
+310=>'L',
+311=>'L',
+312=>'L',
+313=>'L',
+314=>'L',
+315=>'L',
+316=>'L',
+317=>'L',
+318=>'L',
+319=>'L',
+320=>'L',
+321=>'L',
+322=>'L',
+323=>'L',
+324=>'L',
+325=>'L',
+326=>'L',
+327=>'L',
+328=>'L',
+329=>'L',
+330=>'L',
+331=>'L',
+332=>'L',
+333=>'L',
+334=>'L',
+335=>'L',
+336=>'L',
+337=>'L',
+338=>'L',
+339=>'L',
+340=>'L',
+341=>'L',
+342=>'L',
+343=>'L',
+344=>'L',
+345=>'L',
+346=>'L',
+347=>'L',
+348=>'L',
+349=>'L',
+350=>'L',
+351=>'L',
+352=>'L',
+353=>'L',
+354=>'L',
+355=>'L',
+356=>'L',
+357=>'L',
+358=>'L',
+359=>'L',
+360=>'L',
+361=>'L',
+362=>'L',
+363=>'L',
+364=>'L',
+365=>'L',
+366=>'L',
+367=>'L',
+368=>'L',
+369=>'L',
+370=>'L',
+371=>'L',
+372=>'L',
+373=>'L',
+374=>'L',
+375=>'L',
+376=>'L',
+377=>'L',
+378=>'L',
+379=>'L',
+380=>'L',
+381=>'L',
+382=>'L',
+383=>'L',
+384=>'L',
+385=>'L',
+386=>'L',
+387=>'L',
+388=>'L',
+389=>'L',
+390=>'L',
+391=>'L',
+392=>'L',
+393=>'L',
+394=>'L',
+395=>'L',
+396=>'L',
+397=>'L',
+398=>'L',
+399=>'L',
+400=>'L',
+401=>'L',
+402=>'L',
+403=>'L',
+404=>'L',
+405=>'L',
+406=>'L',
+407=>'L',
+408=>'L',
+409=>'L',
+410=>'L',
+411=>'L',
+412=>'L',
+413=>'L',
+414=>'L',
+415=>'L',
+416=>'L',
+417=>'L',
+418=>'L',
+419=>'L',
+420=>'L',
+421=>'L',
+422=>'L',
+423=>'L',
+424=>'L',
+425=>'L',
+426=>'L',
+427=>'L',
+428=>'L',
+429=>'L',
+430=>'L',
+431=>'L',
+432=>'L',
+433=>'L',
+434=>'L',
+435=>'L',
+436=>'L',
+437=>'L',
+438=>'L',
+439=>'L',
+440=>'L',
+441=>'L',
+442=>'L',
+443=>'L',
+444=>'L',
+445=>'L',
+446=>'L',
+447=>'L',
+448=>'L',
+449=>'L',
+450=>'L',
+451=>'L',
+452=>'L',
+453=>'L',
+454=>'L',
+455=>'L',
+456=>'L',
+457=>'L',
+458=>'L',
+459=>'L',
+460=>'L',
+461=>'L',
+462=>'L',
+463=>'L',
+464=>'L',
+465=>'L',
+466=>'L',
+467=>'L',
+468=>'L',
+469=>'L',
+470=>'L',
+471=>'L',
+472=>'L',
+473=>'L',
+474=>'L',
+475=>'L',
+476=>'L',
+477=>'L',
+478=>'L',
+479=>'L',
+480=>'L',
+481=>'L',
+482=>'L',
+483=>'L',
+484=>'L',
+485=>'L',
+486=>'L',
+487=>'L',
+488=>'L',
+489=>'L',
+490=>'L',
+491=>'L',
+492=>'L',
+493=>'L',
+494=>'L',
+495=>'L',
+496=>'L',
+497=>'L',
+498=>'L',
+499=>'L',
+500=>'L',
+501=>'L',
+502=>'L',
+503=>'L',
+504=>'L',
+505=>'L',
+506=>'L',
+507=>'L',
+508=>'L',
+509=>'L',
+510=>'L',
+511=>'L',
+512=>'L',
+513=>'L',
+514=>'L',
+515=>'L',
+516=>'L',
+517=>'L',
+518=>'L',
+519=>'L',
+520=>'L',
+521=>'L',
+522=>'L',
+523=>'L',
+524=>'L',
+525=>'L',
+526=>'L',
+527=>'L',
+528=>'L',
+529=>'L',
+530=>'L',
+531=>'L',
+532=>'L',
+533=>'L',
+534=>'L',
+535=>'L',
+536=>'L',
+537=>'L',
+538=>'L',
+539=>'L',
+540=>'L',
+541=>'L',
+542=>'L',
+543=>'L',
+544=>'L',
+545=>'L',
+546=>'L',
+547=>'L',
+548=>'L',
+549=>'L',
+550=>'L',
+551=>'L',
+552=>'L',
+553=>'L',
+554=>'L',
+555=>'L',
+556=>'L',
+557=>'L',
+558=>'L',
+559=>'L',
+560=>'L',
+561=>'L',
+562=>'L',
+563=>'L',
+564=>'L',
+565=>'L',
+566=>'L',
+567=>'L',
+568=>'L',
+569=>'L',
+570=>'L',
+571=>'L',
+572=>'L',
+573=>'L',
+574=>'L',
+575=>'L',
+576=>'L',
+577=>'L',
+578=>'L',
+579=>'L',
+580=>'L',
+581=>'L',
+582=>'L',
+583=>'L',
+584=>'L',
+585=>'L',
+586=>'L',
+587=>'L',
+588=>'L',
+589=>'L',
+590=>'L',
+591=>'L',
+592=>'L',
+593=>'L',
+594=>'L',
+595=>'L',
+596=>'L',
+597=>'L',
+598=>'L',
+599=>'L',
+600=>'L',
+601=>'L',
+602=>'L',
+603=>'L',
+604=>'L',
+605=>'L',
+606=>'L',
+607=>'L',
+608=>'L',
+609=>'L',
+610=>'L',
+611=>'L',
+612=>'L',
+613=>'L',
+614=>'L',
+615=>'L',
+616=>'L',
+617=>'L',
+618=>'L',
+619=>'L',
+620=>'L',
+621=>'L',
+622=>'L',
+623=>'L',
+624=>'L',
+625=>'L',
+626=>'L',
+627=>'L',
+628=>'L',
+629=>'L',
+630=>'L',
+631=>'L',
+632=>'L',
+633=>'L',
+634=>'L',
+635=>'L',
+636=>'L',
+637=>'L',
+638=>'L',
+639=>'L',
+640=>'L',
+641=>'L',
+642=>'L',
+643=>'L',
+644=>'L',
+645=>'L',
+646=>'L',
+647=>'L',
+648=>'L',
+649=>'L',
+650=>'L',
+651=>'L',
+652=>'L',
+653=>'L',
+654=>'L',
+655=>'L',
+656=>'L',
+657=>'L',
+658=>'L',
+659=>'L',
+660=>'L',
+661=>'L',
+662=>'L',
+663=>'L',
+664=>'L',
+665=>'L',
+666=>'L',
+667=>'L',
+668=>'L',
+669=>'L',
+670=>'L',
+671=>'L',
+672=>'L',
+673=>'L',
+674=>'L',
+675=>'L',
+676=>'L',
+677=>'L',
+678=>'L',
+679=>'L',
+680=>'L',
+681=>'L',
+682=>'L',
+683=>'L',
+684=>'L',
+685=>'L',
+686=>'L',
+687=>'L',
+688=>'L',
+689=>'L',
+690=>'L',
+691=>'L',
+692=>'L',
+693=>'L',
+694=>'L',
+695=>'L',
+696=>'L',
+697=>'ON',
+698=>'ON',
+699=>'L',
+700=>'L',
+701=>'L',
+702=>'L',
+703=>'L',
+704=>'L',
+705=>'L',
+706=>'ON',
+707=>'ON',
+708=>'ON',
+709=>'ON',
+710=>'ON',
+711=>'ON',
+712=>'ON',
+713=>'ON',
+714=>'ON',
+715=>'ON',
+716=>'ON',
+717=>'ON',
+718=>'ON',
+719=>'ON',
+720=>'L',
+721=>'L',
+722=>'ON',
+723=>'ON',
+724=>'ON',
+725=>'ON',
+726=>'ON',
+727=>'ON',
+728=>'ON',
+729=>'ON',
+730=>'ON',
+731=>'ON',
+732=>'ON',
+733=>'ON',
+734=>'ON',
+735=>'ON',
+736=>'L',
+737=>'L',
+738=>'L',
+739=>'L',
+740=>'L',
+741=>'ON',
+742=>'ON',
+743=>'ON',
+744=>'ON',
+745=>'ON',
+746=>'ON',
+747=>'ON',
+748=>'ON',
+749=>'ON',
+750=>'L',
+751=>'ON',
+752=>'ON',
+753=>'ON',
+754=>'ON',
+755=>'ON',
+756=>'ON',
+757=>'ON',
+758=>'ON',
+759=>'ON',
+760=>'ON',
+761=>'ON',
+762=>'ON',
+763=>'ON',
+764=>'ON',
+765=>'ON',
+766=>'ON',
+767=>'ON',
+768=>'NSM',
+769=>'NSM',
+770=>'NSM',
+771=>'NSM',
+772=>'NSM',
+773=>'NSM',
+774=>'NSM',
+775=>'NSM',
+776=>'NSM',
+777=>'NSM',
+778=>'NSM',
+779=>'NSM',
+780=>'NSM',
+781=>'NSM',
+782=>'NSM',
+783=>'NSM',
+784=>'NSM',
+785=>'NSM',
+786=>'NSM',
+787=>'NSM',
+788=>'NSM',
+789=>'NSM',
+790=>'NSM',
+791=>'NSM',
+792=>'NSM',
+793=>'NSM',
+794=>'NSM',
+795=>'NSM',
+796=>'NSM',
+797=>'NSM',
+798=>'NSM',
+799=>'NSM',
+800=>'NSM',
+801=>'NSM',
+802=>'NSM',
+803=>'NSM',
+804=>'NSM',
+805=>'NSM',
+806=>'NSM',
+807=>'NSM',
+808=>'NSM',
+809=>'NSM',
+810=>'NSM',
+811=>'NSM',
+812=>'NSM',
+813=>'NSM',
+814=>'NSM',
+815=>'NSM',
+816=>'NSM',
+817=>'NSM',
+818=>'NSM',
+819=>'NSM',
+820=>'NSM',
+821=>'NSM',
+822=>'NSM',
+823=>'NSM',
+824=>'NSM',
+825=>'NSM',
+826=>'NSM',
+827=>'NSM',
+828=>'NSM',
+829=>'NSM',
+830=>'NSM',
+831=>'NSM',
+832=>'NSM',
+833=>'NSM',
+834=>'NSM',
+835=>'NSM',
+836=>'NSM',
+837=>'NSM',
+838=>'NSM',
+839=>'NSM',
+840=>'NSM',
+841=>'NSM',
+842=>'NSM',
+843=>'NSM',
+844=>'NSM',
+845=>'NSM',
+846=>'NSM',
+847=>'NSM',
+848=>'NSM',
+849=>'NSM',
+850=>'NSM',
+851=>'NSM',
+852=>'NSM',
+853=>'NSM',
+854=>'NSM',
+855=>'NSM',
+856=>'NSM',
+857=>'NSM',
+858=>'NSM',
+859=>'NSM',
+860=>'NSM',
+861=>'NSM',
+862=>'NSM',
+863=>'NSM',
+864=>'NSM',
+865=>'NSM',
+866=>'NSM',
+867=>'NSM',
+868=>'NSM',
+869=>'NSM',
+870=>'NSM',
+871=>'NSM',
+872=>'NSM',
+873=>'NSM',
+874=>'NSM',
+875=>'NSM',
+876=>'NSM',
+877=>'NSM',
+878=>'NSM',
+879=>'NSM',
+884=>'ON',
+885=>'ON',
+890=>'L',
+891=>'L',
+892=>'L',
+893=>'L',
+894=>'ON',
+900=>'ON',
+901=>'ON',
+902=>'L',
+903=>'ON',
+904=>'L',
+905=>'L',
+906=>'L',
+908=>'L',
+910=>'L',
+911=>'L',
+912=>'L',
+913=>'L',
+914=>'L',
+915=>'L',
+916=>'L',
+917=>'L',
+918=>'L',
+919=>'L',
+920=>'L',
+921=>'L',
+922=>'L',
+923=>'L',
+924=>'L',
+925=>'L',
+926=>'L',
+927=>'L',
+928=>'L',
+929=>'L',
+931=>'L',
+932=>'L',
+933=>'L',
+934=>'L',
+935=>'L',
+936=>'L',
+937=>'L',
+938=>'L',
+939=>'L',
+940=>'L',
+941=>'L',
+942=>'L',
+943=>'L',
+944=>'L',
+945=>'L',
+946=>'L',
+947=>'L',
+948=>'L',
+949=>'L',
+950=>'L',
+951=>'L',
+952=>'L',
+953=>'L',
+954=>'L',
+955=>'L',
+956=>'L',
+957=>'L',
+958=>'L',
+959=>'L',
+960=>'L',
+961=>'L',
+962=>'L',
+963=>'L',
+964=>'L',
+965=>'L',
+966=>'L',
+967=>'L',
+968=>'L',
+969=>'L',
+970=>'L',
+971=>'L',
+972=>'L',
+973=>'L',
+974=>'L',
+976=>'L',
+977=>'L',
+978=>'L',
+979=>'L',
+980=>'L',
+981=>'L',
+982=>'L',
+983=>'L',
+984=>'L',
+985=>'L',
+986=>'L',
+987=>'L',
+988=>'L',
+989=>'L',
+990=>'L',
+991=>'L',
+992=>'L',
+993=>'L',
+994=>'L',
+995=>'L',
+996=>'L',
+997=>'L',
+998=>'L',
+999=>'L',
+1000=>'L',
+1001=>'L',
+1002=>'L',
+1003=>'L',
+1004=>'L',
+1005=>'L',
+1006=>'L',
+1007=>'L',
+1008=>'L',
+1009=>'L',
+1010=>'L',
+1011=>'L',
+1012=>'L',
+1013=>'L',
+1014=>'ON',
+1015=>'L',
+1016=>'L',
+1017=>'L',
+1018=>'L',
+1019=>'L',
+1020=>'L',
+1021=>'L',
+1022=>'L',
+1023=>'L',
+1024=>'L',
+1025=>'L',
+1026=>'L',
+1027=>'L',
+1028=>'L',
+1029=>'L',
+1030=>'L',
+1031=>'L',
+1032=>'L',
+1033=>'L',
+1034=>'L',
+1035=>'L',
+1036=>'L',
+1037=>'L',
+1038=>'L',
+1039=>'L',
+1040=>'L',
+1041=>'L',
+1042=>'L',
+1043=>'L',
+1044=>'L',
+1045=>'L',
+1046=>'L',
+1047=>'L',
+1048=>'L',
+1049=>'L',
+1050=>'L',
+1051=>'L',
+1052=>'L',
+1053=>'L',
+1054=>'L',
+1055=>'L',
+1056=>'L',
+1057=>'L',
+1058=>'L',
+1059=>'L',
+1060=>'L',
+1061=>'L',
+1062=>'L',
+1063=>'L',
+1064=>'L',
+1065=>'L',
+1066=>'L',
+1067=>'L',
+1068=>'L',
+1069=>'L',
+1070=>'L',
+1071=>'L',
+1072=>'L',
+1073=>'L',
+1074=>'L',
+1075=>'L',
+1076=>'L',
+1077=>'L',
+1078=>'L',
+1079=>'L',
+1080=>'L',
+1081=>'L',
+1082=>'L',
+1083=>'L',
+1084=>'L',
+1085=>'L',
+1086=>'L',
+1087=>'L',
+1088=>'L',
+1089=>'L',
+1090=>'L',
+1091=>'L',
+1092=>'L',
+1093=>'L',
+1094=>'L',
+1095=>'L',
+1096=>'L',
+1097=>'L',
+1098=>'L',
+1099=>'L',
+1100=>'L',
+1101=>'L',
+1102=>'L',
+1103=>'L',
+1104=>'L',
+1105=>'L',
+1106=>'L',
+1107=>'L',
+1108=>'L',
+1109=>'L',
+1110=>'L',
+1111=>'L',
+1112=>'L',
+1113=>'L',
+1114=>'L',
+1115=>'L',
+1116=>'L',
+1117=>'L',
+1118=>'L',
+1119=>'L',
+1120=>'L',
+1121=>'L',
+1122=>'L',
+1123=>'L',
+1124=>'L',
+1125=>'L',
+1126=>'L',
+1127=>'L',
+1128=>'L',
+1129=>'L',
+1130=>'L',
+1131=>'L',
+1132=>'L',
+1133=>'L',
+1134=>'L',
+1135=>'L',
+1136=>'L',
+1137=>'L',
+1138=>'L',
+1139=>'L',
+1140=>'L',
+1141=>'L',
+1142=>'L',
+1143=>'L',
+1144=>'L',
+1145=>'L',
+1146=>'L',
+1147=>'L',
+1148=>'L',
+1149=>'L',
+1150=>'L',
+1151=>'L',
+1152=>'L',
+1153=>'L',
+1154=>'L',
+1155=>'NSM',
+1156=>'NSM',
+1157=>'NSM',
+1158=>'NSM',
+1160=>'NSM',
+1161=>'NSM',
+1162=>'L',
+1163=>'L',
+1164=>'L',
+1165=>'L',
+1166=>'L',
+1167=>'L',
+1168=>'L',
+1169=>'L',
+1170=>'L',
+1171=>'L',
+1172=>'L',
+1173=>'L',
+1174=>'L',
+1175=>'L',
+1176=>'L',
+1177=>'L',
+1178=>'L',
+1179=>'L',
+1180=>'L',
+1181=>'L',
+1182=>'L',
+1183=>'L',
+1184=>'L',
+1185=>'L',
+1186=>'L',
+1187=>'L',
+1188=>'L',
+1189=>'L',
+1190=>'L',
+1191=>'L',
+1192=>'L',
+1193=>'L',
+1194=>'L',
+1195=>'L',
+1196=>'L',
+1197=>'L',
+1198=>'L',
+1199=>'L',
+1200=>'L',
+1201=>'L',
+1202=>'L',
+1203=>'L',
+1204=>'L',
+1205=>'L',
+1206=>'L',
+1207=>'L',
+1208=>'L',
+1209=>'L',
+1210=>'L',
+1211=>'L',
+1212=>'L',
+1213=>'L',
+1214=>'L',
+1215=>'L',
+1216=>'L',
+1217=>'L',
+1218=>'L',
+1219=>'L',
+1220=>'L',
+1221=>'L',
+1222=>'L',
+1223=>'L',
+1224=>'L',
+1225=>'L',
+1226=>'L',
+1227=>'L',
+1228=>'L',
+1229=>'L',
+1230=>'L',
+1231=>'L',
+1232=>'L',
+1233=>'L',
+1234=>'L',
+1235=>'L',
+1236=>'L',
+1237=>'L',
+1238=>'L',
+1239=>'L',
+1240=>'L',
+1241=>'L',
+1242=>'L',
+1243=>'L',
+1244=>'L',
+1245=>'L',
+1246=>'L',
+1247=>'L',
+1248=>'L',
+1249=>'L',
+1250=>'L',
+1251=>'L',
+1252=>'L',
+1253=>'L',
+1254=>'L',
+1255=>'L',
+1256=>'L',
+1257=>'L',
+1258=>'L',
+1259=>'L',
+1260=>'L',
+1261=>'L',
+1262=>'L',
+1263=>'L',
+1264=>'L',
+1265=>'L',
+1266=>'L',
+1267=>'L',
+1268=>'L',
+1269=>'L',
+1270=>'L',
+1271=>'L',
+1272=>'L',
+1273=>'L',
+1274=>'L',
+1275=>'L',
+1276=>'L',
+1277=>'L',
+1278=>'L',
+1279=>'L',
+1280=>'L',
+1281=>'L',
+1282=>'L',
+1283=>'L',
+1284=>'L',
+1285=>'L',
+1286=>'L',
+1287=>'L',
+1288=>'L',
+1289=>'L',
+1290=>'L',
+1291=>'L',
+1292=>'L',
+1293=>'L',
+1294=>'L',
+1295=>'L',
+1296=>'L',
+1297=>'L',
+1298=>'L',
+1299=>'L',
+1329=>'L',
+1330=>'L',
+1331=>'L',
+1332=>'L',
+1333=>'L',
+1334=>'L',
+1335=>'L',
+1336=>'L',
+1337=>'L',
+1338=>'L',
+1339=>'L',
+1340=>'L',
+1341=>'L',
+1342=>'L',
+1343=>'L',
+1344=>'L',
+1345=>'L',
+1346=>'L',
+1347=>'L',
+1348=>'L',
+1349=>'L',
+1350=>'L',
+1351=>'L',
+1352=>'L',
+1353=>'L',
+1354=>'L',
+1355=>'L',
+1356=>'L',
+1357=>'L',
+1358=>'L',
+1359=>'L',
+1360=>'L',
+1361=>'L',
+1362=>'L',
+1363=>'L',
+1364=>'L',
+1365=>'L',
+1366=>'L',
+1369=>'L',
+1370=>'L',
+1371=>'L',
+1372=>'L',
+1373=>'L',
+1374=>'L',
+1375=>'L',
+1377=>'L',
+1378=>'L',
+1379=>'L',
+1380=>'L',
+1381=>'L',
+1382=>'L',
+1383=>'L',
+1384=>'L',
+1385=>'L',
+1386=>'L',
+1387=>'L',
+1388=>'L',
+1389=>'L',
+1390=>'L',
+1391=>'L',
+1392=>'L',
+1393=>'L',
+1394=>'L',
+1395=>'L',
+1396=>'L',
+1397=>'L',
+1398=>'L',
+1399=>'L',
+1400=>'L',
+1401=>'L',
+1402=>'L',
+1403=>'L',
+1404=>'L',
+1405=>'L',
+1406=>'L',
+1407=>'L',
+1408=>'L',
+1409=>'L',
+1410=>'L',
+1411=>'L',
+1412=>'L',
+1413=>'L',
+1414=>'L',
+1415=>'L',
+1417=>'L',
+1418=>'ON',
+1425=>'NSM',
+1426=>'NSM',
+1427=>'NSM',
+1428=>'NSM',
+1429=>'NSM',
+1430=>'NSM',
+1431=>'NSM',
+1432=>'NSM',
+1433=>'NSM',
+1434=>'NSM',
+1435=>'NSM',
+1436=>'NSM',
+1437=>'NSM',
+1438=>'NSM',
+1439=>'NSM',
+1440=>'NSM',
+1441=>'NSM',
+1442=>'NSM',
+1443=>'NSM',
+1444=>'NSM',
+1445=>'NSM',
+1446=>'NSM',
+1447=>'NSM',
+1448=>'NSM',
+1449=>'NSM',
+1450=>'NSM',
+1451=>'NSM',
+1452=>'NSM',
+1453=>'NSM',
+1454=>'NSM',
+1455=>'NSM',
+1456=>'NSM',
+1457=>'NSM',
+1458=>'NSM',
+1459=>'NSM',
+1460=>'NSM',
+1461=>'NSM',
+1462=>'NSM',
+1463=>'NSM',
+1464=>'NSM',
+1465=>'NSM',
+1466=>'NSM',
+1467=>'NSM',
+1468=>'NSM',
+1469=>'NSM',
+1470=>'R',
+1471=>'NSM',
+1472=>'R',
+1473=>'NSM',
+1474=>'NSM',
+1475=>'R',
+1476=>'NSM',
+1477=>'NSM',
+1478=>'R',
+1479=>'NSM',
+1488=>'R',
+1489=>'R',
+1490=>'R',
+1491=>'R',
+1492=>'R',
+1493=>'R',
+1494=>'R',
+1495=>'R',
+1496=>'R',
+1497=>'R',
+1498=>'R',
+1499=>'R',
+1500=>'R',
+1501=>'R',
+1502=>'R',
+1503=>'R',
+1504=>'R',
+1505=>'R',
+1506=>'R',
+1507=>'R',
+1508=>'R',
+1509=>'R',
+1510=>'R',
+1511=>'R',
+1512=>'R',
+1513=>'R',
+1514=>'R',
+1520=>'R',
+1521=>'R',
+1522=>'R',
+1523=>'R',
+1524=>'R',
+1536=>'AL',
+1537=>'AL',
+1538=>'AL',
+1539=>'AL',
+1547=>'AL',
+1548=>'CS',
+1549=>'AL',
+1550=>'ON',
+1551=>'ON',
+1552=>'NSM',
+1553=>'NSM',
+1554=>'NSM',
+1555=>'NSM',
+1556=>'NSM',
+1557=>'NSM',
+1563=>'AL',
+1566=>'AL',
+1567=>'AL',
+1569=>'AL',
+1570=>'AL',
+1571=>'AL',
+1572=>'AL',
+1573=>'AL',
+1574=>'AL',
+1575=>'AL',
+1576=>'AL',
+1577=>'AL',
+1578=>'AL',
+1579=>'AL',
+1580=>'AL',
+1581=>'AL',
+1582=>'AL',
+1583=>'AL',
+1584=>'AL',
+1585=>'AL',
+1586=>'AL',
+1587=>'AL',
+1588=>'AL',
+1589=>'AL',
+1590=>'AL',
+1591=>'AL',
+1592=>'AL',
+1593=>'AL',
+1594=>'AL',
+1600=>'AL',
+1601=>'AL',
+1602=>'AL',
+1603=>'AL',
+1604=>'AL',
+1605=>'AL',
+1606=>'AL',
+1607=>'AL',
+1608=>'AL',
+1609=>'AL',
+1610=>'AL',
+1611=>'NSM',
+1612=>'NSM',
+1613=>'NSM',
+1614=>'NSM',
+1615=>'NSM',
+1616=>'NSM',
+1617=>'NSM',
+1618=>'NSM',
+1619=>'NSM',
+1620=>'NSM',
+1621=>'NSM',
+1622=>'NSM',
+1623=>'NSM',
+1624=>'NSM',
+1625=>'NSM',
+1626=>'NSM',
+1627=>'NSM',
+1628=>'NSM',
+1629=>'NSM',
+1630=>'NSM',
+1632=>'AN',
+1633=>'AN',
+1634=>'AN',
+1635=>'AN',
+1636=>'AN',
+1637=>'AN',
+1638=>'AN',
+1639=>'AN',
+1640=>'AN',
+1641=>'AN',
+1642=>'ET',
+1643=>'AN',
+1644=>'AN',
+1645=>'AL',
+1646=>'AL',
+1647=>'AL',
+1648=>'NSM',
+1649=>'AL',
+1650=>'AL',
+1651=>'AL',
+1652=>'AL',
+1653=>'AL',
+1654=>'AL',
+1655=>'AL',
+1656=>'AL',
+1657=>'AL',
+1658=>'AL',
+1659=>'AL',
+1660=>'AL',
+1661=>'AL',
+1662=>'AL',
+1663=>'AL',
+1664=>'AL',
+1665=>'AL',
+1666=>'AL',
+1667=>'AL',
+1668=>'AL',
+1669=>'AL',
+1670=>'AL',
+1671=>'AL',
+1672=>'AL',
+1673=>'AL',
+1674=>'AL',
+1675=>'AL',
+1676=>'AL',
+1677=>'AL',
+1678=>'AL',
+1679=>'AL',
+1680=>'AL',
+1681=>'AL',
+1682=>'AL',
+1683=>'AL',
+1684=>'AL',
+1685=>'AL',
+1686=>'AL',
+1687=>'AL',
+1688=>'AL',
+1689=>'AL',
+1690=>'AL',
+1691=>'AL',
+1692=>'AL',
+1693=>'AL',
+1694=>'AL',
+1695=>'AL',
+1696=>'AL',
+1697=>'AL',
+1698=>'AL',
+1699=>'AL',
+1700=>'AL',
+1701=>'AL',
+1702=>'AL',
+1703=>'AL',
+1704=>'AL',
+1705=>'AL',
+1706=>'AL',
+1707=>'AL',
+1708=>'AL',
+1709=>'AL',
+1710=>'AL',
+1711=>'AL',
+1712=>'AL',
+1713=>'AL',
+1714=>'AL',
+1715=>'AL',
+1716=>'AL',
+1717=>'AL',
+1718=>'AL',
+1719=>'AL',
+1720=>'AL',
+1721=>'AL',
+1722=>'AL',
+1723=>'AL',
+1724=>'AL',
+1725=>'AL',
+1726=>'AL',
+1727=>'AL',
+1728=>'AL',
+1729=>'AL',
+1730=>'AL',
+1731=>'AL',
+1732=>'AL',
+1733=>'AL',
+1734=>'AL',
+1735=>'AL',
+1736=>'AL',
+1737=>'AL',
+1738=>'AL',
+1739=>'AL',
+1740=>'AL',
+1741=>'AL',
+1742=>'AL',
+1743=>'AL',
+1744=>'AL',
+1745=>'AL',
+1746=>'AL',
+1747=>'AL',
+1748=>'AL',
+1749=>'AL',
+1750=>'NSM',
+1751=>'NSM',
+1752=>'NSM',
+1753=>'NSM',
+1754=>'NSM',
+1755=>'NSM',
+1756=>'NSM',
+1757=>'AL',
+1758=>'NSM',
+1759=>'NSM',
+1760=>'NSM',
+1761=>'NSM',
+1762=>'NSM',
+1763=>'NSM',
+1764=>'NSM',
+1765=>'AL',
+1766=>'AL',
+1767=>'NSM',
+1768=>'NSM',
+1769=>'ON',
+1770=>'NSM',
+1771=>'NSM',
+1772=>'NSM',
+1773=>'NSM',
+1774=>'AL',
+1775=>'AL',
+1776=>'EN',
+1777=>'EN',
+1778=>'EN',
+1779=>'EN',
+1780=>'EN',
+1781=>'EN',
+1782=>'EN',
+1783=>'EN',
+1784=>'EN',
+1785=>'EN',
+1786=>'AL',
+1787=>'AL',
+1788=>'AL',
+1789=>'AL',
+1790=>'AL',
+1791=>'AL',
+1792=>'AL',
+1793=>'AL',
+1794=>'AL',
+1795=>'AL',
+1796=>'AL',
+1797=>'AL',
+1798=>'AL',
+1799=>'AL',
+1800=>'AL',
+1801=>'AL',
+1802=>'AL',
+1803=>'AL',
+1804=>'AL',
+1805=>'AL',
+1807=>'BN',
+1808=>'AL',
+1809=>'NSM',
+1810=>'AL',
+1811=>'AL',
+1812=>'AL',
+1813=>'AL',
+1814=>'AL',
+1815=>'AL',
+1816=>'AL',
+1817=>'AL',
+1818=>'AL',
+1819=>'AL',
+1820=>'AL',
+1821=>'AL',
+1822=>'AL',
+1823=>'AL',
+1824=>'AL',
+1825=>'AL',
+1826=>'AL',
+1827=>'AL',
+1828=>'AL',
+1829=>'AL',
+1830=>'AL',
+1831=>'AL',
+1832=>'AL',
+1833=>'AL',
+1834=>'AL',
+1835=>'AL',
+1836=>'AL',
+1837=>'AL',
+1838=>'AL',
+1839=>'AL',
+1840=>'NSM',
+1841=>'NSM',
+1842=>'NSM',
+1843=>'NSM',
+1844=>'NSM',
+1845=>'NSM',
+1846=>'NSM',
+1847=>'NSM',
+1848=>'NSM',
+1849=>'NSM',
+1850=>'NSM',
+1851=>'NSM',
+1852=>'NSM',
+1853=>'NSM',
+1854=>'NSM',
+1855=>'NSM',
+1856=>'NSM',
+1857=>'NSM',
+1858=>'NSM',
+1859=>'NSM',
+1860=>'NSM',
+1861=>'NSM',
+1862=>'NSM',
+1863=>'NSM',
+1864=>'NSM',
+1865=>'NSM',
+1866=>'NSM',
+1869=>'AL',
+1870=>'AL',
+1871=>'AL',
+1872=>'AL',
+1873=>'AL',
+1874=>'AL',
+1875=>'AL',
+1876=>'AL',
+1877=>'AL',
+1878=>'AL',
+1879=>'AL',
+1880=>'AL',
+1881=>'AL',
+1882=>'AL',
+1883=>'AL',
+1884=>'AL',
+1885=>'AL',
+1886=>'AL',
+1887=>'AL',
+1888=>'AL',
+1889=>'AL',
+1890=>'AL',
+1891=>'AL',
+1892=>'AL',
+1893=>'AL',
+1894=>'AL',
+1895=>'AL',
+1896=>'AL',
+1897=>'AL',
+1898=>'AL',
+1899=>'AL',
+1900=>'AL',
+1901=>'AL',
+1920=>'AL',
+1921=>'AL',
+1922=>'AL',
+1923=>'AL',
+1924=>'AL',
+1925=>'AL',
+1926=>'AL',
+1927=>'AL',
+1928=>'AL',
+1929=>'AL',
+1930=>'AL',
+1931=>'AL',
+1932=>'AL',
+1933=>'AL',
+1934=>'AL',
+1935=>'AL',
+1936=>'AL',
+1937=>'AL',
+1938=>'AL',
+1939=>'AL',
+1940=>'AL',
+1941=>'AL',
+1942=>'AL',
+1943=>'AL',
+1944=>'AL',
+1945=>'AL',
+1946=>'AL',
+1947=>'AL',
+1948=>'AL',
+1949=>'AL',
+1950=>'AL',
+1951=>'AL',
+1952=>'AL',
+1953=>'AL',
+1954=>'AL',
+1955=>'AL',
+1956=>'AL',
+1957=>'AL',
+1958=>'NSM',
+1959=>'NSM',
+1960=>'NSM',
+1961=>'NSM',
+1962=>'NSM',
+1963=>'NSM',
+1964=>'NSM',
+1965=>'NSM',
+1966=>'NSM',
+1967=>'NSM',
+1968=>'NSM',
+1969=>'AL',
+1984=>'R',
+1985=>'R',
+1986=>'R',
+1987=>'R',
+1988=>'R',
+1989=>'R',
+1990=>'R',
+1991=>'R',
+1992=>'R',
+1993=>'R',
+1994=>'R',
+1995=>'R',
+1996=>'R',
+1997=>'R',
+1998=>'R',
+1999=>'R',
+2000=>'R',
+2001=>'R',
+2002=>'R',
+2003=>'R',
+2004=>'R',
+2005=>'R',
+2006=>'R',
+2007=>'R',
+2008=>'R',
+2009=>'R',
+2010=>'R',
+2011=>'R',
+2012=>'R',
+2013=>'R',
+2014=>'R',
+2015=>'R',
+2016=>'R',
+2017=>'R',
+2018=>'R',
+2019=>'R',
+2020=>'R',
+2021=>'R',
+2022=>'R',
+2023=>'R',
+2024=>'R',
+2025=>'R',
+2026=>'R',
+2027=>'NSM',
+2028=>'NSM',
+2029=>'NSM',
+2030=>'NSM',
+2031=>'NSM',
+2032=>'NSM',
+2033=>'NSM',
+2034=>'NSM',
+2035=>'NSM',
+2036=>'R',
+2037=>'R',
+2038=>'ON',
+2039=>'ON',
+2040=>'ON',
+2041=>'ON',
+2042=>'R',
+2305=>'NSM',
+2306=>'NSM',
+2307=>'L',
+2308=>'L',
+2309=>'L',
+2310=>'L',
+2311=>'L',
+2312=>'L',
+2313=>'L',
+2314=>'L',
+2315=>'L',
+2316=>'L',
+2317=>'L',
+2318=>'L',
+2319=>'L',
+2320=>'L',
+2321=>'L',
+2322=>'L',
+2323=>'L',
+2324=>'L',
+2325=>'L',
+2326=>'L',
+2327=>'L',
+2328=>'L',
+2329=>'L',
+2330=>'L',
+2331=>'L',
+2332=>'L',
+2333=>'L',
+2334=>'L',
+2335=>'L',
+2336=>'L',
+2337=>'L',
+2338=>'L',
+2339=>'L',
+2340=>'L',
+2341=>'L',
+2342=>'L',
+2343=>'L',
+2344=>'L',
+2345=>'L',
+2346=>'L',
+2347=>'L',
+2348=>'L',
+2349=>'L',
+2350=>'L',
+2351=>'L',
+2352=>'L',
+2353=>'L',
+2354=>'L',
+2355=>'L',
+2356=>'L',
+2357=>'L',
+2358=>'L',
+2359=>'L',
+2360=>'L',
+2361=>'L',
+2364=>'NSM',
+2365=>'L',
+2366=>'L',
+2367=>'L',
+2368=>'L',
+2369=>'NSM',
+2370=>'NSM',
+2371=>'NSM',
+2372=>'NSM',
+2373=>'NSM',
+2374=>'NSM',
+2375=>'NSM',
+2376=>'NSM',
+2377=>'L',
+2378=>'L',
+2379=>'L',
+2380=>'L',
+2381=>'NSM',
+2384=>'L',
+2385=>'NSM',
+2386=>'NSM',
+2387=>'NSM',
+2388=>'NSM',
+2392=>'L',
+2393=>'L',
+2394=>'L',
+2395=>'L',
+2396=>'L',
+2397=>'L',
+2398=>'L',
+2399=>'L',
+2400=>'L',
+2401=>'L',
+2402=>'NSM',
+2403=>'NSM',
+2404=>'L',
+2405=>'L',
+2406=>'L',
+2407=>'L',
+2408=>'L',
+2409=>'L',
+2410=>'L',
+2411=>'L',
+2412=>'L',
+2413=>'L',
+2414=>'L',
+2415=>'L',
+2416=>'L',
+2427=>'L',
+2428=>'L',
+2429=>'L',
+2430=>'L',
+2431=>'L',
+2433=>'NSM',
+2434=>'L',
+2435=>'L',
+2437=>'L',
+2438=>'L',
+2439=>'L',
+2440=>'L',
+2441=>'L',
+2442=>'L',
+2443=>'L',
+2444=>'L',
+2447=>'L',
+2448=>'L',
+2451=>'L',
+2452=>'L',
+2453=>'L',
+2454=>'L',
+2455=>'L',
+2456=>'L',
+2457=>'L',
+2458=>'L',
+2459=>'L',
+2460=>'L',
+2461=>'L',
+2462=>'L',
+2463=>'L',
+2464=>'L',
+2465=>'L',
+2466=>'L',
+2467=>'L',
+2468=>'L',
+2469=>'L',
+2470=>'L',
+2471=>'L',
+2472=>'L',
+2474=>'L',
+2475=>'L',
+2476=>'L',
+2477=>'L',
+2478=>'L',
+2479=>'L',
+2480=>'L',
+2482=>'L',
+2486=>'L',
+2487=>'L',
+2488=>'L',
+2489=>'L',
+2492=>'NSM',
+2493=>'L',
+2494=>'L',
+2495=>'L',
+2496=>'L',
+2497=>'NSM',
+2498=>'NSM',
+2499=>'NSM',
+2500=>'NSM',
+2503=>'L',
+2504=>'L',
+2507=>'L',
+2508=>'L',
+2509=>'NSM',
+2510=>'L',
+2519=>'L',
+2524=>'L',
+2525=>'L',
+2527=>'L',
+2528=>'L',
+2529=>'L',
+2530=>'NSM',
+2531=>'NSM',
+2534=>'L',
+2535=>'L',
+2536=>'L',
+2537=>'L',
+2538=>'L',
+2539=>'L',
+2540=>'L',
+2541=>'L',
+2542=>'L',
+2543=>'L',
+2544=>'L',
+2545=>'L',
+2546=>'ET',
+2547=>'ET',
+2548=>'L',
+2549=>'L',
+2550=>'L',
+2551=>'L',
+2552=>'L',
+2553=>'L',
+2554=>'L',
+2561=>'NSM',
+2562=>'NSM',
+2563=>'L',
+2565=>'L',
+2566=>'L',
+2567=>'L',
+2568=>'L',
+2569=>'L',
+2570=>'L',
+2575=>'L',
+2576=>'L',
+2579=>'L',
+2580=>'L',
+2581=>'L',
+2582=>'L',
+2583=>'L',
+2584=>'L',
+2585=>'L',
+2586=>'L',
+2587=>'L',
+2588=>'L',
+2589=>'L',
+2590=>'L',
+2591=>'L',
+2592=>'L',
+2593=>'L',
+2594=>'L',
+2595=>'L',
+2596=>'L',
+2597=>'L',
+2598=>'L',
+2599=>'L',
+2600=>'L',
+2602=>'L',
+2603=>'L',
+2604=>'L',
+2605=>'L',
+2606=>'L',
+2607=>'L',
+2608=>'L',
+2610=>'L',
+2611=>'L',
+2613=>'L',
+2614=>'L',
+2616=>'L',
+2617=>'L',
+2620=>'NSM',
+2622=>'L',
+2623=>'L',
+2624=>'L',
+2625=>'NSM',
+2626=>'NSM',
+2631=>'NSM',
+2632=>'NSM',
+2635=>'NSM',
+2636=>'NSM',
+2637=>'NSM',
+2649=>'L',
+2650=>'L',
+2651=>'L',
+2652=>'L',
+2654=>'L',
+2662=>'L',
+2663=>'L',
+2664=>'L',
+2665=>'L',
+2666=>'L',
+2667=>'L',
+2668=>'L',
+2669=>'L',
+2670=>'L',
+2671=>'L',
+2672=>'NSM',
+2673=>'NSM',
+2674=>'L',
+2675=>'L',
+2676=>'L',
+2689=>'NSM',
+2690=>'NSM',
+2691=>'L',
+2693=>'L',
+2694=>'L',
+2695=>'L',
+2696=>'L',
+2697=>'L',
+2698=>'L',
+2699=>'L',
+2700=>'L',
+2701=>'L',
+2703=>'L',
+2704=>'L',
+2705=>'L',
+2707=>'L',
+2708=>'L',
+2709=>'L',
+2710=>'L',
+2711=>'L',
+2712=>'L',
+2713=>'L',
+2714=>'L',
+2715=>'L',
+2716=>'L',
+2717=>'L',
+2718=>'L',
+2719=>'L',
+2720=>'L',
+2721=>'L',
+2722=>'L',
+2723=>'L',
+2724=>'L',
+2725=>'L',
+2726=>'L',
+2727=>'L',
+2728=>'L',
+2730=>'L',
+2731=>'L',
+2732=>'L',
+2733=>'L',
+2734=>'L',
+2735=>'L',
+2736=>'L',
+2738=>'L',
+2739=>'L',
+2741=>'L',
+2742=>'L',
+2743=>'L',
+2744=>'L',
+2745=>'L',
+2748=>'NSM',
+2749=>'L',
+2750=>'L',
+2751=>'L',
+2752=>'L',
+2753=>'NSM',
+2754=>'NSM',
+2755=>'NSM',
+2756=>'NSM',
+2757=>'NSM',
+2759=>'NSM',
+2760=>'NSM',
+2761=>'L',
+2763=>'L',
+2764=>'L',
+2765=>'NSM',
+2768=>'L',
+2784=>'L',
+2785=>'L',
+2786=>'NSM',
+2787=>'NSM',
+2790=>'L',
+2791=>'L',
+2792=>'L',
+2793=>'L',
+2794=>'L',
+2795=>'L',
+2796=>'L',
+2797=>'L',
+2798=>'L',
+2799=>'L',
+2801=>'ET',
+2817=>'NSM',
+2818=>'L',
+2819=>'L',
+2821=>'L',
+2822=>'L',
+2823=>'L',
+2824=>'L',
+2825=>'L',
+2826=>'L',
+2827=>'L',
+2828=>'L',
+2831=>'L',
+2832=>'L',
+2835=>'L',
+2836=>'L',
+2837=>'L',
+2838=>'L',
+2839=>'L',
+2840=>'L',
+2841=>'L',
+2842=>'L',
+2843=>'L',
+2844=>'L',
+2845=>'L',
+2846=>'L',
+2847=>'L',
+2848=>'L',
+2849=>'L',
+2850=>'L',
+2851=>'L',
+2852=>'L',
+2853=>'L',
+2854=>'L',
+2855=>'L',
+2856=>'L',
+2858=>'L',
+2859=>'L',
+2860=>'L',
+2861=>'L',
+2862=>'L',
+2863=>'L',
+2864=>'L',
+2866=>'L',
+2867=>'L',
+2869=>'L',
+2870=>'L',
+2871=>'L',
+2872=>'L',
+2873=>'L',
+2876=>'NSM',
+2877=>'L',
+2878=>'L',
+2879=>'NSM',
+2880=>'L',
+2881=>'NSM',
+2882=>'NSM',
+2883=>'NSM',
+2887=>'L',
+2888=>'L',
+2891=>'L',
+2892=>'L',
+2893=>'NSM',
+2902=>'NSM',
+2903=>'L',
+2908=>'L',
+2909=>'L',
+2911=>'L',
+2912=>'L',
+2913=>'L',
+2918=>'L',
+2919=>'L',
+2920=>'L',
+2921=>'L',
+2922=>'L',
+2923=>'L',
+2924=>'L',
+2925=>'L',
+2926=>'L',
+2927=>'L',
+2928=>'L',
+2929=>'L',
+2946=>'NSM',
+2947=>'L',
+2949=>'L',
+2950=>'L',
+2951=>'L',
+2952=>'L',
+2953=>'L',
+2954=>'L',
+2958=>'L',
+2959=>'L',
+2960=>'L',
+2962=>'L',
+2963=>'L',
+2964=>'L',
+2965=>'L',
+2969=>'L',
+2970=>'L',
+2972=>'L',
+2974=>'L',
+2975=>'L',
+2979=>'L',
+2980=>'L',
+2984=>'L',
+2985=>'L',
+2986=>'L',
+2990=>'L',
+2991=>'L',
+2992=>'L',
+2993=>'L',
+2994=>'L',
+2995=>'L',
+2996=>'L',
+2997=>'L',
+2998=>'L',
+2999=>'L',
+3000=>'L',
+3001=>'L',
+3006=>'L',
+3007=>'L',
+3008=>'NSM',
+3009=>'L',
+3010=>'L',
+3014=>'L',
+3015=>'L',
+3016=>'L',
+3018=>'L',
+3019=>'L',
+3020=>'L',
+3021=>'NSM',
+3031=>'L',
+3046=>'L',
+3047=>'L',
+3048=>'L',
+3049=>'L',
+3050=>'L',
+3051=>'L',
+3052=>'L',
+3053=>'L',
+3054=>'L',
+3055=>'L',
+3056=>'L',
+3057=>'L',
+3058=>'L',
+3059=>'ON',
+3060=>'ON',
+3061=>'ON',
+3062=>'ON',
+3063=>'ON',
+3064=>'ON',
+3065=>'ET',
+3066=>'ON',
+3073=>'L',
+3074=>'L',
+3075=>'L',
+3077=>'L',
+3078=>'L',
+3079=>'L',
+3080=>'L',
+3081=>'L',
+3082=>'L',
+3083=>'L',
+3084=>'L',
+3086=>'L',
+3087=>'L',
+3088=>'L',
+3090=>'L',
+3091=>'L',
+3092=>'L',
+3093=>'L',
+3094=>'L',
+3095=>'L',
+3096=>'L',
+3097=>'L',
+3098=>'L',
+3099=>'L',
+3100=>'L',
+3101=>'L',
+3102=>'L',
+3103=>'L',
+3104=>'L',
+3105=>'L',
+3106=>'L',
+3107=>'L',
+3108=>'L',
+3109=>'L',
+3110=>'L',
+3111=>'L',
+3112=>'L',
+3114=>'L',
+3115=>'L',
+3116=>'L',
+3117=>'L',
+3118=>'L',
+3119=>'L',
+3120=>'L',
+3121=>'L',
+3122=>'L',
+3123=>'L',
+3125=>'L',
+3126=>'L',
+3127=>'L',
+3128=>'L',
+3129=>'L',
+3134=>'NSM',
+3135=>'NSM',
+3136=>'NSM',
+3137=>'L',
+3138=>'L',
+3139=>'L',
+3140=>'L',
+3142=>'NSM',
+3143=>'NSM',
+3144=>'NSM',
+3146=>'NSM',
+3147=>'NSM',
+3148=>'NSM',
+3149=>'NSM',
+3157=>'NSM',
+3158=>'NSM',
+3168=>'L',
+3169=>'L',
+3174=>'L',
+3175=>'L',
+3176=>'L',
+3177=>'L',
+3178=>'L',
+3179=>'L',
+3180=>'L',
+3181=>'L',
+3182=>'L',
+3183=>'L',
+3202=>'L',
+3203=>'L',
+3205=>'L',
+3206=>'L',
+3207=>'L',
+3208=>'L',
+3209=>'L',
+3210=>'L',
+3211=>'L',
+3212=>'L',
+3214=>'L',
+3215=>'L',
+3216=>'L',
+3218=>'L',
+3219=>'L',
+3220=>'L',
+3221=>'L',
+3222=>'L',
+3223=>'L',
+3224=>'L',
+3225=>'L',
+3226=>'L',
+3227=>'L',
+3228=>'L',
+3229=>'L',
+3230=>'L',
+3231=>'L',
+3232=>'L',
+3233=>'L',
+3234=>'L',
+3235=>'L',
+3236=>'L',
+3237=>'L',
+3238=>'L',
+3239=>'L',
+3240=>'L',
+3242=>'L',
+3243=>'L',
+3244=>'L',
+3245=>'L',
+3246=>'L',
+3247=>'L',
+3248=>'L',
+3249=>'L',
+3250=>'L',
+3251=>'L',
+3253=>'L',
+3254=>'L',
+3255=>'L',
+3256=>'L',
+3257=>'L',
+3260=>'NSM',
+3261=>'L',
+3262=>'L',
+3263=>'L',
+3264=>'L',
+3265=>'L',
+3266=>'L',
+3267=>'L',
+3268=>'L',
+3270=>'L',
+3271=>'L',
+3272=>'L',
+3274=>'L',
+3275=>'L',
+3276=>'NSM',
+3277=>'NSM',
+3285=>'L',
+3286=>'L',
+3294=>'L',
+3296=>'L',
+3297=>'L',
+3298=>'NSM',
+3299=>'NSM',
+3302=>'L',
+3303=>'L',
+3304=>'L',
+3305=>'L',
+3306=>'L',
+3307=>'L',
+3308=>'L',
+3309=>'L',
+3310=>'L',
+3311=>'L',
+3313=>'ON',
+3314=>'ON',
+3330=>'L',
+3331=>'L',
+3333=>'L',
+3334=>'L',
+3335=>'L',
+3336=>'L',
+3337=>'L',
+3338=>'L',
+3339=>'L',
+3340=>'L',
+3342=>'L',
+3343=>'L',
+3344=>'L',
+3346=>'L',
+3347=>'L',
+3348=>'L',
+3349=>'L',
+3350=>'L',
+3351=>'L',
+3352=>'L',
+3353=>'L',
+3354=>'L',
+3355=>'L',
+3356=>'L',
+3357=>'L',
+3358=>'L',
+3359=>'L',
+3360=>'L',
+3361=>'L',
+3362=>'L',
+3363=>'L',
+3364=>'L',
+3365=>'L',
+3366=>'L',
+3367=>'L',
+3368=>'L',
+3370=>'L',
+3371=>'L',
+3372=>'L',
+3373=>'L',
+3374=>'L',
+3375=>'L',
+3376=>'L',
+3377=>'L',
+3378=>'L',
+3379=>'L',
+3380=>'L',
+3381=>'L',
+3382=>'L',
+3383=>'L',
+3384=>'L',
+3385=>'L',
+3390=>'L',
+3391=>'L',
+3392=>'L',
+3393=>'NSM',
+3394=>'NSM',
+3395=>'NSM',
+3398=>'L',
+3399=>'L',
+3400=>'L',
+3402=>'L',
+3403=>'L',
+3404=>'L',
+3405=>'NSM',
+3415=>'L',
+3424=>'L',
+3425=>'L',
+3430=>'L',
+3431=>'L',
+3432=>'L',
+3433=>'L',
+3434=>'L',
+3435=>'L',
+3436=>'L',
+3437=>'L',
+3438=>'L',
+3439=>'L',
+3458=>'L',
+3459=>'L',
+3461=>'L',
+3462=>'L',
+3463=>'L',
+3464=>'L',
+3465=>'L',
+3466=>'L',
+3467=>'L',
+3468=>'L',
+3469=>'L',
+3470=>'L',
+3471=>'L',
+3472=>'L',
+3473=>'L',
+3474=>'L',
+3475=>'L',
+3476=>'L',
+3477=>'L',
+3478=>'L',
+3482=>'L',
+3483=>'L',
+3484=>'L',
+3485=>'L',
+3486=>'L',
+3487=>'L',
+3488=>'L',
+3489=>'L',
+3490=>'L',
+3491=>'L',
+3492=>'L',
+3493=>'L',
+3494=>'L',
+3495=>'L',
+3496=>'L',
+3497=>'L',
+3498=>'L',
+3499=>'L',
+3500=>'L',
+3501=>'L',
+3502=>'L',
+3503=>'L',
+3504=>'L',
+3505=>'L',
+3507=>'L',
+3508=>'L',
+3509=>'L',
+3510=>'L',
+3511=>'L',
+3512=>'L',
+3513=>'L',
+3514=>'L',
+3515=>'L',
+3517=>'L',
+3520=>'L',
+3521=>'L',
+3522=>'L',
+3523=>'L',
+3524=>'L',
+3525=>'L',
+3526=>'L',
+3530=>'NSM',
+3535=>'L',
+3536=>'L',
+3537=>'L',
+3538=>'NSM',
+3539=>'NSM',
+3540=>'NSM',
+3542=>'NSM',
+3544=>'L',
+3545=>'L',
+3546=>'L',
+3547=>'L',
+3548=>'L',
+3549=>'L',
+3550=>'L',
+3551=>'L',
+3570=>'L',
+3571=>'L',
+3572=>'L',
+3585=>'L',
+3586=>'L',
+3587=>'L',
+3588=>'L',
+3589=>'L',
+3590=>'L',
+3591=>'L',
+3592=>'L',
+3593=>'L',
+3594=>'L',
+3595=>'L',
+3596=>'L',
+3597=>'L',
+3598=>'L',
+3599=>'L',
+3600=>'L',
+3601=>'L',
+3602=>'L',
+3603=>'L',
+3604=>'L',
+3605=>'L',
+3606=>'L',
+3607=>'L',
+3608=>'L',
+3609=>'L',
+3610=>'L',
+3611=>'L',
+3612=>'L',
+3613=>'L',
+3614=>'L',
+3615=>'L',
+3616=>'L',
+3617=>'L',
+3618=>'L',
+3619=>'L',
+3620=>'L',
+3621=>'L',
+3622=>'L',
+3623=>'L',
+3624=>'L',
+3625=>'L',
+3626=>'L',
+3627=>'L',
+3628=>'L',
+3629=>'L',
+3630=>'L',
+3631=>'L',
+3632=>'L',
+3633=>'NSM',
+3634=>'L',
+3635=>'L',
+3636=>'NSM',
+3637=>'NSM',
+3638=>'NSM',
+3639=>'NSM',
+3640=>'NSM',
+3641=>'NSM',
+3642=>'NSM',
+3647=>'ET',
+3648=>'L',
+3649=>'L',
+3650=>'L',
+3651=>'L',
+3652=>'L',
+3653=>'L',
+3654=>'L',
+3655=>'NSM',
+3656=>'NSM',
+3657=>'NSM',
+3658=>'NSM',
+3659=>'NSM',
+3660=>'NSM',
+3661=>'NSM',
+3662=>'NSM',
+3663=>'L',
+3664=>'L',
+3665=>'L',
+3666=>'L',
+3667=>'L',
+3668=>'L',
+3669=>'L',
+3670=>'L',
+3671=>'L',
+3672=>'L',
+3673=>'L',
+3674=>'L',
+3675=>'L',
+3713=>'L',
+3714=>'L',
+3716=>'L',
+3719=>'L',
+3720=>'L',
+3722=>'L',
+3725=>'L',
+3732=>'L',
+3733=>'L',
+3734=>'L',
+3735=>'L',
+3737=>'L',
+3738=>'L',
+3739=>'L',
+3740=>'L',
+3741=>'L',
+3742=>'L',
+3743=>'L',
+3745=>'L',
+3746=>'L',
+3747=>'L',
+3749=>'L',
+3751=>'L',
+3754=>'L',
+3755=>'L',
+3757=>'L',
+3758=>'L',
+3759=>'L',
+3760=>'L',
+3761=>'NSM',
+3762=>'L',
+3763=>'L',
+3764=>'NSM',
+3765=>'NSM',
+3766=>'NSM',
+3767=>'NSM',
+3768=>'NSM',
+3769=>'NSM',
+3771=>'NSM',
+3772=>'NSM',
+3773=>'L',
+3776=>'L',
+3777=>'L',
+3778=>'L',
+3779=>'L',
+3780=>'L',
+3782=>'L',
+3784=>'NSM',
+3785=>'NSM',
+3786=>'NSM',
+3787=>'NSM',
+3788=>'NSM',
+3789=>'NSM',
+3792=>'L',
+3793=>'L',
+3794=>'L',
+3795=>'L',
+3796=>'L',
+3797=>'L',
+3798=>'L',
+3799=>'L',
+3800=>'L',
+3801=>'L',
+3804=>'L',
+3805=>'L',
+3840=>'L',
+3841=>'L',
+3842=>'L',
+3843=>'L',
+3844=>'L',
+3845=>'L',
+3846=>'L',
+3847=>'L',
+3848=>'L',
+3849=>'L',
+3850=>'L',
+3851=>'L',
+3852=>'L',
+3853=>'L',
+3854=>'L',
+3855=>'L',
+3856=>'L',
+3857=>'L',
+3858=>'L',
+3859=>'L',
+3860=>'L',
+3861=>'L',
+3862=>'L',
+3863=>'L',
+3864=>'NSM',
+3865=>'NSM',
+3866=>'L',
+3867=>'L',
+3868=>'L',
+3869=>'L',
+3870=>'L',
+3871=>'L',
+3872=>'L',
+3873=>'L',
+3874=>'L',
+3875=>'L',
+3876=>'L',
+3877=>'L',
+3878=>'L',
+3879=>'L',
+3880=>'L',
+3881=>'L',
+3882=>'L',
+3883=>'L',
+3884=>'L',
+3885=>'L',
+3886=>'L',
+3887=>'L',
+3888=>'L',
+3889=>'L',
+3890=>'L',
+3891=>'L',
+3892=>'L',
+3893=>'NSM',
+3894=>'L',
+3895=>'NSM',
+3896=>'L',
+3897=>'NSM',
+3898=>'ON',
+3899=>'ON',
+3900=>'ON',
+3901=>'ON',
+3902=>'L',
+3903=>'L',
+3904=>'L',
+3905=>'L',
+3906=>'L',
+3907=>'L',
+3908=>'L',
+3909=>'L',
+3910=>'L',
+3911=>'L',
+3913=>'L',
+3914=>'L',
+3915=>'L',
+3916=>'L',
+3917=>'L',
+3918=>'L',
+3919=>'L',
+3920=>'L',
+3921=>'L',
+3922=>'L',
+3923=>'L',
+3924=>'L',
+3925=>'L',
+3926=>'L',
+3927=>'L',
+3928=>'L',
+3929=>'L',
+3930=>'L',
+3931=>'L',
+3932=>'L',
+3933=>'L',
+3934=>'L',
+3935=>'L',
+3936=>'L',
+3937=>'L',
+3938=>'L',
+3939=>'L',
+3940=>'L',
+3941=>'L',
+3942=>'L',
+3943=>'L',
+3944=>'L',
+3945=>'L',
+3946=>'L',
+3953=>'NSM',
+3954=>'NSM',
+3955=>'NSM',
+3956=>'NSM',
+3957=>'NSM',
+3958=>'NSM',
+3959=>'NSM',
+3960=>'NSM',
+3961=>'NSM',
+3962=>'NSM',
+3963=>'NSM',
+3964=>'NSM',
+3965=>'NSM',
+3966=>'NSM',
+3967=>'L',
+3968=>'NSM',
+3969=>'NSM',
+3970=>'NSM',
+3971=>'NSM',
+3972=>'NSM',
+3973=>'L',
+3974=>'NSM',
+3975=>'NSM',
+3976=>'L',
+3977=>'L',
+3978=>'L',
+3979=>'L',
+3984=>'NSM',
+3985=>'NSM',
+3986=>'NSM',
+3987=>'NSM',
+3988=>'NSM',
+3989=>'NSM',
+3990=>'NSM',
+3991=>'NSM',
+3993=>'NSM',
+3994=>'NSM',
+3995=>'NSM',
+3996=>'NSM',
+3997=>'NSM',
+3998=>'NSM',
+3999=>'NSM',
+4000=>'NSM',
+4001=>'NSM',
+4002=>'NSM',
+4003=>'NSM',
+4004=>'NSM',
+4005=>'NSM',
+4006=>'NSM',
+4007=>'NSM',
+4008=>'NSM',
+4009=>'NSM',
+4010=>'NSM',
+4011=>'NSM',
+4012=>'NSM',
+4013=>'NSM',
+4014=>'NSM',
+4015=>'NSM',
+4016=>'NSM',
+4017=>'NSM',
+4018=>'NSM',
+4019=>'NSM',
+4020=>'NSM',
+4021=>'NSM',
+4022=>'NSM',
+4023=>'NSM',
+4024=>'NSM',
+4025=>'NSM',
+4026=>'NSM',
+4027=>'NSM',
+4028=>'NSM',
+4030=>'L',
+4031=>'L',
+4032=>'L',
+4033=>'L',
+4034=>'L',
+4035=>'L',
+4036=>'L',
+4037=>'L',
+4038=>'NSM',
+4039=>'L',
+4040=>'L',
+4041=>'L',
+4042=>'L',
+4043=>'L',
+4044=>'L',
+4047=>'L',
+4048=>'L',
+4049=>'L',
+4096=>'L',
+4097=>'L',
+4098=>'L',
+4099=>'L',
+4100=>'L',
+4101=>'L',
+4102=>'L',
+4103=>'L',
+4104=>'L',
+4105=>'L',
+4106=>'L',
+4107=>'L',
+4108=>'L',
+4109=>'L',
+4110=>'L',
+4111=>'L',
+4112=>'L',
+4113=>'L',
+4114=>'L',
+4115=>'L',
+4116=>'L',
+4117=>'L',
+4118=>'L',
+4119=>'L',
+4120=>'L',
+4121=>'L',
+4122=>'L',
+4123=>'L',
+4124=>'L',
+4125=>'L',
+4126=>'L',
+4127=>'L',
+4128=>'L',
+4129=>'L',
+4131=>'L',
+4132=>'L',
+4133=>'L',
+4134=>'L',
+4135=>'L',
+4137=>'L',
+4138=>'L',
+4140=>'L',
+4141=>'NSM',
+4142=>'NSM',
+4143=>'NSM',
+4144=>'NSM',
+4145=>'L',
+4146=>'NSM',
+4150=>'NSM',
+4151=>'NSM',
+4152=>'L',
+4153=>'NSM',
+4160=>'L',
+4161=>'L',
+4162=>'L',
+4163=>'L',
+4164=>'L',
+4165=>'L',
+4166=>'L',
+4167=>'L',
+4168=>'L',
+4169=>'L',
+4170=>'L',
+4171=>'L',
+4172=>'L',
+4173=>'L',
+4174=>'L',
+4175=>'L',
+4176=>'L',
+4177=>'L',
+4178=>'L',
+4179=>'L',
+4180=>'L',
+4181=>'L',
+4182=>'L',
+4183=>'L',
+4184=>'NSM',
+4185=>'NSM',
+4256=>'L',
+4257=>'L',
+4258=>'L',
+4259=>'L',
+4260=>'L',
+4261=>'L',
+4262=>'L',
+4263=>'L',
+4264=>'L',
+4265=>'L',
+4266=>'L',
+4267=>'L',
+4268=>'L',
+4269=>'L',
+4270=>'L',
+4271=>'L',
+4272=>'L',
+4273=>'L',
+4274=>'L',
+4275=>'L',
+4276=>'L',
+4277=>'L',
+4278=>'L',
+4279=>'L',
+4280=>'L',
+4281=>'L',
+4282=>'L',
+4283=>'L',
+4284=>'L',
+4285=>'L',
+4286=>'L',
+4287=>'L',
+4288=>'L',
+4289=>'L',
+4290=>'L',
+4291=>'L',
+4292=>'L',
+4293=>'L',
+4304=>'L',
+4305=>'L',
+4306=>'L',
+4307=>'L',
+4308=>'L',
+4309=>'L',
+4310=>'L',
+4311=>'L',
+4312=>'L',
+4313=>'L',
+4314=>'L',
+4315=>'L',
+4316=>'L',
+4317=>'L',
+4318=>'L',
+4319=>'L',
+4320=>'L',
+4321=>'L',
+4322=>'L',
+4323=>'L',
+4324=>'L',
+4325=>'L',
+4326=>'L',
+4327=>'L',
+4328=>'L',
+4329=>'L',
+4330=>'L',
+4331=>'L',
+4332=>'L',
+4333=>'L',
+4334=>'L',
+4335=>'L',
+4336=>'L',
+4337=>'L',
+4338=>'L',
+4339=>'L',
+4340=>'L',
+4341=>'L',
+4342=>'L',
+4343=>'L',
+4344=>'L',
+4345=>'L',
+4346=>'L',
+4347=>'L',
+4348=>'L',
+4352=>'L',
+4353=>'L',
+4354=>'L',
+4355=>'L',
+4356=>'L',
+4357=>'L',
+4358=>'L',
+4359=>'L',
+4360=>'L',
+4361=>'L',
+4362=>'L',
+4363=>'L',
+4364=>'L',
+4365=>'L',
+4366=>'L',
+4367=>'L',
+4368=>'L',
+4369=>'L',
+4370=>'L',
+4371=>'L',
+4372=>'L',
+4373=>'L',
+4374=>'L',
+4375=>'L',
+4376=>'L',
+4377=>'L',
+4378=>'L',
+4379=>'L',
+4380=>'L',
+4381=>'L',
+4382=>'L',
+4383=>'L',
+4384=>'L',
+4385=>'L',
+4386=>'L',
+4387=>'L',
+4388=>'L',
+4389=>'L',
+4390=>'L',
+4391=>'L',
+4392=>'L',
+4393=>'L',
+4394=>'L',
+4395=>'L',
+4396=>'L',
+4397=>'L',
+4398=>'L',
+4399=>'L',
+4400=>'L',
+4401=>'L',
+4402=>'L',
+4403=>'L',
+4404=>'L',
+4405=>'L',
+4406=>'L',
+4407=>'L',
+4408=>'L',
+4409=>'L',
+4410=>'L',
+4411=>'L',
+4412=>'L',
+4413=>'L',
+4414=>'L',
+4415=>'L',
+4416=>'L',
+4417=>'L',
+4418=>'L',
+4419=>'L',
+4420=>'L',
+4421=>'L',
+4422=>'L',
+4423=>'L',
+4424=>'L',
+4425=>'L',
+4426=>'L',
+4427=>'L',
+4428=>'L',
+4429=>'L',
+4430=>'L',
+4431=>'L',
+4432=>'L',
+4433=>'L',
+4434=>'L',
+4435=>'L',
+4436=>'L',
+4437=>'L',
+4438=>'L',
+4439=>'L',
+4440=>'L',
+4441=>'L',
+4447=>'L',
+4448=>'L',
+4449=>'L',
+4450=>'L',
+4451=>'L',
+4452=>'L',
+4453=>'L',
+4454=>'L',
+4455=>'L',
+4456=>'L',
+4457=>'L',
+4458=>'L',
+4459=>'L',
+4460=>'L',
+4461=>'L',
+4462=>'L',
+4463=>'L',
+4464=>'L',
+4465=>'L',
+4466=>'L',
+4467=>'L',
+4468=>'L',
+4469=>'L',
+4470=>'L',
+4471=>'L',
+4472=>'L',
+4473=>'L',
+4474=>'L',
+4475=>'L',
+4476=>'L',
+4477=>'L',
+4478=>'L',
+4479=>'L',
+4480=>'L',
+4481=>'L',
+4482=>'L',
+4483=>'L',
+4484=>'L',
+4485=>'L',
+4486=>'L',
+4487=>'L',
+4488=>'L',
+4489=>'L',
+4490=>'L',
+4491=>'L',
+4492=>'L',
+4493=>'L',
+4494=>'L',
+4495=>'L',
+4496=>'L',
+4497=>'L',
+4498=>'L',
+4499=>'L',
+4500=>'L',
+4501=>'L',
+4502=>'L',
+4503=>'L',
+4504=>'L',
+4505=>'L',
+4506=>'L',
+4507=>'L',
+4508=>'L',
+4509=>'L',
+4510=>'L',
+4511=>'L',
+4512=>'L',
+4513=>'L',
+4514=>'L',
+4520=>'L',
+4521=>'L',
+4522=>'L',
+4523=>'L',
+4524=>'L',
+4525=>'L',
+4526=>'L',
+4527=>'L',
+4528=>'L',
+4529=>'L',
+4530=>'L',
+4531=>'L',
+4532=>'L',
+4533=>'L',
+4534=>'L',
+4535=>'L',
+4536=>'L',
+4537=>'L',
+4538=>'L',
+4539=>'L',
+4540=>'L',
+4541=>'L',
+4542=>'L',
+4543=>'L',
+4544=>'L',
+4545=>'L',
+4546=>'L',
+4547=>'L',
+4548=>'L',
+4549=>'L',
+4550=>'L',
+4551=>'L',
+4552=>'L',
+4553=>'L',
+4554=>'L',
+4555=>'L',
+4556=>'L',
+4557=>'L',
+4558=>'L',
+4559=>'L',
+4560=>'L',
+4561=>'L',
+4562=>'L',
+4563=>'L',
+4564=>'L',
+4565=>'L',
+4566=>'L',
+4567=>'L',
+4568=>'L',
+4569=>'L',
+4570=>'L',
+4571=>'L',
+4572=>'L',
+4573=>'L',
+4574=>'L',
+4575=>'L',
+4576=>'L',
+4577=>'L',
+4578=>'L',
+4579=>'L',
+4580=>'L',
+4581=>'L',
+4582=>'L',
+4583=>'L',
+4584=>'L',
+4585=>'L',
+4586=>'L',
+4587=>'L',
+4588=>'L',
+4589=>'L',
+4590=>'L',
+4591=>'L',
+4592=>'L',
+4593=>'L',
+4594=>'L',
+4595=>'L',
+4596=>'L',
+4597=>'L',
+4598=>'L',
+4599=>'L',
+4600=>'L',
+4601=>'L',
+4608=>'L',
+4609=>'L',
+4610=>'L',
+4611=>'L',
+4612=>'L',
+4613=>'L',
+4614=>'L',
+4615=>'L',
+4616=>'L',
+4617=>'L',
+4618=>'L',
+4619=>'L',
+4620=>'L',
+4621=>'L',
+4622=>'L',
+4623=>'L',
+4624=>'L',
+4625=>'L',
+4626=>'L',
+4627=>'L',
+4628=>'L',
+4629=>'L',
+4630=>'L',
+4631=>'L',
+4632=>'L',
+4633=>'L',
+4634=>'L',
+4635=>'L',
+4636=>'L',
+4637=>'L',
+4638=>'L',
+4639=>'L',
+4640=>'L',
+4641=>'L',
+4642=>'L',
+4643=>'L',
+4644=>'L',
+4645=>'L',
+4646=>'L',
+4647=>'L',
+4648=>'L',
+4649=>'L',
+4650=>'L',
+4651=>'L',
+4652=>'L',
+4653=>'L',
+4654=>'L',
+4655=>'L',
+4656=>'L',
+4657=>'L',
+4658=>'L',
+4659=>'L',
+4660=>'L',
+4661=>'L',
+4662=>'L',
+4663=>'L',
+4664=>'L',
+4665=>'L',
+4666=>'L',
+4667=>'L',
+4668=>'L',
+4669=>'L',
+4670=>'L',
+4671=>'L',
+4672=>'L',
+4673=>'L',
+4674=>'L',
+4675=>'L',
+4676=>'L',
+4677=>'L',
+4678=>'L',
+4679=>'L',
+4680=>'L',
+4682=>'L',
+4683=>'L',
+4684=>'L',
+4685=>'L',
+4688=>'L',
+4689=>'L',
+4690=>'L',
+4691=>'L',
+4692=>'L',
+4693=>'L',
+4694=>'L',
+4696=>'L',
+4698=>'L',
+4699=>'L',
+4700=>'L',
+4701=>'L',
+4704=>'L',
+4705=>'L',
+4706=>'L',
+4707=>'L',
+4708=>'L',
+4709=>'L',
+4710=>'L',
+4711=>'L',
+4712=>'L',
+4713=>'L',
+4714=>'L',
+4715=>'L',
+4716=>'L',
+4717=>'L',
+4718=>'L',
+4719=>'L',
+4720=>'L',
+4721=>'L',
+4722=>'L',
+4723=>'L',
+4724=>'L',
+4725=>'L',
+4726=>'L',
+4727=>'L',
+4728=>'L',
+4729=>'L',
+4730=>'L',
+4731=>'L',
+4732=>'L',
+4733=>'L',
+4734=>'L',
+4735=>'L',
+4736=>'L',
+4737=>'L',
+4738=>'L',
+4739=>'L',
+4740=>'L',
+4741=>'L',
+4742=>'L',
+4743=>'L',
+4744=>'L',
+4746=>'L',
+4747=>'L',
+4748=>'L',
+4749=>'L',
+4752=>'L',
+4753=>'L',
+4754=>'L',
+4755=>'L',
+4756=>'L',
+4757=>'L',
+4758=>'L',
+4759=>'L',
+4760=>'L',
+4761=>'L',
+4762=>'L',
+4763=>'L',
+4764=>'L',
+4765=>'L',
+4766=>'L',
+4767=>'L',
+4768=>'L',
+4769=>'L',
+4770=>'L',
+4771=>'L',
+4772=>'L',
+4773=>'L',
+4774=>'L',
+4775=>'L',
+4776=>'L',
+4777=>'L',
+4778=>'L',
+4779=>'L',
+4780=>'L',
+4781=>'L',
+4782=>'L',
+4783=>'L',
+4784=>'L',
+4786=>'L',
+4787=>'L',
+4788=>'L',
+4789=>'L',
+4792=>'L',
+4793=>'L',
+4794=>'L',
+4795=>'L',
+4796=>'L',
+4797=>'L',
+4798=>'L',
+4800=>'L',
+4802=>'L',
+4803=>'L',
+4804=>'L',
+4805=>'L',
+4808=>'L',
+4809=>'L',
+4810=>'L',
+4811=>'L',
+4812=>'L',
+4813=>'L',
+4814=>'L',
+4815=>'L',
+4816=>'L',
+4817=>'L',
+4818=>'L',
+4819=>'L',
+4820=>'L',
+4821=>'L',
+4822=>'L',
+4824=>'L',
+4825=>'L',
+4826=>'L',
+4827=>'L',
+4828=>'L',
+4829=>'L',
+4830=>'L',
+4831=>'L',
+4832=>'L',
+4833=>'L',
+4834=>'L',
+4835=>'L',
+4836=>'L',
+4837=>'L',
+4838=>'L',
+4839=>'L',
+4840=>'L',
+4841=>'L',
+4842=>'L',
+4843=>'L',
+4844=>'L',
+4845=>'L',
+4846=>'L',
+4847=>'L',
+4848=>'L',
+4849=>'L',
+4850=>'L',
+4851=>'L',
+4852=>'L',
+4853=>'L',
+4854=>'L',
+4855=>'L',
+4856=>'L',
+4857=>'L',
+4858=>'L',
+4859=>'L',
+4860=>'L',
+4861=>'L',
+4862=>'L',
+4863=>'L',
+4864=>'L',
+4865=>'L',
+4866=>'L',
+4867=>'L',
+4868=>'L',
+4869=>'L',
+4870=>'L',
+4871=>'L',
+4872=>'L',
+4873=>'L',
+4874=>'L',
+4875=>'L',
+4876=>'L',
+4877=>'L',
+4878=>'L',
+4879=>'L',
+4880=>'L',
+4882=>'L',
+4883=>'L',
+4884=>'L',
+4885=>'L',
+4888=>'L',
+4889=>'L',
+4890=>'L',
+4891=>'L',
+4892=>'L',
+4893=>'L',
+4894=>'L',
+4895=>'L',
+4896=>'L',
+4897=>'L',
+4898=>'L',
+4899=>'L',
+4900=>'L',
+4901=>'L',
+4902=>'L',
+4903=>'L',
+4904=>'L',
+4905=>'L',
+4906=>'L',
+4907=>'L',
+4908=>'L',
+4909=>'L',
+4910=>'L',
+4911=>'L',
+4912=>'L',
+4913=>'L',
+4914=>'L',
+4915=>'L',
+4916=>'L',
+4917=>'L',
+4918=>'L',
+4919=>'L',
+4920=>'L',
+4921=>'L',
+4922=>'L',
+4923=>'L',
+4924=>'L',
+4925=>'L',
+4926=>'L',
+4927=>'L',
+4928=>'L',
+4929=>'L',
+4930=>'L',
+4931=>'L',
+4932=>'L',
+4933=>'L',
+4934=>'L',
+4935=>'L',
+4936=>'L',
+4937=>'L',
+4938=>'L',
+4939=>'L',
+4940=>'L',
+4941=>'L',
+4942=>'L',
+4943=>'L',
+4944=>'L',
+4945=>'L',
+4946=>'L',
+4947=>'L',
+4948=>'L',
+4949=>'L',
+4950=>'L',
+4951=>'L',
+4952=>'L',
+4953=>'L',
+4954=>'L',
+4959=>'NSM',
+4960=>'L',
+4961=>'L',
+4962=>'L',
+4963=>'L',
+4964=>'L',
+4965=>'L',
+4966=>'L',
+4967=>'L',
+4968=>'L',
+4969=>'L',
+4970=>'L',
+4971=>'L',
+4972=>'L',
+4973=>'L',
+4974=>'L',
+4975=>'L',
+4976=>'L',
+4977=>'L',
+4978=>'L',
+4979=>'L',
+4980=>'L',
+4981=>'L',
+4982=>'L',
+4983=>'L',
+4984=>'L',
+4985=>'L',
+4986=>'L',
+4987=>'L',
+4988=>'L',
+4992=>'L',
+4993=>'L',
+4994=>'L',
+4995=>'L',
+4996=>'L',
+4997=>'L',
+4998=>'L',
+4999=>'L',
+5000=>'L',
+5001=>'L',
+5002=>'L',
+5003=>'L',
+5004=>'L',
+5005=>'L',
+5006=>'L',
+5007=>'L',
+5008=>'ON',
+5009=>'ON',
+5010=>'ON',
+5011=>'ON',
+5012=>'ON',
+5013=>'ON',
+5014=>'ON',
+5015=>'ON',
+5016=>'ON',
+5017=>'ON',
+5024=>'L',
+5025=>'L',
+5026=>'L',
+5027=>'L',
+5028=>'L',
+5029=>'L',
+5030=>'L',
+5031=>'L',
+5032=>'L',
+5033=>'L',
+5034=>'L',
+5035=>'L',
+5036=>'L',
+5037=>'L',
+5038=>'L',
+5039=>'L',
+5040=>'L',
+5041=>'L',
+5042=>'L',
+5043=>'L',
+5044=>'L',
+5045=>'L',
+5046=>'L',
+5047=>'L',
+5048=>'L',
+5049=>'L',
+5050=>'L',
+5051=>'L',
+5052=>'L',
+5053=>'L',
+5054=>'L',
+5055=>'L',
+5056=>'L',
+5057=>'L',
+5058=>'L',
+5059=>'L',
+5060=>'L',
+5061=>'L',
+5062=>'L',
+5063=>'L',
+5064=>'L',
+5065=>'L',
+5066=>'L',
+5067=>'L',
+5068=>'L',
+5069=>'L',
+5070=>'L',
+5071=>'L',
+5072=>'L',
+5073=>'L',
+5074=>'L',
+5075=>'L',
+5076=>'L',
+5077=>'L',
+5078=>'L',
+5079=>'L',
+5080=>'L',
+5081=>'L',
+5082=>'L',
+5083=>'L',
+5084=>'L',
+5085=>'L',
+5086=>'L',
+5087=>'L',
+5088=>'L',
+5089=>'L',
+5090=>'L',
+5091=>'L',
+5092=>'L',
+5093=>'L',
+5094=>'L',
+5095=>'L',
+5096=>'L',
+5097=>'L',
+5098=>'L',
+5099=>'L',
+5100=>'L',
+5101=>'L',
+5102=>'L',
+5103=>'L',
+5104=>'L',
+5105=>'L',
+5106=>'L',
+5107=>'L',
+5108=>'L',
+5121=>'L',
+5122=>'L',
+5123=>'L',
+5124=>'L',
+5125=>'L',
+5126=>'L',
+5127=>'L',
+5128=>'L',
+5129=>'L',
+5130=>'L',
+5131=>'L',
+5132=>'L',
+5133=>'L',
+5134=>'L',
+5135=>'L',
+5136=>'L',
+5137=>'L',
+5138=>'L',
+5139=>'L',
+5140=>'L',
+5141=>'L',
+5142=>'L',
+5143=>'L',
+5144=>'L',
+5145=>'L',
+5146=>'L',
+5147=>'L',
+5148=>'L',
+5149=>'L',
+5150=>'L',
+5151=>'L',
+5152=>'L',
+5153=>'L',
+5154=>'L',
+5155=>'L',
+5156=>'L',
+5157=>'L',
+5158=>'L',
+5159=>'L',
+5160=>'L',
+5161=>'L',
+5162=>'L',
+5163=>'L',
+5164=>'L',
+5165=>'L',
+5166=>'L',
+5167=>'L',
+5168=>'L',
+5169=>'L',
+5170=>'L',
+5171=>'L',
+5172=>'L',
+5173=>'L',
+5174=>'L',
+5175=>'L',
+5176=>'L',
+5177=>'L',
+5178=>'L',
+5179=>'L',
+5180=>'L',
+5181=>'L',
+5182=>'L',
+5183=>'L',
+5184=>'L',
+5185=>'L',
+5186=>'L',
+5187=>'L',
+5188=>'L',
+5189=>'L',
+5190=>'L',
+5191=>'L',
+5192=>'L',
+5193=>'L',
+5194=>'L',
+5195=>'L',
+5196=>'L',
+5197=>'L',
+5198=>'L',
+5199=>'L',
+5200=>'L',
+5201=>'L',
+5202=>'L',
+5203=>'L',
+5204=>'L',
+5205=>'L',
+5206=>'L',
+5207=>'L',
+5208=>'L',
+5209=>'L',
+5210=>'L',
+5211=>'L',
+5212=>'L',
+5213=>'L',
+5214=>'L',
+5215=>'L',
+5216=>'L',
+5217=>'L',
+5218=>'L',
+5219=>'L',
+5220=>'L',
+5221=>'L',
+5222=>'L',
+5223=>'L',
+5224=>'L',
+5225=>'L',
+5226=>'L',
+5227=>'L',
+5228=>'L',
+5229=>'L',
+5230=>'L',
+5231=>'L',
+5232=>'L',
+5233=>'L',
+5234=>'L',
+5235=>'L',
+5236=>'L',
+5237=>'L',
+5238=>'L',
+5239=>'L',
+5240=>'L',
+5241=>'L',
+5242=>'L',
+5243=>'L',
+5244=>'L',
+5245=>'L',
+5246=>'L',
+5247=>'L',
+5248=>'L',
+5249=>'L',
+5250=>'L',
+5251=>'L',
+5252=>'L',
+5253=>'L',
+5254=>'L',
+5255=>'L',
+5256=>'L',
+5257=>'L',
+5258=>'L',
+5259=>'L',
+5260=>'L',
+5261=>'L',
+5262=>'L',
+5263=>'L',
+5264=>'L',
+5265=>'L',
+5266=>'L',
+5267=>'L',
+5268=>'L',
+5269=>'L',
+5270=>'L',
+5271=>'L',
+5272=>'L',
+5273=>'L',
+5274=>'L',
+5275=>'L',
+5276=>'L',
+5277=>'L',
+5278=>'L',
+5279=>'L',
+5280=>'L',
+5281=>'L',
+5282=>'L',
+5283=>'L',
+5284=>'L',
+5285=>'L',
+5286=>'L',
+5287=>'L',
+5288=>'L',
+5289=>'L',
+5290=>'L',
+5291=>'L',
+5292=>'L',
+5293=>'L',
+5294=>'L',
+5295=>'L',
+5296=>'L',
+5297=>'L',
+5298=>'L',
+5299=>'L',
+5300=>'L',
+5301=>'L',
+5302=>'L',
+5303=>'L',
+5304=>'L',
+5305=>'L',
+5306=>'L',
+5307=>'L',
+5308=>'L',
+5309=>'L',
+5310=>'L',
+5311=>'L',
+5312=>'L',
+5313=>'L',
+5314=>'L',
+5315=>'L',
+5316=>'L',
+5317=>'L',
+5318=>'L',
+5319=>'L',
+5320=>'L',
+5321=>'L',
+5322=>'L',
+5323=>'L',
+5324=>'L',
+5325=>'L',
+5326=>'L',
+5327=>'L',
+5328=>'L',
+5329=>'L',
+5330=>'L',
+5331=>'L',
+5332=>'L',
+5333=>'L',
+5334=>'L',
+5335=>'L',
+5336=>'L',
+5337=>'L',
+5338=>'L',
+5339=>'L',
+5340=>'L',
+5341=>'L',
+5342=>'L',
+5343=>'L',
+5344=>'L',
+5345=>'L',
+5346=>'L',
+5347=>'L',
+5348=>'L',
+5349=>'L',
+5350=>'L',
+5351=>'L',
+5352=>'L',
+5353=>'L',
+5354=>'L',
+5355=>'L',
+5356=>'L',
+5357=>'L',
+5358=>'L',
+5359=>'L',
+5360=>'L',
+5361=>'L',
+5362=>'L',
+5363=>'L',
+5364=>'L',
+5365=>'L',
+5366=>'L',
+5367=>'L',
+5368=>'L',
+5369=>'L',
+5370=>'L',
+5371=>'L',
+5372=>'L',
+5373=>'L',
+5374=>'L',
+5375=>'L',
+5376=>'L',
+5377=>'L',
+5378=>'L',
+5379=>'L',
+5380=>'L',
+5381=>'L',
+5382=>'L',
+5383=>'L',
+5384=>'L',
+5385=>'L',
+5386=>'L',
+5387=>'L',
+5388=>'L',
+5389=>'L',
+5390=>'L',
+5391=>'L',
+5392=>'L',
+5393=>'L',
+5394=>'L',
+5395=>'L',
+5396=>'L',
+5397=>'L',
+5398=>'L',
+5399=>'L',
+5400=>'L',
+5401=>'L',
+5402=>'L',
+5403=>'L',
+5404=>'L',
+5405=>'L',
+5406=>'L',
+5407=>'L',
+5408=>'L',
+5409=>'L',
+5410=>'L',
+5411=>'L',
+5412=>'L',
+5413=>'L',
+5414=>'L',
+5415=>'L',
+5416=>'L',
+5417=>'L',
+5418=>'L',
+5419=>'L',
+5420=>'L',
+5421=>'L',
+5422=>'L',
+5423=>'L',
+5424=>'L',
+5425=>'L',
+5426=>'L',
+5427=>'L',
+5428=>'L',
+5429=>'L',
+5430=>'L',
+5431=>'L',
+5432=>'L',
+5433=>'L',
+5434=>'L',
+5435=>'L',
+5436=>'L',
+5437=>'L',
+5438=>'L',
+5439=>'L',
+5440=>'L',
+5441=>'L',
+5442=>'L',
+5443=>'L',
+5444=>'L',
+5445=>'L',
+5446=>'L',
+5447=>'L',
+5448=>'L',
+5449=>'L',
+5450=>'L',
+5451=>'L',
+5452=>'L',
+5453=>'L',
+5454=>'L',
+5455=>'L',
+5456=>'L',
+5457=>'L',
+5458=>'L',
+5459=>'L',
+5460=>'L',
+5461=>'L',
+5462=>'L',
+5463=>'L',
+5464=>'L',
+5465=>'L',
+5466=>'L',
+5467=>'L',
+5468=>'L',
+5469=>'L',
+5470=>'L',
+5471=>'L',
+5472=>'L',
+5473=>'L',
+5474=>'L',
+5475=>'L',
+5476=>'L',
+5477=>'L',
+5478=>'L',
+5479=>'L',
+5480=>'L',
+5481=>'L',
+5482=>'L',
+5483=>'L',
+5484=>'L',
+5485=>'L',
+5486=>'L',
+5487=>'L',
+5488=>'L',
+5489=>'L',
+5490=>'L',
+5491=>'L',
+5492=>'L',
+5493=>'L',
+5494=>'L',
+5495=>'L',
+5496=>'L',
+5497=>'L',
+5498=>'L',
+5499=>'L',
+5500=>'L',
+5501=>'L',
+5502=>'L',
+5503=>'L',
+5504=>'L',
+5505=>'L',
+5506=>'L',
+5507=>'L',
+5508=>'L',
+5509=>'L',
+5510=>'L',
+5511=>'L',
+5512=>'L',
+5513=>'L',
+5514=>'L',
+5515=>'L',
+5516=>'L',
+5517=>'L',
+5518=>'L',
+5519=>'L',
+5520=>'L',
+5521=>'L',
+5522=>'L',
+5523=>'L',
+5524=>'L',
+5525=>'L',
+5526=>'L',
+5527=>'L',
+5528=>'L',
+5529=>'L',
+5530=>'L',
+5531=>'L',
+5532=>'L',
+5533=>'L',
+5534=>'L',
+5535=>'L',
+5536=>'L',
+5537=>'L',
+5538=>'L',
+5539=>'L',
+5540=>'L',
+5541=>'L',
+5542=>'L',
+5543=>'L',
+5544=>'L',
+5545=>'L',
+5546=>'L',
+5547=>'L',
+5548=>'L',
+5549=>'L',
+5550=>'L',
+5551=>'L',
+5552=>'L',
+5553=>'L',
+5554=>'L',
+5555=>'L',
+5556=>'L',
+5557=>'L',
+5558=>'L',
+5559=>'L',
+5560=>'L',
+5561=>'L',
+5562=>'L',
+5563=>'L',
+5564=>'L',
+5565=>'L',
+5566=>'L',
+5567=>'L',
+5568=>'L',
+5569=>'L',
+5570=>'L',
+5571=>'L',
+5572=>'L',
+5573=>'L',
+5574=>'L',
+5575=>'L',
+5576=>'L',
+5577=>'L',
+5578=>'L',
+5579=>'L',
+5580=>'L',
+5581=>'L',
+5582=>'L',
+5583=>'L',
+5584=>'L',
+5585=>'L',
+5586=>'L',
+5587=>'L',
+5588=>'L',
+5589=>'L',
+5590=>'L',
+5591=>'L',
+5592=>'L',
+5593=>'L',
+5594=>'L',
+5595=>'L',
+5596=>'L',
+5597=>'L',
+5598=>'L',
+5599=>'L',
+5600=>'L',
+5601=>'L',
+5602=>'L',
+5603=>'L',
+5604=>'L',
+5605=>'L',
+5606=>'L',
+5607=>'L',
+5608=>'L',
+5609=>'L',
+5610=>'L',
+5611=>'L',
+5612=>'L',
+5613=>'L',
+5614=>'L',
+5615=>'L',
+5616=>'L',
+5617=>'L',
+5618=>'L',
+5619=>'L',
+5620=>'L',
+5621=>'L',
+5622=>'L',
+5623=>'L',
+5624=>'L',
+5625=>'L',
+5626=>'L',
+5627=>'L',
+5628=>'L',
+5629=>'L',
+5630=>'L',
+5631=>'L',
+5632=>'L',
+5633=>'L',
+5634=>'L',
+5635=>'L',
+5636=>'L',
+5637=>'L',
+5638=>'L',
+5639=>'L',
+5640=>'L',
+5641=>'L',
+5642=>'L',
+5643=>'L',
+5644=>'L',
+5645=>'L',
+5646=>'L',
+5647=>'L',
+5648=>'L',
+5649=>'L',
+5650=>'L',
+5651=>'L',
+5652=>'L',
+5653=>'L',
+5654=>'L',
+5655=>'L',
+5656=>'L',
+5657=>'L',
+5658=>'L',
+5659=>'L',
+5660=>'L',
+5661=>'L',
+5662=>'L',
+5663=>'L',
+5664=>'L',
+5665=>'L',
+5666=>'L',
+5667=>'L',
+5668=>'L',
+5669=>'L',
+5670=>'L',
+5671=>'L',
+5672=>'L',
+5673=>'L',
+5674=>'L',
+5675=>'L',
+5676=>'L',
+5677=>'L',
+5678=>'L',
+5679=>'L',
+5680=>'L',
+5681=>'L',
+5682=>'L',
+5683=>'L',
+5684=>'L',
+5685=>'L',
+5686=>'L',
+5687=>'L',
+5688=>'L',
+5689=>'L',
+5690=>'L',
+5691=>'L',
+5692=>'L',
+5693=>'L',
+5694=>'L',
+5695=>'L',
+5696=>'L',
+5697=>'L',
+5698=>'L',
+5699=>'L',
+5700=>'L',
+5701=>'L',
+5702=>'L',
+5703=>'L',
+5704=>'L',
+5705=>'L',
+5706=>'L',
+5707=>'L',
+5708=>'L',
+5709=>'L',
+5710=>'L',
+5711=>'L',
+5712=>'L',
+5713=>'L',
+5714=>'L',
+5715=>'L',
+5716=>'L',
+5717=>'L',
+5718=>'L',
+5719=>'L',
+5720=>'L',
+5721=>'L',
+5722=>'L',
+5723=>'L',
+5724=>'L',
+5725=>'L',
+5726=>'L',
+5727=>'L',
+5728=>'L',
+5729=>'L',
+5730=>'L',
+5731=>'L',
+5732=>'L',
+5733=>'L',
+5734=>'L',
+5735=>'L',
+5736=>'L',
+5737=>'L',
+5738=>'L',
+5739=>'L',
+5740=>'L',
+5741=>'L',
+5742=>'L',
+5743=>'L',
+5744=>'L',
+5745=>'L',
+5746=>'L',
+5747=>'L',
+5748=>'L',
+5749=>'L',
+5750=>'L',
+5760=>'WS',
+5761=>'L',
+5762=>'L',
+5763=>'L',
+5764=>'L',
+5765=>'L',
+5766=>'L',
+5767=>'L',
+5768=>'L',
+5769=>'L',
+5770=>'L',
+5771=>'L',
+5772=>'L',
+5773=>'L',
+5774=>'L',
+5775=>'L',
+5776=>'L',
+5777=>'L',
+5778=>'L',
+5779=>'L',
+5780=>'L',
+5781=>'L',
+5782=>'L',
+5783=>'L',
+5784=>'L',
+5785=>'L',
+5786=>'L',
+5787=>'ON',
+5788=>'ON',
+5792=>'L',
+5793=>'L',
+5794=>'L',
+5795=>'L',
+5796=>'L',
+5797=>'L',
+5798=>'L',
+5799=>'L',
+5800=>'L',
+5801=>'L',
+5802=>'L',
+5803=>'L',
+5804=>'L',
+5805=>'L',
+5806=>'L',
+5807=>'L',
+5808=>'L',
+5809=>'L',
+5810=>'L',
+5811=>'L',
+5812=>'L',
+5813=>'L',
+5814=>'L',
+5815=>'L',
+5816=>'L',
+5817=>'L',
+5818=>'L',
+5819=>'L',
+5820=>'L',
+5821=>'L',
+5822=>'L',
+5823=>'L',
+5824=>'L',
+5825=>'L',
+5826=>'L',
+5827=>'L',
+5828=>'L',
+5829=>'L',
+5830=>'L',
+5831=>'L',
+5832=>'L',
+5833=>'L',
+5834=>'L',
+5835=>'L',
+5836=>'L',
+5837=>'L',
+5838=>'L',
+5839=>'L',
+5840=>'L',
+5841=>'L',
+5842=>'L',
+5843=>'L',
+5844=>'L',
+5845=>'L',
+5846=>'L',
+5847=>'L',
+5848=>'L',
+5849=>'L',
+5850=>'L',
+5851=>'L',
+5852=>'L',
+5853=>'L',
+5854=>'L',
+5855=>'L',
+5856=>'L',
+5857=>'L',
+5858=>'L',
+5859=>'L',
+5860=>'L',
+5861=>'L',
+5862=>'L',
+5863=>'L',
+5864=>'L',
+5865=>'L',
+5866=>'L',
+5867=>'L',
+5868=>'L',
+5869=>'L',
+5870=>'L',
+5871=>'L',
+5872=>'L',
+5888=>'L',
+5889=>'L',
+5890=>'L',
+5891=>'L',
+5892=>'L',
+5893=>'L',
+5894=>'L',
+5895=>'L',
+5896=>'L',
+5897=>'L',
+5898=>'L',
+5899=>'L',
+5900=>'L',
+5902=>'L',
+5903=>'L',
+5904=>'L',
+5905=>'L',
+5906=>'NSM',
+5907=>'NSM',
+5908=>'NSM',
+5920=>'L',
+5921=>'L',
+5922=>'L',
+5923=>'L',
+5924=>'L',
+5925=>'L',
+5926=>'L',
+5927=>'L',
+5928=>'L',
+5929=>'L',
+5930=>'L',
+5931=>'L',
+5932=>'L',
+5933=>'L',
+5934=>'L',
+5935=>'L',
+5936=>'L',
+5937=>'L',
+5938=>'NSM',
+5939=>'NSM',
+5940=>'NSM',
+5941=>'L',
+5942=>'L',
+5952=>'L',
+5953=>'L',
+5954=>'L',
+5955=>'L',
+5956=>'L',
+5957=>'L',
+5958=>'L',
+5959=>'L',
+5960=>'L',
+5961=>'L',
+5962=>'L',
+5963=>'L',
+5964=>'L',
+5965=>'L',
+5966=>'L',
+5967=>'L',
+5968=>'L',
+5969=>'L',
+5970=>'NSM',
+5971=>'NSM',
+5984=>'L',
+5985=>'L',
+5986=>'L',
+5987=>'L',
+5988=>'L',
+5989=>'L',
+5990=>'L',
+5991=>'L',
+5992=>'L',
+5993=>'L',
+5994=>'L',
+5995=>'L',
+5996=>'L',
+5998=>'L',
+5999=>'L',
+6000=>'L',
+6002=>'NSM',
+6003=>'NSM',
+6016=>'L',
+6017=>'L',
+6018=>'L',
+6019=>'L',
+6020=>'L',
+6021=>'L',
+6022=>'L',
+6023=>'L',
+6024=>'L',
+6025=>'L',
+6026=>'L',
+6027=>'L',
+6028=>'L',
+6029=>'L',
+6030=>'L',
+6031=>'L',
+6032=>'L',
+6033=>'L',
+6034=>'L',
+6035=>'L',
+6036=>'L',
+6037=>'L',
+6038=>'L',
+6039=>'L',
+6040=>'L',
+6041=>'L',
+6042=>'L',
+6043=>'L',
+6044=>'L',
+6045=>'L',
+6046=>'L',
+6047=>'L',
+6048=>'L',
+6049=>'L',
+6050=>'L',
+6051=>'L',
+6052=>'L',
+6053=>'L',
+6054=>'L',
+6055=>'L',
+6056=>'L',
+6057=>'L',
+6058=>'L',
+6059=>'L',
+6060=>'L',
+6061=>'L',
+6062=>'L',
+6063=>'L',
+6064=>'L',
+6065=>'L',
+6066=>'L',
+6067=>'L',
+6068=>'L',
+6069=>'L',
+6070=>'L',
+6071=>'NSM',
+6072=>'NSM',
+6073=>'NSM',
+6074=>'NSM',
+6075=>'NSM',
+6076=>'NSM',
+6077=>'NSM',
+6078=>'L',
+6079=>'L',
+6080=>'L',
+6081=>'L',
+6082=>'L',
+6083=>'L',
+6084=>'L',
+6085=>'L',
+6086=>'NSM',
+6087=>'L',
+6088=>'L',
+6089=>'NSM',
+6090=>'NSM',
+6091=>'NSM',
+6092=>'NSM',
+6093=>'NSM',
+6094=>'NSM',
+6095=>'NSM',
+6096=>'NSM',
+6097=>'NSM',
+6098=>'NSM',
+6099=>'NSM',
+6100=>'L',
+6101=>'L',
+6102=>'L',
+6103=>'L',
+6104=>'L',
+6105=>'L',
+6106=>'L',
+6107=>'ET',
+6108=>'L',
+6109=>'NSM',
+6112=>'L',
+6113=>'L',
+6114=>'L',
+6115=>'L',
+6116=>'L',
+6117=>'L',
+6118=>'L',
+6119=>'L',
+6120=>'L',
+6121=>'L',
+6128=>'ON',
+6129=>'ON',
+6130=>'ON',
+6131=>'ON',
+6132=>'ON',
+6133=>'ON',
+6134=>'ON',
+6135=>'ON',
+6136=>'ON',
+6137=>'ON',
+6144=>'ON',
+6145=>'ON',
+6146=>'ON',
+6147=>'ON',
+6148=>'ON',
+6149=>'ON',
+6150=>'ON',
+6151=>'ON',
+6152=>'ON',
+6153=>'ON',
+6154=>'ON',
+6155=>'NSM',
+6156=>'NSM',
+6157=>'NSM',
+6158=>'WS',
+6160=>'L',
+6161=>'L',
+6162=>'L',
+6163=>'L',
+6164=>'L',
+6165=>'L',
+6166=>'L',
+6167=>'L',
+6168=>'L',
+6169=>'L',
+6176=>'L',
+6177=>'L',
+6178=>'L',
+6179=>'L',
+6180=>'L',
+6181=>'L',
+6182=>'L',
+6183=>'L',
+6184=>'L',
+6185=>'L',
+6186=>'L',
+6187=>'L',
+6188=>'L',
+6189=>'L',
+6190=>'L',
+6191=>'L',
+6192=>'L',
+6193=>'L',
+6194=>'L',
+6195=>'L',
+6196=>'L',
+6197=>'L',
+6198=>'L',
+6199=>'L',
+6200=>'L',
+6201=>'L',
+6202=>'L',
+6203=>'L',
+6204=>'L',
+6205=>'L',
+6206=>'L',
+6207=>'L',
+6208=>'L',
+6209=>'L',
+6210=>'L',
+6211=>'L',
+6212=>'L',
+6213=>'L',
+6214=>'L',
+6215=>'L',
+6216=>'L',
+6217=>'L',
+6218=>'L',
+6219=>'L',
+6220=>'L',
+6221=>'L',
+6222=>'L',
+6223=>'L',
+6224=>'L',
+6225=>'L',
+6226=>'L',
+6227=>'L',
+6228=>'L',
+6229=>'L',
+6230=>'L',
+6231=>'L',
+6232=>'L',
+6233=>'L',
+6234=>'L',
+6235=>'L',
+6236=>'L',
+6237=>'L',
+6238=>'L',
+6239=>'L',
+6240=>'L',
+6241=>'L',
+6242=>'L',
+6243=>'L',
+6244=>'L',
+6245=>'L',
+6246=>'L',
+6247=>'L',
+6248=>'L',
+6249=>'L',
+6250=>'L',
+6251=>'L',
+6252=>'L',
+6253=>'L',
+6254=>'L',
+6255=>'L',
+6256=>'L',
+6257=>'L',
+6258=>'L',
+6259=>'L',
+6260=>'L',
+6261=>'L',
+6262=>'L',
+6263=>'L',
+6272=>'L',
+6273=>'L',
+6274=>'L',
+6275=>'L',
+6276=>'L',
+6277=>'L',
+6278=>'L',
+6279=>'L',
+6280=>'L',
+6281=>'L',
+6282=>'L',
+6283=>'L',
+6284=>'L',
+6285=>'L',
+6286=>'L',
+6287=>'L',
+6288=>'L',
+6289=>'L',
+6290=>'L',
+6291=>'L',
+6292=>'L',
+6293=>'L',
+6294=>'L',
+6295=>'L',
+6296=>'L',
+6297=>'L',
+6298=>'L',
+6299=>'L',
+6300=>'L',
+6301=>'L',
+6302=>'L',
+6303=>'L',
+6304=>'L',
+6305=>'L',
+6306=>'L',
+6307=>'L',
+6308=>'L',
+6309=>'L',
+6310=>'L',
+6311=>'L',
+6312=>'L',
+6313=>'NSM',
+6400=>'L',
+6401=>'L',
+6402=>'L',
+6403=>'L',
+6404=>'L',
+6405=>'L',
+6406=>'L',
+6407=>'L',
+6408=>'L',
+6409=>'L',
+6410=>'L',
+6411=>'L',
+6412=>'L',
+6413=>'L',
+6414=>'L',
+6415=>'L',
+6416=>'L',
+6417=>'L',
+6418=>'L',
+6419=>'L',
+6420=>'L',
+6421=>'L',
+6422=>'L',
+6423=>'L',
+6424=>'L',
+6425=>'L',
+6426=>'L',
+6427=>'L',
+6428=>'L',
+6432=>'NSM',
+6433=>'NSM',
+6434=>'NSM',
+6435=>'L',
+6436=>'L',
+6437=>'L',
+6438=>'L',
+6439=>'NSM',
+6440=>'NSM',
+6441=>'NSM',
+6442=>'NSM',
+6443=>'NSM',
+6448=>'L',
+6449=>'L',
+6450=>'NSM',
+6451=>'L',
+6452=>'L',
+6453=>'L',
+6454=>'L',
+6455=>'L',
+6456=>'L',
+6457=>'NSM',
+6458=>'NSM',
+6459=>'NSM',
+6464=>'ON',
+6468=>'ON',
+6469=>'ON',
+6470=>'L',
+6471=>'L',
+6472=>'L',
+6473=>'L',
+6474=>'L',
+6475=>'L',
+6476=>'L',
+6477=>'L',
+6478=>'L',
+6479=>'L',
+6480=>'L',
+6481=>'L',
+6482=>'L',
+6483=>'L',
+6484=>'L',
+6485=>'L',
+6486=>'L',
+6487=>'L',
+6488=>'L',
+6489=>'L',
+6490=>'L',
+6491=>'L',
+6492=>'L',
+6493=>'L',
+6494=>'L',
+6495=>'L',
+6496=>'L',
+6497=>'L',
+6498=>'L',
+6499=>'L',
+6500=>'L',
+6501=>'L',
+6502=>'L',
+6503=>'L',
+6504=>'L',
+6505=>'L',
+6506=>'L',
+6507=>'L',
+6508=>'L',
+6509=>'L',
+6512=>'L',
+6513=>'L',
+6514=>'L',
+6515=>'L',
+6516=>'L',
+6528=>'L',
+6529=>'L',
+6530=>'L',
+6531=>'L',
+6532=>'L',
+6533=>'L',
+6534=>'L',
+6535=>'L',
+6536=>'L',
+6537=>'L',
+6538=>'L',
+6539=>'L',
+6540=>'L',
+6541=>'L',
+6542=>'L',
+6543=>'L',
+6544=>'L',
+6545=>'L',
+6546=>'L',
+6547=>'L',
+6548=>'L',
+6549=>'L',
+6550=>'L',
+6551=>'L',
+6552=>'L',
+6553=>'L',
+6554=>'L',
+6555=>'L',
+6556=>'L',
+6557=>'L',
+6558=>'L',
+6559=>'L',
+6560=>'L',
+6561=>'L',
+6562=>'L',
+6563=>'L',
+6564=>'L',
+6565=>'L',
+6566=>'L',
+6567=>'L',
+6568=>'L',
+6569=>'L',
+6576=>'L',
+6577=>'L',
+6578=>'L',
+6579=>'L',
+6580=>'L',
+6581=>'L',
+6582=>'L',
+6583=>'L',
+6584=>'L',
+6585=>'L',
+6586=>'L',
+6587=>'L',
+6588=>'L',
+6589=>'L',
+6590=>'L',
+6591=>'L',
+6592=>'L',
+6593=>'L',
+6594=>'L',
+6595=>'L',
+6596=>'L',
+6597=>'L',
+6598=>'L',
+6599=>'L',
+6600=>'L',
+6601=>'L',
+6608=>'L',
+6609=>'L',
+6610=>'L',
+6611=>'L',
+6612=>'L',
+6613=>'L',
+6614=>'L',
+6615=>'L',
+6616=>'L',
+6617=>'L',
+6622=>'ON',
+6623=>'ON',
+6624=>'ON',
+6625=>'ON',
+6626=>'ON',
+6627=>'ON',
+6628=>'ON',
+6629=>'ON',
+6630=>'ON',
+6631=>'ON',
+6632=>'ON',
+6633=>'ON',
+6634=>'ON',
+6635=>'ON',
+6636=>'ON',
+6637=>'ON',
+6638=>'ON',
+6639=>'ON',
+6640=>'ON',
+6641=>'ON',
+6642=>'ON',
+6643=>'ON',
+6644=>'ON',
+6645=>'ON',
+6646=>'ON',
+6647=>'ON',
+6648=>'ON',
+6649=>'ON',
+6650=>'ON',
+6651=>'ON',
+6652=>'ON',
+6653=>'ON',
+6654=>'ON',
+6655=>'ON',
+6656=>'L',
+6657=>'L',
+6658=>'L',
+6659=>'L',
+6660=>'L',
+6661=>'L',
+6662=>'L',
+6663=>'L',
+6664=>'L',
+6665=>'L',
+6666=>'L',
+6667=>'L',
+6668=>'L',
+6669=>'L',
+6670=>'L',
+6671=>'L',
+6672=>'L',
+6673=>'L',
+6674=>'L',
+6675=>'L',
+6676=>'L',
+6677=>'L',
+6678=>'L',
+6679=>'NSM',
+6680=>'NSM',
+6681=>'L',
+6682=>'L',
+6683=>'L',
+6686=>'L',
+6687=>'L',
+6912=>'NSM',
+6913=>'NSM',
+6914=>'NSM',
+6915=>'NSM',
+6916=>'L',
+6917=>'L',
+6918=>'L',
+6919=>'L',
+6920=>'L',
+6921=>'L',
+6922=>'L',
+6923=>'L',
+6924=>'L',
+6925=>'L',
+6926=>'L',
+6927=>'L',
+6928=>'L',
+6929=>'L',
+6930=>'L',
+6931=>'L',
+6932=>'L',
+6933=>'L',
+6934=>'L',
+6935=>'L',
+6936=>'L',
+6937=>'L',
+6938=>'L',
+6939=>'L',
+6940=>'L',
+6941=>'L',
+6942=>'L',
+6943=>'L',
+6944=>'L',
+6945=>'L',
+6946=>'L',
+6947=>'L',
+6948=>'L',
+6949=>'L',
+6950=>'L',
+6951=>'L',
+6952=>'L',
+6953=>'L',
+6954=>'L',
+6955=>'L',
+6956=>'L',
+6957=>'L',
+6958=>'L',
+6959=>'L',
+6960=>'L',
+6961=>'L',
+6962=>'L',
+6963=>'L',
+6964=>'NSM',
+6965=>'L',
+6966=>'NSM',
+6967=>'NSM',
+6968=>'NSM',
+6969=>'NSM',
+6970=>'NSM',
+6971=>'L',
+6972=>'NSM',
+6973=>'L',
+6974=>'L',
+6975=>'L',
+6976=>'L',
+6977=>'L',
+6978=>'NSM',
+6979=>'L',
+6980=>'L',
+6981=>'L',
+6982=>'L',
+6983=>'L',
+6984=>'L',
+6985=>'L',
+6986=>'L',
+6987=>'L',
+6992=>'L',
+6993=>'L',
+6994=>'L',
+6995=>'L',
+6996=>'L',
+6997=>'L',
+6998=>'L',
+6999=>'L',
+7000=>'L',
+7001=>'L',
+7002=>'L',
+7003=>'L',
+7004=>'L',
+7005=>'L',
+7006=>'L',
+7007=>'L',
+7008=>'L',
+7009=>'L',
+7010=>'L',
+7011=>'L',
+7012=>'L',
+7013=>'L',
+7014=>'L',
+7015=>'L',
+7016=>'L',
+7017=>'L',
+7018=>'L',
+7019=>'NSM',
+7020=>'NSM',
+7021=>'NSM',
+7022=>'NSM',
+7023=>'NSM',
+7024=>'NSM',
+7025=>'NSM',
+7026=>'NSM',
+7027=>'NSM',
+7028=>'L',
+7029=>'L',
+7030=>'L',
+7031=>'L',
+7032=>'L',
+7033=>'L',
+7034=>'L',
+7035=>'L',
+7036=>'L',
+7424=>'L',
+7425=>'L',
+7426=>'L',
+7427=>'L',
+7428=>'L',
+7429=>'L',
+7430=>'L',
+7431=>'L',
+7432=>'L',
+7433=>'L',
+7434=>'L',
+7435=>'L',
+7436=>'L',
+7437=>'L',
+7438=>'L',
+7439=>'L',
+7440=>'L',
+7441=>'L',
+7442=>'L',
+7443=>'L',
+7444=>'L',
+7445=>'L',
+7446=>'L',
+7447=>'L',
+7448=>'L',
+7449=>'L',
+7450=>'L',
+7451=>'L',
+7452=>'L',
+7453=>'L',
+7454=>'L',
+7455=>'L',
+7456=>'L',
+7457=>'L',
+7458=>'L',
+7459=>'L',
+7460=>'L',
+7461=>'L',
+7462=>'L',
+7463=>'L',
+7464=>'L',
+7465=>'L',
+7466=>'L',
+7467=>'L',
+7468=>'L',
+7469=>'L',
+7470=>'L',
+7471=>'L',
+7472=>'L',
+7473=>'L',
+7474=>'L',
+7475=>'L',
+7476=>'L',
+7477=>'L',
+7478=>'L',
+7479=>'L',
+7480=>'L',
+7481=>'L',
+7482=>'L',
+7483=>'L',
+7484=>'L',
+7485=>'L',
+7486=>'L',
+7487=>'L',
+7488=>'L',
+7489=>'L',
+7490=>'L',
+7491=>'L',
+7492=>'L',
+7493=>'L',
+7494=>'L',
+7495=>'L',
+7496=>'L',
+7497=>'L',
+7498=>'L',
+7499=>'L',
+7500=>'L',
+7501=>'L',
+7502=>'L',
+7503=>'L',
+7504=>'L',
+7505=>'L',
+7506=>'L',
+7507=>'L',
+7508=>'L',
+7509=>'L',
+7510=>'L',
+7511=>'L',
+7512=>'L',
+7513=>'L',
+7514=>'L',
+7515=>'L',
+7516=>'L',
+7517=>'L',
+7518=>'L',
+7519=>'L',
+7520=>'L',
+7521=>'L',
+7522=>'L',
+7523=>'L',
+7524=>'L',
+7525=>'L',
+7526=>'L',
+7527=>'L',
+7528=>'L',
+7529=>'L',
+7530=>'L',
+7531=>'L',
+7532=>'L',
+7533=>'L',
+7534=>'L',
+7535=>'L',
+7536=>'L',
+7537=>'L',
+7538=>'L',
+7539=>'L',
+7540=>'L',
+7541=>'L',
+7542=>'L',
+7543=>'L',
+7544=>'L',
+7545=>'L',
+7546=>'L',
+7547=>'L',
+7548=>'L',
+7549=>'L',
+7550=>'L',
+7551=>'L',
+7552=>'L',
+7553=>'L',
+7554=>'L',
+7555=>'L',
+7556=>'L',
+7557=>'L',
+7558=>'L',
+7559=>'L',
+7560=>'L',
+7561=>'L',
+7562=>'L',
+7563=>'L',
+7564=>'L',
+7565=>'L',
+7566=>'L',
+7567=>'L',
+7568=>'L',
+7569=>'L',
+7570=>'L',
+7571=>'L',
+7572=>'L',
+7573=>'L',
+7574=>'L',
+7575=>'L',
+7576=>'L',
+7577=>'L',
+7578=>'L',
+7579=>'L',
+7580=>'L',
+7581=>'L',
+7582=>'L',
+7583=>'L',
+7584=>'L',
+7585=>'L',
+7586=>'L',
+7587=>'L',
+7588=>'L',
+7589=>'L',
+7590=>'L',
+7591=>'L',
+7592=>'L',
+7593=>'L',
+7594=>'L',
+7595=>'L',
+7596=>'L',
+7597=>'L',
+7598=>'L',
+7599=>'L',
+7600=>'L',
+7601=>'L',
+7602=>'L',
+7603=>'L',
+7604=>'L',
+7605=>'L',
+7606=>'L',
+7607=>'L',
+7608=>'L',
+7609=>'L',
+7610=>'L',
+7611=>'L',
+7612=>'L',
+7613=>'L',
+7614=>'L',
+7615=>'L',
+7616=>'NSM',
+7617=>'NSM',
+7618=>'NSM',
+7619=>'NSM',
+7620=>'NSM',
+7621=>'NSM',
+7622=>'NSM',
+7623=>'NSM',
+7624=>'NSM',
+7625=>'NSM',
+7626=>'NSM',
+7678=>'NSM',
+7679=>'NSM',
+7680=>'L',
+7681=>'L',
+7682=>'L',
+7683=>'L',
+7684=>'L',
+7685=>'L',
+7686=>'L',
+7687=>'L',
+7688=>'L',
+7689=>'L',
+7690=>'L',
+7691=>'L',
+7692=>'L',
+7693=>'L',
+7694=>'L',
+7695=>'L',
+7696=>'L',
+7697=>'L',
+7698=>'L',
+7699=>'L',
+7700=>'L',
+7701=>'L',
+7702=>'L',
+7703=>'L',
+7704=>'L',
+7705=>'L',
+7706=>'L',
+7707=>'L',
+7708=>'L',
+7709=>'L',
+7710=>'L',
+7711=>'L',
+7712=>'L',
+7713=>'L',
+7714=>'L',
+7715=>'L',
+7716=>'L',
+7717=>'L',
+7718=>'L',
+7719=>'L',
+7720=>'L',
+7721=>'L',
+7722=>'L',
+7723=>'L',
+7724=>'L',
+7725=>'L',
+7726=>'L',
+7727=>'L',
+7728=>'L',
+7729=>'L',
+7730=>'L',
+7731=>'L',
+7732=>'L',
+7733=>'L',
+7734=>'L',
+7735=>'L',
+7736=>'L',
+7737=>'L',
+7738=>'L',
+7739=>'L',
+7740=>'L',
+7741=>'L',
+7742=>'L',
+7743=>'L',
+7744=>'L',
+7745=>'L',
+7746=>'L',
+7747=>'L',
+7748=>'L',
+7749=>'L',
+7750=>'L',
+7751=>'L',
+7752=>'L',
+7753=>'L',
+7754=>'L',
+7755=>'L',
+7756=>'L',
+7757=>'L',
+7758=>'L',
+7759=>'L',
+7760=>'L',
+7761=>'L',
+7762=>'L',
+7763=>'L',
+7764=>'L',
+7765=>'L',
+7766=>'L',
+7767=>'L',
+7768=>'L',
+7769=>'L',
+7770=>'L',
+7771=>'L',
+7772=>'L',
+7773=>'L',
+7774=>'L',
+7775=>'L',
+7776=>'L',
+7777=>'L',
+7778=>'L',
+7779=>'L',
+7780=>'L',
+7781=>'L',
+7782=>'L',
+7783=>'L',
+7784=>'L',
+7785=>'L',
+7786=>'L',
+7787=>'L',
+7788=>'L',
+7789=>'L',
+7790=>'L',
+7791=>'L',
+7792=>'L',
+7793=>'L',
+7794=>'L',
+7795=>'L',
+7796=>'L',
+7797=>'L',
+7798=>'L',
+7799=>'L',
+7800=>'L',
+7801=>'L',
+7802=>'L',
+7803=>'L',
+7804=>'L',
+7805=>'L',
+7806=>'L',
+7807=>'L',
+7808=>'L',
+7809=>'L',
+7810=>'L',
+7811=>'L',
+7812=>'L',
+7813=>'L',
+7814=>'L',
+7815=>'L',
+7816=>'L',
+7817=>'L',
+7818=>'L',
+7819=>'L',
+7820=>'L',
+7821=>'L',
+7822=>'L',
+7823=>'L',
+7824=>'L',
+7825=>'L',
+7826=>'L',
+7827=>'L',
+7828=>'L',
+7829=>'L',
+7830=>'L',
+7831=>'L',
+7832=>'L',
+7833=>'L',
+7834=>'L',
+7835=>'L',
+7840=>'L',
+7841=>'L',
+7842=>'L',
+7843=>'L',
+7844=>'L',
+7845=>'L',
+7846=>'L',
+7847=>'L',
+7848=>'L',
+7849=>'L',
+7850=>'L',
+7851=>'L',
+7852=>'L',
+7853=>'L',
+7854=>'L',
+7855=>'L',
+7856=>'L',
+7857=>'L',
+7858=>'L',
+7859=>'L',
+7860=>'L',
+7861=>'L',
+7862=>'L',
+7863=>'L',
+7864=>'L',
+7865=>'L',
+7866=>'L',
+7867=>'L',
+7868=>'L',
+7869=>'L',
+7870=>'L',
+7871=>'L',
+7872=>'L',
+7873=>'L',
+7874=>'L',
+7875=>'L',
+7876=>'L',
+7877=>'L',
+7878=>'L',
+7879=>'L',
+7880=>'L',
+7881=>'L',
+7882=>'L',
+7883=>'L',
+7884=>'L',
+7885=>'L',
+7886=>'L',
+7887=>'L',
+7888=>'L',
+7889=>'L',
+7890=>'L',
+7891=>'L',
+7892=>'L',
+7893=>'L',
+7894=>'L',
+7895=>'L',
+7896=>'L',
+7897=>'L',
+7898=>'L',
+7899=>'L',
+7900=>'L',
+7901=>'L',
+7902=>'L',
+7903=>'L',
+7904=>'L',
+7905=>'L',
+7906=>'L',
+7907=>'L',
+7908=>'L',
+7909=>'L',
+7910=>'L',
+7911=>'L',
+7912=>'L',
+7913=>'L',
+7914=>'L',
+7915=>'L',
+7916=>'L',
+7917=>'L',
+7918=>'L',
+7919=>'L',
+7920=>'L',
+7921=>'L',
+7922=>'L',
+7923=>'L',
+7924=>'L',
+7925=>'L',
+7926=>'L',
+7927=>'L',
+7928=>'L',
+7929=>'L',
+7936=>'L',
+7937=>'L',
+7938=>'L',
+7939=>'L',
+7940=>'L',
+7941=>'L',
+7942=>'L',
+7943=>'L',
+7944=>'L',
+7945=>'L',
+7946=>'L',
+7947=>'L',
+7948=>'L',
+7949=>'L',
+7950=>'L',
+7951=>'L',
+7952=>'L',
+7953=>'L',
+7954=>'L',
+7955=>'L',
+7956=>'L',
+7957=>'L',
+7960=>'L',
+7961=>'L',
+7962=>'L',
+7963=>'L',
+7964=>'L',
+7965=>'L',
+7968=>'L',
+7969=>'L',
+7970=>'L',
+7971=>'L',
+7972=>'L',
+7973=>'L',
+7974=>'L',
+7975=>'L',
+7976=>'L',
+7977=>'L',
+7978=>'L',
+7979=>'L',
+7980=>'L',
+7981=>'L',
+7982=>'L',
+7983=>'L',
+7984=>'L',
+7985=>'L',
+7986=>'L',
+7987=>'L',
+7988=>'L',
+7989=>'L',
+7990=>'L',
+7991=>'L',
+7992=>'L',
+7993=>'L',
+7994=>'L',
+7995=>'L',
+7996=>'L',
+7997=>'L',
+7998=>'L',
+7999=>'L',
+8000=>'L',
+8001=>'L',
+8002=>'L',
+8003=>'L',
+8004=>'L',
+8005=>'L',
+8008=>'L',
+8009=>'L',
+8010=>'L',
+8011=>'L',
+8012=>'L',
+8013=>'L',
+8016=>'L',
+8017=>'L',
+8018=>'L',
+8019=>'L',
+8020=>'L',
+8021=>'L',
+8022=>'L',
+8023=>'L',
+8025=>'L',
+8027=>'L',
+8029=>'L',
+8031=>'L',
+8032=>'L',
+8033=>'L',
+8034=>'L',
+8035=>'L',
+8036=>'L',
+8037=>'L',
+8038=>'L',
+8039=>'L',
+8040=>'L',
+8041=>'L',
+8042=>'L',
+8043=>'L',
+8044=>'L',
+8045=>'L',
+8046=>'L',
+8047=>'L',
+8048=>'L',
+8049=>'L',
+8050=>'L',
+8051=>'L',
+8052=>'L',
+8053=>'L',
+8054=>'L',
+8055=>'L',
+8056=>'L',
+8057=>'L',
+8058=>'L',
+8059=>'L',
+8060=>'L',
+8061=>'L',
+8064=>'L',
+8065=>'L',
+8066=>'L',
+8067=>'L',
+8068=>'L',
+8069=>'L',
+8070=>'L',
+8071=>'L',
+8072=>'L',
+8073=>'L',
+8074=>'L',
+8075=>'L',
+8076=>'L',
+8077=>'L',
+8078=>'L',
+8079=>'L',
+8080=>'L',
+8081=>'L',
+8082=>'L',
+8083=>'L',
+8084=>'L',
+8085=>'L',
+8086=>'L',
+8087=>'L',
+8088=>'L',
+8089=>'L',
+8090=>'L',
+8091=>'L',
+8092=>'L',
+8093=>'L',
+8094=>'L',
+8095=>'L',
+8096=>'L',
+8097=>'L',
+8098=>'L',
+8099=>'L',
+8100=>'L',
+8101=>'L',
+8102=>'L',
+8103=>'L',
+8104=>'L',
+8105=>'L',
+8106=>'L',
+8107=>'L',
+8108=>'L',
+8109=>'L',
+8110=>'L',
+8111=>'L',
+8112=>'L',
+8113=>'L',
+8114=>'L',
+8115=>'L',
+8116=>'L',
+8118=>'L',
+8119=>'L',
+8120=>'L',
+8121=>'L',
+8122=>'L',
+8123=>'L',
+8124=>'L',
+8125=>'ON',
+8126=>'L',
+8127=>'ON',
+8128=>'ON',
+8129=>'ON',
+8130=>'L',
+8131=>'L',
+8132=>'L',
+8134=>'L',
+8135=>'L',
+8136=>'L',
+8137=>'L',
+8138=>'L',
+8139=>'L',
+8140=>'L',
+8141=>'ON',
+8142=>'ON',
+8143=>'ON',
+8144=>'L',
+8145=>'L',
+8146=>'L',
+8147=>'L',
+8150=>'L',
+8151=>'L',
+8152=>'L',
+8153=>'L',
+8154=>'L',
+8155=>'L',
+8157=>'ON',
+8158=>'ON',
+8159=>'ON',
+8160=>'L',
+8161=>'L',
+8162=>'L',
+8163=>'L',
+8164=>'L',
+8165=>'L',
+8166=>'L',
+8167=>'L',
+8168=>'L',
+8169=>'L',
+8170=>'L',
+8171=>'L',
+8172=>'L',
+8173=>'ON',
+8174=>'ON',
+8175=>'ON',
+8178=>'L',
+8179=>'L',
+8180=>'L',
+8182=>'L',
+8183=>'L',
+8184=>'L',
+8185=>'L',
+8186=>'L',
+8187=>'L',
+8188=>'L',
+8189=>'ON',
+8190=>'ON',
+8192=>'WS',
+8193=>'WS',
+8194=>'WS',
+8195=>'WS',
+8196=>'WS',
+8197=>'WS',
+8198=>'WS',
+8199=>'WS',
+8200=>'WS',
+8201=>'WS',
+8202=>'WS',
+8203=>'BN',
+8204=>'BN',
+8205=>'BN',
+8206=>'L',
+8207=>'R',
+8208=>'ON',
+8209=>'ON',
+8210=>'ON',
+8211=>'ON',
+8212=>'ON',
+8213=>'ON',
+8214=>'ON',
+8215=>'ON',
+8216=>'ON',
+8217=>'ON',
+8218=>'ON',
+8219=>'ON',
+8220=>'ON',
+8221=>'ON',
+8222=>'ON',
+8223=>'ON',
+8224=>'ON',
+8225=>'ON',
+8226=>'ON',
+8227=>'ON',
+8228=>'ON',
+8229=>'ON',
+8230=>'ON',
+8231=>'ON',
+8232=>'WS',
+8233=>'B',
+8234=>'LRE',
+8235=>'RLE',
+8236=>'PDF',
+8237=>'LRO',
+8238=>'RLO',
+8239=>'CS',
+8240=>'ET',
+8241=>'ET',
+8242=>'ET',
+8243=>'ET',
+8244=>'ET',
+8245=>'ON',
+8246=>'ON',
+8247=>'ON',
+8248=>'ON',
+8249=>'ON',
+8250=>'ON',
+8251=>'ON',
+8252=>'ON',
+8253=>'ON',
+8254=>'ON',
+8255=>'ON',
+8256=>'ON',
+8257=>'ON',
+8258=>'ON',
+8259=>'ON',
+8260=>'CS',
+8261=>'ON',
+8262=>'ON',
+8263=>'ON',
+8264=>'ON',
+8265=>'ON',
+8266=>'ON',
+8267=>'ON',
+8268=>'ON',
+8269=>'ON',
+8270=>'ON',
+8271=>'ON',
+8272=>'ON',
+8273=>'ON',
+8274=>'ON',
+8275=>'ON',
+8276=>'ON',
+8277=>'ON',
+8278=>'ON',
+8279=>'ON',
+8280=>'ON',
+8281=>'ON',
+8282=>'ON',
+8283=>'ON',
+8284=>'ON',
+8285=>'ON',
+8286=>'ON',
+8287=>'WS',
+8288=>'BN',
+8289=>'BN',
+8290=>'BN',
+8291=>'BN',
+8298=>'BN',
+8299=>'BN',
+8300=>'BN',
+8301=>'BN',
+8302=>'BN',
+8303=>'BN',
+8304=>'EN',
+8305=>'L',
+8308=>'EN',
+8309=>'EN',
+8310=>'EN',
+8311=>'EN',
+8312=>'EN',
+8313=>'EN',
+8314=>'ES',
+8315=>'ES',
+8316=>'ON',
+8317=>'ON',
+8318=>'ON',
+8319=>'L',
+8320=>'EN',
+8321=>'EN',
+8322=>'EN',
+8323=>'EN',
+8324=>'EN',
+8325=>'EN',
+8326=>'EN',
+8327=>'EN',
+8328=>'EN',
+8329=>'EN',
+8330=>'ES',
+8331=>'ES',
+8332=>'ON',
+8333=>'ON',
+8334=>'ON',
+8336=>'L',
+8337=>'L',
+8338=>'L',
+8339=>'L',
+8340=>'L',
+8352=>'ET',
+8353=>'ET',
+8354=>'ET',
+8355=>'ET',
+8356=>'ET',
+8357=>'ET',
+8358=>'ET',
+8359=>'ET',
+8360=>'ET',
+8361=>'ET',
+8362=>'ET',
+8363=>'ET',
+8364=>'ET',
+8365=>'ET',
+8366=>'ET',
+8367=>'ET',
+8368=>'ET',
+8369=>'ET',
+8370=>'ET',
+8371=>'ET',
+8372=>'ET',
+8373=>'ET',
+8400=>'NSM',
+8401=>'NSM',
+8402=>'NSM',
+8403=>'NSM',
+8404=>'NSM',
+8405=>'NSM',
+8406=>'NSM',
+8407=>'NSM',
+8408=>'NSM',
+8409=>'NSM',
+8410=>'NSM',
+8411=>'NSM',
+8412=>'NSM',
+8413=>'NSM',
+8414=>'NSM',
+8415=>'NSM',
+8416=>'NSM',
+8417=>'NSM',
+8418=>'NSM',
+8419=>'NSM',
+8420=>'NSM',
+8421=>'NSM',
+8422=>'NSM',
+8423=>'NSM',
+8424=>'NSM',
+8425=>'NSM',
+8426=>'NSM',
+8427=>'NSM',
+8428=>'NSM',
+8429=>'NSM',
+8430=>'NSM',
+8431=>'NSM',
+8448=>'ON',
+8449=>'ON',
+8450=>'L',
+8451=>'ON',
+8452=>'ON',
+8453=>'ON',
+8454=>'ON',
+8455=>'L',
+8456=>'ON',
+8457=>'ON',
+8458=>'L',
+8459=>'L',
+8460=>'L',
+8461=>'L',
+8462=>'L',
+8463=>'L',
+8464=>'L',
+8465=>'L',
+8466=>'L',
+8467=>'L',
+8468=>'ON',
+8469=>'L',
+8470=>'ON',
+8471=>'ON',
+8472=>'ON',
+8473=>'L',
+8474=>'L',
+8475=>'L',
+8476=>'L',
+8477=>'L',
+8478=>'ON',
+8479=>'ON',
+8480=>'ON',
+8481=>'ON',
+8482=>'ON',
+8483=>'ON',
+8484=>'L',
+8485=>'ON',
+8486=>'L',
+8487=>'ON',
+8488=>'L',
+8489=>'ON',
+8490=>'L',
+8491=>'L',
+8492=>'L',
+8493=>'L',
+8494=>'ET',
+8495=>'L',
+8496=>'L',
+8497=>'L',
+8498=>'L',
+8499=>'L',
+8500=>'L',
+8501=>'L',
+8502=>'L',
+8503=>'L',
+8504=>'L',
+8505=>'L',
+8506=>'ON',
+8507=>'ON',
+8508=>'L',
+8509=>'L',
+8510=>'L',
+8511=>'L',
+8512=>'ON',
+8513=>'ON',
+8514=>'ON',
+8515=>'ON',
+8516=>'ON',
+8517=>'L',
+8518=>'L',
+8519=>'L',
+8520=>'L',
+8521=>'L',
+8522=>'ON',
+8523=>'ON',
+8524=>'ON',
+8525=>'ON',
+8526=>'L',
+8531=>'ON',
+8532=>'ON',
+8533=>'ON',
+8534=>'ON',
+8535=>'ON',
+8536=>'ON',
+8537=>'ON',
+8538=>'ON',
+8539=>'ON',
+8540=>'ON',
+8541=>'ON',
+8542=>'ON',
+8543=>'ON',
+8544=>'L',
+8545=>'L',
+8546=>'L',
+8547=>'L',
+8548=>'L',
+8549=>'L',
+8550=>'L',
+8551=>'L',
+8552=>'L',
+8553=>'L',
+8554=>'L',
+8555=>'L',
+8556=>'L',
+8557=>'L',
+8558=>'L',
+8559=>'L',
+8560=>'L',
+8561=>'L',
+8562=>'L',
+8563=>'L',
+8564=>'L',
+8565=>'L',
+8566=>'L',
+8567=>'L',
+8568=>'L',
+8569=>'L',
+8570=>'L',
+8571=>'L',
+8572=>'L',
+8573=>'L',
+8574=>'L',
+8575=>'L',
+8576=>'L',
+8577=>'L',
+8578=>'L',
+8579=>'L',
+8580=>'L',
+8592=>'ON',
+8593=>'ON',
+8594=>'ON',
+8595=>'ON',
+8596=>'ON',
+8597=>'ON',
+8598=>'ON',
+8599=>'ON',
+8600=>'ON',
+8601=>'ON',
+8602=>'ON',
+8603=>'ON',
+8604=>'ON',
+8605=>'ON',
+8606=>'ON',
+8607=>'ON',
+8608=>'ON',
+8609=>'ON',
+8610=>'ON',
+8611=>'ON',
+8612=>'ON',
+8613=>'ON',
+8614=>'ON',
+8615=>'ON',
+8616=>'ON',
+8617=>'ON',
+8618=>'ON',
+8619=>'ON',
+8620=>'ON',
+8621=>'ON',
+8622=>'ON',
+8623=>'ON',
+8624=>'ON',
+8625=>'ON',
+8626=>'ON',
+8627=>'ON',
+8628=>'ON',
+8629=>'ON',
+8630=>'ON',
+8631=>'ON',
+8632=>'ON',
+8633=>'ON',
+8634=>'ON',
+8635=>'ON',
+8636=>'ON',
+8637=>'ON',
+8638=>'ON',
+8639=>'ON',
+8640=>'ON',
+8641=>'ON',
+8642=>'ON',
+8643=>'ON',
+8644=>'ON',
+8645=>'ON',
+8646=>'ON',
+8647=>'ON',
+8648=>'ON',
+8649=>'ON',
+8650=>'ON',
+8651=>'ON',
+8652=>'ON',
+8653=>'ON',
+8654=>'ON',
+8655=>'ON',
+8656=>'ON',
+8657=>'ON',
+8658=>'ON',
+8659=>'ON',
+8660=>'ON',
+8661=>'ON',
+8662=>'ON',
+8663=>'ON',
+8664=>'ON',
+8665=>'ON',
+8666=>'ON',
+8667=>'ON',
+8668=>'ON',
+8669=>'ON',
+8670=>'ON',
+8671=>'ON',
+8672=>'ON',
+8673=>'ON',
+8674=>'ON',
+8675=>'ON',
+8676=>'ON',
+8677=>'ON',
+8678=>'ON',
+8679=>'ON',
+8680=>'ON',
+8681=>'ON',
+8682=>'ON',
+8683=>'ON',
+8684=>'ON',
+8685=>'ON',
+8686=>'ON',
+8687=>'ON',
+8688=>'ON',
+8689=>'ON',
+8690=>'ON',
+8691=>'ON',
+8692=>'ON',
+8693=>'ON',
+8694=>'ON',
+8695=>'ON',
+8696=>'ON',
+8697=>'ON',
+8698=>'ON',
+8699=>'ON',
+8700=>'ON',
+8701=>'ON',
+8702=>'ON',
+8703=>'ON',
+8704=>'ON',
+8705=>'ON',
+8706=>'ON',
+8707=>'ON',
+8708=>'ON',
+8709=>'ON',
+8710=>'ON',
+8711=>'ON',
+8712=>'ON',
+8713=>'ON',
+8714=>'ON',
+8715=>'ON',
+8716=>'ON',
+8717=>'ON',
+8718=>'ON',
+8719=>'ON',
+8720=>'ON',
+8721=>'ON',
+8722=>'ES',
+8723=>'ET',
+8724=>'ON',
+8725=>'ON',
+8726=>'ON',
+8727=>'ON',
+8728=>'ON',
+8729=>'ON',
+8730=>'ON',
+8731=>'ON',
+8732=>'ON',
+8733=>'ON',
+8734=>'ON',
+8735=>'ON',
+8736=>'ON',
+8737=>'ON',
+8738=>'ON',
+8739=>'ON',
+8740=>'ON',
+8741=>'ON',
+8742=>'ON',
+8743=>'ON',
+8744=>'ON',
+8745=>'ON',
+8746=>'ON',
+8747=>'ON',
+8748=>'ON',
+8749=>'ON',
+8750=>'ON',
+8751=>'ON',
+8752=>'ON',
+8753=>'ON',
+8754=>'ON',
+8755=>'ON',
+8756=>'ON',
+8757=>'ON',
+8758=>'ON',
+8759=>'ON',
+8760=>'ON',
+8761=>'ON',
+8762=>'ON',
+8763=>'ON',
+8764=>'ON',
+8765=>'ON',
+8766=>'ON',
+8767=>'ON',
+8768=>'ON',
+8769=>'ON',
+8770=>'ON',
+8771=>'ON',
+8772=>'ON',
+8773=>'ON',
+8774=>'ON',
+8775=>'ON',
+8776=>'ON',
+8777=>'ON',
+8778=>'ON',
+8779=>'ON',
+8780=>'ON',
+8781=>'ON',
+8782=>'ON',
+8783=>'ON',
+8784=>'ON',
+8785=>'ON',
+8786=>'ON',
+8787=>'ON',
+8788=>'ON',
+8789=>'ON',
+8790=>'ON',
+8791=>'ON',
+8792=>'ON',
+8793=>'ON',
+8794=>'ON',
+8795=>'ON',
+8796=>'ON',
+8797=>'ON',
+8798=>'ON',
+8799=>'ON',
+8800=>'ON',
+8801=>'ON',
+8802=>'ON',
+8803=>'ON',
+8804=>'ON',
+8805=>'ON',
+8806=>'ON',
+8807=>'ON',
+8808=>'ON',
+8809=>'ON',
+8810=>'ON',
+8811=>'ON',
+8812=>'ON',
+8813=>'ON',
+8814=>'ON',
+8815=>'ON',
+8816=>'ON',
+8817=>'ON',
+8818=>'ON',
+8819=>'ON',
+8820=>'ON',
+8821=>'ON',
+8822=>'ON',
+8823=>'ON',
+8824=>'ON',
+8825=>'ON',
+8826=>'ON',
+8827=>'ON',
+8828=>'ON',
+8829=>'ON',
+8830=>'ON',
+8831=>'ON',
+8832=>'ON',
+8833=>'ON',
+8834=>'ON',
+8835=>'ON',
+8836=>'ON',
+8837=>'ON',
+8838=>'ON',
+8839=>'ON',
+8840=>'ON',
+8841=>'ON',
+8842=>'ON',
+8843=>'ON',
+8844=>'ON',
+8845=>'ON',
+8846=>'ON',
+8847=>'ON',
+8848=>'ON',
+8849=>'ON',
+8850=>'ON',
+8851=>'ON',
+8852=>'ON',
+8853=>'ON',
+8854=>'ON',
+8855=>'ON',
+8856=>'ON',
+8857=>'ON',
+8858=>'ON',
+8859=>'ON',
+8860=>'ON',
+8861=>'ON',
+8862=>'ON',
+8863=>'ON',
+8864=>'ON',
+8865=>'ON',
+8866=>'ON',
+8867=>'ON',
+8868=>'ON',
+8869=>'ON',
+8870=>'ON',
+8871=>'ON',
+8872=>'ON',
+8873=>'ON',
+8874=>'ON',
+8875=>'ON',
+8876=>'ON',
+8877=>'ON',
+8878=>'ON',
+8879=>'ON',
+8880=>'ON',
+8881=>'ON',
+8882=>'ON',
+8883=>'ON',
+8884=>'ON',
+8885=>'ON',
+8886=>'ON',
+8887=>'ON',
+8888=>'ON',
+8889=>'ON',
+8890=>'ON',
+8891=>'ON',
+8892=>'ON',
+8893=>'ON',
+8894=>'ON',
+8895=>'ON',
+8896=>'ON',
+8897=>'ON',
+8898=>'ON',
+8899=>'ON',
+8900=>'ON',
+8901=>'ON',
+8902=>'ON',
+8903=>'ON',
+8904=>'ON',
+8905=>'ON',
+8906=>'ON',
+8907=>'ON',
+8908=>'ON',
+8909=>'ON',
+8910=>'ON',
+8911=>'ON',
+8912=>'ON',
+8913=>'ON',
+8914=>'ON',
+8915=>'ON',
+8916=>'ON',
+8917=>'ON',
+8918=>'ON',
+8919=>'ON',
+8920=>'ON',
+8921=>'ON',
+8922=>'ON',
+8923=>'ON',
+8924=>'ON',
+8925=>'ON',
+8926=>'ON',
+8927=>'ON',
+8928=>'ON',
+8929=>'ON',
+8930=>'ON',
+8931=>'ON',
+8932=>'ON',
+8933=>'ON',
+8934=>'ON',
+8935=>'ON',
+8936=>'ON',
+8937=>'ON',
+8938=>'ON',
+8939=>'ON',
+8940=>'ON',
+8941=>'ON',
+8942=>'ON',
+8943=>'ON',
+8944=>'ON',
+8945=>'ON',
+8946=>'ON',
+8947=>'ON',
+8948=>'ON',
+8949=>'ON',
+8950=>'ON',
+8951=>'ON',
+8952=>'ON',
+8953=>'ON',
+8954=>'ON',
+8955=>'ON',
+8956=>'ON',
+8957=>'ON',
+8958=>'ON',
+8959=>'ON',
+8960=>'ON',
+8961=>'ON',
+8962=>'ON',
+8963=>'ON',
+8964=>'ON',
+8965=>'ON',
+8966=>'ON',
+8967=>'ON',
+8968=>'ON',
+8969=>'ON',
+8970=>'ON',
+8971=>'ON',
+8972=>'ON',
+8973=>'ON',
+8974=>'ON',
+8975=>'ON',
+8976=>'ON',
+8977=>'ON',
+8978=>'ON',
+8979=>'ON',
+8980=>'ON',
+8981=>'ON',
+8982=>'ON',
+8983=>'ON',
+8984=>'ON',
+8985=>'ON',
+8986=>'ON',
+8987=>'ON',
+8988=>'ON',
+8989=>'ON',
+8990=>'ON',
+8991=>'ON',
+8992=>'ON',
+8993=>'ON',
+8994=>'ON',
+8995=>'ON',
+8996=>'ON',
+8997=>'ON',
+8998=>'ON',
+8999=>'ON',
+9000=>'ON',
+9001=>'ON',
+9002=>'ON',
+9003=>'ON',
+9004=>'ON',
+9005=>'ON',
+9006=>'ON',
+9007=>'ON',
+9008=>'ON',
+9009=>'ON',
+9010=>'ON',
+9011=>'ON',
+9012=>'ON',
+9013=>'ON',
+9014=>'L',
+9015=>'L',
+9016=>'L',
+9017=>'L',
+9018=>'L',
+9019=>'L',
+9020=>'L',
+9021=>'L',
+9022=>'L',
+9023=>'L',
+9024=>'L',
+9025=>'L',
+9026=>'L',
+9027=>'L',
+9028=>'L',
+9029=>'L',
+9030=>'L',
+9031=>'L',
+9032=>'L',
+9033=>'L',
+9034=>'L',
+9035=>'L',
+9036=>'L',
+9037=>'L',
+9038=>'L',
+9039=>'L',
+9040=>'L',
+9041=>'L',
+9042=>'L',
+9043=>'L',
+9044=>'L',
+9045=>'L',
+9046=>'L',
+9047=>'L',
+9048=>'L',
+9049=>'L',
+9050=>'L',
+9051=>'L',
+9052=>'L',
+9053=>'L',
+9054=>'L',
+9055=>'L',
+9056=>'L',
+9057=>'L',
+9058=>'L',
+9059=>'L',
+9060=>'L',
+9061=>'L',
+9062=>'L',
+9063=>'L',
+9064=>'L',
+9065=>'L',
+9066=>'L',
+9067=>'L',
+9068=>'L',
+9069=>'L',
+9070=>'L',
+9071=>'L',
+9072=>'L',
+9073=>'L',
+9074=>'L',
+9075=>'L',
+9076=>'L',
+9077=>'L',
+9078=>'L',
+9079=>'L',
+9080=>'L',
+9081=>'L',
+9082=>'L',
+9083=>'ON',
+9084=>'ON',
+9085=>'ON',
+9086=>'ON',
+9087=>'ON',
+9088=>'ON',
+9089=>'ON',
+9090=>'ON',
+9091=>'ON',
+9092=>'ON',
+9093=>'ON',
+9094=>'ON',
+9095=>'ON',
+9096=>'ON',
+9097=>'ON',
+9098=>'ON',
+9099=>'ON',
+9100=>'ON',
+9101=>'ON',
+9102=>'ON',
+9103=>'ON',
+9104=>'ON',
+9105=>'ON',
+9106=>'ON',
+9107=>'ON',
+9108=>'ON',
+9109=>'L',
+9110=>'ON',
+9111=>'ON',
+9112=>'ON',
+9113=>'ON',
+9114=>'ON',
+9115=>'ON',
+9116=>'ON',
+9117=>'ON',
+9118=>'ON',
+9119=>'ON',
+9120=>'ON',
+9121=>'ON',
+9122=>'ON',
+9123=>'ON',
+9124=>'ON',
+9125=>'ON',
+9126=>'ON',
+9127=>'ON',
+9128=>'ON',
+9129=>'ON',
+9130=>'ON',
+9131=>'ON',
+9132=>'ON',
+9133=>'ON',
+9134=>'ON',
+9135=>'ON',
+9136=>'ON',
+9137=>'ON',
+9138=>'ON',
+9139=>'ON',
+9140=>'ON',
+9141=>'ON',
+9142=>'ON',
+9143=>'ON',
+9144=>'ON',
+9145=>'ON',
+9146=>'ON',
+9147=>'ON',
+9148=>'ON',
+9149=>'ON',
+9150=>'ON',
+9151=>'ON',
+9152=>'ON',
+9153=>'ON',
+9154=>'ON',
+9155=>'ON',
+9156=>'ON',
+9157=>'ON',
+9158=>'ON',
+9159=>'ON',
+9160=>'ON',
+9161=>'ON',
+9162=>'ON',
+9163=>'ON',
+9164=>'ON',
+9165=>'ON',
+9166=>'ON',
+9167=>'ON',
+9168=>'ON',
+9169=>'ON',
+9170=>'ON',
+9171=>'ON',
+9172=>'ON',
+9173=>'ON',
+9174=>'ON',
+9175=>'ON',
+9176=>'ON',
+9177=>'ON',
+9178=>'ON',
+9179=>'ON',
+9180=>'ON',
+9181=>'ON',
+9182=>'ON',
+9183=>'ON',
+9184=>'ON',
+9185=>'ON',
+9186=>'ON',
+9187=>'ON',
+9188=>'ON',
+9189=>'ON',
+9190=>'ON',
+9191=>'ON',
+9216=>'ON',
+9217=>'ON',
+9218=>'ON',
+9219=>'ON',
+9220=>'ON',
+9221=>'ON',
+9222=>'ON',
+9223=>'ON',
+9224=>'ON',
+9225=>'ON',
+9226=>'ON',
+9227=>'ON',
+9228=>'ON',
+9229=>'ON',
+9230=>'ON',
+9231=>'ON',
+9232=>'ON',
+9233=>'ON',
+9234=>'ON',
+9235=>'ON',
+9236=>'ON',
+9237=>'ON',
+9238=>'ON',
+9239=>'ON',
+9240=>'ON',
+9241=>'ON',
+9242=>'ON',
+9243=>'ON',
+9244=>'ON',
+9245=>'ON',
+9246=>'ON',
+9247=>'ON',
+9248=>'ON',
+9249=>'ON',
+9250=>'ON',
+9251=>'ON',
+9252=>'ON',
+9253=>'ON',
+9254=>'ON',
+9280=>'ON',
+9281=>'ON',
+9282=>'ON',
+9283=>'ON',
+9284=>'ON',
+9285=>'ON',
+9286=>'ON',
+9287=>'ON',
+9288=>'ON',
+9289=>'ON',
+9290=>'ON',
+9312=>'ON',
+9313=>'ON',
+9314=>'ON',
+9315=>'ON',
+9316=>'ON',
+9317=>'ON',
+9318=>'ON',
+9319=>'ON',
+9320=>'ON',
+9321=>'ON',
+9322=>'ON',
+9323=>'ON',
+9324=>'ON',
+9325=>'ON',
+9326=>'ON',
+9327=>'ON',
+9328=>'ON',
+9329=>'ON',
+9330=>'ON',
+9331=>'ON',
+9332=>'ON',
+9333=>'ON',
+9334=>'ON',
+9335=>'ON',
+9336=>'ON',
+9337=>'ON',
+9338=>'ON',
+9339=>'ON',
+9340=>'ON',
+9341=>'ON',
+9342=>'ON',
+9343=>'ON',
+9344=>'ON',
+9345=>'ON',
+9346=>'ON',
+9347=>'ON',
+9348=>'ON',
+9349=>'ON',
+9350=>'ON',
+9351=>'ON',
+9352=>'EN',
+9353=>'EN',
+9354=>'EN',
+9355=>'EN',
+9356=>'EN',
+9357=>'EN',
+9358=>'EN',
+9359=>'EN',
+9360=>'EN',
+9361=>'EN',
+9362=>'EN',
+9363=>'EN',
+9364=>'EN',
+9365=>'EN',
+9366=>'EN',
+9367=>'EN',
+9368=>'EN',
+9369=>'EN',
+9370=>'EN',
+9371=>'EN',
+9372=>'L',
+9373=>'L',
+9374=>'L',
+9375=>'L',
+9376=>'L',
+9377=>'L',
+9378=>'L',
+9379=>'L',
+9380=>'L',
+9381=>'L',
+9382=>'L',
+9383=>'L',
+9384=>'L',
+9385=>'L',
+9386=>'L',
+9387=>'L',
+9388=>'L',
+9389=>'L',
+9390=>'L',
+9391=>'L',
+9392=>'L',
+9393=>'L',
+9394=>'L',
+9395=>'L',
+9396=>'L',
+9397=>'L',
+9398=>'L',
+9399=>'L',
+9400=>'L',
+9401=>'L',
+9402=>'L',
+9403=>'L',
+9404=>'L',
+9405=>'L',
+9406=>'L',
+9407=>'L',
+9408=>'L',
+9409=>'L',
+9410=>'L',
+9411=>'L',
+9412=>'L',
+9413=>'L',
+9414=>'L',
+9415=>'L',
+9416=>'L',
+9417=>'L',
+9418=>'L',
+9419=>'L',
+9420=>'L',
+9421=>'L',
+9422=>'L',
+9423=>'L',
+9424=>'L',
+9425=>'L',
+9426=>'L',
+9427=>'L',
+9428=>'L',
+9429=>'L',
+9430=>'L',
+9431=>'L',
+9432=>'L',
+9433=>'L',
+9434=>'L',
+9435=>'L',
+9436=>'L',
+9437=>'L',
+9438=>'L',
+9439=>'L',
+9440=>'L',
+9441=>'L',
+9442=>'L',
+9443=>'L',
+9444=>'L',
+9445=>'L',
+9446=>'L',
+9447=>'L',
+9448=>'L',
+9449=>'L',
+9450=>'ON',
+9451=>'ON',
+9452=>'ON',
+9453=>'ON',
+9454=>'ON',
+9455=>'ON',
+9456=>'ON',
+9457=>'ON',
+9458=>'ON',
+9459=>'ON',
+9460=>'ON',
+9461=>'ON',
+9462=>'ON',
+9463=>'ON',
+9464=>'ON',
+9465=>'ON',
+9466=>'ON',
+9467=>'ON',
+9468=>'ON',
+9469=>'ON',
+9470=>'ON',
+9471=>'ON',
+9472=>'ON',
+9473=>'ON',
+9474=>'ON',
+9475=>'ON',
+9476=>'ON',
+9477=>'ON',
+9478=>'ON',
+9479=>'ON',
+9480=>'ON',
+9481=>'ON',
+9482=>'ON',
+9483=>'ON',
+9484=>'ON',
+9485=>'ON',
+9486=>'ON',
+9487=>'ON',
+9488=>'ON',
+9489=>'ON',
+9490=>'ON',
+9491=>'ON',
+9492=>'ON',
+9493=>'ON',
+9494=>'ON',
+9495=>'ON',
+9496=>'ON',
+9497=>'ON',
+9498=>'ON',
+9499=>'ON',
+9500=>'ON',
+9501=>'ON',
+9502=>'ON',
+9503=>'ON',
+9504=>'ON',
+9505=>'ON',
+9506=>'ON',
+9507=>'ON',
+9508=>'ON',
+9509=>'ON',
+9510=>'ON',
+9511=>'ON',
+9512=>'ON',
+9513=>'ON',
+9514=>'ON',
+9515=>'ON',
+9516=>'ON',
+9517=>'ON',
+9518=>'ON',
+9519=>'ON',
+9520=>'ON',
+9521=>'ON',
+9522=>'ON',
+9523=>'ON',
+9524=>'ON',
+9525=>'ON',
+9526=>'ON',
+9527=>'ON',
+9528=>'ON',
+9529=>'ON',
+9530=>'ON',
+9531=>'ON',
+9532=>'ON',
+9533=>'ON',
+9534=>'ON',
+9535=>'ON',
+9536=>'ON',
+9537=>'ON',
+9538=>'ON',
+9539=>'ON',
+9540=>'ON',
+9541=>'ON',
+9542=>'ON',
+9543=>'ON',
+9544=>'ON',
+9545=>'ON',
+9546=>'ON',
+9547=>'ON',
+9548=>'ON',
+9549=>'ON',
+9550=>'ON',
+9551=>'ON',
+9552=>'ON',
+9553=>'ON',
+9554=>'ON',
+9555=>'ON',
+9556=>'ON',
+9557=>'ON',
+9558=>'ON',
+9559=>'ON',
+9560=>'ON',
+9561=>'ON',
+9562=>'ON',
+9563=>'ON',
+9564=>'ON',
+9565=>'ON',
+9566=>'ON',
+9567=>'ON',
+9568=>'ON',
+9569=>'ON',
+9570=>'ON',
+9571=>'ON',
+9572=>'ON',
+9573=>'ON',
+9574=>'ON',
+9575=>'ON',
+9576=>'ON',
+9577=>'ON',
+9578=>'ON',
+9579=>'ON',
+9580=>'ON',
+9581=>'ON',
+9582=>'ON',
+9583=>'ON',
+9584=>'ON',
+9585=>'ON',
+9586=>'ON',
+9587=>'ON',
+9588=>'ON',
+9589=>'ON',
+9590=>'ON',
+9591=>'ON',
+9592=>'ON',
+9593=>'ON',
+9594=>'ON',
+9595=>'ON',
+9596=>'ON',
+9597=>'ON',
+9598=>'ON',
+9599=>'ON',
+9600=>'ON',
+9601=>'ON',
+9602=>'ON',
+9603=>'ON',
+9604=>'ON',
+9605=>'ON',
+9606=>'ON',
+9607=>'ON',
+9608=>'ON',
+9609=>'ON',
+9610=>'ON',
+9611=>'ON',
+9612=>'ON',
+9613=>'ON',
+9614=>'ON',
+9615=>'ON',
+9616=>'ON',
+9617=>'ON',
+9618=>'ON',
+9619=>'ON',
+9620=>'ON',
+9621=>'ON',
+9622=>'ON',
+9623=>'ON',
+9624=>'ON',
+9625=>'ON',
+9626=>'ON',
+9627=>'ON',
+9628=>'ON',
+9629=>'ON',
+9630=>'ON',
+9631=>'ON',
+9632=>'ON',
+9633=>'ON',
+9634=>'ON',
+9635=>'ON',
+9636=>'ON',
+9637=>'ON',
+9638=>'ON',
+9639=>'ON',
+9640=>'ON',
+9641=>'ON',
+9642=>'ON',
+9643=>'ON',
+9644=>'ON',
+9645=>'ON',
+9646=>'ON',
+9647=>'ON',
+9648=>'ON',
+9649=>'ON',
+9650=>'ON',
+9651=>'ON',
+9652=>'ON',
+9653=>'ON',
+9654=>'ON',
+9655=>'ON',
+9656=>'ON',
+9657=>'ON',
+9658=>'ON',
+9659=>'ON',
+9660=>'ON',
+9661=>'ON',
+9662=>'ON',
+9663=>'ON',
+9664=>'ON',
+9665=>'ON',
+9666=>'ON',
+9667=>'ON',
+9668=>'ON',
+9669=>'ON',
+9670=>'ON',
+9671=>'ON',
+9672=>'ON',
+9673=>'ON',
+9674=>'ON',
+9675=>'ON',
+9676=>'ON',
+9677=>'ON',
+9678=>'ON',
+9679=>'ON',
+9680=>'ON',
+9681=>'ON',
+9682=>'ON',
+9683=>'ON',
+9684=>'ON',
+9685=>'ON',
+9686=>'ON',
+9687=>'ON',
+9688=>'ON',
+9689=>'ON',
+9690=>'ON',
+9691=>'ON',
+9692=>'ON',
+9693=>'ON',
+9694=>'ON',
+9695=>'ON',
+9696=>'ON',
+9697=>'ON',
+9698=>'ON',
+9699=>'ON',
+9700=>'ON',
+9701=>'ON',
+9702=>'ON',
+9703=>'ON',
+9704=>'ON',
+9705=>'ON',
+9706=>'ON',
+9707=>'ON',
+9708=>'ON',
+9709=>'ON',
+9710=>'ON',
+9711=>'ON',
+9712=>'ON',
+9713=>'ON',
+9714=>'ON',
+9715=>'ON',
+9716=>'ON',
+9717=>'ON',
+9718=>'ON',
+9719=>'ON',
+9720=>'ON',
+9721=>'ON',
+9722=>'ON',
+9723=>'ON',
+9724=>'ON',
+9725=>'ON',
+9726=>'ON',
+9727=>'ON',
+9728=>'ON',
+9729=>'ON',
+9730=>'ON',
+9731=>'ON',
+9732=>'ON',
+9733=>'ON',
+9734=>'ON',
+9735=>'ON',
+9736=>'ON',
+9737=>'ON',
+9738=>'ON',
+9739=>'ON',
+9740=>'ON',
+9741=>'ON',
+9742=>'ON',
+9743=>'ON',
+9744=>'ON',
+9745=>'ON',
+9746=>'ON',
+9747=>'ON',
+9748=>'ON',
+9749=>'ON',
+9750=>'ON',
+9751=>'ON',
+9752=>'ON',
+9753=>'ON',
+9754=>'ON',
+9755=>'ON',
+9756=>'ON',
+9757=>'ON',
+9758=>'ON',
+9759=>'ON',
+9760=>'ON',
+9761=>'ON',
+9762=>'ON',
+9763=>'ON',
+9764=>'ON',
+9765=>'ON',
+9766=>'ON',
+9767=>'ON',
+9768=>'ON',
+9769=>'ON',
+9770=>'ON',
+9771=>'ON',
+9772=>'ON',
+9773=>'ON',
+9774=>'ON',
+9775=>'ON',
+9776=>'ON',
+9777=>'ON',
+9778=>'ON',
+9779=>'ON',
+9780=>'ON',
+9781=>'ON',
+9782=>'ON',
+9783=>'ON',
+9784=>'ON',
+9785=>'ON',
+9786=>'ON',
+9787=>'ON',
+9788=>'ON',
+9789=>'ON',
+9790=>'ON',
+9791=>'ON',
+9792=>'ON',
+9793=>'ON',
+9794=>'ON',
+9795=>'ON',
+9796=>'ON',
+9797=>'ON',
+9798=>'ON',
+9799=>'ON',
+9800=>'ON',
+9801=>'ON',
+9802=>'ON',
+9803=>'ON',
+9804=>'ON',
+9805=>'ON',
+9806=>'ON',
+9807=>'ON',
+9808=>'ON',
+9809=>'ON',
+9810=>'ON',
+9811=>'ON',
+9812=>'ON',
+9813=>'ON',
+9814=>'ON',
+9815=>'ON',
+9816=>'ON',
+9817=>'ON',
+9818=>'ON',
+9819=>'ON',
+9820=>'ON',
+9821=>'ON',
+9822=>'ON',
+9823=>'ON',
+9824=>'ON',
+9825=>'ON',
+9826=>'ON',
+9827=>'ON',
+9828=>'ON',
+9829=>'ON',
+9830=>'ON',
+9831=>'ON',
+9832=>'ON',
+9833=>'ON',
+9834=>'ON',
+9835=>'ON',
+9836=>'ON',
+9837=>'ON',
+9838=>'ON',
+9839=>'ON',
+9840=>'ON',
+9841=>'ON',
+9842=>'ON',
+9843=>'ON',
+9844=>'ON',
+9845=>'ON',
+9846=>'ON',
+9847=>'ON',
+9848=>'ON',
+9849=>'ON',
+9850=>'ON',
+9851=>'ON',
+9852=>'ON',
+9853=>'ON',
+9854=>'ON',
+9855=>'ON',
+9856=>'ON',
+9857=>'ON',
+9858=>'ON',
+9859=>'ON',
+9860=>'ON',
+9861=>'ON',
+9862=>'ON',
+9863=>'ON',
+9864=>'ON',
+9865=>'ON',
+9866=>'ON',
+9867=>'ON',
+9868=>'ON',
+9869=>'ON',
+9870=>'ON',
+9871=>'ON',
+9872=>'ON',
+9873=>'ON',
+9874=>'ON',
+9875=>'ON',
+9876=>'ON',
+9877=>'ON',
+9878=>'ON',
+9879=>'ON',
+9880=>'ON',
+9881=>'ON',
+9882=>'ON',
+9883=>'ON',
+9884=>'ON',
+9888=>'ON',
+9889=>'ON',
+9890=>'ON',
+9891=>'ON',
+9892=>'ON',
+9893=>'ON',
+9894=>'ON',
+9895=>'ON',
+9896=>'ON',
+9897=>'ON',
+9898=>'ON',
+9899=>'ON',
+9900=>'L',
+9901=>'ON',
+9902=>'ON',
+9903=>'ON',
+9904=>'ON',
+9905=>'ON',
+9906=>'ON',
+9985=>'ON',
+9986=>'ON',
+9987=>'ON',
+9988=>'ON',
+9990=>'ON',
+9991=>'ON',
+9992=>'ON',
+9993=>'ON',
+9996=>'ON',
+9997=>'ON',
+9998=>'ON',
+9999=>'ON',
+10000=>'ON',
+10001=>'ON',
+10002=>'ON',
+10003=>'ON',
+10004=>'ON',
+10005=>'ON',
+10006=>'ON',
+10007=>'ON',
+10008=>'ON',
+10009=>'ON',
+10010=>'ON',
+10011=>'ON',
+10012=>'ON',
+10013=>'ON',
+10014=>'ON',
+10015=>'ON',
+10016=>'ON',
+10017=>'ON',
+10018=>'ON',
+10019=>'ON',
+10020=>'ON',
+10021=>'ON',
+10022=>'ON',
+10023=>'ON',
+10025=>'ON',
+10026=>'ON',
+10027=>'ON',
+10028=>'ON',
+10029=>'ON',
+10030=>'ON',
+10031=>'ON',
+10032=>'ON',
+10033=>'ON',
+10034=>'ON',
+10035=>'ON',
+10036=>'ON',
+10037=>'ON',
+10038=>'ON',
+10039=>'ON',
+10040=>'ON',
+10041=>'ON',
+10042=>'ON',
+10043=>'ON',
+10044=>'ON',
+10045=>'ON',
+10046=>'ON',
+10047=>'ON',
+10048=>'ON',
+10049=>'ON',
+10050=>'ON',
+10051=>'ON',
+10052=>'ON',
+10053=>'ON',
+10054=>'ON',
+10055=>'ON',
+10056=>'ON',
+10057=>'ON',
+10058=>'ON',
+10059=>'ON',
+10061=>'ON',
+10063=>'ON',
+10064=>'ON',
+10065=>'ON',
+10066=>'ON',
+10070=>'ON',
+10072=>'ON',
+10073=>'ON',
+10074=>'ON',
+10075=>'ON',
+10076=>'ON',
+10077=>'ON',
+10078=>'ON',
+10081=>'ON',
+10082=>'ON',
+10083=>'ON',
+10084=>'ON',
+10085=>'ON',
+10086=>'ON',
+10087=>'ON',
+10088=>'ON',
+10089=>'ON',
+10090=>'ON',
+10091=>'ON',
+10092=>'ON',
+10093=>'ON',
+10094=>'ON',
+10095=>'ON',
+10096=>'ON',
+10097=>'ON',
+10098=>'ON',
+10099=>'ON',
+10100=>'ON',
+10101=>'ON',
+10102=>'ON',
+10103=>'ON',
+10104=>'ON',
+10105=>'ON',
+10106=>'ON',
+10107=>'ON',
+10108=>'ON',
+10109=>'ON',
+10110=>'ON',
+10111=>'ON',
+10112=>'ON',
+10113=>'ON',
+10114=>'ON',
+10115=>'ON',
+10116=>'ON',
+10117=>'ON',
+10118=>'ON',
+10119=>'ON',
+10120=>'ON',
+10121=>'ON',
+10122=>'ON',
+10123=>'ON',
+10124=>'ON',
+10125=>'ON',
+10126=>'ON',
+10127=>'ON',
+10128=>'ON',
+10129=>'ON',
+10130=>'ON',
+10131=>'ON',
+10132=>'ON',
+10136=>'ON',
+10137=>'ON',
+10138=>'ON',
+10139=>'ON',
+10140=>'ON',
+10141=>'ON',
+10142=>'ON',
+10143=>'ON',
+10144=>'ON',
+10145=>'ON',
+10146=>'ON',
+10147=>'ON',
+10148=>'ON',
+10149=>'ON',
+10150=>'ON',
+10151=>'ON',
+10152=>'ON',
+10153=>'ON',
+10154=>'ON',
+10155=>'ON',
+10156=>'ON',
+10157=>'ON',
+10158=>'ON',
+10159=>'ON',
+10161=>'ON',
+10162=>'ON',
+10163=>'ON',
+10164=>'ON',
+10165=>'ON',
+10166=>'ON',
+10167=>'ON',
+10168=>'ON',
+10169=>'ON',
+10170=>'ON',
+10171=>'ON',
+10172=>'ON',
+10173=>'ON',
+10174=>'ON',
+10176=>'ON',
+10177=>'ON',
+10178=>'ON',
+10179=>'ON',
+10180=>'ON',
+10181=>'ON',
+10182=>'ON',
+10183=>'ON',
+10184=>'ON',
+10185=>'ON',
+10186=>'ON',
+10192=>'ON',
+10193=>'ON',
+10194=>'ON',
+10195=>'ON',
+10196=>'ON',
+10197=>'ON',
+10198=>'ON',
+10199=>'ON',
+10200=>'ON',
+10201=>'ON',
+10202=>'ON',
+10203=>'ON',
+10204=>'ON',
+10205=>'ON',
+10206=>'ON',
+10207=>'ON',
+10208=>'ON',
+10209=>'ON',
+10210=>'ON',
+10211=>'ON',
+10212=>'ON',
+10213=>'ON',
+10214=>'ON',
+10215=>'ON',
+10216=>'ON',
+10217=>'ON',
+10218=>'ON',
+10219=>'ON',
+10224=>'ON',
+10225=>'ON',
+10226=>'ON',
+10227=>'ON',
+10228=>'ON',
+10229=>'ON',
+10230=>'ON',
+10231=>'ON',
+10232=>'ON',
+10233=>'ON',
+10234=>'ON',
+10235=>'ON',
+10236=>'ON',
+10237=>'ON',
+10238=>'ON',
+10239=>'ON',
+10240=>'L',
+10241=>'L',
+10242=>'L',
+10243=>'L',
+10244=>'L',
+10245=>'L',
+10246=>'L',
+10247=>'L',
+10248=>'L',
+10249=>'L',
+10250=>'L',
+10251=>'L',
+10252=>'L',
+10253=>'L',
+10254=>'L',
+10255=>'L',
+10256=>'L',
+10257=>'L',
+10258=>'L',
+10259=>'L',
+10260=>'L',
+10261=>'L',
+10262=>'L',
+10263=>'L',
+10264=>'L',
+10265=>'L',
+10266=>'L',
+10267=>'L',
+10268=>'L',
+10269=>'L',
+10270=>'L',
+10271=>'L',
+10272=>'L',
+10273=>'L',
+10274=>'L',
+10275=>'L',
+10276=>'L',
+10277=>'L',
+10278=>'L',
+10279=>'L',
+10280=>'L',
+10281=>'L',
+10282=>'L',
+10283=>'L',
+10284=>'L',
+10285=>'L',
+10286=>'L',
+10287=>'L',
+10288=>'L',
+10289=>'L',
+10290=>'L',
+10291=>'L',
+10292=>'L',
+10293=>'L',
+10294=>'L',
+10295=>'L',
+10296=>'L',
+10297=>'L',
+10298=>'L',
+10299=>'L',
+10300=>'L',
+10301=>'L',
+10302=>'L',
+10303=>'L',
+10304=>'L',
+10305=>'L',
+10306=>'L',
+10307=>'L',
+10308=>'L',
+10309=>'L',
+10310=>'L',
+10311=>'L',
+10312=>'L',
+10313=>'L',
+10314=>'L',
+10315=>'L',
+10316=>'L',
+10317=>'L',
+10318=>'L',
+10319=>'L',
+10320=>'L',
+10321=>'L',
+10322=>'L',
+10323=>'L',
+10324=>'L',
+10325=>'L',
+10326=>'L',
+10327=>'L',
+10328=>'L',
+10329=>'L',
+10330=>'L',
+10331=>'L',
+10332=>'L',
+10333=>'L',
+10334=>'L',
+10335=>'L',
+10336=>'L',
+10337=>'L',
+10338=>'L',
+10339=>'L',
+10340=>'L',
+10341=>'L',
+10342=>'L',
+10343=>'L',
+10344=>'L',
+10345=>'L',
+10346=>'L',
+10347=>'L',
+10348=>'L',
+10349=>'L',
+10350=>'L',
+10351=>'L',
+10352=>'L',
+10353=>'L',
+10354=>'L',
+10355=>'L',
+10356=>'L',
+10357=>'L',
+10358=>'L',
+10359=>'L',
+10360=>'L',
+10361=>'L',
+10362=>'L',
+10363=>'L',
+10364=>'L',
+10365=>'L',
+10366=>'L',
+10367=>'L',
+10368=>'L',
+10369=>'L',
+10370=>'L',
+10371=>'L',
+10372=>'L',
+10373=>'L',
+10374=>'L',
+10375=>'L',
+10376=>'L',
+10377=>'L',
+10378=>'L',
+10379=>'L',
+10380=>'L',
+10381=>'L',
+10382=>'L',
+10383=>'L',
+10384=>'L',
+10385=>'L',
+10386=>'L',
+10387=>'L',
+10388=>'L',
+10389=>'L',
+10390=>'L',
+10391=>'L',
+10392=>'L',
+10393=>'L',
+10394=>'L',
+10395=>'L',
+10396=>'L',
+10397=>'L',
+10398=>'L',
+10399=>'L',
+10400=>'L',
+10401=>'L',
+10402=>'L',
+10403=>'L',
+10404=>'L',
+10405=>'L',
+10406=>'L',
+10407=>'L',
+10408=>'L',
+10409=>'L',
+10410=>'L',
+10411=>'L',
+10412=>'L',
+10413=>'L',
+10414=>'L',
+10415=>'L',
+10416=>'L',
+10417=>'L',
+10418=>'L',
+10419=>'L',
+10420=>'L',
+10421=>'L',
+10422=>'L',
+10423=>'L',
+10424=>'L',
+10425=>'L',
+10426=>'L',
+10427=>'L',
+10428=>'L',
+10429=>'L',
+10430=>'L',
+10431=>'L',
+10432=>'L',
+10433=>'L',
+10434=>'L',
+10435=>'L',
+10436=>'L',
+10437=>'L',
+10438=>'L',
+10439=>'L',
+10440=>'L',
+10441=>'L',
+10442=>'L',
+10443=>'L',
+10444=>'L',
+10445=>'L',
+10446=>'L',
+10447=>'L',
+10448=>'L',
+10449=>'L',
+10450=>'L',
+10451=>'L',
+10452=>'L',
+10453=>'L',
+10454=>'L',
+10455=>'L',
+10456=>'L',
+10457=>'L',
+10458=>'L',
+10459=>'L',
+10460=>'L',
+10461=>'L',
+10462=>'L',
+10463=>'L',
+10464=>'L',
+10465=>'L',
+10466=>'L',
+10467=>'L',
+10468=>'L',
+10469=>'L',
+10470=>'L',
+10471=>'L',
+10472=>'L',
+10473=>'L',
+10474=>'L',
+10475=>'L',
+10476=>'L',
+10477=>'L',
+10478=>'L',
+10479=>'L',
+10480=>'L',
+10481=>'L',
+10482=>'L',
+10483=>'L',
+10484=>'L',
+10485=>'L',
+10486=>'L',
+10487=>'L',
+10488=>'L',
+10489=>'L',
+10490=>'L',
+10491=>'L',
+10492=>'L',
+10493=>'L',
+10494=>'L',
+10495=>'L',
+10496=>'ON',
+10497=>'ON',
+10498=>'ON',
+10499=>'ON',
+10500=>'ON',
+10501=>'ON',
+10502=>'ON',
+10503=>'ON',
+10504=>'ON',
+10505=>'ON',
+10506=>'ON',
+10507=>'ON',
+10508=>'ON',
+10509=>'ON',
+10510=>'ON',
+10511=>'ON',
+10512=>'ON',
+10513=>'ON',
+10514=>'ON',
+10515=>'ON',
+10516=>'ON',
+10517=>'ON',
+10518=>'ON',
+10519=>'ON',
+10520=>'ON',
+10521=>'ON',
+10522=>'ON',
+10523=>'ON',
+10524=>'ON',
+10525=>'ON',
+10526=>'ON',
+10527=>'ON',
+10528=>'ON',
+10529=>'ON',
+10530=>'ON',
+10531=>'ON',
+10532=>'ON',
+10533=>'ON',
+10534=>'ON',
+10535=>'ON',
+10536=>'ON',
+10537=>'ON',
+10538=>'ON',
+10539=>'ON',
+10540=>'ON',
+10541=>'ON',
+10542=>'ON',
+10543=>'ON',
+10544=>'ON',
+10545=>'ON',
+10546=>'ON',
+10547=>'ON',
+10548=>'ON',
+10549=>'ON',
+10550=>'ON',
+10551=>'ON',
+10552=>'ON',
+10553=>'ON',
+10554=>'ON',
+10555=>'ON',
+10556=>'ON',
+10557=>'ON',
+10558=>'ON',
+10559=>'ON',
+10560=>'ON',
+10561=>'ON',
+10562=>'ON',
+10563=>'ON',
+10564=>'ON',
+10565=>'ON',
+10566=>'ON',
+10567=>'ON',
+10568=>'ON',
+10569=>'ON',
+10570=>'ON',
+10571=>'ON',
+10572=>'ON',
+10573=>'ON',
+10574=>'ON',
+10575=>'ON',
+10576=>'ON',
+10577=>'ON',
+10578=>'ON',
+10579=>'ON',
+10580=>'ON',
+10581=>'ON',
+10582=>'ON',
+10583=>'ON',
+10584=>'ON',
+10585=>'ON',
+10586=>'ON',
+10587=>'ON',
+10588=>'ON',
+10589=>'ON',
+10590=>'ON',
+10591=>'ON',
+10592=>'ON',
+10593=>'ON',
+10594=>'ON',
+10595=>'ON',
+10596=>'ON',
+10597=>'ON',
+10598=>'ON',
+10599=>'ON',
+10600=>'ON',
+10601=>'ON',
+10602=>'ON',
+10603=>'ON',
+10604=>'ON',
+10605=>'ON',
+10606=>'ON',
+10607=>'ON',
+10608=>'ON',
+10609=>'ON',
+10610=>'ON',
+10611=>'ON',
+10612=>'ON',
+10613=>'ON',
+10614=>'ON',
+10615=>'ON',
+10616=>'ON',
+10617=>'ON',
+10618=>'ON',
+10619=>'ON',
+10620=>'ON',
+10621=>'ON',
+10622=>'ON',
+10623=>'ON',
+10624=>'ON',
+10625=>'ON',
+10626=>'ON',
+10627=>'ON',
+10628=>'ON',
+10629=>'ON',
+10630=>'ON',
+10631=>'ON',
+10632=>'ON',
+10633=>'ON',
+10634=>'ON',
+10635=>'ON',
+10636=>'ON',
+10637=>'ON',
+10638=>'ON',
+10639=>'ON',
+10640=>'ON',
+10641=>'ON',
+10642=>'ON',
+10643=>'ON',
+10644=>'ON',
+10645=>'ON',
+10646=>'ON',
+10647=>'ON',
+10648=>'ON',
+10649=>'ON',
+10650=>'ON',
+10651=>'ON',
+10652=>'ON',
+10653=>'ON',
+10654=>'ON',
+10655=>'ON',
+10656=>'ON',
+10657=>'ON',
+10658=>'ON',
+10659=>'ON',
+10660=>'ON',
+10661=>'ON',
+10662=>'ON',
+10663=>'ON',
+10664=>'ON',
+10665=>'ON',
+10666=>'ON',
+10667=>'ON',
+10668=>'ON',
+10669=>'ON',
+10670=>'ON',
+10671=>'ON',
+10672=>'ON',
+10673=>'ON',
+10674=>'ON',
+10675=>'ON',
+10676=>'ON',
+10677=>'ON',
+10678=>'ON',
+10679=>'ON',
+10680=>'ON',
+10681=>'ON',
+10682=>'ON',
+10683=>'ON',
+10684=>'ON',
+10685=>'ON',
+10686=>'ON',
+10687=>'ON',
+10688=>'ON',
+10689=>'ON',
+10690=>'ON',
+10691=>'ON',
+10692=>'ON',
+10693=>'ON',
+10694=>'ON',
+10695=>'ON',
+10696=>'ON',
+10697=>'ON',
+10698=>'ON',
+10699=>'ON',
+10700=>'ON',
+10701=>'ON',
+10702=>'ON',
+10703=>'ON',
+10704=>'ON',
+10705=>'ON',
+10706=>'ON',
+10707=>'ON',
+10708=>'ON',
+10709=>'ON',
+10710=>'ON',
+10711=>'ON',
+10712=>'ON',
+10713=>'ON',
+10714=>'ON',
+10715=>'ON',
+10716=>'ON',
+10717=>'ON',
+10718=>'ON',
+10719=>'ON',
+10720=>'ON',
+10721=>'ON',
+10722=>'ON',
+10723=>'ON',
+10724=>'ON',
+10725=>'ON',
+10726=>'ON',
+10727=>'ON',
+10728=>'ON',
+10729=>'ON',
+10730=>'ON',
+10731=>'ON',
+10732=>'ON',
+10733=>'ON',
+10734=>'ON',
+10735=>'ON',
+10736=>'ON',
+10737=>'ON',
+10738=>'ON',
+10739=>'ON',
+10740=>'ON',
+10741=>'ON',
+10742=>'ON',
+10743=>'ON',
+10744=>'ON',
+10745=>'ON',
+10746=>'ON',
+10747=>'ON',
+10748=>'ON',
+10749=>'ON',
+10750=>'ON',
+10751=>'ON',
+10752=>'ON',
+10753=>'ON',
+10754=>'ON',
+10755=>'ON',
+10756=>'ON',
+10757=>'ON',
+10758=>'ON',
+10759=>'ON',
+10760=>'ON',
+10761=>'ON',
+10762=>'ON',
+10763=>'ON',
+10764=>'ON',
+10765=>'ON',
+10766=>'ON',
+10767=>'ON',
+10768=>'ON',
+10769=>'ON',
+10770=>'ON',
+10771=>'ON',
+10772=>'ON',
+10773=>'ON',
+10774=>'ON',
+10775=>'ON',
+10776=>'ON',
+10777=>'ON',
+10778=>'ON',
+10779=>'ON',
+10780=>'ON',
+10781=>'ON',
+10782=>'ON',
+10783=>'ON',
+10784=>'ON',
+10785=>'ON',
+10786=>'ON',
+10787=>'ON',
+10788=>'ON',
+10789=>'ON',
+10790=>'ON',
+10791=>'ON',
+10792=>'ON',
+10793=>'ON',
+10794=>'ON',
+10795=>'ON',
+10796=>'ON',
+10797=>'ON',
+10798=>'ON',
+10799=>'ON',
+10800=>'ON',
+10801=>'ON',
+10802=>'ON',
+10803=>'ON',
+10804=>'ON',
+10805=>'ON',
+10806=>'ON',
+10807=>'ON',
+10808=>'ON',
+10809=>'ON',
+10810=>'ON',
+10811=>'ON',
+10812=>'ON',
+10813=>'ON',
+10814=>'ON',
+10815=>'ON',
+10816=>'ON',
+10817=>'ON',
+10818=>'ON',
+10819=>'ON',
+10820=>'ON',
+10821=>'ON',
+10822=>'ON',
+10823=>'ON',
+10824=>'ON',
+10825=>'ON',
+10826=>'ON',
+10827=>'ON',
+10828=>'ON',
+10829=>'ON',
+10830=>'ON',
+10831=>'ON',
+10832=>'ON',
+10833=>'ON',
+10834=>'ON',
+10835=>'ON',
+10836=>'ON',
+10837=>'ON',
+10838=>'ON',
+10839=>'ON',
+10840=>'ON',
+10841=>'ON',
+10842=>'ON',
+10843=>'ON',
+10844=>'ON',
+10845=>'ON',
+10846=>'ON',
+10847=>'ON',
+10848=>'ON',
+10849=>'ON',
+10850=>'ON',
+10851=>'ON',
+10852=>'ON',
+10853=>'ON',
+10854=>'ON',
+10855=>'ON',
+10856=>'ON',
+10857=>'ON',
+10858=>'ON',
+10859=>'ON',
+10860=>'ON',
+10861=>'ON',
+10862=>'ON',
+10863=>'ON',
+10864=>'ON',
+10865=>'ON',
+10866=>'ON',
+10867=>'ON',
+10868=>'ON',
+10869=>'ON',
+10870=>'ON',
+10871=>'ON',
+10872=>'ON',
+10873=>'ON',
+10874=>'ON',
+10875=>'ON',
+10876=>'ON',
+10877=>'ON',
+10878=>'ON',
+10879=>'ON',
+10880=>'ON',
+10881=>'ON',
+10882=>'ON',
+10883=>'ON',
+10884=>'ON',
+10885=>'ON',
+10886=>'ON',
+10887=>'ON',
+10888=>'ON',
+10889=>'ON',
+10890=>'ON',
+10891=>'ON',
+10892=>'ON',
+10893=>'ON',
+10894=>'ON',
+10895=>'ON',
+10896=>'ON',
+10897=>'ON',
+10898=>'ON',
+10899=>'ON',
+10900=>'ON',
+10901=>'ON',
+10902=>'ON',
+10903=>'ON',
+10904=>'ON',
+10905=>'ON',
+10906=>'ON',
+10907=>'ON',
+10908=>'ON',
+10909=>'ON',
+10910=>'ON',
+10911=>'ON',
+10912=>'ON',
+10913=>'ON',
+10914=>'ON',
+10915=>'ON',
+10916=>'ON',
+10917=>'ON',
+10918=>'ON',
+10919=>'ON',
+10920=>'ON',
+10921=>'ON',
+10922=>'ON',
+10923=>'ON',
+10924=>'ON',
+10925=>'ON',
+10926=>'ON',
+10927=>'ON',
+10928=>'ON',
+10929=>'ON',
+10930=>'ON',
+10931=>'ON',
+10932=>'ON',
+10933=>'ON',
+10934=>'ON',
+10935=>'ON',
+10936=>'ON',
+10937=>'ON',
+10938=>'ON',
+10939=>'ON',
+10940=>'ON',
+10941=>'ON',
+10942=>'ON',
+10943=>'ON',
+10944=>'ON',
+10945=>'ON',
+10946=>'ON',
+10947=>'ON',
+10948=>'ON',
+10949=>'ON',
+10950=>'ON',
+10951=>'ON',
+10952=>'ON',
+10953=>'ON',
+10954=>'ON',
+10955=>'ON',
+10956=>'ON',
+10957=>'ON',
+10958=>'ON',
+10959=>'ON',
+10960=>'ON',
+10961=>'ON',
+10962=>'ON',
+10963=>'ON',
+10964=>'ON',
+10965=>'ON',
+10966=>'ON',
+10967=>'ON',
+10968=>'ON',
+10969=>'ON',
+10970=>'ON',
+10971=>'ON',
+10972=>'ON',
+10973=>'ON',
+10974=>'ON',
+10975=>'ON',
+10976=>'ON',
+10977=>'ON',
+10978=>'ON',
+10979=>'ON',
+10980=>'ON',
+10981=>'ON',
+10982=>'ON',
+10983=>'ON',
+10984=>'ON',
+10985=>'ON',
+10986=>'ON',
+10987=>'ON',
+10988=>'ON',
+10989=>'ON',
+10990=>'ON',
+10991=>'ON',
+10992=>'ON',
+10993=>'ON',
+10994=>'ON',
+10995=>'ON',
+10996=>'ON',
+10997=>'ON',
+10998=>'ON',
+10999=>'ON',
+11000=>'ON',
+11001=>'ON',
+11002=>'ON',
+11003=>'ON',
+11004=>'ON',
+11005=>'ON',
+11006=>'ON',
+11007=>'ON',
+11008=>'ON',
+11009=>'ON',
+11010=>'ON',
+11011=>'ON',
+11012=>'ON',
+11013=>'ON',
+11014=>'ON',
+11015=>'ON',
+11016=>'ON',
+11017=>'ON',
+11018=>'ON',
+11019=>'ON',
+11020=>'ON',
+11021=>'ON',
+11022=>'ON',
+11023=>'ON',
+11024=>'ON',
+11025=>'ON',
+11026=>'ON',
+11027=>'ON',
+11028=>'ON',
+11029=>'ON',
+11030=>'ON',
+11031=>'ON',
+11032=>'ON',
+11033=>'ON',
+11034=>'ON',
+11040=>'ON',
+11041=>'ON',
+11042=>'ON',
+11043=>'ON',
+11264=>'L',
+11265=>'L',
+11266=>'L',
+11267=>'L',
+11268=>'L',
+11269=>'L',
+11270=>'L',
+11271=>'L',
+11272=>'L',
+11273=>'L',
+11274=>'L',
+11275=>'L',
+11276=>'L',
+11277=>'L',
+11278=>'L',
+11279=>'L',
+11280=>'L',
+11281=>'L',
+11282=>'L',
+11283=>'L',
+11284=>'L',
+11285=>'L',
+11286=>'L',
+11287=>'L',
+11288=>'L',
+11289=>'L',
+11290=>'L',
+11291=>'L',
+11292=>'L',
+11293=>'L',
+11294=>'L',
+11295=>'L',
+11296=>'L',
+11297=>'L',
+11298=>'L',
+11299=>'L',
+11300=>'L',
+11301=>'L',
+11302=>'L',
+11303=>'L',
+11304=>'L',
+11305=>'L',
+11306=>'L',
+11307=>'L',
+11308=>'L',
+11309=>'L',
+11310=>'L',
+11312=>'L',
+11313=>'L',
+11314=>'L',
+11315=>'L',
+11316=>'L',
+11317=>'L',
+11318=>'L',
+11319=>'L',
+11320=>'L',
+11321=>'L',
+11322=>'L',
+11323=>'L',
+11324=>'L',
+11325=>'L',
+11326=>'L',
+11327=>'L',
+11328=>'L',
+11329=>'L',
+11330=>'L',
+11331=>'L',
+11332=>'L',
+11333=>'L',
+11334=>'L',
+11335=>'L',
+11336=>'L',
+11337=>'L',
+11338=>'L',
+11339=>'L',
+11340=>'L',
+11341=>'L',
+11342=>'L',
+11343=>'L',
+11344=>'L',
+11345=>'L',
+11346=>'L',
+11347=>'L',
+11348=>'L',
+11349=>'L',
+11350=>'L',
+11351=>'L',
+11352=>'L',
+11353=>'L',
+11354=>'L',
+11355=>'L',
+11356=>'L',
+11357=>'L',
+11358=>'L',
+11360=>'L',
+11361=>'L',
+11362=>'L',
+11363=>'L',
+11364=>'L',
+11365=>'L',
+11366=>'L',
+11367=>'L',
+11368=>'L',
+11369=>'L',
+11370=>'L',
+11371=>'L',
+11372=>'L',
+11380=>'L',
+11381=>'L',
+11382=>'L',
+11383=>'L',
+11392=>'L',
+11393=>'L',
+11394=>'L',
+11395=>'L',
+11396=>'L',
+11397=>'L',
+11398=>'L',
+11399=>'L',
+11400=>'L',
+11401=>'L',
+11402=>'L',
+11403=>'L',
+11404=>'L',
+11405=>'L',
+11406=>'L',
+11407=>'L',
+11408=>'L',
+11409=>'L',
+11410=>'L',
+11411=>'L',
+11412=>'L',
+11413=>'L',
+11414=>'L',
+11415=>'L',
+11416=>'L',
+11417=>'L',
+11418=>'L',
+11419=>'L',
+11420=>'L',
+11421=>'L',
+11422=>'L',
+11423=>'L',
+11424=>'L',
+11425=>'L',
+11426=>'L',
+11427=>'L',
+11428=>'L',
+11429=>'L',
+11430=>'L',
+11431=>'L',
+11432=>'L',
+11433=>'L',
+11434=>'L',
+11435=>'L',
+11436=>'L',
+11437=>'L',
+11438=>'L',
+11439=>'L',
+11440=>'L',
+11441=>'L',
+11442=>'L',
+11443=>'L',
+11444=>'L',
+11445=>'L',
+11446=>'L',
+11447=>'L',
+11448=>'L',
+11449=>'L',
+11450=>'L',
+11451=>'L',
+11452=>'L',
+11453=>'L',
+11454=>'L',
+11455=>'L',
+11456=>'L',
+11457=>'L',
+11458=>'L',
+11459=>'L',
+11460=>'L',
+11461=>'L',
+11462=>'L',
+11463=>'L',
+11464=>'L',
+11465=>'L',
+11466=>'L',
+11467=>'L',
+11468=>'L',
+11469=>'L',
+11470=>'L',
+11471=>'L',
+11472=>'L',
+11473=>'L',
+11474=>'L',
+11475=>'L',
+11476=>'L',
+11477=>'L',
+11478=>'L',
+11479=>'L',
+11480=>'L',
+11481=>'L',
+11482=>'L',
+11483=>'L',
+11484=>'L',
+11485=>'L',
+11486=>'L',
+11487=>'L',
+11488=>'L',
+11489=>'L',
+11490=>'L',
+11491=>'L',
+11492=>'L',
+11493=>'ON',
+11494=>'ON',
+11495=>'ON',
+11496=>'ON',
+11497=>'ON',
+11498=>'ON',
+11513=>'ON',
+11514=>'ON',
+11515=>'ON',
+11516=>'ON',
+11517=>'ON',
+11518=>'ON',
+11519=>'ON',
+11520=>'L',
+11521=>'L',
+11522=>'L',
+11523=>'L',
+11524=>'L',
+11525=>'L',
+11526=>'L',
+11527=>'L',
+11528=>'L',
+11529=>'L',
+11530=>'L',
+11531=>'L',
+11532=>'L',
+11533=>'L',
+11534=>'L',
+11535=>'L',
+11536=>'L',
+11537=>'L',
+11538=>'L',
+11539=>'L',
+11540=>'L',
+11541=>'L',
+11542=>'L',
+11543=>'L',
+11544=>'L',
+11545=>'L',
+11546=>'L',
+11547=>'L',
+11548=>'L',
+11549=>'L',
+11550=>'L',
+11551=>'L',
+11552=>'L',
+11553=>'L',
+11554=>'L',
+11555=>'L',
+11556=>'L',
+11557=>'L',
+11568=>'L',
+11569=>'L',
+11570=>'L',
+11571=>'L',
+11572=>'L',
+11573=>'L',
+11574=>'L',
+11575=>'L',
+11576=>'L',
+11577=>'L',
+11578=>'L',
+11579=>'L',
+11580=>'L',
+11581=>'L',
+11582=>'L',
+11583=>'L',
+11584=>'L',
+11585=>'L',
+11586=>'L',
+11587=>'L',
+11588=>'L',
+11589=>'L',
+11590=>'L',
+11591=>'L',
+11592=>'L',
+11593=>'L',
+11594=>'L',
+11595=>'L',
+11596=>'L',
+11597=>'L',
+11598=>'L',
+11599=>'L',
+11600=>'L',
+11601=>'L',
+11602=>'L',
+11603=>'L',
+11604=>'L',
+11605=>'L',
+11606=>'L',
+11607=>'L',
+11608=>'L',
+11609=>'L',
+11610=>'L',
+11611=>'L',
+11612=>'L',
+11613=>'L',
+11614=>'L',
+11615=>'L',
+11616=>'L',
+11617=>'L',
+11618=>'L',
+11619=>'L',
+11620=>'L',
+11621=>'L',
+11631=>'L',
+11648=>'L',
+11649=>'L',
+11650=>'L',
+11651=>'L',
+11652=>'L',
+11653=>'L',
+11654=>'L',
+11655=>'L',
+11656=>'L',
+11657=>'L',
+11658=>'L',
+11659=>'L',
+11660=>'L',
+11661=>'L',
+11662=>'L',
+11663=>'L',
+11664=>'L',
+11665=>'L',
+11666=>'L',
+11667=>'L',
+11668=>'L',
+11669=>'L',
+11670=>'L',
+11680=>'L',
+11681=>'L',
+11682=>'L',
+11683=>'L',
+11684=>'L',
+11685=>'L',
+11686=>'L',
+11688=>'L',
+11689=>'L',
+11690=>'L',
+11691=>'L',
+11692=>'L',
+11693=>'L',
+11694=>'L',
+11696=>'L',
+11697=>'L',
+11698=>'L',
+11699=>'L',
+11700=>'L',
+11701=>'L',
+11702=>'L',
+11704=>'L',
+11705=>'L',
+11706=>'L',
+11707=>'L',
+11708=>'L',
+11709=>'L',
+11710=>'L',
+11712=>'L',
+11713=>'L',
+11714=>'L',
+11715=>'L',
+11716=>'L',
+11717=>'L',
+11718=>'L',
+11720=>'L',
+11721=>'L',
+11722=>'L',
+11723=>'L',
+11724=>'L',
+11725=>'L',
+11726=>'L',
+11728=>'L',
+11729=>'L',
+11730=>'L',
+11731=>'L',
+11732=>'L',
+11733=>'L',
+11734=>'L',
+11736=>'L',
+11737=>'L',
+11738=>'L',
+11739=>'L',
+11740=>'L',
+11741=>'L',
+11742=>'L',
+11776=>'ON',
+11777=>'ON',
+11778=>'ON',
+11779=>'ON',
+11780=>'ON',
+11781=>'ON',
+11782=>'ON',
+11783=>'ON',
+11784=>'ON',
+11785=>'ON',
+11786=>'ON',
+11787=>'ON',
+11788=>'ON',
+11789=>'ON',
+11790=>'ON',
+11791=>'ON',
+11792=>'ON',
+11793=>'ON',
+11794=>'ON',
+11795=>'ON',
+11796=>'ON',
+11797=>'ON',
+11798=>'ON',
+11799=>'ON',
+11804=>'ON',
+11805=>'ON',
+11904=>'ON',
+11905=>'ON',
+11906=>'ON',
+11907=>'ON',
+11908=>'ON',
+11909=>'ON',
+11910=>'ON',
+11911=>'ON',
+11912=>'ON',
+11913=>'ON',
+11914=>'ON',
+11915=>'ON',
+11916=>'ON',
+11917=>'ON',
+11918=>'ON',
+11919=>'ON',
+11920=>'ON',
+11921=>'ON',
+11922=>'ON',
+11923=>'ON',
+11924=>'ON',
+11925=>'ON',
+11926=>'ON',
+11927=>'ON',
+11928=>'ON',
+11929=>'ON',
+11931=>'ON',
+11932=>'ON',
+11933=>'ON',
+11934=>'ON',
+11935=>'ON',
+11936=>'ON',
+11937=>'ON',
+11938=>'ON',
+11939=>'ON',
+11940=>'ON',
+11941=>'ON',
+11942=>'ON',
+11943=>'ON',
+11944=>'ON',
+11945=>'ON',
+11946=>'ON',
+11947=>'ON',
+11948=>'ON',
+11949=>'ON',
+11950=>'ON',
+11951=>'ON',
+11952=>'ON',
+11953=>'ON',
+11954=>'ON',
+11955=>'ON',
+11956=>'ON',
+11957=>'ON',
+11958=>'ON',
+11959=>'ON',
+11960=>'ON',
+11961=>'ON',
+11962=>'ON',
+11963=>'ON',
+11964=>'ON',
+11965=>'ON',
+11966=>'ON',
+11967=>'ON',
+11968=>'ON',
+11969=>'ON',
+11970=>'ON',
+11971=>'ON',
+11972=>'ON',
+11973=>'ON',
+11974=>'ON',
+11975=>'ON',
+11976=>'ON',
+11977=>'ON',
+11978=>'ON',
+11979=>'ON',
+11980=>'ON',
+11981=>'ON',
+11982=>'ON',
+11983=>'ON',
+11984=>'ON',
+11985=>'ON',
+11986=>'ON',
+11987=>'ON',
+11988=>'ON',
+11989=>'ON',
+11990=>'ON',
+11991=>'ON',
+11992=>'ON',
+11993=>'ON',
+11994=>'ON',
+11995=>'ON',
+11996=>'ON',
+11997=>'ON',
+11998=>'ON',
+11999=>'ON',
+12000=>'ON',
+12001=>'ON',
+12002=>'ON',
+12003=>'ON',
+12004=>'ON',
+12005=>'ON',
+12006=>'ON',
+12007=>'ON',
+12008=>'ON',
+12009=>'ON',
+12010=>'ON',
+12011=>'ON',
+12012=>'ON',
+12013=>'ON',
+12014=>'ON',
+12015=>'ON',
+12016=>'ON',
+12017=>'ON',
+12018=>'ON',
+12019=>'ON',
+12032=>'ON',
+12033=>'ON',
+12034=>'ON',
+12035=>'ON',
+12036=>'ON',
+12037=>'ON',
+12038=>'ON',
+12039=>'ON',
+12040=>'ON',
+12041=>'ON',
+12042=>'ON',
+12043=>'ON',
+12044=>'ON',
+12045=>'ON',
+12046=>'ON',
+12047=>'ON',
+12048=>'ON',
+12049=>'ON',
+12050=>'ON',
+12051=>'ON',
+12052=>'ON',
+12053=>'ON',
+12054=>'ON',
+12055=>'ON',
+12056=>'ON',
+12057=>'ON',
+12058=>'ON',
+12059=>'ON',
+12060=>'ON',
+12061=>'ON',
+12062=>'ON',
+12063=>'ON',
+12064=>'ON',
+12065=>'ON',
+12066=>'ON',
+12067=>'ON',
+12068=>'ON',
+12069=>'ON',
+12070=>'ON',
+12071=>'ON',
+12072=>'ON',
+12073=>'ON',
+12074=>'ON',
+12075=>'ON',
+12076=>'ON',
+12077=>'ON',
+12078=>'ON',
+12079=>'ON',
+12080=>'ON',
+12081=>'ON',
+12082=>'ON',
+12083=>'ON',
+12084=>'ON',
+12085=>'ON',
+12086=>'ON',
+12087=>'ON',
+12088=>'ON',
+12089=>'ON',
+12090=>'ON',
+12091=>'ON',
+12092=>'ON',
+12093=>'ON',
+12094=>'ON',
+12095=>'ON',
+12096=>'ON',
+12097=>'ON',
+12098=>'ON',
+12099=>'ON',
+12100=>'ON',
+12101=>'ON',
+12102=>'ON',
+12103=>'ON',
+12104=>'ON',
+12105=>'ON',
+12106=>'ON',
+12107=>'ON',
+12108=>'ON',
+12109=>'ON',
+12110=>'ON',
+12111=>'ON',
+12112=>'ON',
+12113=>'ON',
+12114=>'ON',
+12115=>'ON',
+12116=>'ON',
+12117=>'ON',
+12118=>'ON',
+12119=>'ON',
+12120=>'ON',
+12121=>'ON',
+12122=>'ON',
+12123=>'ON',
+12124=>'ON',
+12125=>'ON',
+12126=>'ON',
+12127=>'ON',
+12128=>'ON',
+12129=>'ON',
+12130=>'ON',
+12131=>'ON',
+12132=>'ON',
+12133=>'ON',
+12134=>'ON',
+12135=>'ON',
+12136=>'ON',
+12137=>'ON',
+12138=>'ON',
+12139=>'ON',
+12140=>'ON',
+12141=>'ON',
+12142=>'ON',
+12143=>'ON',
+12144=>'ON',
+12145=>'ON',
+12146=>'ON',
+12147=>'ON',
+12148=>'ON',
+12149=>'ON',
+12150=>'ON',
+12151=>'ON',
+12152=>'ON',
+12153=>'ON',
+12154=>'ON',
+12155=>'ON',
+12156=>'ON',
+12157=>'ON',
+12158=>'ON',
+12159=>'ON',
+12160=>'ON',
+12161=>'ON',
+12162=>'ON',
+12163=>'ON',
+12164=>'ON',
+12165=>'ON',
+12166=>'ON',
+12167=>'ON',
+12168=>'ON',
+12169=>'ON',
+12170=>'ON',
+12171=>'ON',
+12172=>'ON',
+12173=>'ON',
+12174=>'ON',
+12175=>'ON',
+12176=>'ON',
+12177=>'ON',
+12178=>'ON',
+12179=>'ON',
+12180=>'ON',
+12181=>'ON',
+12182=>'ON',
+12183=>'ON',
+12184=>'ON',
+12185=>'ON',
+12186=>'ON',
+12187=>'ON',
+12188=>'ON',
+12189=>'ON',
+12190=>'ON',
+12191=>'ON',
+12192=>'ON',
+12193=>'ON',
+12194=>'ON',
+12195=>'ON',
+12196=>'ON',
+12197=>'ON',
+12198=>'ON',
+12199=>'ON',
+12200=>'ON',
+12201=>'ON',
+12202=>'ON',
+12203=>'ON',
+12204=>'ON',
+12205=>'ON',
+12206=>'ON',
+12207=>'ON',
+12208=>'ON',
+12209=>'ON',
+12210=>'ON',
+12211=>'ON',
+12212=>'ON',
+12213=>'ON',
+12214=>'ON',
+12215=>'ON',
+12216=>'ON',
+12217=>'ON',
+12218=>'ON',
+12219=>'ON',
+12220=>'ON',
+12221=>'ON',
+12222=>'ON',
+12223=>'ON',
+12224=>'ON',
+12225=>'ON',
+12226=>'ON',
+12227=>'ON',
+12228=>'ON',
+12229=>'ON',
+12230=>'ON',
+12231=>'ON',
+12232=>'ON',
+12233=>'ON',
+12234=>'ON',
+12235=>'ON',
+12236=>'ON',
+12237=>'ON',
+12238=>'ON',
+12239=>'ON',
+12240=>'ON',
+12241=>'ON',
+12242=>'ON',
+12243=>'ON',
+12244=>'ON',
+12245=>'ON',
+12272=>'ON',
+12273=>'ON',
+12274=>'ON',
+12275=>'ON',
+12276=>'ON',
+12277=>'ON',
+12278=>'ON',
+12279=>'ON',
+12280=>'ON',
+12281=>'ON',
+12282=>'ON',
+12283=>'ON',
+12288=>'WS',
+12289=>'ON',
+12290=>'ON',
+12291=>'ON',
+12292=>'ON',
+12293=>'L',
+12294=>'L',
+12295=>'L',
+12296=>'ON',
+12297=>'ON',
+12298=>'ON',
+12299=>'ON',
+12300=>'ON',
+12301=>'ON',
+12302=>'ON',
+12303=>'ON',
+12304=>'ON',
+12305=>'ON',
+12306=>'ON',
+12307=>'ON',
+12308=>'ON',
+12309=>'ON',
+12310=>'ON',
+12311=>'ON',
+12312=>'ON',
+12313=>'ON',
+12314=>'ON',
+12315=>'ON',
+12316=>'ON',
+12317=>'ON',
+12318=>'ON',
+12319=>'ON',
+12320=>'ON',
+12321=>'L',
+12322=>'L',
+12323=>'L',
+12324=>'L',
+12325=>'L',
+12326=>'L',
+12327=>'L',
+12328=>'L',
+12329=>'L',
+12330=>'NSM',
+12331=>'NSM',
+12332=>'NSM',
+12333=>'NSM',
+12334=>'NSM',
+12335=>'NSM',
+12336=>'ON',
+12337=>'L',
+12338=>'L',
+12339=>'L',
+12340=>'L',
+12341=>'L',
+12342=>'ON',
+12343=>'ON',
+12344=>'L',
+12345=>'L',
+12346=>'L',
+12347=>'L',
+12348=>'L',
+12349=>'ON',
+12350=>'ON',
+12351=>'ON',
+12353=>'L',
+12354=>'L',
+12355=>'L',
+12356=>'L',
+12357=>'L',
+12358=>'L',
+12359=>'L',
+12360=>'L',
+12361=>'L',
+12362=>'L',
+12363=>'L',
+12364=>'L',
+12365=>'L',
+12366=>'L',
+12367=>'L',
+12368=>'L',
+12369=>'L',
+12370=>'L',
+12371=>'L',
+12372=>'L',
+12373=>'L',
+12374=>'L',
+12375=>'L',
+12376=>'L',
+12377=>'L',
+12378=>'L',
+12379=>'L',
+12380=>'L',
+12381=>'L',
+12382=>'L',
+12383=>'L',
+12384=>'L',
+12385=>'L',
+12386=>'L',
+12387=>'L',
+12388=>'L',
+12389=>'L',
+12390=>'L',
+12391=>'L',
+12392=>'L',
+12393=>'L',
+12394=>'L',
+12395=>'L',
+12396=>'L',
+12397=>'L',
+12398=>'L',
+12399=>'L',
+12400=>'L',
+12401=>'L',
+12402=>'L',
+12403=>'L',
+12404=>'L',
+12405=>'L',
+12406=>'L',
+12407=>'L',
+12408=>'L',
+12409=>'L',
+12410=>'L',
+12411=>'L',
+12412=>'L',
+12413=>'L',
+12414=>'L',
+12415=>'L',
+12416=>'L',
+12417=>'L',
+12418=>'L',
+12419=>'L',
+12420=>'L',
+12421=>'L',
+12422=>'L',
+12423=>'L',
+12424=>'L',
+12425=>'L',
+12426=>'L',
+12427=>'L',
+12428=>'L',
+12429=>'L',
+12430=>'L',
+12431=>'L',
+12432=>'L',
+12433=>'L',
+12434=>'L',
+12435=>'L',
+12436=>'L',
+12437=>'L',
+12438=>'L',
+12441=>'NSM',
+12442=>'NSM',
+12443=>'ON',
+12444=>'ON',
+12445=>'L',
+12446=>'L',
+12447=>'L',
+12448=>'ON',
+12449=>'L',
+12450=>'L',
+12451=>'L',
+12452=>'L',
+12453=>'L',
+12454=>'L',
+12455=>'L',
+12456=>'L',
+12457=>'L',
+12458=>'L',
+12459=>'L',
+12460=>'L',
+12461=>'L',
+12462=>'L',
+12463=>'L',
+12464=>'L',
+12465=>'L',
+12466=>'L',
+12467=>'L',
+12468=>'L',
+12469=>'L',
+12470=>'L',
+12471=>'L',
+12472=>'L',
+12473=>'L',
+12474=>'L',
+12475=>'L',
+12476=>'L',
+12477=>'L',
+12478=>'L',
+12479=>'L',
+12480=>'L',
+12481=>'L',
+12482=>'L',
+12483=>'L',
+12484=>'L',
+12485=>'L',
+12486=>'L',
+12487=>'L',
+12488=>'L',
+12489=>'L',
+12490=>'L',
+12491=>'L',
+12492=>'L',
+12493=>'L',
+12494=>'L',
+12495=>'L',
+12496=>'L',
+12497=>'L',
+12498=>'L',
+12499=>'L',
+12500=>'L',
+12501=>'L',
+12502=>'L',
+12503=>'L',
+12504=>'L',
+12505=>'L',
+12506=>'L',
+12507=>'L',
+12508=>'L',
+12509=>'L',
+12510=>'L',
+12511=>'L',
+12512=>'L',
+12513=>'L',
+12514=>'L',
+12515=>'L',
+12516=>'L',
+12517=>'L',
+12518=>'L',
+12519=>'L',
+12520=>'L',
+12521=>'L',
+12522=>'L',
+12523=>'L',
+12524=>'L',
+12525=>'L',
+12526=>'L',
+12527=>'L',
+12528=>'L',
+12529=>'L',
+12530=>'L',
+12531=>'L',
+12532=>'L',
+12533=>'L',
+12534=>'L',
+12535=>'L',
+12536=>'L',
+12537=>'L',
+12538=>'L',
+12539=>'ON',
+12540=>'L',
+12541=>'L',
+12542=>'L',
+12543=>'L',
+12549=>'L',
+12550=>'L',
+12551=>'L',
+12552=>'L',
+12553=>'L',
+12554=>'L',
+12555=>'L',
+12556=>'L',
+12557=>'L',
+12558=>'L',
+12559=>'L',
+12560=>'L',
+12561=>'L',
+12562=>'L',
+12563=>'L',
+12564=>'L',
+12565=>'L',
+12566=>'L',
+12567=>'L',
+12568=>'L',
+12569=>'L',
+12570=>'L',
+12571=>'L',
+12572=>'L',
+12573=>'L',
+12574=>'L',
+12575=>'L',
+12576=>'L',
+12577=>'L',
+12578=>'L',
+12579=>'L',
+12580=>'L',
+12581=>'L',
+12582=>'L',
+12583=>'L',
+12584=>'L',
+12585=>'L',
+12586=>'L',
+12587=>'L',
+12588=>'L',
+12593=>'L',
+12594=>'L',
+12595=>'L',
+12596=>'L',
+12597=>'L',
+12598=>'L',
+12599=>'L',
+12600=>'L',
+12601=>'L',
+12602=>'L',
+12603=>'L',
+12604=>'L',
+12605=>'L',
+12606=>'L',
+12607=>'L',
+12608=>'L',
+12609=>'L',
+12610=>'L',
+12611=>'L',
+12612=>'L',
+12613=>'L',
+12614=>'L',
+12615=>'L',
+12616=>'L',
+12617=>'L',
+12618=>'L',
+12619=>'L',
+12620=>'L',
+12621=>'L',
+12622=>'L',
+12623=>'L',
+12624=>'L',
+12625=>'L',
+12626=>'L',
+12627=>'L',
+12628=>'L',
+12629=>'L',
+12630=>'L',
+12631=>'L',
+12632=>'L',
+12633=>'L',
+12634=>'L',
+12635=>'L',
+12636=>'L',
+12637=>'L',
+12638=>'L',
+12639=>'L',
+12640=>'L',
+12641=>'L',
+12642=>'L',
+12643=>'L',
+12644=>'L',
+12645=>'L',
+12646=>'L',
+12647=>'L',
+12648=>'L',
+12649=>'L',
+12650=>'L',
+12651=>'L',
+12652=>'L',
+12653=>'L',
+12654=>'L',
+12655=>'L',
+12656=>'L',
+12657=>'L',
+12658=>'L',
+12659=>'L',
+12660=>'L',
+12661=>'L',
+12662=>'L',
+12663=>'L',
+12664=>'L',
+12665=>'L',
+12666=>'L',
+12667=>'L',
+12668=>'L',
+12669=>'L',
+12670=>'L',
+12671=>'L',
+12672=>'L',
+12673=>'L',
+12674=>'L',
+12675=>'L',
+12676=>'L',
+12677=>'L',
+12678=>'L',
+12679=>'L',
+12680=>'L',
+12681=>'L',
+12682=>'L',
+12683=>'L',
+12684=>'L',
+12685=>'L',
+12686=>'L',
+12688=>'L',
+12689=>'L',
+12690=>'L',
+12691=>'L',
+12692=>'L',
+12693=>'L',
+12694=>'L',
+12695=>'L',
+12696=>'L',
+12697=>'L',
+12698=>'L',
+12699=>'L',
+12700=>'L',
+12701=>'L',
+12702=>'L',
+12703=>'L',
+12704=>'L',
+12705=>'L',
+12706=>'L',
+12707=>'L',
+12708=>'L',
+12709=>'L',
+12710=>'L',
+12711=>'L',
+12712=>'L',
+12713=>'L',
+12714=>'L',
+12715=>'L',
+12716=>'L',
+12717=>'L',
+12718=>'L',
+12719=>'L',
+12720=>'L',
+12721=>'L',
+12722=>'L',
+12723=>'L',
+12724=>'L',
+12725=>'L',
+12726=>'L',
+12727=>'L',
+12736=>'ON',
+12737=>'ON',
+12738=>'ON',
+12739=>'ON',
+12740=>'ON',
+12741=>'ON',
+12742=>'ON',
+12743=>'ON',
+12744=>'ON',
+12745=>'ON',
+12746=>'ON',
+12747=>'ON',
+12748=>'ON',
+12749=>'ON',
+12750=>'ON',
+12751=>'ON',
+12784=>'L',
+12785=>'L',
+12786=>'L',
+12787=>'L',
+12788=>'L',
+12789=>'L',
+12790=>'L',
+12791=>'L',
+12792=>'L',
+12793=>'L',
+12794=>'L',
+12795=>'L',
+12796=>'L',
+12797=>'L',
+12798=>'L',
+12799=>'L',
+12800=>'L',
+12801=>'L',
+12802=>'L',
+12803=>'L',
+12804=>'L',
+12805=>'L',
+12806=>'L',
+12807=>'L',
+12808=>'L',
+12809=>'L',
+12810=>'L',
+12811=>'L',
+12812=>'L',
+12813=>'L',
+12814=>'L',
+12815=>'L',
+12816=>'L',
+12817=>'L',
+12818=>'L',
+12819=>'L',
+12820=>'L',
+12821=>'L',
+12822=>'L',
+12823=>'L',
+12824=>'L',
+12825=>'L',
+12826=>'L',
+12827=>'L',
+12828=>'L',
+12829=>'ON',
+12830=>'ON',
+12832=>'L',
+12833=>'L',
+12834=>'L',
+12835=>'L',
+12836=>'L',
+12837=>'L',
+12838=>'L',
+12839=>'L',
+12840=>'L',
+12841=>'L',
+12842=>'L',
+12843=>'L',
+12844=>'L',
+12845=>'L',
+12846=>'L',
+12847=>'L',
+12848=>'L',
+12849=>'L',
+12850=>'L',
+12851=>'L',
+12852=>'L',
+12853=>'L',
+12854=>'L',
+12855=>'L',
+12856=>'L',
+12857=>'L',
+12858=>'L',
+12859=>'L',
+12860=>'L',
+12861=>'L',
+12862=>'L',
+12863=>'L',
+12864=>'L',
+12865=>'L',
+12866=>'L',
+12867=>'L',
+12880=>'ON',
+12881=>'ON',
+12882=>'ON',
+12883=>'ON',
+12884=>'ON',
+12885=>'ON',
+12886=>'ON',
+12887=>'ON',
+12888=>'ON',
+12889=>'ON',
+12890=>'ON',
+12891=>'ON',
+12892=>'ON',
+12893=>'ON',
+12894=>'ON',
+12895=>'ON',
+12896=>'L',
+12897=>'L',
+12898=>'L',
+12899=>'L',
+12900=>'L',
+12901=>'L',
+12902=>'L',
+12903=>'L',
+12904=>'L',
+12905=>'L',
+12906=>'L',
+12907=>'L',
+12908=>'L',
+12909=>'L',
+12910=>'L',
+12911=>'L',
+12912=>'L',
+12913=>'L',
+12914=>'L',
+12915=>'L',
+12916=>'L',
+12917=>'L',
+12918=>'L',
+12919=>'L',
+12920=>'L',
+12921=>'L',
+12922=>'L',
+12923=>'L',
+12924=>'ON',
+12925=>'ON',
+12926=>'ON',
+12927=>'L',
+12928=>'L',
+12929=>'L',
+12930=>'L',
+12931=>'L',
+12932=>'L',
+12933=>'L',
+12934=>'L',
+12935=>'L',
+12936=>'L',
+12937=>'L',
+12938=>'L',
+12939=>'L',
+12940=>'L',
+12941=>'L',
+12942=>'L',
+12943=>'L',
+12944=>'L',
+12945=>'L',
+12946=>'L',
+12947=>'L',
+12948=>'L',
+12949=>'L',
+12950=>'L',
+12951=>'L',
+12952=>'L',
+12953=>'L',
+12954=>'L',
+12955=>'L',
+12956=>'L',
+12957=>'L',
+12958=>'L',
+12959=>'L',
+12960=>'L',
+12961=>'L',
+12962=>'L',
+12963=>'L',
+12964=>'L',
+12965=>'L',
+12966=>'L',
+12967=>'L',
+12968=>'L',
+12969=>'L',
+12970=>'L',
+12971=>'L',
+12972=>'L',
+12973=>'L',
+12974=>'L',
+12975=>'L',
+12976=>'L',
+12977=>'ON',
+12978=>'ON',
+12979=>'ON',
+12980=>'ON',
+12981=>'ON',
+12982=>'ON',
+12983=>'ON',
+12984=>'ON',
+12985=>'ON',
+12986=>'ON',
+12987=>'ON',
+12988=>'ON',
+12989=>'ON',
+12990=>'ON',
+12991=>'ON',
+12992=>'L',
+12993=>'L',
+12994=>'L',
+12995=>'L',
+12996=>'L',
+12997=>'L',
+12998=>'L',
+12999=>'L',
+13000=>'L',
+13001=>'L',
+13002=>'L',
+13003=>'L',
+13004=>'ON',
+13005=>'ON',
+13006=>'ON',
+13007=>'ON',
+13008=>'L',
+13009=>'L',
+13010=>'L',
+13011=>'L',
+13012=>'L',
+13013=>'L',
+13014=>'L',
+13015=>'L',
+13016=>'L',
+13017=>'L',
+13018=>'L',
+13019=>'L',
+13020=>'L',
+13021=>'L',
+13022=>'L',
+13023=>'L',
+13024=>'L',
+13025=>'L',
+13026=>'L',
+13027=>'L',
+13028=>'L',
+13029=>'L',
+13030=>'L',
+13031=>'L',
+13032=>'L',
+13033=>'L',
+13034=>'L',
+13035=>'L',
+13036=>'L',
+13037=>'L',
+13038=>'L',
+13039=>'L',
+13040=>'L',
+13041=>'L',
+13042=>'L',
+13043=>'L',
+13044=>'L',
+13045=>'L',
+13046=>'L',
+13047=>'L',
+13048=>'L',
+13049=>'L',
+13050=>'L',
+13051=>'L',
+13052=>'L',
+13053=>'L',
+13054=>'L',
+13056=>'L',
+13057=>'L',
+13058=>'L',
+13059=>'L',
+13060=>'L',
+13061=>'L',
+13062=>'L',
+13063=>'L',
+13064=>'L',
+13065=>'L',
+13066=>'L',
+13067=>'L',
+13068=>'L',
+13069=>'L',
+13070=>'L',
+13071=>'L',
+13072=>'L',
+13073=>'L',
+13074=>'L',
+13075=>'L',
+13076=>'L',
+13077=>'L',
+13078=>'L',
+13079=>'L',
+13080=>'L',
+13081=>'L',
+13082=>'L',
+13083=>'L',
+13084=>'L',
+13085=>'L',
+13086=>'L',
+13087=>'L',
+13088=>'L',
+13089=>'L',
+13090=>'L',
+13091=>'L',
+13092=>'L',
+13093=>'L',
+13094=>'L',
+13095=>'L',
+13096=>'L',
+13097=>'L',
+13098=>'L',
+13099=>'L',
+13100=>'L',
+13101=>'L',
+13102=>'L',
+13103=>'L',
+13104=>'L',
+13105=>'L',
+13106=>'L',
+13107=>'L',
+13108=>'L',
+13109=>'L',
+13110=>'L',
+13111=>'L',
+13112=>'L',
+13113=>'L',
+13114=>'L',
+13115=>'L',
+13116=>'L',
+13117=>'L',
+13118=>'L',
+13119=>'L',
+13120=>'L',
+13121=>'L',
+13122=>'L',
+13123=>'L',
+13124=>'L',
+13125=>'L',
+13126=>'L',
+13127=>'L',
+13128=>'L',
+13129=>'L',
+13130=>'L',
+13131=>'L',
+13132=>'L',
+13133=>'L',
+13134=>'L',
+13135=>'L',
+13136=>'L',
+13137=>'L',
+13138=>'L',
+13139=>'L',
+13140=>'L',
+13141=>'L',
+13142=>'L',
+13143=>'L',
+13144=>'L',
+13145=>'L',
+13146=>'L',
+13147=>'L',
+13148=>'L',
+13149=>'L',
+13150=>'L',
+13151=>'L',
+13152=>'L',
+13153=>'L',
+13154=>'L',
+13155=>'L',
+13156=>'L',
+13157=>'L',
+13158=>'L',
+13159=>'L',
+13160=>'L',
+13161=>'L',
+13162=>'L',
+13163=>'L',
+13164=>'L',
+13165=>'L',
+13166=>'L',
+13167=>'L',
+13168=>'L',
+13169=>'L',
+13170=>'L',
+13171=>'L',
+13172=>'L',
+13173=>'L',
+13174=>'L',
+13175=>'ON',
+13176=>'ON',
+13177=>'ON',
+13178=>'ON',
+13179=>'L',
+13180=>'L',
+13181=>'L',
+13182=>'L',
+13183=>'L',
+13184=>'L',
+13185=>'L',
+13186=>'L',
+13187=>'L',
+13188=>'L',
+13189=>'L',
+13190=>'L',
+13191=>'L',
+13192=>'L',
+13193=>'L',
+13194=>'L',
+13195=>'L',
+13196=>'L',
+13197=>'L',
+13198=>'L',
+13199=>'L',
+13200=>'L',
+13201=>'L',
+13202=>'L',
+13203=>'L',
+13204=>'L',
+13205=>'L',
+13206=>'L',
+13207=>'L',
+13208=>'L',
+13209=>'L',
+13210=>'L',
+13211=>'L',
+13212=>'L',
+13213=>'L',
+13214=>'L',
+13215=>'L',
+13216=>'L',
+13217=>'L',
+13218=>'L',
+13219=>'L',
+13220=>'L',
+13221=>'L',
+13222=>'L',
+13223=>'L',
+13224=>'L',
+13225=>'L',
+13226=>'L',
+13227=>'L',
+13228=>'L',
+13229=>'L',
+13230=>'L',
+13231=>'L',
+13232=>'L',
+13233=>'L',
+13234=>'L',
+13235=>'L',
+13236=>'L',
+13237=>'L',
+13238=>'L',
+13239=>'L',
+13240=>'L',
+13241=>'L',
+13242=>'L',
+13243=>'L',
+13244=>'L',
+13245=>'L',
+13246=>'L',
+13247=>'L',
+13248=>'L',
+13249=>'L',
+13250=>'L',
+13251=>'L',
+13252=>'L',
+13253=>'L',
+13254=>'L',
+13255=>'L',
+13256=>'L',
+13257=>'L',
+13258=>'L',
+13259=>'L',
+13260=>'L',
+13261=>'L',
+13262=>'L',
+13263=>'L',
+13264=>'L',
+13265=>'L',
+13266=>'L',
+13267=>'L',
+13268=>'L',
+13269=>'L',
+13270=>'L',
+13271=>'L',
+13272=>'L',
+13273=>'L',
+13274=>'L',
+13275=>'L',
+13276=>'L',
+13277=>'L',
+13278=>'ON',
+13279=>'ON',
+13280=>'L',
+13281=>'L',
+13282=>'L',
+13283=>'L',
+13284=>'L',
+13285=>'L',
+13286=>'L',
+13287=>'L',
+13288=>'L',
+13289=>'L',
+13290=>'L',
+13291=>'L',
+13292=>'L',
+13293=>'L',
+13294=>'L',
+13295=>'L',
+13296=>'L',
+13297=>'L',
+13298=>'L',
+13299=>'L',
+13300=>'L',
+13301=>'L',
+13302=>'L',
+13303=>'L',
+13304=>'L',
+13305=>'L',
+13306=>'L',
+13307=>'L',
+13308=>'L',
+13309=>'L',
+13310=>'L',
+13311=>'ON',
+13312=>'L',
+19893=>'L',
+19904=>'ON',
+19905=>'ON',
+19906=>'ON',
+19907=>'ON',
+19908=>'ON',
+19909=>'ON',
+19910=>'ON',
+19911=>'ON',
+19912=>'ON',
+19913=>'ON',
+19914=>'ON',
+19915=>'ON',
+19916=>'ON',
+19917=>'ON',
+19918=>'ON',
+19919=>'ON',
+19920=>'ON',
+19921=>'ON',
+19922=>'ON',
+19923=>'ON',
+19924=>'ON',
+19925=>'ON',
+19926=>'ON',
+19927=>'ON',
+19928=>'ON',
+19929=>'ON',
+19930=>'ON',
+19931=>'ON',
+19932=>'ON',
+19933=>'ON',
+19934=>'ON',
+19935=>'ON',
+19936=>'ON',
+19937=>'ON',
+19938=>'ON',
+19939=>'ON',
+19940=>'ON',
+19941=>'ON',
+19942=>'ON',
+19943=>'ON',
+19944=>'ON',
+19945=>'ON',
+19946=>'ON',
+19947=>'ON',
+19948=>'ON',
+19949=>'ON',
+19950=>'ON',
+19951=>'ON',
+19952=>'ON',
+19953=>'ON',
+19954=>'ON',
+19955=>'ON',
+19956=>'ON',
+19957=>'ON',
+19958=>'ON',
+19959=>'ON',
+19960=>'ON',
+19961=>'ON',
+19962=>'ON',
+19963=>'ON',
+19964=>'ON',
+19965=>'ON',
+19966=>'ON',
+19967=>'ON',
+19968=>'L',
+40891=>'L',
+40960=>'L',
+40961=>'L',
+40962=>'L',
+40963=>'L',
+40964=>'L',
+40965=>'L',
+40966=>'L',
+40967=>'L',
+40968=>'L',
+40969=>'L',
+40970=>'L',
+40971=>'L',
+40972=>'L',
+40973=>'L',
+40974=>'L',
+40975=>'L',
+40976=>'L',
+40977=>'L',
+40978=>'L',
+40979=>'L',
+40980=>'L',
+40981=>'L',
+40982=>'L',
+40983=>'L',
+40984=>'L',
+40985=>'L',
+40986=>'L',
+40987=>'L',
+40988=>'L',
+40989=>'L',
+40990=>'L',
+40991=>'L',
+40992=>'L',
+40993=>'L',
+40994=>'L',
+40995=>'L',
+40996=>'L',
+40997=>'L',
+40998=>'L',
+40999=>'L',
+41000=>'L',
+41001=>'L',
+41002=>'L',
+41003=>'L',
+41004=>'L',
+41005=>'L',
+41006=>'L',
+41007=>'L',
+41008=>'L',
+41009=>'L',
+41010=>'L',
+41011=>'L',
+41012=>'L',
+41013=>'L',
+41014=>'L',
+41015=>'L',
+41016=>'L',
+41017=>'L',
+41018=>'L',
+41019=>'L',
+41020=>'L',
+41021=>'L',
+41022=>'L',
+41023=>'L',
+41024=>'L',
+41025=>'L',
+41026=>'L',
+41027=>'L',
+41028=>'L',
+41029=>'L',
+41030=>'L',
+41031=>'L',
+41032=>'L',
+41033=>'L',
+41034=>'L',
+41035=>'L',
+41036=>'L',
+41037=>'L',
+41038=>'L',
+41039=>'L',
+41040=>'L',
+41041=>'L',
+41042=>'L',
+41043=>'L',
+41044=>'L',
+41045=>'L',
+41046=>'L',
+41047=>'L',
+41048=>'L',
+41049=>'L',
+41050=>'L',
+41051=>'L',
+41052=>'L',
+41053=>'L',
+41054=>'L',
+41055=>'L',
+41056=>'L',
+41057=>'L',
+41058=>'L',
+41059=>'L',
+41060=>'L',
+41061=>'L',
+41062=>'L',
+41063=>'L',
+41064=>'L',
+41065=>'L',
+41066=>'L',
+41067=>'L',
+41068=>'L',
+41069=>'L',
+41070=>'L',
+41071=>'L',
+41072=>'L',
+41073=>'L',
+41074=>'L',
+41075=>'L',
+41076=>'L',
+41077=>'L',
+41078=>'L',
+41079=>'L',
+41080=>'L',
+41081=>'L',
+41082=>'L',
+41083=>'L',
+41084=>'L',
+41085=>'L',
+41086=>'L',
+41087=>'L',
+41088=>'L',
+41089=>'L',
+41090=>'L',
+41091=>'L',
+41092=>'L',
+41093=>'L',
+41094=>'L',
+41095=>'L',
+41096=>'L',
+41097=>'L',
+41098=>'L',
+41099=>'L',
+41100=>'L',
+41101=>'L',
+41102=>'L',
+41103=>'L',
+41104=>'L',
+41105=>'L',
+41106=>'L',
+41107=>'L',
+41108=>'L',
+41109=>'L',
+41110=>'L',
+41111=>'L',
+41112=>'L',
+41113=>'L',
+41114=>'L',
+41115=>'L',
+41116=>'L',
+41117=>'L',
+41118=>'L',
+41119=>'L',
+41120=>'L',
+41121=>'L',
+41122=>'L',
+41123=>'L',
+41124=>'L',
+41125=>'L',
+41126=>'L',
+41127=>'L',
+41128=>'L',
+41129=>'L',
+41130=>'L',
+41131=>'L',
+41132=>'L',
+41133=>'L',
+41134=>'L',
+41135=>'L',
+41136=>'L',
+41137=>'L',
+41138=>'L',
+41139=>'L',
+41140=>'L',
+41141=>'L',
+41142=>'L',
+41143=>'L',
+41144=>'L',
+41145=>'L',
+41146=>'L',
+41147=>'L',
+41148=>'L',
+41149=>'L',
+41150=>'L',
+41151=>'L',
+41152=>'L',
+41153=>'L',
+41154=>'L',
+41155=>'L',
+41156=>'L',
+41157=>'L',
+41158=>'L',
+41159=>'L',
+41160=>'L',
+41161=>'L',
+41162=>'L',
+41163=>'L',
+41164=>'L',
+41165=>'L',
+41166=>'L',
+41167=>'L',
+41168=>'L',
+41169=>'L',
+41170=>'L',
+41171=>'L',
+41172=>'L',
+41173=>'L',
+41174=>'L',
+41175=>'L',
+41176=>'L',
+41177=>'L',
+41178=>'L',
+41179=>'L',
+41180=>'L',
+41181=>'L',
+41182=>'L',
+41183=>'L',
+41184=>'L',
+41185=>'L',
+41186=>'L',
+41187=>'L',
+41188=>'L',
+41189=>'L',
+41190=>'L',
+41191=>'L',
+41192=>'L',
+41193=>'L',
+41194=>'L',
+41195=>'L',
+41196=>'L',
+41197=>'L',
+41198=>'L',
+41199=>'L',
+41200=>'L',
+41201=>'L',
+41202=>'L',
+41203=>'L',
+41204=>'L',
+41205=>'L',
+41206=>'L',
+41207=>'L',
+41208=>'L',
+41209=>'L',
+41210=>'L',
+41211=>'L',
+41212=>'L',
+41213=>'L',
+41214=>'L',
+41215=>'L',
+41216=>'L',
+41217=>'L',
+41218=>'L',
+41219=>'L',
+41220=>'L',
+41221=>'L',
+41222=>'L',
+41223=>'L',
+41224=>'L',
+41225=>'L',
+41226=>'L',
+41227=>'L',
+41228=>'L',
+41229=>'L',
+41230=>'L',
+41231=>'L',
+41232=>'L',
+41233=>'L',
+41234=>'L',
+41235=>'L',
+41236=>'L',
+41237=>'L',
+41238=>'L',
+41239=>'L',
+41240=>'L',
+41241=>'L',
+41242=>'L',
+41243=>'L',
+41244=>'L',
+41245=>'L',
+41246=>'L',
+41247=>'L',
+41248=>'L',
+41249=>'L',
+41250=>'L',
+41251=>'L',
+41252=>'L',
+41253=>'L',
+41254=>'L',
+41255=>'L',
+41256=>'L',
+41257=>'L',
+41258=>'L',
+41259=>'L',
+41260=>'L',
+41261=>'L',
+41262=>'L',
+41263=>'L',
+41264=>'L',
+41265=>'L',
+41266=>'L',
+41267=>'L',
+41268=>'L',
+41269=>'L',
+41270=>'L',
+41271=>'L',
+41272=>'L',
+41273=>'L',
+41274=>'L',
+41275=>'L',
+41276=>'L',
+41277=>'L',
+41278=>'L',
+41279=>'L',
+41280=>'L',
+41281=>'L',
+41282=>'L',
+41283=>'L',
+41284=>'L',
+41285=>'L',
+41286=>'L',
+41287=>'L',
+41288=>'L',
+41289=>'L',
+41290=>'L',
+41291=>'L',
+41292=>'L',
+41293=>'L',
+41294=>'L',
+41295=>'L',
+41296=>'L',
+41297=>'L',
+41298=>'L',
+41299=>'L',
+41300=>'L',
+41301=>'L',
+41302=>'L',
+41303=>'L',
+41304=>'L',
+41305=>'L',
+41306=>'L',
+41307=>'L',
+41308=>'L',
+41309=>'L',
+41310=>'L',
+41311=>'L',
+41312=>'L',
+41313=>'L',
+41314=>'L',
+41315=>'L',
+41316=>'L',
+41317=>'L',
+41318=>'L',
+41319=>'L',
+41320=>'L',
+41321=>'L',
+41322=>'L',
+41323=>'L',
+41324=>'L',
+41325=>'L',
+41326=>'L',
+41327=>'L',
+41328=>'L',
+41329=>'L',
+41330=>'L',
+41331=>'L',
+41332=>'L',
+41333=>'L',
+41334=>'L',
+41335=>'L',
+41336=>'L',
+41337=>'L',
+41338=>'L',
+41339=>'L',
+41340=>'L',
+41341=>'L',
+41342=>'L',
+41343=>'L',
+41344=>'L',
+41345=>'L',
+41346=>'L',
+41347=>'L',
+41348=>'L',
+41349=>'L',
+41350=>'L',
+41351=>'L',
+41352=>'L',
+41353=>'L',
+41354=>'L',
+41355=>'L',
+41356=>'L',
+41357=>'L',
+41358=>'L',
+41359=>'L',
+41360=>'L',
+41361=>'L',
+41362=>'L',
+41363=>'L',
+41364=>'L',
+41365=>'L',
+41366=>'L',
+41367=>'L',
+41368=>'L',
+41369=>'L',
+41370=>'L',
+41371=>'L',
+41372=>'L',
+41373=>'L',
+41374=>'L',
+41375=>'L',
+41376=>'L',
+41377=>'L',
+41378=>'L',
+41379=>'L',
+41380=>'L',
+41381=>'L',
+41382=>'L',
+41383=>'L',
+41384=>'L',
+41385=>'L',
+41386=>'L',
+41387=>'L',
+41388=>'L',
+41389=>'L',
+41390=>'L',
+41391=>'L',
+41392=>'L',
+41393=>'L',
+41394=>'L',
+41395=>'L',
+41396=>'L',
+41397=>'L',
+41398=>'L',
+41399=>'L',
+41400=>'L',
+41401=>'L',
+41402=>'L',
+41403=>'L',
+41404=>'L',
+41405=>'L',
+41406=>'L',
+41407=>'L',
+41408=>'L',
+41409=>'L',
+41410=>'L',
+41411=>'L',
+41412=>'L',
+41413=>'L',
+41414=>'L',
+41415=>'L',
+41416=>'L',
+41417=>'L',
+41418=>'L',
+41419=>'L',
+41420=>'L',
+41421=>'L',
+41422=>'L',
+41423=>'L',
+41424=>'L',
+41425=>'L',
+41426=>'L',
+41427=>'L',
+41428=>'L',
+41429=>'L',
+41430=>'L',
+41431=>'L',
+41432=>'L',
+41433=>'L',
+41434=>'L',
+41435=>'L',
+41436=>'L',
+41437=>'L',
+41438=>'L',
+41439=>'L',
+41440=>'L',
+41441=>'L',
+41442=>'L',
+41443=>'L',
+41444=>'L',
+41445=>'L',
+41446=>'L',
+41447=>'L',
+41448=>'L',
+41449=>'L',
+41450=>'L',
+41451=>'L',
+41452=>'L',
+41453=>'L',
+41454=>'L',
+41455=>'L',
+41456=>'L',
+41457=>'L',
+41458=>'L',
+41459=>'L',
+41460=>'L',
+41461=>'L',
+41462=>'L',
+41463=>'L',
+41464=>'L',
+41465=>'L',
+41466=>'L',
+41467=>'L',
+41468=>'L',
+41469=>'L',
+41470=>'L',
+41471=>'L',
+41472=>'L',
+41473=>'L',
+41474=>'L',
+41475=>'L',
+41476=>'L',
+41477=>'L',
+41478=>'L',
+41479=>'L',
+41480=>'L',
+41481=>'L',
+41482=>'L',
+41483=>'L',
+41484=>'L',
+41485=>'L',
+41486=>'L',
+41487=>'L',
+41488=>'L',
+41489=>'L',
+41490=>'L',
+41491=>'L',
+41492=>'L',
+41493=>'L',
+41494=>'L',
+41495=>'L',
+41496=>'L',
+41497=>'L',
+41498=>'L',
+41499=>'L',
+41500=>'L',
+41501=>'L',
+41502=>'L',
+41503=>'L',
+41504=>'L',
+41505=>'L',
+41506=>'L',
+41507=>'L',
+41508=>'L',
+41509=>'L',
+41510=>'L',
+41511=>'L',
+41512=>'L',
+41513=>'L',
+41514=>'L',
+41515=>'L',
+41516=>'L',
+41517=>'L',
+41518=>'L',
+41519=>'L',
+41520=>'L',
+41521=>'L',
+41522=>'L',
+41523=>'L',
+41524=>'L',
+41525=>'L',
+41526=>'L',
+41527=>'L',
+41528=>'L',
+41529=>'L',
+41530=>'L',
+41531=>'L',
+41532=>'L',
+41533=>'L',
+41534=>'L',
+41535=>'L',
+41536=>'L',
+41537=>'L',
+41538=>'L',
+41539=>'L',
+41540=>'L',
+41541=>'L',
+41542=>'L',
+41543=>'L',
+41544=>'L',
+41545=>'L',
+41546=>'L',
+41547=>'L',
+41548=>'L',
+41549=>'L',
+41550=>'L',
+41551=>'L',
+41552=>'L',
+41553=>'L',
+41554=>'L',
+41555=>'L',
+41556=>'L',
+41557=>'L',
+41558=>'L',
+41559=>'L',
+41560=>'L',
+41561=>'L',
+41562=>'L',
+41563=>'L',
+41564=>'L',
+41565=>'L',
+41566=>'L',
+41567=>'L',
+41568=>'L',
+41569=>'L',
+41570=>'L',
+41571=>'L',
+41572=>'L',
+41573=>'L',
+41574=>'L',
+41575=>'L',
+41576=>'L',
+41577=>'L',
+41578=>'L',
+41579=>'L',
+41580=>'L',
+41581=>'L',
+41582=>'L',
+41583=>'L',
+41584=>'L',
+41585=>'L',
+41586=>'L',
+41587=>'L',
+41588=>'L',
+41589=>'L',
+41590=>'L',
+41591=>'L',
+41592=>'L',
+41593=>'L',
+41594=>'L',
+41595=>'L',
+41596=>'L',
+41597=>'L',
+41598=>'L',
+41599=>'L',
+41600=>'L',
+41601=>'L',
+41602=>'L',
+41603=>'L',
+41604=>'L',
+41605=>'L',
+41606=>'L',
+41607=>'L',
+41608=>'L',
+41609=>'L',
+41610=>'L',
+41611=>'L',
+41612=>'L',
+41613=>'L',
+41614=>'L',
+41615=>'L',
+41616=>'L',
+41617=>'L',
+41618=>'L',
+41619=>'L',
+41620=>'L',
+41621=>'L',
+41622=>'L',
+41623=>'L',
+41624=>'L',
+41625=>'L',
+41626=>'L',
+41627=>'L',
+41628=>'L',
+41629=>'L',
+41630=>'L',
+41631=>'L',
+41632=>'L',
+41633=>'L',
+41634=>'L',
+41635=>'L',
+41636=>'L',
+41637=>'L',
+41638=>'L',
+41639=>'L',
+41640=>'L',
+41641=>'L',
+41642=>'L',
+41643=>'L',
+41644=>'L',
+41645=>'L',
+41646=>'L',
+41647=>'L',
+41648=>'L',
+41649=>'L',
+41650=>'L',
+41651=>'L',
+41652=>'L',
+41653=>'L',
+41654=>'L',
+41655=>'L',
+41656=>'L',
+41657=>'L',
+41658=>'L',
+41659=>'L',
+41660=>'L',
+41661=>'L',
+41662=>'L',
+41663=>'L',
+41664=>'L',
+41665=>'L',
+41666=>'L',
+41667=>'L',
+41668=>'L',
+41669=>'L',
+41670=>'L',
+41671=>'L',
+41672=>'L',
+41673=>'L',
+41674=>'L',
+41675=>'L',
+41676=>'L',
+41677=>'L',
+41678=>'L',
+41679=>'L',
+41680=>'L',
+41681=>'L',
+41682=>'L',
+41683=>'L',
+41684=>'L',
+41685=>'L',
+41686=>'L',
+41687=>'L',
+41688=>'L',
+41689=>'L',
+41690=>'L',
+41691=>'L',
+41692=>'L',
+41693=>'L',
+41694=>'L',
+41695=>'L',
+41696=>'L',
+41697=>'L',
+41698=>'L',
+41699=>'L',
+41700=>'L',
+41701=>'L',
+41702=>'L',
+41703=>'L',
+41704=>'L',
+41705=>'L',
+41706=>'L',
+41707=>'L',
+41708=>'L',
+41709=>'L',
+41710=>'L',
+41711=>'L',
+41712=>'L',
+41713=>'L',
+41714=>'L',
+41715=>'L',
+41716=>'L',
+41717=>'L',
+41718=>'L',
+41719=>'L',
+41720=>'L',
+41721=>'L',
+41722=>'L',
+41723=>'L',
+41724=>'L',
+41725=>'L',
+41726=>'L',
+41727=>'L',
+41728=>'L',
+41729=>'L',
+41730=>'L',
+41731=>'L',
+41732=>'L',
+41733=>'L',
+41734=>'L',
+41735=>'L',
+41736=>'L',
+41737=>'L',
+41738=>'L',
+41739=>'L',
+41740=>'L',
+41741=>'L',
+41742=>'L',
+41743=>'L',
+41744=>'L',
+41745=>'L',
+41746=>'L',
+41747=>'L',
+41748=>'L',
+41749=>'L',
+41750=>'L',
+41751=>'L',
+41752=>'L',
+41753=>'L',
+41754=>'L',
+41755=>'L',
+41756=>'L',
+41757=>'L',
+41758=>'L',
+41759=>'L',
+41760=>'L',
+41761=>'L',
+41762=>'L',
+41763=>'L',
+41764=>'L',
+41765=>'L',
+41766=>'L',
+41767=>'L',
+41768=>'L',
+41769=>'L',
+41770=>'L',
+41771=>'L',
+41772=>'L',
+41773=>'L',
+41774=>'L',
+41775=>'L',
+41776=>'L',
+41777=>'L',
+41778=>'L',
+41779=>'L',
+41780=>'L',
+41781=>'L',
+41782=>'L',
+41783=>'L',
+41784=>'L',
+41785=>'L',
+41786=>'L',
+41787=>'L',
+41788=>'L',
+41789=>'L',
+41790=>'L',
+41791=>'L',
+41792=>'L',
+41793=>'L',
+41794=>'L',
+41795=>'L',
+41796=>'L',
+41797=>'L',
+41798=>'L',
+41799=>'L',
+41800=>'L',
+41801=>'L',
+41802=>'L',
+41803=>'L',
+41804=>'L',
+41805=>'L',
+41806=>'L',
+41807=>'L',
+41808=>'L',
+41809=>'L',
+41810=>'L',
+41811=>'L',
+41812=>'L',
+41813=>'L',
+41814=>'L',
+41815=>'L',
+41816=>'L',
+41817=>'L',
+41818=>'L',
+41819=>'L',
+41820=>'L',
+41821=>'L',
+41822=>'L',
+41823=>'L',
+41824=>'L',
+41825=>'L',
+41826=>'L',
+41827=>'L',
+41828=>'L',
+41829=>'L',
+41830=>'L',
+41831=>'L',
+41832=>'L',
+41833=>'L',
+41834=>'L',
+41835=>'L',
+41836=>'L',
+41837=>'L',
+41838=>'L',
+41839=>'L',
+41840=>'L',
+41841=>'L',
+41842=>'L',
+41843=>'L',
+41844=>'L',
+41845=>'L',
+41846=>'L',
+41847=>'L',
+41848=>'L',
+41849=>'L',
+41850=>'L',
+41851=>'L',
+41852=>'L',
+41853=>'L',
+41854=>'L',
+41855=>'L',
+41856=>'L',
+41857=>'L',
+41858=>'L',
+41859=>'L',
+41860=>'L',
+41861=>'L',
+41862=>'L',
+41863=>'L',
+41864=>'L',
+41865=>'L',
+41866=>'L',
+41867=>'L',
+41868=>'L',
+41869=>'L',
+41870=>'L',
+41871=>'L',
+41872=>'L',
+41873=>'L',
+41874=>'L',
+41875=>'L',
+41876=>'L',
+41877=>'L',
+41878=>'L',
+41879=>'L',
+41880=>'L',
+41881=>'L',
+41882=>'L',
+41883=>'L',
+41884=>'L',
+41885=>'L',
+41886=>'L',
+41887=>'L',
+41888=>'L',
+41889=>'L',
+41890=>'L',
+41891=>'L',
+41892=>'L',
+41893=>'L',
+41894=>'L',
+41895=>'L',
+41896=>'L',
+41897=>'L',
+41898=>'L',
+41899=>'L',
+41900=>'L',
+41901=>'L',
+41902=>'L',
+41903=>'L',
+41904=>'L',
+41905=>'L',
+41906=>'L',
+41907=>'L',
+41908=>'L',
+41909=>'L',
+41910=>'L',
+41911=>'L',
+41912=>'L',
+41913=>'L',
+41914=>'L',
+41915=>'L',
+41916=>'L',
+41917=>'L',
+41918=>'L',
+41919=>'L',
+41920=>'L',
+41921=>'L',
+41922=>'L',
+41923=>'L',
+41924=>'L',
+41925=>'L',
+41926=>'L',
+41927=>'L',
+41928=>'L',
+41929=>'L',
+41930=>'L',
+41931=>'L',
+41932=>'L',
+41933=>'L',
+41934=>'L',
+41935=>'L',
+41936=>'L',
+41937=>'L',
+41938=>'L',
+41939=>'L',
+41940=>'L',
+41941=>'L',
+41942=>'L',
+41943=>'L',
+41944=>'L',
+41945=>'L',
+41946=>'L',
+41947=>'L',
+41948=>'L',
+41949=>'L',
+41950=>'L',
+41951=>'L',
+41952=>'L',
+41953=>'L',
+41954=>'L',
+41955=>'L',
+41956=>'L',
+41957=>'L',
+41958=>'L',
+41959=>'L',
+41960=>'L',
+41961=>'L',
+41962=>'L',
+41963=>'L',
+41964=>'L',
+41965=>'L',
+41966=>'L',
+41967=>'L',
+41968=>'L',
+41969=>'L',
+41970=>'L',
+41971=>'L',
+41972=>'L',
+41973=>'L',
+41974=>'L',
+41975=>'L',
+41976=>'L',
+41977=>'L',
+41978=>'L',
+41979=>'L',
+41980=>'L',
+41981=>'L',
+41982=>'L',
+41983=>'L',
+41984=>'L',
+41985=>'L',
+41986=>'L',
+41987=>'L',
+41988=>'L',
+41989=>'L',
+41990=>'L',
+41991=>'L',
+41992=>'L',
+41993=>'L',
+41994=>'L',
+41995=>'L',
+41996=>'L',
+41997=>'L',
+41998=>'L',
+41999=>'L',
+42000=>'L',
+42001=>'L',
+42002=>'L',
+42003=>'L',
+42004=>'L',
+42005=>'L',
+42006=>'L',
+42007=>'L',
+42008=>'L',
+42009=>'L',
+42010=>'L',
+42011=>'L',
+42012=>'L',
+42013=>'L',
+42014=>'L',
+42015=>'L',
+42016=>'L',
+42017=>'L',
+42018=>'L',
+42019=>'L',
+42020=>'L',
+42021=>'L',
+42022=>'L',
+42023=>'L',
+42024=>'L',
+42025=>'L',
+42026=>'L',
+42027=>'L',
+42028=>'L',
+42029=>'L',
+42030=>'L',
+42031=>'L',
+42032=>'L',
+42033=>'L',
+42034=>'L',
+42035=>'L',
+42036=>'L',
+42037=>'L',
+42038=>'L',
+42039=>'L',
+42040=>'L',
+42041=>'L',
+42042=>'L',
+42043=>'L',
+42044=>'L',
+42045=>'L',
+42046=>'L',
+42047=>'L',
+42048=>'L',
+42049=>'L',
+42050=>'L',
+42051=>'L',
+42052=>'L',
+42053=>'L',
+42054=>'L',
+42055=>'L',
+42056=>'L',
+42057=>'L',
+42058=>'L',
+42059=>'L',
+42060=>'L',
+42061=>'L',
+42062=>'L',
+42063=>'L',
+42064=>'L',
+42065=>'L',
+42066=>'L',
+42067=>'L',
+42068=>'L',
+42069=>'L',
+42070=>'L',
+42071=>'L',
+42072=>'L',
+42073=>'L',
+42074=>'L',
+42075=>'L',
+42076=>'L',
+42077=>'L',
+42078=>'L',
+42079=>'L',
+42080=>'L',
+42081=>'L',
+42082=>'L',
+42083=>'L',
+42084=>'L',
+42085=>'L',
+42086=>'L',
+42087=>'L',
+42088=>'L',
+42089=>'L',
+42090=>'L',
+42091=>'L',
+42092=>'L',
+42093=>'L',
+42094=>'L',
+42095=>'L',
+42096=>'L',
+42097=>'L',
+42098=>'L',
+42099=>'L',
+42100=>'L',
+42101=>'L',
+42102=>'L',
+42103=>'L',
+42104=>'L',
+42105=>'L',
+42106=>'L',
+42107=>'L',
+42108=>'L',
+42109=>'L',
+42110=>'L',
+42111=>'L',
+42112=>'L',
+42113=>'L',
+42114=>'L',
+42115=>'L',
+42116=>'L',
+42117=>'L',
+42118=>'L',
+42119=>'L',
+42120=>'L',
+42121=>'L',
+42122=>'L',
+42123=>'L',
+42124=>'L',
+42128=>'ON',
+42129=>'ON',
+42130=>'ON',
+42131=>'ON',
+42132=>'ON',
+42133=>'ON',
+42134=>'ON',
+42135=>'ON',
+42136=>'ON',
+42137=>'ON',
+42138=>'ON',
+42139=>'ON',
+42140=>'ON',
+42141=>'ON',
+42142=>'ON',
+42143=>'ON',
+42144=>'ON',
+42145=>'ON',
+42146=>'ON',
+42147=>'ON',
+42148=>'ON',
+42149=>'ON',
+42150=>'ON',
+42151=>'ON',
+42152=>'ON',
+42153=>'ON',
+42154=>'ON',
+42155=>'ON',
+42156=>'ON',
+42157=>'ON',
+42158=>'ON',
+42159=>'ON',
+42160=>'ON',
+42161=>'ON',
+42162=>'ON',
+42163=>'ON',
+42164=>'ON',
+42165=>'ON',
+42166=>'ON',
+42167=>'ON',
+42168=>'ON',
+42169=>'ON',
+42170=>'ON',
+42171=>'ON',
+42172=>'ON',
+42173=>'ON',
+42174=>'ON',
+42175=>'ON',
+42176=>'ON',
+42177=>'ON',
+42178=>'ON',
+42179=>'ON',
+42180=>'ON',
+42181=>'ON',
+42182=>'ON',
+42752=>'ON',
+42753=>'ON',
+42754=>'ON',
+42755=>'ON',
+42756=>'ON',
+42757=>'ON',
+42758=>'ON',
+42759=>'ON',
+42760=>'ON',
+42761=>'ON',
+42762=>'ON',
+42763=>'ON',
+42764=>'ON',
+42765=>'ON',
+42766=>'ON',
+42767=>'ON',
+42768=>'ON',
+42769=>'ON',
+42770=>'ON',
+42771=>'ON',
+42772=>'ON',
+42773=>'ON',
+42774=>'ON',
+42775=>'ON',
+42776=>'ON',
+42777=>'ON',
+42778=>'ON',
+42784=>'ON',
+42785=>'ON',
+43008=>'L',
+43009=>'L',
+43010=>'NSM',
+43011=>'L',
+43012=>'L',
+43013=>'L',
+43014=>'NSM',
+43015=>'L',
+43016=>'L',
+43017=>'L',
+43018=>'L',
+43019=>'NSM',
+43020=>'L',
+43021=>'L',
+43022=>'L',
+43023=>'L',
+43024=>'L',
+43025=>'L',
+43026=>'L',
+43027=>'L',
+43028=>'L',
+43029=>'L',
+43030=>'L',
+43031=>'L',
+43032=>'L',
+43033=>'L',
+43034=>'L',
+43035=>'L',
+43036=>'L',
+43037=>'L',
+43038=>'L',
+43039=>'L',
+43040=>'L',
+43041=>'L',
+43042=>'L',
+43043=>'L',
+43044=>'L',
+43045=>'NSM',
+43046=>'NSM',
+43047=>'L',
+43048=>'ON',
+43049=>'ON',
+43050=>'ON',
+43051=>'ON',
+43072=>'L',
+43073=>'L',
+43074=>'L',
+43075=>'L',
+43076=>'L',
+43077=>'L',
+43078=>'L',
+43079=>'L',
+43080=>'L',
+43081=>'L',
+43082=>'L',
+43083=>'L',
+43084=>'L',
+43085=>'L',
+43086=>'L',
+43087=>'L',
+43088=>'L',
+43089=>'L',
+43090=>'L',
+43091=>'L',
+43092=>'L',
+43093=>'L',
+43094=>'L',
+43095=>'L',
+43096=>'L',
+43097=>'L',
+43098=>'L',
+43099=>'L',
+43100=>'L',
+43101=>'L',
+43102=>'L',
+43103=>'L',
+43104=>'L',
+43105=>'L',
+43106=>'L',
+43107=>'L',
+43108=>'L',
+43109=>'L',
+43110=>'L',
+43111=>'L',
+43112=>'L',
+43113=>'L',
+43114=>'L',
+43115=>'L',
+43116=>'L',
+43117=>'L',
+43118=>'L',
+43119=>'L',
+43120=>'L',
+43121=>'L',
+43122=>'L',
+43123=>'L',
+43124=>'ON',
+43125=>'ON',
+43126=>'ON',
+43127=>'ON',
+44032=>'L',
+55203=>'L',
+55296=>'L',
+56191=>'L',
+56192=>'L',
+56319=>'L',
+56320=>'L',
+57343=>'L',
+57344=>'L',
+63743=>'L',
+63744=>'L',
+63745=>'L',
+63746=>'L',
+63747=>'L',
+63748=>'L',
+63749=>'L',
+63750=>'L',
+63751=>'L',
+63752=>'L',
+63753=>'L',
+63754=>'L',
+63755=>'L',
+63756=>'L',
+63757=>'L',
+63758=>'L',
+63759=>'L',
+63760=>'L',
+63761=>'L',
+63762=>'L',
+63763=>'L',
+63764=>'L',
+63765=>'L',
+63766=>'L',
+63767=>'L',
+63768=>'L',
+63769=>'L',
+63770=>'L',
+63771=>'L',
+63772=>'L',
+63773=>'L',
+63774=>'L',
+63775=>'L',
+63776=>'L',
+63777=>'L',
+63778=>'L',
+63779=>'L',
+63780=>'L',
+63781=>'L',
+63782=>'L',
+63783=>'L',
+63784=>'L',
+63785=>'L',
+63786=>'L',
+63787=>'L',
+63788=>'L',
+63789=>'L',
+63790=>'L',
+63791=>'L',
+63792=>'L',
+63793=>'L',
+63794=>'L',
+63795=>'L',
+63796=>'L',
+63797=>'L',
+63798=>'L',
+63799=>'L',
+63800=>'L',
+63801=>'L',
+63802=>'L',
+63803=>'L',
+63804=>'L',
+63805=>'L',
+63806=>'L',
+63807=>'L',
+63808=>'L',
+63809=>'L',
+63810=>'L',
+63811=>'L',
+63812=>'L',
+63813=>'L',
+63814=>'L',
+63815=>'L',
+63816=>'L',
+63817=>'L',
+63818=>'L',
+63819=>'L',
+63820=>'L',
+63821=>'L',
+63822=>'L',
+63823=>'L',
+63824=>'L',
+63825=>'L',
+63826=>'L',
+63827=>'L',
+63828=>'L',
+63829=>'L',
+63830=>'L',
+63831=>'L',
+63832=>'L',
+63833=>'L',
+63834=>'L',
+63835=>'L',
+63836=>'L',
+63837=>'L',
+63838=>'L',
+63839=>'L',
+63840=>'L',
+63841=>'L',
+63842=>'L',
+63843=>'L',
+63844=>'L',
+63845=>'L',
+63846=>'L',
+63847=>'L',
+63848=>'L',
+63849=>'L',
+63850=>'L',
+63851=>'L',
+63852=>'L',
+63853=>'L',
+63854=>'L',
+63855=>'L',
+63856=>'L',
+63857=>'L',
+63858=>'L',
+63859=>'L',
+63860=>'L',
+63861=>'L',
+63862=>'L',
+63863=>'L',
+63864=>'L',
+63865=>'L',
+63866=>'L',
+63867=>'L',
+63868=>'L',
+63869=>'L',
+63870=>'L',
+63871=>'L',
+63872=>'L',
+63873=>'L',
+63874=>'L',
+63875=>'L',
+63876=>'L',
+63877=>'L',
+63878=>'L',
+63879=>'L',
+63880=>'L',
+63881=>'L',
+63882=>'L',
+63883=>'L',
+63884=>'L',
+63885=>'L',
+63886=>'L',
+63887=>'L',
+63888=>'L',
+63889=>'L',
+63890=>'L',
+63891=>'L',
+63892=>'L',
+63893=>'L',
+63894=>'L',
+63895=>'L',
+63896=>'L',
+63897=>'L',
+63898=>'L',
+63899=>'L',
+63900=>'L',
+63901=>'L',
+63902=>'L',
+63903=>'L',
+63904=>'L',
+63905=>'L',
+63906=>'L',
+63907=>'L',
+63908=>'L',
+63909=>'L',
+63910=>'L',
+63911=>'L',
+63912=>'L',
+63913=>'L',
+63914=>'L',
+63915=>'L',
+63916=>'L',
+63917=>'L',
+63918=>'L',
+63919=>'L',
+63920=>'L',
+63921=>'L',
+63922=>'L',
+63923=>'L',
+63924=>'L',
+63925=>'L',
+63926=>'L',
+63927=>'L',
+63928=>'L',
+63929=>'L',
+63930=>'L',
+63931=>'L',
+63932=>'L',
+63933=>'L',
+63934=>'L',
+63935=>'L',
+63936=>'L',
+63937=>'L',
+63938=>'L',
+63939=>'L',
+63940=>'L',
+63941=>'L',
+63942=>'L',
+63943=>'L',
+63944=>'L',
+63945=>'L',
+63946=>'L',
+63947=>'L',
+63948=>'L',
+63949=>'L',
+63950=>'L',
+63951=>'L',
+63952=>'L',
+63953=>'L',
+63954=>'L',
+63955=>'L',
+63956=>'L',
+63957=>'L',
+63958=>'L',
+63959=>'L',
+63960=>'L',
+63961=>'L',
+63962=>'L',
+63963=>'L',
+63964=>'L',
+63965=>'L',
+63966=>'L',
+63967=>'L',
+63968=>'L',
+63969=>'L',
+63970=>'L',
+63971=>'L',
+63972=>'L',
+63973=>'L',
+63974=>'L',
+63975=>'L',
+63976=>'L',
+63977=>'L',
+63978=>'L',
+63979=>'L',
+63980=>'L',
+63981=>'L',
+63982=>'L',
+63983=>'L',
+63984=>'L',
+63985=>'L',
+63986=>'L',
+63987=>'L',
+63988=>'L',
+63989=>'L',
+63990=>'L',
+63991=>'L',
+63992=>'L',
+63993=>'L',
+63994=>'L',
+63995=>'L',
+63996=>'L',
+63997=>'L',
+63998=>'L',
+63999=>'L',
+64000=>'L',
+64001=>'L',
+64002=>'L',
+64003=>'L',
+64004=>'L',
+64005=>'L',
+64006=>'L',
+64007=>'L',
+64008=>'L',
+64009=>'L',
+64010=>'L',
+64011=>'L',
+64012=>'L',
+64013=>'L',
+64014=>'L',
+64015=>'L',
+64016=>'L',
+64017=>'L',
+64018=>'L',
+64019=>'L',
+64020=>'L',
+64021=>'L',
+64022=>'L',
+64023=>'L',
+64024=>'L',
+64025=>'L',
+64026=>'L',
+64027=>'L',
+64028=>'L',
+64029=>'L',
+64030=>'L',
+64031=>'L',
+64032=>'L',
+64033=>'L',
+64034=>'L',
+64035=>'L',
+64036=>'L',
+64037=>'L',
+64038=>'L',
+64039=>'L',
+64040=>'L',
+64041=>'L',
+64042=>'L',
+64043=>'L',
+64044=>'L',
+64045=>'L',
+64048=>'L',
+64049=>'L',
+64050=>'L',
+64051=>'L',
+64052=>'L',
+64053=>'L',
+64054=>'L',
+64055=>'L',
+64056=>'L',
+64057=>'L',
+64058=>'L',
+64059=>'L',
+64060=>'L',
+64061=>'L',
+64062=>'L',
+64063=>'L',
+64064=>'L',
+64065=>'L',
+64066=>'L',
+64067=>'L',
+64068=>'L',
+64069=>'L',
+64070=>'L',
+64071=>'L',
+64072=>'L',
+64073=>'L',
+64074=>'L',
+64075=>'L',
+64076=>'L',
+64077=>'L',
+64078=>'L',
+64079=>'L',
+64080=>'L',
+64081=>'L',
+64082=>'L',
+64083=>'L',
+64084=>'L',
+64085=>'L',
+64086=>'L',
+64087=>'L',
+64088=>'L',
+64089=>'L',
+64090=>'L',
+64091=>'L',
+64092=>'L',
+64093=>'L',
+64094=>'L',
+64095=>'L',
+64096=>'L',
+64097=>'L',
+64098=>'L',
+64099=>'L',
+64100=>'L',
+64101=>'L',
+64102=>'L',
+64103=>'L',
+64104=>'L',
+64105=>'L',
+64106=>'L',
+64112=>'L',
+64113=>'L',
+64114=>'L',
+64115=>'L',
+64116=>'L',
+64117=>'L',
+64118=>'L',
+64119=>'L',
+64120=>'L',
+64121=>'L',
+64122=>'L',
+64123=>'L',
+64124=>'L',
+64125=>'L',
+64126=>'L',
+64127=>'L',
+64128=>'L',
+64129=>'L',
+64130=>'L',
+64131=>'L',
+64132=>'L',
+64133=>'L',
+64134=>'L',
+64135=>'L',
+64136=>'L',
+64137=>'L',
+64138=>'L',
+64139=>'L',
+64140=>'L',
+64141=>'L',
+64142=>'L',
+64143=>'L',
+64144=>'L',
+64145=>'L',
+64146=>'L',
+64147=>'L',
+64148=>'L',
+64149=>'L',
+64150=>'L',
+64151=>'L',
+64152=>'L',
+64153=>'L',
+64154=>'L',
+64155=>'L',
+64156=>'L',
+64157=>'L',
+64158=>'L',
+64159=>'L',
+64160=>'L',
+64161=>'L',
+64162=>'L',
+64163=>'L',
+64164=>'L',
+64165=>'L',
+64166=>'L',
+64167=>'L',
+64168=>'L',
+64169=>'L',
+64170=>'L',
+64171=>'L',
+64172=>'L',
+64173=>'L',
+64174=>'L',
+64175=>'L',
+64176=>'L',
+64177=>'L',
+64178=>'L',
+64179=>'L',
+64180=>'L',
+64181=>'L',
+64182=>'L',
+64183=>'L',
+64184=>'L',
+64185=>'L',
+64186=>'L',
+64187=>'L',
+64188=>'L',
+64189=>'L',
+64190=>'L',
+64191=>'L',
+64192=>'L',
+64193=>'L',
+64194=>'L',
+64195=>'L',
+64196=>'L',
+64197=>'L',
+64198=>'L',
+64199=>'L',
+64200=>'L',
+64201=>'L',
+64202=>'L',
+64203=>'L',
+64204=>'L',
+64205=>'L',
+64206=>'L',
+64207=>'L',
+64208=>'L',
+64209=>'L',
+64210=>'L',
+64211=>'L',
+64212=>'L',
+64213=>'L',
+64214=>'L',
+64215=>'L',
+64216=>'L',
+64217=>'L',
+64256=>'L',
+64257=>'L',
+64258=>'L',
+64259=>'L',
+64260=>'L',
+64261=>'L',
+64262=>'L',
+64275=>'L',
+64276=>'L',
+64277=>'L',
+64278=>'L',
+64279=>'L',
+64285=>'R',
+64286=>'NSM',
+64287=>'R',
+64288=>'R',
+64289=>'R',
+64290=>'R',
+64291=>'R',
+64292=>'R',
+64293=>'R',
+64294=>'R',
+64295=>'R',
+64296=>'R',
+64297=>'ES',
+64298=>'R',
+64299=>'R',
+64300=>'R',
+64301=>'R',
+64302=>'R',
+64303=>'R',
+64304=>'R',
+64305=>'R',
+64306=>'R',
+64307=>'R',
+64308=>'R',
+64309=>'R',
+64310=>'R',
+64312=>'R',
+64313=>'R',
+64314=>'R',
+64315=>'R',
+64316=>'R',
+64318=>'R',
+64320=>'R',
+64321=>'R',
+64323=>'R',
+64324=>'R',
+64326=>'R',
+64327=>'R',
+64328=>'R',
+64329=>'R',
+64330=>'R',
+64331=>'R',
+64332=>'R',
+64333=>'R',
+64334=>'R',
+64335=>'R',
+64336=>'AL',
+64337=>'AL',
+64338=>'AL',
+64339=>'AL',
+64340=>'AL',
+64341=>'AL',
+64342=>'AL',
+64343=>'AL',
+64344=>'AL',
+64345=>'AL',
+64346=>'AL',
+64347=>'AL',
+64348=>'AL',
+64349=>'AL',
+64350=>'AL',
+64351=>'AL',
+64352=>'AL',
+64353=>'AL',
+64354=>'AL',
+64355=>'AL',
+64356=>'AL',
+64357=>'AL',
+64358=>'AL',
+64359=>'AL',
+64360=>'AL',
+64361=>'AL',
+64362=>'AL',
+64363=>'AL',
+64364=>'AL',
+64365=>'AL',
+64366=>'AL',
+64367=>'AL',
+64368=>'AL',
+64369=>'AL',
+64370=>'AL',
+64371=>'AL',
+64372=>'AL',
+64373=>'AL',
+64374=>'AL',
+64375=>'AL',
+64376=>'AL',
+64377=>'AL',
+64378=>'AL',
+64379=>'AL',
+64380=>'AL',
+64381=>'AL',
+64382=>'AL',
+64383=>'AL',
+64384=>'AL',
+64385=>'AL',
+64386=>'AL',
+64387=>'AL',
+64388=>'AL',
+64389=>'AL',
+64390=>'AL',
+64391=>'AL',
+64392=>'AL',
+64393=>'AL',
+64394=>'AL',
+64395=>'AL',
+64396=>'AL',
+64397=>'AL',
+64398=>'AL',
+64399=>'AL',
+64400=>'AL',
+64401=>'AL',
+64402=>'AL',
+64403=>'AL',
+64404=>'AL',
+64405=>'AL',
+64406=>'AL',
+64407=>'AL',
+64408=>'AL',
+64409=>'AL',
+64410=>'AL',
+64411=>'AL',
+64412=>'AL',
+64413=>'AL',
+64414=>'AL',
+64415=>'AL',
+64416=>'AL',
+64417=>'AL',
+64418=>'AL',
+64419=>'AL',
+64420=>'AL',
+64421=>'AL',
+64422=>'AL',
+64423=>'AL',
+64424=>'AL',
+64425=>'AL',
+64426=>'AL',
+64427=>'AL',
+64428=>'AL',
+64429=>'AL',
+64430=>'AL',
+64431=>'AL',
+64432=>'AL',
+64433=>'AL',
+64467=>'AL',
+64468=>'AL',
+64469=>'AL',
+64470=>'AL',
+64471=>'AL',
+64472=>'AL',
+64473=>'AL',
+64474=>'AL',
+64475=>'AL',
+64476=>'AL',
+64477=>'AL',
+64478=>'AL',
+64479=>'AL',
+64480=>'AL',
+64481=>'AL',
+64482=>'AL',
+64483=>'AL',
+64484=>'AL',
+64485=>'AL',
+64486=>'AL',
+64487=>'AL',
+64488=>'AL',
+64489=>'AL',
+64490=>'AL',
+64491=>'AL',
+64492=>'AL',
+64493=>'AL',
+64494=>'AL',
+64495=>'AL',
+64496=>'AL',
+64497=>'AL',
+64498=>'AL',
+64499=>'AL',
+64500=>'AL',
+64501=>'AL',
+64502=>'AL',
+64503=>'AL',
+64504=>'AL',
+64505=>'AL',
+64506=>'AL',
+64507=>'AL',
+64508=>'AL',
+64509=>'AL',
+64510=>'AL',
+64511=>'AL',
+64512=>'AL',
+64513=>'AL',
+64514=>'AL',
+64515=>'AL',
+64516=>'AL',
+64517=>'AL',
+64518=>'AL',
+64519=>'AL',
+64520=>'AL',
+64521=>'AL',
+64522=>'AL',
+64523=>'AL',
+64524=>'AL',
+64525=>'AL',
+64526=>'AL',
+64527=>'AL',
+64528=>'AL',
+64529=>'AL',
+64530=>'AL',
+64531=>'AL',
+64532=>'AL',
+64533=>'AL',
+64534=>'AL',
+64535=>'AL',
+64536=>'AL',
+64537=>'AL',
+64538=>'AL',
+64539=>'AL',
+64540=>'AL',
+64541=>'AL',
+64542=>'AL',
+64543=>'AL',
+64544=>'AL',
+64545=>'AL',
+64546=>'AL',
+64547=>'AL',
+64548=>'AL',
+64549=>'AL',
+64550=>'AL',
+64551=>'AL',
+64552=>'AL',
+64553=>'AL',
+64554=>'AL',
+64555=>'AL',
+64556=>'AL',
+64557=>'AL',
+64558=>'AL',
+64559=>'AL',
+64560=>'AL',
+64561=>'AL',
+64562=>'AL',
+64563=>'AL',
+64564=>'AL',
+64565=>'AL',
+64566=>'AL',
+64567=>'AL',
+64568=>'AL',
+64569=>'AL',
+64570=>'AL',
+64571=>'AL',
+64572=>'AL',
+64573=>'AL',
+64574=>'AL',
+64575=>'AL',
+64576=>'AL',
+64577=>'AL',
+64578=>'AL',
+64579=>'AL',
+64580=>'AL',
+64581=>'AL',
+64582=>'AL',
+64583=>'AL',
+64584=>'AL',
+64585=>'AL',
+64586=>'AL',
+64587=>'AL',
+64588=>'AL',
+64589=>'AL',
+64590=>'AL',
+64591=>'AL',
+64592=>'AL',
+64593=>'AL',
+64594=>'AL',
+64595=>'AL',
+64596=>'AL',
+64597=>'AL',
+64598=>'AL',
+64599=>'AL',
+64600=>'AL',
+64601=>'AL',
+64602=>'AL',
+64603=>'AL',
+64604=>'AL',
+64605=>'AL',
+64606=>'AL',
+64607=>'AL',
+64608=>'AL',
+64609=>'AL',
+64610=>'AL',
+64611=>'AL',
+64612=>'AL',
+64613=>'AL',
+64614=>'AL',
+64615=>'AL',
+64616=>'AL',
+64617=>'AL',
+64618=>'AL',
+64619=>'AL',
+64620=>'AL',
+64621=>'AL',
+64622=>'AL',
+64623=>'AL',
+64624=>'AL',
+64625=>'AL',
+64626=>'AL',
+64627=>'AL',
+64628=>'AL',
+64629=>'AL',
+64630=>'AL',
+64631=>'AL',
+64632=>'AL',
+64633=>'AL',
+64634=>'AL',
+64635=>'AL',
+64636=>'AL',
+64637=>'AL',
+64638=>'AL',
+64639=>'AL',
+64640=>'AL',
+64641=>'AL',
+64642=>'AL',
+64643=>'AL',
+64644=>'AL',
+64645=>'AL',
+64646=>'AL',
+64647=>'AL',
+64648=>'AL',
+64649=>'AL',
+64650=>'AL',
+64651=>'AL',
+64652=>'AL',
+64653=>'AL',
+64654=>'AL',
+64655=>'AL',
+64656=>'AL',
+64657=>'AL',
+64658=>'AL',
+64659=>'AL',
+64660=>'AL',
+64661=>'AL',
+64662=>'AL',
+64663=>'AL',
+64664=>'AL',
+64665=>'AL',
+64666=>'AL',
+64667=>'AL',
+64668=>'AL',
+64669=>'AL',
+64670=>'AL',
+64671=>'AL',
+64672=>'AL',
+64673=>'AL',
+64674=>'AL',
+64675=>'AL',
+64676=>'AL',
+64677=>'AL',
+64678=>'AL',
+64679=>'AL',
+64680=>'AL',
+64681=>'AL',
+64682=>'AL',
+64683=>'AL',
+64684=>'AL',
+64685=>'AL',
+64686=>'AL',
+64687=>'AL',
+64688=>'AL',
+64689=>'AL',
+64690=>'AL',
+64691=>'AL',
+64692=>'AL',
+64693=>'AL',
+64694=>'AL',
+64695=>'AL',
+64696=>'AL',
+64697=>'AL',
+64698=>'AL',
+64699=>'AL',
+64700=>'AL',
+64701=>'AL',
+64702=>'AL',
+64703=>'AL',
+64704=>'AL',
+64705=>'AL',
+64706=>'AL',
+64707=>'AL',
+64708=>'AL',
+64709=>'AL',
+64710=>'AL',
+64711=>'AL',
+64712=>'AL',
+64713=>'AL',
+64714=>'AL',
+64715=>'AL',
+64716=>'AL',
+64717=>'AL',
+64718=>'AL',
+64719=>'AL',
+64720=>'AL',
+64721=>'AL',
+64722=>'AL',
+64723=>'AL',
+64724=>'AL',
+64725=>'AL',
+64726=>'AL',
+64727=>'AL',
+64728=>'AL',
+64729=>'AL',
+64730=>'AL',
+64731=>'AL',
+64732=>'AL',
+64733=>'AL',
+64734=>'AL',
+64735=>'AL',
+64736=>'AL',
+64737=>'AL',
+64738=>'AL',
+64739=>'AL',
+64740=>'AL',
+64741=>'AL',
+64742=>'AL',
+64743=>'AL',
+64744=>'AL',
+64745=>'AL',
+64746=>'AL',
+64747=>'AL',
+64748=>'AL',
+64749=>'AL',
+64750=>'AL',
+64751=>'AL',
+64752=>'AL',
+64753=>'AL',
+64754=>'AL',
+64755=>'AL',
+64756=>'AL',
+64757=>'AL',
+64758=>'AL',
+64759=>'AL',
+64760=>'AL',
+64761=>'AL',
+64762=>'AL',
+64763=>'AL',
+64764=>'AL',
+64765=>'AL',
+64766=>'AL',
+64767=>'AL',
+64768=>'AL',
+64769=>'AL',
+64770=>'AL',
+64771=>'AL',
+64772=>'AL',
+64773=>'AL',
+64774=>'AL',
+64775=>'AL',
+64776=>'AL',
+64777=>'AL',
+64778=>'AL',
+64779=>'AL',
+64780=>'AL',
+64781=>'AL',
+64782=>'AL',
+64783=>'AL',
+64784=>'AL',
+64785=>'AL',
+64786=>'AL',
+64787=>'AL',
+64788=>'AL',
+64789=>'AL',
+64790=>'AL',
+64791=>'AL',
+64792=>'AL',
+64793=>'AL',
+64794=>'AL',
+64795=>'AL',
+64796=>'AL',
+64797=>'AL',
+64798=>'AL',
+64799=>'AL',
+64800=>'AL',
+64801=>'AL',
+64802=>'AL',
+64803=>'AL',
+64804=>'AL',
+64805=>'AL',
+64806=>'AL',
+64807=>'AL',
+64808=>'AL',
+64809=>'AL',
+64810=>'AL',
+64811=>'AL',
+64812=>'AL',
+64813=>'AL',
+64814=>'AL',
+64815=>'AL',
+64816=>'AL',
+64817=>'AL',
+64818=>'AL',
+64819=>'AL',
+64820=>'AL',
+64821=>'AL',
+64822=>'AL',
+64823=>'AL',
+64824=>'AL',
+64825=>'AL',
+64826=>'AL',
+64827=>'AL',
+64828=>'AL',
+64829=>'AL',
+64830=>'ON',
+64831=>'ON',
+64848=>'AL',
+64849=>'AL',
+64850=>'AL',
+64851=>'AL',
+64852=>'AL',
+64853=>'AL',
+64854=>'AL',
+64855=>'AL',
+64856=>'AL',
+64857=>'AL',
+64858=>'AL',
+64859=>'AL',
+64860=>'AL',
+64861=>'AL',
+64862=>'AL',
+64863=>'AL',
+64864=>'AL',
+64865=>'AL',
+64866=>'AL',
+64867=>'AL',
+64868=>'AL',
+64869=>'AL',
+64870=>'AL',
+64871=>'AL',
+64872=>'AL',
+64873=>'AL',
+64874=>'AL',
+64875=>'AL',
+64876=>'AL',
+64877=>'AL',
+64878=>'AL',
+64879=>'AL',
+64880=>'AL',
+64881=>'AL',
+64882=>'AL',
+64883=>'AL',
+64884=>'AL',
+64885=>'AL',
+64886=>'AL',
+64887=>'AL',
+64888=>'AL',
+64889=>'AL',
+64890=>'AL',
+64891=>'AL',
+64892=>'AL',
+64893=>'AL',
+64894=>'AL',
+64895=>'AL',
+64896=>'AL',
+64897=>'AL',
+64898=>'AL',
+64899=>'AL',
+64900=>'AL',
+64901=>'AL',
+64902=>'AL',
+64903=>'AL',
+64904=>'AL',
+64905=>'AL',
+64906=>'AL',
+64907=>'AL',
+64908=>'AL',
+64909=>'AL',
+64910=>'AL',
+64911=>'AL',
+64914=>'AL',
+64915=>'AL',
+64916=>'AL',
+64917=>'AL',
+64918=>'AL',
+64919=>'AL',
+64920=>'AL',
+64921=>'AL',
+64922=>'AL',
+64923=>'AL',
+64924=>'AL',
+64925=>'AL',
+64926=>'AL',
+64927=>'AL',
+64928=>'AL',
+64929=>'AL',
+64930=>'AL',
+64931=>'AL',
+64932=>'AL',
+64933=>'AL',
+64934=>'AL',
+64935=>'AL',
+64936=>'AL',
+64937=>'AL',
+64938=>'AL',
+64939=>'AL',
+64940=>'AL',
+64941=>'AL',
+64942=>'AL',
+64943=>'AL',
+64944=>'AL',
+64945=>'AL',
+64946=>'AL',
+64947=>'AL',
+64948=>'AL',
+64949=>'AL',
+64950=>'AL',
+64951=>'AL',
+64952=>'AL',
+64953=>'AL',
+64954=>'AL',
+64955=>'AL',
+64956=>'AL',
+64957=>'AL',
+64958=>'AL',
+64959=>'AL',
+64960=>'AL',
+64961=>'AL',
+64962=>'AL',
+64963=>'AL',
+64964=>'AL',
+64965=>'AL',
+64966=>'AL',
+64967=>'AL',
+65008=>'AL',
+65009=>'AL',
+65010=>'AL',
+65011=>'AL',
+65012=>'AL',
+65013=>'AL',
+65014=>'AL',
+65015=>'AL',
+65016=>'AL',
+65017=>'AL',
+65018=>'AL',
+65019=>'AL',
+65020=>'AL',
+65021=>'ON',
+65024=>'NSM',
+65025=>'NSM',
+65026=>'NSM',
+65027=>'NSM',
+65028=>'NSM',
+65029=>'NSM',
+65030=>'NSM',
+65031=>'NSM',
+65032=>'NSM',
+65033=>'NSM',
+65034=>'NSM',
+65035=>'NSM',
+65036=>'NSM',
+65037=>'NSM',
+65038=>'NSM',
+65039=>'NSM',
+65040=>'ON',
+65041=>'ON',
+65042=>'ON',
+65043=>'ON',
+65044=>'ON',
+65045=>'ON',
+65046=>'ON',
+65047=>'ON',
+65048=>'ON',
+65049=>'ON',
+65056=>'NSM',
+65057=>'NSM',
+65058=>'NSM',
+65059=>'NSM',
+65072=>'ON',
+65073=>'ON',
+65074=>'ON',
+65075=>'ON',
+65076=>'ON',
+65077=>'ON',
+65078=>'ON',
+65079=>'ON',
+65080=>'ON',
+65081=>'ON',
+65082=>'ON',
+65083=>'ON',
+65084=>'ON',
+65085=>'ON',
+65086=>'ON',
+65087=>'ON',
+65088=>'ON',
+65089=>'ON',
+65090=>'ON',
+65091=>'ON',
+65092=>'ON',
+65093=>'ON',
+65094=>'ON',
+65095=>'ON',
+65096=>'ON',
+65097=>'ON',
+65098=>'ON',
+65099=>'ON',
+65100=>'ON',
+65101=>'ON',
+65102=>'ON',
+65103=>'ON',
+65104=>'CS',
+65105=>'ON',
+65106=>'CS',
+65108=>'ON',
+65109=>'CS',
+65110=>'ON',
+65111=>'ON',
+65112=>'ON',
+65113=>'ON',
+65114=>'ON',
+65115=>'ON',
+65116=>'ON',
+65117=>'ON',
+65118=>'ON',
+65119=>'ET',
+65120=>'ON',
+65121=>'ON',
+65122=>'ES',
+65123=>'ES',
+65124=>'ON',
+65125=>'ON',
+65126=>'ON',
+65128=>'ON',
+65129=>'ET',
+65130=>'ET',
+65131=>'ON',
+65136=>'AL',
+65137=>'AL',
+65138=>'AL',
+65139=>'AL',
+65140=>'AL',
+65142=>'AL',
+65143=>'AL',
+65144=>'AL',
+65145=>'AL',
+65146=>'AL',
+65147=>'AL',
+65148=>'AL',
+65149=>'AL',
+65150=>'AL',
+65151=>'AL',
+65152=>'AL',
+65153=>'AL',
+65154=>'AL',
+65155=>'AL',
+65156=>'AL',
+65157=>'AL',
+65158=>'AL',
+65159=>'AL',
+65160=>'AL',
+65161=>'AL',
+65162=>'AL',
+65163=>'AL',
+65164=>'AL',
+65165=>'AL',
+65166=>'AL',
+65167=>'AL',
+65168=>'AL',
+65169=>'AL',
+65170=>'AL',
+65171=>'AL',
+65172=>'AL',
+65173=>'AL',
+65174=>'AL',
+65175=>'AL',
+65176=>'AL',
+65177=>'AL',
+65178=>'AL',
+65179=>'AL',
+65180=>'AL',
+65181=>'AL',
+65182=>'AL',
+65183=>'AL',
+65184=>'AL',
+65185=>'AL',
+65186=>'AL',
+65187=>'AL',
+65188=>'AL',
+65189=>'AL',
+65190=>'AL',
+65191=>'AL',
+65192=>'AL',
+65193=>'AL',
+65194=>'AL',
+65195=>'AL',
+65196=>'AL',
+65197=>'AL',
+65198=>'AL',
+65199=>'AL',
+65200=>'AL',
+65201=>'AL',
+65202=>'AL',
+65203=>'AL',
+65204=>'AL',
+65205=>'AL',
+65206=>'AL',
+65207=>'AL',
+65208=>'AL',
+65209=>'AL',
+65210=>'AL',
+65211=>'AL',
+65212=>'AL',
+65213=>'AL',
+65214=>'AL',
+65215=>'AL',
+65216=>'AL',
+65217=>'AL',
+65218=>'AL',
+65219=>'AL',
+65220=>'AL',
+65221=>'AL',
+65222=>'AL',
+65223=>'AL',
+65224=>'AL',
+65225=>'AL',
+65226=>'AL',
+65227=>'AL',
+65228=>'AL',
+65229=>'AL',
+65230=>'AL',
+65231=>'AL',
+65232=>'AL',
+65233=>'AL',
+65234=>'AL',
+65235=>'AL',
+65236=>'AL',
+65237=>'AL',
+65238=>'AL',
+65239=>'AL',
+65240=>'AL',
+65241=>'AL',
+65242=>'AL',
+65243=>'AL',
+65244=>'AL',
+65245=>'AL',
+65246=>'AL',
+65247=>'AL',
+65248=>'AL',
+65249=>'AL',
+65250=>'AL',
+65251=>'AL',
+65252=>'AL',
+65253=>'AL',
+65254=>'AL',
+65255=>'AL',
+65256=>'AL',
+65257=>'AL',
+65258=>'AL',
+65259=>'AL',
+65260=>'AL',
+65261=>'AL',
+65262=>'AL',
+65263=>'AL',
+65264=>'AL',
+65265=>'AL',
+65266=>'AL',
+65267=>'AL',
+65268=>'AL',
+65269=>'AL',
+65270=>'AL',
+65271=>'AL',
+65272=>'AL',
+65273=>'AL',
+65274=>'AL',
+65275=>'AL',
+65276=>'AL',
+65279=>'BN',
+65281=>'ON',
+65282=>'ON',
+65283=>'ET',
+65284=>'ET',
+65285=>'ET',
+65286=>'ON',
+65287=>'ON',
+65288=>'ON',
+65289=>'ON',
+65290=>'ON',
+65291=>'ES',
+65292=>'CS',
+65293=>'ES',
+65294=>'CS',
+65295=>'CS',
+65296=>'EN',
+65297=>'EN',
+65298=>'EN',
+65299=>'EN',
+65300=>'EN',
+65301=>'EN',
+65302=>'EN',
+65303=>'EN',
+65304=>'EN',
+65305=>'EN',
+65306=>'CS',
+65307=>'ON',
+65308=>'ON',
+65309=>'ON',
+65310=>'ON',
+65311=>'ON',
+65312=>'ON',
+65313=>'L',
+65314=>'L',
+65315=>'L',
+65316=>'L',
+65317=>'L',
+65318=>'L',
+65319=>'L',
+65320=>'L',
+65321=>'L',
+65322=>'L',
+65323=>'L',
+65324=>'L',
+65325=>'L',
+65326=>'L',
+65327=>'L',
+65328=>'L',
+65329=>'L',
+65330=>'L',
+65331=>'L',
+65332=>'L',
+65333=>'L',
+65334=>'L',
+65335=>'L',
+65336=>'L',
+65337=>'L',
+65338=>'L',
+65339=>'ON',
+65340=>'ON',
+65341=>'ON',
+65342=>'ON',
+65343=>'ON',
+65344=>'ON',
+65345=>'L',
+65346=>'L',
+65347=>'L',
+65348=>'L',
+65349=>'L',
+65350=>'L',
+65351=>'L',
+65352=>'L',
+65353=>'L',
+65354=>'L',
+65355=>'L',
+65356=>'L',
+65357=>'L',
+65358=>'L',
+65359=>'L',
+65360=>'L',
+65361=>'L',
+65362=>'L',
+65363=>'L',
+65364=>'L',
+65365=>'L',
+65366=>'L',
+65367=>'L',
+65368=>'L',
+65369=>'L',
+65370=>'L',
+65371=>'ON',
+65372=>'ON',
+65373=>'ON',
+65374=>'ON',
+65375=>'ON',
+65376=>'ON',
+65377=>'ON',
+65378=>'ON',
+65379=>'ON',
+65380=>'ON',
+65381=>'ON',
+65382=>'L',
+65383=>'L',
+65384=>'L',
+65385=>'L',
+65386=>'L',
+65387=>'L',
+65388=>'L',
+65389=>'L',
+65390=>'L',
+65391=>'L',
+65392=>'L',
+65393=>'L',
+65394=>'L',
+65395=>'L',
+65396=>'L',
+65397=>'L',
+65398=>'L',
+65399=>'L',
+65400=>'L',
+65401=>'L',
+65402=>'L',
+65403=>'L',
+65404=>'L',
+65405=>'L',
+65406=>'L',
+65407=>'L',
+65408=>'L',
+65409=>'L',
+65410=>'L',
+65411=>'L',
+65412=>'L',
+65413=>'L',
+65414=>'L',
+65415=>'L',
+65416=>'L',
+65417=>'L',
+65418=>'L',
+65419=>'L',
+65420=>'L',
+65421=>'L',
+65422=>'L',
+65423=>'L',
+65424=>'L',
+65425=>'L',
+65426=>'L',
+65427=>'L',
+65428=>'L',
+65429=>'L',
+65430=>'L',
+65431=>'L',
+65432=>'L',
+65433=>'L',
+65434=>'L',
+65435=>'L',
+65436=>'L',
+65437=>'L',
+65438=>'L',
+65439=>'L',
+65440=>'L',
+65441=>'L',
+65442=>'L',
+65443=>'L',
+65444=>'L',
+65445=>'L',
+65446=>'L',
+65447=>'L',
+65448=>'L',
+65449=>'L',
+65450=>'L',
+65451=>'L',
+65452=>'L',
+65453=>'L',
+65454=>'L',
+65455=>'L',
+65456=>'L',
+65457=>'L',
+65458=>'L',
+65459=>'L',
+65460=>'L',
+65461=>'L',
+65462=>'L',
+65463=>'L',
+65464=>'L',
+65465=>'L',
+65466=>'L',
+65467=>'L',
+65468=>'L',
+65469=>'L',
+65470=>'L',
+65474=>'L',
+65475=>'L',
+65476=>'L',
+65477=>'L',
+65478=>'L',
+65479=>'L',
+65482=>'L',
+65483=>'L',
+65484=>'L',
+65485=>'L',
+65486=>'L',
+65487=>'L',
+65490=>'L',
+65491=>'L',
+65492=>'L',
+65493=>'L',
+65494=>'L',
+65495=>'L',
+65498=>'L',
+65499=>'L',
+65500=>'L',
+65504=>'ET',
+65505=>'ET',
+65506=>'ON',
+65507=>'ON',
+65508=>'ON',
+65509=>'ET',
+65510=>'ET',
+65512=>'ON',
+65513=>'ON',
+65514=>'ON',
+65515=>'ON',
+65516=>'ON',
+65517=>'ON',
+65518=>'ON',
+65529=>'ON',
+65530=>'ON',
+65531=>'ON',
+65532=>'ON',
+65533=>'ON',
+65536=>'L',
+65537=>'L',
+65538=>'L',
+65539=>'L',
+65540=>'L',
+65541=>'L',
+65542=>'L',
+65543=>'L',
+65544=>'L',
+65545=>'L',
+65546=>'L',
+65547=>'L',
+65549=>'L',
+65550=>'L',
+65551=>'L',
+65552=>'L',
+65553=>'L',
+65554=>'L',
+65555=>'L',
+65556=>'L',
+65557=>'L',
+65558=>'L',
+65559=>'L',
+65560=>'L',
+65561=>'L',
+65562=>'L',
+65563=>'L',
+65564=>'L',
+65565=>'L',
+65566=>'L',
+65567=>'L',
+65568=>'L',
+65569=>'L',
+65570=>'L',
+65571=>'L',
+65572=>'L',
+65573=>'L',
+65574=>'L',
+65576=>'L',
+65577=>'L',
+65578=>'L',
+65579=>'L',
+65580=>'L',
+65581=>'L',
+65582=>'L',
+65583=>'L',
+65584=>'L',
+65585=>'L',
+65586=>'L',
+65587=>'L',
+65588=>'L',
+65589=>'L',
+65590=>'L',
+65591=>'L',
+65592=>'L',
+65593=>'L',
+65594=>'L',
+65596=>'L',
+65597=>'L',
+65599=>'L',
+65600=>'L',
+65601=>'L',
+65602=>'L',
+65603=>'L',
+65604=>'L',
+65605=>'L',
+65606=>'L',
+65607=>'L',
+65608=>'L',
+65609=>'L',
+65610=>'L',
+65611=>'L',
+65612=>'L',
+65613=>'L',
+65616=>'L',
+65617=>'L',
+65618=>'L',
+65619=>'L',
+65620=>'L',
+65621=>'L',
+65622=>'L',
+65623=>'L',
+65624=>'L',
+65625=>'L',
+65626=>'L',
+65627=>'L',
+65628=>'L',
+65629=>'L',
+65664=>'L',
+65665=>'L',
+65666=>'L',
+65667=>'L',
+65668=>'L',
+65669=>'L',
+65670=>'L',
+65671=>'L',
+65672=>'L',
+65673=>'L',
+65674=>'L',
+65675=>'L',
+65676=>'L',
+65677=>'L',
+65678=>'L',
+65679=>'L',
+65680=>'L',
+65681=>'L',
+65682=>'L',
+65683=>'L',
+65684=>'L',
+65685=>'L',
+65686=>'L',
+65687=>'L',
+65688=>'L',
+65689=>'L',
+65690=>'L',
+65691=>'L',
+65692=>'L',
+65693=>'L',
+65694=>'L',
+65695=>'L',
+65696=>'L',
+65697=>'L',
+65698=>'L',
+65699=>'L',
+65700=>'L',
+65701=>'L',
+65702=>'L',
+65703=>'L',
+65704=>'L',
+65705=>'L',
+65706=>'L',
+65707=>'L',
+65708=>'L',
+65709=>'L',
+65710=>'L',
+65711=>'L',
+65712=>'L',
+65713=>'L',
+65714=>'L',
+65715=>'L',
+65716=>'L',
+65717=>'L',
+65718=>'L',
+65719=>'L',
+65720=>'L',
+65721=>'L',
+65722=>'L',
+65723=>'L',
+65724=>'L',
+65725=>'L',
+65726=>'L',
+65727=>'L',
+65728=>'L',
+65729=>'L',
+65730=>'L',
+65731=>'L',
+65732=>'L',
+65733=>'L',
+65734=>'L',
+65735=>'L',
+65736=>'L',
+65737=>'L',
+65738=>'L',
+65739=>'L',
+65740=>'L',
+65741=>'L',
+65742=>'L',
+65743=>'L',
+65744=>'L',
+65745=>'L',
+65746=>'L',
+65747=>'L',
+65748=>'L',
+65749=>'L',
+65750=>'L',
+65751=>'L',
+65752=>'L',
+65753=>'L',
+65754=>'L',
+65755=>'L',
+65756=>'L',
+65757=>'L',
+65758=>'L',
+65759=>'L',
+65760=>'L',
+65761=>'L',
+65762=>'L',
+65763=>'L',
+65764=>'L',
+65765=>'L',
+65766=>'L',
+65767=>'L',
+65768=>'L',
+65769=>'L',
+65770=>'L',
+65771=>'L',
+65772=>'L',
+65773=>'L',
+65774=>'L',
+65775=>'L',
+65776=>'L',
+65777=>'L',
+65778=>'L',
+65779=>'L',
+65780=>'L',
+65781=>'L',
+65782=>'L',
+65783=>'L',
+65784=>'L',
+65785=>'L',
+65786=>'L',
+65792=>'L',
+65793=>'ON',
+65794=>'L',
+65799=>'L',
+65800=>'L',
+65801=>'L',
+65802=>'L',
+65803=>'L',
+65804=>'L',
+65805=>'L',
+65806=>'L',
+65807=>'L',
+65808=>'L',
+65809=>'L',
+65810=>'L',
+65811=>'L',
+65812=>'L',
+65813=>'L',
+65814=>'L',
+65815=>'L',
+65816=>'L',
+65817=>'L',
+65818=>'L',
+65819=>'L',
+65820=>'L',
+65821=>'L',
+65822=>'L',
+65823=>'L',
+65824=>'L',
+65825=>'L',
+65826=>'L',
+65827=>'L',
+65828=>'L',
+65829=>'L',
+65830=>'L',
+65831=>'L',
+65832=>'L',
+65833=>'L',
+65834=>'L',
+65835=>'L',
+65836=>'L',
+65837=>'L',
+65838=>'L',
+65839=>'L',
+65840=>'L',
+65841=>'L',
+65842=>'L',
+65843=>'L',
+65847=>'L',
+65848=>'L',
+65849=>'L',
+65850=>'L',
+65851=>'L',
+65852=>'L',
+65853=>'L',
+65854=>'L',
+65855=>'L',
+65856=>'ON',
+65857=>'ON',
+65858=>'ON',
+65859=>'ON',
+65860=>'ON',
+65861=>'ON',
+65862=>'ON',
+65863=>'ON',
+65864=>'ON',
+65865=>'ON',
+65866=>'ON',
+65867=>'ON',
+65868=>'ON',
+65869=>'ON',
+65870=>'ON',
+65871=>'ON',
+65872=>'ON',
+65873=>'ON',
+65874=>'ON',
+65875=>'ON',
+65876=>'ON',
+65877=>'ON',
+65878=>'ON',
+65879=>'ON',
+65880=>'ON',
+65881=>'ON',
+65882=>'ON',
+65883=>'ON',
+65884=>'ON',
+65885=>'ON',
+65886=>'ON',
+65887=>'ON',
+65888=>'ON',
+65889=>'ON',
+65890=>'ON',
+65891=>'ON',
+65892=>'ON',
+65893=>'ON',
+65894=>'ON',
+65895=>'ON',
+65896=>'ON',
+65897=>'ON',
+65898=>'ON',
+65899=>'ON',
+65900=>'ON',
+65901=>'ON',
+65902=>'ON',
+65903=>'ON',
+65904=>'ON',
+65905=>'ON',
+65906=>'ON',
+65907=>'ON',
+65908=>'ON',
+65909=>'ON',
+65910=>'ON',
+65911=>'ON',
+65912=>'ON',
+65913=>'ON',
+65914=>'ON',
+65915=>'ON',
+65916=>'ON',
+65917=>'ON',
+65918=>'ON',
+65919=>'ON',
+65920=>'ON',
+65921=>'ON',
+65922=>'ON',
+65923=>'ON',
+65924=>'ON',
+65925=>'ON',
+65926=>'ON',
+65927=>'ON',
+65928=>'ON',
+65929=>'ON',
+65930=>'ON',
+66304=>'L',
+66305=>'L',
+66306=>'L',
+66307=>'L',
+66308=>'L',
+66309=>'L',
+66310=>'L',
+66311=>'L',
+66312=>'L',
+66313=>'L',
+66314=>'L',
+66315=>'L',
+66316=>'L',
+66317=>'L',
+66318=>'L',
+66319=>'L',
+66320=>'L',
+66321=>'L',
+66322=>'L',
+66323=>'L',
+66324=>'L',
+66325=>'L',
+66326=>'L',
+66327=>'L',
+66328=>'L',
+66329=>'L',
+66330=>'L',
+66331=>'L',
+66332=>'L',
+66333=>'L',
+66334=>'L',
+66336=>'L',
+66337=>'L',
+66338=>'L',
+66339=>'L',
+66352=>'L',
+66353=>'L',
+66354=>'L',
+66355=>'L',
+66356=>'L',
+66357=>'L',
+66358=>'L',
+66359=>'L',
+66360=>'L',
+66361=>'L',
+66362=>'L',
+66363=>'L',
+66364=>'L',
+66365=>'L',
+66366=>'L',
+66367=>'L',
+66368=>'L',
+66369=>'L',
+66370=>'L',
+66371=>'L',
+66372=>'L',
+66373=>'L',
+66374=>'L',
+66375=>'L',
+66376=>'L',
+66377=>'L',
+66378=>'L',
+66432=>'L',
+66433=>'L',
+66434=>'L',
+66435=>'L',
+66436=>'L',
+66437=>'L',
+66438=>'L',
+66439=>'L',
+66440=>'L',
+66441=>'L',
+66442=>'L',
+66443=>'L',
+66444=>'L',
+66445=>'L',
+66446=>'L',
+66447=>'L',
+66448=>'L',
+66449=>'L',
+66450=>'L',
+66451=>'L',
+66452=>'L',
+66453=>'L',
+66454=>'L',
+66455=>'L',
+66456=>'L',
+66457=>'L',
+66458=>'L',
+66459=>'L',
+66460=>'L',
+66461=>'L',
+66463=>'L',
+66464=>'L',
+66465=>'L',
+66466=>'L',
+66467=>'L',
+66468=>'L',
+66469=>'L',
+66470=>'L',
+66471=>'L',
+66472=>'L',
+66473=>'L',
+66474=>'L',
+66475=>'L',
+66476=>'L',
+66477=>'L',
+66478=>'L',
+66479=>'L',
+66480=>'L',
+66481=>'L',
+66482=>'L',
+66483=>'L',
+66484=>'L',
+66485=>'L',
+66486=>'L',
+66487=>'L',
+66488=>'L',
+66489=>'L',
+66490=>'L',
+66491=>'L',
+66492=>'L',
+66493=>'L',
+66494=>'L',
+66495=>'L',
+66496=>'L',
+66497=>'L',
+66498=>'L',
+66499=>'L',
+66504=>'L',
+66505=>'L',
+66506=>'L',
+66507=>'L',
+66508=>'L',
+66509=>'L',
+66510=>'L',
+66511=>'L',
+66512=>'L',
+66513=>'L',
+66514=>'L',
+66515=>'L',
+66516=>'L',
+66517=>'L',
+66560=>'L',
+66561=>'L',
+66562=>'L',
+66563=>'L',
+66564=>'L',
+66565=>'L',
+66566=>'L',
+66567=>'L',
+66568=>'L',
+66569=>'L',
+66570=>'L',
+66571=>'L',
+66572=>'L',
+66573=>'L',
+66574=>'L',
+66575=>'L',
+66576=>'L',
+66577=>'L',
+66578=>'L',
+66579=>'L',
+66580=>'L',
+66581=>'L',
+66582=>'L',
+66583=>'L',
+66584=>'L',
+66585=>'L',
+66586=>'L',
+66587=>'L',
+66588=>'L',
+66589=>'L',
+66590=>'L',
+66591=>'L',
+66592=>'L',
+66593=>'L',
+66594=>'L',
+66595=>'L',
+66596=>'L',
+66597=>'L',
+66598=>'L',
+66599=>'L',
+66600=>'L',
+66601=>'L',
+66602=>'L',
+66603=>'L',
+66604=>'L',
+66605=>'L',
+66606=>'L',
+66607=>'L',
+66608=>'L',
+66609=>'L',
+66610=>'L',
+66611=>'L',
+66612=>'L',
+66613=>'L',
+66614=>'L',
+66615=>'L',
+66616=>'L',
+66617=>'L',
+66618=>'L',
+66619=>'L',
+66620=>'L',
+66621=>'L',
+66622=>'L',
+66623=>'L',
+66624=>'L',
+66625=>'L',
+66626=>'L',
+66627=>'L',
+66628=>'L',
+66629=>'L',
+66630=>'L',
+66631=>'L',
+66632=>'L',
+66633=>'L',
+66634=>'L',
+66635=>'L',
+66636=>'L',
+66637=>'L',
+66638=>'L',
+66639=>'L',
+66640=>'L',
+66641=>'L',
+66642=>'L',
+66643=>'L',
+66644=>'L',
+66645=>'L',
+66646=>'L',
+66647=>'L',
+66648=>'L',
+66649=>'L',
+66650=>'L',
+66651=>'L',
+66652=>'L',
+66653=>'L',
+66654=>'L',
+66655=>'L',
+66656=>'L',
+66657=>'L',
+66658=>'L',
+66659=>'L',
+66660=>'L',
+66661=>'L',
+66662=>'L',
+66663=>'L',
+66664=>'L',
+66665=>'L',
+66666=>'L',
+66667=>'L',
+66668=>'L',
+66669=>'L',
+66670=>'L',
+66671=>'L',
+66672=>'L',
+66673=>'L',
+66674=>'L',
+66675=>'L',
+66676=>'L',
+66677=>'L',
+66678=>'L',
+66679=>'L',
+66680=>'L',
+66681=>'L',
+66682=>'L',
+66683=>'L',
+66684=>'L',
+66685=>'L',
+66686=>'L',
+66687=>'L',
+66688=>'L',
+66689=>'L',
+66690=>'L',
+66691=>'L',
+66692=>'L',
+66693=>'L',
+66694=>'L',
+66695=>'L',
+66696=>'L',
+66697=>'L',
+66698=>'L',
+66699=>'L',
+66700=>'L',
+66701=>'L',
+66702=>'L',
+66703=>'L',
+66704=>'L',
+66705=>'L',
+66706=>'L',
+66707=>'L',
+66708=>'L',
+66709=>'L',
+66710=>'L',
+66711=>'L',
+66712=>'L',
+66713=>'L',
+66714=>'L',
+66715=>'L',
+66716=>'L',
+66717=>'L',
+66720=>'L',
+66721=>'L',
+66722=>'L',
+66723=>'L',
+66724=>'L',
+66725=>'L',
+66726=>'L',
+66727=>'L',
+66728=>'L',
+66729=>'L',
+67584=>'R',
+67585=>'R',
+67586=>'R',
+67587=>'R',
+67588=>'R',
+67589=>'R',
+67592=>'R',
+67594=>'R',
+67595=>'R',
+67596=>'R',
+67597=>'R',
+67598=>'R',
+67599=>'R',
+67600=>'R',
+67601=>'R',
+67602=>'R',
+67603=>'R',
+67604=>'R',
+67605=>'R',
+67606=>'R',
+67607=>'R',
+67608=>'R',
+67609=>'R',
+67610=>'R',
+67611=>'R',
+67612=>'R',
+67613=>'R',
+67614=>'R',
+67615=>'R',
+67616=>'R',
+67617=>'R',
+67618=>'R',
+67619=>'R',
+67620=>'R',
+67621=>'R',
+67622=>'R',
+67623=>'R',
+67624=>'R',
+67625=>'R',
+67626=>'R',
+67627=>'R',
+67628=>'R',
+67629=>'R',
+67630=>'R',
+67631=>'R',
+67632=>'R',
+67633=>'R',
+67634=>'R',
+67635=>'R',
+67636=>'R',
+67637=>'R',
+67639=>'R',
+67640=>'R',
+67644=>'R',
+67647=>'R',
+67840=>'R',
+67841=>'R',
+67842=>'R',
+67843=>'R',
+67844=>'R',
+67845=>'R',
+67846=>'R',
+67847=>'R',
+67848=>'R',
+67849=>'R',
+67850=>'R',
+67851=>'R',
+67852=>'R',
+67853=>'R',
+67854=>'R',
+67855=>'R',
+67856=>'R',
+67857=>'R',
+67858=>'R',
+67859=>'R',
+67860=>'R',
+67861=>'R',
+67862=>'R',
+67863=>'R',
+67864=>'R',
+67865=>'R',
+67871=>'ON',
+68096=>'R',
+68097=>'NSM',
+68098=>'NSM',
+68099=>'NSM',
+68101=>'NSM',
+68102=>'NSM',
+68108=>'NSM',
+68109=>'NSM',
+68110=>'NSM',
+68111=>'NSM',
+68112=>'R',
+68113=>'R',
+68114=>'R',
+68115=>'R',
+68117=>'R',
+68118=>'R',
+68119=>'R',
+68121=>'R',
+68122=>'R',
+68123=>'R',
+68124=>'R',
+68125=>'R',
+68126=>'R',
+68127=>'R',
+68128=>'R',
+68129=>'R',
+68130=>'R',
+68131=>'R',
+68132=>'R',
+68133=>'R',
+68134=>'R',
+68135=>'R',
+68136=>'R',
+68137=>'R',
+68138=>'R',
+68139=>'R',
+68140=>'R',
+68141=>'R',
+68142=>'R',
+68143=>'R',
+68144=>'R',
+68145=>'R',
+68146=>'R',
+68147=>'R',
+68152=>'NSM',
+68153=>'NSM',
+68154=>'NSM',
+68159=>'NSM',
+68160=>'R',
+68161=>'R',
+68162=>'R',
+68163=>'R',
+68164=>'R',
+68165=>'R',
+68166=>'R',
+68167=>'R',
+68176=>'R',
+68177=>'R',
+68178=>'R',
+68179=>'R',
+68180=>'R',
+68181=>'R',
+68182=>'R',
+68183=>'R',
+68184=>'R',
+73728=>'L',
+73729=>'L',
+73730=>'L',
+73731=>'L',
+73732=>'L',
+73733=>'L',
+73734=>'L',
+73735=>'L',
+73736=>'L',
+73737=>'L',
+73738=>'L',
+73739=>'L',
+73740=>'L',
+73741=>'L',
+73742=>'L',
+73743=>'L',
+73744=>'L',
+73745=>'L',
+73746=>'L',
+73747=>'L',
+73748=>'L',
+73749=>'L',
+73750=>'L',
+73751=>'L',
+73752=>'L',
+73753=>'L',
+73754=>'L',
+73755=>'L',
+73756=>'L',
+73757=>'L',
+73758=>'L',
+73759=>'L',
+73760=>'L',
+73761=>'L',
+73762=>'L',
+73763=>'L',
+73764=>'L',
+73765=>'L',
+73766=>'L',
+73767=>'L',
+73768=>'L',
+73769=>'L',
+73770=>'L',
+73771=>'L',
+73772=>'L',
+73773=>'L',
+73774=>'L',
+73775=>'L',
+73776=>'L',
+73777=>'L',
+73778=>'L',
+73779=>'L',
+73780=>'L',
+73781=>'L',
+73782=>'L',
+73783=>'L',
+73784=>'L',
+73785=>'L',
+73786=>'L',
+73787=>'L',
+73788=>'L',
+73789=>'L',
+73790=>'L',
+73791=>'L',
+73792=>'L',
+73793=>'L',
+73794=>'L',
+73795=>'L',
+73796=>'L',
+73797=>'L',
+73798=>'L',
+73799=>'L',
+73800=>'L',
+73801=>'L',
+73802=>'L',
+73803=>'L',
+73804=>'L',
+73805=>'L',
+73806=>'L',
+73807=>'L',
+73808=>'L',
+73809=>'L',
+73810=>'L',
+73811=>'L',
+73812=>'L',
+73813=>'L',
+73814=>'L',
+73815=>'L',
+73816=>'L',
+73817=>'L',
+73818=>'L',
+73819=>'L',
+73820=>'L',
+73821=>'L',
+73822=>'L',
+73823=>'L',
+73824=>'L',
+73825=>'L',
+73826=>'L',
+73827=>'L',
+73828=>'L',
+73829=>'L',
+73830=>'L',
+73831=>'L',
+73832=>'L',
+73833=>'L',
+73834=>'L',
+73835=>'L',
+73836=>'L',
+73837=>'L',
+73838=>'L',
+73839=>'L',
+73840=>'L',
+73841=>'L',
+73842=>'L',
+73843=>'L',
+73844=>'L',
+73845=>'L',
+73846=>'L',
+73847=>'L',
+73848=>'L',
+73849=>'L',
+73850=>'L',
+73851=>'L',
+73852=>'L',
+73853=>'L',
+73854=>'L',
+73855=>'L',
+73856=>'L',
+73857=>'L',
+73858=>'L',
+73859=>'L',
+73860=>'L',
+73861=>'L',
+73862=>'L',
+73863=>'L',
+73864=>'L',
+73865=>'L',
+73866=>'L',
+73867=>'L',
+73868=>'L',
+73869=>'L',
+73870=>'L',
+73871=>'L',
+73872=>'L',
+73873=>'L',
+73874=>'L',
+73875=>'L',
+73876=>'L',
+73877=>'L',
+73878=>'L',
+73879=>'L',
+73880=>'L',
+73881=>'L',
+73882=>'L',
+73883=>'L',
+73884=>'L',
+73885=>'L',
+73886=>'L',
+73887=>'L',
+73888=>'L',
+73889=>'L',
+73890=>'L',
+73891=>'L',
+73892=>'L',
+73893=>'L',
+73894=>'L',
+73895=>'L',
+73896=>'L',
+73897=>'L',
+73898=>'L',
+73899=>'L',
+73900=>'L',
+73901=>'L',
+73902=>'L',
+73903=>'L',
+73904=>'L',
+73905=>'L',
+73906=>'L',
+73907=>'L',
+73908=>'L',
+73909=>'L',
+73910=>'L',
+73911=>'L',
+73912=>'L',
+73913=>'L',
+73914=>'L',
+73915=>'L',
+73916=>'L',
+73917=>'L',
+73918=>'L',
+73919=>'L',
+73920=>'L',
+73921=>'L',
+73922=>'L',
+73923=>'L',
+73924=>'L',
+73925=>'L',
+73926=>'L',
+73927=>'L',
+73928=>'L',
+73929=>'L',
+73930=>'L',
+73931=>'L',
+73932=>'L',
+73933=>'L',
+73934=>'L',
+73935=>'L',
+73936=>'L',
+73937=>'L',
+73938=>'L',
+73939=>'L',
+73940=>'L',
+73941=>'L',
+73942=>'L',
+73943=>'L',
+73944=>'L',
+73945=>'L',
+73946=>'L',
+73947=>'L',
+73948=>'L',
+73949=>'L',
+73950=>'L',
+73951=>'L',
+73952=>'L',
+73953=>'L',
+73954=>'L',
+73955=>'L',
+73956=>'L',
+73957=>'L',
+73958=>'L',
+73959=>'L',
+73960=>'L',
+73961=>'L',
+73962=>'L',
+73963=>'L',
+73964=>'L',
+73965=>'L',
+73966=>'L',
+73967=>'L',
+73968=>'L',
+73969=>'L',
+73970=>'L',
+73971=>'L',
+73972=>'L',
+73973=>'L',
+73974=>'L',
+73975=>'L',
+73976=>'L',
+73977=>'L',
+73978=>'L',
+73979=>'L',
+73980=>'L',
+73981=>'L',
+73982=>'L',
+73983=>'L',
+73984=>'L',
+73985=>'L',
+73986=>'L',
+73987=>'L',
+73988=>'L',
+73989=>'L',
+73990=>'L',
+73991=>'L',
+73992=>'L',
+73993=>'L',
+73994=>'L',
+73995=>'L',
+73996=>'L',
+73997=>'L',
+73998=>'L',
+73999=>'L',
+74000=>'L',
+74001=>'L',
+74002=>'L',
+74003=>'L',
+74004=>'L',
+74005=>'L',
+74006=>'L',
+74007=>'L',
+74008=>'L',
+74009=>'L',
+74010=>'L',
+74011=>'L',
+74012=>'L',
+74013=>'L',
+74014=>'L',
+74015=>'L',
+74016=>'L',
+74017=>'L',
+74018=>'L',
+74019=>'L',
+74020=>'L',
+74021=>'L',
+74022=>'L',
+74023=>'L',
+74024=>'L',
+74025=>'L',
+74026=>'L',
+74027=>'L',
+74028=>'L',
+74029=>'L',
+74030=>'L',
+74031=>'L',
+74032=>'L',
+74033=>'L',
+74034=>'L',
+74035=>'L',
+74036=>'L',
+74037=>'L',
+74038=>'L',
+74039=>'L',
+74040=>'L',
+74041=>'L',
+74042=>'L',
+74043=>'L',
+74044=>'L',
+74045=>'L',
+74046=>'L',
+74047=>'L',
+74048=>'L',
+74049=>'L',
+74050=>'L',
+74051=>'L',
+74052=>'L',
+74053=>'L',
+74054=>'L',
+74055=>'L',
+74056=>'L',
+74057=>'L',
+74058=>'L',
+74059=>'L',
+74060=>'L',
+74061=>'L',
+74062=>'L',
+74063=>'L',
+74064=>'L',
+74065=>'L',
+74066=>'L',
+74067=>'L',
+74068=>'L',
+74069=>'L',
+74070=>'L',
+74071=>'L',
+74072=>'L',
+74073=>'L',
+74074=>'L',
+74075=>'L',
+74076=>'L',
+74077=>'L',
+74078=>'L',
+74079=>'L',
+74080=>'L',
+74081=>'L',
+74082=>'L',
+74083=>'L',
+74084=>'L',
+74085=>'L',
+74086=>'L',
+74087=>'L',
+74088=>'L',
+74089=>'L',
+74090=>'L',
+74091=>'L',
+74092=>'L',
+74093=>'L',
+74094=>'L',
+74095=>'L',
+74096=>'L',
+74097=>'L',
+74098=>'L',
+74099=>'L',
+74100=>'L',
+74101=>'L',
+74102=>'L',
+74103=>'L',
+74104=>'L',
+74105=>'L',
+74106=>'L',
+74107=>'L',
+74108=>'L',
+74109=>'L',
+74110=>'L',
+74111=>'L',
+74112=>'L',
+74113=>'L',
+74114=>'L',
+74115=>'L',
+74116=>'L',
+74117=>'L',
+74118=>'L',
+74119=>'L',
+74120=>'L',
+74121=>'L',
+74122=>'L',
+74123=>'L',
+74124=>'L',
+74125=>'L',
+74126=>'L',
+74127=>'L',
+74128=>'L',
+74129=>'L',
+74130=>'L',
+74131=>'L',
+74132=>'L',
+74133=>'L',
+74134=>'L',
+74135=>'L',
+74136=>'L',
+74137=>'L',
+74138=>'L',
+74139=>'L',
+74140=>'L',
+74141=>'L',
+74142=>'L',
+74143=>'L',
+74144=>'L',
+74145=>'L',
+74146=>'L',
+74147=>'L',
+74148=>'L',
+74149=>'L',
+74150=>'L',
+74151=>'L',
+74152=>'L',
+74153=>'L',
+74154=>'L',
+74155=>'L',
+74156=>'L',
+74157=>'L',
+74158=>'L',
+74159=>'L',
+74160=>'L',
+74161=>'L',
+74162=>'L',
+74163=>'L',
+74164=>'L',
+74165=>'L',
+74166=>'L',
+74167=>'L',
+74168=>'L',
+74169=>'L',
+74170=>'L',
+74171=>'L',
+74172=>'L',
+74173=>'L',
+74174=>'L',
+74175=>'L',
+74176=>'L',
+74177=>'L',
+74178=>'L',
+74179=>'L',
+74180=>'L',
+74181=>'L',
+74182=>'L',
+74183=>'L',
+74184=>'L',
+74185=>'L',
+74186=>'L',
+74187=>'L',
+74188=>'L',
+74189=>'L',
+74190=>'L',
+74191=>'L',
+74192=>'L',
+74193=>'L',
+74194=>'L',
+74195=>'L',
+74196=>'L',
+74197=>'L',
+74198=>'L',
+74199=>'L',
+74200=>'L',
+74201=>'L',
+74202=>'L',
+74203=>'L',
+74204=>'L',
+74205=>'L',
+74206=>'L',
+74207=>'L',
+74208=>'L',
+74209=>'L',
+74210=>'L',
+74211=>'L',
+74212=>'L',
+74213=>'L',
+74214=>'L',
+74215=>'L',
+74216=>'L',
+74217=>'L',
+74218=>'L',
+74219=>'L',
+74220=>'L',
+74221=>'L',
+74222=>'L',
+74223=>'L',
+74224=>'L',
+74225=>'L',
+74226=>'L',
+74227=>'L',
+74228=>'L',
+74229=>'L',
+74230=>'L',
+74231=>'L',
+74232=>'L',
+74233=>'L',
+74234=>'L',
+74235=>'L',
+74236=>'L',
+74237=>'L',
+74238=>'L',
+74239=>'L',
+74240=>'L',
+74241=>'L',
+74242=>'L',
+74243=>'L',
+74244=>'L',
+74245=>'L',
+74246=>'L',
+74247=>'L',
+74248=>'L',
+74249=>'L',
+74250=>'L',
+74251=>'L',
+74252=>'L',
+74253=>'L',
+74254=>'L',
+74255=>'L',
+74256=>'L',
+74257=>'L',
+74258=>'L',
+74259=>'L',
+74260=>'L',
+74261=>'L',
+74262=>'L',
+74263=>'L',
+74264=>'L',
+74265=>'L',
+74266=>'L',
+74267=>'L',
+74268=>'L',
+74269=>'L',
+74270=>'L',
+74271=>'L',
+74272=>'L',
+74273=>'L',
+74274=>'L',
+74275=>'L',
+74276=>'L',
+74277=>'L',
+74278=>'L',
+74279=>'L',
+74280=>'L',
+74281=>'L',
+74282=>'L',
+74283=>'L',
+74284=>'L',
+74285=>'L',
+74286=>'L',
+74287=>'L',
+74288=>'L',
+74289=>'L',
+74290=>'L',
+74291=>'L',
+74292=>'L',
+74293=>'L',
+74294=>'L',
+74295=>'L',
+74296=>'L',
+74297=>'L',
+74298=>'L',
+74299=>'L',
+74300=>'L',
+74301=>'L',
+74302=>'L',
+74303=>'L',
+74304=>'L',
+74305=>'L',
+74306=>'L',
+74307=>'L',
+74308=>'L',
+74309=>'L',
+74310=>'L',
+74311=>'L',
+74312=>'L',
+74313=>'L',
+74314=>'L',
+74315=>'L',
+74316=>'L',
+74317=>'L',
+74318=>'L',
+74319=>'L',
+74320=>'L',
+74321=>'L',
+74322=>'L',
+74323=>'L',
+74324=>'L',
+74325=>'L',
+74326=>'L',
+74327=>'L',
+74328=>'L',
+74329=>'L',
+74330=>'L',
+74331=>'L',
+74332=>'L',
+74333=>'L',
+74334=>'L',
+74335=>'L',
+74336=>'L',
+74337=>'L',
+74338=>'L',
+74339=>'L',
+74340=>'L',
+74341=>'L',
+74342=>'L',
+74343=>'L',
+74344=>'L',
+74345=>'L',
+74346=>'L',
+74347=>'L',
+74348=>'L',
+74349=>'L',
+74350=>'L',
+74351=>'L',
+74352=>'L',
+74353=>'L',
+74354=>'L',
+74355=>'L',
+74356=>'L',
+74357=>'L',
+74358=>'L',
+74359=>'L',
+74360=>'L',
+74361=>'L',
+74362=>'L',
+74363=>'L',
+74364=>'L',
+74365=>'L',
+74366=>'L',
+74367=>'L',
+74368=>'L',
+74369=>'L',
+74370=>'L',
+74371=>'L',
+74372=>'L',
+74373=>'L',
+74374=>'L',
+74375=>'L',
+74376=>'L',
+74377=>'L',
+74378=>'L',
+74379=>'L',
+74380=>'L',
+74381=>'L',
+74382=>'L',
+74383=>'L',
+74384=>'L',
+74385=>'L',
+74386=>'L',
+74387=>'L',
+74388=>'L',
+74389=>'L',
+74390=>'L',
+74391=>'L',
+74392=>'L',
+74393=>'L',
+74394=>'L',
+74395=>'L',
+74396=>'L',
+74397=>'L',
+74398=>'L',
+74399=>'L',
+74400=>'L',
+74401=>'L',
+74402=>'L',
+74403=>'L',
+74404=>'L',
+74405=>'L',
+74406=>'L',
+74407=>'L',
+74408=>'L',
+74409=>'L',
+74410=>'L',
+74411=>'L',
+74412=>'L',
+74413=>'L',
+74414=>'L',
+74415=>'L',
+74416=>'L',
+74417=>'L',
+74418=>'L',
+74419=>'L',
+74420=>'L',
+74421=>'L',
+74422=>'L',
+74423=>'L',
+74424=>'L',
+74425=>'L',
+74426=>'L',
+74427=>'L',
+74428=>'L',
+74429=>'L',
+74430=>'L',
+74431=>'L',
+74432=>'L',
+74433=>'L',
+74434=>'L',
+74435=>'L',
+74436=>'L',
+74437=>'L',
+74438=>'L',
+74439=>'L',
+74440=>'L',
+74441=>'L',
+74442=>'L',
+74443=>'L',
+74444=>'L',
+74445=>'L',
+74446=>'L',
+74447=>'L',
+74448=>'L',
+74449=>'L',
+74450=>'L',
+74451=>'L',
+74452=>'L',
+74453=>'L',
+74454=>'L',
+74455=>'L',
+74456=>'L',
+74457=>'L',
+74458=>'L',
+74459=>'L',
+74460=>'L',
+74461=>'L',
+74462=>'L',
+74463=>'L',
+74464=>'L',
+74465=>'L',
+74466=>'L',
+74467=>'L',
+74468=>'L',
+74469=>'L',
+74470=>'L',
+74471=>'L',
+74472=>'L',
+74473=>'L',
+74474=>'L',
+74475=>'L',
+74476=>'L',
+74477=>'L',
+74478=>'L',
+74479=>'L',
+74480=>'L',
+74481=>'L',
+74482=>'L',
+74483=>'L',
+74484=>'L',
+74485=>'L',
+74486=>'L',
+74487=>'L',
+74488=>'L',
+74489=>'L',
+74490=>'L',
+74491=>'L',
+74492=>'L',
+74493=>'L',
+74494=>'L',
+74495=>'L',
+74496=>'L',
+74497=>'L',
+74498=>'L',
+74499=>'L',
+74500=>'L',
+74501=>'L',
+74502=>'L',
+74503=>'L',
+74504=>'L',
+74505=>'L',
+74506=>'L',
+74507=>'L',
+74508=>'L',
+74509=>'L',
+74510=>'L',
+74511=>'L',
+74512=>'L',
+74513=>'L',
+74514=>'L',
+74515=>'L',
+74516=>'L',
+74517=>'L',
+74518=>'L',
+74519=>'L',
+74520=>'L',
+74521=>'L',
+74522=>'L',
+74523=>'L',
+74524=>'L',
+74525=>'L',
+74526=>'L',
+74527=>'L',
+74528=>'L',
+74529=>'L',
+74530=>'L',
+74531=>'L',
+74532=>'L',
+74533=>'L',
+74534=>'L',
+74535=>'L',
+74536=>'L',
+74537=>'L',
+74538=>'L',
+74539=>'L',
+74540=>'L',
+74541=>'L',
+74542=>'L',
+74543=>'L',
+74544=>'L',
+74545=>'L',
+74546=>'L',
+74547=>'L',
+74548=>'L',
+74549=>'L',
+74550=>'L',
+74551=>'L',
+74552=>'L',
+74553=>'L',
+74554=>'L',
+74555=>'L',
+74556=>'L',
+74557=>'L',
+74558=>'L',
+74559=>'L',
+74560=>'L',
+74561=>'L',
+74562=>'L',
+74563=>'L',
+74564=>'L',
+74565=>'L',
+74566=>'L',
+74567=>'L',
+74568=>'L',
+74569=>'L',
+74570=>'L',
+74571=>'L',
+74572=>'L',
+74573=>'L',
+74574=>'L',
+74575=>'L',
+74576=>'L',
+74577=>'L',
+74578=>'L',
+74579=>'L',
+74580=>'L',
+74581=>'L',
+74582=>'L',
+74583=>'L',
+74584=>'L',
+74585=>'L',
+74586=>'L',
+74587=>'L',
+74588=>'L',
+74589=>'L',
+74590=>'L',
+74591=>'L',
+74592=>'L',
+74593=>'L',
+74594=>'L',
+74595=>'L',
+74596=>'L',
+74597=>'L',
+74598=>'L',
+74599=>'L',
+74600=>'L',
+74601=>'L',
+74602=>'L',
+74603=>'L',
+74604=>'L',
+74605=>'L',
+74606=>'L',
+74752=>'L',
+74753=>'L',
+74754=>'L',
+74755=>'L',
+74756=>'L',
+74757=>'L',
+74758=>'L',
+74759=>'L',
+74760=>'L',
+74761=>'L',
+74762=>'L',
+74763=>'L',
+74764=>'L',
+74765=>'L',
+74766=>'L',
+74767=>'L',
+74768=>'L',
+74769=>'L',
+74770=>'L',
+74771=>'L',
+74772=>'L',
+74773=>'L',
+74774=>'L',
+74775=>'L',
+74776=>'L',
+74777=>'L',
+74778=>'L',
+74779=>'L',
+74780=>'L',
+74781=>'L',
+74782=>'L',
+74783=>'L',
+74784=>'L',
+74785=>'L',
+74786=>'L',
+74787=>'L',
+74788=>'L',
+74789=>'L',
+74790=>'L',
+74791=>'L',
+74792=>'L',
+74793=>'L',
+74794=>'L',
+74795=>'L',
+74796=>'L',
+74797=>'L',
+74798=>'L',
+74799=>'L',
+74800=>'L',
+74801=>'L',
+74802=>'L',
+74803=>'L',
+74804=>'L',
+74805=>'L',
+74806=>'L',
+74807=>'L',
+74808=>'L',
+74809=>'L',
+74810=>'L',
+74811=>'L',
+74812=>'L',
+74813=>'L',
+74814=>'L',
+74815=>'L',
+74816=>'L',
+74817=>'L',
+74818=>'L',
+74819=>'L',
+74820=>'L',
+74821=>'L',
+74822=>'L',
+74823=>'L',
+74824=>'L',
+74825=>'L',
+74826=>'L',
+74827=>'L',
+74828=>'L',
+74829=>'L',
+74830=>'L',
+74831=>'L',
+74832=>'L',
+74833=>'L',
+74834=>'L',
+74835=>'L',
+74836=>'L',
+74837=>'L',
+74838=>'L',
+74839=>'L',
+74840=>'L',
+74841=>'L',
+74842=>'L',
+74843=>'L',
+74844=>'L',
+74845=>'L',
+74846=>'L',
+74847=>'L',
+74848=>'L',
+74849=>'L',
+74850=>'L',
+74864=>'L',
+74865=>'L',
+74866=>'L',
+74867=>'L',
+118784=>'L',
+118785=>'L',
+118786=>'L',
+118787=>'L',
+118788=>'L',
+118789=>'L',
+118790=>'L',
+118791=>'L',
+118792=>'L',
+118793=>'L',
+118794=>'L',
+118795=>'L',
+118796=>'L',
+118797=>'L',
+118798=>'L',
+118799=>'L',
+118800=>'L',
+118801=>'L',
+118802=>'L',
+118803=>'L',
+118804=>'L',
+118805=>'L',
+118806=>'L',
+118807=>'L',
+118808=>'L',
+118809=>'L',
+118810=>'L',
+118811=>'L',
+118812=>'L',
+118813=>'L',
+118814=>'L',
+118815=>'L',
+118816=>'L',
+118817=>'L',
+118818=>'L',
+118819=>'L',
+118820=>'L',
+118821=>'L',
+118822=>'L',
+118823=>'L',
+118824=>'L',
+118825=>'L',
+118826=>'L',
+118827=>'L',
+118828=>'L',
+118829=>'L',
+118830=>'L',
+118831=>'L',
+118832=>'L',
+118833=>'L',
+118834=>'L',
+118835=>'L',
+118836=>'L',
+118837=>'L',
+118838=>'L',
+118839=>'L',
+118840=>'L',
+118841=>'L',
+118842=>'L',
+118843=>'L',
+118844=>'L',
+118845=>'L',
+118846=>'L',
+118847=>'L',
+118848=>'L',
+118849=>'L',
+118850=>'L',
+118851=>'L',
+118852=>'L',
+118853=>'L',
+118854=>'L',
+118855=>'L',
+118856=>'L',
+118857=>'L',
+118858=>'L',
+118859=>'L',
+118860=>'L',
+118861=>'L',
+118862=>'L',
+118863=>'L',
+118864=>'L',
+118865=>'L',
+118866=>'L',
+118867=>'L',
+118868=>'L',
+118869=>'L',
+118870=>'L',
+118871=>'L',
+118872=>'L',
+118873=>'L',
+118874=>'L',
+118875=>'L',
+118876=>'L',
+118877=>'L',
+118878=>'L',
+118879=>'L',
+118880=>'L',
+118881=>'L',
+118882=>'L',
+118883=>'L',
+118884=>'L',
+118885=>'L',
+118886=>'L',
+118887=>'L',
+118888=>'L',
+118889=>'L',
+118890=>'L',
+118891=>'L',
+118892=>'L',
+118893=>'L',
+118894=>'L',
+118895=>'L',
+118896=>'L',
+118897=>'L',
+118898=>'L',
+118899=>'L',
+118900=>'L',
+118901=>'L',
+118902=>'L',
+118903=>'L',
+118904=>'L',
+118905=>'L',
+118906=>'L',
+118907=>'L',
+118908=>'L',
+118909=>'L',
+118910=>'L',
+118911=>'L',
+118912=>'L',
+118913=>'L',
+118914=>'L',
+118915=>'L',
+118916=>'L',
+118917=>'L',
+118918=>'L',
+118919=>'L',
+118920=>'L',
+118921=>'L',
+118922=>'L',
+118923=>'L',
+118924=>'L',
+118925=>'L',
+118926=>'L',
+118927=>'L',
+118928=>'L',
+118929=>'L',
+118930=>'L',
+118931=>'L',
+118932=>'L',
+118933=>'L',
+118934=>'L',
+118935=>'L',
+118936=>'L',
+118937=>'L',
+118938=>'L',
+118939=>'L',
+118940=>'L',
+118941=>'L',
+118942=>'L',
+118943=>'L',
+118944=>'L',
+118945=>'L',
+118946=>'L',
+118947=>'L',
+118948=>'L',
+118949=>'L',
+118950=>'L',
+118951=>'L',
+118952=>'L',
+118953=>'L',
+118954=>'L',
+118955=>'L',
+118956=>'L',
+118957=>'L',
+118958=>'L',
+118959=>'L',
+118960=>'L',
+118961=>'L',
+118962=>'L',
+118963=>'L',
+118964=>'L',
+118965=>'L',
+118966=>'L',
+118967=>'L',
+118968=>'L',
+118969=>'L',
+118970=>'L',
+118971=>'L',
+118972=>'L',
+118973=>'L',
+118974=>'L',
+118975=>'L',
+118976=>'L',
+118977=>'L',
+118978=>'L',
+118979=>'L',
+118980=>'L',
+118981=>'L',
+118982=>'L',
+118983=>'L',
+118984=>'L',
+118985=>'L',
+118986=>'L',
+118987=>'L',
+118988=>'L',
+118989=>'L',
+118990=>'L',
+118991=>'L',
+118992=>'L',
+118993=>'L',
+118994=>'L',
+118995=>'L',
+118996=>'L',
+118997=>'L',
+118998=>'L',
+118999=>'L',
+119000=>'L',
+119001=>'L',
+119002=>'L',
+119003=>'L',
+119004=>'L',
+119005=>'L',
+119006=>'L',
+119007=>'L',
+119008=>'L',
+119009=>'L',
+119010=>'L',
+119011=>'L',
+119012=>'L',
+119013=>'L',
+119014=>'L',
+119015=>'L',
+119016=>'L',
+119017=>'L',
+119018=>'L',
+119019=>'L',
+119020=>'L',
+119021=>'L',
+119022=>'L',
+119023=>'L',
+119024=>'L',
+119025=>'L',
+119026=>'L',
+119027=>'L',
+119028=>'L',
+119029=>'L',
+119040=>'L',
+119041=>'L',
+119042=>'L',
+119043=>'L',
+119044=>'L',
+119045=>'L',
+119046=>'L',
+119047=>'L',
+119048=>'L',
+119049=>'L',
+119050=>'L',
+119051=>'L',
+119052=>'L',
+119053=>'L',
+119054=>'L',
+119055=>'L',
+119056=>'L',
+119057=>'L',
+119058=>'L',
+119059=>'L',
+119060=>'L',
+119061=>'L',
+119062=>'L',
+119063=>'L',
+119064=>'L',
+119065=>'L',
+119066=>'L',
+119067=>'L',
+119068=>'L',
+119069=>'L',
+119070=>'L',
+119071=>'L',
+119072=>'L',
+119073=>'L',
+119074=>'L',
+119075=>'L',
+119076=>'L',
+119077=>'L',
+119078=>'L',
+119082=>'L',
+119083=>'L',
+119084=>'L',
+119085=>'L',
+119086=>'L',
+119087=>'L',
+119088=>'L',
+119089=>'L',
+119090=>'L',
+119091=>'L',
+119092=>'L',
+119093=>'L',
+119094=>'L',
+119095=>'L',
+119096=>'L',
+119097=>'L',
+119098=>'L',
+119099=>'L',
+119100=>'L',
+119101=>'L',
+119102=>'L',
+119103=>'L',
+119104=>'L',
+119105=>'L',
+119106=>'L',
+119107=>'L',
+119108=>'L',
+119109=>'L',
+119110=>'L',
+119111=>'L',
+119112=>'L',
+119113=>'L',
+119114=>'L',
+119115=>'L',
+119116=>'L',
+119117=>'L',
+119118=>'L',
+119119=>'L',
+119120=>'L',
+119121=>'L',
+119122=>'L',
+119123=>'L',
+119124=>'L',
+119125=>'L',
+119126=>'L',
+119127=>'L',
+119128=>'L',
+119129=>'L',
+119130=>'L',
+119131=>'L',
+119132=>'L',
+119133=>'L',
+119134=>'L',
+119135=>'L',
+119136=>'L',
+119137=>'L',
+119138=>'L',
+119139=>'L',
+119140=>'L',
+119141=>'L',
+119142=>'L',
+119143=>'NSM',
+119144=>'NSM',
+119145=>'NSM',
+119146=>'L',
+119147=>'L',
+119148=>'L',
+119149=>'L',
+119150=>'L',
+119151=>'L',
+119152=>'L',
+119153=>'L',
+119154=>'L',
+119155=>'BN',
+119156=>'BN',
+119157=>'BN',
+119158=>'BN',
+119159=>'BN',
+119160=>'BN',
+119161=>'BN',
+119162=>'BN',
+119163=>'NSM',
+119164=>'NSM',
+119165=>'NSM',
+119166=>'NSM',
+119167=>'NSM',
+119168=>'NSM',
+119169=>'NSM',
+119170=>'NSM',
+119171=>'L',
+119172=>'L',
+119173=>'NSM',
+119174=>'NSM',
+119175=>'NSM',
+119176=>'NSM',
+119177=>'NSM',
+119178=>'NSM',
+119179=>'NSM',
+119180=>'L',
+119181=>'L',
+119182=>'L',
+119183=>'L',
+119184=>'L',
+119185=>'L',
+119186=>'L',
+119187=>'L',
+119188=>'L',
+119189=>'L',
+119190=>'L',
+119191=>'L',
+119192=>'L',
+119193=>'L',
+119194=>'L',
+119195=>'L',
+119196=>'L',
+119197=>'L',
+119198=>'L',
+119199=>'L',
+119200=>'L',
+119201=>'L',
+119202=>'L',
+119203=>'L',
+119204=>'L',
+119205=>'L',
+119206=>'L',
+119207=>'L',
+119208=>'L',
+119209=>'L',
+119210=>'NSM',
+119211=>'NSM',
+119212=>'NSM',
+119213=>'NSM',
+119214=>'L',
+119215=>'L',
+119216=>'L',
+119217=>'L',
+119218=>'L',
+119219=>'L',
+119220=>'L',
+119221=>'L',
+119222=>'L',
+119223=>'L',
+119224=>'L',
+119225=>'L',
+119226=>'L',
+119227=>'L',
+119228=>'L',
+119229=>'L',
+119230=>'L',
+119231=>'L',
+119232=>'L',
+119233=>'L',
+119234=>'L',
+119235=>'L',
+119236=>'L',
+119237=>'L',
+119238=>'L',
+119239=>'L',
+119240=>'L',
+119241=>'L',
+119242=>'L',
+119243=>'L',
+119244=>'L',
+119245=>'L',
+119246=>'L',
+119247=>'L',
+119248=>'L',
+119249=>'L',
+119250=>'L',
+119251=>'L',
+119252=>'L',
+119253=>'L',
+119254=>'L',
+119255=>'L',
+119256=>'L',
+119257=>'L',
+119258=>'L',
+119259=>'L',
+119260=>'L',
+119261=>'L',
+119296=>'ON',
+119297=>'ON',
+119298=>'ON',
+119299=>'ON',
+119300=>'ON',
+119301=>'ON',
+119302=>'ON',
+119303=>'ON',
+119304=>'ON',
+119305=>'ON',
+119306=>'ON',
+119307=>'ON',
+119308=>'ON',
+119309=>'ON',
+119310=>'ON',
+119311=>'ON',
+119312=>'ON',
+119313=>'ON',
+119314=>'ON',
+119315=>'ON',
+119316=>'ON',
+119317=>'ON',
+119318=>'ON',
+119319=>'ON',
+119320=>'ON',
+119321=>'ON',
+119322=>'ON',
+119323=>'ON',
+119324=>'ON',
+119325=>'ON',
+119326=>'ON',
+119327=>'ON',
+119328=>'ON',
+119329=>'ON',
+119330=>'ON',
+119331=>'ON',
+119332=>'ON',
+119333=>'ON',
+119334=>'ON',
+119335=>'ON',
+119336=>'ON',
+119337=>'ON',
+119338=>'ON',
+119339=>'ON',
+119340=>'ON',
+119341=>'ON',
+119342=>'ON',
+119343=>'ON',
+119344=>'ON',
+119345=>'ON',
+119346=>'ON',
+119347=>'ON',
+119348=>'ON',
+119349=>'ON',
+119350=>'ON',
+119351=>'ON',
+119352=>'ON',
+119353=>'ON',
+119354=>'ON',
+119355=>'ON',
+119356=>'ON',
+119357=>'ON',
+119358=>'ON',
+119359=>'ON',
+119360=>'ON',
+119361=>'ON',
+119362=>'NSM',
+119363=>'NSM',
+119364=>'NSM',
+119365=>'ON',
+119552=>'ON',
+119553=>'ON',
+119554=>'ON',
+119555=>'ON',
+119556=>'ON',
+119557=>'ON',
+119558=>'ON',
+119559=>'ON',
+119560=>'ON',
+119561=>'ON',
+119562=>'ON',
+119563=>'ON',
+119564=>'ON',
+119565=>'ON',
+119566=>'ON',
+119567=>'ON',
+119568=>'ON',
+119569=>'ON',
+119570=>'ON',
+119571=>'ON',
+119572=>'ON',
+119573=>'ON',
+119574=>'ON',
+119575=>'ON',
+119576=>'ON',
+119577=>'ON',
+119578=>'ON',
+119579=>'ON',
+119580=>'ON',
+119581=>'ON',
+119582=>'ON',
+119583=>'ON',
+119584=>'ON',
+119585=>'ON',
+119586=>'ON',
+119587=>'ON',
+119588=>'ON',
+119589=>'ON',
+119590=>'ON',
+119591=>'ON',
+119592=>'ON',
+119593=>'ON',
+119594=>'ON',
+119595=>'ON',
+119596=>'ON',
+119597=>'ON',
+119598=>'ON',
+119599=>'ON',
+119600=>'ON',
+119601=>'ON',
+119602=>'ON',
+119603=>'ON',
+119604=>'ON',
+119605=>'ON',
+119606=>'ON',
+119607=>'ON',
+119608=>'ON',
+119609=>'ON',
+119610=>'ON',
+119611=>'ON',
+119612=>'ON',
+119613=>'ON',
+119614=>'ON',
+119615=>'ON',
+119616=>'ON',
+119617=>'ON',
+119618=>'ON',
+119619=>'ON',
+119620=>'ON',
+119621=>'ON',
+119622=>'ON',
+119623=>'ON',
+119624=>'ON',
+119625=>'ON',
+119626=>'ON',
+119627=>'ON',
+119628=>'ON',
+119629=>'ON',
+119630=>'ON',
+119631=>'ON',
+119632=>'ON',
+119633=>'ON',
+119634=>'ON',
+119635=>'ON',
+119636=>'ON',
+119637=>'ON',
+119638=>'ON',
+119648=>'L',
+119649=>'L',
+119650=>'L',
+119651=>'L',
+119652=>'L',
+119653=>'L',
+119654=>'L',
+119655=>'L',
+119656=>'L',
+119657=>'L',
+119658=>'L',
+119659=>'L',
+119660=>'L',
+119661=>'L',
+119662=>'L',
+119663=>'L',
+119664=>'L',
+119665=>'L',
+119808=>'L',
+119809=>'L',
+119810=>'L',
+119811=>'L',
+119812=>'L',
+119813=>'L',
+119814=>'L',
+119815=>'L',
+119816=>'L',
+119817=>'L',
+119818=>'L',
+119819=>'L',
+119820=>'L',
+119821=>'L',
+119822=>'L',
+119823=>'L',
+119824=>'L',
+119825=>'L',
+119826=>'L',
+119827=>'L',
+119828=>'L',
+119829=>'L',
+119830=>'L',
+119831=>'L',
+119832=>'L',
+119833=>'L',
+119834=>'L',
+119835=>'L',
+119836=>'L',
+119837=>'L',
+119838=>'L',
+119839=>'L',
+119840=>'L',
+119841=>'L',
+119842=>'L',
+119843=>'L',
+119844=>'L',
+119845=>'L',
+119846=>'L',
+119847=>'L',
+119848=>'L',
+119849=>'L',
+119850=>'L',
+119851=>'L',
+119852=>'L',
+119853=>'L',
+119854=>'L',
+119855=>'L',
+119856=>'L',
+119857=>'L',
+119858=>'L',
+119859=>'L',
+119860=>'L',
+119861=>'L',
+119862=>'L',
+119863=>'L',
+119864=>'L',
+119865=>'L',
+119866=>'L',
+119867=>'L',
+119868=>'L',
+119869=>'L',
+119870=>'L',
+119871=>'L',
+119872=>'L',
+119873=>'L',
+119874=>'L',
+119875=>'L',
+119876=>'L',
+119877=>'L',
+119878=>'L',
+119879=>'L',
+119880=>'L',
+119881=>'L',
+119882=>'L',
+119883=>'L',
+119884=>'L',
+119885=>'L',
+119886=>'L',
+119887=>'L',
+119888=>'L',
+119889=>'L',
+119890=>'L',
+119891=>'L',
+119892=>'L',
+119894=>'L',
+119895=>'L',
+119896=>'L',
+119897=>'L',
+119898=>'L',
+119899=>'L',
+119900=>'L',
+119901=>'L',
+119902=>'L',
+119903=>'L',
+119904=>'L',
+119905=>'L',
+119906=>'L',
+119907=>'L',
+119908=>'L',
+119909=>'L',
+119910=>'L',
+119911=>'L',
+119912=>'L',
+119913=>'L',
+119914=>'L',
+119915=>'L',
+119916=>'L',
+119917=>'L',
+119918=>'L',
+119919=>'L',
+119920=>'L',
+119921=>'L',
+119922=>'L',
+119923=>'L',
+119924=>'L',
+119925=>'L',
+119926=>'L',
+119927=>'L',
+119928=>'L',
+119929=>'L',
+119930=>'L',
+119931=>'L',
+119932=>'L',
+119933=>'L',
+119934=>'L',
+119935=>'L',
+119936=>'L',
+119937=>'L',
+119938=>'L',
+119939=>'L',
+119940=>'L',
+119941=>'L',
+119942=>'L',
+119943=>'L',
+119944=>'L',
+119945=>'L',
+119946=>'L',
+119947=>'L',
+119948=>'L',
+119949=>'L',
+119950=>'L',
+119951=>'L',
+119952=>'L',
+119953=>'L',
+119954=>'L',
+119955=>'L',
+119956=>'L',
+119957=>'L',
+119958=>'L',
+119959=>'L',
+119960=>'L',
+119961=>'L',
+119962=>'L',
+119963=>'L',
+119964=>'L',
+119966=>'L',
+119967=>'L',
+119970=>'L',
+119973=>'L',
+119974=>'L',
+119977=>'L',
+119978=>'L',
+119979=>'L',
+119980=>'L',
+119982=>'L',
+119983=>'L',
+119984=>'L',
+119985=>'L',
+119986=>'L',
+119987=>'L',
+119988=>'L',
+119989=>'L',
+119990=>'L',
+119991=>'L',
+119992=>'L',
+119993=>'L',
+119995=>'L',
+119997=>'L',
+119998=>'L',
+119999=>'L',
+120000=>'L',
+120001=>'L',
+120002=>'L',
+120003=>'L',
+120005=>'L',
+120006=>'L',
+120007=>'L',
+120008=>'L',
+120009=>'L',
+120010=>'L',
+120011=>'L',
+120012=>'L',
+120013=>'L',
+120014=>'L',
+120015=>'L',
+120016=>'L',
+120017=>'L',
+120018=>'L',
+120019=>'L',
+120020=>'L',
+120021=>'L',
+120022=>'L',
+120023=>'L',
+120024=>'L',
+120025=>'L',
+120026=>'L',
+120027=>'L',
+120028=>'L',
+120029=>'L',
+120030=>'L',
+120031=>'L',
+120032=>'L',
+120033=>'L',
+120034=>'L',
+120035=>'L',
+120036=>'L',
+120037=>'L',
+120038=>'L',
+120039=>'L',
+120040=>'L',
+120041=>'L',
+120042=>'L',
+120043=>'L',
+120044=>'L',
+120045=>'L',
+120046=>'L',
+120047=>'L',
+120048=>'L',
+120049=>'L',
+120050=>'L',
+120051=>'L',
+120052=>'L',
+120053=>'L',
+120054=>'L',
+120055=>'L',
+120056=>'L',
+120057=>'L',
+120058=>'L',
+120059=>'L',
+120060=>'L',
+120061=>'L',
+120062=>'L',
+120063=>'L',
+120064=>'L',
+120065=>'L',
+120066=>'L',
+120067=>'L',
+120068=>'L',
+120069=>'L',
+120071=>'L',
+120072=>'L',
+120073=>'L',
+120074=>'L',
+120077=>'L',
+120078=>'L',
+120079=>'L',
+120080=>'L',
+120081=>'L',
+120082=>'L',
+120083=>'L',
+120084=>'L',
+120086=>'L',
+120087=>'L',
+120088=>'L',
+120089=>'L',
+120090=>'L',
+120091=>'L',
+120092=>'L',
+120094=>'L',
+120095=>'L',
+120096=>'L',
+120097=>'L',
+120098=>'L',
+120099=>'L',
+120100=>'L',
+120101=>'L',
+120102=>'L',
+120103=>'L',
+120104=>'L',
+120105=>'L',
+120106=>'L',
+120107=>'L',
+120108=>'L',
+120109=>'L',
+120110=>'L',
+120111=>'L',
+120112=>'L',
+120113=>'L',
+120114=>'L',
+120115=>'L',
+120116=>'L',
+120117=>'L',
+120118=>'L',
+120119=>'L',
+120120=>'L',
+120121=>'L',
+120123=>'L',
+120124=>'L',
+120125=>'L',
+120126=>'L',
+120128=>'L',
+120129=>'L',
+120130=>'L',
+120131=>'L',
+120132=>'L',
+120134=>'L',
+120138=>'L',
+120139=>'L',
+120140=>'L',
+120141=>'L',
+120142=>'L',
+120143=>'L',
+120144=>'L',
+120146=>'L',
+120147=>'L',
+120148=>'L',
+120149=>'L',
+120150=>'L',
+120151=>'L',
+120152=>'L',
+120153=>'L',
+120154=>'L',
+120155=>'L',
+120156=>'L',
+120157=>'L',
+120158=>'L',
+120159=>'L',
+120160=>'L',
+120161=>'L',
+120162=>'L',
+120163=>'L',
+120164=>'L',
+120165=>'L',
+120166=>'L',
+120167=>'L',
+120168=>'L',
+120169=>'L',
+120170=>'L',
+120171=>'L',
+120172=>'L',
+120173=>'L',
+120174=>'L',
+120175=>'L',
+120176=>'L',
+120177=>'L',
+120178=>'L',
+120179=>'L',
+120180=>'L',
+120181=>'L',
+120182=>'L',
+120183=>'L',
+120184=>'L',
+120185=>'L',
+120186=>'L',
+120187=>'L',
+120188=>'L',
+120189=>'L',
+120190=>'L',
+120191=>'L',
+120192=>'L',
+120193=>'L',
+120194=>'L',
+120195=>'L',
+120196=>'L',
+120197=>'L',
+120198=>'L',
+120199=>'L',
+120200=>'L',
+120201=>'L',
+120202=>'L',
+120203=>'L',
+120204=>'L',
+120205=>'L',
+120206=>'L',
+120207=>'L',
+120208=>'L',
+120209=>'L',
+120210=>'L',
+120211=>'L',
+120212=>'L',
+120213=>'L',
+120214=>'L',
+120215=>'L',
+120216=>'L',
+120217=>'L',
+120218=>'L',
+120219=>'L',
+120220=>'L',
+120221=>'L',
+120222=>'L',
+120223=>'L',
+120224=>'L',
+120225=>'L',
+120226=>'L',
+120227=>'L',
+120228=>'L',
+120229=>'L',
+120230=>'L',
+120231=>'L',
+120232=>'L',
+120233=>'L',
+120234=>'L',
+120235=>'L',
+120236=>'L',
+120237=>'L',
+120238=>'L',
+120239=>'L',
+120240=>'L',
+120241=>'L',
+120242=>'L',
+120243=>'L',
+120244=>'L',
+120245=>'L',
+120246=>'L',
+120247=>'L',
+120248=>'L',
+120249=>'L',
+120250=>'L',
+120251=>'L',
+120252=>'L',
+120253=>'L',
+120254=>'L',
+120255=>'L',
+120256=>'L',
+120257=>'L',
+120258=>'L',
+120259=>'L',
+120260=>'L',
+120261=>'L',
+120262=>'L',
+120263=>'L',
+120264=>'L',
+120265=>'L',
+120266=>'L',
+120267=>'L',
+120268=>'L',
+120269=>'L',
+120270=>'L',
+120271=>'L',
+120272=>'L',
+120273=>'L',
+120274=>'L',
+120275=>'L',
+120276=>'L',
+120277=>'L',
+120278=>'L',
+120279=>'L',
+120280=>'L',
+120281=>'L',
+120282=>'L',
+120283=>'L',
+120284=>'L',
+120285=>'L',
+120286=>'L',
+120287=>'L',
+120288=>'L',
+120289=>'L',
+120290=>'L',
+120291=>'L',
+120292=>'L',
+120293=>'L',
+120294=>'L',
+120295=>'L',
+120296=>'L',
+120297=>'L',
+120298=>'L',
+120299=>'L',
+120300=>'L',
+120301=>'L',
+120302=>'L',
+120303=>'L',
+120304=>'L',
+120305=>'L',
+120306=>'L',
+120307=>'L',
+120308=>'L',
+120309=>'L',
+120310=>'L',
+120311=>'L',
+120312=>'L',
+120313=>'L',
+120314=>'L',
+120315=>'L',
+120316=>'L',
+120317=>'L',
+120318=>'L',
+120319=>'L',
+120320=>'L',
+120321=>'L',
+120322=>'L',
+120323=>'L',
+120324=>'L',
+120325=>'L',
+120326=>'L',
+120327=>'L',
+120328=>'L',
+120329=>'L',
+120330=>'L',
+120331=>'L',
+120332=>'L',
+120333=>'L',
+120334=>'L',
+120335=>'L',
+120336=>'L',
+120337=>'L',
+120338=>'L',
+120339=>'L',
+120340=>'L',
+120341=>'L',
+120342=>'L',
+120343=>'L',
+120344=>'L',
+120345=>'L',
+120346=>'L',
+120347=>'L',
+120348=>'L',
+120349=>'L',
+120350=>'L',
+120351=>'L',
+120352=>'L',
+120353=>'L',
+120354=>'L',
+120355=>'L',
+120356=>'L',
+120357=>'L',
+120358=>'L',
+120359=>'L',
+120360=>'L',
+120361=>'L',
+120362=>'L',
+120363=>'L',
+120364=>'L',
+120365=>'L',
+120366=>'L',
+120367=>'L',
+120368=>'L',
+120369=>'L',
+120370=>'L',
+120371=>'L',
+120372=>'L',
+120373=>'L',
+120374=>'L',
+120375=>'L',
+120376=>'L',
+120377=>'L',
+120378=>'L',
+120379=>'L',
+120380=>'L',
+120381=>'L',
+120382=>'L',
+120383=>'L',
+120384=>'L',
+120385=>'L',
+120386=>'L',
+120387=>'L',
+120388=>'L',
+120389=>'L',
+120390=>'L',
+120391=>'L',
+120392=>'L',
+120393=>'L',
+120394=>'L',
+120395=>'L',
+120396=>'L',
+120397=>'L',
+120398=>'L',
+120399=>'L',
+120400=>'L',
+120401=>'L',
+120402=>'L',
+120403=>'L',
+120404=>'L',
+120405=>'L',
+120406=>'L',
+120407=>'L',
+120408=>'L',
+120409=>'L',
+120410=>'L',
+120411=>'L',
+120412=>'L',
+120413=>'L',
+120414=>'L',
+120415=>'L',
+120416=>'L',
+120417=>'L',
+120418=>'L',
+120419=>'L',
+120420=>'L',
+120421=>'L',
+120422=>'L',
+120423=>'L',
+120424=>'L',
+120425=>'L',
+120426=>'L',
+120427=>'L',
+120428=>'L',
+120429=>'L',
+120430=>'L',
+120431=>'L',
+120432=>'L',
+120433=>'L',
+120434=>'L',
+120435=>'L',
+120436=>'L',
+120437=>'L',
+120438=>'L',
+120439=>'L',
+120440=>'L',
+120441=>'L',
+120442=>'L',
+120443=>'L',
+120444=>'L',
+120445=>'L',
+120446=>'L',
+120447=>'L',
+120448=>'L',
+120449=>'L',
+120450=>'L',
+120451=>'L',
+120452=>'L',
+120453=>'L',
+120454=>'L',
+120455=>'L',
+120456=>'L',
+120457=>'L',
+120458=>'L',
+120459=>'L',
+120460=>'L',
+120461=>'L',
+120462=>'L',
+120463=>'L',
+120464=>'L',
+120465=>'L',
+120466=>'L',
+120467=>'L',
+120468=>'L',
+120469=>'L',
+120470=>'L',
+120471=>'L',
+120472=>'L',
+120473=>'L',
+120474=>'L',
+120475=>'L',
+120476=>'L',
+120477=>'L',
+120478=>'L',
+120479=>'L',
+120480=>'L',
+120481=>'L',
+120482=>'L',
+120483=>'L',
+120484=>'L',
+120485=>'L',
+120488=>'L',
+120489=>'L',
+120490=>'L',
+120491=>'L',
+120492=>'L',
+120493=>'L',
+120494=>'L',
+120495=>'L',
+120496=>'L',
+120497=>'L',
+120498=>'L',
+120499=>'L',
+120500=>'L',
+120501=>'L',
+120502=>'L',
+120503=>'L',
+120504=>'L',
+120505=>'L',
+120506=>'L',
+120507=>'L',
+120508=>'L',
+120509=>'L',
+120510=>'L',
+120511=>'L',
+120512=>'L',
+120513=>'L',
+120514=>'L',
+120515=>'L',
+120516=>'L',
+120517=>'L',
+120518=>'L',
+120519=>'L',
+120520=>'L',
+120521=>'L',
+120522=>'L',
+120523=>'L',
+120524=>'L',
+120525=>'L',
+120526=>'L',
+120527=>'L',
+120528=>'L',
+120529=>'L',
+120530=>'L',
+120531=>'L',
+120532=>'L',
+120533=>'L',
+120534=>'L',
+120535=>'L',
+120536=>'L',
+120537=>'L',
+120538=>'L',
+120539=>'L',
+120540=>'L',
+120541=>'L',
+120542=>'L',
+120543=>'L',
+120544=>'L',
+120545=>'L',
+120546=>'L',
+120547=>'L',
+120548=>'L',
+120549=>'L',
+120550=>'L',
+120551=>'L',
+120552=>'L',
+120553=>'L',
+120554=>'L',
+120555=>'L',
+120556=>'L',
+120557=>'L',
+120558=>'L',
+120559=>'L',
+120560=>'L',
+120561=>'L',
+120562=>'L',
+120563=>'L',
+120564=>'L',
+120565=>'L',
+120566=>'L',
+120567=>'L',
+120568=>'L',
+120569=>'L',
+120570=>'L',
+120571=>'L',
+120572=>'L',
+120573=>'L',
+120574=>'L',
+120575=>'L',
+120576=>'L',
+120577=>'L',
+120578=>'L',
+120579=>'L',
+120580=>'L',
+120581=>'L',
+120582=>'L',
+120583=>'L',
+120584=>'L',
+120585=>'L',
+120586=>'L',
+120587=>'L',
+120588=>'L',
+120589=>'L',
+120590=>'L',
+120591=>'L',
+120592=>'L',
+120593=>'L',
+120594=>'L',
+120595=>'L',
+120596=>'L',
+120597=>'L',
+120598=>'L',
+120599=>'L',
+120600=>'L',
+120601=>'L',
+120602=>'L',
+120603=>'L',
+120604=>'L',
+120605=>'L',
+120606=>'L',
+120607=>'L',
+120608=>'L',
+120609=>'L',
+120610=>'L',
+120611=>'L',
+120612=>'L',
+120613=>'L',
+120614=>'L',
+120615=>'L',
+120616=>'L',
+120617=>'L',
+120618=>'L',
+120619=>'L',
+120620=>'L',
+120621=>'L',
+120622=>'L',
+120623=>'L',
+120624=>'L',
+120625=>'L',
+120626=>'L',
+120627=>'L',
+120628=>'L',
+120629=>'L',
+120630=>'L',
+120631=>'L',
+120632=>'L',
+120633=>'L',
+120634=>'L',
+120635=>'L',
+120636=>'L',
+120637=>'L',
+120638=>'L',
+120639=>'L',
+120640=>'L',
+120641=>'L',
+120642=>'L',
+120643=>'L',
+120644=>'L',
+120645=>'L',
+120646=>'L',
+120647=>'L',
+120648=>'L',
+120649=>'L',
+120650=>'L',
+120651=>'L',
+120652=>'L',
+120653=>'L',
+120654=>'L',
+120655=>'L',
+120656=>'L',
+120657=>'L',
+120658=>'L',
+120659=>'L',
+120660=>'L',
+120661=>'L',
+120662=>'L',
+120663=>'L',
+120664=>'L',
+120665=>'L',
+120666=>'L',
+120667=>'L',
+120668=>'L',
+120669=>'L',
+120670=>'L',
+120671=>'L',
+120672=>'L',
+120673=>'L',
+120674=>'L',
+120675=>'L',
+120676=>'L',
+120677=>'L',
+120678=>'L',
+120679=>'L',
+120680=>'L',
+120681=>'L',
+120682=>'L',
+120683=>'L',
+120684=>'L',
+120685=>'L',
+120686=>'L',
+120687=>'L',
+120688=>'L',
+120689=>'L',
+120690=>'L',
+120691=>'L',
+120692=>'L',
+120693=>'L',
+120694=>'L',
+120695=>'L',
+120696=>'L',
+120697=>'L',
+120698=>'L',
+120699=>'L',
+120700=>'L',
+120701=>'L',
+120702=>'L',
+120703=>'L',
+120704=>'L',
+120705=>'L',
+120706=>'L',
+120707=>'L',
+120708=>'L',
+120709=>'L',
+120710=>'L',
+120711=>'L',
+120712=>'L',
+120713=>'L',
+120714=>'L',
+120715=>'L',
+120716=>'L',
+120717=>'L',
+120718=>'L',
+120719=>'L',
+120720=>'L',
+120721=>'L',
+120722=>'L',
+120723=>'L',
+120724=>'L',
+120725=>'L',
+120726=>'L',
+120727=>'L',
+120728=>'L',
+120729=>'L',
+120730=>'L',
+120731=>'L',
+120732=>'L',
+120733=>'L',
+120734=>'L',
+120735=>'L',
+120736=>'L',
+120737=>'L',
+120738=>'L',
+120739=>'L',
+120740=>'L',
+120741=>'L',
+120742=>'L',
+120743=>'L',
+120744=>'L',
+120745=>'L',
+120746=>'L',
+120747=>'L',
+120748=>'L',
+120749=>'L',
+120750=>'L',
+120751=>'L',
+120752=>'L',
+120753=>'L',
+120754=>'L',
+120755=>'L',
+120756=>'L',
+120757=>'L',
+120758=>'L',
+120759=>'L',
+120760=>'L',
+120761=>'L',
+120762=>'L',
+120763=>'L',
+120764=>'L',
+120765=>'L',
+120766=>'L',
+120767=>'L',
+120768=>'L',
+120769=>'L',
+120770=>'L',
+120771=>'L',
+120772=>'L',
+120773=>'L',
+120774=>'L',
+120775=>'L',
+120776=>'L',
+120777=>'L',
+120778=>'L',
+120779=>'L',
+120782=>'EN',
+120783=>'EN',
+120784=>'EN',
+120785=>'EN',
+120786=>'EN',
+120787=>'EN',
+120788=>'EN',
+120789=>'EN',
+120790=>'EN',
+120791=>'EN',
+120792=>'EN',
+120793=>'EN',
+120794=>'EN',
+120795=>'EN',
+120796=>'EN',
+120797=>'EN',
+120798=>'EN',
+120799=>'EN',
+120800=>'EN',
+120801=>'EN',
+120802=>'EN',
+120803=>'EN',
+120804=>'EN',
+120805=>'EN',
+120806=>'EN',
+120807=>'EN',
+120808=>'EN',
+120809=>'EN',
+120810=>'EN',
+120811=>'EN',
+120812=>'EN',
+120813=>'EN',
+120814=>'EN',
+120815=>'EN',
+120816=>'EN',
+120817=>'EN',
+120818=>'EN',
+120819=>'EN',
+120820=>'EN',
+120821=>'EN',
+120822=>'EN',
+120823=>'EN',
+120824=>'EN',
+120825=>'EN',
+120826=>'EN',
+120827=>'EN',
+120828=>'EN',
+120829=>'EN',
+120830=>'EN',
+120831=>'EN',
+131072=>'L',
+173782=>'L',
+194560=>'L',
+194561=>'L',
+194562=>'L',
+194563=>'L',
+194564=>'L',
+194565=>'L',
+194566=>'L',
+194567=>'L',
+194568=>'L',
+194569=>'L',
+194570=>'L',
+194571=>'L',
+194572=>'L',
+194573=>'L',
+194574=>'L',
+194575=>'L',
+194576=>'L',
+194577=>'L',
+194578=>'L',
+194579=>'L',
+194580=>'L',
+194581=>'L',
+194582=>'L',
+194583=>'L',
+194584=>'L',
+194585=>'L',
+194586=>'L',
+194587=>'L',
+194588=>'L',
+194589=>'L',
+194590=>'L',
+194591=>'L',
+194592=>'L',
+194593=>'L',
+194594=>'L',
+194595=>'L',
+194596=>'L',
+194597=>'L',
+194598=>'L',
+194599=>'L',
+194600=>'L',
+194601=>'L',
+194602=>'L',
+194603=>'L',
+194604=>'L',
+194605=>'L',
+194606=>'L',
+194607=>'L',
+194608=>'L',
+194609=>'L',
+194610=>'L',
+194611=>'L',
+194612=>'L',
+194613=>'L',
+194614=>'L',
+194615=>'L',
+194616=>'L',
+194617=>'L',
+194618=>'L',
+194619=>'L',
+194620=>'L',
+194621=>'L',
+194622=>'L',
+194623=>'L',
+194624=>'L',
+194625=>'L',
+194626=>'L',
+194627=>'L',
+194628=>'L',
+194629=>'L',
+194630=>'L',
+194631=>'L',
+194632=>'L',
+194633=>'L',
+194634=>'L',
+194635=>'L',
+194636=>'L',
+194637=>'L',
+194638=>'L',
+194639=>'L',
+194640=>'L',
+194641=>'L',
+194642=>'L',
+194643=>'L',
+194644=>'L',
+194645=>'L',
+194646=>'L',
+194647=>'L',
+194648=>'L',
+194649=>'L',
+194650=>'L',
+194651=>'L',
+194652=>'L',
+194653=>'L',
+194654=>'L',
+194655=>'L',
+194656=>'L',
+194657=>'L',
+194658=>'L',
+194659=>'L',
+194660=>'L',
+194661=>'L',
+194662=>'L',
+194663=>'L',
+194664=>'L',
+194665=>'L',
+194666=>'L',
+194667=>'L',
+194668=>'L',
+194669=>'L',
+194670=>'L',
+194671=>'L',
+194672=>'L',
+194673=>'L',
+194674=>'L',
+194675=>'L',
+194676=>'L',
+194677=>'L',
+194678=>'L',
+194679=>'L',
+194680=>'L',
+194681=>'L',
+194682=>'L',
+194683=>'L',
+194684=>'L',
+194685=>'L',
+194686=>'L',
+194687=>'L',
+194688=>'L',
+194689=>'L',
+194690=>'L',
+194691=>'L',
+194692=>'L',
+194693=>'L',
+194694=>'L',
+194695=>'L',
+194696=>'L',
+194697=>'L',
+194698=>'L',
+194699=>'L',
+194700=>'L',
+194701=>'L',
+194702=>'L',
+194703=>'L',
+194704=>'L',
+194705=>'L',
+194706=>'L',
+194707=>'L',
+194708=>'L',
+194709=>'L',
+194710=>'L',
+194711=>'L',
+194712=>'L',
+194713=>'L',
+194714=>'L',
+194715=>'L',
+194716=>'L',
+194717=>'L',
+194718=>'L',
+194719=>'L',
+194720=>'L',
+194721=>'L',
+194722=>'L',
+194723=>'L',
+194724=>'L',
+194725=>'L',
+194726=>'L',
+194727=>'L',
+194728=>'L',
+194729=>'L',
+194730=>'L',
+194731=>'L',
+194732=>'L',
+194733=>'L',
+194734=>'L',
+194735=>'L',
+194736=>'L',
+194737=>'L',
+194738=>'L',
+194739=>'L',
+194740=>'L',
+194741=>'L',
+194742=>'L',
+194743=>'L',
+194744=>'L',
+194745=>'L',
+194746=>'L',
+194747=>'L',
+194748=>'L',
+194749=>'L',
+194750=>'L',
+194751=>'L',
+194752=>'L',
+194753=>'L',
+194754=>'L',
+194755=>'L',
+194756=>'L',
+194757=>'L',
+194758=>'L',
+194759=>'L',
+194760=>'L',
+194761=>'L',
+194762=>'L',
+194763=>'L',
+194764=>'L',
+194765=>'L',
+194766=>'L',
+194767=>'L',
+194768=>'L',
+194769=>'L',
+194770=>'L',
+194771=>'L',
+194772=>'L',
+194773=>'L',
+194774=>'L',
+194775=>'L',
+194776=>'L',
+194777=>'L',
+194778=>'L',
+194779=>'L',
+194780=>'L',
+194781=>'L',
+194782=>'L',
+194783=>'L',
+194784=>'L',
+194785=>'L',
+194786=>'L',
+194787=>'L',
+194788=>'L',
+194789=>'L',
+194790=>'L',
+194791=>'L',
+194792=>'L',
+194793=>'L',
+194794=>'L',
+194795=>'L',
+194796=>'L',
+194797=>'L',
+194798=>'L',
+194799=>'L',
+194800=>'L',
+194801=>'L',
+194802=>'L',
+194803=>'L',
+194804=>'L',
+194805=>'L',
+194806=>'L',
+194807=>'L',
+194808=>'L',
+194809=>'L',
+194810=>'L',
+194811=>'L',
+194812=>'L',
+194813=>'L',
+194814=>'L',
+194815=>'L',
+194816=>'L',
+194817=>'L',
+194818=>'L',
+194819=>'L',
+194820=>'L',
+194821=>'L',
+194822=>'L',
+194823=>'L',
+194824=>'L',
+194825=>'L',
+194826=>'L',
+194827=>'L',
+194828=>'L',
+194829=>'L',
+194830=>'L',
+194831=>'L',
+194832=>'L',
+194833=>'L',
+194834=>'L',
+194835=>'L',
+194836=>'L',
+194837=>'L',
+194838=>'L',
+194839=>'L',
+194840=>'L',
+194841=>'L',
+194842=>'L',
+194843=>'L',
+194844=>'L',
+194845=>'L',
+194846=>'L',
+194847=>'L',
+194848=>'L',
+194849=>'L',
+194850=>'L',
+194851=>'L',
+194852=>'L',
+194853=>'L',
+194854=>'L',
+194855=>'L',
+194856=>'L',
+194857=>'L',
+194858=>'L',
+194859=>'L',
+194860=>'L',
+194861=>'L',
+194862=>'L',
+194863=>'L',
+194864=>'L',
+194865=>'L',
+194866=>'L',
+194867=>'L',
+194868=>'L',
+194869=>'L',
+194870=>'L',
+194871=>'L',
+194872=>'L',
+194873=>'L',
+194874=>'L',
+194875=>'L',
+194876=>'L',
+194877=>'L',
+194878=>'L',
+194879=>'L',
+194880=>'L',
+194881=>'L',
+194882=>'L',
+194883=>'L',
+194884=>'L',
+194885=>'L',
+194886=>'L',
+194887=>'L',
+194888=>'L',
+194889=>'L',
+194890=>'L',
+194891=>'L',
+194892=>'L',
+194893=>'L',
+194894=>'L',
+194895=>'L',
+194896=>'L',
+194897=>'L',
+194898=>'L',
+194899=>'L',
+194900=>'L',
+194901=>'L',
+194902=>'L',
+194903=>'L',
+194904=>'L',
+194905=>'L',
+194906=>'L',
+194907=>'L',
+194908=>'L',
+194909=>'L',
+194910=>'L',
+194911=>'L',
+194912=>'L',
+194913=>'L',
+194914=>'L',
+194915=>'L',
+194916=>'L',
+194917=>'L',
+194918=>'L',
+194919=>'L',
+194920=>'L',
+194921=>'L',
+194922=>'L',
+194923=>'L',
+194924=>'L',
+194925=>'L',
+194926=>'L',
+194927=>'L',
+194928=>'L',
+194929=>'L',
+194930=>'L',
+194931=>'L',
+194932=>'L',
+194933=>'L',
+194934=>'L',
+194935=>'L',
+194936=>'L',
+194937=>'L',
+194938=>'L',
+194939=>'L',
+194940=>'L',
+194941=>'L',
+194942=>'L',
+194943=>'L',
+194944=>'L',
+194945=>'L',
+194946=>'L',
+194947=>'L',
+194948=>'L',
+194949=>'L',
+194950=>'L',
+194951=>'L',
+194952=>'L',
+194953=>'L',
+194954=>'L',
+194955=>'L',
+194956=>'L',
+194957=>'L',
+194958=>'L',
+194959=>'L',
+194960=>'L',
+194961=>'L',
+194962=>'L',
+194963=>'L',
+194964=>'L',
+194965=>'L',
+194966=>'L',
+194967=>'L',
+194968=>'L',
+194969=>'L',
+194970=>'L',
+194971=>'L',
+194972=>'L',
+194973=>'L',
+194974=>'L',
+194975=>'L',
+194976=>'L',
+194977=>'L',
+194978=>'L',
+194979=>'L',
+194980=>'L',
+194981=>'L',
+194982=>'L',
+194983=>'L',
+194984=>'L',
+194985=>'L',
+194986=>'L',
+194987=>'L',
+194988=>'L',
+194989=>'L',
+194990=>'L',
+194991=>'L',
+194992=>'L',
+194993=>'L',
+194994=>'L',
+194995=>'L',
+194996=>'L',
+194997=>'L',
+194998=>'L',
+194999=>'L',
+195000=>'L',
+195001=>'L',
+195002=>'L',
+195003=>'L',
+195004=>'L',
+195005=>'L',
+195006=>'L',
+195007=>'L',
+195008=>'L',
+195009=>'L',
+195010=>'L',
+195011=>'L',
+195012=>'L',
+195013=>'L',
+195014=>'L',
+195015=>'L',
+195016=>'L',
+195017=>'L',
+195018=>'L',
+195019=>'L',
+195020=>'L',
+195021=>'L',
+195022=>'L',
+195023=>'L',
+195024=>'L',
+195025=>'L',
+195026=>'L',
+195027=>'L',
+195028=>'L',
+195029=>'L',
+195030=>'L',
+195031=>'L',
+195032=>'L',
+195033=>'L',
+195034=>'L',
+195035=>'L',
+195036=>'L',
+195037=>'L',
+195038=>'L',
+195039=>'L',
+195040=>'L',
+195041=>'L',
+195042=>'L',
+195043=>'L',
+195044=>'L',
+195045=>'L',
+195046=>'L',
+195047=>'L',
+195048=>'L',
+195049=>'L',
+195050=>'L',
+195051=>'L',
+195052=>'L',
+195053=>'L',
+195054=>'L',
+195055=>'L',
+195056=>'L',
+195057=>'L',
+195058=>'L',
+195059=>'L',
+195060=>'L',
+195061=>'L',
+195062=>'L',
+195063=>'L',
+195064=>'L',
+195065=>'L',
+195066=>'L',
+195067=>'L',
+195068=>'L',
+195069=>'L',
+195070=>'L',
+195071=>'L',
+195072=>'L',
+195073=>'L',
+195074=>'L',
+195075=>'L',
+195076=>'L',
+195077=>'L',
+195078=>'L',
+195079=>'L',
+195080=>'L',
+195081=>'L',
+195082=>'L',
+195083=>'L',
+195084=>'L',
+195085=>'L',
+195086=>'L',
+195087=>'L',
+195088=>'L',
+195089=>'L',
+195090=>'L',
+195091=>'L',
+195092=>'L',
+195093=>'L',
+195094=>'L',
+195095=>'L',
+195096=>'L',
+195097=>'L',
+195098=>'L',
+195099=>'L',
+195100=>'L',
+195101=>'L',
+917505=>'BN',
+917536=>'BN',
+917537=>'BN',
+917538=>'BN',
+917539=>'BN',
+917540=>'BN',
+917541=>'BN',
+917542=>'BN',
+917543=>'BN',
+917544=>'BN',
+917545=>'BN',
+917546=>'BN',
+917547=>'BN',
+917548=>'BN',
+917549=>'BN',
+917550=>'BN',
+917551=>'BN',
+917552=>'BN',
+917553=>'BN',
+917554=>'BN',
+917555=>'BN',
+917556=>'BN',
+917557=>'BN',
+917558=>'BN',
+917559=>'BN',
+917560=>'BN',
+917561=>'BN',
+917562=>'BN',
+917563=>'BN',
+917564=>'BN',
+917565=>'BN',
+917566=>'BN',
+917567=>'BN',
+917568=>'BN',
+917569=>'BN',
+917570=>'BN',
+917571=>'BN',
+917572=>'BN',
+917573=>'BN',
+917574=>'BN',
+917575=>'BN',
+917576=>'BN',
+917577=>'BN',
+917578=>'BN',
+917579=>'BN',
+917580=>'BN',
+917581=>'BN',
+917582=>'BN',
+917583=>'BN',
+917584=>'BN',
+917585=>'BN',
+917586=>'BN',
+917587=>'BN',
+917588=>'BN',
+917589=>'BN',
+917590=>'BN',
+917591=>'BN',
+917592=>'BN',
+917593=>'BN',
+917594=>'BN',
+917595=>'BN',
+917596=>'BN',
+917597=>'BN',
+917598=>'BN',
+917599=>'BN',
+917600=>'BN',
+917601=>'BN',
+917602=>'BN',
+917603=>'BN',
+917604=>'BN',
+917605=>'BN',
+917606=>'BN',
+917607=>'BN',
+917608=>'BN',
+917609=>'BN',
+917610=>'BN',
+917611=>'BN',
+917612=>'BN',
+917613=>'BN',
+917614=>'BN',
+917615=>'BN',
+917616=>'BN',
+917617=>'BN',
+917618=>'BN',
+917619=>'BN',
+917620=>'BN',
+917621=>'BN',
+917622=>'BN',
+917623=>'BN',
+917624=>'BN',
+917625=>'BN',
+917626=>'BN',
+917627=>'BN',
+917628=>'BN',
+917629=>'BN',
+917630=>'BN',
+917631=>'BN',
+917760=>'NSM',
+917761=>'NSM',
+917762=>'NSM',
+917763=>'NSM',
+917764=>'NSM',
+917765=>'NSM',
+917766=>'NSM',
+917767=>'NSM',
+917768=>'NSM',
+917769=>'NSM',
+917770=>'NSM',
+917771=>'NSM',
+917772=>'NSM',
+917773=>'NSM',
+917774=>'NSM',
+917775=>'NSM',
+917776=>'NSM',
+917777=>'NSM',
+917778=>'NSM',
+917779=>'NSM',
+917780=>'NSM',
+917781=>'NSM',
+917782=>'NSM',
+917783=>'NSM',
+917784=>'NSM',
+917785=>'NSM',
+917786=>'NSM',
+917787=>'NSM',
+917788=>'NSM',
+917789=>'NSM',
+917790=>'NSM',
+917791=>'NSM',
+917792=>'NSM',
+917793=>'NSM',
+917794=>'NSM',
+917795=>'NSM',
+917796=>'NSM',
+917797=>'NSM',
+917798=>'NSM',
+917799=>'NSM',
+917800=>'NSM',
+917801=>'NSM',
+917802=>'NSM',
+917803=>'NSM',
+917804=>'NSM',
+917805=>'NSM',
+917806=>'NSM',
+917807=>'NSM',
+917808=>'NSM',
+917809=>'NSM',
+917810=>'NSM',
+917811=>'NSM',
+917812=>'NSM',
+917813=>'NSM',
+917814=>'NSM',
+917815=>'NSM',
+917816=>'NSM',
+917817=>'NSM',
+917818=>'NSM',
+917819=>'NSM',
+917820=>'NSM',
+917821=>'NSM',
+917822=>'NSM',
+917823=>'NSM',
+917824=>'NSM',
+917825=>'NSM',
+917826=>'NSM',
+917827=>'NSM',
+917828=>'NSM',
+917829=>'NSM',
+917830=>'NSM',
+917831=>'NSM',
+917832=>'NSM',
+917833=>'NSM',
+917834=>'NSM',
+917835=>'NSM',
+917836=>'NSM',
+917837=>'NSM',
+917838=>'NSM',
+917839=>'NSM',
+917840=>'NSM',
+917841=>'NSM',
+917842=>'NSM',
+917843=>'NSM',
+917844=>'NSM',
+917845=>'NSM',
+917846=>'NSM',
+917847=>'NSM',
+917848=>'NSM',
+917849=>'NSM',
+917850=>'NSM',
+917851=>'NSM',
+917852=>'NSM',
+917853=>'NSM',
+917854=>'NSM',
+917855=>'NSM',
+917856=>'NSM',
+917857=>'NSM',
+917858=>'NSM',
+917859=>'NSM',
+917860=>'NSM',
+917861=>'NSM',
+917862=>'NSM',
+917863=>'NSM',
+917864=>'NSM',
+917865=>'NSM',
+917866=>'NSM',
+917867=>'NSM',
+917868=>'NSM',
+917869=>'NSM',
+917870=>'NSM',
+917871=>'NSM',
+917872=>'NSM',
+917873=>'NSM',
+917874=>'NSM',
+917875=>'NSM',
+917876=>'NSM',
+917877=>'NSM',
+917878=>'NSM',
+917879=>'NSM',
+917880=>'NSM',
+917881=>'NSM',
+917882=>'NSM',
+917883=>'NSM',
+917884=>'NSM',
+917885=>'NSM',
+917886=>'NSM',
+917887=>'NSM',
+917888=>'NSM',
+917889=>'NSM',
+917890=>'NSM',
+917891=>'NSM',
+917892=>'NSM',
+917893=>'NSM',
+917894=>'NSM',
+917895=>'NSM',
+917896=>'NSM',
+917897=>'NSM',
+917898=>'NSM',
+917899=>'NSM',
+917900=>'NSM',
+917901=>'NSM',
+917902=>'NSM',
+917903=>'NSM',
+917904=>'NSM',
+917905=>'NSM',
+917906=>'NSM',
+917907=>'NSM',
+917908=>'NSM',
+917909=>'NSM',
+917910=>'NSM',
+917911=>'NSM',
+917912=>'NSM',
+917913=>'NSM',
+917914=>'NSM',
+917915=>'NSM',
+917916=>'NSM',
+917917=>'NSM',
+917918=>'NSM',
+917919=>'NSM',
+917920=>'NSM',
+917921=>'NSM',
+917922=>'NSM',
+917923=>'NSM',
+917924=>'NSM',
+917925=>'NSM',
+917926=>'NSM',
+917927=>'NSM',
+917928=>'NSM',
+917929=>'NSM',
+917930=>'NSM',
+917931=>'NSM',
+917932=>'NSM',
+917933=>'NSM',
+917934=>'NSM',
+917935=>'NSM',
+917936=>'NSM',
+917937=>'NSM',
+917938=>'NSM',
+917939=>'NSM',
+917940=>'NSM',
+917941=>'NSM',
+917942=>'NSM',
+917943=>'NSM',
+917944=>'NSM',
+917945=>'NSM',
+917946=>'NSM',
+917947=>'NSM',
+917948=>'NSM',
+917949=>'NSM',
+917950=>'NSM',
+917951=>'NSM',
+917952=>'NSM',
+917953=>'NSM',
+917954=>'NSM',
+917955=>'NSM',
+917956=>'NSM',
+917957=>'NSM',
+917958=>'NSM',
+917959=>'NSM',
+917960=>'NSM',
+917961=>'NSM',
+917962=>'NSM',
+917963=>'NSM',
+917964=>'NSM',
+917965=>'NSM',
+917966=>'NSM',
+917967=>'NSM',
+917968=>'NSM',
+917969=>'NSM',
+917970=>'NSM',
+917971=>'NSM',
+917972=>'NSM',
+917973=>'NSM',
+917974=>'NSM',
+917975=>'NSM',
+917976=>'NSM',
+917977=>'NSM',
+917978=>'NSM',
+917979=>'NSM',
+917980=>'NSM',
+917981=>'NSM',
+917982=>'NSM',
+917983=>'NSM',
+917984=>'NSM',
+917985=>'NSM',
+917986=>'NSM',
+917987=>'NSM',
+917988=>'NSM',
+917989=>'NSM',
+917990=>'NSM',
+917991=>'NSM',
+917992=>'NSM',
+917993=>'NSM',
+917994=>'NSM',
+917995=>'NSM',
+917996=>'NSM',
+917997=>'NSM',
+917998=>'NSM',
+917999=>'NSM',
+983040=>'L',
+1048573=>'L',
+1048576=>'L',
+1114109=>'L'
+);
+
+/**
+ * Mirror unicode characters. For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/
+ * @public
+ */
+public static $uni_mirror = array (
+0x0028=>0x0029,
+0x0029=>0x0028,
+0x003C=>0x003E,
+0x003E=>0x003C,
+0x005B=>0x005D,
+0x005D=>0x005B,
+0x007B=>0x007D,
+0x007D=>0x007B,
+0x00AB=>0x00BB,
+0x00BB=>0x00AB,
+0x0F3A=>0x0F3B,
+0x0F3B=>0x0F3A,
+0x0F3C=>0x0F3D,
+0x0F3D=>0x0F3C,
+0x169B=>0x169C,
+0x169C=>0x169B,
+0x2018=>0x2019,
+0x2019=>0x2018,
+0x201C=>0x201D,
+0x201D=>0x201C,
+0x2039=>0x203A,
+0x203A=>0x2039,
+0x2045=>0x2046,
+0x2046=>0x2045,
+0x207D=>0x207E,
+0x207E=>0x207D,
+0x208D=>0x208E,
+0x208E=>0x208D,
+0x2208=>0x220B,
+0x2209=>0x220C,
+0x220A=>0x220D,
+0x220B=>0x2208,
+0x220C=>0x2209,
+0x220D=>0x220A,
+0x2215=>0x29F5,
+0x223C=>0x223D,
+0x223D=>0x223C,
+0x2243=>0x22CD,
+0x2252=>0x2253,
+0x2253=>0x2252,
+0x2254=>0x2255,
+0x2255=>0x2254,
+0x2264=>0x2265,
+0x2265=>0x2264,
+0x2266=>0x2267,
+0x2267=>0x2266,
+0x2268=>0x2269,
+0x2269=>0x2268,
+0x226A=>0x226B,
+0x226B=>0x226A,
+0x226E=>0x226F,
+0x226F=>0x226E,
+0x2270=>0x2271,
+0x2271=>0x2270,
+0x2272=>0x2273,
+0x2273=>0x2272,
+0x2274=>0x2275,
+0x2275=>0x2274,
+0x2276=>0x2277,
+0x2277=>0x2276,
+0x2278=>0x2279,
+0x2279=>0x2278,
+0x227A=>0x227B,
+0x227B=>0x227A,
+0x227C=>0x227D,
+0x227D=>0x227C,
+0x227E=>0x227F,
+0x227F=>0x227E,
+0x2280=>0x2281,
+0x2281=>0x2280,
+0x2282=>0x2283,
+0x2283=>0x2282,
+0x2284=>0x2285,
+0x2285=>0x2284,
+0x2286=>0x2287,
+0x2287=>0x2286,
+0x2288=>0x2289,
+0x2289=>0x2288,
+0x228A=>0x228B,
+0x228B=>0x228A,
+0x228F=>0x2290,
+0x2290=>0x228F,
+0x2291=>0x2292,
+0x2292=>0x2291,
+0x2298=>0x29B8,
+0x22A2=>0x22A3,
+0x22A3=>0x22A2,
+0x22A6=>0x2ADE,
+0x22A8=>0x2AE4,
+0x22A9=>0x2AE3,
+0x22AB=>0x2AE5,
+0x22B0=>0x22B1,
+0x22B1=>0x22B0,
+0x22B2=>0x22B3,
+0x22B3=>0x22B2,
+0x22B4=>0x22B5,
+0x22B5=>0x22B4,
+0x22B6=>0x22B7,
+0x22B7=>0x22B6,
+0x22C9=>0x22CA,
+0x22CA=>0x22C9,
+0x22CB=>0x22CC,
+0x22CC=>0x22CB,
+0x22CD=>0x2243,
+0x22D0=>0x22D1,
+0x22D1=>0x22D0,
+0x22D6=>0x22D7,
+0x22D7=>0x22D6,
+0x22D8=>0x22D9,
+0x22D9=>0x22D8,
+0x22DA=>0x22DB,
+0x22DB=>0x22DA,
+0x22DC=>0x22DD,
+0x22DD=>0x22DC,
+0x22DE=>0x22DF,
+0x22DF=>0x22DE,
+0x22E0=>0x22E1,
+0x22E1=>0x22E0,
+0x22E2=>0x22E3,
+0x22E3=>0x22E2,
+0x22E4=>0x22E5,
+0x22E5=>0x22E4,
+0x22E6=>0x22E7,
+0x22E7=>0x22E6,
+0x22E8=>0x22E9,
+0x22E9=>0x22E8,
+0x22EA=>0x22EB,
+0x22EB=>0x22EA,
+0x22EC=>0x22ED,
+0x22ED=>0x22EC,
+0x22F0=>0x22F1,
+0x22F1=>0x22F0,
+0x22F2=>0x22FA,
+0x22F3=>0x22FB,
+0x22F4=>0x22FC,
+0x22F6=>0x22FD,
+0x22F7=>0x22FE,
+0x22FA=>0x22F2,
+0x22FB=>0x22F3,
+0x22FC=>0x22F4,
+0x22FD=>0x22F6,
+0x22FE=>0x22F7,
+0x2308=>0x2309,
+0x2309=>0x2308,
+0x230A=>0x230B,
+0x230B=>0x230A,
+0x2329=>0x232A,
+0x232A=>0x2329,
+0x2768=>0x2769,
+0x2769=>0x2768,
+0x276A=>0x276B,
+0x276B=>0x276A,
+0x276C=>0x276D,
+0x276D=>0x276C,
+0x276E=>0x276F,
+0x276F=>0x276E,
+0x2770=>0x2771,
+0x2771=>0x2770,
+0x2772=>0x2773,
+0x2773=>0x2772,
+0x2774=>0x2775,
+0x2775=>0x2774,
+0x27C3=>0x27C4,
+0x27C4=>0x27C3,
+0x27C5=>0x27C6,
+0x27C6=>0x27C5,
+0x27D5=>0x27D6,
+0x27D6=>0x27D5,
+0x27DD=>0x27DE,
+0x27DE=>0x27DD,
+0x27E2=>0x27E3,
+0x27E3=>0x27E2,
+0x27E4=>0x27E5,
+0x27E5=>0x27E4,
+0x27E6=>0x27E7,
+0x27E7=>0x27E6,
+0x27E8=>0x27E9,
+0x27E9=>0x27E8,
+0x27EA=>0x27EB,
+0x27EB=>0x27EA,
+0x2983=>0x2984,
+0x2984=>0x2983,
+0x2985=>0x2986,
+0x2986=>0x2985,
+0x2987=>0x2988,
+0x2988=>0x2987,
+0x2989=>0x298A,
+0x298A=>0x2989,
+0x298B=>0x298C,
+0x298C=>0x298B,
+0x298D=>0x2990,
+0x298E=>0x298F,
+0x298F=>0x298E,
+0x2990=>0x298D,
+0x2991=>0x2992,
+0x2992=>0x2991,
+0x2993=>0x2994,
+0x2994=>0x2993,
+0x2995=>0x2996,
+0x2996=>0x2995,
+0x2997=>0x2998,
+0x2998=>0x2997,
+0x29B8=>0x2298,
+0x29C0=>0x29C1,
+0x29C1=>0x29C0,
+0x29C4=>0x29C5,
+0x29C5=>0x29C4,
+0x29CF=>0x29D0,
+0x29D0=>0x29CF,
+0x29D1=>0x29D2,
+0x29D2=>0x29D1,
+0x29D4=>0x29D5,
+0x29D5=>0x29D4,
+0x29D8=>0x29D9,
+0x29D9=>0x29D8,
+0x29DA=>0x29DB,
+0x29DB=>0x29DA,
+0x29F5=>0x2215,
+0x29F8=>0x29F9,
+0x29F9=>0x29F8,
+0x29FC=>0x29FD,
+0x29FD=>0x29FC,
+0x2A2B=>0x2A2C,
+0x2A2C=>0x2A2B,
+0x2A2D=>0x2A2E,
+0x2A2E=>0x2A2D,
+0x2A34=>0x2A35,
+0x2A35=>0x2A34,
+0x2A3C=>0x2A3D,
+0x2A3D=>0x2A3C,
+0x2A64=>0x2A65,
+0x2A65=>0x2A64,
+0x2A79=>0x2A7A,
+0x2A7A=>0x2A79,
+0x2A7D=>0x2A7E,
+0x2A7E=>0x2A7D,
+0x2A7F=>0x2A80,
+0x2A80=>0x2A7F,
+0x2A81=>0x2A82,
+0x2A82=>0x2A81,
+0x2A83=>0x2A84,
+0x2A84=>0x2A83,
+0x2A8B=>0x2A8C,
+0x2A8C=>0x2A8B,
+0x2A91=>0x2A92,
+0x2A92=>0x2A91,
+0x2A93=>0x2A94,
+0x2A94=>0x2A93,
+0x2A95=>0x2A96,
+0x2A96=>0x2A95,
+0x2A97=>0x2A98,
+0x2A98=>0x2A97,
+0x2A99=>0x2A9A,
+0x2A9A=>0x2A99,
+0x2A9B=>0x2A9C,
+0x2A9C=>0x2A9B,
+0x2AA1=>0x2AA2,
+0x2AA2=>0x2AA1,
+0x2AA6=>0x2AA7,
+0x2AA7=>0x2AA6,
+0x2AA8=>0x2AA9,
+0x2AA9=>0x2AA8,
+0x2AAA=>0x2AAB,
+0x2AAB=>0x2AAA,
+0x2AAC=>0x2AAD,
+0x2AAD=>0x2AAC,
+0x2AAF=>0x2AB0,
+0x2AB0=>0x2AAF,
+0x2AB3=>0x2AB4,
+0x2AB4=>0x2AB3,
+0x2ABB=>0x2ABC,
+0x2ABC=>0x2ABB,
+0x2ABD=>0x2ABE,
+0x2ABE=>0x2ABD,
+0x2ABF=>0x2AC0,
+0x2AC0=>0x2ABF,
+0x2AC1=>0x2AC2,
+0x2AC2=>0x2AC1,
+0x2AC3=>0x2AC4,
+0x2AC4=>0x2AC3,
+0x2AC5=>0x2AC6,
+0x2AC6=>0x2AC5,
+0x2ACD=>0x2ACE,
+0x2ACE=>0x2ACD,
+0x2ACF=>0x2AD0,
+0x2AD0=>0x2ACF,
+0x2AD1=>0x2AD2,
+0x2AD2=>0x2AD1,
+0x2AD3=>0x2AD4,
+0x2AD4=>0x2AD3,
+0x2AD5=>0x2AD6,
+0x2AD6=>0x2AD5,
+0x2ADE=>0x22A6,
+0x2AE3=>0x22A9,
+0x2AE4=>0x22A8,
+0x2AE5=>0x22AB,
+0x2AEC=>0x2AED,
+0x2AED=>0x2AEC,
+0x2AF7=>0x2AF8,
+0x2AF8=>0x2AF7,
+0x2AF9=>0x2AFA,
+0x2AFA=>0x2AF9,
+0x2E02=>0x2E03,
+0x2E03=>0x2E02,
+0x2E04=>0x2E05,
+0x2E05=>0x2E04,
+0x2E09=>0x2E0A,
+0x2E0A=>0x2E09,
+0x2E0C=>0x2E0D,
+0x2E0D=>0x2E0C,
+0x2E1C=>0x2E1D,
+0x2E1D=>0x2E1C,
+0x3008=>0x3009,
+0x3009=>0x3008,
+0x300A=>0x300B,
+0x300B=>0x300A,
+0x300C=>0x300D,
+0x300D=>0x300C,
+0x300E=>0x300F,
+0x300F=>0x300E,
+0x3010=>0x3011,
+0x3011=>0x3010,
+0x3014=>0x3015,
+0x3015=>0x3014,
+0x3016=>0x3017,
+0x3017=>0x3016,
+0x3018=>0x3019,
+0x3019=>0x3018,
+0x301A=>0x301B,
+0x301B=>0x301A,
+0x301D=>0x301E,
+0x301E=>0x301D,
+0xFE59=>0xFE5A,
+0xFE5A=>0xFE59,
+0xFE5B=>0xFE5C,
+0xFE5C=>0xFE5B,
+0xFE5D=>0xFE5E,
+0xFE5E=>0xFE5D,
+0xFE64=>0xFE65,
+0xFE65=>0xFE64,
+0xFF08=>0xFF09,
+0xFF09=>0xFF08,
+0xFF1C=>0xFF1E,
+0xFF1E=>0xFF1C,
+0xFF3B=>0xFF3D,
+0xFF3D=>0xFF3B,
+0xFF5B=>0xFF5D,
+0xFF5D=>0xFF5B,
+0xFF5F=>0xFF60,
+0xFF60=>0xFF5F,
+0xFF62=>0xFF63,
+0xFF63=>0xFF62);
+
+/**
+ * Arabic shape substitutions: char code => (isolated, final, initial, medial).
+ * @public
+ */
+public static $uni_arabicsubst = array(
+1569=>array(65152),
+1570=>array(65153, 65154, 65153, 65154),
+1571=>array(65155, 65156, 65155, 65156),
+1572=>array(65157, 65158),
+1573=>array(65159, 65160, 65159, 65160),
+1574=>array(65161, 65162, 65163, 65164),
+1575=>array(65165, 65166, 65165, 65166),
+1576=>array(65167, 65168, 65169, 65170),
+1577=>array(65171, 65172),
+1578=>array(65173, 65174, 65175, 65176),
+1579=>array(65177, 65178, 65179, 65180),
+1580=>array(65181, 65182, 65183, 65184),
+1581=>array(65185, 65186, 65187, 65188),
+1582=>array(65189, 65190, 65191, 65192),
+1583=>array(65193, 65194, 65193, 65194),
+1584=>array(65195, 65196, 65195, 65196),
+1585=>array(65197, 65198, 65197, 65198),
+1586=>array(65199, 65200, 65199, 65200),
+1587=>array(65201, 65202, 65203, 65204),
+1588=>array(65205, 65206, 65207, 65208),
+1589=>array(65209, 65210, 65211, 65212),
+1590=>array(65213, 65214, 65215, 65216),
+1591=>array(65217, 65218, 65219, 65220),
+1592=>array(65221, 65222, 65223, 65224),
+1593=>array(65225, 65226, 65227, 65228),
+1594=>array(65229, 65230, 65231, 65232),
+1601=>array(65233, 65234, 65235, 65236),
+1602=>array(65237, 65238, 65239, 65240),
+1603=>array(65241, 65242, 65243, 65244),
+1604=>array(65245, 65246, 65247, 65248),
+1605=>array(65249, 65250, 65251, 65252),
+1606=>array(65253, 65254, 65255, 65256),
+1607=>array(65257, 65258, 65259, 65260),
+1608=>array(65261, 65262, 65261, 65262),
+1609=>array(65263, 65264, 64488, 64489),
+1610=>array(65265, 65266, 65267, 65268),
+1649=>array(64336, 64337),
+1655=>array(64477),
+1657=>array(64358, 64359, 64360, 64361),
+1658=>array(64350, 64351, 64352, 64353),
+1659=>array(64338, 64339, 64340, 64341),
+1662=>array(64342, 64343, 64344, 64345),
+1663=>array(64354, 64355, 64356, 64357),
+1664=>array(64346, 64347, 64348, 64349),
+1667=>array(64374, 64375, 64376, 64377),
+1668=>array(64370, 64371, 64372, 64373),
+1670=>array(64378, 64379, 64380, 64381),
+1671=>array(64382, 64383, 64384, 64385),
+1672=>array(64392, 64393),
+1676=>array(64388, 64389),
+1677=>array(64386, 64387),
+1678=>array(64390, 64391),
+1681=>array(64396, 64397),
+1688=>array(64394, 64395, 64394, 64395),
+1700=>array(64362, 64363, 64364, 64365),
+1702=>array(64366, 64367, 64368, 64369),
+1705=>array(64398, 64399, 64400, 64401),
+1709=>array(64467, 64468, 64469, 64470),
+1711=>array(64402, 64403, 64404, 64405),
+1713=>array(64410, 64411, 64412, 64413),
+1715=>array(64406, 64407, 64408, 64409),
+1722=>array(64414, 64415),
+1723=>array(64416, 64417, 64418, 64419),
+1726=>array(64426, 64427, 64428, 64429),
+1728=>array(64420, 64421),
+1729=>array(64422, 64423, 64424, 64425),
+1733=>array(64480, 64481),
+1734=>array(64473, 64474),
+1735=>array(64471, 64472),
+1736=>array(64475, 64476),
+1737=>array(64482, 64483),
+1739=>array(64478, 64479),
+1740=>array(64508, 64509, 64510, 64511),
+1744=>array(64484, 64485, 64486, 64487),
+1746=>array(64430, 64431),
+1747=>array(64432, 64433)
+);
+
+/**
+ * Arabic laa letter: (char code => isolated, final, initial, medial).
+ * @public
+ */
+public static $uni_laa_array = array (
+1570 =>array(65269, 65270, 65269, 65270),
+1571 =>array(65271, 65272, 65271, 65272),
+1573 =>array(65273, 65274, 65273, 65274),
+1575 =>array(65275, 65276, 65275, 65276)
+);
+
+/**
+ * Array of character substitutions for sequences of two diacritics symbols.
+ * Putting the combining mark and character in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner.
+ * second NSM char code => substitution char
+ * @public
+ */
+public static $uni_diacritics = array (
+1612=>64606, # Shadda + Dammatan
+1613=>64607, # Shadda + Kasratan
+1614=>64608, # Shadda + Fatha
+1615=>64609, # Shadda + Damma
+1616=>64610  # Shadda + Kasra
+);
+
+/**
+ * Array of character substitutions from UTF-8 Unicode to Latin1.
+ * @public
+ */
+public static $uni_utf8tolatin = array (
+8364=>128, # Euro1
+338=>140,  # OE
+352=>138,  # Scaron
+376=>159,  # Ydieresis
+381=>142,  # Zcaron2
+8226=>149, # bullet3
+710=>136,  # circumflex
+8224=>134, # dagger
+8225=>135, # daggerdbl
+8230=>133, # ellipsis
+8212=>151, # emdash
+8211=>150, # endash
+402=>131,  # florin
+8249=>139, # guilsinglleft
+8250=>155, # guilsinglright
+339=>156,  # oe
+8240=>137, # perthousand
+8222=>132, # quotedblbase
+8220=>147, # quotedblleft
+8221=>148, # quotedblright
+8216=>145, # quoteleft
+8217=>146, # quoteright
+8218=>130, # quotesinglbase
+353=>154,  # scaron
+732=>152,  # tilde
+8482=>153, # trademark
+382=>158   # zcaron2
+);
+
+/**
+ * Array of Encoding Maps.
+ * @public static
+ */
+public static $encmap = array(
+
+// encoding map for: cp874
+'cp874' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'ellipsis',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'),
+
+// encoding map for: cp1250
+'cp1250' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'Sacute',141=>'Tcaron',142=>'Zcaron',143=>'Zacute',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'sacute',157=>'tcaron',158=>'zcaron',159=>'zacute',160=>'space',161=>'caron',162=>'breve',163=>'Lslash',164=>'currency',165=>'Aogonek',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'Scedilla',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'ogonek',179=>'lslash',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'aogonek',186=>'scedilla',187=>'guillemotright',188=>'Lcaron',189=>'hungarumlaut',190=>'lcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'),
+
+// encoding map for: cp1251
+'cp1251' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'afii10051',129=>'afii10052',130=>'quotesinglbase',131=>'afii10100',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'Euro',137=>'perthousand',138=>'afii10058',139=>'guilsinglleft',140=>'afii10059',141=>'afii10061',142=>'afii10060',143=>'afii10145',144=>'afii10099',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii10106',155=>'guilsinglright',156=>'afii10107',157=>'afii10109',158=>'afii10108',159=>'afii10193',160=>'space',161=>'afii10062',162=>'afii10110',163=>'afii10057',164=>'currency',165=>'afii10050',166=>'brokenbar',167=>'section',168=>'afii10023',169=>'copyright',170=>'afii10053',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii10056',176=>'degree',177=>'plusminus',178=>'afii10055',179=>'afii10103',180=>'afii10098',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'afii10071',185=>'afii61352',186=>'afii10101',187=>'guillemotright',188=>'afii10105',189=>'afii10054',190=>'afii10102',191=>'afii10104',192=>'afii10017',193=>'afii10018',194=>'afii10019',195=>'afii10020',196=>'afii10021',197=>'afii10022',198=>'afii10024',199=>'afii10025',200=>'afii10026',201=>'afii10027',202=>'afii10028',203=>'afii10029',204=>'afii10030',205=>'afii10031',206=>'afii10032',207=>'afii10033',208=>'afii10034',209=>'afii10035',210=>'afii10036',211=>'afii10037',212=>'afii10038',213=>'afii10039',214=>'afii10040',215=>'afii10041',216=>'afii10042',217=>'afii10043',218=>'afii10044',219=>'afii10045',220=>'afii10046',221=>'afii10047',222=>'afii10048',223=>'afii10049',224=>'afii10065',225=>'afii10066',226=>'afii10067',227=>'afii10068',228=>'afii10069',229=>'afii10070',230=>'afii10072',231=>'afii10073',232=>'afii10074',233=>'afii10075',234=>'afii10076',235=>'afii10077',236=>'afii10078',237=>'afii10079',238=>'afii10080',239=>'afii10081',240=>'afii10082',241=>'afii10083',242=>'afii10084',243=>'afii10085',244=>'afii10086',245=>'afii10087',246=>'afii10088',247=>'afii10089',248=>'afii10090',249=>'afii10091',250=>'afii10092',251=>'afii10093',252=>'afii10094',253=>'afii10095',254=>'afii10096',255=>'afii10097'),
+
+// encoding map for: cp1252
+'cp1252' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'Zcaron',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'zcaron',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'),
+
+// encoding map for: cp1253
+'cp1253' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'dieresistonos',162=>'Alphatonos',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'),
+
+// encoding map for: cp1254
+'cp1254' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'),
+
+// encoding map for: cp1255
+'cp1255' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'afii57636',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'multiply',171=>'guillemotleft',172=>'logicalnot',173=>'sfthyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'middot',184=>'cedilla',185=>'onesuperior',186=>'divide',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'afii57799',193=>'afii57801',194=>'afii57800',195=>'afii57802',196=>'afii57793',197=>'afii57794',198=>'afii57795',199=>'afii57798',200=>'afii57797',201=>'afii57806',202=>'.notdef',203=>'afii57796',204=>'afii57807',205=>'afii57839',206=>'afii57645',207=>'afii57841',208=>'afii57842',209=>'afii57804',210=>'afii57803',211=>'afii57658',212=>'afii57716',213=>'afii57717',214=>'afii57718',215=>'gereshhebrew',216=>'gershayimhebrew',217=>'.notdef',218=>'.notdef',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'.notdef',224=>'afii57664',225=>'afii57665',226=>'afii57666',227=>'afii57667',228=>'afii57668',229=>'afii57669',230=>'afii57670',231=>'afii57671',232=>'afii57672',233=>'afii57673',234=>'afii57674',235=>'afii57675',236=>'afii57676',237=>'afii57677',238=>'afii57678',239=>'afii57679',240=>'afii57680',241=>'afii57681',242=>'afii57682',243=>'afii57683',244=>'afii57684',245=>'afii57685',246=>'afii57686',247=>'afii57687',248=>'afii57688',249=>'afii57689',250=>'afii57690',251=>'.notdef',252=>'.notdef',253=>'afii299',254=>'afii300',255=>'.notdef'),
+
+// encoding map for: cp1256
+'cp1256' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'afii57506',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'afii57511',139=>'guilsinglleft',140=>'OE',141=>'afii57507',142=>'afii57508',143=>'afii57512',144=>'afii57509',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii57513',155=>'guilsinglright',156=>'oe',157=>'afii61664',158=>'afii301',159=>'afii57514',160=>'space',161=>'afii57388',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'afii57403',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'afii57407',192=>'.notdef',193=>'afii57409',194=>'afii57410',195=>'afii57411',196=>'afii57412',197=>'afii57413',198=>'afii57414',199=>'afii57415',200=>'afii57416',201=>'afii57417',202=>'afii57418',203=>'afii57419',204=>'afii57420',205=>'afii57421',206=>'afii57422',207=>'afii57423',208=>'afii57424',209=>'afii57425',210=>'afii57426',211=>'afii57427',212=>'afii57428',213=>'afii57429',214=>'afii57430',215=>'multiply',216=>'afii57431',217=>'afii57432',218=>'afii57433',219=>'afii57434',220=>'afii57440',221=>'afii57441',222=>'afii57442',223=>'afii57443',224=>'agrave',225=>'afii57444',226=>'acircumflex',227=>'afii57445',228=>'afii57446',229=>'afii57470',230=>'afii57448',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'afii57449',237=>'afii57450',238=>'icircumflex',239=>'idieresis',240=>'afii57451',241=>'afii57452',242=>'afii57453',243=>'afii57454',244=>'ocircumflex',245=>'afii57455',246=>'afii57456',247=>'divide',248=>'afii57457',249=>'ugrave',250=>'afii57458',251=>'ucircumflex',252=>'udieresis',253=>'afii299',254=>'afii300',255=>'afii57519'),
+
+// encoding map for: cp1257
+'cp1257' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'dieresis',142=>'caron',143=>'cedilla',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'macron',158=>'ogonek',159=>'.notdef',160=>'space',161=>'.notdef',162=>'cent',163=>'sterling',164=>'currency',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'Oslash',169=>'copyright',170=>'Rcommaaccent',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'AE',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'oslash',185=>'onesuperior',186=>'rcommaaccent',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'ae',192=>'Aogonek',193=>'Iogonek',194=>'Amacron',195=>'Cacute',196=>'Adieresis',197=>'Aring',198=>'Eogonek',199=>'Emacron',200=>'Ccaron',201=>'Eacute',202=>'Zacute',203=>'Edotaccent',204=>'Gcommaaccent',205=>'Kcommaaccent',206=>'Imacron',207=>'Lcommaaccent',208=>'Scaron',209=>'Nacute',210=>'Ncommaaccent',211=>'Oacute',212=>'Omacron',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Uogonek',217=>'Lslash',218=>'Sacute',219=>'Umacron',220=>'Udieresis',221=>'Zdotaccent',222=>'Zcaron',223=>'germandbls',224=>'aogonek',225=>'iogonek',226=>'amacron',227=>'cacute',228=>'adieresis',229=>'aring',230=>'eogonek',231=>'emacron',232=>'ccaron',233=>'eacute',234=>'zacute',235=>'edotaccent',236=>'gcommaaccent',237=>'kcommaaccent',238=>'imacron',239=>'lcommaaccent',240=>'scaron',241=>'nacute',242=>'ncommaaccent',243=>'oacute',244=>'omacron',245=>'otilde',246=>'odieresis',247=>'divide',248=>'uogonek',249=>'lslash',250=>'sacute',251=>'umacron',252=>'udieresis',253=>'zdotaccent',254=>'zcaron',255=>'dotaccent'),
+
+// encoding map for: cp1258
+'cp1258' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'gravecomb',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Ntilde',210=>'hookabovecomb',211=>'Oacute',212=>'Ocircumflex',213=>'Ohorn',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Uhorn',222=>'tildecomb',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'acutecomb',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'ntilde',242=>'dotbelowcomb',243=>'oacute',244=>'ocircumflex',245=>'ohorn',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'uhorn',254=>'dong',255=>'ydieresis'),
+
+// encoding map for: iso-8859-1
+'iso-8859-1' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'),
+
+// encoding map for: iso-8859-2
+'iso-8859-2' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'breve',163=>'Lslash',164=>'currency',165=>'Lcaron',166=>'Sacute',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Scedilla',171=>'Tcaron',172=>'Zacute',173=>'hyphen',174=>'Zcaron',175=>'Zdotaccent',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'lslash',180=>'acute',181=>'lcaron',182=>'sacute',183=>'caron',184=>'cedilla',185=>'scaron',186=>'scedilla',187=>'tcaron',188=>'zacute',189=>'hungarumlaut',190=>'zcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'),
+
+// encoding map for: iso-8859-4
+'iso-8859-4' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'kgreenlandic',163=>'Rcommaaccent',164=>'currency',165=>'Itilde',166=>'Lcommaaccent',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Emacron',171=>'Gcommaaccent',172=>'Tbar',173=>'hyphen',174=>'Zcaron',175=>'macron',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'rcommaaccent',180=>'acute',181=>'itilde',182=>'lcommaaccent',183=>'caron',184=>'cedilla',185=>'scaron',186=>'emacron',187=>'gcommaaccent',188=>'tbar',189=>'Eng',190=>'zcaron',191=>'eng',192=>'Amacron',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Iogonek',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Edotaccent',205=>'Iacute',206=>'Icircumflex',207=>'Imacron',208=>'Dcroat',209=>'Ncommaaccent',210=>'Omacron',211=>'Kcommaaccent',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Uogonek',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Utilde',222=>'Umacron',223=>'germandbls',224=>'amacron',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'iogonek',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'edotaccent',237=>'iacute',238=>'icircumflex',239=>'imacron',240=>'dcroat',241=>'ncommaaccent',242=>'omacron',243=>'kcommaaccent',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'uogonek',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'utilde',254=>'umacron',255=>'dotaccent'),
+
+// encoding map for: iso-8859-5
+'iso-8859-5' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'afii10023',162=>'afii10051',163=>'afii10052',164=>'afii10053',165=>'afii10054',166=>'afii10055',167=>'afii10056',168=>'afii10057',169=>'afii10058',170=>'afii10059',171=>'afii10060',172=>'afii10061',173=>'hyphen',174=>'afii10062',175=>'afii10145',176=>'afii10017',177=>'afii10018',178=>'afii10019',179=>'afii10020',180=>'afii10021',181=>'afii10022',182=>'afii10024',183=>'afii10025',184=>'afii10026',185=>'afii10027',186=>'afii10028',187=>'afii10029',188=>'afii10030',189=>'afii10031',190=>'afii10032',191=>'afii10033',192=>'afii10034',193=>'afii10035',194=>'afii10036',195=>'afii10037',196=>'afii10038',197=>'afii10039',198=>'afii10040',199=>'afii10041',200=>'afii10042',201=>'afii10043',202=>'afii10044',203=>'afii10045',204=>'afii10046',205=>'afii10047',206=>'afii10048',207=>'afii10049',208=>'afii10065',209=>'afii10066',210=>'afii10067',211=>'afii10068',212=>'afii10069',213=>'afii10070',214=>'afii10072',215=>'afii10073',216=>'afii10074',217=>'afii10075',218=>'afii10076',219=>'afii10077',220=>'afii10078',221=>'afii10079',222=>'afii10080',223=>'afii10081',224=>'afii10082',225=>'afii10083',226=>'afii10084',227=>'afii10085',228=>'afii10086',229=>'afii10087',230=>'afii10088',231=>'afii10089',232=>'afii10090',233=>'afii10091',234=>'afii10092',235=>'afii10093',236=>'afii10094',237=>'afii10095',238=>'afii10096',239=>'afii10097',240=>'afii61352',241=>'afii10071',242=>'afii10099',243=>'afii10100',244=>'afii10101',245=>'afii10102',246=>'afii10103',247=>'afii10104',248=>'afii10105',249=>'afii10106',250=>'afii10107',251=>'afii10108',252=>'afii10109',253=>'section',254=>'afii10110',255=>'afii10193'),
+
+// encoding map for: iso-8859-7
+'iso-8859-7' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'quoteleft',162=>'quoteright',163=>'sterling',164=>'.notdef',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'.notdef',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'dieresistonos',182=>'Alphatonos',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'),
+
+// encoding map for: iso-8859-9
+'iso-8859-9' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'),
+
+// encoding map for: iso-8859-11
+'iso-8859-11' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'),
+
+// encoding map for: iso-8859-15
+'iso-8859-15' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'Euro',165=>'yen',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'Zcaron',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'),
+
+// encoding map for: iso-8859-16
+'iso-8859-16' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'aogonek',163=>'Lslash',164=>'Euro',165=>'quotedblbase',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'Scommaaccent',171=>'guillemotleft',172=>'Zacute',173=>'hyphen',174=>'zacute',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'Ccaron',179=>'lslash',180=>'Zcaron',181=>'quotedblright',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'ccaron',186=>'scommaaccent',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'zdotaccent',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Cacute',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Nacute',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'Sacute',216=>'Uhungarumlaut',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Eogonek',222=>'Tcommaaccent',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'cacute',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'nacute',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'sacute',248=>'uhungarumlaut',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'eogonek',254=>'tcommaaccent',255=>'ydieresis'),
+
+// encoding map for: koi8-r
+'koi8-r' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'periodcentered',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'SF520000',165=>'SF390000',166=>'SF220000',167=>'SF210000',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'SF270000',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'SF200000',181=>'SF230000',182=>'SF470000',183=>'SF480000',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'SF530000',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'),
+
+// encoding map for: koi8-u
+'koi8-u' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'bullet',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'afii10101',165=>'SF390000',166=>'afii10103',167=>'afii10104',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'afii10098',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'afii10053',181=>'SF230000',182=>'afii10055',183=>'afii10056',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'afii10050',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'),
+
+// encoding map for: symbol
+'symbol' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'universal',35=>'numbersign',36=>'existential',37=>'percent',38=>'ampersand',39=>'suchthat',40=>'parenleft',41=>'parenright',42=>'asteriskmath',43=>'plus',44=>'comma',45=>'minus',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'congruent',65=>'Alpha',66=>'Beta',67=>'Chi',68=>'Delta',69=>'Epsilon',70=>'Phi',71=>'Gamma',72=>'Eta',73=>'Iota',74=>'theta1',75=>'Kappa',76=>'Lambda',77=>'Mu',78=>'Nu',79=>'Omicron',80=>'Pi',81=>'Theta',82=>'Rho',83=>'Sigma',84=>'Tau',85=>'Upsilon',86=>'sigma1',87=>'Omega',88=>'Xi',89=>'Psi',90=>'Zeta',91=>'bracketleft',92=>'therefore',93=>'bracketright',94=>'perpendicular',95=>'underscore',96=>'radicalex',97=>'alpha',98=>'beta',99=>'chi',100=>'delta',101=>'epsilon',102=>'phi',103=>'gamma',104=>'eta',105=>'iota',106=>'phi1',107=>'kappa',108=>'lambda',109=>'mu',110=>'nu',111=>'omicron',112=>'pi',113=>'theta',114=>'rho',115=>'sigma',116=>'tau',117=>'upsilon',118=>'omega1',119=>'omega',120=>'xi',121=>'psi',122=>'zeta',123=>'braceleft',124=>'bar',125=>'braceright',126=>'similar',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'Euro',161=>'Upsilon1',162=>'minute',163=>'lessequal',164=>'fraction',165=>'infinity',166=>'florin',167=>'club',168=>'diamond',169=>'heart',170=>'spade',171=>'arrowboth',172=>'arrowleft',173=>'arrowup',174=>'arrowright',175=>'arrowdown',176=>'degree',177=>'plusminus',178=>'second',179=>'greaterequal',180=>'multiply',181=>'proportional',182=>'partialdiff',183=>'bullet',184=>'divide',185=>'notequal',186=>'equivalence',187=>'approxequal',188=>'ellipsis',189=>'arrowvertex',190=>'arrowhorizex',191=>'carriagereturn',192=>'aleph',193=>'Ifraktur',194=>'Rfraktur',195=>'weierstrass',196=>'circlemultiply',197=>'circleplus',198=>'emptyset',199=>'intersection',200=>'union',201=>'propersuperset',202=>'reflexsuperset',203=>'notsubset',204=>'propersubset',205=>'reflexsubset',206=>'element',207=>'notelement',208=>'angle',209=>'gradient',210=>'registerserif',211=>'copyrightserif',212=>'trademarkserif',213=>'product',214=>'radical',215=>'dotmath',216=>'logicalnot',217=>'logicaland',218=>'logicalor',219=>'arrowdblboth',220=>'arrowdblleft',221=>'arrowdblup',222=>'arrowdblright',223=>'arrowdbldown',224=>'lozenge',225=>'angleleft',226=>'registersans',227=>'copyrightsans',228=>'trademarksans',229=>'summation',230=>'parenlefttp',231=>'parenleftex',232=>'parenleftbt',233=>'bracketlefttp',234=>'bracketleftex',235=>'bracketleftbt',236=>'bracelefttp',237=>'braceleftmid',238=>'braceleftbt',239=>'braceex',240=>'.notdef',241=>'angleright',242=>'integral',243=>'integraltp',244=>'integralex',245=>'integralbt',246=>'parenrighttp',247=>'parenrightex',248=>'parenrightbt',249=>'bracketrighttp',250=>'bracketrightex',251=>'bracketrightbt',252=>'bracerighttp',253=>'bracerightmid',254=>'bracerightbt',255=>'.notdef',1226=>'registered',1227=>'copyright',1228=>'trademark')
+
+); // end of encoding maps
+
+/**
+ * ToUnicode map for Identity-H stream
+ * @public static
+ */
+public static $uni_identity_h = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n/WMode 0 def\n1 begincodespacerange\n<0000> <FFFF>\nendcodespacerange\n100 beginbfrange\n<0000> <00ff> <0000>\n<0100> <01ff> <0100>\n<0200> <02ff> <0200>\n<0300> <03ff> <0300>\n<0400> <04ff> <0400>\n<0500> <05ff> <0500>\n<0600> <06ff> <0600>\n<0700> <07ff> <0700>\n<0800> <08ff> <0800>\n<0900> <09ff> <0900>\n<0a00> <0aff> <0a00>\n<0b00> <0bff> <0b00>\n<0c00> <0cff> <0c00>\n<0d00> <0dff> <0d00>\n<0e00> <0eff> <0e00>\n<0f00> <0fff> <0f00>\n<1000> <10ff> <1000>\n<1100> <11ff> <1100>\n<1200> <12ff> <1200>\n<1300> <13ff> <1300>\n<1400> <14ff> <1400>\n<1500> <15ff> <1500>\n<1600> <16ff> <1600>\n<1700> <17ff> <1700>\n<1800> <18ff> <1800>\n<1900> <19ff> <1900>\n<1a00> <1aff> <1a00>\n<1b00> <1bff> <1b00>\n<1c00> <1cff> <1c00>\n<1d00> <1dff> <1d00>\n<1e00> <1eff> <1e00>\n<1f00> <1fff> <1f00>\n<2000> <20ff> <2000>\n<2100> <21ff> <2100>\n<2200> <22ff> <2200>\n<2300> <23ff> <2300>\n<2400> <24ff> <2400>\n<2500> <25ff> <2500>\n<2600> <26ff> <2600>\n<2700> <27ff> <2700>\n<2800> <28ff> <2800>\n<2900> <29ff> <2900>\n<2a00> <2aff> <2a00>\n<2b00> <2bff> <2b00>\n<2c00> <2cff> <2c00>\n<2d00> <2dff> <2d00>\n<2e00> <2eff> <2e00>\n<2f00> <2fff> <2f00>\n<3000> <30ff> <3000>\n<3100> <31ff> <3100>\n<3200> <32ff> <3200>\n<3300> <33ff> <3300>\n<3400> <34ff> <3400>\n<3500> <35ff> <3500>\n<3600> <36ff> <3600>\n<3700> <37ff> <3700>\n<3800> <38ff> <3800>\n<3900> <39ff> <3900>\n<3a00> <3aff> <3a00>\n<3b00> <3bff> <3b00>\n<3c00> <3cff> <3c00>\n<3d00> <3dff> <3d00>\n<3e00> <3eff> <3e00>\n<3f00> <3fff> <3f00>\n<4000> <40ff> <4000>\n<4100> <41ff> <4100>\n<4200> <42ff> <4200>\n<4300> <43ff> <4300>\n<4400> <44ff> <4400>\n<4500> <45ff> <4500>\n<4600> <46ff> <4600>\n<4700> <47ff> <4700>\n<4800> <48ff> <4800>\n<4900> <49ff> <4900>\n<4a00> <4aff> <4a00>\n<4b00> <4bff> <4b00>\n<4c00> <4cff> <4c00>\n<4d00> <4dff> <4d00>\n<4e00> <4eff> <4e00>\n<4f00> <4fff> <4f00>\n<5000> <50ff> <5000>\n<5100> <51ff> <5100>\n<5200> <52ff> <5200>\n<5300> <53ff> <5300>\n<5400> <54ff> <5400>\n<5500> <55ff> <5500>\n<5600> <56ff> <5600>\n<5700> <57ff> <5700>\n<5800> <58ff> <5800>\n<5900> <59ff> <5900>\n<5a00> <5aff> <5a00>\n<5b00> <5bff> <5b00>\n<5c00> <5cff> <5c00>\n<5d00> <5dff> <5d00>\n<5e00> <5eff> <5e00>\n<5f00> <5fff> <5f00>\n<6000> <60ff> <6000>\n<6100> <61ff> <6100>\n<6200> <62ff> <6200>\n<6300> <63ff> <6300>\nendbfrange\n100 beginbfrange\n<6400> <64ff> <6400>\n<6500> <65ff> <6500>\n<6600> <66ff> <6600>\n<6700> <67ff> <6700>\n<6800> <68ff> <6800>\n<6900> <69ff> <6900>\n<6a00> <6aff> <6a00>\n<6b00> <6bff> <6b00>\n<6c00> <6cff> <6c00>\n<6d00> <6dff> <6d00>\n<6e00> <6eff> <6e00>\n<6f00> <6fff> <6f00>\n<7000> <70ff> <7000>\n<7100> <71ff> <7100>\n<7200> <72ff> <7200>\n<7300> <73ff> <7300>\n<7400> <74ff> <7400>\n<7500> <75ff> <7500>\n<7600> <76ff> <7600>\n<7700> <77ff> <7700>\n<7800> <78ff> <7800>\n<7900> <79ff> <7900>\n<7a00> <7aff> <7a00>\n<7b00> <7bff> <7b00>\n<7c00> <7cff> <7c00>\n<7d00> <7dff> <7d00>\n<7e00> <7eff> <7e00>\n<7f00> <7fff> <7f00>\n<8000> <80ff> <8000>\n<8100> <81ff> <8100>\n<8200> <82ff> <8200>\n<8300> <83ff> <8300>\n<8400> <84ff> <8400>\n<8500> <85ff> <8500>\n<8600> <86ff> <8600>\n<8700> <87ff> <8700>\n<8800> <88ff> <8800>\n<8900> <89ff> <8900>\n<8a00> <8aff> <8a00>\n<8b00> <8bff> <8b00>\n<8c00> <8cff> <8c00>\n<8d00> <8dff> <8d00>\n<8e00> <8eff> <8e00>\n<8f00> <8fff> <8f00>\n<9000> <90ff> <9000>\n<9100> <91ff> <9100>\n<9200> <92ff> <9200>\n<9300> <93ff> <9300>\n<9400> <94ff> <9400>\n<9500> <95ff> <9500>\n<9600> <96ff> <9600>\n<9700> <97ff> <9700>\n<9800> <98ff> <9800>\n<9900> <99ff> <9900>\n<9a00> <9aff> <9a00>\n<9b00> <9bff> <9b00>\n<9c00> <9cff> <9c00>\n<9d00> <9dff> <9d00>\n<9e00> <9eff> <9e00>\n<9f00> <9fff> <9f00>\n<a000> <a0ff> <a000>\n<a100> <a1ff> <a100>\n<a200> <a2ff> <a200>\n<a300> <a3ff> <a300>\n<a400> <a4ff> <a400>\n<a500> <a5ff> <a500>\n<a600> <a6ff> <a600>\n<a700> <a7ff> <a700>\n<a800> <a8ff> <a800>\n<a900> <a9ff> <a900>\n<aa00> <aaff> <aa00>\n<ab00> <abff> <ab00>\n<ac00> <acff> <ac00>\n<ad00> <adff> <ad00>\n<ae00> <aeff> <ae00>\n<af00> <afff> <af00>\n<b000> <b0ff> <b000>\n<b100> <b1ff> <b100>\n<b200> <b2ff> <b200>\n<b300> <b3ff> <b300>\n<b400> <b4ff> <b400>\n<b500> <b5ff> <b500>\n<b600> <b6ff> <b600>\n<b700> <b7ff> <b700>\n<b800> <b8ff> <b800>\n<b900> <b9ff> <b900>\n<ba00> <baff> <ba00>\n<bb00> <bbff> <bb00>\n<bc00> <bcff> <bc00>\n<bd00> <bdff> <bd00>\n<be00> <beff> <be00>\n<bf00> <bfff> <bf00>\n<c000> <c0ff> <c000>\n<c100> <c1ff> <c100>\n<c200> <c2ff> <c200>\n<c300> <c3ff> <c300>\n<c400> <c4ff> <c400>\n<c500> <c5ff> <c500>\n<c600> <c6ff> <c600>\n<c700> <c7ff> <c700>\nendbfrange\n56 beginbfrange\n<c800> <c8ff> <c800>\n<c900> <c9ff> <c900>\n<ca00> <caff> <ca00>\n<cb00> <cbff> <cb00>\n<cc00> <ccff> <cc00>\n<cd00> <cdff> <cd00>\n<ce00> <ceff> <ce00>\n<cf00> <cfff> <cf00>\n<d000> <d0ff> <d000>\n<d100> <d1ff> <d100>\n<d200> <d2ff> <d200>\n<d300> <d3ff> <d300>\n<d400> <d4ff> <d400>\n<d500> <d5ff> <d500>\n<d600> <d6ff> <d600>\n<d700> <d7ff> <d700>\n<d800> <d8ff> <d800>\n<d900> <d9ff> <d900>\n<da00> <daff> <da00>\n<db00> <dbff> <db00>\n<dc00> <dcff> <dc00>\n<dd00> <ddff> <dd00>\n<de00> <deff> <de00>\n<df00> <dfff> <df00>\n<e000> <e0ff> <e000>\n<e100> <e1ff> <e100>\n<e200> <e2ff> <e200>\n<e300> <e3ff> <e300>\n<e400> <e4ff> <e400>\n<e500> <e5ff> <e500>\n<e600> <e6ff> <e600>\n<e700> <e7ff> <e700>\n<e800> <e8ff> <e800>\n<e900> <e9ff> <e900>\n<ea00> <eaff> <ea00>\n<eb00> <ebff> <eb00>\n<ec00> <ecff> <ec00>\n<ed00> <edff> <ed00>\n<ee00> <eeff> <ee00>\n<ef00> <efff> <ef00>\n<f000> <f0ff> <f000>\n<f100> <f1ff> <f100>\n<f200> <f2ff> <f200>\n<f300> <f3ff> <f300>\n<f400> <f4ff> <f400>\n<f500> <f5ff> <f500>\n<f600> <f6ff> <f600>\n<f700> <f7ff> <f700>\n<f800> <f8ff> <f800>\n<f900> <f9ff> <f900>\n<fa00> <faff> <fa00>\n<fb00> <fbff> <fb00>\n<fc00> <fcff> <fc00>\n<fd00> <fdff> <fd00>\n<fe00> <feff> <fe00>\n<ff00> <ffff> <ff00>\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend";
+
+} // END OF TCPDF_FONT_DATA CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php
new file mode 100644 (file)
index 0000000..a7f0486
--- /dev/null
@@ -0,0 +1,2583 @@
+<?php
+//============================================================+
+// File name   : tcpdf_fonts.php
+// Version     : 1.0.013
+// Begin       : 2008-01-01
+// Last Update : 2014-05-23
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2008-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description :Font methods for TCPDF library.
+//
+//============================================================+
+
+/**
+ * @file
+ * Unicode data and font methods for TCPDF library.
+ * @author Nicola Asuni
+ * @package com.tecnick.tcpdf
+ */
+
+/**
+ * @class TCPDF_FONTS
+ * Font methods for TCPDF library.
+ * @package com.tecnick.tcpdf
+ * @version 1.0.013
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_FONTS {
+
+       /**
+        * Static cache used for speed up uniord performances
+        * @protected
+        */
+       protected static $cache_uniord = array();
+
+       /**
+        * Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable).
+        * @param $fontfile (string) Font file (full path).
+        * @param $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional.
+        * @param $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats.
+        * @param $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font.
+        * @param $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder.
+        * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1).
+        * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4.
+        * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file.
+        * @param $link (boolean) If true link to system font instead of copying the font data (not transportable) - Note: do not work with Type1 fonts.
+        * @return (string) TCPDF font name or boolean false in case of error.
+        * @author Nicola Asuni
+        * @since 5.9.123 (2010-09-30)
+        * @public static
+        */
+       public static function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false, $link=false) {
+               if (!file_exists($fontfile)) {
+                       // Could not find file
+                       return false;
+               }
+               // font metrics
+               $fmetric = array();
+               // build new font name for TCPDF compatibility
+               $font_path_parts = pathinfo($fontfile);
+               if (!isset($font_path_parts['filename'])) {
+                       $font_path_parts['filename'] = substr($font_path_parts['basename'], 0, -(strlen($font_path_parts['extension']) + 1));
+               }
+               $font_name = strtolower($font_path_parts['filename']);
+               $font_name = preg_replace('/[^a-z0-9_]/', '', $font_name);
+               $search  = array('bold', 'oblique', 'italic', 'regular');
+               $replace = array('b', 'i', 'i', '');
+               $font_name = str_replace($search, $replace, $font_name);
+               if (empty($font_name)) {
+                       // set generic name
+                       $font_name = 'tcpdffont';
+               }
+               // set output path
+               if (empty($outpath)) {
+                       $outpath = self::_getfontpath();
+               }
+               // check if this font already exist
+               if (@file_exists($outpath.$font_name.'.php')) {
+                       // this font already exist (delete it from fonts folder to rebuild it)
+                       return $font_name;
+               }
+               $fmetric['file'] = $font_name;
+               $fmetric['ctg'] = $font_name.'.ctg.z';
+               // get font data
+               $font = file_get_contents($fontfile);
+               $fmetric['originalsize'] = strlen($font);
+               // autodetect font type
+               if (empty($fonttype)) {
+                       if (TCPDF_STATIC::_getULONG($font, 0) == 0x10000) {
+                               // True Type (Unicode or not)
+                               $fonttype = 'TrueTypeUnicode';
+                       } elseif (substr($font, 0, 4) == 'OTTO') {
+                               // Open Type (Unicode or not)
+                               //Unsupported font format: OpenType with CFF data
+                               return false;
+                       } else {
+                               // Type 1
+                               $fonttype = 'Type1';
+                       }
+               }
+               // set font type
+               switch ($fonttype) {
+                       case 'CID0CT':
+                       case 'CID0CS':
+                       case 'CID0KR':
+                       case 'CID0JP': {
+                               $fmetric['type'] = 'cidfont0';
+                               break;
+                       }
+                       case 'Type1': {
+                               $fmetric['type'] = 'Type1';
+                               if (empty($enc) AND (($flags & 4) == 0)) {
+                                       $enc = 'cp1252';
+                               }
+                               break;
+                       }
+                       case 'TrueType': {
+                               $fmetric['type'] = 'TrueType';
+                               break;
+                       }
+                       case 'TrueTypeUnicode':
+                       default: {
+                               $fmetric['type'] = 'TrueTypeUnicode';
+                               break;
+                       }
+               }
+               // set encoding maps (if any)
+               $fmetric['enc'] = preg_replace('/[^A-Za-z0-9_\-]/', '', $enc);
+               $fmetric['diff'] = '';
+               if (($fmetric['type'] == 'TrueType') OR ($fmetric['type'] == 'Type1')) {
+                       if (!empty($enc) AND ($enc != 'cp1252') AND isset(TCPDF_FONT_DATA::$encmap[$enc])) {
+                               // build differences from reference encoding
+                               $enc_ref = TCPDF_FONT_DATA::$encmap['cp1252'];
+                               $enc_target = TCPDF_FONT_DATA::$encmap[$enc];
+                               $last = 0;
+                               for ($i = 32; $i <= 255; ++$i) {
+                                       if ($enc_target != $enc_ref[$i]) {
+                                               if ($i != ($last + 1)) {
+                                                       $fmetric['diff'] .= $i.' ';
+                                               }
+                                               $last = $i;
+                                               $fmetric['diff'] .= '/'.$enc_target[$i].' ';
+                                       }
+                               }
+                       }
+               }
+               // parse the font by type
+               if ($fmetric['type'] == 'Type1') {
+                       // ---------- TYPE 1 ----------
+                       // read first segment
+                       $a = unpack('Cmarker/Ctype/Vsize', substr($font, 0, 6));
+                       if ($a['marker'] != 128) {
+                               // Font file is not a valid binary Type1
+                               return false;
+                       }
+                       $fmetric['size1'] = $a['size'];
+                       $data = substr($font, 6, $fmetric['size1']);
+                       // read second segment
+                       $a = unpack('Cmarker/Ctype/Vsize', substr($font, (6 + $fmetric['size1']), 6));
+                       if ($a['marker'] != 128) {
+                               // Font file is not a valid binary Type1
+                               return false;
+                       }
+                       $fmetric['size2'] = $a['size'];
+                       $encrypted = substr($font, (12 + $fmetric['size1']), $fmetric['size2']);
+                       $data .= $encrypted;
+                       // store compressed font
+                       $fmetric['file'] .= '.z';
+                       $fp = fopen($outpath.$fmetric['file'], 'wb');
+                       fwrite($fp, gzcompress($data));
+                       fclose($fp);
+                       // get font info
+                       $fmetric['Flags'] = $flags;
+                       preg_match ('#/FullName[\s]*\(([^\)]*)#', $font, $matches);
+                       $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $matches[1]);
+                       preg_match('#/FontBBox[\s]*{([^}]*)#', $font, $matches);
+                       $fmetric['bbox'] = trim($matches[1]);
+                       $bv = explode(' ', $fmetric['bbox']);
+                       $fmetric['Ascent'] = intval($bv[3]);
+                       $fmetric['Descent'] = intval($bv[1]);
+                       preg_match('#/ItalicAngle[\s]*([0-9\+\-]*)#', $font, $matches);
+                       $fmetric['italicAngle'] = intval($matches[1]);
+                       if ($fmetric['italicAngle'] != 0) {
+                               $fmetric['Flags'] |= 64;
+                       }
+                       preg_match('#/UnderlinePosition[\s]*([0-9\+\-]*)#', $font, $matches);
+                       $fmetric['underlinePosition'] = intval($matches[1]);
+                       preg_match('#/UnderlineThickness[\s]*([0-9\+\-]*)#', $font, $matches);
+                       $fmetric['underlineThickness'] = intval($matches[1]);
+                       preg_match('#/isFixedPitch[\s]*([^\s]*)#', $font, $matches);
+                       if ($matches[1] == 'true') {
+                               $fmetric['Flags'] |= 1;
+                       }
+                       // get internal map
+                       $imap = array();
+                       if (preg_match_all('#dup[\s]([0-9]+)[\s]*/([^\s]*)[\s]put#sU', $font, $fmap, PREG_SET_ORDER) > 0) {
+                               foreach ($fmap as $v) {
+                                       $imap[$v[2]] = $v[1];
+                               }
+                       }
+                       // decrypt eexec encrypted part
+                       $r = 55665; // eexec encryption constant
+                       $c1 = 52845;
+                       $c2 = 22719;
+                       $elen = strlen($encrypted);
+                       $eplain = '';
+                       for ($i = 0; $i < $elen; ++$i) {
+                               $chr = ord($encrypted[$i]);
+                               $eplain .= chr($chr ^ ($r >> 8));
+                               $r = ((($chr + $r) * $c1 + $c2) % 65536);
+                       }
+                       if (preg_match('#/ForceBold[\s]*([^\s]*)#', $eplain, $matches) > 0) {
+                               if ($matches[1] == 'true') {
+                                       $fmetric['Flags'] |= 0x40000;
+                               }
+                       }
+                       if (preg_match('#/StdVW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) {
+                               $fmetric['StemV'] = intval($matches[1]);
+                       } else {
+                               $fmetric['StemV'] = 70;
+                       }
+                       if (preg_match('#/StdHW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) {
+                               $fmetric['StemH'] = intval($matches[1]);
+                       } else {
+                               $fmetric['StemH'] = 30;
+                       }
+                       if (preg_match('#/BlueValues[\s]*\[([^\]]*)#', $eplain, $matches) > 0) {
+                               $bv = explode(' ', $matches[1]);
+                               if (count($bv) >= 6) {
+                                       $v1 = intval($bv[2]);
+                                       $v2 = intval($bv[4]);
+                                       if ($v1 <= $v2) {
+                                               $fmetric['XHeight'] = $v1;
+                                               $fmetric['CapHeight'] = $v2;
+                                       } else {
+                                               $fmetric['XHeight'] = $v2;
+                                               $fmetric['CapHeight'] = $v1;
+                                       }
+                               } else {
+                                       $fmetric['XHeight'] = 450;
+                                       $fmetric['CapHeight'] = 700;
+                               }
+                       } else {
+                               $fmetric['XHeight'] = 450;
+                               $fmetric['CapHeight'] = 700;
+                       }
+                       // get the number of random bytes at the beginning of charstrings
+                       if (preg_match('#/lenIV[\s]*([0-9]*)#', $eplain, $matches) > 0) {
+                               $lenIV = intval($matches[1]);
+                       } else {
+                               $lenIV = 4;
+                       }
+                       $fmetric['Leading'] = 0;
+                       // get charstring data
+                       $eplain = substr($eplain, (strpos($eplain, '/CharStrings') + 1));
+                       preg_match_all('#/([A-Za-z0-9\.]*)[\s][0-9]+[\s]RD[\s](.*)[\s]ND#sU', $eplain, $matches, PREG_SET_ORDER);
+                       if (!empty($enc) AND isset(TCPDF_FONT_DATA::$encmap[$enc])) {
+                               $enc_map = TCPDF_FONT_DATA::$encmap[$enc];
+                       } else {
+                               $enc_map = false;
+                       }
+                       $fmetric['cw'] = '';
+                       $fmetric['MaxWidth'] = 0;
+                       $cwidths = array();
+                       foreach ($matches as $k => $v) {
+                               $cid = 0;
+                               if (isset($imap[$v[1]])) {
+                                       $cid = $imap[$v[1]];
+                               } elseif ($enc_map !== false) {
+                                       $cid = array_search($v[1], $enc_map);
+                                       if ($cid === false) {
+                                               $cid = 0;
+                                       } elseif ($cid > 1000) {
+                                               $cid -= 1000;
+                                       }
+                               }
+                               // decrypt charstring encrypted part
+                               $r = 4330; // charstring encryption constant
+                               $c1 = 52845;
+                               $c2 = 22719;
+                               $cd = $v[2];
+                               $clen = strlen($cd);
+                               $ccom = array();
+                               for ($i = 0; $i < $clen; ++$i) {
+                                       $chr = ord($cd[$i]);
+                                       $ccom[] = ($chr ^ ($r >> 8));
+                                       $r = ((($chr + $r) * $c1 + $c2) % 65536);
+                               }
+                               // decode numbers
+                               $cdec = array();
+                               $ck = 0;
+                               $i = $lenIV;
+                               while ($i < $clen) {
+                                       if ($ccom[$i] < 32) {
+                                               $cdec[$ck] = $ccom[$i];
+                                               if (($ck > 0) AND ($cdec[$ck] == 13)) {
+                                                       // hsbw command: update width
+                                                       $cwidths[$cid] = $cdec[($ck - 1)];
+                                               }
+                                               ++$i;
+                                       } elseif (($ccom[$i] >= 32) AND ($ccom[$i] <= 246)) {
+                                               $cdec[$ck] = ($ccom[$i] - 139);
+                                               ++$i;
+                                       } elseif (($ccom[$i] >= 247) AND ($ccom[$i] <= 250)) {
+                                               $cdec[$ck] = ((($ccom[$i] - 247) * 256) + $ccom[($i + 1)] + 108);
+                                               $i += 2;
+                                       } elseif (($ccom[$i] >= 251) AND ($ccom[$i] <= 254)) {
+                                               $cdec[$ck] = ((-($ccom[$i] - 251) * 256) - $ccom[($i + 1)] - 108);
+                                               $i += 2;
+                                       } elseif ($ccom[$i] == 255) {
+                                               $sval = chr($ccom[($i + 1)]).chr($ccom[($i + 2)]).chr($ccom[($i + 3)]).chr($ccom[($i + 4)]);
+                                               $vsval = unpack('li', $sval);
+                                               $cdec[$ck] = $vsval['i'];
+                                               $i += 5;
+                                       }
+                                       ++$ck;
+                               }
+                       } // end for each matches
+                       $fmetric['MissingWidth'] = $cwidths[0];
+                       $fmetric['MaxWidth'] = $fmetric['MissingWidth'];
+                       $fmetric['AvgWidth'] = 0;
+                       // set chars widths
+                       for ($cid = 0; $cid <= 255; ++$cid) {
+                               if (isset($cwidths[$cid])) {
+                                       if ($cwidths[$cid] > $fmetric['MaxWidth']) {
+                                               $fmetric['MaxWidth'] = $cwidths[$cid];
+                                       }
+                                       $fmetric['AvgWidth'] += $cwidths[$cid];
+                                       $fmetric['cw'] .= ','.$cid.'=>'.$cwidths[$cid];
+                               } else {
+                                       $fmetric['cw'] .= ','.$cid.'=>'.$fmetric['MissingWidth'];
+                               }
+                       }
+                       $fmetric['AvgWidth'] = round($fmetric['AvgWidth'] / count($cwidths));
+               } else {
+                       // ---------- TRUE TYPE ----------
+                       if ($fmetric['type'] != 'cidfont0') {
+                               if ($link) {
+                                       // creates a symbolic link to the existing font
+                                       symlink($fontfile, $outpath.$fmetric['file']);
+                               } else {
+                                       // store compressed font
+                                       $fmetric['file'] .= '.z';
+                                       $fp = fopen($outpath.$fmetric['file'], 'wb');
+                                       fwrite($fp, gzcompress($font));
+                                       fclose($fp);
+                               }
+                       }
+                       $offset = 0; // offset position of the font data
+                       if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) {
+                               // sfnt version must be 0x00010000 for TrueType version 1.0.
+                               return false;
+                       }
+                       $offset += 4;
+                       // get number of tables
+                       $numTables = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       // skip searchRange, entrySelector and rangeShift
+                       $offset += 6;
+                       // tables array
+                       $table = array();
+                       // ---------- get tables ----------
+                       for ($i = 0; $i < $numTables; ++$i) {
+                               // get table info
+                               $tag = substr($font, $offset, 4);
+                               $offset += 4;
+                               $table[$tag] = array();
+                               $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset);
+                               $offset += 4;
+                               $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset);
+                               $offset += 4;
+                               $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset);
+                               $offset += 4;
+                       }
+                       // check magicNumber
+                       $offset = $table['head']['offset'] + 12;
+                       if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) {
+                               // magicNumber must be 0x5F0F3CF5
+                               return false;
+                       }
+                       $offset += 4;
+                       $offset += 2; // skip flags
+                       // get FUnits
+                       $fmetric['unitsPerEm'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       // units ratio constant
+                       $urk = (1000 / $fmetric['unitsPerEm']);
+                       $offset += 16; // skip created, modified
+                       $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $fmetric['bbox'] = ''.$xMin.' '.$yMin.' '.$xMax.' '.$yMax.'';
+                       $macStyle = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       // PDF font flags
+                       $fmetric['Flags'] = $flags;
+                       if (($macStyle & 2) == 2) {
+                               // italic flag
+                               $fmetric['Flags'] |= 64;
+                       }
+                       // get offset mode (indexToLocFormat : 0 = short, 1 = long)
+                       $offset = $table['head']['offset'] + 50;
+                       $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0);
+                       $offset += 2;
+                       // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table
+                       $indexToLoc = array();
+                       $offset = $table['loca']['offset'];
+                       if ($short_offset) {
+                               // short version
+                               $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1
+                               for ($i = 0; $i < $tot_num_glyphs; ++$i) {
+                                       $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2;
+                                       $offset += 2;
+                               }
+                       } else {
+                               // long version
+                               $tot_num_glyphs = floor($table['loca']['length'] / 4); // numGlyphs + 1
+                               for ($i = 0; $i < $tot_num_glyphs; ++$i) {
+                                       $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset);
+                                       $offset += 4;
+                               }
+                       }
+                       // get glyphs indexes of chars from cmap table
+                       $offset = $table['cmap']['offset'] + 2;
+                       $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       $encodingTables = array();
+                       for ($i = 0; $i < $numEncodingTables; ++$i) {
+                               $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                               $offset += 2;
+                               $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                               $offset += 2;
+                               $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset);
+                               $offset += 4;
+                       }
+                       // ---------- get os/2 metrics ----------
+                       $offset = $table['OS/2']['offset'];
+                       $offset += 2; // skip version
+                       // xAvgCharWidth
+                       $fmetric['AvgWidth'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       // usWeightClass
+                       $usWeightClass = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk);
+                       // estimate StemV and StemH (400 = usWeightClass for Normal - Regular font)
+                       $fmetric['StemV'] = round((70 * $usWeightClass) / 400);
+                       $fmetric['StemH'] = round((30 * $usWeightClass) / 400);
+                       $offset += 2;
+                       $offset += 2; // usWidthClass
+                       $fsType = TCPDF_STATIC::_getSHORT($font, $offset);
+                       $offset += 2;
+                       if ($fsType == 2) {
+                               // This Font cannot be modified, embedded or exchanged in any manner without first obtaining permission of the legal owner.
+                               return false;
+                       }
+                       // ---------- get font name ----------
+                       $fmetric['name'] = '';
+                       $offset = $table['name']['offset'];
+                       $offset += 2; // skip Format selector (=0).
+                       // Number of NameRecords that follow n.
+                       $numNameRecords = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       // Offset to start of string storage (from start of table).
+                       $stringStorageOffset = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       for ($i = 0; $i < $numNameRecords; ++$i) {
+                               $offset += 6; // skip Platform ID, Platform-specific encoding ID, Language ID.
+                               // Name ID.
+                               $nameID = TCPDF_STATIC::_getUSHORT($font, $offset);
+                               $offset += 2;
+                               if ($nameID == 6) {
+                                       // String length (in bytes).
+                                       $stringLength = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                       $offset += 2;
+                                       // String offset from start of storage area (in bytes).
+                                       $stringOffset = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                       $offset += 2;
+                                       $offset = ($table['name']['offset'] + $stringStorageOffset + $stringOffset);
+                                       $fmetric['name'] = substr($font, $offset, $stringLength);
+                                       $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $fmetric['name']);
+                                       break;
+                               } else {
+                                       $offset += 4; // skip String length, String offset
+                               }
+                       }
+                       if (empty($fmetric['name'])) {
+                               $fmetric['name'] = $font_name;
+                       }
+                       // ---------- get post data ----------
+                       $offset = $table['post']['offset'];
+                       $offset += 4; // skip Format Type
+                       $fmetric['italicAngle'] = TCPDF_STATIC::_getFIXED($font, $offset);
+                       $offset += 4;
+                       $fmetric['underlinePosition'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $fmetric['underlineThickness'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $isFixedPitch = (TCPDF_STATIC::_getULONG($font, $offset) == 0) ? false : true;
+                       $offset += 2;
+                       if ($isFixedPitch) {
+                               $fmetric['Flags'] |= 1;
+                       }
+                       // ---------- get hhea data ----------
+                       $offset = $table['hhea']['offset'];
+                       $offset += 4; // skip Table version number
+                       // Ascender
+                       $fmetric['Ascent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       // Descender
+                       $fmetric['Descent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       // LineGap
+                       $fmetric['Leading'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       // advanceWidthMax
+                       $fmetric['MaxWidth'] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk);
+                       $offset += 2;
+                       $offset += 22; // skip some values
+                       // get the number of hMetric entries in hmtx table
+                       $numberOfHMetrics = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       // ---------- get maxp data ----------
+                       $offset = $table['maxp']['offset'];
+                       $offset += 4; // skip Table version number
+                       // get the the number of glyphs in the font.
+                       $numGlyphs = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       // ---------- get CIDToGIDMap ----------
+                       $ctg = array();
+                       foreach ($encodingTables as $enctable) {
+                               // get only specified Platform ID and Encoding ID
+                               if (($enctable['platformID'] == $platid) AND ($enctable['encodingID'] == $encid)) {
+                                       $offset = $table['cmap']['offset'] + $enctable['offset'];
+                                       $format = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                       $offset += 2;
+                                       switch ($format) {
+                                               case 0: { // Format 0: Byte encoding table
+                                                       $offset += 4; // skip length and version/language
+                                                       for ($c = 0; $c < 256; ++$c) {
+                                                               $g = TCPDF_STATIC::_getBYTE($font, $offset);
+                                                               $ctg[$c] = $g;
+                                                               ++$offset;
+                                                       }
+                                                       break;
+                                               }
+                                               case 2: { // Format 2: High-byte mapping through table
+                                                       $offset += 4; // skip length and version/language
+                                                       $numSubHeaders = 0;
+                                                       for ($i = 0; $i < 256; ++$i) {
+                                                               // Array that maps high bytes to subHeaders: value is subHeader index * 8.
+                                                               $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8);
+                                                               $offset += 2;
+                                                               if ($numSubHeaders < $subHeaderKeys[$i]) {
+                                                                       $numSubHeaders = $subHeaderKeys[$i];
+                                                               }
+                                                       }
+                                                       // the number of subHeaders is equal to the max of subHeaderKeys + 1
+                                                       ++$numSubHeaders;
+                                                       // read subHeader structures
+                                                       $subHeaders = array();
+                                                       $numGlyphIndexArray = 0;
+                                                       for ($k = 0; $k < $numSubHeaders; ++$k) {
+                                                               $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                               $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                               $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                               $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                               $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8));
+                                                               $subHeaders[$k]['idRangeOffset'] /= 2;
+                                                               $numGlyphIndexArray += $subHeaders[$k]['entryCount'];
+                                                       }
+                                                       for ($k = 0; $k < $numGlyphIndexArray; ++$k) {
+                                                               $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                       }
+                                                       for ($i = 0; $i < 256; ++$i) {
+                                                               $k = $subHeaderKeys[$i];
+                                                               if ($k == 0) {
+                                                                       // one byte code
+                                                                       $c = $i;
+                                                                       $g = $glyphIndexArray[0];
+                                                                       $ctg[$c] = $g;
+                                                               } else {
+                                                                       // two bytes code
+                                                                       $start_byte = $subHeaders[$k]['firstCode'];
+                                                                       $end_byte = $start_byte + $subHeaders[$k]['entryCount'];
+                                                                       for ($j = $start_byte; $j < $end_byte; ++$j) {
+                                                                               // combine high and low bytes
+                                                                               $c = (($i << 8) + $j);
+                                                                               $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']);
+                                                                               $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536;
+                                                                               if ($g < 0) {
+                                                                                       $g = 0;
+                                                                               }
+                                                                               $ctg[$c] = $g;
+                                                                       }
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 4: { // Format 4: Segment mapping to delta values
+                                                       $length = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $offset += 2;
+                                                       $offset += 2; // skip version/language
+                                                       $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2);
+                                                       $offset += 2;
+                                                       $offset += 6; // skip searchRange, entrySelector, rangeShift
+                                                       $endCount = array(); // array of end character codes for each segment
+                                                       for ($k = 0; $k < $segCount; ++$k) {
+                                                               $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                       }
+                                                       $offset += 2; // skip reservedPad
+                                                       $startCount = array(); // array of start character codes for each segment
+                                                       for ($k = 0; $k < $segCount; ++$k) {
+                                                               $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                       }
+                                                       $idDelta = array(); // delta for all character codes in segment
+                                                       for ($k = 0; $k < $segCount; ++$k) {
+                                                               $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                       }
+                                                       $idRangeOffset = array(); // Offsets into glyphIdArray or 0
+                                                       for ($k = 0; $k < $segCount; ++$k) {
+                                                               $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                       }
+                                                       $gidlen = (floor($length / 2) - 8 - (4 * $segCount));
+                                                       $glyphIdArray = array(); // glyph index array
+                                                       for ($k = 0; $k < $gidlen; ++$k) {
+                                                               $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                       }
+                                                       for ($k = 0; $k < $segCount; ++$k) {
+                                                               for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) {
+                                                                       if ($idRangeOffset[$k] == 0) {
+                                                                               $g = ($idDelta[$k] + $c) % 65536;
+                                                                       } else {
+                                                                               $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k));
+                                                                               $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536;
+                                                                       }
+                                                                       if ($g < 0) {
+                                                                               $g = 0;
+                                                                       }
+                                                                       $ctg[$c] = $g;
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 6: { // Format 6: Trimmed table mapping
+                                                       $offset += 4; // skip length and version/language
+                                                       $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $offset += 2;
+                                                       $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $offset += 2;
+                                                       for ($k = 0; $k < $entryCount; ++$k) {
+                                                               $c = ($k + $firstCode);
+                                                               $g = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $offset += 2;
+                                                               $ctg[$c] = $g;
+                                                       }
+                                                       break;
+                                               }
+                                               case 8: { // Format 8: Mixed 16-bit and 32-bit coverage
+                                                       $offset += 10; // skip reserved, length and version/language
+                                                       for ($k = 0; $k < 8192; ++$k) {
+                                                               $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset);
+                                                               ++$offset;
+                                                       }
+                                                       $nGroups = TCPDF_STATIC::_getULONG($font, $offset);
+                                                       $offset += 4;
+                                                       for ($i = 0; $i < $nGroups; ++$i) {
+                                                               $startCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                                               $offset += 4;
+                                                               $endCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                                               $offset += 4;
+                                                               $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset);
+                                                               $offset += 4;
+                                                               for ($k = $startCharCode; $k <= $endCharCode; ++$k) {
+                                                                       $is32idx = floor($c / 8);
+                                                                       if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) {
+                                                                               $c = $k;
+                                                                       } else {
+                                                                               // 32 bit format
+                                                                               // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4)
+                                                                               //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232
+                                                                               //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888
+                                                                               $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888;
+                                                                       }
+                                                                       $ctg[$c] = 0;
+                                                                       ++$startGlyphID;
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 10: { // Format 10: Trimmed array
+                                                       $offset += 10; // skip reserved, length and version/language
+                                                       $startCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                                       $offset += 4;
+                                                       $numChars = TCPDF_STATIC::_getULONG($font, $offset);
+                                                       $offset += 4;
+                                                       for ($k = 0; $k < $numChars; ++$k) {
+                                                               $c = ($k + $startCharCode);
+                                                               $g = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                               $ctg[$c] = $g;
+                                                               $offset += 2;
+                                                       }
+                                                       break;
+                                               }
+                                               case 12: { // Format 12: Segmented coverage
+                                                       $offset += 10; // skip length and version/language
+                                                       $nGroups = TCPDF_STATIC::_getULONG($font, $offset);
+                                                       $offset += 4;
+                                                       for ($k = 0; $k < $nGroups; ++$k) {
+                                                               $startCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                                               $offset += 4;
+                                                               $endCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                                               $offset += 4;
+                                                               $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                                               $offset += 4;
+                                                               for ($c = $startCharCode; $c <= $endCharCode; ++$c) {
+                                                                       $ctg[$c] = $startGlyphCode;
+                                                                       ++$startGlyphCode;
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 13: { // Format 13: Many-to-one range mappings
+                                                       // to be implemented ...
+                                                       break;
+                                               }
+                                               case 14: { // Format 14: Unicode Variation Sequences
+                                                       // to be implemented ...
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+                       if (!isset($ctg[0])) {
+                               $ctg[0] = 0;
+                       }
+                       // get xHeight (height of x)
+                       $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[120]] + 4);
+                       $yMin = TCPDF_STATIC::_getFWORD($font, $offset);
+                       $offset += 4;
+                       $yMax = TCPDF_STATIC::_getFWORD($font, $offset);
+                       $offset += 2;
+                       $fmetric['XHeight'] = round(($yMax - $yMin) * $urk);
+                       // get CapHeight (height of H)
+                       $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[72]] + 4);
+                       $yMin = TCPDF_STATIC::_getFWORD($font, $offset);
+                       $offset += 4;
+                       $yMax = TCPDF_STATIC::_getFWORD($font, $offset);
+                       $offset += 2;
+                       $fmetric['CapHeight'] = round(($yMax - $yMin) * $urk);
+                       // ceate widths array
+                       $cw = array();
+                       $offset = $table['hmtx']['offset'];
+                       for ($i = 0 ; $i < $numberOfHMetrics; ++$i) {
+                               $cw[$i] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk);
+                               $offset += 4; // skip lsb
+                       }
+                       if ($numberOfHMetrics < $numGlyphs) {
+                               // fill missing widths with the last value
+                               $cw = array_pad($cw, $numGlyphs, $cw[($numberOfHMetrics - 1)]);
+                       }
+                       $fmetric['MissingWidth'] = $cw[0];
+                       $fmetric['cw'] = '';
+                       $fmetric['cbbox'] = '';
+                       for ($cid = 0; $cid <= 65535; ++$cid) {
+                               if (isset($ctg[$cid])) {
+                                       if (isset($cw[$ctg[$cid]])) {
+                                               $fmetric['cw'] .= ','.$cid.'=>'.$cw[$ctg[$cid]];
+                                       }
+                                       if ($addcbbox AND isset($indexToLoc[$ctg[$cid]])) {
+                                               $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[$cid]]);
+                                               $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 2) * $urk);
+                                               $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 4) * $urk);
+                                               $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 6) * $urk);
+                                               $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 8) * $urk);
+                                               $fmetric['cbbox'] .= ','.$cid.'=>array('.$xMin.','.$yMin.','.$xMax.','.$yMax.')';
+                                       }
+                               }
+                       }
+               } // end of true type
+               if (($fmetric['type'] == 'TrueTypeUnicode') AND (count($ctg) == 256)) {
+                       $fmetric['type'] = 'TrueType';
+               }
+               // ---------- create php font file ----------
+               $pfile = '<'.'?'.'php'."\n";
+               $pfile .= '// TCPDF FONT FILE DESCRIPTION'."\n";
+               $pfile .= '$type=\''.$fmetric['type'].'\';'."\n";
+               $pfile .= '$name=\''.$fmetric['name'].'\';'."\n";
+               $pfile .= '$up='.$fmetric['underlinePosition'].';'."\n";
+               $pfile .= '$ut='.$fmetric['underlineThickness'].';'."\n";
+               if ($fmetric['MissingWidth'] > 0) {
+                       $pfile .= '$dw='.$fmetric['MissingWidth'].';'."\n";
+               } else {
+                       $pfile .= '$dw='.$fmetric['AvgWidth'].';'."\n";
+               }
+               $pfile .= '$diff=\''.$fmetric['diff'].'\';'."\n";
+               if ($fmetric['type'] == 'Type1') {
+                       // Type 1
+                       $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n";
+                       $pfile .= '$file=\''.$fmetric['file'].'\';'."\n";
+                       $pfile .= '$size1='.$fmetric['size1'].';'."\n";
+                       $pfile .= '$size2='.$fmetric['size2'].';'."\n";
+               } else {
+                       $pfile .= '$originalsize='.$fmetric['originalsize'].';'."\n";
+                       if ($fmetric['type'] == 'cidfont0') {
+                               // CID-0
+                               switch ($fonttype) {
+                                       case 'CID0JP': {
+                                               $pfile .= '// Japanese'."\n";
+                                               $pfile .= '$enc=\'UniJIS-UTF16-H\';'."\n";
+                                               $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Japan1\',\'Supplement\'=>5);'."\n";
+                                               $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n";
+                                               break;
+                                       }
+                                       case 'CID0KR': {
+                                               $pfile .= '// Korean'."\n";
+                                               $pfile .= '$enc=\'UniKS-UTF16-H\';'."\n";
+                                               $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Korea1\',\'Supplement\'=>0);'."\n";
+                                               $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ak12.php\');'."\n";
+                                               break;
+                                       }
+                                       case 'CID0CS': {
+                                               $pfile .= '// Chinese Simplified'."\n";
+                                               $pfile .= '$enc=\'UniGB-UTF16-H\';'."\n";
+                                               $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'GB1\',\'Supplement\'=>2);'."\n";
+                                               $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ag15.php\');'."\n";
+                                               break;
+                                       }
+                                       case 'CID0CT':
+                                       default: {
+                                               $pfile .= '// Chinese Traditional'."\n";
+                                               $pfile .= '$enc=\'UniCNS-UTF16-H\';'."\n";
+                                               $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'CNS1\',\'Supplement\'=>0);'."\n";
+                                               $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n";
+                                               break;
+                                       }
+                               }
+                       } else {
+                               // TrueType
+                               $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n";
+                               $pfile .= '$file=\''.$fmetric['file'].'\';'."\n";
+                               $pfile .= '$ctg=\''.$fmetric['ctg'].'\';'."\n";
+                               // create CIDToGIDMap
+                               $cidtogidmap = str_pad('', 131072, "\x00"); // (256 * 256 * 2) = 131072
+                               foreach ($ctg as $cid => $gid) {
+                                       $cidtogidmap = self::updateCIDtoGIDmap($cidtogidmap, $cid, $ctg[$cid]);
+                               }
+                               // store compressed CIDToGIDMap
+                               $fp = fopen($outpath.$fmetric['ctg'], 'wb');
+                               fwrite($fp, gzcompress($cidtogidmap));
+                               fclose($fp);
+                       }
+               }
+               $pfile .= '$desc=array(';
+               $pfile .= '\'Flags\'=>'.$fmetric['Flags'].',';
+               $pfile .= '\'FontBBox\'=>\'['.$fmetric['bbox'].']\',';
+               $pfile .= '\'ItalicAngle\'=>'.$fmetric['italicAngle'].',';
+               $pfile .= '\'Ascent\'=>'.$fmetric['Ascent'].',';
+               $pfile .= '\'Descent\'=>'.$fmetric['Descent'].',';
+               $pfile .= '\'Leading\'=>'.$fmetric['Leading'].',';
+               $pfile .= '\'CapHeight\'=>'.$fmetric['CapHeight'].',';
+               $pfile .= '\'XHeight\'=>'.$fmetric['XHeight'].',';
+               $pfile .= '\'StemV\'=>'.$fmetric['StemV'].',';
+               $pfile .= '\'StemH\'=>'.$fmetric['StemH'].',';
+               $pfile .= '\'AvgWidth\'=>'.$fmetric['AvgWidth'].',';
+               $pfile .= '\'MaxWidth\'=>'.$fmetric['MaxWidth'].',';
+               $pfile .= '\'MissingWidth\'=>'.$fmetric['MissingWidth'].'';
+               $pfile .= ');'."\n";
+               if (!empty($fmetric['cbbox'])) {
+                       $pfile .= '$cbbox=array('.substr($fmetric['cbbox'], 1).');'."\n";
+               }
+               $pfile .= '$cw=array('.substr($fmetric['cw'], 1).');'."\n";
+               $pfile .= '// --- EOF ---'."\n";
+               // store file
+               $fp = fopen($outpath.$font_name.'.php', 'w');
+               fwrite($fp, $pfile);
+               fclose($fp);
+               // return TCPDF font name
+               return $font_name;
+       }
+
+       /**
+        * Returs the checksum of a TTF table.
+        * @param $table (string) table to check
+        * @param $length (int) length of table in bytes
+        * @return int checksum
+        * @author Nicola Asuni
+        * @since 5.2.000 (2010-06-02)
+        * @public static
+        */
+       public static function _getTTFtableChecksum($table, $length) {
+               $sum = 0;
+               $tlen = ($length / 4);
+               $offset = 0;
+               for ($i = 0; $i < $tlen; ++$i) {
+                       $v = unpack('Ni', substr($table, $offset, 4));
+                       $sum += $v['i'];
+                       $offset += 4;
+               }
+               $sum = unpack('Ni', pack('N', $sum));
+               return $sum['i'];
+       }
+
+       /**
+        * Returns a subset of the TrueType font data without the unused glyphs.
+        * @param $font (string) TrueType font data.
+        * @param $subsetchars (array) Array of used characters (the glyphs to keep).
+        * @return (string) A subset of TrueType font data without the unused glyphs.
+        * @author Nicola Asuni
+        * @since 5.2.000 (2010-06-02)
+        * @public static
+        */
+       public static function _getTrueTypeFontSubset($font, $subsetchars) {
+               ksort($subsetchars);
+               $offset = 0; // offset position of the font data
+               if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) {
+                       // sfnt version must be 0x00010000 for TrueType version 1.0.
+                       return $font;
+               }
+               $offset += 4;
+               // get number of tables
+               $numTables = TCPDF_STATIC::_getUSHORT($font, $offset);
+               $offset += 2;
+               // skip searchRange, entrySelector and rangeShift
+               $offset += 6;
+               // tables array
+               $table = array();
+               // for each table
+               for ($i = 0; $i < $numTables; ++$i) {
+                       // get table info
+                       $tag = substr($font, $offset, 4);
+                       $offset += 4;
+                       $table[$tag] = array();
+                       $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset);
+                       $offset += 4;
+                       $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset);
+                       $offset += 4;
+                       $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset);
+                       $offset += 4;
+               }
+               // check magicNumber
+               $offset = $table['head']['offset'] + 12;
+               if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) {
+                       // magicNumber must be 0x5F0F3CF5
+                       return $font;
+               }
+               $offset += 4;
+               // get offset mode (indexToLocFormat : 0 = short, 1 = long)
+               $offset = $table['head']['offset'] + 50;
+               $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0);
+               $offset += 2;
+               // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table
+               $indexToLoc = array();
+               $offset = $table['loca']['offset'];
+               if ($short_offset) {
+                       // short version
+                       $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1
+                       for ($i = 0; $i < $tot_num_glyphs; ++$i) {
+                               $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2;
+                               $offset += 2;
+                       }
+               } else {
+                       // long version
+                       $tot_num_glyphs = ($table['loca']['length'] / 4); // numGlyphs + 1
+                       for ($i = 0; $i < $tot_num_glyphs; ++$i) {
+                               $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset);
+                               $offset += 4;
+                       }
+               }
+               // get glyphs indexes of chars from cmap table
+               $subsetglyphs = array(); // glyph IDs on key
+               $subsetglyphs[0] = true; // character codes that do not correspond to any glyph in the font should be mapped to glyph index 0
+               $offset = $table['cmap']['offset'] + 2;
+               $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset);
+               $offset += 2;
+               $encodingTables = array();
+               for ($i = 0; $i < $numEncodingTables; ++$i) {
+                       $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset);
+                       $offset += 4;
+               }
+               foreach ($encodingTables as $enctable) {
+                       // get all platforms and encodings
+                       $offset = $table['cmap']['offset'] + $enctable['offset'];
+                       $format = TCPDF_STATIC::_getUSHORT($font, $offset);
+                       $offset += 2;
+                       switch ($format) {
+                               case 0: { // Format 0: Byte encoding table
+                                       $offset += 4; // skip length and version/language
+                                       for ($c = 0; $c < 256; ++$c) {
+                                               if (isset($subsetchars[$c])) {
+                                                       $g = TCPDF_STATIC::_getBYTE($font, $offset);
+                                                       $subsetglyphs[$g] = true;
+                                               }
+                                               ++$offset;
+                                       }
+                                       break;
+                               }
+                               case 2: { // Format 2: High-byte mapping through table
+                                       $offset += 4; // skip length and version/language
+                                       $numSubHeaders = 0;
+                                       for ($i = 0; $i < 256; ++$i) {
+                                               // Array that maps high bytes to subHeaders: value is subHeader index * 8.
+                                               $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8);
+                                               $offset += 2;
+                                               if ($numSubHeaders < $subHeaderKeys[$i]) {
+                                                       $numSubHeaders = $subHeaderKeys[$i];
+                                               }
+                                       }
+                                       // the number of subHeaders is equal to the max of subHeaderKeys + 1
+                                       ++$numSubHeaders;
+                                       // read subHeader structures
+                                       $subHeaders = array();
+                                       $numGlyphIndexArray = 0;
+                                       for ($k = 0; $k < $numSubHeaders; ++$k) {
+                                               $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                               $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                               $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                               $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                               $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8));
+                                               $subHeaders[$k]['idRangeOffset'] /= 2;
+                                               $numGlyphIndexArray += $subHeaders[$k]['entryCount'];
+                                       }
+                                       for ($k = 0; $k < $numGlyphIndexArray; ++$k) {
+                                               $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                       }
+                                       for ($i = 0; $i < 256; ++$i) {
+                                               $k = $subHeaderKeys[$i];
+                                               if ($k == 0) {
+                                                       // one byte code
+                                                       $c = $i;
+                                                       if (isset($subsetchars[$c])) {
+                                                               $g = $glyphIndexArray[0];
+                                                               $subsetglyphs[$g] = true;
+                                                       }
+                                               } else {
+                                                       // two bytes code
+                                                       $start_byte = $subHeaders[$k]['firstCode'];
+                                                       $end_byte = $start_byte + $subHeaders[$k]['entryCount'];
+                                                       for ($j = $start_byte; $j < $end_byte; ++$j) {
+                                                               // combine high and low bytes
+                                                               $c = (($i << 8) + $j);
+                                                               if (isset($subsetchars[$c])) {
+                                                                       $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']);
+                                                                       $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536;
+                                                                       if ($g < 0) {
+                                                                               $g = 0;
+                                                                       }
+                                                                       $subsetglyphs[$g] = true;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 4: { // Format 4: Segment mapping to delta values
+                                       $length = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                       $offset += 2;
+                                       $offset += 2; // skip version/language
+                                       $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2);
+                                       $offset += 2;
+                                       $offset += 6; // skip searchRange, entrySelector, rangeShift
+                                       $endCount = array(); // array of end character codes for each segment
+                                       for ($k = 0; $k < $segCount; ++$k) {
+                                               $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                       }
+                                       $offset += 2; // skip reservedPad
+                                       $startCount = array(); // array of start character codes for each segment
+                                       for ($k = 0; $k < $segCount; ++$k) {
+                                               $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                       }
+                                       $idDelta = array(); // delta for all character codes in segment
+                                       for ($k = 0; $k < $segCount; ++$k) {
+                                               $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                       }
+                                       $idRangeOffset = array(); // Offsets into glyphIdArray or 0
+                                       for ($k = 0; $k < $segCount; ++$k) {
+                                               $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                       }
+                                       $gidlen = (floor($length / 2) - 8 - (4 * $segCount));
+                                       $glyphIdArray = array(); // glyph index array
+                                       for ($k = 0; $k < $gidlen; ++$k) {
+                                               $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                               $offset += 2;
+                                       }
+                                       for ($k = 0; $k < $segCount; ++$k) {
+                                               for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) {
+                                                       if (isset($subsetchars[$c])) {
+                                                               if ($idRangeOffset[$k] == 0) {
+                                                                       $g = ($idDelta[$k] + $c) % 65536;
+                                                               } else {
+                                                                       $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k));
+                                                                       $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536;
+                                                               }
+                                                               if ($g < 0) {
+                                                                       $g = 0;
+                                                               }
+                                                               $subsetglyphs[$g] = true;
+                                                       }
+                                               }
+                                       }       
+                                       break;
+                               }
+                               case 6: { // Format 6: Trimmed table mapping
+                                       $offset += 4; // skip length and version/language
+                                       $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                       $offset += 2;
+                                       $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                       $offset += 2;
+                                       for ($k = 0; $k < $entryCount; ++$k) {
+                                               $c = ($k + $firstCode);
+                                               if (isset($subsetchars[$c])) {
+                                                       $g = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $subsetglyphs[$g] = true;
+                                               }
+                                               $offset += 2;
+                                       }
+                                       break;
+                               }
+                               case 8: { // Format 8: Mixed 16-bit and 32-bit coverage
+                                       $offset += 10; // skip reserved, length and version/language
+                                       for ($k = 0; $k < 8192; ++$k) {
+                                               $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset);
+                                               ++$offset;
+                                       }
+                                       $nGroups = TCPDF_STATIC::_getULONG($font, $offset);
+                                       $offset += 4;
+                                       for ($i = 0; $i < $nGroups; ++$i) {
+                                               $startCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                               $offset += 4;
+                                               $endCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                               $offset += 4;
+                                               $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset);
+                                               $offset += 4;
+                                               for ($k = $startCharCode; $k <= $endCharCode; ++$k) {
+                                                       $is32idx = floor($c / 8);
+                                                       if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) {
+                                                               $c = $k;
+                                                       } else {
+                                                               // 32 bit format
+                                                               // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4)
+                                                               //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232
+                                                               //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888
+                                                               $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888;
+                                                       }
+                                                       if (isset($subsetchars[$c])) {
+                                                               $subsetglyphs[$startGlyphID] = true;
+                                                       }
+                                                       ++$startGlyphID;
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 10: { // Format 10: Trimmed array
+                                       $offset += 10; // skip reserved, length and version/language
+                                       $startCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                       $offset += 4;
+                                       $numChars = TCPDF_STATIC::_getULONG($font, $offset);
+                                       $offset += 4;
+                                       for ($k = 0; $k < $numChars; ++$k) {
+                                               $c = ($k + $startCharCode);
+                                               if (isset($subsetchars[$c])) {
+                                                       $g = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $subsetglyphs[$g] = true;
+                                               }
+                                               $offset += 2;
+                                       }
+                                       break;
+                               }
+                               case 12: { // Format 12: Segmented coverage
+                                       $offset += 10; // skip length and version/language
+                                       $nGroups = TCPDF_STATIC::_getULONG($font, $offset);
+                                       $offset += 4;
+                                       for ($k = 0; $k < $nGroups; ++$k) {
+                                               $startCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                               $offset += 4;
+                                               $endCharCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                               $offset += 4;
+                                               $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset);
+                                               $offset += 4;
+                                               for ($c = $startCharCode; $c <= $endCharCode; ++$c) {
+                                                       if (isset($subsetchars[$c])) {
+                                                               $subsetglyphs[$startGlyphCode] = true;
+                                                       }
+                                                       ++$startGlyphCode;
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 13: { // Format 13: Many-to-one range mappings
+                                       // to be implemented ...
+                                       break;
+                               }
+                               case 14: { // Format 14: Unicode Variation Sequences
+                                       // to be implemented ...
+                                       break;
+                               }
+                       }
+               }
+               // include all parts of composite glyphs
+               $new_sga = $subsetglyphs;
+               while (!empty($new_sga)) {
+                       $sga = $new_sga;
+                       $new_sga = array();
+                       foreach ($sga as $key => $val) {
+                               if (isset($indexToLoc[$key])) {
+                                       $offset = ($table['glyf']['offset'] + $indexToLoc[$key]);
+                                       $numberOfContours = TCPDF_STATIC::_getSHORT($font, $offset);
+                                       $offset += 2;
+                                       if ($numberOfContours < 0) { // composite glyph
+                                               $offset += 8; // skip xMin, yMin, xMax, yMax
+                                               do {
+                                                       $flags = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $offset += 2;
+                                                       $glyphIndex = TCPDF_STATIC::_getUSHORT($font, $offset);
+                                                       $offset += 2;
+                                                       if (!isset($subsetglyphs[$glyphIndex])) {
+                                                               // add missing glyphs
+                                                               $new_sga[$glyphIndex] = true;
+                                                       }
+                                                       // skip some bytes by case
+                                                       if ($flags & 1) {
+                                                               $offset += 4;
+                                                       } else {
+                                                               $offset += 2;
+                                                       }
+                                                       if ($flags & 8) {
+                                                               $offset += 2;
+                                                       } elseif ($flags & 64) {
+                                                               $offset += 4;
+                                                       } elseif ($flags & 128) {
+                                                               $offset += 8;
+                                                       }
+                                               } while ($flags & 32);
+                                       }
+                               }
+                       }
+                       $subsetglyphs += $new_sga;
+               }
+               // sort glyphs by key (and remove duplicates)
+               ksort($subsetglyphs);
+               // build new glyf and loca tables
+               $glyf = '';
+               $loca = '';
+               $offset = 0;
+               $glyf_offset = $table['glyf']['offset'];
+               for ($i = 0; $i < $tot_num_glyphs; ++$i) {
+                       if (isset($subsetglyphs[$i])) {
+                               $length = ($indexToLoc[($i + 1)] - $indexToLoc[$i]);
+                               $glyf .= substr($font, ($glyf_offset + $indexToLoc[$i]), $length);
+                       } else {
+                               $length = 0;
+                       }
+                       if ($short_offset) {
+                               $loca .= pack('n', floor($offset / 2));
+                       } else {
+                               $loca .= pack('N', $offset);
+                       }
+                       $offset += $length;
+               }
+               // array of table names to preserve (loca and glyf tables will be added later)
+               // the cmap table is not needed and shall not be present, since the mapping from character codes to glyph descriptions is provided separately
+               $table_names = array ('head', 'hhea', 'hmtx', 'maxp', 'cvt ', 'fpgm', 'prep'); // minimum required table names
+               // get the tables to preserve
+               $offset = 12;
+               foreach ($table as $tag => $val) {
+                       if (in_array($tag, $table_names)) {
+                               $table[$tag]['data'] = substr($font, $table[$tag]['offset'], $table[$tag]['length']);
+                               if ($tag == 'head') {
+                                       // set the checkSumAdjustment to 0
+                                       $table[$tag]['data'] = substr($table[$tag]['data'], 0, 8)."\x0\x0\x0\x0".substr($table[$tag]['data'], 12);
+                               }
+                               $pad = 4 - ($table[$tag]['length'] % 4);
+                               if ($pad != 4) {
+                                       // the length of a table must be a multiple of four bytes
+                                       $table[$tag]['length'] += $pad;
+                                       $table[$tag]['data'] .= str_repeat("\x0", $pad);
+                               }
+                               $table[$tag]['offset'] = $offset;
+                               $offset += $table[$tag]['length'];
+                               // check sum is not changed (so keep the following line commented)
+                               //$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length']);
+                       } else {
+                               unset($table[$tag]);
+                       }
+               }
+               // add loca
+               $table['loca']['data'] = $loca;
+               $table['loca']['length'] = strlen($loca);
+               $pad = 4 - ($table['loca']['length'] % 4);
+               if ($pad != 4) {
+                       // the length of a table must be a multiple of four bytes
+                       $table['loca']['length'] += $pad;
+                       $table['loca']['data'] .= str_repeat("\x0", $pad);
+               }
+               $table['loca']['offset'] = $offset;
+               $table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length']);
+               $offset += $table['loca']['length'];
+               // add glyf
+               $table['glyf']['data'] = $glyf;
+               $table['glyf']['length'] = strlen($glyf);
+               $pad = 4 - ($table['glyf']['length'] % 4);
+               if ($pad != 4) {
+                       // the length of a table must be a multiple of four bytes
+                       $table['glyf']['length'] += $pad;
+                       $table['glyf']['data'] .= str_repeat("\x0", $pad);
+               }
+               $table['glyf']['offset'] = $offset;
+               $table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length']);
+               // rebuild font
+               $font = '';
+               $font .= pack('N', 0x10000); // sfnt version
+               $numTables = count($table);
+               $font .= pack('n', $numTables); // numTables
+               $entrySelector = floor(log($numTables, 2));
+               $searchRange = pow(2, $entrySelector) * 16;
+               $rangeShift = ($numTables * 16) - $searchRange;
+               $font .= pack('n', $searchRange); // searchRange
+               $font .= pack('n', $entrySelector); // entrySelector
+               $font .= pack('n', $rangeShift); // rangeShift
+               $offset = ($numTables * 16);
+               foreach ($table as $tag => $data) {
+                       $font .= $tag; // tag
+                       $font .= pack('N', $data['checkSum']); // checkSum
+                       $font .= pack('N', ($data['offset'] + $offset)); // offset
+                       $font .= pack('N', $data['length']); // length
+               }
+               foreach ($table as $data) {
+                       $font .= $data['data'];
+               }
+               // set checkSumAdjustment on head table
+               $checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font));
+               $font = substr($font, 0, $table['head']['offset'] + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + 12);
+               return $font;
+       }
+
+       /**
+        * Outputs font widths
+        * @param $font (array) font data
+        * @param $cidoffset (int) offset for CID values
+        * @return PDF command string for font widths
+        * @author Nicola Asuni
+        * @since 4.4.000 (2008-12-07)
+        * @public static
+        */
+       public static function _putfontwidths($font, $cidoffset=0) {
+               ksort($font['cw']);
+               $rangeid = 0;
+               $range = array();
+               $prevcid = -2;
+               $prevwidth = -1;
+               $interval = false;
+               // for each character
+               foreach ($font['cw'] as $cid => $width) {
+                       $cid -= $cidoffset;
+                       if ($font['subset'] AND (!isset($font['subsetchars'][$cid]))) {
+                               // ignore the unused characters (font subsetting)
+                               continue;
+                       }
+                       if ($width != $font['dw']) {
+                               if ($cid == ($prevcid + 1)) {
+                                       // consecutive CID
+                                       if ($width == $prevwidth) {
+                                               if ($width == $range[$rangeid][0]) {
+                                                       $range[$rangeid][] = $width;
+                                               } else {
+                                                       array_pop($range[$rangeid]);
+                                                       // new range
+                                                       $rangeid = $prevcid;
+                                                       $range[$rangeid] = array();
+                                                       $range[$rangeid][] = $prevwidth;
+                                                       $range[$rangeid][] = $width;
+                                               }
+                                               $interval = true;
+                                               $range[$rangeid]['interval'] = true;
+                                       } else {
+                                               if ($interval) {
+                                                       // new range
+                                                       $rangeid = $cid;
+                                                       $range[$rangeid] = array();
+                                                       $range[$rangeid][] = $width;
+                                               } else {
+                                                       $range[$rangeid][] = $width;
+                                               }
+                                               $interval = false;
+                                       }
+                               } else {
+                                       // new range
+                                       $rangeid = $cid;
+                                       $range[$rangeid] = array();
+                                       $range[$rangeid][] = $width;
+                                       $interval = false;
+                               }
+                               $prevcid = $cid;
+                               $prevwidth = $width;
+                       }
+               }
+               // optimize ranges
+               $prevk = -1;
+               $nextk = -1;
+               $prevint = false;
+               foreach ($range as $k => $ws) {
+                       $cws = count($ws);
+                       if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) {
+                               if (isset($range[$k]['interval'])) {
+                                       unset($range[$k]['interval']);
+                               }
+                               $range[$prevk] = array_merge($range[$prevk], $range[$k]);
+                               unset($range[$k]);
+                       } else {
+                               $prevk = $k;
+                       }
+                       $nextk = $k + $cws;
+                       if (isset($ws['interval'])) {
+                               if ($cws > 3) {
+                                       $prevint = true;
+                               } else {
+                                       $prevint = false;
+                               }
+                               if (isset($range[$k]['interval'])) {
+                                       unset($range[$k]['interval']);
+                               }
+                               --$nextk;
+                       } else {
+                               $prevint = false;
+                       }
+               }
+               // output data
+               $w = '';
+               foreach ($range as $k => $ws) {
+                       if (count(array_count_values($ws)) == 1) {
+                               // interval mode is more compact
+                               $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0];
+                       } else {
+                               // range mode
+                               $w .= ' '.$k.' [ '.implode(' ', $ws).' ]';
+                       }
+               }
+               return '/W ['.$w.' ]';
+       }
+
+       /**
+        * Returns the unicode caracter specified by the value
+        * @param $c (int) UTF-8 value
+        * @param $unicode (boolean) True if we are in unicode mode, false otherwise.
+        * @return Returns the specified character.
+        * @since 2.3.000 (2008-03-05)
+        * @public static
+        */
+       public static function unichr($c, $unicode=true) {
+               if (!$unicode) {
+                       return chr($c);
+               } elseif ($c <= 0x7F) {
+                       // one byte
+                       return chr($c);
+               } elseif ($c <= 0x7FF) {
+                       // two bytes
+                       return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F);
+               } elseif ($c <= 0xFFFF) {
+                       // three bytes
+                       return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
+               } elseif ($c <= 0x10FFFF) {
+                       // four bytes
+                       return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F);
+               } else {
+                       return '';
+               }
+       }
+
+       /**
+        * Returns the unicode caracter specified by UTF-8 value
+        * @param $c (int) UTF-8 value
+        * @return Returns the specified character.
+        * @public static
+        */
+       public static function unichrUnicode($c) {
+               return self::unichr($c, true);
+       }
+
+       /**
+        * Returns the unicode caracter specified by ASCII value
+        * @param $c (int) UTF-8 value
+        * @return Returns the specified character.
+        * @public static
+        */
+       public static function unichrASCII($c) {
+               return self::unichr($c, false);
+       }
+
+       /**
+        * Converts array of UTF-8 characters to UTF16-BE string.<br>
+        * Based on: http://www.faqs.org/rfcs/rfc2781.html
+        * <pre>
+        *   Encoding UTF-16:
+        *
+        *   Encoding of a single character from an ISO 10646 character value to
+        *    UTF-16 proceeds as follows. Let U be the character number, no greater
+        *    than 0x10FFFF.
+        *
+        *    1) If U < 0x10000, encode U as a 16-bit unsigned integer and
+        *       terminate.
+        *
+        *    2) Let U' = U - 0x10000. Because U is less than or equal to 0x10FFFF,
+        *       U' must be less than or equal to 0xFFFFF. That is, U' can be
+        *       represented in 20 bits.
+        *
+        *    3) Initialize two 16-bit unsigned integers, W1 and W2, to 0xD800 and
+        *       0xDC00, respectively. These integers each have 10 bits free to
+        *       encode the character value, for a total of 20 bits.
+        *
+        *    4) Assign the 10 high-order bits of the 20-bit U' to the 10 low-order
+        *       bits of W1 and the 10 low-order bits of U' to the 10 low-order
+        *       bits of W2. Terminate.
+        *
+        *    Graphically, steps 2 through 4 look like:
+        *    U' = yyyyyyyyyyxxxxxxxxxx
+        *    W1 = 110110yyyyyyyyyy
+        *    W2 = 110111xxxxxxxxxx
+        * </pre>
+        * @param $unicode (array) array containing UTF-8 unicode values
+        * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF)
+        * @return string
+        * @protected
+        * @author Nicola Asuni
+        * @since 2.1.000 (2008-01-08)
+        * @public static
+        */
+       public static function arrUTF8ToUTF16BE($unicode, $setbom=false) {
+               $outstr = ''; // string to be returned
+               if ($setbom) {
+                       $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM)
+               }
+               foreach ($unicode as $char) {
+                       if ($char == 0x200b) {
+                               // skip Unicode Character 'ZERO WIDTH SPACE' (DEC:8203, U+200B)
+                       } elseif ($char == 0xFFFD) {
+                               $outstr .= "\xFF\xFD"; // replacement character
+                       } elseif ($char < 0x10000) {
+                               $outstr .= chr($char >> 0x08);
+                               $outstr .= chr($char & 0xFF);
+                       } else {
+                               $char -= 0x10000;
+                               $w1 = 0xD800 | ($char >> 0x0a);
+                               $w2 = 0xDC00 | ($char & 0x3FF);
+                               $outstr .= chr($w1 >> 0x08);
+                               $outstr .= chr($w1 & 0xFF);
+                               $outstr .= chr($w2 >> 0x08);
+                               $outstr .= chr($w2 & 0xFF);
+                       }
+               }
+               return $outstr;
+       }
+
+       /**
+        * Convert an array of UTF8 values to array of unicode characters
+        * @param $ta (array) The input array of UTF8 values.
+        * @param $isunicode (boolean) True for Unicode mode, false otherwise.
+        * @return Return array of unicode characters
+        * @since 4.5.037 (2009-04-07)
+        * @public static
+        */
+       public static function UTF8ArrayToUniArray($ta, $isunicode=true) {
+               if ($isunicode) {
+                       return array_map(array('TCPDF_FONTS', 'unichrUnicode'), $ta);
+               }
+               return array_map(array('TCPDF_FONTS', 'unichrASCII'), $ta);
+       }
+
+       /**
+        * Extract a slice of the $strarr array and return it as string.
+        * @param $strarr (string) The input array of characters.
+        * @param $start (int) the starting element of $strarr.
+        * @param $end (int) first element that will not be returned.
+        * @param $unicode (boolean) True if we are in unicode mode, false otherwise.
+        * @return Return part of a string
+        * @public static
+        */
+       public static function UTF8ArrSubString($strarr, $start='', $end='', $unicode=true) {
+               if (strlen($start) == 0) {
+                       $start = 0;
+               }
+               if (strlen($end) == 0) {
+                       $end = count($strarr);
+               }
+               $string = '';
+               for ($i = $start; $i < $end; ++$i) {
+                       $string .= self::unichr($strarr[$i], $unicode);
+               }
+               return $string;
+       }
+
+       /**
+        * Extract a slice of the $uniarr array and return it as string.
+        * @param $uniarr (string) The input array of characters.
+        * @param $start (int) the starting element of $strarr.
+        * @param $end (int) first element that will not be returned.
+        * @return Return part of a string
+        * @since 4.5.037 (2009-04-07)
+        * @public static
+        */
+       public static function UniArrSubString($uniarr, $start='', $end='') {
+               if (strlen($start) == 0) {
+                       $start = 0;
+               }
+               if (strlen($end) == 0) {
+                       $end = count($uniarr);
+               }
+               $string = '';
+               for ($i=$start; $i < $end; ++$i) {
+                       $string .= $uniarr[$i];
+               }
+               return $string;
+       }
+
+       /**
+        * Update the CIDToGIDMap string with a new value.
+        * @param $map (string) CIDToGIDMap.
+        * @param $cid (int) CID value.
+        * @param $gid (int) GID value.
+        * @return (string) CIDToGIDMap.
+        * @author Nicola Asuni
+        * @since 5.9.123 (2011-09-29)
+        * @public static
+        */
+       public static function updateCIDtoGIDmap($map, $cid, $gid) {
+               if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) {
+                       if ($gid > 0xFFFF) {
+                               $gid -= 0x10000;
+                       }
+                       $map[($cid * 2)] = chr($gid >> 8);
+                       $map[(($cid * 2) + 1)] = chr($gid & 0xFF);
+               }
+               return $map;
+       }
+
+       /**
+        * Return fonts path
+        * @return string
+        * @public static
+        */
+       public static function _getfontpath() {
+               if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) {
+                       if (substr($fdir, -1) != '/') {
+                               $fdir .= '/';
+                       }
+                       define('K_PATH_FONTS', $fdir);
+               }
+               return defined('K_PATH_FONTS') ? K_PATH_FONTS : '';
+       }
+
+       /**
+        * Return font full path
+        * @param $file (string) Font file name.
+        * @param $fontdir (string) Font directory (set to false fto search on default directories)
+        * @return string Font full path or empty string
+        * @author Nicola Asuni
+        * @since 6.0.025
+        * @public static
+        */
+       public static function getFontFullPath($file, $fontdir=false) {
+               $fontfile = '';
+               // search files on various directories
+               if (($fontdir !== false) AND @file_exists($fontdir.$file)) {
+                       $fontfile = $fontdir.$file;
+               } elseif (@file_exists(self::_getfontpath().$file)) {
+                       $fontfile = self::_getfontpath().$file;
+               } elseif (@file_exists($file)) {
+                       $fontfile = $file;
+               }
+               return $fontfile;
+       }
+
+       /**
+        * Converts UTF-8 characters array to array of Latin1 characters array<br>
+        * @param $unicode (array) array containing UTF-8 unicode values
+        * @return array
+        * @author Nicola Asuni
+        * @since 4.8.023 (2010-01-15)
+        * @public static
+        */
+       public static function UTF8ArrToLatin1Arr($unicode) {
+               $outarr = array(); // array to be returned
+               foreach ($unicode as $char) {
+                       if ($char < 256) {
+                               $outarr[] = $char;
+                       } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) {
+                               // map from UTF-8
+                               $outarr[] = TCPDF_FONT_DATA::$uni_utf8tolatin[$char];
+                       } elseif ($char == 0xFFFD) {
+                               // skip
+                       } else {
+                               $outarr[] = 63; // '?' character
+                       }
+               }
+               return $outarr;
+       }
+
+       /**
+        * Converts UTF-8 characters array to array of Latin1 string<br>
+        * @param $unicode (array) array containing UTF-8 unicode values
+        * @return array
+        * @author Nicola Asuni
+        * @since 4.8.023 (2010-01-15)
+        * @public static
+        */
+       public static function UTF8ArrToLatin1($unicode) {
+               $outstr = ''; // string to be returned
+               foreach ($unicode as $char) {
+                       if ($char < 256) {
+                               $outstr .= chr($char);
+                       } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) {
+                               // map from UTF-8
+                               $outstr .= chr(TCPDF_FONT_DATA::$uni_utf8tolatin[$char]);
+                       } elseif ($char == 0xFFFD) {
+                               // skip
+                       } else {
+                               $outstr .= '?';
+                       }
+               }
+               return $outstr;
+       }
+
+       /**
+        * Converts UTF-8 character to integer value.<br>
+        * Uses the getUniord() method if the value is not cached.
+        * @param $uch (string) character string to process.
+        * @return integer Unicode value
+        * @public static
+        */
+       public static function uniord($uch) {
+               if (!isset(self::$cache_uniord[$uch])) {
+                       self::$cache_uniord[$uch] = self::getUniord($uch);
+               }
+               return self::$cache_uniord[$uch];
+       }
+
+       /**
+        * Converts UTF-8 character to integer value.<br>
+        * Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br>
+        * Based on: http://www.faqs.org/rfcs/rfc3629.html
+        * <pre>
+        *    Char. number range  |        UTF-8 octet sequence
+        *       (hexadecimal)    |              (binary)
+        *    --------------------+-----------------------------------------------
+        *    0000 0000-0000 007F | 0xxxxxxx
+        *    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
+        *    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
+        *    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+        *    ---------------------------------------------------------------------
+        *
+        *   ABFN notation:
+        *   ---------------------------------------------------------------------
+        *   UTF8-octets = *( UTF8-char )
+        *   UTF8-char   = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
+        *   UTF8-1      = %x00-7F
+        *   UTF8-2      = %xC2-DF UTF8-tail
+        *
+        *   UTF8-3      = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
+        *                 %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
+        *   UTF8-4      = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
+        *                 %xF4 %x80-8F 2( UTF8-tail )
+        *   UTF8-tail   = %x80-BF
+        *   ---------------------------------------------------------------------
+        * </pre>
+        * @param $uch (string) character string to process.
+        * @return integer Unicode value
+        * @author Nicola Asuni
+        * @public static
+        */
+       public static function getUniord($uch) {
+               if (function_exists('mb_convert_encoding')) {
+                       list(, $char) = @unpack('N', mb_convert_encoding($uch, 'UCS-4BE', 'UTF-8'));
+                       if ($char >= 0) {
+                               return $char;
+                       }
+               }
+               $bytes = array(); // array containing single character byte sequences
+               $countbytes = 0;
+               $numbytes = 1; // number of octetc needed to represent the UTF-8 character
+               $length = strlen($uch);
+               for ($i = 0; $i < $length; ++$i) {
+                       $char = ord($uch[$i]); // get one string character at time
+                       if ($countbytes == 0) { // get starting octect
+                               if ($char <= 0x7F) {
+                                       return $char; // use the character "as is" because is ASCII
+                               } elseif (($char >> 0x05) == 0x06) { // 2 bytes character (0x06 = 110 BIN)
+                                       $bytes[] = ($char - 0xC0) << 0x06;
+                                       ++$countbytes;
+                                       $numbytes = 2;
+                               } elseif (($char >> 0x04) == 0x0E) { // 3 bytes character (0x0E = 1110 BIN)
+                                       $bytes[] = ($char - 0xE0) << 0x0C;
+                                       ++$countbytes;
+                                       $numbytes = 3;
+                               } elseif (($char >> 0x03) == 0x1E) { // 4 bytes character (0x1E = 11110 BIN)
+                                       $bytes[] = ($char - 0xF0) << 0x12;
+                                       ++$countbytes;
+                                       $numbytes = 4;
+                               } else {
+                                       // use replacement character for other invalid sequences
+                                       return 0xFFFD;
+                               }
+                       } elseif (($char >> 0x06) == 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN
+                               $bytes[] = $char - 0x80;
+                               ++$countbytes;
+                               if ($countbytes == $numbytes) {
+                                       // compose UTF-8 bytes to a single unicode value
+                                       $char = $bytes[0];
+                                       for ($j = 1; $j < $numbytes; ++$j) {
+                                               $char += ($bytes[$j] << (($numbytes - $j - 1) * 0x06));
+                                       }
+                                       if ((($char >= 0xD800) AND ($char <= 0xDFFF)) OR ($char >= 0x10FFFF)) {
+                                               // The definition of UTF-8 prohibits encoding character numbers between
+                                               // U+D800 and U+DFFF, which are reserved for use with the UTF-16
+                                               // encoding form (as surrogate pairs) and do not directly represent
+                                               // characters.
+                                               return 0xFFFD; // use replacement character
+                                       } else {
+                                               return $char;
+                                       }
+                               }
+                       } else {
+                               // use replacement character for other invalid sequences
+                               return 0xFFFD;
+                       }
+               }
+               return 0xFFFD;
+       }
+
+       /**
+        * Converts UTF-8 strings to codepoints array.<br>
+        * Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br>
+        * @param $str (string) string to process.
+        * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise.
+        * @param $currentfont (array) Reference to current font array.
+        * @return array containing codepoints (UTF-8 characters values)
+        * @author Nicola Asuni
+        * @public static
+        */
+       public static function UTF8StringToArray($str, $isunicode=true, &$currentfont) {
+               if ($isunicode) {
+                       // requires PCRE unicode support turned on
+                       $chars = TCPDF_STATIC::pregSplit('//','u', $str, -1, PREG_SPLIT_NO_EMPTY);
+                       $carr = array_map(array('TCPDF_FONTS', 'uniord'), $chars);
+               } else {
+                       $chars = str_split($str);
+                       $carr = array_map('ord', $chars);
+               }
+               $currentfont['subsetchars'] += array_fill_keys($carr, true);
+               return $carr;
+       }
+
+       /**
+        * Converts UTF-8 strings to Latin1 when using the standard 14 core fonts.<br>
+        * @param $str (string) string to process.
+        * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise.
+        * @param $currentfont (array) Reference to current font array.
+        * @return string
+        * @since 3.2.000 (2008-06-23)
+        * @public static
+        */
+       public static function UTF8ToLatin1($str, $isunicode=true, &$currentfont) {
+               $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values
+               return self::UTF8ArrToLatin1($unicode);
+       }
+
+       /**
+        * Converts UTF-8 strings to UTF16-BE.<br>
+        * @param $str (string) string to process.
+        * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF)
+        * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise.
+        * @param $currentfont (array) Reference to current font array.
+        * @return string
+        * @author Nicola Asuni
+        * @since 1.53.0.TC005 (2005-01-05)
+        * @public static
+        */
+       public static function UTF8ToUTF16BE($str, $setbom=false, $isunicode=true, &$currentfont) {
+               if (!$isunicode) {
+                       return $str; // string is not in unicode
+               }
+               $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values
+               return self::arrUTF8ToUTF16BE($unicode, $setbom);
+       }
+
+       /**
+        * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/).
+        * @param $str (string) string to manipulate.
+        * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF)
+        * @param $forcertl (bool) if true forces RTL text direction
+        * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise.
+        * @param $currentfont (array) Reference to current font array.
+        * @return string
+        * @author Nicola Asuni
+        * @since 2.1.000 (2008-01-08)
+        * @public static
+        */
+       public static function utf8StrRev($str, $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) {
+               return self::utf8StrArrRev(self::UTF8StringToArray($str, $isunicode, $currentfont), $str, $setbom, $forcertl, $isunicode, $currentfont);
+       }
+
+       /**
+        * Reverse the RLT substrings array using the Bidirectional Algorithm (http://unicode.org/reports/tr9/).
+        * @param $arr (array) array of unicode values.
+        * @param $str (string) string to manipulate (or empty value).
+        * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF)
+        * @param $forcertl (bool) if true forces RTL text direction
+        * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise.
+        * @param $currentfont (array) Reference to current font array.
+        * @return string
+        * @author Nicola Asuni
+        * @since 4.9.000 (2010-03-27)
+        * @public static
+        */
+       public static function utf8StrArrRev($arr, $str='', $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) {
+               return self::arrUTF8ToUTF16BE(self::utf8Bidi($arr, $str, $forcertl, $isunicode, $currentfont), $setbom);
+       }
+
+       /**
+        * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/).
+        * @param $ta (array) array of characters composing the string.
+        * @param $str (string) string to process
+        * @param $forcertl (bool) if 'R' forces RTL, if 'L' forces LTR
+        * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise.
+        * @param $currentfont (array) Reference to current font array.
+        * @return array of unicode chars
+        * @author Nicola Asuni
+        * @since 2.4.000 (2008-03-06)
+        * @public static
+        */
+       public static function utf8Bidi($ta, $str='', $forcertl=false, $isunicode=true, &$currentfont) {
+               // paragraph embedding level
+               $pel = 0;
+               // max level
+               $maxlevel = 0;
+               if (TCPDF_STATIC::empty_string($str)) {
+                       // create string from array
+                       $str = self::UTF8ArrSubString($ta, '', '', $isunicode);
+               }
+               // check if string contains arabic text
+               if (preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_ARABIC, $str)) {
+                       $arabic = true;
+               } else {
+                       $arabic = false;
+               }
+               // check if string contains RTL text
+               if (!($forcertl OR $arabic OR preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_RTL, $str))) {
+                       return $ta;
+               }
+
+               // get number of chars
+               $numchars = count($ta);
+
+               if ($forcertl == 'R') {
+                       $pel = 1;
+               } elseif ($forcertl == 'L') {
+                       $pel = 0;
+               } else {
+                       // P2. In each paragraph, find the first character of type L, AL, or R.
+                       // P3. If a character is found in P2 and it is of type AL or R, then set the paragraph embedding level to one; otherwise, set it to zero.
+                       for ($i=0; $i < $numchars; ++$i) {
+                               $type = TCPDF_FONT_DATA::$uni_type[$ta[$i]];
+                               if ($type == 'L') {
+                                       $pel = 0;
+                                       break;
+                               } elseif (($type == 'AL') OR ($type == 'R')) {
+                                       $pel = 1;
+                                       break;
+                               }
+                       }
+               }
+
+               // Current Embedding Level
+               $cel = $pel;
+               // directional override status
+               $dos = 'N';
+               $remember = array();
+               // start-of-level-run
+               $sor = $pel % 2 ? 'R' : 'L';
+               $eor = $sor;
+
+               // Array of characters data
+               $chardata = Array();
+
+               // X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase.
+               // In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached.
+               for ($i=0; $i < $numchars; ++$i) {
+                       if ($ta[$i] == TCPDF_FONT_DATA::$uni_RLE) {
+                               // X2. With each RLE, compute the least greater odd embedding level.
+                               //      a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral.
+                               //      b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
+                               $next_level = $cel + ($cel % 2) + 1;
+                               if ($next_level < 62) {
+                                       $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLE, 'cel' => $cel, 'dos' => $dos);
+                                       $cel = $next_level;
+                                       $dos = 'N';
+                                       $sor = $eor;
+                                       $eor = $cel % 2 ? 'R' : 'L';
+                               }
+                       } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRE) {
+                               // X3. With each LRE, compute the least greater even embedding level.
+                               //      a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral.
+                               //      b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
+                               $next_level = $cel + 2 - ($cel % 2);
+                               if ( $next_level < 62 ) {
+                                       $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRE, 'cel' => $cel, 'dos' => $dos);
+                                       $cel = $next_level;
+                                       $dos = 'N';
+                                       $sor = $eor;
+                                       $eor = $cel % 2 ? 'R' : 'L';
+                               }
+                       } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_RLO) {
+                               // X4. With each RLO, compute the least greater odd embedding level.
+                               //      a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left.
+                               //      b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
+                               $next_level = $cel + ($cel % 2) + 1;
+                               if ($next_level < 62) {
+                                       $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLO, 'cel' => $cel, 'dos' => $dos);
+                                       $cel = $next_level;
+                                       $dos = 'R';
+                                       $sor = $eor;
+                                       $eor = $cel % 2 ? 'R' : 'L';
+                               }
+                       } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRO) {
+                               // X5. With each LRO, compute the least greater even embedding level.
+                               //      a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right.
+                               //      b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status.
+                               $next_level = $cel + 2 - ($cel % 2);
+                               if ( $next_level < 62 ) {
+                                       $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRO, 'cel' => $cel, 'dos' => $dos);
+                                       $cel = $next_level;
+                                       $dos = 'L';
+                                       $sor = $eor;
+                                       $eor = $cel % 2 ? 'R' : 'L';
+                               }
+                       } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_PDF) {
+                               // X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override.
+                               if (count($remember)) {
+                                       $last = count($remember ) - 1;
+                                       if (($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLE) OR
+                                               ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRE) OR
+                                               ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLO) OR
+                                               ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRO)) {
+                                               $match = array_pop($remember);
+                                               $cel = $match['cel'];
+                                               $dos = $match['dos'];
+                                               $sor = $eor;
+                                               $eor = ($cel > $match['cel'] ? $cel : $match['cel']) % 2 ? 'R' : 'L';
+                                       }
+                               }
+                       } elseif (($ta[$i] != TCPDF_FONT_DATA::$uni_RLE) AND
+                                                        ($ta[$i] != TCPDF_FONT_DATA::$uni_LRE) AND
+                                                        ($ta[$i] != TCPDF_FONT_DATA::$uni_RLO) AND
+                                                        ($ta[$i] != TCPDF_FONT_DATA::$uni_LRO) AND
+                                                        ($ta[$i] != TCPDF_FONT_DATA::$uni_PDF)) {
+                               // X6. For all types besides RLE, LRE, RLO, LRO, and PDF:
+                               //      a. Set the level of the current character to the current embedding level.
+                               //      b. Whenever the directional override status is not neutral, reset the current character type to the directional override status.
+                               if ($dos != 'N') {
+                                       $chardir = $dos;
+                               } else {
+                                       if (isset(TCPDF_FONT_DATA::$uni_type[$ta[$i]])) {
+                                               $chardir = TCPDF_FONT_DATA::$uni_type[$ta[$i]];
+                                       } else {
+                                               $chardir = 'L';
+                                       }
+                               }
+                               // stores string characters and other information
+                               $chardata[] = array('char' => $ta[$i], 'level' => $cel, 'type' => $chardir, 'sor' => $sor, 'eor' => $eor);
+                       }
+               } // end for each char
+
+               // X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. Paragraph separators are not included in the embedding.
+               // X9. Remove all RLE, LRE, RLO, LRO, PDF, and BN codes.
+               // X10. The remaining rules are applied to each run of characters at the same level. For each run, determine the start-of-level-run (sor) and end-of-level-run (eor) type, either L or R. This depends on the higher of the two levels on either side of the boundary (at the start or end of the paragraph, the level of the 'other' run is the base embedding level). If the higher level is odd, the type is R; otherwise, it is L.
+
+               // 3.3.3 Resolving Weak Types
+               // Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used.
+               // Nonspacing marks are now resolved based on the previous characters.
+               $numchars = count($chardata);
+
+               // W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor.
+               $prevlevel = -1; // track level changes
+               $levcount = 0; // counts consecutive chars at the same level
+               for ($i=0; $i < $numchars; ++$i) {
+                       if ($chardata[$i]['type'] == 'NSM') {
+                               if ($levcount) {
+                                       $chardata[$i]['type'] = $chardata[$i]['sor'];
+                               } elseif ($i > 0) {
+                                       $chardata[$i]['type'] = $chardata[($i-1)]['type'];
+                               }
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sor) is found. If an AL is found, change the type of the European number to Arabic number.
+               $prevlevel = -1;
+               $levcount = 0;
+               for ($i=0; $i < $numchars; ++$i) {
+                       if ($chardata[$i]['char'] == 'EN') {
+                               for ($j=$levcount; $j >= 0; $j--) {
+                                       if ($chardata[$j]['type'] == 'AL') {
+                                               $chardata[$i]['type'] = 'AN';
+                                       } elseif (($chardata[$j]['type'] == 'L') OR ($chardata[$j]['type'] == 'R')) {
+                                               break;
+                                       }
+                               }
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               // W3. Change all ALs to R.
+               for ($i=0; $i < $numchars; ++$i) {
+                       if ($chardata[$i]['type'] == 'AL') {
+                               $chardata[$i]['type'] = 'R';
+                       }
+               }
+
+               // W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type.
+               $prevlevel = -1;
+               $levcount = 0;
+               for ($i=0; $i < $numchars; ++$i) {
+                       if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) {
+                               if (($chardata[$i]['type'] == 'ES') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) {
+                                       $chardata[$i]['type'] = 'EN';
+                               } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) {
+                                       $chardata[$i]['type'] = 'EN';
+                               } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'AN') AND ($chardata[($i+1)]['type'] == 'AN')) {
+                                       $chardata[$i]['type'] = 'AN';
+                               }
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers.
+               $prevlevel = -1;
+               $levcount = 0;
+               for ($i=0; $i < $numchars; ++$i) {
+                       if ($chardata[$i]['type'] == 'ET') {
+                               if (($levcount > 0) AND ($chardata[($i-1)]['type'] == 'EN')) {
+                                       $chardata[$i]['type'] = 'EN';
+                               } else {
+                                       $j = $i+1;
+                                       while (($j < $numchars) AND ($chardata[$j]['level'] == $prevlevel)) {
+                                               if ($chardata[$j]['type'] == 'EN') {
+                                                       $chardata[$i]['type'] = 'EN';
+                                                       break;
+                                               } elseif ($chardata[$j]['type'] != 'ET') {
+                                                       break;
+                                               }
+                                               ++$j;
+                                       }
+                               }
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               // W6. Otherwise, separators and terminators change to Other Neutral.
+               $prevlevel = -1;
+               $levcount = 0;
+               for ($i=0; $i < $numchars; ++$i) {
+                       if (($chardata[$i]['type'] == 'ET') OR ($chardata[$i]['type'] == 'ES') OR ($chardata[$i]['type'] == 'CS')) {
+                               $chardata[$i]['type'] = 'ON';
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               //W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L.
+               $prevlevel = -1;
+               $levcount = 0;
+               for ($i=0; $i < $numchars; ++$i) {
+                       if ($chardata[$i]['char'] == 'EN') {
+                               for ($j=$levcount; $j >= 0; $j--) {
+                                       if ($chardata[$j]['type'] == 'L') {
+                                               $chardata[$i]['type'] = 'L';
+                                       } elseif ($chardata[$j]['type'] == 'R') {
+                                               break;
+                                       }
+                               }
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               // N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries.
+               $prevlevel = -1;
+               $levcount = 0;
+               for ($i=0; $i < $numchars; ++$i) {
+                       if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) {
+                               if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) {
+                                       $chardata[$i]['type'] = 'L';
+                               } elseif (($chardata[$i]['type'] == 'N') AND
+                                (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND
+                                (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) {
+                                       $chardata[$i]['type'] = 'R';
+                               } elseif ($chardata[$i]['type'] == 'N') {
+                                       // N2. Any remaining neutrals take the embedding direction
+                                       $chardata[$i]['type'] = $chardata[$i]['sor'];
+                               }
+                       } elseif (($levcount == 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) {
+                               // first char
+                               if (($chardata[$i]['type'] == 'N') AND ($chardata[$i]['sor'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) {
+                                       $chardata[$i]['type'] = 'L';
+                               } elseif (($chardata[$i]['type'] == 'N') AND
+                                (($chardata[$i]['sor'] == 'R') OR ($chardata[$i]['sor'] == 'EN') OR ($chardata[$i]['sor'] == 'AN')) AND
+                                (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) {
+                                       $chardata[$i]['type'] = 'R';
+                               } elseif ($chardata[$i]['type'] == 'N') {
+                                       // N2. Any remaining neutrals take the embedding direction
+                                       $chardata[$i]['type'] = $chardata[$i]['sor'];
+                               }
+                       } elseif (($levcount > 0) AND ((($i+1) == $numchars) OR (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] != $prevlevel))) {
+                               //last char
+                               if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[$i]['eor'] == 'L')) {
+                                       $chardata[$i]['type'] = 'L';
+                               } elseif (($chardata[$i]['type'] == 'N') AND
+                                (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND
+                                (($chardata[$i]['eor'] == 'R') OR ($chardata[$i]['eor'] == 'EN') OR ($chardata[$i]['eor'] == 'AN'))) {
+                                       $chardata[$i]['type'] = 'R';
+                               } elseif ($chardata[$i]['type'] == 'N') {
+                                       // N2. Any remaining neutrals take the embedding direction
+                                       $chardata[$i]['type'] = $chardata[$i]['sor'];
+                               }
+                       } elseif ($chardata[$i]['type'] == 'N') {
+                               // N2. Any remaining neutrals take the embedding direction
+                               $chardata[$i]['type'] = $chardata[$i]['sor'];
+                       }
+                       if ($chardata[$i]['level'] != $prevlevel) {
+                               $levcount = 0;
+                       } else {
+                               ++$levcount;
+                       }
+                       $prevlevel = $chardata[$i]['level'];
+               }
+
+               // I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels.
+               // I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level.
+               for ($i=0; $i < $numchars; ++$i) {
+                       $odd = $chardata[$i]['level'] % 2;
+                       if ($odd) {
+                               if (($chardata[$i]['type'] == 'L') OR ($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) {
+                                       $chardata[$i]['level'] += 1;
+                               }
+                       } else {
+                               if ($chardata[$i]['type'] == 'R') {
+                                       $chardata[$i]['level'] += 1;
+                               } elseif (($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) {
+                                       $chardata[$i]['level'] += 2;
+                               }
+                       }
+                       $maxlevel = max($chardata[$i]['level'],$maxlevel);
+               }
+
+               // L1. On each line, reset the embedding level of the following characters to the paragraph embedding level:
+               //      1. Segment separators,
+               //      2. Paragraph separators,
+               //      3. Any sequence of whitespace characters preceding a segment separator or paragraph separator, and
+               //      4. Any sequence of white space characters at the end of the line.
+               for ($i=0; $i < $numchars; ++$i) {
+                       if (($chardata[$i]['type'] == 'B') OR ($chardata[$i]['type'] == 'S')) {
+                               $chardata[$i]['level'] = $pel;
+                       } elseif ($chardata[$i]['type'] == 'WS') {
+                               $j = $i+1;
+                               while ($j < $numchars) {
+                                       if ((($chardata[$j]['type'] == 'B') OR ($chardata[$j]['type'] == 'S')) OR
+                                               (($j == ($numchars-1)) AND ($chardata[$j]['type'] == 'WS'))) {
+                                               $chardata[$i]['level'] = $pel;
+                                               break;
+                                       } elseif ($chardata[$j]['type'] != 'WS') {
+                                               break;
+                                       }
+                                       ++$j;
+                               }
+                       }
+               }
+
+               // Arabic Shaping
+               // Cursively connected scripts, such as Arabic or Syriac, require the selection of positional character shapes that depend on adjacent characters. Shaping is logically applied after the Bidirectional Algorithm is used and is limited to characters within the same directional run.
+               if ($arabic) {
+                       $endedletter = array(1569,1570,1571,1572,1573,1575,1577,1583,1584,1585,1586,1608,1688);
+                       $alfletter = array(1570,1571,1573,1575);
+                       $chardata2 = $chardata;
+                       $laaletter = false;
+                       $charAL = array();
+                       $x = 0;
+                       for ($i=0; $i < $numchars; ++$i) {
+                               if ((TCPDF_FONT_DATA::$uni_type[$chardata[$i]['char']] == 'AL') OR ($chardata[$i]['char'] == 32) OR ($chardata[$i]['char'] == 8204)) {
+                                       $charAL[$x] = $chardata[$i];
+                                       $charAL[$x]['i'] = $i;
+                                       $chardata[$i]['x'] = $x;
+                                       ++$x;
+                               }
+                       }
+                       $numAL = $x;
+                       for ($i=0; $i < $numchars; ++$i) {
+                               $thischar = $chardata[$i];
+                               if ($i > 0) {
+                                       $prevchar = $chardata[($i-1)];
+                               } else {
+                                       $prevchar = false;
+                               }
+                               if (($i+1) < $numchars) {
+                                       $nextchar = $chardata[($i+1)];
+                               } else {
+                                       $nextchar = false;
+                               }
+                               if (TCPDF_FONT_DATA::$uni_type[$thischar['char']] == 'AL') {
+                                       $x = $thischar['x'];
+                                       if ($x > 0) {
+                                               $prevchar = $charAL[($x-1)];
+                                       } else {
+                                               $prevchar = false;
+                                       }
+                                       if (($x+1) < $numAL) {
+                                               $nextchar = $charAL[($x+1)];
+                                       } else {
+                                               $nextchar = false;
+                                       }
+                                       // if laa letter
+                                       if (($prevchar !== false) AND ($prevchar['char'] == 1604) AND (in_array($thischar['char'], $alfletter))) {
+                                               $arabicarr = TCPDF_FONT_DATA::$uni_laa_array;
+                                               $laaletter = true;
+                                               if ($x > 1) {
+                                                       $prevchar = $charAL[($x-2)];
+                                               } else {
+                                                       $prevchar = false;
+                                               }
+                                       } else {
+                                               $arabicarr = TCPDF_FONT_DATA::$uni_arabicsubst;
+                                               $laaletter = false;
+                                       }
+                                       if (($prevchar !== false) AND ($nextchar !== false) AND
+                                               ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND
+                                               ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND
+                                               ($prevchar['type'] == $thischar['type']) AND
+                                               ($nextchar['type'] == $thischar['type']) AND
+                                               ($nextchar['char'] != 1567)) {
+                                               if (in_array($prevchar['char'], $endedletter)) {
+                                                       if (isset($arabicarr[$thischar['char']][2])) {
+                                                               // initial
+                                                               $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2];
+                                                       }
+                                               } else {
+                                                       if (isset($arabicarr[$thischar['char']][3])) {
+                                                               // medial
+                                                               $chardata2[$i]['char'] = $arabicarr[$thischar['char']][3];
+                                                       }
+                                               }
+                                       } elseif (($nextchar !== false) AND
+                                               ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND
+                                               ($nextchar['type'] == $thischar['type']) AND
+                                               ($nextchar['char'] != 1567)) {
+                                               if (isset($arabicarr[$chardata[$i]['char']][2])) {
+                                                       // initial
+                                                       $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2];
+                                               }
+                                       } elseif ((($prevchar !== false) AND
+                                               ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND
+                                               ($prevchar['type'] == $thischar['type'])) OR
+                                               (($nextchar !== false) AND ($nextchar['char'] == 1567))) {
+                                               // final
+                                               if (($i > 1) AND ($thischar['char'] == 1607) AND
+                                                       ($chardata[$i-1]['char'] == 1604) AND
+                                                       ($chardata[$i-2]['char'] == 1604)) {
+                                                       //Allah Word
+                                                       // mark characters to delete with false
+                                                       $chardata2[$i-2]['char'] = false;
+                                                       $chardata2[$i-1]['char'] = false;
+                                                       $chardata2[$i]['char'] = 65010;
+                                               } else {
+                                                       if (($prevchar !== false) AND in_array($prevchar['char'], $endedletter)) {
+                                                               if (isset($arabicarr[$thischar['char']][0])) {
+                                                                       // isolated
+                                                                       $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0];
+                                                               }
+                                                       } else {
+                                                               if (isset($arabicarr[$thischar['char']][1])) {
+                                                                       // final
+                                                                       $chardata2[$i]['char'] = $arabicarr[$thischar['char']][1];
+                                                               }
+                                                       }
+                                               }
+                                       } elseif (isset($arabicarr[$thischar['char']][0])) {
+                                               // isolated
+                                               $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0];
+                                       }
+                                       // if laa letter
+                                       if ($laaletter) {
+                                               // mark characters to delete with false
+                                               $chardata2[($charAL[($x-1)]['i'])]['char'] = false;
+                                       }
+                               } // end if AL (Arabic Letter)
+                       } // end for each char
+                       /*
+                        * Combining characters that can occur with Arabic Shadda (0651 HEX, 1617 DEC) are replaced.
+                        * Putting the combining mark and shadda in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner.
+                        */
+                       for ($i = 0; $i < ($numchars-1); ++$i) {
+                               if (($chardata2[$i]['char'] == 1617) AND (isset(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]))) {
+                                       // check if the subtitution font is defined on current font
+                                       if (isset($currentfont['cw'][(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])])])) {
+                                               $chardata2[$i]['char'] = false;
+                                               $chardata2[$i+1]['char'] = TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])];
+                                       }
+                               }
+                       }
+                       // remove marked characters
+                       foreach ($chardata2 as $key => $value) {
+                               if ($value['char'] === false) {
+                                       unset($chardata2[$key]);
+                               }
+                       }
+                       $chardata = array_values($chardata2);
+                       $numchars = count($chardata);
+                       unset($chardata2);
+                       unset($arabicarr);
+                       unset($laaletter);
+                       unset($charAL);
+               }
+
+               // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher.
+               for ($j=$maxlevel; $j > 0; $j--) {
+                       $ordarray = Array();
+                       $revarr = Array();
+                       $onlevel = false;
+                       for ($i=0; $i < $numchars; ++$i) {
+                               if ($chardata[$i]['level'] >= $j) {
+                                       $onlevel = true;
+                                       if (isset(TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']])) {
+                                               // L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true.
+                                               $chardata[$i]['char'] = TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']];
+                                       }
+                                       $revarr[] = $chardata[$i];
+                               } else {
+                                       if ($onlevel) {
+                                               $revarr = array_reverse($revarr);
+                                               $ordarray = array_merge($ordarray, $revarr);
+                                               $revarr = Array();
+                                               $onlevel = false;
+                                       }
+                                       $ordarray[] = $chardata[$i];
+                               }
+                       }
+                       if ($onlevel) {
+                               $revarr = array_reverse($revarr);
+                               $ordarray = array_merge($ordarray, $revarr);
+                       }
+                       $chardata = $ordarray;
+               }
+               $ordarray = array();
+               foreach ($chardata as $cd) {
+                       $ordarray[] = $cd['char'];
+                       // store char values for subsetting
+                       $currentfont['subsetchars'][$cd['char']] = true;
+               }
+               return $ordarray;
+       }
+
+       /**
+        * Get a reference font size.
+        * @param $size (string) String containing font size value.
+        * @param $refsize (float) Reference font size in points.
+        * @return float value in points
+        * @public static
+        */
+       public static function getFontRefSize($size, $refsize=12) {
+               switch ($size) {
+                       case 'xx-small': {
+                               $size = ($refsize - 4);
+                               break;
+                       }
+                       case 'x-small': {
+                               $size = ($refsize - 3);
+                               break;
+                       }
+                       case 'small': {
+                               $size = ($refsize - 2);
+                               break;
+                       }
+                       case 'medium': {
+                               $size = $refsize;
+                               break;
+                       }
+                       case 'large': {
+                               $size = ($refsize + 2);
+                               break;
+                       }
+                       case 'x-large': {
+                               $size = ($refsize + 4);
+                               break;
+                       }
+                       case 'xx-large': {
+                               $size = ($refsize + 6);
+                               break;
+                       }
+                       case 'smaller': {
+                               $size = ($refsize - 3);
+                               break;
+                       }
+                       case 'larger': {
+                               $size = ($refsize + 3);
+                               break;
+                       }
+               }
+               return $size;
+       }
+
+} // END OF TCPDF_FONTS CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php
new file mode 100644 (file)
index 0000000..150832e
--- /dev/null
@@ -0,0 +1,355 @@
+<?php
+//============================================================+
+// File name   : tcpdf_images.php
+// Version     : 1.0.003
+// Begin       : 2002-08-03
+// Last Update : 2014-04-03
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description :
+//   Static image methods used by the TCPDF class.
+//
+//============================================================+
+
+/**
+ * @file
+ * This is a PHP class that contains static image methods for the TCPDF class.<br>
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.003
+ */
+
+/**
+ * @class TCPDF_IMAGES
+ * Static image methods used by the TCPDF class.
+ * @package com.tecnick.tcpdf
+ * @brief PHP class for generating PDF documents without requiring external extensions.
+ * @version 1.0.003
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_IMAGES {
+
+       /**
+        * Array of hinheritable SVG properties.
+        * @since 5.0.000 (2010-05-02)
+        * @public static
+        */
+       public static $svginheritprop = array('clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'visibility', 'word-spacing', 'writing-mode');
+
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       /**
+        * Return the image type given the file name or array returned by getimagesize() function.
+        * @param $imgfile (string) image file name
+        * @param $iminfo (array) array of image information returned by getimagesize() function.
+        * @return string image type
+        * @since 4.8.017 (2009-11-27)
+        * @public static
+        */
+       public static function getImageFileType($imgfile, $iminfo=array()) {
+               $type = '';
+               if (isset($iminfo['mime']) AND !empty($iminfo['mime'])) {
+                       $mime = explode('/', $iminfo['mime']);
+                       if ((count($mime) > 1) AND ($mime[0] == 'image') AND (!empty($mime[1]))) {
+                               $type = strtolower(trim($mime[1]));
+                       }
+               }
+               if (empty($type)) {
+                       $fileinfo = pathinfo($imgfile);
+                       if (isset($fileinfo['extension']) AND (!TCPDF_STATIC::empty_string($fileinfo['extension']))) {
+                               $type = strtolower(trim($fileinfo['extension']));
+                       }
+               }
+               if ($type == 'jpg') {
+                       $type = 'jpeg';
+               }
+               return $type;
+       }
+
+       /**
+        * Set the transparency for the given GD image.
+        * @param $new_image (image) GD image object
+        * @param $image (image) GD image object.
+        * return GD image object.
+        * @since 4.9.016 (2010-04-20)
+        * @public static
+        */
+       public static function setGDImageTransparency($new_image, $image) {
+               // transparency index
+               $tid = imagecolortransparent($image);
+               // default transparency color
+               $tcol = array('red' => 255, 'green' => 255, 'blue' => 255);
+               if ($tid >= 0) {
+                       // get the colors for the transparency index
+                       $tcol = imagecolorsforindex($image, $tid);
+               }
+               $tid = imagecolorallocate($new_image, $tcol['red'], $tcol['green'], $tcol['blue']);
+               imagefill($new_image, 0, 0, $tid);
+               imagecolortransparent($new_image, $tid);
+               return $new_image;
+       }
+
+       /**
+        * Convert the loaded image to a PNG and then return a structure for the PDF creator.
+        * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant.
+        * @param $image (image) Image object.
+        * return image PNG image object.
+        * @since 4.9.016 (2010-04-20)
+        * @public static
+        */
+       public static function _toPNG($image) {
+               // set temporary image file name
+               $tempname = TCPDF_STATIC::getObjFilename('img');
+               // turn off interlaced mode
+               imageinterlace($image, 0);
+               // create temporary PNG image
+               imagepng($image, $tempname);
+               // remove image from memory
+               imagedestroy($image);
+               // get PNG image data
+               $retvars = self::_parsepng($tempname);
+               // tidy up by removing temporary image
+               unlink($tempname);
+               return $retvars;
+       }
+
+       /**
+        * Convert the loaded image to a JPEG and then return a structure for the PDF creator.
+        * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant.
+        * @param $image (image) Image object.
+        * @param $quality (int) JPEG quality.
+        * return image JPEG image object.
+        * @public static
+        */
+       public static function _toJPEG($image, $quality) {
+               $tempname = TCPDF_STATIC::getObjFilename('img');
+               imagejpeg($image, $tempname, $quality);
+               imagedestroy($image);
+               $retvars = self::_parsejpeg($tempname);
+               // tidy up by removing temporary image
+               unlink($tempname);
+               return $retvars;
+       }
+
+       /**
+        * Extract info from a JPEG file without using the GD library.
+        * @param $file (string) image file to parse
+        * @return array structure containing the image data
+        * @public static
+        */
+       public static function _parsejpeg($file) {
+               $a = getimagesize($file);
+               if (empty($a)) {
+                       //Missing or incorrect image file
+                       return false;
+               }
+               if ($a[2] != 2) {
+                       // Not a JPEG file
+                       return false;
+               }
+               // bits per pixel
+               $bpc = isset($a['bits']) ? intval($a['bits']) : 8;
+               // number of image channels
+               if (!isset($a['channels'])) {
+                       $channels = 3;
+               } else {
+                       $channels = intval($a['channels']);
+               }
+               // default colour space
+               switch ($channels) {
+                       case 1: {
+                               $colspace = 'DeviceGray';
+                               break;
+                       }
+                       case 3: {
+                               $colspace = 'DeviceRGB';
+                               break;
+                       }
+                       case 4: {
+                               $colspace = 'DeviceCMYK';
+                               break;
+                       }
+                       default: {
+                               $channels = 3;
+                               $colspace = 'DeviceRGB';
+                               break;
+                       }
+               }
+               // get file content
+               $data = file_get_contents($file);
+               // check for embedded ICC profile
+               $icc = array();
+               $offset = 0;
+               while (($pos = strpos($data, "ICC_PROFILE\0", $offset)) !== false) {
+                       // get ICC sequence length
+                       $length = (TCPDF_STATIC::_getUSHORT($data, ($pos - 2)) - 16);
+                       // marker sequence number
+                       $msn = max(1, ord($data[($pos + 12)]));
+                       // number of markers (total of APP2 used)
+                       $nom = max(1, ord($data[($pos + 13)]));
+                       // get sequence segment
+                       $icc[($msn - 1)] = substr($data, ($pos + 14), $length);
+                       // move forward to next sequence
+                       $offset = ($pos + 14 + $length);
+               }
+               // order and compact ICC segments
+               if (count($icc) > 0) {
+                       ksort($icc);
+                       $icc = implode('', $icc);
+                       if ((ord($icc[36]) != 0x61) OR (ord($icc[37]) != 0x63) OR (ord($icc[38]) != 0x73) OR (ord($icc[39]) != 0x70)) {
+                               // invalid ICC profile
+                               $icc = false;
+                       }
+               } else {
+                       $icc = false;
+               }
+               return array('w' => $a[0], 'h' => $a[1], 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'DCTDecode', 'data' => $data);
+       }
+
+       /**
+        * Extract info from a PNG file without using the GD library.
+        * @param $file (string) image file to parse
+        * @return array structure containing the image data
+        * @public static
+        */
+       public static function _parsepng($file) {
+               $f = @fopen($file, 'rb');
+               if ($f === false) {
+                       // Can't open image file
+                       return false;
+               }
+               //Check signature
+               if (fread($f, 8) != chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) {
+                       // Not a PNG file
+                       return false;
+               }
+               //Read header chunk
+               fread($f, 4);
+               if (fread($f, 4) != 'IHDR') {
+                       //Incorrect PNG file
+                       return false;
+               }
+               $w = TCPDF_STATIC::_freadint($f);
+               $h = TCPDF_STATIC::_freadint($f);
+               $bpc = ord(fread($f, 1));
+               $ct = ord(fread($f, 1));
+               if ($ct == 0) {
+                       $colspace = 'DeviceGray';
+               } elseif ($ct == 2) {
+                       $colspace = 'DeviceRGB';
+               } elseif ($ct == 3) {
+                       $colspace = 'Indexed';
+               } else {
+                       // alpha channel
+                       fclose($f);
+                       return 'pngalpha';
+               }
+               if (ord(fread($f, 1)) != 0) {
+                       // Unknown compression method
+                       fclose($f);
+                       return false;
+               }
+               if (ord(fread($f, 1)) != 0) {
+                       // Unknown filter method
+                       fclose($f);
+                       return false;
+               }
+               if (ord(fread($f, 1)) != 0) {
+                       // Interlacing not supported
+                       fclose($f);
+                       return false;
+               }
+               fread($f, 4);
+               $channels = ($ct == 2 ? 3 : 1);
+               $parms = '/DecodeParms << /Predictor 15 /Colors '.$channels.' /BitsPerComponent '.$bpc.' /Columns '.$w.' >>';
+               //Scan chunks looking for palette, transparency and image data
+               $pal = '';
+               $trns = '';
+               $data = '';
+               $icc = false;
+               do {
+                       $n = TCPDF_STATIC::_freadint($f);
+                       $type = fread($f, 4);
+                       if ($type == 'PLTE') {
+                               // read palette
+                               $pal = TCPDF_STATIC::rfread($f, $n);
+                               fread($f, 4);
+                       } elseif ($type == 'tRNS') {
+                               // read transparency info
+                               $t = TCPDF_STATIC::rfread($f, $n);
+                               if ($ct == 0) { // DeviceGray
+                                       $trns = array(ord($t[1]));
+                               } elseif ($ct == 2) { // DeviceRGB
+                                       $trns = array(ord($t[1]), ord($t[3]), ord($t[5]));
+                               } else { // Indexed
+                                       if ($n > 0) {
+                                               $trns = array();
+                                               for ($i = 0; $i < $n; ++ $i) {
+                                                       $trns[] = ord($t{$i});
+                                               }
+                                       }
+                               }
+                               fread($f, 4);
+                       } elseif ($type == 'IDAT') {
+                               // read image data block
+                               $data .= TCPDF_STATIC::rfread($f, $n);
+                               fread($f, 4);
+                       } elseif ($type == 'iCCP') {
+                               // skip profile name
+                               $len = 0;
+                               while ((ord(fread($f, 1)) != 0) AND ($len < 80)) {
+                                       ++$len;
+                               }
+                               // get compression method
+                               if (ord(fread($f, 1)) != 0) {
+                                       // Unknown filter method
+                                       fclose($f);
+                                       return false;
+                               }
+                               // read ICC Color Profile
+                               $icc = TCPDF_STATIC::rfread($f, ($n - $len - 2));
+                               // decompress profile
+                               $icc = gzuncompress($icc);
+                               fread($f, 4);
+                       } elseif ($type == 'IEND') {
+                               break;
+                       } else {
+                               TCPDF_STATIC::rfread($f, $n + 4);
+                       }
+               } while ($n);
+               if (($colspace == 'Indexed') AND (empty($pal))) {
+                       // Missing palette
+                       fclose($f);
+                       return false;
+               }
+               fclose($f);
+               return array('w' => $w, 'h' => $h, 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'FlateDecode', 'parms' => $parms, 'pal' => $pal, 'trns' => $trns, 'data' => $data);
+       }
+
+} // END OF TCPDF_IMAGES CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php
new file mode 100644 (file)
index 0000000..e657446
--- /dev/null
@@ -0,0 +1,2851 @@
+<?php
+//============================================================+
+// File name   : tcpdf_static.php
+// Version     : 1.0.004
+// Begin       : 2002-08-03
+// Last Update : 2014-09-02
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description :
+//   Static methods used by the TCPDF class.
+//
+//============================================================+
+
+/**
+ * @file
+ * This is a PHP class that contains static methods for the TCPDF class.<br>
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.004
+ */
+
+/**
+ * @class TCPDF_STATIC
+ * Static methods used by the TCPDF class.
+ * @package com.tecnick.tcpdf
+ * @brief PHP class for generating PDF documents without requiring external extensions.
+ * @version 1.0.004
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_STATIC {
+
+       /**
+        * Current TCPDF version.
+        * @private static
+        */
+       private static $tcpdf_version = '6.0.093';
+
+       /**
+        * String alias for total number of pages.
+        * @public static
+        */
+       public static $alias_tot_pages = '{:ptp:}';
+
+       /**
+        * String alias for page number.
+        * @public static
+        */
+       public static $alias_num_page = '{:pnp:}';
+
+       /**
+        * String alias for total number of pages in a single group.
+        * @public static
+        */
+       public static $alias_group_tot_pages = '{:ptg:}';
+
+       /**
+        * String alias for group page number.
+        * @public static
+        */
+       public static $alias_group_num_page = '{:png:}';
+
+       /**
+        * String alias for right shift compensation used to correctly align page numbers on the right.
+        * @public static
+        */
+       public static $alias_right_shift = '{rsc:';
+
+       /**
+        * Encryption padding string.
+        * @public static
+        */
+       public static $enc_padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
+
+       /**
+        * ByteRange placemark used during digital signature process.
+        * @since 4.6.028 (2009-08-25)
+        * @public static
+        */
+       public static $byterange_string = '/ByteRange[0 ********** ********** **********]';
+
+       /**
+        * Array page boxes names
+        * @public static
+        */
+       public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox');
+
+       // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+       /**
+        * Return the current TCPDF version.
+        * @return TCPDF version string
+        * @since 5.9.012 (2010-11-10)
+        * @public static
+        */
+       public static function getTCPDFVersion() {
+               return self::$tcpdf_version;
+       }
+
+       /**
+        * Return the current TCPDF producer.
+        * @return TCPDF producer string
+        * @since 6.0.000 (2013-03-16)
+        * @public static
+        */
+       public static function getTCPDFProducer() {
+               return "\x54\x43\x50\x44\x46\x20".self::getTCPDFVersion()."\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29";
+       }
+
+       /**
+        * Sets the current active configuration setting of magic_quotes_runtime (if the set_magic_quotes_runtime function exist)
+        * @param $mqr (boolean) FALSE for off, TRUE for on.
+        * @since 4.6.025 (2009-08-17)
+        * @public static
+        */
+       public static function set_mqr($mqr) {
+               if (!defined('PHP_VERSION_ID')) {
+                       $version = PHP_VERSION;
+                       define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4]));
+               }
+               if (PHP_VERSION_ID < 50300) {
+                       @set_magic_quotes_runtime($mqr);
+               }
+       }
+
+       /**
+        * Gets the current active configuration setting of magic_quotes_runtime (if the get_magic_quotes_runtime function exist)
+        * @return Returns 0 if magic quotes runtime is off or get_magic_quotes_runtime doesn't exist, 1 otherwise.
+        * @since 4.6.025 (2009-08-17)
+        * @public static
+        */
+       public static function get_mqr() {
+               if (!defined('PHP_VERSION_ID')) {
+                       $version = PHP_VERSION;
+                       define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4]));
+               }
+               if (PHP_VERSION_ID < 50300) {
+                       return @get_magic_quotes_runtime();
+               }
+               return 0;
+       }
+
+       /**
+        * Get page dimensions from format name.
+        * @param $format (mixed) The format name. It can be: <ul>
+        * <li><b>ISO 216 A Series + 2 SIS 014711 extensions</b></li>
+        * <li>A0 (841x1189 mm ; 33.11x46.81 in)</li>
+        * <li>A1 (594x841 mm ; 23.39x33.11 in)</li>
+        * <li>A2 (420x594 mm ; 16.54x23.39 in)</li>
+        * <li>A3 (297x420 mm ; 11.69x16.54 in)</li>
+        * <li>A4 (210x297 mm ; 8.27x11.69 in)</li>
+        * <li>A5 (148x210 mm ; 5.83x8.27 in)</li>
+        * <li>A6 (105x148 mm ; 4.13x5.83 in)</li>
+        * <li>A7 (74x105 mm ; 2.91x4.13 in)</li>
+        * <li>A8 (52x74 mm ; 2.05x2.91 in)</li>
+        * <li>A9 (37x52 mm ; 1.46x2.05 in)</li>
+        * <li>A10 (26x37 mm ; 1.02x1.46 in)</li>
+        * <li>A11 (18x26 mm ; 0.71x1.02 in)</li>
+        * <li>A12 (13x18 mm ; 0.51x0.71 in)</li>
+        * <li><b>ISO 216 B Series + 2 SIS 014711 extensions</b></li>
+        * <li>B0 (1000x1414 mm ; 39.37x55.67 in)</li>
+        * <li>B1 (707x1000 mm ; 27.83x39.37 in)</li>
+        * <li>B2 (500x707 mm ; 19.69x27.83 in)</li>
+        * <li>B3 (353x500 mm ; 13.90x19.69 in)</li>
+        * <li>B4 (250x353 mm ; 9.84x13.90 in)</li>
+        * <li>B5 (176x250 mm ; 6.93x9.84 in)</li>
+        * <li>B6 (125x176 mm ; 4.92x6.93 in)</li>
+        * <li>B7 (88x125 mm ; 3.46x4.92 in)</li>
+        * <li>B8 (62x88 mm ; 2.44x3.46 in)</li>
+        * <li>B9 (44x62 mm ; 1.73x2.44 in)</li>
+        * <li>B10 (31x44 mm ; 1.22x1.73 in)</li>
+        * <li>B11 (22x31 mm ; 0.87x1.22 in)</li>
+        * <li>B12 (15x22 mm ; 0.59x0.87 in)</li>
+        * <li><b>ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION</b></li>
+        * <li>C0 (917x1297 mm ; 36.10x51.06 in)</li>
+        * <li>C1 (648x917 mm ; 25.51x36.10 in)</li>
+        * <li>C2 (458x648 mm ; 18.03x25.51 in)</li>
+        * <li>C3 (324x458 mm ; 12.76x18.03 in)</li>
+        * <li>C4 (229x324 mm ; 9.02x12.76 in)</li>
+        * <li>C5 (162x229 mm ; 6.38x9.02 in)</li>
+        * <li>C6 (114x162 mm ; 4.49x6.38 in)</li>
+        * <li>C7 (81x114 mm ; 3.19x4.49 in)</li>
+        * <li>C8 (57x81 mm ; 2.24x3.19 in)</li>
+        * <li>C9 (40x57 mm ; 1.57x2.24 in)</li>
+        * <li>C10 (28x40 mm ; 1.10x1.57 in)</li>
+        * <li>C11 (20x28 mm ; 0.79x1.10 in)</li>
+        * <li>C12 (14x20 mm ; 0.55x0.79 in)</li>
+        * <li>C76 (81x162 mm ; 3.19x6.38 in)</li>
+        * <li>DL (110x220 mm ; 4.33x8.66 in)</li>
+        * <li><b>SIS 014711 E Series</b></li>
+        * <li>E0 (879x1241 mm ; 34.61x48.86 in)</li>
+        * <li>E1 (620x879 mm ; 24.41x34.61 in)</li>
+        * <li>E2 (440x620 mm ; 17.32x24.41 in)</li>
+        * <li>E3 (310x440 mm ; 12.20x17.32 in)</li>
+        * <li>E4 (220x310 mm ; 8.66x12.20 in)</li>
+        * <li>E5 (155x220 mm ; 6.10x8.66 in)</li>
+        * <li>E6 (110x155 mm ; 4.33x6.10 in)</li>
+        * <li>E7 (78x110 mm ; 3.07x4.33 in)</li>
+        * <li>E8 (55x78 mm ; 2.17x3.07 in)</li>
+        * <li>E9 (39x55 mm ; 1.54x2.17 in)</li>
+        * <li>E10 (27x39 mm ; 1.06x1.54 in)</li>
+        * <li>E11 (19x27 mm ; 0.75x1.06 in)</li>
+        * <li>E12 (13x19 mm ; 0.51x0.75 in)</li>
+        * <li><b>SIS 014711 G Series</b></li>
+        * <li>G0 (958x1354 mm ; 37.72x53.31 in)</li>
+        * <li>G1 (677x958 mm ; 26.65x37.72 in)</li>
+        * <li>G2 (479x677 mm ; 18.86x26.65 in)</li>
+        * <li>G3 (338x479 mm ; 13.31x18.86 in)</li>
+        * <li>G4 (239x338 mm ; 9.41x13.31 in)</li>
+        * <li>G5 (169x239 mm ; 6.65x9.41 in)</li>
+        * <li>G6 (119x169 mm ; 4.69x6.65 in)</li>
+        * <li>G7 (84x119 mm ; 3.31x4.69 in)</li>
+        * <li>G8 (59x84 mm ; 2.32x3.31 in)</li>
+        * <li>G9 (42x59 mm ; 1.65x2.32 in)</li>
+        * <li>G10 (29x42 mm ; 1.14x1.65 in)</li>
+        * <li>G11 (21x29 mm ; 0.83x1.14 in)</li>
+        * <li>G12 (14x21 mm ; 0.55x0.83 in)</li>
+        * <li><b>ISO Press</b></li>
+        * <li>RA0 (860x1220 mm ; 33.86x48.03 in)</li>
+        * <li>RA1 (610x860 mm ; 24.02x33.86 in)</li>
+        * <li>RA2 (430x610 mm ; 16.93x24.02 in)</li>
+        * <li>RA3 (305x430 mm ; 12.01x16.93 in)</li>
+        * <li>RA4 (215x305 mm ; 8.46x12.01 in)</li>
+        * <li>SRA0 (900x1280 mm ; 35.43x50.39 in)</li>
+        * <li>SRA1 (640x900 mm ; 25.20x35.43 in)</li>
+        * <li>SRA2 (450x640 mm ; 17.72x25.20 in)</li>
+        * <li>SRA3 (320x450 mm ; 12.60x17.72 in)</li>
+        * <li>SRA4 (225x320 mm ; 8.86x12.60 in)</li>
+        * <li><b>German DIN 476</b></li>
+        * <li>4A0 (1682x2378 mm ; 66.22x93.62 in)</li>
+        * <li>2A0 (1189x1682 mm ; 46.81x66.22 in)</li>
+        * <li><b>Variations on the ISO Standard</b></li>
+        * <li>A2_EXTRA (445x619 mm ; 17.52x24.37 in)</li>
+        * <li>A3+ (329x483 mm ; 12.95x19.02 in)</li>
+        * <li>A3_EXTRA (322x445 mm ; 12.68x17.52 in)</li>
+        * <li>A3_SUPER (305x508 mm ; 12.01x20.00 in)</li>
+        * <li>SUPER_A3 (305x487 mm ; 12.01x19.17 in)</li>
+        * <li>A4_EXTRA (235x322 mm ; 9.25x12.68 in)</li>
+        * <li>A4_SUPER (229x322 mm ; 9.02x12.68 in)</li>
+        * <li>SUPER_A4 (227x356 mm ; 8.94x14.02 in)</li>
+        * <li>A4_LONG (210x348 mm ; 8.27x13.70 in)</li>
+        * <li>F4 (210x330 mm ; 8.27x12.99 in)</li>
+        * <li>SO_B5_EXTRA (202x276 mm ; 7.95x10.87 in)</li>
+        * <li>A5_EXTRA (173x235 mm ; 6.81x9.25 in)</li>
+        * <li><b>ANSI Series</b></li>
+        * <li>ANSI_E (864x1118 mm ; 34.00x44.00 in)</li>
+        * <li>ANSI_D (559x864 mm ; 22.00x34.00 in)</li>
+        * <li>ANSI_C (432x559 mm ; 17.00x22.00 in)</li>
+        * <li>ANSI_B (279x432 mm ; 11.00x17.00 in)</li>
+        * <li>ANSI_A (216x279 mm ; 8.50x11.00 in)</li>
+        * <li><b>Traditional 'Loose' North American Paper Sizes</b></li>
+        * <li>LEDGER, USLEDGER (432x279 mm ; 17.00x11.00 in)</li>
+        * <li>TABLOID, USTABLOID, BIBLE, ORGANIZERK (279x432 mm ; 11.00x17.00 in)</li>
+        * <li>LETTER, USLETTER, ORGANIZERM (216x279 mm ; 8.50x11.00 in)</li>
+        * <li>LEGAL, USLEGAL (216x356 mm ; 8.50x14.00 in)</li>
+        * <li>GLETTER, GOVERNMENTLETTER (203x267 mm ; 8.00x10.50 in)</li>
+        * <li>JLEGAL, JUNIORLEGAL (203x127 mm ; 8.00x5.00 in)</li>
+        * <li><b>Other North American Paper Sizes</b></li>
+        * <li>QUADDEMY (889x1143 mm ; 35.00x45.00 in)</li>
+        * <li>SUPER_B (330x483 mm ; 13.00x19.00 in)</li>
+        * <li>QUARTO (229x279 mm ; 9.00x11.00 in)</li>
+        * <li>FOLIO, GOVERNMENTLEGAL (216x330 mm ; 8.50x13.00 in)</li>
+        * <li>EXECUTIVE, MONARCH (184x267 mm ; 7.25x10.50 in)</li>
+        * <li>MEMO, STATEMENT, ORGANIZERL (140x216 mm ; 5.50x8.50 in)</li>
+        * <li>FOOLSCAP (210x330 mm ; 8.27x13.00 in)</li>
+        * <li>COMPACT (108x171 mm ; 4.25x6.75 in)</li>
+        * <li>ORGANIZERJ (70x127 mm ; 2.75x5.00 in)</li>
+        * <li><b>Canadian standard CAN 2-9.60M</b></li>
+        * <li>P1 (560x860 mm ; 22.05x33.86 in)</li>
+        * <li>P2 (430x560 mm ; 16.93x22.05 in)</li>
+        * <li>P3 (280x430 mm ; 11.02x16.93 in)</li>
+        * <li>P4 (215x280 mm ; 8.46x11.02 in)</li>
+        * <li>P5 (140x215 mm ; 5.51x8.46 in)</li>
+        * <li>P6 (107x140 mm ; 4.21x5.51 in)</li>
+        * <li><b>North American Architectural Sizes</b></li>
+        * <li>ARCH_E (914x1219 mm ; 36.00x48.00 in)</li>
+        * <li>ARCH_E1 (762x1067 mm ; 30.00x42.00 in)</li>
+        * <li>ARCH_D (610x914 mm ; 24.00x36.00 in)</li>
+        * <li>ARCH_C, BROADSHEET (457x610 mm ; 18.00x24.00 in)</li>
+        * <li>ARCH_B (305x457 mm ; 12.00x18.00 in)</li>
+        * <li>ARCH_A (229x305 mm ; 9.00x12.00 in)</li>
+        * <li><b>Announcement Envelopes</b></li>
+        * <li>ANNENV_A2 (111x146 mm ; 4.37x5.75 in)</li>
+        * <li>ANNENV_A6 (121x165 mm ; 4.75x6.50 in)</li>
+        * <li>ANNENV_A7 (133x184 mm ; 5.25x7.25 in)</li>
+        * <li>ANNENV_A8 (140x206 mm ; 5.50x8.12 in)</li>
+        * <li>ANNENV_A10 (159x244 mm ; 6.25x9.62 in)</li>
+        * <li>ANNENV_SLIM (98x225 mm ; 3.87x8.87 in)</li>
+        * <li><b>Commercial Envelopes</b></li>
+        * <li>COMMENV_N6_1/4 (89x152 mm ; 3.50x6.00 in)</li>
+        * <li>COMMENV_N6_3/4 (92x165 mm ; 3.62x6.50 in)</li>
+        * <li>COMMENV_N8 (98x191 mm ; 3.87x7.50 in)</li>
+        * <li>COMMENV_N9 (98x225 mm ; 3.87x8.87 in)</li>
+        * <li>COMMENV_N10 (105x241 mm ; 4.12x9.50 in)</li>
+        * <li>COMMENV_N11 (114x263 mm ; 4.50x10.37 in)</li>
+        * <li>COMMENV_N12 (121x279 mm ; 4.75x11.00 in)</li>
+        * <li>COMMENV_N14 (127x292 mm ; 5.00x11.50 in)</li>
+        * <li><b>Catalogue Envelopes</b></li>
+        * <li>CATENV_N1 (152x229 mm ; 6.00x9.00 in)</li>
+        * <li>CATENV_N1_3/4 (165x241 mm ; 6.50x9.50 in)</li>
+        * <li>CATENV_N2 (165x254 mm ; 6.50x10.00 in)</li>
+        * <li>CATENV_N3 (178x254 mm ; 7.00x10.00 in)</li>
+        * <li>CATENV_N6 (191x267 mm ; 7.50x10.50 in)</li>
+        * <li>CATENV_N7 (203x279 mm ; 8.00x11.00 in)</li>
+        * <li>CATENV_N8 (210x286 mm ; 8.25x11.25 in)</li>
+        * <li>CATENV_N9_1/2 (216x267 mm ; 8.50x10.50 in)</li>
+        * <li>CATENV_N9_3/4 (222x286 mm ; 8.75x11.25 in)</li>
+        * <li>CATENV_N10_1/2 (229x305 mm ; 9.00x12.00 in)</li>
+        * <li>CATENV_N12_1/2 (241x318 mm ; 9.50x12.50 in)</li>
+        * <li>CATENV_N13_1/2 (254x330 mm ; 10.00x13.00 in)</li>
+        * <li>CATENV_N14_1/4 (286x311 mm ; 11.25x12.25 in)</li>
+        * <li>CATENV_N14_1/2 (292x368 mm ; 11.50x14.50 in)</li>
+        * <li><b>Japanese (JIS P 0138-61) Standard B-Series</b></li>
+        * <li>JIS_B0 (1030x1456 mm ; 40.55x57.32 in)</li>
+        * <li>JIS_B1 (728x1030 mm ; 28.66x40.55 in)</li>
+        * <li>JIS_B2 (515x728 mm ; 20.28x28.66 in)</li>
+        * <li>JIS_B3 (364x515 mm ; 14.33x20.28 in)</li>
+        * <li>JIS_B4 (257x364 mm ; 10.12x14.33 in)</li>
+        * <li>JIS_B5 (182x257 mm ; 7.17x10.12 in)</li>
+        * <li>JIS_B6 (128x182 mm ; 5.04x7.17 in)</li>
+        * <li>JIS_B7 (91x128 mm ; 3.58x5.04 in)</li>
+        * <li>JIS_B8 (64x91 mm ; 2.52x3.58 in)</li>
+        * <li>JIS_B9 (45x64 mm ; 1.77x2.52 in)</li>
+        * <li>JIS_B10 (32x45 mm ; 1.26x1.77 in)</li>
+        * <li>JIS_B11 (22x32 mm ; 0.87x1.26 in)</li>
+        * <li>JIS_B12 (16x22 mm ; 0.63x0.87 in)</li>
+        * <li><b>PA Series</b></li>
+        * <li>PA0 (840x1120 mm ; 33.07x44.09 in)</li>
+        * <li>PA1 (560x840 mm ; 22.05x33.07 in)</li>
+        * <li>PA2 (420x560 mm ; 16.54x22.05 in)</li>
+        * <li>PA3 (280x420 mm ; 11.02x16.54 in)</li>
+        * <li>PA4 (210x280 mm ; 8.27x11.02 in)</li>
+        * <li>PA5 (140x210 mm ; 5.51x8.27 in)</li>
+        * <li>PA6 (105x140 mm ; 4.13x5.51 in)</li>
+        * <li>PA7 (70x105 mm ; 2.76x4.13 in)</li>
+        * <li>PA8 (52x70 mm ; 2.05x2.76 in)</li>
+        * <li>PA9 (35x52 mm ; 1.38x2.05 in)</li>
+        * <li>PA10 (26x35 mm ; 1.02x1.38 in)</li>
+        * <li><b>Standard Photographic Print Sizes</b></li>
+        * <li>PASSPORT_PHOTO (35x45 mm ; 1.38x1.77 in)</li>
+        * <li>E (82x120 mm ; 3.25x4.72 in)</li>
+        * <li>3R, L (89x127 mm ; 3.50x5.00 in)</li>
+        * <li>4R, KG (102x152 mm ; 4.02x5.98 in)</li>
+        * <li>4D (120x152 mm ; 4.72x5.98 in)</li>
+        * <li>5R, 2L (127x178 mm ; 5.00x7.01 in)</li>
+        * <li>6R, 8P (152x203 mm ; 5.98x7.99 in)</li>
+        * <li>8R, 6P (203x254 mm ; 7.99x10.00 in)</li>
+        * <li>S8R, 6PW (203x305 mm ; 7.99x12.01 in)</li>
+        * <li>10R, 4P (254x305 mm ; 10.00x12.01 in)</li>
+        * <li>S10R, 4PW (254x381 mm ; 10.00x15.00 in)</li>
+        * <li>11R (279x356 mm ; 10.98x14.02 in)</li>
+        * <li>S11R (279x432 mm ; 10.98x17.01 in)</li>
+        * <li>12R (305x381 mm ; 12.01x15.00 in)</li>
+        * <li>S12R (305x456 mm ; 12.01x17.95 in)</li>
+        * <li><b>Common Newspaper Sizes</b></li>
+        * <li>NEWSPAPER_BROADSHEET (750x600 mm ; 29.53x23.62 in)</li>
+        * <li>NEWSPAPER_BERLINER (470x315 mm ; 18.50x12.40 in)</li>
+        * <li>NEWSPAPER_COMPACT, NEWSPAPER_TABLOID (430x280 mm ; 16.93x11.02 in)</li>
+        * <li><b>Business Cards</b></li>
+        * <li>CREDIT_CARD, BUSINESS_CARD, BUSINESS_CARD_ISO7810 (54x86 mm ; 2.13x3.37 in)</li>
+        * <li>BUSINESS_CARD_ISO216 (52x74 mm ; 2.05x2.91 in)</li>
+        * <li>BUSINESS_CARD_IT, BUSINESS_CARD_UK, BUSINESS_CARD_FR, BUSINESS_CARD_DE, BUSINESS_CARD_ES (55x85 mm ; 2.17x3.35 in)</li>
+        * <li>BUSINESS_CARD_US, BUSINESS_CARD_CA (51x89 mm ; 2.01x3.50 in)</li>
+        * <li>BUSINESS_CARD_JP (55x91 mm ; 2.17x3.58 in)</li>
+        * <li>BUSINESS_CARD_HK (54x90 mm ; 2.13x3.54 in)</li>
+        * <li>BUSINESS_CARD_AU, BUSINESS_CARD_DK, BUSINESS_CARD_SE (55x90 mm ; 2.17x3.54 in)</li>
+        * <li>BUSINESS_CARD_RU, BUSINESS_CARD_CZ, BUSINESS_CARD_FI, BUSINESS_CARD_HU, BUSINESS_CARD_IL (50x90 mm ; 1.97x3.54 in)</li>
+        * <li><b>Billboards</b></li>
+        * <li>4SHEET (1016x1524 mm ; 40.00x60.00 in)</li>
+        * <li>6SHEET (1200x1800 mm ; 47.24x70.87 in)</li>
+        * <li>12SHEET (3048x1524 mm ; 120.00x60.00 in)</li>
+        * <li>16SHEET (2032x3048 mm ; 80.00x120.00 in)</li>
+        * <li>32SHEET (4064x3048 mm ; 160.00x120.00 in)</li>
+        * <li>48SHEET (6096x3048 mm ; 240.00x120.00 in)</li>
+        * <li>64SHEET (8128x3048 mm ; 320.00x120.00 in)</li>
+        * <li>96SHEET (12192x3048 mm ; 480.00x120.00 in)</li>
+        * <li><b>Old Imperial English (some are still used in USA)</b></li>
+        * <li>EN_EMPEROR (1219x1829 mm ; 48.00x72.00 in)</li>
+        * <li>EN_ANTIQUARIAN (787x1346 mm ; 31.00x53.00 in)</li>
+        * <li>EN_GRAND_EAGLE (730x1067 mm ; 28.75x42.00 in)</li>
+        * <li>EN_DOUBLE_ELEPHANT (679x1016 mm ; 26.75x40.00 in)</li>
+        * <li>EN_ATLAS (660x864 mm ; 26.00x34.00 in)</li>
+        * <li>EN_COLOMBIER (597x876 mm ; 23.50x34.50 in)</li>
+        * <li>EN_ELEPHANT (584x711 mm ; 23.00x28.00 in)</li>
+        * <li>EN_DOUBLE_DEMY (572x902 mm ; 22.50x35.50 in)</li>
+        * <li>EN_IMPERIAL (559x762 mm ; 22.00x30.00 in)</li>
+        * <li>EN_PRINCESS (546x711 mm ; 21.50x28.00 in)</li>
+        * <li>EN_CARTRIDGE (533x660 mm ; 21.00x26.00 in)</li>
+        * <li>EN_DOUBLE_LARGE_POST (533x838 mm ; 21.00x33.00 in)</li>
+        * <li>EN_ROYAL (508x635 mm ; 20.00x25.00 in)</li>
+        * <li>EN_SHEET, EN_HALF_POST (495x597 mm ; 19.50x23.50 in)</li>
+        * <li>EN_SUPER_ROYAL (483x686 mm ; 19.00x27.00 in)</li>
+        * <li>EN_DOUBLE_POST (483x775 mm ; 19.00x30.50 in)</li>
+        * <li>EN_MEDIUM (445x584 mm ; 17.50x23.00 in)</li>
+        * <li>EN_DEMY (445x572 mm ; 17.50x22.50 in)</li>
+        * <li>EN_LARGE_POST (419x533 mm ; 16.50x21.00 in)</li>
+        * <li>EN_COPY_DRAUGHT (406x508 mm ; 16.00x20.00 in)</li>
+        * <li>EN_POST (394x489 mm ; 15.50x19.25 in)</li>
+        * <li>EN_CROWN (381x508 mm ; 15.00x20.00 in)</li>
+        * <li>EN_PINCHED_POST (375x470 mm ; 14.75x18.50 in)</li>
+        * <li>EN_BRIEF (343x406 mm ; 13.50x16.00 in)</li>
+        * <li>EN_FOOLSCAP (343x432 mm ; 13.50x17.00 in)</li>
+        * <li>EN_SMALL_FOOLSCAP (337x419 mm ; 13.25x16.50 in)</li>
+        * <li>EN_POTT (318x381 mm ; 12.50x15.00 in)</li>
+        * <li><b>Old Imperial Belgian</b></li>
+        * <li>BE_GRAND_AIGLE (700x1040 mm ; 27.56x40.94 in)</li>
+        * <li>BE_COLOMBIER (620x850 mm ; 24.41x33.46 in)</li>
+        * <li>BE_DOUBLE_CARRE (620x920 mm ; 24.41x36.22 in)</li>
+        * <li>BE_ELEPHANT (616x770 mm ; 24.25x30.31 in)</li>
+        * <li>BE_PETIT_AIGLE (600x840 mm ; 23.62x33.07 in)</li>
+        * <li>BE_GRAND_JESUS (550x730 mm ; 21.65x28.74 in)</li>
+        * <li>BE_JESUS (540x730 mm ; 21.26x28.74 in)</li>
+        * <li>BE_RAISIN (500x650 mm ; 19.69x25.59 in)</li>
+        * <li>BE_GRAND_MEDIAN (460x605 mm ; 18.11x23.82 in)</li>
+        * <li>BE_DOUBLE_POSTE (435x565 mm ; 17.13x22.24 in)</li>
+        * <li>BE_COQUILLE (430x560 mm ; 16.93x22.05 in)</li>
+        * <li>BE_PETIT_MEDIAN (415x530 mm ; 16.34x20.87 in)</li>
+        * <li>BE_RUCHE (360x460 mm ; 14.17x18.11 in)</li>
+        * <li>BE_PROPATRIA (345x430 mm ; 13.58x16.93 in)</li>
+        * <li>BE_LYS (317x397 mm ; 12.48x15.63 in)</li>
+        * <li>BE_POT (307x384 mm ; 12.09x15.12 in)</li>
+        * <li>BE_ROSETTE (270x347 mm ; 10.63x13.66 in)</li>
+        * <li><b>Old Imperial French</b></li>
+        * <li>FR_UNIVERS (1000x1300 mm ; 39.37x51.18 in)</li>
+        * <li>FR_DOUBLE_COLOMBIER (900x1260 mm ; 35.43x49.61 in)</li>
+        * <li>FR_GRANDE_MONDE (900x1260 mm ; 35.43x49.61 in)</li>
+        * <li>FR_DOUBLE_SOLEIL (800x1200 mm ; 31.50x47.24 in)</li>
+        * <li>FR_DOUBLE_JESUS (760x1120 mm ; 29.92x44.09 in)</li>
+        * <li>FR_GRAND_AIGLE (750x1060 mm ; 29.53x41.73 in)</li>
+        * <li>FR_PETIT_AIGLE (700x940 mm ; 27.56x37.01 in)</li>
+        * <li>FR_DOUBLE_RAISIN (650x1000 mm ; 25.59x39.37 in)</li>
+        * <li>FR_JOURNAL (650x940 mm ; 25.59x37.01 in)</li>
+        * <li>FR_COLOMBIER_AFFICHE (630x900 mm ; 24.80x35.43 in)</li>
+        * <li>FR_DOUBLE_CAVALIER (620x920 mm ; 24.41x36.22 in)</li>
+        * <li>FR_CLOCHE (600x800 mm ; 23.62x31.50 in)</li>
+        * <li>FR_SOLEIL (600x800 mm ; 23.62x31.50 in)</li>
+        * <li>FR_DOUBLE_CARRE (560x900 mm ; 22.05x35.43 in)</li>
+        * <li>FR_DOUBLE_COQUILLE (560x880 mm ; 22.05x34.65 in)</li>
+        * <li>FR_JESUS (560x760 mm ; 22.05x29.92 in)</li>
+        * <li>FR_RAISIN (500x650 mm ; 19.69x25.59 in)</li>
+        * <li>FR_CAVALIER (460x620 mm ; 18.11x24.41 in)</li>
+        * <li>FR_DOUBLE_COURONNE (460x720 mm ; 18.11x28.35 in)</li>
+        * <li>FR_CARRE (450x560 mm ; 17.72x22.05 in)</li>
+        * <li>FR_COQUILLE (440x560 mm ; 17.32x22.05 in)</li>
+        * <li>FR_DOUBLE_TELLIERE (440x680 mm ; 17.32x26.77 in)</li>
+        * <li>FR_DOUBLE_CLOCHE (400x600 mm ; 15.75x23.62 in)</li>
+        * <li>FR_DOUBLE_POT (400x620 mm ; 15.75x24.41 in)</li>
+        * <li>FR_ECU (400x520 mm ; 15.75x20.47 in)</li>
+        * <li>FR_COURONNE (360x460 mm ; 14.17x18.11 in)</li>
+        * <li>FR_TELLIERE (340x440 mm ; 13.39x17.32 in)</li>
+        * <li>FR_POT (310x400 mm ; 12.20x15.75 in)</li>
+        * </ul>
+        * @return array containing page width and height in points
+        * @since 5.0.010 (2010-05-17)
+        * @public static
+        */
+       public static function getPageSizeFromFormat($format) {
+               // Paper cordinates are calculated in this way: (inches * 72) where (1 inch = 25.4 mm)
+               switch (strtoupper($format)) {
+                       // ISO 216 A Series + 2 SIS 014711 extensions
+                       case 'A0' : {$pf = array( 2383.937, 3370.394); break;}
+                       case 'A1' : {$pf = array( 1683.780, 2383.937); break;}
+                       case 'A2' : {$pf = array( 1190.551, 1683.780); break;}
+                       case 'A3' : {$pf = array(  841.890, 1190.551); break;}
+                       case 'A4' : {$pf = array(  595.276,  841.890); break;}
+                       case 'A5' : {$pf = array(  419.528,  595.276); break;}
+                       case 'A6' : {$pf = array(  297.638,  419.528); break;}
+                       case 'A7' : {$pf = array(  209.764,  297.638); break;}
+                       case 'A8' : {$pf = array(  147.402,  209.764); break;}
+                       case 'A9' : {$pf = array(  104.882,  147.402); break;}
+                       case 'A10': {$pf = array(   73.701,  104.882); break;}
+                       case 'A11': {$pf = array(   51.024,   73.701); break;}
+                       case 'A12': {$pf = array(   36.850,   51.024); break;}
+                       // ISO 216 B Series + 2 SIS 014711 extensions
+                       case 'B0' : {$pf = array( 2834.646, 4008.189); break;}
+                       case 'B1' : {$pf = array( 2004.094, 2834.646); break;}
+                       case 'B2' : {$pf = array( 1417.323, 2004.094); break;}
+                       case 'B3' : {$pf = array( 1000.630, 1417.323); break;}
+                       case 'B4' : {$pf = array(  708.661, 1000.630); break;}
+                       case 'B5' : {$pf = array(  498.898,  708.661); break;}
+                       case 'B6' : {$pf = array(  354.331,  498.898); break;}
+                       case 'B7' : {$pf = array(  249.449,  354.331); break;}
+                       case 'B8' : {$pf = array(  175.748,  249.449); break;}
+                       case 'B9' : {$pf = array(  124.724,  175.748); break;}
+                       case 'B10': {$pf = array(   87.874,  124.724); break;}
+                       case 'B11': {$pf = array(   62.362,   87.874); break;}
+                       case 'B12': {$pf = array(   42.520,   62.362); break;}
+                       // ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION
+                       case 'C0' : {$pf = array( 2599.370, 3676.535); break;}
+                       case 'C1' : {$pf = array( 1836.850, 2599.370); break;}
+                       case 'C2' : {$pf = array( 1298.268, 1836.850); break;}
+                       case 'C3' : {$pf = array(  918.425, 1298.268); break;}
+                       case 'C4' : {$pf = array(  649.134,  918.425); break;}
+                       case 'C5' : {$pf = array(  459.213,  649.134); break;}
+                       case 'C6' : {$pf = array(  323.150,  459.213); break;}
+                       case 'C7' : {$pf = array(  229.606,  323.150); break;}
+                       case 'C8' : {$pf = array(  161.575,  229.606); break;}
+                       case 'C9' : {$pf = array(  113.386,  161.575); break;}
+                       case 'C10': {$pf = array(   79.370,  113.386); break;}
+                       case 'C11': {$pf = array(   56.693,   79.370); break;}
+                       case 'C12': {$pf = array(   39.685,   56.693); break;}
+                       case 'C76': {$pf = array(  229.606,  459.213); break;}
+                       case 'DL' : {$pf = array(  311.811,  623.622); break;}
+                       // SIS 014711 E Series
+                       case 'E0' : {$pf = array( 2491.654, 3517.795); break;}
+                       case 'E1' : {$pf = array( 1757.480, 2491.654); break;}
+                       case 'E2' : {$pf = array( 1247.244, 1757.480); break;}
+                       case 'E3' : {$pf = array(  878.740, 1247.244); break;}
+                       case 'E4' : {$pf = array(  623.622,  878.740); break;}
+                       case 'E5' : {$pf = array(  439.370,  623.622); break;}
+                       case 'E6' : {$pf = array(  311.811,  439.370); break;}
+                       case 'E7' : {$pf = array(  221.102,  311.811); break;}
+                       case 'E8' : {$pf = array(  155.906,  221.102); break;}
+                       case 'E9' : {$pf = array(  110.551,  155.906); break;}
+                       case 'E10': {$pf = array(   76.535,  110.551); break;}
+                       case 'E11': {$pf = array(   53.858,   76.535); break;}
+                       case 'E12': {$pf = array(   36.850,   53.858); break;}
+                       // SIS 014711 G Series
+                       case 'G0' : {$pf = array( 2715.591, 3838.110); break;}
+                       case 'G1' : {$pf = array( 1919.055, 2715.591); break;}
+                       case 'G2' : {$pf = array( 1357.795, 1919.055); break;}
+                       case 'G3' : {$pf = array(  958.110, 1357.795); break;}
+                       case 'G4' : {$pf = array(  677.480,  958.110); break;}
+                       case 'G5' : {$pf = array(  479.055,  677.480); break;}
+                       case 'G6' : {$pf = array(  337.323,  479.055); break;}
+                       case 'G7' : {$pf = array(  238.110,  337.323); break;}
+                       case 'G8' : {$pf = array(  167.244,  238.110); break;}
+                       case 'G9' : {$pf = array(  119.055,  167.244); break;}
+                       case 'G10': {$pf = array(   82.205,  119.055); break;}
+                       case 'G11': {$pf = array(   59.528,   82.205); break;}
+                       case 'G12': {$pf = array(   39.685,   59.528); break;}
+                       // ISO Press
+                       case 'RA0': {$pf = array( 2437.795, 3458.268); break;}
+                       case 'RA1': {$pf = array( 1729.134, 2437.795); break;}
+                       case 'RA2': {$pf = array( 1218.898, 1729.134); break;}
+                       case 'RA3': {$pf = array(  864.567, 1218.898); break;}
+                       case 'RA4': {$pf = array(  609.449,  864.567); break;}
+                       case 'SRA0': {$pf = array( 2551.181, 3628.346); break;}
+                       case 'SRA1': {$pf = array( 1814.173, 2551.181); break;}
+                       case 'SRA2': {$pf = array( 1275.591, 1814.173); break;}
+                       case 'SRA3': {$pf = array(  907.087, 1275.591); break;}
+                       case 'SRA4': {$pf = array(  637.795,  907.087); break;}
+                       // German  DIN 476
+                       case '4A0': {$pf = array( 4767.874, 6740.787); break;}
+                       case '2A0': {$pf = array( 3370.394, 4767.874); break;}
+                       // Variations on the ISO Standard
+                       case 'A2_EXTRA'   : {$pf = array( 1261.417, 1754.646); break;}
+                       case 'A3+'        : {$pf = array(  932.598, 1369.134); break;}
+                       case 'A3_EXTRA'   : {$pf = array(  912.756, 1261.417); break;}
+                       case 'A3_SUPER'   : {$pf = array(  864.567, 1440.000); break;}
+                       case 'SUPER_A3'   : {$pf = array(  864.567, 1380.472); break;}
+                       case 'A4_EXTRA'   : {$pf = array(  666.142,  912.756); break;}
+                       case 'A4_SUPER'   : {$pf = array(  649.134,  912.756); break;}
+                       case 'SUPER_A4'   : {$pf = array(  643.465, 1009.134); break;}
+                       case 'A4_LONG'    : {$pf = array(  595.276,  986.457); break;}
+                       case 'F4'         : {$pf = array(  595.276,  935.433); break;}
+                       case 'SO_B5_EXTRA': {$pf = array(  572.598,  782.362); break;}
+                       case 'A5_EXTRA'   : {$pf = array(  490.394,  666.142); break;}
+                       // ANSI Series
+                       case 'ANSI_E': {$pf = array( 2448.000, 3168.000); break;}
+                       case 'ANSI_D': {$pf = array( 1584.000, 2448.000); break;}
+                       case 'ANSI_C': {$pf = array( 1224.000, 1584.000); break;}
+                       case 'ANSI_B': {$pf = array(  792.000, 1224.000); break;}
+                       case 'ANSI_A': {$pf = array(  612.000,  792.000); break;}
+                       // Traditional 'Loose' North American Paper Sizes
+                       case 'USLEDGER':
+                       case 'LEDGER' : {$pf = array( 1224.000,  792.000); break;}
+                       case 'ORGANIZERK':
+                       case 'BIBLE':
+                       case 'USTABLOID':
+                       case 'TABLOID': {$pf = array(  792.000, 1224.000); break;}
+                       case 'ORGANIZERM':
+                       case 'USLETTER':
+                       case 'LETTER' : {$pf = array(  612.000,  792.000); break;}
+                       case 'USLEGAL':
+                       case 'LEGAL'  : {$pf = array(  612.000, 1008.000); break;}
+                       case 'GOVERNMENTLETTER':
+                       case 'GLETTER': {$pf = array(  576.000,  756.000); break;}
+                       case 'JUNIORLEGAL':
+                       case 'JLEGAL' : {$pf = array(  576.000,  360.000); break;}
+                       // Other North American Paper Sizes
+                       case 'QUADDEMY': {$pf = array( 2520.000, 3240.000); break;}
+                       case 'SUPER_B': {$pf = array(  936.000, 1368.000); break;}
+                       case 'QUARTO': {$pf = array(  648.000,  792.000); break;}
+                       case 'GOVERNMENTLEGAL':
+                       case 'FOLIO': {$pf = array(  612.000,  936.000); break;}
+                       case 'MONARCH':
+                       case 'EXECUTIVE': {$pf = array(  522.000,  756.000); break;}
+                       case 'ORGANIZERL':
+                       case 'STATEMENT':
+                       case 'MEMO': {$pf = array(  396.000,  612.000); break;}
+                       case 'FOOLSCAP': {$pf = array(  595.440,  936.000); break;}
+                       case 'COMPACT': {$pf = array(  306.000,  486.000); break;}
+                       case 'ORGANIZERJ': {$pf = array(  198.000,  360.000); break;}
+                       // Canadian standard CAN 2-9.60M
+                       case 'P1': {$pf = array( 1587.402, 2437.795); break;}
+                       case 'P2': {$pf = array( 1218.898, 1587.402); break;}
+                       case 'P3': {$pf = array(  793.701, 1218.898); break;}
+                       case 'P4': {$pf = array(  609.449,  793.701); break;}
+                       case 'P5': {$pf = array(  396.850,  609.449); break;}
+                       case 'P6': {$pf = array(  303.307,  396.850); break;}
+                       // North American Architectural Sizes
+                       case 'ARCH_E' : {$pf = array( 2592.000, 3456.000); break;}
+                       case 'ARCH_E1': {$pf = array( 2160.000, 3024.000); break;}
+                       case 'ARCH_D' : {$pf = array( 1728.000, 2592.000); break;}
+                       case 'BROADSHEET':
+                       case 'ARCH_C' : {$pf = array( 1296.000, 1728.000); break;}
+                       case 'ARCH_B' : {$pf = array(  864.000, 1296.000); break;}
+                       case 'ARCH_A' : {$pf = array(  648.000,  864.000); break;}
+                       // --- North American Envelope Sizes ---
+                       //   - Announcement Envelopes
+                       case 'ANNENV_A2'  : {$pf = array(  314.640,  414.000); break;}
+                       case 'ANNENV_A6'  : {$pf = array(  342.000,  468.000); break;}
+                       case 'ANNENV_A7'  : {$pf = array(  378.000,  522.000); break;}
+                       case 'ANNENV_A8'  : {$pf = array(  396.000,  584.640); break;}
+                       case 'ANNENV_A10' : {$pf = array(  450.000,  692.640); break;}
+                       case 'ANNENV_SLIM': {$pf = array(  278.640,  638.640); break;}
+                       //   - Commercial Envelopes
+                       case 'COMMENV_N6_1/4': {$pf = array(  252.000,  432.000); break;}
+                       case 'COMMENV_N6_3/4': {$pf = array(  260.640,  468.000); break;}
+                       case 'COMMENV_N8'    : {$pf = array(  278.640,  540.000); break;}
+                       case 'COMMENV_N9'    : {$pf = array(  278.640,  638.640); break;}
+                       case 'COMMENV_N10'   : {$pf = array(  296.640,  684.000); break;}
+                       case 'COMMENV_N11'   : {$pf = array(  324.000,  746.640); break;}
+                       case 'COMMENV_N12'   : {$pf = array(  342.000,  792.000); break;}
+                       case 'COMMENV_N14'   : {$pf = array(  360.000,  828.000); break;}
+                       //   - Catalogue Envelopes
+                       case 'CATENV_N1'     : {$pf = array(  432.000,  648.000); break;}
+                       case 'CATENV_N1_3/4' : {$pf = array(  468.000,  684.000); break;}
+                       case 'CATENV_N2'     : {$pf = array(  468.000,  720.000); break;}
+                       case 'CATENV_N3'     : {$pf = array(  504.000,  720.000); break;}
+                       case 'CATENV_N6'     : {$pf = array(  540.000,  756.000); break;}
+                       case 'CATENV_N7'     : {$pf = array(  576.000,  792.000); break;}
+                       case 'CATENV_N8'     : {$pf = array(  594.000,  810.000); break;}
+                       case 'CATENV_N9_1/2' : {$pf = array(  612.000,  756.000); break;}
+                       case 'CATENV_N9_3/4' : {$pf = array(  630.000,  810.000); break;}
+                       case 'CATENV_N10_1/2': {$pf = array(  648.000,  864.000); break;}
+                       case 'CATENV_N12_1/2': {$pf = array(  684.000,  900.000); break;}
+                       case 'CATENV_N13_1/2': {$pf = array(  720.000,  936.000); break;}
+                       case 'CATENV_N14_1/4': {$pf = array(  810.000,  882.000); break;}
+                       case 'CATENV_N14_1/2': {$pf = array(  828.000, 1044.000); break;}
+                       // Japanese (JIS P 0138-61) Standard B-Series
+                       case 'JIS_B0' : {$pf = array( 2919.685, 4127.244); break;}
+                       case 'JIS_B1' : {$pf = array( 2063.622, 2919.685); break;}
+                       case 'JIS_B2' : {$pf = array( 1459.843, 2063.622); break;}
+                       case 'JIS_B3' : {$pf = array( 1031.811, 1459.843); break;}
+                       case 'JIS_B4' : {$pf = array(  728.504, 1031.811); break;}
+                       case 'JIS_B5' : {$pf = array(  515.906,  728.504); break;}
+                       case 'JIS_B6' : {$pf = array(  362.835,  515.906); break;}
+                       case 'JIS_B7' : {$pf = array(  257.953,  362.835); break;}
+                       case 'JIS_B8' : {$pf = array(  181.417,  257.953); break;}
+                       case 'JIS_B9' : {$pf = array(  127.559,  181.417); break;}
+                       case 'JIS_B10': {$pf = array(   90.709,  127.559); break;}
+                       case 'JIS_B11': {$pf = array(   62.362,   90.709); break;}
+                       case 'JIS_B12': {$pf = array(   45.354,   62.362); break;}
+                       // PA Series
+                       case 'PA0' : {$pf = array( 2381.102, 3174.803,); break;}
+                       case 'PA1' : {$pf = array( 1587.402, 2381.102); break;}
+                       case 'PA2' : {$pf = array( 1190.551, 1587.402); break;}
+                       case 'PA3' : {$pf = array(  793.701, 1190.551); break;}
+                       case 'PA4' : {$pf = array(  595.276,  793.701); break;}
+                       case 'PA5' : {$pf = array(  396.850,  595.276); break;}
+                       case 'PA6' : {$pf = array(  297.638,  396.850); break;}
+                       case 'PA7' : {$pf = array(  198.425,  297.638); break;}
+                       case 'PA8' : {$pf = array(  147.402,  198.425); break;}
+                       case 'PA9' : {$pf = array(   99.213,  147.402); break;}
+                       case 'PA10': {$pf = array(   73.701,   99.213); break;}
+                       // Standard Photographic Print Sizes
+                       case 'PASSPORT_PHOTO': {$pf = array(   99.213,  127.559); break;}
+                       case 'E'   : {$pf = array(  233.858,  340.157); break;}
+                       case 'L':
+                       case '3R'  : {$pf = array(  252.283,  360.000); break;}
+                       case 'KG':
+                       case '4R'  : {$pf = array(  289.134,  430.866); break;}
+                       case '4D'  : {$pf = array(  340.157,  430.866); break;}
+                       case '2L':
+                       case '5R'  : {$pf = array(  360.000,  504.567); break;}
+                       case '8P':
+                       case '6R'  : {$pf = array(  430.866,  575.433); break;}
+                       case '6P':
+                       case '8R'  : {$pf = array(  575.433,  720.000); break;}
+                       case '6PW':
+                       case 'S8R' : {$pf = array(  575.433,  864.567); break;}
+                       case '4P':
+                       case '10R' : {$pf = array(  720.000,  864.567); break;}
+                       case '4PW':
+                       case 'S10R': {$pf = array(  720.000, 1080.000); break;}
+                       case '11R' : {$pf = array(  790.866, 1009.134); break;}
+                       case 'S11R': {$pf = array(  790.866, 1224.567); break;}
+                       case '12R' : {$pf = array(  864.567, 1080.000); break;}
+                       case 'S12R': {$pf = array(  864.567, 1292.598); break;}
+                       // Common Newspaper Sizes
+                       case 'NEWSPAPER_BROADSHEET': {$pf = array( 2125.984, 1700.787); break;}
+                       case 'NEWSPAPER_BERLINER'  : {$pf = array( 1332.283,  892.913); break;}
+                       case 'NEWSPAPER_TABLOID':
+                       case 'NEWSPAPER_COMPACT'   : {$pf = array( 1218.898,  793.701); break;}
+                       // Business Cards
+                       case 'CREDIT_CARD':
+                       case 'BUSINESS_CARD':
+                       case 'BUSINESS_CARD_ISO7810': {$pf = array(  153.014,  242.646); break;}
+                       case 'BUSINESS_CARD_ISO216' : {$pf = array(  147.402,  209.764); break;}
+                       case 'BUSINESS_CARD_IT':
+                       case 'BUSINESS_CARD_UK':
+                       case 'BUSINESS_CARD_FR':
+                       case 'BUSINESS_CARD_DE':
+                       case 'BUSINESS_CARD_ES'     : {$pf = array(  155.906,  240.945); break;}
+                       case 'BUSINESS_CARD_CA':
+                       case 'BUSINESS_CARD_US'     : {$pf = array(  144.567,  252.283); break;}
+                       case 'BUSINESS_CARD_JP'     : {$pf = array(  155.906,  257.953); break;}
+                       case 'BUSINESS_CARD_HK'     : {$pf = array(  153.071,  255.118); break;}
+                       case 'BUSINESS_CARD_AU':
+                       case 'BUSINESS_CARD_DK':
+                       case 'BUSINESS_CARD_SE'     : {$pf = array(  155.906,  255.118); break;}
+                       case 'BUSINESS_CARD_RU':
+                       case 'BUSINESS_CARD_CZ':
+                       case 'BUSINESS_CARD_FI':
+                       case 'BUSINESS_CARD_HU':
+                       case 'BUSINESS_CARD_IL'     : {$pf = array(  141.732,  255.118); break;}
+                       // Billboards
+                       case '4SHEET' : {$pf = array( 2880.000, 4320.000); break;}
+                       case '6SHEET' : {$pf = array( 3401.575, 5102.362); break;}
+                       case '12SHEET': {$pf = array( 8640.000, 4320.000); break;}
+                       case '16SHEET': {$pf = array( 5760.000, 8640.000); break;}
+                       case '32SHEET': {$pf = array(11520.000, 8640.000); break;}
+                       case '48SHEET': {$pf = array(17280.000, 8640.000); break;}
+                       case '64SHEET': {$pf = array(23040.000, 8640.000); break;}
+                       case '96SHEET': {$pf = array(34560.000, 8640.000); break;}
+                       // Old European Sizes
+                       //   - Old Imperial English Sizes
+                       case 'EN_EMPEROR'          : {$pf = array( 3456.000, 5184.000); break;}
+                       case 'EN_ANTIQUARIAN'      : {$pf = array( 2232.000, 3816.000); break;}
+                       case 'EN_GRAND_EAGLE'      : {$pf = array( 2070.000, 3024.000); break;}
+                       case 'EN_DOUBLE_ELEPHANT'  : {$pf = array( 1926.000, 2880.000); break;}
+                       case 'EN_ATLAS'            : {$pf = array( 1872.000, 2448.000); break;}
+                       case 'EN_COLOMBIER'        : {$pf = array( 1692.000, 2484.000); break;}
+                       case 'EN_ELEPHANT'         : {$pf = array( 1656.000, 2016.000); break;}
+                       case 'EN_DOUBLE_DEMY'      : {$pf = array( 1620.000, 2556.000); break;}
+                       case 'EN_IMPERIAL'         : {$pf = array( 1584.000, 2160.000); break;}
+                       case 'EN_PRINCESS'         : {$pf = array( 1548.000, 2016.000); break;}
+                       case 'EN_CARTRIDGE'        : {$pf = array( 1512.000, 1872.000); break;}
+                       case 'EN_DOUBLE_LARGE_POST': {$pf = array( 1512.000, 2376.000); break;}
+                       case 'EN_ROYAL'            : {$pf = array( 1440.000, 1800.000); break;}
+                       case 'EN_SHEET':
+                       case 'EN_HALF_POST'        : {$pf = array( 1404.000, 1692.000); break;}
+                       case 'EN_SUPER_ROYAL'      : {$pf = array( 1368.000, 1944.000); break;}
+                       case 'EN_DOUBLE_POST'      : {$pf = array( 1368.000, 2196.000); break;}
+                       case 'EN_MEDIUM'           : {$pf = array( 1260.000, 1656.000); break;}
+                       case 'EN_DEMY'             : {$pf = array( 1260.000, 1620.000); break;}
+                       case 'EN_LARGE_POST'       : {$pf = array( 1188.000, 1512.000); break;}
+                       case 'EN_COPY_DRAUGHT'     : {$pf = array( 1152.000, 1440.000); break;}
+                       case 'EN_POST'             : {$pf = array( 1116.000, 1386.000); break;}
+                       case 'EN_CROWN'            : {$pf = array( 1080.000, 1440.000); break;}
+                       case 'EN_PINCHED_POST'     : {$pf = array( 1062.000, 1332.000); break;}
+                       case 'EN_BRIEF'            : {$pf = array(  972.000, 1152.000); break;}
+                       case 'EN_FOOLSCAP'         : {$pf = array(  972.000, 1224.000); break;}
+                       case 'EN_SMALL_FOOLSCAP'   : {$pf = array(  954.000, 1188.000); break;}
+                       case 'EN_POTT'             : {$pf = array(  900.000, 1080.000); break;}
+                       //   - Old Imperial Belgian Sizes
+                       case 'BE_GRAND_AIGLE' : {$pf = array( 1984.252, 2948.031); break;}
+                       case 'BE_COLOMBIER'   : {$pf = array( 1757.480, 2409.449); break;}
+                       case 'BE_DOUBLE_CARRE': {$pf = array( 1757.480, 2607.874); break;}
+                       case 'BE_ELEPHANT'    : {$pf = array( 1746.142, 2182.677); break;}
+                       case 'BE_PETIT_AIGLE' : {$pf = array( 1700.787, 2381.102); break;}
+                       case 'BE_GRAND_JESUS' : {$pf = array( 1559.055, 2069.291); break;}
+                       case 'BE_JESUS'       : {$pf = array( 1530.709, 2069.291); break;}
+                       case 'BE_RAISIN'      : {$pf = array( 1417.323, 1842.520); break;}
+                       case 'BE_GRAND_MEDIAN': {$pf = array( 1303.937, 1714.961); break;}
+                       case 'BE_DOUBLE_POSTE': {$pf = array( 1233.071, 1601.575); break;}
+                       case 'BE_COQUILLE'    : {$pf = array( 1218.898, 1587.402); break;}
+                       case 'BE_PETIT_MEDIAN': {$pf = array( 1176.378, 1502.362); break;}
+                       case 'BE_RUCHE'       : {$pf = array( 1020.472, 1303.937); break;}
+                       case 'BE_PROPATRIA'   : {$pf = array(  977.953, 1218.898); break;}
+                       case 'BE_LYS'         : {$pf = array(  898.583, 1125.354); break;}
+                       case 'BE_POT'         : {$pf = array(  870.236, 1088.504); break;}
+                       case 'BE_ROSETTE'     : {$pf = array(  765.354,  983.622); break;}
+                       //   - Old Imperial French Sizes
+                       case 'FR_UNIVERS'          : {$pf = array( 2834.646, 3685.039); break;}
+                       case 'FR_DOUBLE_COLOMBIER' : {$pf = array( 2551.181, 3571.654); break;}
+                       case 'FR_GRANDE_MONDE'     : {$pf = array( 2551.181, 3571.654); break;}
+                       case 'FR_DOUBLE_SOLEIL'    : {$pf = array( 2267.717, 3401.575); break;}
+                       case 'FR_DOUBLE_JESUS'     : {$pf = array( 2154.331, 3174.803); break;}
+                       case 'FR_GRAND_AIGLE'      : {$pf = array( 2125.984, 3004.724); break;}
+                       case 'FR_PETIT_AIGLE'      : {$pf = array( 1984.252, 2664.567); break;}
+                       case 'FR_DOUBLE_RAISIN'    : {$pf = array( 1842.520, 2834.646); break;}
+                       case 'FR_JOURNAL'          : {$pf = array( 1842.520, 2664.567); break;}
+                       case 'FR_COLOMBIER_AFFICHE': {$pf = array( 1785.827, 2551.181); break;}
+                       case 'FR_DOUBLE_CAVALIER'  : {$pf = array( 1757.480, 2607.874); break;}
+                       case 'FR_CLOCHE'           : {$pf = array( 1700.787, 2267.717); break;}
+                       case 'FR_SOLEIL'           : {$pf = array( 1700.787, 2267.717); break;}
+                       case 'FR_DOUBLE_CARRE'     : {$pf = array( 1587.402, 2551.181); break;}
+                       case 'FR_DOUBLE_COQUILLE'  : {$pf = array( 1587.402, 2494.488); break;}
+                       case 'FR_JESUS'            : {$pf = array( 1587.402, 2154.331); break;}
+                       case 'FR_RAISIN'           : {$pf = array( 1417.323, 1842.520); break;}
+                       case 'FR_CAVALIER'         : {$pf = array( 1303.937, 1757.480); break;}
+                       case 'FR_DOUBLE_COURONNE'  : {$pf = array( 1303.937, 2040.945); break;}
+                       case 'FR_CARRE'            : {$pf = array( 1275.591, 1587.402); break;}
+                       case 'FR_COQUILLE'         : {$pf = array( 1247.244, 1587.402); break;}
+                       case 'FR_DOUBLE_TELLIERE'  : {$pf = array( 1247.244, 1927.559); break;}
+                       case 'FR_DOUBLE_CLOCHE'    : {$pf = array( 1133.858, 1700.787); break;}
+                       case 'FR_DOUBLE_POT'       : {$pf = array( 1133.858, 1757.480); break;}
+                       case 'FR_ECU'              : {$pf = array( 1133.858, 1474.016); break;}
+                       case 'FR_COURONNE'         : {$pf = array( 1020.472, 1303.937); break;}
+                       case 'FR_TELLIERE'         : {$pf = array(  963.780, 1247.244); break;}
+                       case 'FR_POT'              : {$pf = array(  878.740, 1133.858); break;}
+                       // DEFAULT ISO A4
+                       default: {$pf = array(  595.276,  841.890); break;}
+               }
+               return $pf;
+       }
+
+       /**
+        * Set page boundaries.
+        * @param $page (int) page number
+        * @param $type (string) valid values are: <ul><li>'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;</li><li>'CropBox' : the visible region of default user space;</li><li>'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;</li><li>'TrimBox' : the intended dimensions of the finished page after trimming;</li><li>'ArtBox' : the page's meaningful content (including potential white space).</li></ul>
+        * @param $llx (float) lower-left x coordinate in user units.
+        * @param $lly (float) lower-left y coordinate in user units.
+        * @param $urx (float) upper-right x coordinate in user units.
+        * @param $ury (float) upper-right y coordinate in user units.
+        * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points.
+        * @param $k (float) Scale factor (number of points in user unit).
+        * @param $pagedim (array) Array of page dimensions.
+        * @return pagedim array of page dimensions.
+        * @since 5.0.010 (2010-05-17)
+        * @public static
+        */
+       public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) {
+               if (!isset($pagedim[$page])) {
+                       // initialize array
+                       $pagedim[$page] = array();
+               }
+               if (!in_array($type, self::$pageboxes)) {
+                       return;
+               }
+               if ($points) {
+                       $k = 1;
+               }
+               $pagedim[$page][$type]['llx'] = ($llx * $k);
+               $pagedim[$page][$type]['lly'] = ($lly * $k);
+               $pagedim[$page][$type]['urx'] = ($urx * $k);
+               $pagedim[$page][$type]['ury'] = ($ury * $k);
+               return $pagedim;
+       }
+
+       /**
+        * Swap X and Y coordinates of page boxes (change page boxes orientation).
+        * @param $page (int) page number
+        * @param $pagedim (array) Array of page dimensions.
+        * @return pagedim array of page dimensions.
+        * @since 5.0.010 (2010-05-17)
+        * @public static
+        */
+       public static function swapPageBoxCoordinates($page, $pagedim) {
+               foreach (self::$pageboxes as $type) {
+                       // swap X and Y coordinates
+                       if (isset($pagedim[$page][$type])) {
+                               $tmp = $pagedim[$page][$type]['llx'];
+                               $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly'];
+                               $pagedim[$page][$type]['lly'] = $tmp;
+                               $tmp = $pagedim[$page][$type]['urx'];
+                               $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury'];
+                               $pagedim[$page][$type]['ury'] = $tmp;
+                       }
+               }
+               return $pagedim;
+       }
+
+       /**
+        * Get the canonical page layout mode.
+        * @param $layout (string) The page layout. Possible values are:<ul><li>SinglePage Display one page at a time</li><li>OneColumn Display the pages in one column</li><li>TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left</li><li>TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right</li><li>TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left</li><li>TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right</li></ul>
+        * @return (string) Canonical page layout name.
+        * @public static
+        */
+       public static function getPageLayoutMode($layout='SinglePage') {
+               switch ($layout) {
+                       case 'default':
+                       case 'single':
+                       case 'SinglePage': {
+                               $layout_mode = 'SinglePage';
+                               break;
+                       }
+                       case 'continuous':
+                       case 'OneColumn': {
+                               $layout_mode = 'OneColumn';
+                               break;
+                       }
+                       case 'two':
+                       case 'TwoColumnLeft': {
+                               $layout_mode = 'TwoColumnLeft';
+                               break;
+                       }
+                       case 'TwoColumnRight': {
+                               $layout_mode = 'TwoColumnRight';
+                               break;
+                       }
+                       case 'TwoPageLeft': {
+                               $layout_mode = 'TwoPageLeft';
+                               break;
+                       }
+                       case 'TwoPageRight': {
+                               $layout_mode = 'TwoPageRight';
+                               break;
+                       }
+                       default: {
+                               $layout_mode = 'SinglePage';
+                       }
+               }
+               return $layout_mode;
+       }
+
+       /**
+        * Get the canonical page layout mode.
+        * @param $mode (string) A name object specifying how the document should be displayed when opened:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible</li><li>UseOC (PDF 1.5) Optional content group panel visible</li><li>UseAttachments (PDF 1.6) Attachments panel visible</li></ul>
+        * @return (string) Canonical page mode name.
+        * @public static
+        */
+       public static function getPageMode($mode='UseNone') {
+               switch ($mode) {
+                       case 'UseNone': {
+                               $page_mode = 'UseNone';
+                               break;
+                       }
+                       case 'UseOutlines': {
+                               $page_mode = 'UseOutlines';
+                               break;
+                       }
+                       case 'UseThumbs': {
+                               $page_mode = 'UseThumbs';
+                               break;
+                       }
+                       case 'FullScreen': {
+                               $page_mode = 'FullScreen';
+                               break;
+                       }
+                       case 'UseOC': {
+                               $page_mode = 'UseOC';
+                               break;
+                       }
+                       case '': {
+                               $page_mode = 'UseAttachments';
+                               break;
+                       }
+                       default: {
+                               $page_mode = 'UseNone';
+                       }
+               }
+               return $page_mode;
+       }
+
+       /**
+        * Check if the URL exist.
+        * @param $url (string) URL to check.
+        * @return Boolean true if the URl exist, false otherwise.
+        * @since 5.9.204 (2013-01-28)
+        * @public static
+        */
+       public static function isValidURL($url) {
+               $headers = @get_headers($url);
+       return (strpos($headers[0], '200') !== false);
+       }
+
+       /**
+        * Removes SHY characters from text.
+        * Unicode Data:<ul>
+        * <li>Name : SOFT HYPHEN, commonly abbreviated as SHY</li>
+        * <li>HTML Entity (decimal): "&amp;#173;"</li>
+        * <li>HTML Entity (hex): "&amp;#xad;"</li>
+        * <li>HTML Entity (named): "&amp;shy;"</li>
+        * <li>How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173]</li>
+        * <li>UTF-8 (hex): 0xC2 0xAD (c2ad)</li>
+        * <li>UTF-8 character: chr(194).chr(173)</li>
+        * </ul>
+        * @param $txt (string) input string
+        * @param $unicode (boolean) True if we are in unicode mode, false otherwise.
+        * @return string without SHY characters.
+        * @since (4.5.019) 2009-02-28
+        * @public static
+        */
+       public static function removeSHY($txt='', $unicode=true) {
+               $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt);
+               if (!$unicode) {
+                       $txt = preg_replace('/([\\xad]{1})/', '', $txt);
+               }
+               return $txt;
+       }
+
+
+       /**
+        * Get the border mode accounting for multicell position (opens bottom side of multicell crossing pages)
+        * @param $brd (mixed) Indicates if borders must be drawn around the cell block. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul>or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $position (string) multicell position: 'start', 'middle', 'end'
+        * @param $opencell (boolean) True when the cell is left open at the page bottom, false otherwise.
+        * @return border mode array
+        * @since 4.4.002 (2008-12-09)
+        * @public static
+        */
+       public static function getBorderMode($brd, $position='start', $opencell=true) {
+               if ((!$opencell) OR empty($brd)) {
+                       return $brd;
+               }
+               if ($brd == 1) {
+                       $brd = 'LTRB';
+               }
+               if (is_string($brd)) {
+                       // convert string to array
+                       $slen = strlen($brd);
+                       $newbrd = array();
+                       for ($i = 0; $i < $slen; ++$i) {
+                               $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter');
+                       }
+                       $brd = $newbrd;
+               }
+               foreach ($brd as $border => $style) {
+                       switch ($position) {
+                               case 'start': {
+                                       if (strpos($border, 'B') !== false) {
+                                               // remove bottom line
+                                               $newkey = str_replace('B', '', $border);
+                                               if (strlen($newkey) > 0) {
+                                                       $brd[$newkey] = $style;
+                                               }
+                                               unset($brd[$border]);
+                                       }
+                                       break;
+                               }
+                               case 'middle': {
+                                       if (strpos($border, 'B') !== false) {
+                                               // remove bottom line
+                                               $newkey = str_replace('B', '', $border);
+                                               if (strlen($newkey) > 0) {
+                                                       $brd[$newkey] = $style;
+                                               }
+                                               unset($brd[$border]);
+                                               $border = $newkey;
+                                       }
+                                       if (strpos($border, 'T') !== false) {
+                                               // remove bottom line
+                                               $newkey = str_replace('T', '', $border);
+                                               if (strlen($newkey) > 0) {
+                                                       $brd[$newkey] = $style;
+                                               }
+                                               unset($brd[$border]);
+                                       }
+                                       break;
+                               }
+                               case 'end': {
+                                       if (strpos($border, 'T') !== false) {
+                                               // remove bottom line
+                                               $newkey = str_replace('T', '', $border);
+                                               if (strlen($newkey) > 0) {
+                                                       $brd[$newkey] = $style;
+                                               }
+                                               unset($brd[$border]);
+                                       }
+                                       break;
+                               }
+                       }
+               }
+               return $brd;
+       }
+
+       /**
+        * Determine whether a string is empty.
+        * @param $str (string) string to be checked
+        * @return boolean true if string is empty
+        * @since 4.5.044 (2009-04-16)
+        * @public static
+        */
+       public static function empty_string($str) {
+               return (is_null($str) OR (is_string($str) AND (strlen($str) == 0)));
+       }
+
+       /**
+        * Returns a temporary filename for caching object on filesystem.
+        * @param $type (string) Type of file (name of the subdir on the tcpdf cache folder).
+        * @return string filename.
+        * @since 4.5.000 (2008-12-31)
+        * @public static
+        */
+       public static function getObjFilename($type='tmp') {
+               return tempnam(K_PATH_CACHE, '__tcpdf_'.$type.'_'.md5(uniqid('', true).rand().microtime(true)).'_');
+       }
+
+       /**
+        * Add "\" before "\", "(" and ")"
+        * @param $s (string) string to escape.
+        * @return string escaped string.
+        * @public static
+        */
+       public static function _escape($s) {
+               // the chr(13) substitution fixes the Bugs item #1421290.
+               return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r'));
+       }
+
+       /**
+       * Escape some special characters (&lt; &gt; &amp;) for XML output.
+       * @param $str (string) Input string to convert.
+       * @return converted string
+       * @since 5.9.121 (2011-09-28)
+        * @public static
+        */
+       public static function _escapeXML($str) {
+               $replaceTable = array("\0" => '', '&' => '&amp;', '<' => '&lt;', '>' => '&gt;');
+               $str = strtr($str, $replaceTable);
+               return $str;
+       }
+
+       /**
+        * Creates a copy of a class object
+        * @param $object (object) class object to be cloned
+        * @return cloned object
+        * @since 4.5.029 (2009-03-19)
+        * @public static
+        */
+       public static function objclone($object) {
+               if (($object instanceof Imagick) AND (version_compare(phpversion('imagick'), '3.0.1') !== 1)) {
+                       // on the versions after 3.0.1 the clone() method was deprecated in favour of clone keyword
+                       return @$object->clone();
+               }
+               return @clone($object);
+       }
+
+       /**
+        * Ouput input data and compress it if possible.
+        * @param $data (string) Data to output.
+        * @param $length (int) Data length in bytes.
+        * @since 5.9.086
+        * @public static
+        */
+       public static function sendOutputData($data, $length) {
+               if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
+                       // the content length may vary if the server is using compression
+                       header('Content-Length: '.$length);
+               }
+               echo $data;
+       }
+
+       /**
+        * Replace page number aliases with number.
+        * @param $page (string) Page content.
+        * @param $replace (array) Array of replacements (array keys are replacement strings, values are alias arrays).
+        * @param $diff (int) If passed, this will be set to the total char number difference between alias and replacements.
+        * @return replaced page content and updated $diff parameter as array.
+        * @public static
+        */
+       public static function replacePageNumAliases($page, $replace, $diff=0) {
+               foreach ($replace as $rep) {
+                       foreach ($rep[3] as $a) {
+                               if (strpos($page, $a) !== false) {
+                                       $page = str_replace($a, $rep[0], $page);
+                                       $diff += ($rep[2] - $rep[1]);
+                               }
+                       }
+               }
+               return array($page, $diff);
+       }
+
+       /**
+        * Returns timestamp in seconds from formatted date-time.
+        * @param $date (string) Formatted date-time.
+        * @return int seconds.
+        * @since 5.9.152 (2012-03-23)
+        * @public static
+        */
+       public static function getTimestamp($date) {
+               if (($date[0] == 'D') AND ($date[1] == ':')) {
+                       // remove date prefix if present
+                       $date = substr($date, 2);
+               }
+               return strtotime($date);
+       }
+
+       /**
+        * Returns a formatted date-time.
+        * @param $time (int) Time in seconds.
+        * @return string escaped date string.
+        * @since 5.9.152 (2012-03-23)
+        * @public static
+        */
+       public static function getFormattedDate($time) {
+               return substr_replace(date('YmdHisO', intval($time)), '\'', (0 - 2), 0).'\'';
+       }
+
+       /**
+        * Get ULONG from string (Big Endian 32-bit unsigned integer).
+        * @param $str (string) string from where to extract value
+        * @param $offset (int) point from where to read the data
+        * @return int 32 bit value
+        * @author Nicola Asuni
+        * @since 5.2.000 (2010-06-02)
+        * @public static
+        */
+       public static function _getULONG($str, $offset) {
+               $v = unpack('Ni', substr($str, $offset, 4));
+               return $v['i'];
+       }
+
+       /**
+        * Get USHORT from string (Big Endian 16-bit unsigned integer).
+        * @param $str (string) string from where to extract value
+        * @param $offset (int) point from where to read the data
+        * @return int 16 bit value
+        * @author Nicola Asuni
+        * @since 5.2.000 (2010-06-02)
+        * @public static
+        */
+       public static function _getUSHORT($str, $offset) {
+               $v = unpack('ni', substr($str, $offset, 2));
+               return $v['i'];
+       }
+
+       /**
+        * Get SHORT from string (Big Endian 16-bit signed integer).
+        * @param $str (string) String from where to extract value.
+        * @param $offset (int) Point from where to read the data.
+        * @return int 16 bit value
+        * @author Nicola Asuni
+        * @since 5.2.000 (2010-06-02)
+        * @public static
+        */
+       public static function _getSHORT($str, $offset) {
+               $v = unpack('si', substr($str, $offset, 2));
+               return $v['i'];
+       }
+
+       /**
+        * Get FWORD from string (Big Endian 16-bit signed integer).
+        * @param $str (string) String from where to extract value.
+        * @param $offset (int) Point from where to read the data.
+        * @return int 16 bit value
+        * @author Nicola Asuni
+        * @since 5.9.123 (2011-09-30)
+        * @public static
+        */
+       public static function _getFWORD($str, $offset) {
+               $v = self::_getUSHORT($str, $offset);
+               if ($v > 0x7fff) {
+                       $v -= 0x10000;
+               }
+               return $v;
+       }
+
+       /**
+        * Get UFWORD from string (Big Endian 16-bit unsigned integer).
+        * @param $str (string) string from where to extract value
+        * @param $offset (int) point from where to read the data
+        * @return int 16 bit value
+        * @author Nicola Asuni
+        * @since 5.9.123 (2011-09-30)
+        * @public static
+        */
+       public static function _getUFWORD($str, $offset) {
+               $v = self::_getUSHORT($str, $offset);
+               return $v;
+       }
+
+       /**
+        * Get FIXED from string (32-bit signed fixed-point number (16.16).
+        * @param $str (string) string from where to extract value
+        * @param $offset (int) point from where to read the data
+        * @return int 16 bit value
+        * @author Nicola Asuni
+        * @since 5.9.123 (2011-09-30)
+        * @public static
+        */
+       public static function _getFIXED($str, $offset) {
+               // mantissa
+               $m = self::_getFWORD($str, $offset);
+               // fraction
+               $f = self::_getUSHORT($str, ($offset + 2));
+               $v = floatval(''.$m.'.'.$f.'');
+               return $v;
+       }
+
+       /**
+        * Get BYTE from string (8-bit unsigned integer).
+        * @param $str (string) String from where to extract value.
+        * @param $offset (int) Point from where to read the data.
+        * @return int 8 bit value
+        * @author Nicola Asuni
+        * @since 5.2.000 (2010-06-02)
+        * @public static
+        */
+       public static function _getBYTE($str, $offset) {
+               $v = unpack('Ci', substr($str, $offset, 1));
+               return $v['i'];
+       }
+       /**
+        * Binary-safe and URL-safe file read.
+        * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached.
+        * @param $handle (resource)
+        * @param $length (int)
+        * @return Returns the read string or FALSE in case of error.
+        * @author Nicola Asuni
+        * @since 4.5.027 (2009-03-16)
+        * @public static
+        */
+       public static function rfread($handle, $length) {
+               $data = fread($handle, $length);
+               if ($data === false) {
+                       return false;
+               }
+               $rest = ($length - strlen($data));
+               if ($rest > 0) {
+                       $data .= self::rfread($handle, $rest);
+               }
+               return $data;
+       }
+
+       /**
+        * Read a 4-byte (32 bit) integer from file.
+        * @param $f (string) file name.
+        * @return 4-byte integer
+        * @public static
+        */
+       public static function _freadint($f) {
+               $a = unpack('Ni', fread($f, 4));
+               return $a['i'];
+       }
+
+       /**
+        * Returns a string containing random data to be used as a seed for encryption methods.
+        * @param $seed (string) starting seed value
+        * @return string containing random data
+        * @author Nicola Asuni
+        * @since 5.9.006 (2010-10-19)
+        * @public static
+        */
+       public static function getRandomSeed($seed='') {
+               $seed .= microtime();
+               if (function_exists('openssl_random_pseudo_bytes') AND (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) {
+                       // this is not used on windows systems because it is very slow for a know bug
+                       $seed .= openssl_random_pseudo_bytes(512);
+               } else {
+                       for ($i = 0; $i < 23; ++$i) {
+                               $seed .= uniqid('', true);
+                       }
+               }
+               $seed .= uniqid('', true);
+               $seed .= rand();
+               $seed .= __FILE__;
+               if (isset($_SERVER['REMOTE_ADDR'])) {
+                       $seed .= $_SERVER['REMOTE_ADDR'];
+               }
+               if (isset($_SERVER['HTTP_USER_AGENT'])) {
+                       $seed .= $_SERVER['HTTP_USER_AGENT'];
+               }
+               if (isset($_SERVER['HTTP_ACCEPT'])) {
+                       $seed .= $_SERVER['HTTP_ACCEPT'];
+               }
+               if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) {
+                       $seed .= $_SERVER['HTTP_ACCEPT_ENCODING'];
+               }
+               if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
+                       $seed .= $_SERVER['HTTP_ACCEPT_LANGUAGE'];
+               }
+               if (isset($_SERVER['HTTP_ACCEPT_CHARSET'])) {
+                       $seed .= $_SERVER['HTTP_ACCEPT_CHARSET'];
+               }
+               $seed .= rand();
+               $seed .= uniqid('', true);
+               $seed .= microtime();
+               return $seed;
+       }
+
+       /**
+        * Encrypts a string using MD5 and returns it's value as a binary string.
+        * @param $str (string) input string
+        * @return String MD5 encrypted binary string
+        * @since 2.0.000 (2008-01-02)
+        * @public static
+        */
+       public static function _md5_16($str) {
+               return pack('H*', md5($str));
+       }
+
+       /**
+        * Returns the input text exrypted using AES algorithm and the specified key.
+        * This method requires mcrypt.
+        * @param $key (string) encryption key
+        * @param $text (String) input text to be encrypted
+        * @return String encrypted text
+        * @author Nicola Asuni
+        * @since 5.0.005 (2010-05-11)
+        * @public static
+        */
+       public static function _AES($key, $text) {
+               // padding (RFC 2898, PKCS #5: Password-Based Cryptography Specification Version 2.0)
+               $padding = 16 - (strlen($text) % 16);
+               $text .= str_repeat(chr($padding), $padding);
+               $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
+               $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
+               $text = $iv.$text;
+               return $text;
+       }
+
+       /**
+        * Returns the input text encrypted using RC4 algorithm and the specified key.
+        * RC4 is the standard encryption algorithm used in PDF format
+        * @param $key (string) Encryption key.
+        * @param $text (String) Input text to be encrypted.
+        * @param $last_enc_key (String) Reference to last RC4 key encrypted.
+        * @param $last_enc_key_c (String) Reference to last RC4 computed key.
+        * @return String encrypted text
+        * @since 2.0.000 (2008-01-02)
+        * @author Klemen Vodopivec, Nicola Asuni
+        * @public static
+        */
+       public static function _RC4($key, $text, &$last_enc_key, &$last_enc_key_c) {
+               if (function_exists('mcrypt_encrypt') AND ($out = @mcrypt_encrypt(MCRYPT_ARCFOUR, $key, $text, MCRYPT_MODE_STREAM, ''))) {
+                       // try to use mcrypt function if exist
+                       return $out;
+               }
+               if ($last_enc_key != $key) {
+                       $k = str_repeat($key, ((256 / strlen($key)) + 1));
+                       $rc4 = range(0, 255);
+                       $j = 0;
+                       for ($i = 0; $i < 256; ++$i) {
+                               $t = $rc4[$i];
+                               $j = ($j + $t + ord($k[$i])) % 256;
+                               $rc4[$i] = $rc4[$j];
+                               $rc4[$j] = $t;
+                       }
+                       $last_enc_key = $key;
+                       $last_enc_key_c = $rc4;
+               } else {
+                       $rc4 = $last_enc_key_c;
+               }
+               $len = strlen($text);
+               $a = 0;
+               $b = 0;
+               $out = '';
+               for ($i = 0; $i < $len; ++$i) {
+                       $a = ($a + 1) % 256;
+                       $t = $rc4[$a];
+                       $b = ($b + $t) % 256;
+                       $rc4[$a] = $rc4[$b];
+                       $rc4[$b] = $t;
+                       $k = $rc4[($rc4[$a] + $rc4[$b]) % 256];
+                       $out .= chr(ord($text[$i]) ^ $k);
+               }
+               return $out;
+       }
+
+       /**
+        * Return the premission code used on encryption (P value).
+        * @param $permissions (Array) the set of permissions (specify the ones you want to block).
+        * @param $mode (int) encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit.
+        * @since 5.0.005 (2010-05-12)
+        * @author Nicola Asuni
+        * @public static
+        */
+       public static function getUserPermissionCode($permissions, $mode=0) {
+               $options = array(
+                       'owner' => 2, // bit 2 -- inverted logic: cleared by default
+                       'print' => 4, // bit 3
+                       'modify' => 8, // bit 4
+                       'copy' => 16, // bit 5
+                       'annot-forms' => 32, // bit 6
+                       'fill-forms' => 256, // bit 9
+                       'extract' => 512, // bit 10
+                       'assemble' => 1024,// bit 11
+                       'print-high' => 2048 // bit 12
+                       );
+               $protection = 2147422012; // 32 bit: (01111111 11111111 00001111 00111100)
+               foreach ($permissions as $permission) {
+                       if (isset($options[$permission])) {
+                               if (($mode > 0) OR ($options[$permission] <= 32)) {
+                                       // set only valid permissions
+                                       if ($options[$permission] == 2) {
+                                               // the logic for bit 2 is inverted (cleared by default)
+                                               $protection += $options[$permission];
+                                       } else {
+                                               $protection -= $options[$permission];
+                                       }
+                               }
+                       }
+               }
+               return $protection;
+       }
+
+       /**
+        * Convert hexadecimal string to string
+        * @param $bs (string) byte-string to convert
+        * @return String
+        * @since 5.0.005 (2010-05-12)
+        * @author Nicola Asuni
+        * @public static
+        */
+       public static function convertHexStringToString($bs) {
+               $string = ''; // string to be returned
+               $bslength = strlen($bs);
+               if (($bslength % 2) != 0) {
+                       // padding
+                       $bs .= '0';
+                       ++$bslength;
+               }
+               for ($i = 0; $i < $bslength; $i += 2) {
+                       $string .= chr(hexdec($bs[$i].$bs[($i + 1)]));
+               }
+               return $string;
+       }
+
+       /**
+        * Convert string to hexadecimal string (byte string)
+        * @param $s (string) string to convert
+        * @return byte string
+        * @since 5.0.010 (2010-05-17)
+        * @author Nicola Asuni
+        * @public static
+        */
+       public static function convertStringToHexString($s) {
+               $bs = '';
+               $chars = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY);
+               foreach ($chars as $c) {
+                       $bs .= sprintf('%02s', dechex(ord($c)));
+               }
+               return $bs;
+       }
+
+       /**
+        * Convert encryption P value to a string of bytes, low-order byte first.
+        * @param $protection (string) 32bit encryption permission value (P value)
+        * @return String
+        * @since 5.0.005 (2010-05-12)
+        * @author Nicola Asuni
+        * @public static
+        */
+       public static function getEncPermissionsString($protection) {
+               $binprot = sprintf('%032b', $protection);
+               $str = chr(bindec(substr($binprot, 24, 8)));
+               $str .= chr(bindec(substr($binprot, 16, 8)));
+               $str .= chr(bindec(substr($binprot, 8, 8)));
+               $str .= chr(bindec(substr($binprot, 0, 8)));
+               return $str;
+       }
+
+       /**
+        * Encode a name object.
+        * @param $name (string) Name object to encode.
+        * @return (string) Encoded name object.
+        * @author Nicola Asuni
+        * @since 5.9.097 (2011-06-23)
+        * @public static
+        */
+       public static function encodeNameObject($name) {
+               $escname = '';
+               $length = strlen($name);
+               for ($i = 0; $i < $length; ++$i) {
+                       $chr = $name[$i];
+                       if (preg_match('/[0-9a-zA-Z#_=-]/', $chr) == 1) {
+                               $escname .= $chr;
+                       } else {
+                               $escname .= sprintf('#%02X', ord($chr));
+                       }
+               }
+               return $escname;
+       }
+
+       /**
+        * Convert JavaScript form fields properties array to Annotation Properties array.
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $spot_colors (array) Reference to spot colors array.
+        * @param $rtl (boolean) True if in Right-To-Left text direction mode, false otherwise.
+        * @return array of annotation properties
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-06)
+        * @public static
+        */
+       public static function getAnnotOptFromJSProp($prop, &$spot_colors, $rtl=false) {
+               if (isset($prop['aopt']) AND is_array($prop['aopt'])) {
+                       // the annotation options area lready defined
+                       return $prop['aopt'];
+               }
+               $opt = array(); // value to be returned
+               // alignment: Controls how the text is laid out within the text field.
+               if (isset($prop['alignment'])) {
+                       switch ($prop['alignment']) {
+                               case 'left': {
+                                       $opt['q'] = 0;
+                                       break;
+                               }
+                               case 'center': {
+                                       $opt['q'] = 1;
+                                       break;
+                               }
+                               case 'right': {
+                                       $opt['q'] = 2;
+                                       break;
+                               }
+                               default: {
+                                       $opt['q'] = ($rtl)?2:0;
+                                       break;
+                               }
+                       }
+               }
+               // lineWidth: Specifies the thickness of the border when stroking the perimeter of a field's rectangle.
+               if (isset($prop['lineWidth'])) {
+                       $linewidth = intval($prop['lineWidth']);
+               } else {
+                       $linewidth = 1;
+               }
+               // borderStyle: The border style for a field.
+               if (isset($prop['borderStyle'])) {
+                       switch ($prop['borderStyle']) {
+                               case 'border.d':
+                               case 'dashed': {
+                                       $opt['border'] = array(0, 0, $linewidth, array(3, 2));
+                                       $opt['bs'] = array('w'=>$linewidth, 's'=>'D', 'd'=>array(3, 2));
+                                       break;
+                               }
+                               case 'border.b':
+                               case 'beveled': {
+                                       $opt['border'] = array(0, 0, $linewidth);
+                                       $opt['bs'] = array('w'=>$linewidth, 's'=>'B');
+                                       break;
+                               }
+                               case 'border.i':
+                               case 'inset': {
+                                       $opt['border'] = array(0, 0, $linewidth);
+                                       $opt['bs'] = array('w'=>$linewidth, 's'=>'I');
+                                       break;
+                               }
+                               case 'border.u':
+                               case 'underline': {
+                                       $opt['border'] = array(0, 0, $linewidth);
+                                       $opt['bs'] = array('w'=>$linewidth, 's'=>'U');
+                                       break;
+                               }
+                               case 'border.s':
+                               case 'solid': {
+                                       $opt['border'] = array(0, 0, $linewidth);
+                                       $opt['bs'] = array('w'=>$linewidth, 's'=>'S');
+                                       break;
+                               }
+                               default: {
+                                       break;
+                               }
+                       }
+               }
+               if (isset($prop['border']) AND is_array($prop['border'])) {
+                       $opt['border'] = $prop['border'];
+               }
+               if (!isset($opt['mk'])) {
+                       $opt['mk'] = array();
+               }
+               if (!isset($opt['mk']['if'])) {
+                       $opt['mk']['if'] = array();
+               }
+               $opt['mk']['if']['a'] = array(0.5, 0.5);
+               // buttonAlignX: Controls how space is distributed from the left of the button face with respect to the icon.
+               if (isset($prop['buttonAlignX'])) {
+                       $opt['mk']['if']['a'][0] = $prop['buttonAlignX'];
+               }
+               // buttonAlignY: Controls how unused space is distributed from the bottom of the button face with respect to the icon.
+               if (isset($prop['buttonAlignY'])) {
+                       $opt['mk']['if']['a'][1] = $prop['buttonAlignY'];
+               }
+               // buttonFitBounds: If true, the extent to which the icon may be scaled is set to the bounds of the button field.
+               if (isset($prop['buttonFitBounds']) AND ($prop['buttonFitBounds'] == 'true')) {
+                       $opt['mk']['if']['fb'] = true;
+               }
+               // buttonScaleHow: Controls how the icon is scaled (if necessary) to fit inside the button face.
+               if (isset($prop['buttonScaleHow'])) {
+                       switch ($prop['buttonScaleHow']) {
+                               case 'scaleHow.proportional': {
+                                       $opt['mk']['if']['s'] = 'P';
+                                       break;
+                               }
+                               case 'scaleHow.anamorphic': {
+                                       $opt['mk']['if']['s'] = 'A';
+                                       break;
+                               }
+                       }
+               }
+               // buttonScaleWhen: Controls when an icon is scaled to fit inside the button face.
+               if (isset($prop['buttonScaleWhen'])) {
+                       switch ($prop['buttonScaleWhen']) {
+                               case 'scaleWhen.always': {
+                                       $opt['mk']['if']['sw'] = 'A';
+                                       break;
+                               }
+                               case 'scaleWhen.never': {
+                                       $opt['mk']['if']['sw'] = 'N';
+                                       break;
+                               }
+                               case 'scaleWhen.tooBig': {
+                                       $opt['mk']['if']['sw'] = 'B';
+                                       break;
+                               }
+                               case 'scaleWhen.tooSmall': {
+                                       $opt['mk']['if']['sw'] = 'S';
+                                       break;
+                               }
+                       }
+               }
+               // buttonPosition: Controls how the text and the icon of the button are positioned with respect to each other within the button face.
+               if (isset($prop['buttonPosition'])) {
+                       switch ($prop['buttonPosition']) {
+                               case 0:
+                               case 'position.textOnly': {
+                                       $opt['mk']['tp'] = 0;
+                                       break;
+                               }
+                               case 1:
+                               case 'position.iconOnly': {
+                                       $opt['mk']['tp'] = 1;
+                                       break;
+                               }
+                               case 2:
+                               case 'position.iconTextV': {
+                                       $opt['mk']['tp'] = 2;
+                                       break;
+                               }
+                               case 3:
+                               case 'position.textIconV': {
+                                       $opt['mk']['tp'] = 3;
+                                       break;
+                               }
+                               case 4:
+                               case 'position.iconTextH': {
+                                       $opt['mk']['tp'] = 4;
+                                       break;
+                               }
+                               case 5:
+                               case 'position.textIconH': {
+                                       $opt['mk']['tp'] = 5;
+                                       break;
+                               }
+                               case 6:
+                               case 'position.overlay': {
+                                       $opt['mk']['tp'] = 6;
+                                       break;
+                               }
+                       }
+               }
+               // fillColor: Specifies the background color for a field.
+               if (isset($prop['fillColor'])) {
+                       if (is_array($prop['fillColor'])) {
+                               $opt['mk']['bg'] = $prop['fillColor'];
+                       } else {
+                               $opt['mk']['bg'] = TCPDF_COLORS::convertHTMLColorToDec($prop['fillColor'], $spot_colors);
+                       }
+               }
+               // strokeColor: Specifies the stroke color for a field that is used to stroke the rectangle of the field with a line as large as the line width.
+               if (isset($prop['strokeColor'])) {
+                       if (is_array($prop['strokeColor'])) {
+                               $opt['mk']['bc'] = $prop['strokeColor'];
+                       } else {
+                               $opt['mk']['bc'] = TCPDF_COLORS::convertHTMLColorToDec($prop['strokeColor'], $spot_colors);
+                       }
+               }
+               // rotation: The rotation of a widget in counterclockwise increments.
+               if (isset($prop['rotation'])) {
+                       $opt['mk']['r'] = $prop['rotation'];
+               }
+               // charLimit: Limits the number of characters that a user can type into a text field.
+               if (isset($prop['charLimit'])) {
+                       $opt['maxlen'] = intval($prop['charLimit']);
+               }
+               if (!isset($ff)) {
+                       $ff = 0; // default value
+               }
+               // readonly: The read-only characteristic of a field. If a field is read-only, the user can see the field but cannot change it.
+               if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) {
+                       $ff += 1 << 0;
+               }
+               // required: Specifies whether a field requires a value.
+               if (isset($prop['required']) AND ($prop['required'] == 'true')) {
+                       $ff += 1 << 1;
+               }
+               // multiline: Controls how text is wrapped within the field.
+               if (isset($prop['multiline']) AND ($prop['multiline'] == 'true')) {
+                       $ff += 1 << 12;
+               }
+               // password: Specifies whether the field should display asterisks when data is entered in the field.
+               if (isset($prop['password']) AND ($prop['password'] == 'true')) {
+                       $ff += 1 << 13;
+               }
+               // NoToggleToOff: If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect.
+               if (isset($prop['NoToggleToOff']) AND ($prop['NoToggleToOff'] == 'true')) {
+                       $ff += 1 << 14;
+               }
+               // Radio: If set, the field is a set of radio buttons.
+               if (isset($prop['Radio']) AND ($prop['Radio'] == 'true')) {
+                       $ff += 1 << 15;
+               }
+               // Pushbutton: If set, the field is a pushbutton that does not retain a permanent value.
+               if (isset($prop['Pushbutton']) AND ($prop['Pushbutton'] == 'true')) {
+                       $ff += 1 << 16;
+               }
+               // Combo: If set, the field is a combo box; if clear, the field is a list box.
+               if (isset($prop['Combo']) AND ($prop['Combo'] == 'true')) {
+                       $ff += 1 << 17;
+               }
+               // editable: Controls whether a combo box is editable.
+               if (isset($prop['editable']) AND ($prop['editable'] == 'true')) {
+                       $ff += 1 << 18;
+               }
+               // Sort: If set, the field's option items shall be sorted alphabetically.
+               if (isset($prop['Sort']) AND ($prop['Sort'] == 'true')) {
+                       $ff += 1 << 19;
+               }
+               // fileSelect: If true, sets the file-select flag in the Options tab of the text field (Field is Used for File Selection).
+               if (isset($prop['fileSelect']) AND ($prop['fileSelect'] == 'true')) {
+                       $ff += 1 << 20;
+               }
+               // multipleSelection: If true, indicates that a list box allows a multiple selection of items.
+               if (isset($prop['multipleSelection']) AND ($prop['multipleSelection'] == 'true')) {
+                       $ff += 1 << 21;
+               }
+               // doNotSpellCheck: If true, spell checking is not performed on this editable text field.
+               if (isset($prop['doNotSpellCheck']) AND ($prop['doNotSpellCheck'] == 'true')) {
+                       $ff += 1 << 22;
+               }
+               // doNotScroll: If true, the text field does not scroll and the user, therefore, is limited by the rectangular region designed for the field.
+               if (isset($prop['doNotScroll']) AND ($prop['doNotScroll'] == 'true')) {
+                       $ff += 1 << 23;
+               }
+               // comb: If set to true, the field background is drawn as series of boxes (one for each character in the value of the field) and each character of the content is drawn within those boxes. The number of boxes drawn is determined from the charLimit property. It applies only to text fields. The setter will also raise if any of the following field properties are also set multiline, password, and fileSelect. A side-effect of setting this property is that the doNotScroll property is also set.
+               if (isset($prop['comb']) AND ($prop['comb'] == 'true')) {
+                       $ff += 1 << 24;
+               }
+               // radiosInUnison: If false, even if a group of radio buttons have the same name and export value, they behave in a mutually exclusive fashion, like HTML radio buttons.
+               if (isset($prop['radiosInUnison']) AND ($prop['radiosInUnison'] == 'true')) {
+                       $ff += 1 << 25;
+               }
+               // richText: If true, the field allows rich text formatting.
+               if (isset($prop['richText']) AND ($prop['richText'] == 'true')) {
+                       $ff += 1 << 25;
+               }
+               // commitOnSelChange: Controls whether a field value is committed after a selection change.
+               if (isset($prop['commitOnSelChange']) AND ($prop['commitOnSelChange'] == 'true')) {
+                       $ff += 1 << 26;
+               }
+               $opt['ff'] = $ff;
+               // defaultValue: The default value of a field - that is, the value that the field is set to when the form is reset.
+               if (isset($prop['defaultValue'])) {
+                       $opt['dv'] = $prop['defaultValue'];
+               }
+               $f = 4; // default value for annotation flags
+               // readonly: The read-only characteristic of a field. If a field is read-only, the user can see the field but cannot change it.
+               if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) {
+                       $f += 1 << 6;
+               }
+               // display: Controls whether the field is hidden or visible on screen and in print.
+               if (isset($prop['display'])) {
+                       if ($prop['display'] == 'display.visible') {
+                               //
+                       } elseif ($prop['display'] == 'display.hidden') {
+                               $f += 1 << 1;
+                       } elseif ($prop['display'] == 'display.noPrint') {
+                               $f -= 1 << 2;
+                       } elseif ($prop['display'] == 'display.noView') {
+                               $f += 1 << 5;
+                       }
+               }
+               $opt['f'] = $f;
+               // currentValueIndices: Reads and writes single or multiple values of a list box or combo box.
+               if (isset($prop['currentValueIndices']) AND is_array($prop['currentValueIndices'])) {
+                       $opt['i'] = $prop['currentValueIndices'];
+               }
+               // value: The value of the field data that the user has entered.
+               if (isset($prop['value'])) {
+                       if (is_array($prop['value'])) {
+                               $opt['opt'] = array();
+                               foreach ($prop['value'] AS $key => $optval) {
+                                       // exportValues: An array of strings representing the export values for the field.
+                                       if (isset($prop['exportValues'][$key])) {
+                                               $opt['opt'][$key] = array($prop['exportValues'][$key], $prop['value'][$key]);
+                                       } else {
+                                               $opt['opt'][$key] = $prop['value'][$key];
+                                       }
+                               }
+                       } else {
+                               $opt['v'] = $prop['value'];
+                       }
+               }
+               // richValue: This property specifies the text contents and formatting of a rich text field.
+               if (isset($prop['richValue'])) {
+                       $opt['rv'] = $prop['richValue'];
+               }
+               // submitName: If nonempty, used during form submission instead of name. Only applicable if submitting in HTML format (that is, URL-encoded).
+               if (isset($prop['submitName'])) {
+                       $opt['tm'] = $prop['submitName'];
+               }
+               // name: Fully qualified field name.
+               if (isset($prop['name'])) {
+                       $opt['t'] = $prop['name'];
+               }
+               // userName: The user name (short description string) of the field.
+               if (isset($prop['userName'])) {
+                       $opt['tu'] = $prop['userName'];
+               }
+               // highlight: Defines how a button reacts when a user clicks it.
+               if (isset($prop['highlight'])) {
+                       switch ($prop['highlight']) {
+                               case 'none':
+                               case 'highlight.n': {
+                                       $opt['h'] = 'N';
+                                       break;
+                               }
+                               case 'invert':
+                               case 'highlight.i': {
+                                       $opt['h'] = 'i';
+                                       break;
+                               }
+                               case 'push':
+                               case 'highlight.p': {
+                                       $opt['h'] = 'P';
+                                       break;
+                               }
+                               case 'outline':
+                               case 'highlight.o': {
+                                       $opt['h'] = 'O';
+                                       break;
+                               }
+                       }
+               }
+               // Unsupported options:
+               // - calcOrderIndex: Changes the calculation order of fields in the document.
+               // - delay: Delays the redrawing of a field's appearance.
+               // - defaultStyle: This property defines the default style attributes for the form field.
+               // - style: Allows the user to set the glyph style of a check box or radio button.
+               // - textColor, textFont, textSize
+               return $opt;
+       }
+
+       /**
+        * Format the page numbers.
+        * This method can be overriden for custom formats.
+        * @param $num (int) page number
+        * @since 4.2.005 (2008-11-06)
+        * @public static
+        */
+       public static function formatPageNumber($num) {
+               return number_format((float)$num, 0, '', '.');
+       }
+
+       /**
+        * Format the page numbers on the Table Of Content.
+        * This method can be overriden for custom formats.
+        * @param $num (int) page number
+        * @since 4.5.001 (2009-01-04)
+        * @see addTOC(), addHTMLTOC()
+        * @public static
+        */
+       public static function formatTOCPageNumber($num) {
+               return number_format((float)$num, 0, '', '.');
+       }
+
+       /**
+        * Extracts the CSS properties from a CSS string.
+        * @param $cssdata (string) string containing CSS definitions.
+        * @return An array where the keys are the CSS selectors and the values are the CSS properties.
+        * @author Nicola Asuni
+        * @since 5.1.000 (2010-05-25)
+        * @public static
+        */
+       public static function extractCSSproperties($cssdata) {
+               if (empty($cssdata)) {
+                       return array();
+               }
+               // remove comments
+               $cssdata = preg_replace('/\/\*[^\*]*\*\//', '', $cssdata);
+               // remove newlines and multiple spaces
+               $cssdata = preg_replace('/[\s]+/', ' ', $cssdata);
+               // remove some spaces
+               $cssdata = preg_replace('/[\s]*([;:\{\}]{1})[\s]*/', '\\1', $cssdata);
+               // remove empty blocks
+               $cssdata = preg_replace('/([^\}\{]+)\{\}/', '', $cssdata);
+               // replace media type parenthesis
+               $cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1§', $cssdata);
+               $cssdata = preg_replace('/\}\}/si', '}§', $cssdata);
+               // trim string
+               $cssdata = trim($cssdata);
+               // find media blocks (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv)
+               $cssblocks = array();
+               $matches = array();
+               if (preg_match_all('/@media[\s]+([^\§]*)§([^§]*)§/i', $cssdata, $matches) > 0) {
+                       foreach ($matches[1] as $key => $type) {
+                               $cssblocks[$type] = $matches[2][$key];
+                       }
+                       // remove media blocks
+                       $cssdata = preg_replace('/@media[\s]+([^\§]*)§([^§]*)§/i', '', $cssdata);
+               }
+               // keep 'all' and 'print' media, other media types are discarded
+               if (isset($cssblocks['all']) AND !empty($cssblocks['all'])) {
+                       $cssdata .= $cssblocks['all'];
+               }
+               if (isset($cssblocks['print']) AND !empty($cssblocks['print'])) {
+                       $cssdata .= $cssblocks['print'];
+               }
+               // reset css blocks array
+               $cssblocks = array();
+               $matches = array();
+               // explode css data string into array
+               if (substr($cssdata, -1) == '}') {
+                       // remove last parethesis
+                       $cssdata = substr($cssdata, 0, -1);
+               }
+               $matches = explode('}', $cssdata);
+               foreach ($matches as $key => $block) {
+                       // index 0 contains the CSS selector, index 1 contains CSS properties
+                       $cssblocks[$key] = explode('{', $block);
+                       if (!isset($cssblocks[$key][1])) {
+                               // remove empty definitions
+                               unset($cssblocks[$key]);
+                       }
+               }
+               // split groups of selectors (comma-separated list of selectors)
+               foreach ($cssblocks as $key => $block) {
+                       if (strpos($block[0], ',') > 0) {
+                               $selectors = explode(',', $block[0]);
+                               foreach ($selectors as $sel) {
+                                       $cssblocks[] = array(0 => trim($sel), 1 => $block[1]);
+                               }
+                               unset($cssblocks[$key]);
+                       }
+               }
+               // covert array to selector => properties
+               $cssdata = array();
+               foreach ($cssblocks as $block) {
+                       $selector = $block[0];
+                       // calculate selector's specificity
+                       $matches = array();
+                       $a = 0; // the declaration is not from is a 'style' attribute
+                       $b = intval(preg_match_all('/[\#]/', $selector, $matches)); // number of ID attributes
+                       $c = intval(preg_match_all('/[\[\.]/', $selector, $matches)); // number of other attributes
+                       $c += intval(preg_match_all('/[\:]link|visited|hover|active|focus|target|lang|enabled|disabled|checked|indeterminate|root|nth|first|last|only|empty|contains|not/i', $selector, $matches)); // number of pseudo-classes
+                       $d = intval(preg_match_all('/[\>\+\~\s]{1}[a-zA-Z0-9]+/', ' '.$selector, $matches)); // number of element names
+                       $d += intval(preg_match_all('/[\:][\:]/', $selector, $matches)); // number of pseudo-elements
+                       $specificity = $a.$b.$c.$d;
+                       // add specificity to the beginning of the selector
+                       $cssdata[$specificity.' '.$selector] = $block[1];
+               }
+               // sort selectors alphabetically to account for specificity
+               ksort($cssdata, SORT_STRING);
+               // return array
+               return $cssdata;
+       }
+
+       /**
+        * Cleanup HTML code (requires HTML Tidy library).
+        * @param $html (string) htmlcode to fix
+        * @param $default_css (string) CSS commands to add
+        * @param $tagvs (array) parameters for setHtmlVSpace method
+        * @param $tidy_options (array) options for tidy_parse_string function
+        * @param $tagvspaces (array) Array of vertical spaces for tags.
+        * @return string XHTML code cleaned up
+        * @author Nicola Asuni
+        * @since 5.9.017 (2010-11-16)
+        * @see setHtmlVSpace()
+        * @public static
+        */
+       public static function fixHTMLCode($html, $default_css='', $tagvs='', $tidy_options='', &$tagvspaces) {
+               // configure parameters for HTML Tidy
+               if ($tidy_options === '') {
+                       $tidy_options = array (
+                               'clean' => 1,
+                               'drop-empty-paras' => 0,
+                               'drop-proprietary-attributes' => 1,
+                               'fix-backslash' => 1,
+                               'hide-comments' => 1,
+                               'join-styles' => 1,
+                               'lower-literals' => 1,
+                               'merge-divs' => 1,
+                               'merge-spans' => 1,
+                               'output-xhtml' => 1,
+                               'word-2000' => 1,
+                               'wrap' => 0,
+                               'output-bom' => 0,
+                               //'char-encoding' => 'utf8',
+                               //'input-encoding' => 'utf8',
+                               //'output-encoding' => 'utf8'
+                       );
+               }
+               // clean up the HTML code
+               $tidy = tidy_parse_string($html, $tidy_options);
+               // fix the HTML
+               $tidy->cleanRepair();
+               // get the CSS part
+               $tidy_head = tidy_get_head($tidy);
+               $css = $tidy_head->value;
+               $css = preg_replace('/<style([^>]+)>/ims', '<style>', $css);
+               $css = preg_replace('/<\/style>(.*)<style>/ims', "\n", $css);
+               $css = str_replace('/*<![CDATA[*/', '', $css);
+               $css = str_replace('/*]]>*/', '', $css);
+               preg_match('/<style>(.*)<\/style>/ims', $css, $matches);
+               if (isset($matches[1])) {
+                       $css = strtolower($matches[1]);
+               } else {
+                       $css = '';
+               }
+               // include default css
+               $css = '<style>'.$default_css.$css.'</style>';
+               // get the body part
+               $tidy_body = tidy_get_body($tidy);
+               $html = $tidy_body->value;
+               // fix some self-closing tags
+               $html = str_replace('<br>', '<br />', $html);
+               // remove some empty tag blocks
+               $html = preg_replace('/<div([^\>]*)><\/div>/', '', $html);
+               $html = preg_replace('/<p([^\>]*)><\/p>/', '', $html);
+               if ($tagvs !== '') {
+                       // set vertical space for some XHTML tags
+                       $tagvspaces = $tagvs;
+               }
+               // return the cleaned XHTML code + CSS
+               return $css.$html;
+       }
+
+       /**
+        * Returns true if the CSS selector is valid for the selected HTML tag
+        * @param $dom (array) array of HTML tags and properties
+        * @param $key (int) key of the current HTML tag
+        * @param $selector (string) CSS selector string
+        * @return true if the selector is valid, false otherwise
+        * @since 5.1.000 (2010-05-25)
+        * @public static
+        */
+       public static function isValidCSSSelectorForTag($dom, $key, $selector) {
+               $valid = false; // value to be returned
+               $tag = $dom[$key]['value'];
+               $class = array();
+               if (isset($dom[$key]['attribute']['class']) AND !empty($dom[$key]['attribute']['class'])) {
+                       $class = explode(' ', strtolower($dom[$key]['attribute']['class']));
+               }
+               $id = '';
+               if (isset($dom[$key]['attribute']['id']) AND !empty($dom[$key]['attribute']['id'])) {
+                       $id = strtolower($dom[$key]['attribute']['id']);
+               }
+               $selector = preg_replace('/([\>\+\~\s]{1})([\.]{1})([^\>\+\~\s]*)/si', '\\1*.\\3', $selector);
+               $matches = array();
+               if (preg_match_all('/([\>\+\~\s]{1})([a-zA-Z0-9\*]+)([^\>\+\~\s]*)/si', $selector, $matches, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE) > 0) {
+                       $parentop = array_pop($matches[1]);
+                       $operator = $parentop[0];
+                       $offset = $parentop[1];
+                       $lasttag = array_pop($matches[2]);
+                       $lasttag = strtolower(trim($lasttag[0]));
+                       if (($lasttag == '*') OR ($lasttag == $tag)) {
+                               // the last element on selector is our tag or 'any tag'
+                               $attrib = array_pop($matches[3]);
+                               $attrib = strtolower(trim($attrib[0]));
+                               if (!empty($attrib)) {
+                                       // check if matches class, id, attribute, pseudo-class or pseudo-element
+                                       switch ($attrib[0]) {
+                                               case '.': { // class
+                                                       if (in_array(substr($attrib, 1), $class)) {
+                                                               $valid = true;
+                                                       }
+                                                       break;
+                                               }
+                                               case '#': { // ID
+                                                       if (substr($attrib, 1) == $id) {
+                                                               $valid = true;
+                                                       }
+                                                       break;
+                                               }
+                                               case '[': { // attribute
+                                                       $attrmatch = array();
+                                                       if (preg_match('/\[([a-zA-Z0-9]*)[\s]*([\~\^\$\*\|\=]*)[\s]*["]?([^"\]]*)["]?\]/i', $attrib, $attrmatch) > 0) {
+                                                               $att = strtolower($attrmatch[1]);
+                                                               $val = $attrmatch[3];
+                                                               if (isset($dom[$key]['attribute'][$att])) {
+                                                                       switch ($attrmatch[2]) {
+                                                                               case '=': {
+                                                                                       if ($dom[$key]['attribute'][$att] == $val) {
+                                                                                               $valid = true;
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case '~=': {
+                                                                                       if (in_array($val, explode(' ', $dom[$key]['attribute'][$att]))) {
+                                                                                               $valid = true;
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case '^=': {
+                                                                                       if ($val == substr($dom[$key]['attribute'][$att], 0, strlen($val))) {
+                                                                                               $valid = true;
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case '$=': {
+                                                                                       if ($val == substr($dom[$key]['attribute'][$att], -strlen($val))) {
+                                                                                               $valid = true;
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case '*=': {
+                                                                                       if (strpos($dom[$key]['attribute'][$att], $val) !== false) {
+                                                                                               $valid = true;
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case '|=': {
+                                                                                       if ($dom[$key]['attribute'][$att] == $val) {
+                                                                                               $valid = true;
+                                                                                       } elseif (preg_match('/'.$val.'[\-]{1}/i', $dom[$key]['attribute'][$att]) > 0) {
+                                                                                               $valid = true;
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               default: {
+                                                                                       $valid = true;
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case ':': { // pseudo-class or pseudo-element
+                                                       if ($attrib[1] == ':') { // pseudo-element
+                                                               // pseudo-elements are not supported!
+                                                               // (::first-line, ::first-letter, ::before, ::after)
+                                                       } else { // pseudo-class
+                                                               // pseudo-classes are not supported!
+                                                               // (:root, :nth-child(n), :nth-last-child(n), :nth-of-type(n), :nth-last-of-type(n), :first-child, :last-child, :first-of-type, :last-of-type, :only-child, :only-of-type, :empty, :link, :visited, :active, :hover, :focus, :target, :lang(fr), :enabled, :disabled, :checked)
+                                                       }
+                                                       break;
+                                               }
+                                       } // end of switch
+                               } else {
+                                       $valid = true;
+                               }
+                               if ($valid AND ($offset > 0)) {
+                                       $valid = false;
+                                       // check remaining selector part
+                                       $selector = substr($selector, 0, $offset);
+                                       switch ($operator) {
+                                               case ' ': { // descendant of an element
+                                                       while ($dom[$key]['parent'] > 0) {
+                                                               if (self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector)) {
+                                                                       $valid = true;
+                                                                       break;
+                                                               } else {
+                                                                       $key = $dom[$key]['parent'];
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case '>': { // child of an element
+                                                       $valid = self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector);
+                                                       break;
+                                               }
+                                               case '+': { // immediately preceded by an element
+                                                       for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) {
+                                                               if ($dom[$i]['tag'] AND $dom[$i]['opening']) {
+                                                                       $valid = self::isValidCSSSelectorForTag($dom, $i, $selector);
+                                                                       break;
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case '~': { // preceded by an element
+                                                       for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) {
+                                                               if ($dom[$i]['tag'] AND $dom[$i]['opening']) {
+                                                                       if (self::isValidCSSSelectorForTag($dom, $i, $selector)) {
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               return $valid;
+       }
+
+       /**
+        * Returns the styles array that apply for the selected HTML tag.
+        * @param $dom (array) array of HTML tags and properties
+        * @param $key (int) key of the current HTML tag
+        * @param $css (array) array of CSS properties
+        * @return array containing CSS properties
+        * @since 5.1.000 (2010-05-25)
+        * @public static
+        */
+       public static function getCSSdataArray($dom, $key, $css) {
+               $cssarray = array(); // style to be returned
+               // get parent CSS selectors
+               $selectors = array();
+               if (isset($dom[($dom[$key]['parent'])]['csssel'])) {
+                       $selectors = $dom[($dom[$key]['parent'])]['csssel'];
+               }
+               // get all styles that apply
+               foreach($css as $selector => $style) {
+                       $pos = strpos($selector, ' ');
+                       // get specificity
+                       $specificity = substr($selector, 0, $pos);
+                       // remove specificity
+                       $selector = substr($selector, $pos);
+                       // check if this selector apply to current tag
+                       if (self::isValidCSSSelectorForTag($dom, $key, $selector)) {
+                               if (!in_array($selector, $selectors)) {
+                                       // add style if not already added on parent selector
+                                       $cssarray[] = array('k' => $selector, 's' => $specificity, 'c' => $style);
+                                       $selectors[] = $selector;
+                               }
+                       }
+               }
+               if (isset($dom[$key]['attribute']['style'])) {
+                       // attach inline style (latest properties have high priority)
+                       $cssarray[] = array('k' => '', 's' => '1000', 'c' => $dom[$key]['attribute']['style']);
+               }
+               // order the css array to account for specificity
+               $cssordered = array();
+               foreach ($cssarray as $key => $val) {
+                       $skey = sprintf('%04d', $key);
+                       $cssordered[$val['s'].'_'.$skey] = $val;
+               }
+               // sort selectors alphabetically to account for specificity
+               ksort($cssordered, SORT_STRING);
+               return array($selectors, $cssordered);
+       }
+
+       /**
+        * Compact CSS data array into single string.
+        * @param $css (array) array of CSS properties
+        * @return string containing merged CSS properties
+        * @since 5.9.070 (2011-04-19)
+        * @public static
+        */
+       public static function getTagStyleFromCSSarray($css) {
+               $tagstyle = ''; // value to be returned
+               foreach ($css as $style) {
+                       // split single css commands
+                       $csscmds = explode(';', $style['c']);
+                       foreach ($csscmds as $cmd) {
+                               if (!empty($cmd)) {
+                                       $pos = strpos($cmd, ':');
+                                       if ($pos !== false) {
+                                               $cmd = substr($cmd, 0, ($pos + 1));
+                                               if (strpos($tagstyle, $cmd) !== false) {
+                                                       // remove duplicate commands (last commands have high priority)
+                                                       $tagstyle = preg_replace('/'.$cmd.'[^;]+/i', '', $tagstyle);
+                                               }
+                                       }
+                               }
+                       }
+                       $tagstyle .= ';'.$style['c'];
+               }
+               // remove multiple semicolons
+               $tagstyle = preg_replace('/[;]+/', ';', $tagstyle);
+               return $tagstyle;
+       }
+
+       /**
+        * Returns the Roman representation of an integer number
+        * @param $number (int) number to convert
+        * @return string roman representation of the specified number
+        * @since 4.4.004 (2008-12-10)
+        * @public static
+        */
+       public static function intToRoman($number) {
+               $roman = '';
+               while ($number >= 1000) {
+                       $roman .= 'M';
+                       $number -= 1000;
+               }
+               while ($number >= 900) {
+                       $roman .= 'CM';
+                       $number -= 900;
+               }
+               while ($number >= 500) {
+                       $roman .= 'D';
+                       $number -= 500;
+               }
+               while ($number >= 400) {
+                       $roman .= 'CD';
+                       $number -= 400;
+               }
+               while ($number >= 100) {
+                       $roman .= 'C';
+                       $number -= 100;
+               }
+               while ($number >= 90) {
+                       $roman .= 'XC';
+                       $number -= 90;
+               }
+               while ($number >= 50) {
+                       $roman .= 'L';
+                       $number -= 50;
+               }
+               while ($number >= 40) {
+                       $roman .= 'XL';
+                       $number -= 40;
+               }
+               while ($number >= 10) {
+                       $roman .= 'X';
+                       $number -= 10;
+               }
+               while ($number >= 9) {
+                       $roman .= 'IX';
+                       $number -= 9;
+               }
+               while ($number >= 5) {
+                       $roman .= 'V';
+                       $number -= 5;
+               }
+               while ($number >= 4) {
+                       $roman .= 'IV';
+                       $number -= 4;
+               }
+               while ($number >= 1) {
+                       $roman .= 'I';
+                       --$number;
+               }
+               return $roman;
+       }
+
+       /**
+        * Find position of last occurrence of a substring in a string
+        * @param $haystack (string) The string to search in.
+        * @param $needle (string) substring to search.
+        * @param $offset (int) May be specified to begin searching an arbitrary number of characters into the string.
+        * @return Returns the position where the needle exists. Returns FALSE if the needle was not found.
+        * @since 4.8.038 (2010-03-13)
+        * @public static
+        */
+       public static function revstrpos($haystack, $needle, $offset = 0) {
+               $length = strlen($haystack);
+               $offset = ($offset > 0)?($length - $offset):abs($offset);
+               $pos = strpos(strrev($haystack), strrev($needle), $offset);
+               return ($pos === false)?false:($length - $pos - strlen($needle));
+       }
+
+       /**
+        * Serialize an array of parameters to be used with TCPDF tag in HTML code.
+        * @param $data (array) parameters array
+        * @return string containing serialized data
+        * @since 4.9.006 (2010-04-02)
+        * @public static
+        */
+       public static function serializeTCPDFtagParameters($data) {
+               return urlencode(json_encode($data));
+       }
+
+       /**
+        * Unserialize parameters to be used with TCPDF tag in HTML code.
+        * @param $data (string) serialized data
+        * @return array containing unserialized data
+        * @public static
+        */
+       public static function unserializeTCPDFtagParameters($data) {
+               return json_decode(urldecode($data), true);
+       }
+
+       /**
+        * Returns an array of hyphenation patterns.
+        * @param $file (string) TEX file containing hypenation patterns. TEX pattrns can be downloaded from http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/
+        * @return array of hyphenation patterns
+        * @author Nicola Asuni
+        * @since 4.9.012 (2010-04-12)
+        * @public static
+        */
+       public static function getHyphenPatternsFromTEX($file) {
+               // TEX patterns are available at:
+               // http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/
+               $data = file_get_contents($file);
+               $patterns = array();
+               // remove comments
+               $data = preg_replace('/\%[^\n]*/', '', $data);
+               // extract the patterns part
+               preg_match('/\\\\patterns\{([^\}]*)\}/i', $data, $matches);
+               $data = trim(substr($matches[0], 10, -1));
+               // extract each pattern
+               $patterns_array = preg_split('/[\s]+/', $data);
+               // create new language array of patterns
+               $patterns = array();
+               foreach($patterns_array as $val) {
+                       if (!TCPDF_STATIC::empty_string($val)) {
+                               $val = trim($val);
+                               $val = str_replace('\'', '\\\'', $val);
+                               $key = preg_replace('/[0-9]+/', '', $val);
+                               $patterns[$key] = $val;
+                       }
+               }
+               return $patterns;
+       }
+
+       /**
+        * Get the Path-Painting Operators.
+        * @param $style (string) Style of rendering. Possible values are:
+        * <ul>
+        *   <li>S or D: Stroke the path.</li>
+        *   <li>s or d: Close and stroke the path.</li>
+        *   <li>f or F: Fill the path, using the nonzero winding number rule to determine the region to fill.</li>
+        *   <li>f* or F*: Fill the path, using the even-odd rule to determine the region to fill.</li>
+        *   <li>B or FD or DF: Fill and then stroke the path, using the nonzero winding number rule to determine the region to fill.</li>
+        *   <li>B* or F*D or DF*: Fill and then stroke the path, using the even-odd rule to determine the region to fill.</li>
+        *   <li>b or fd or df: Close, fill, and then stroke the path, using the nonzero winding number rule to determine the region to fill.</li>
+        *   <li>b or f*d or df*: Close, fill, and then stroke the path, using the even-odd rule to determine the region to fill.</li>
+        *   <li>CNZ: Clipping mode using the even-odd rule to determine which regions lie inside the clipping path.</li>
+        *   <li>CEO: Clipping mode using the nonzero winding number rule to determine which regions lie inside the clipping path</li>
+        *   <li>n: End the path object without filling or stroking it.</li>
+        * </ul>
+        * @param $default (string) default style
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-04-30)
+        * @public static
+        */
+       public static function getPathPaintOperator($style, $default='S') {
+               $op = '';
+               switch($style) {
+                       case 'S':
+                       case 'D': {
+                               $op = 'S';
+                               break;
+                       }
+                       case 's':
+                       case 'd': {
+                               $op = 's';
+                               break;
+                       }
+                       case 'f':
+                       case 'F': {
+                               $op = 'f';
+                               break;
+                       }
+                       case 'f*':
+                       case 'F*': {
+                               $op = 'f*';
+                               break;
+                       }
+                       case 'B':
+                       case 'FD':
+                       case 'DF': {
+                               $op = 'B';
+                               break;
+                       }
+                       case 'B*':
+                       case 'F*D':
+                       case 'DF*': {
+                               $op = 'B*';
+                               break;
+                       }
+                       case 'b':
+                       case 'fd':
+                       case 'df': {
+                               $op = 'b';
+                               break;
+                       }
+                       case 'b*':
+                       case 'f*d':
+                       case 'df*': {
+                               $op = 'b*';
+                               break;
+                       }
+                       case 'CNZ': {
+                               $op = 'W n';
+                               break;
+                       }
+                       case 'CEO': {
+                               $op = 'W* n';
+                               break;
+                       }
+                       case 'n': {
+                               $op = 'n';
+                               break;
+                       }
+                       default: {
+                               if (!empty($default)) {
+                                       $op = self::getPathPaintOperator($default, '');
+                               } else {
+                                       $op = '';
+                               }
+                       }
+               }
+               return $op;
+       }
+
+       /**
+        * Get the product of two SVG tranformation matrices
+        * @param $ta (array) first SVG tranformation matrix
+        * @param $tb (array) second SVG tranformation matrix
+        * @return transformation array
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @public static
+        */
+       public static function getTransformationMatrixProduct($ta, $tb) {
+               $tm = array();
+               $tm[0] = ($ta[0] * $tb[0]) + ($ta[2] * $tb[1]);
+               $tm[1] = ($ta[1] * $tb[0]) + ($ta[3] * $tb[1]);
+               $tm[2] = ($ta[0] * $tb[2]) + ($ta[2] * $tb[3]);
+               $tm[3] = ($ta[1] * $tb[2]) + ($ta[3] * $tb[3]);
+               $tm[4] = ($ta[0] * $tb[4]) + ($ta[2] * $tb[5]) + $ta[4];
+               $tm[5] = ($ta[1] * $tb[4]) + ($ta[3] * $tb[5]) + $ta[5];
+               return $tm;
+       }
+
+       /**
+        * Get the tranformation matrix from SVG transform attribute
+        * @param $attribute (string) transformation
+        * @return array of transformations
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @public static
+        */
+       public static function getSVGTransformMatrix($attribute) {
+               // identity matrix
+               $tm = array(1, 0, 0, 1, 0, 0);
+               $transform = array();
+               if (preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)[\s]*\(([^\)]+)\)/si', $attribute, $transform, PREG_SET_ORDER) > 0) {
+                       foreach ($transform as $key => $data) {
+                               if (!empty($data[2])) {
+                                       $a = 1;
+                                       $b = 0;
+                                       $c = 0;
+                                       $d = 1;
+                                       $e = 0;
+                                       $f = 0;
+                                       $regs = array();
+                                       switch ($data[1]) {
+                                               case 'matrix': {
+                                                       if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $a = $regs[1];
+                                                               $b = $regs[2];
+                                                               $c = $regs[3];
+                                                               $d = $regs[4];
+                                                               $e = $regs[5];
+                                                               $f = $regs[6];
+                                                       }
+                                                       break;
+                                               }
+                                               case 'translate': {
+                                                       if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $e = $regs[1];
+                                                               $f = $regs[2];
+                                                       } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $e = $regs[1];
+                                                       }
+                                                       break;
+                                               }
+                                               case 'scale': {
+                                                       if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $a = $regs[1];
+                                                               $d = $regs[2];
+                                                       } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $a = $regs[1];
+                                                               $d = $a;
+                                                       }
+                                                       break;
+                                               }
+                                               case 'rotate': {
+                                                       if (preg_match('/([0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $ang = deg2rad($regs[1]);
+                                                               $x = $regs[2];
+                                                               $y = $regs[3];
+                                                               $a = cos($ang);
+                                                               $b = sin($ang);
+                                                               $c = -$b;
+                                                               $d = $a;
+                                                               $e = ($x * (1 - $a)) - ($y * $c);
+                                                               $f = ($y * (1 - $d)) - ($x * $b);
+                                                       } elseif (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $ang = deg2rad($regs[1]);
+                                                               $a = cos($ang);
+                                                               $b = sin($ang);
+                                                               $c = -$b;
+                                                               $d = $a;
+                                                               $e = 0;
+                                                               $f = 0;
+                                                       }
+                                                       break;
+                                               }
+                                               case 'skewX': {
+                                                       if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $c = tan(deg2rad($regs[1]));
+                                                       }
+                                                       break;
+                                               }
+                                               case 'skewY': {
+                                                       if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) {
+                                                               $b = tan(deg2rad($regs[1]));
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                                       $tm = self::getTransformationMatrixProduct($tm, array($a, $b, $c, $d, $e, $f));
+                               }
+                       }
+               }
+               return $tm;
+       }
+
+       /**
+        * Returns the angle in radiants between two vectors
+        * @param $x1 (int) X coordinate of first vector point
+        * @param $y1 (int) Y coordinate of first vector point
+        * @param $x2 (int) X coordinate of second vector point
+        * @param $y2 (int) Y coordinate of second vector point
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-04)
+        * @public static
+        */
+       public static function getVectorsAngle($x1, $y1, $x2, $y2) {
+               $dprod = ($x1 * $x2) + ($y1 * $y2);
+               $dist1 = sqrt(($x1 * $x1) + ($y1 * $y1));
+               $dist2 = sqrt(($x2 * $x2) + ($y2 * $y2));
+               $angle = acos($dprod / ($dist1 * $dist2));
+               if (is_nan($angle)) {
+                       $angle = M_PI;
+               }
+               if ((($x1 * $y2) - ($x2 * $y1)) < 0) {
+                       $angle *= -1;
+               }
+               return $angle;
+       }
+
+       /**
+        * Split string by a regular expression.
+        * This is a wrapper for the preg_split function to avoid the bug: https://bugs.php.net/bug.php?id=45850
+        * @param $pattern (string) The regular expression pattern to search for without the modifiers, as a string.
+        * @param $modifiers (string) The modifiers part of the pattern,
+        * @param $subject (string) The input string.
+        * @param $limit (int) If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1, 0 or NULL means "no limit" and, as is standard across PHP, you can use NULL to skip to the flags parameter.
+        * @param $flags (int) The flags as specified on the preg_split PHP function.
+        * @return Returns an array containing substrings of subject split along boundaries matched by pattern.modifier
+        * @author Nicola Asuni
+        * @since 6.0.023
+        * @public static
+        */
+       public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $flags=NULL) {
+               // the bug only happens on PHP 5.2 when using the u modifier
+               if ((strpos($modifiers, 'u') === FALSE) OR (count(preg_split('//u', "\n\t", -1, PREG_SPLIT_NO_EMPTY)) == 2)) {
+                       return preg_split($pattern.$modifiers, $subject, $limit, $flags);
+               }
+               // preg_split is bugged - try alternative solution
+               $ret = array();
+               while (($nl = strpos($subject, "\n")) !== FALSE) {
+                       $ret = array_merge($ret, preg_split($pattern.$modifiers, substr($subject, 0, $nl), $limit, $flags));
+                       $ret[] = "\n";
+                       $subject = substr($subject, ($nl + 1));
+               }
+               if (strlen($subject) > 0) {
+                       $ret = array_merge($ret, preg_split($pattern.$modifiers, $subject, $limit, $flags));
+               }
+               return $ret;
+       }
+
+       /**
+        * Reads entire file into a string.
+        * The file can be also an URL.
+        * @param $file (string) Name of the file or URL to read.
+        * @return The function returns the read data or FALSE on failure. 
+        * @author Nicola Asuni
+        * @since 6.0.025
+        * @public static
+        */
+       public static function fileGetContents($file) {
+               //$file = html_entity_decode($file);
+               // array of possible alternative paths/URLs
+               $alt = array($file);
+               // replace URL relative path with full real server path
+               if ((strlen($file) > 1)
+                       AND ($file[0] == '/')
+                       AND ($file[1] != '/')
+                       AND !empty($_SERVER['DOCUMENT_ROOT'])
+                       AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
+                       $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']);
+                       if (($findroot === false) OR ($findroot > 1)) {
+                               if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') {
+                                       $tmp = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$file;
+                               } else {
+                                       $tmp = $_SERVER['DOCUMENT_ROOT'].$file;
+                               }
+                               $alt[] = htmlspecialchars_decode(urldecode($tmp));
+                       }
+               }
+               // URL mode
+               $url = $file;
+               // check for missing protocol
+               if (preg_match('%^/{2}%', $url)) {
+                       if (preg_match('%^([^:]+:)//%i', K_PATH_URL, $match)) {
+                               $url = $match[1].str_replace(' ', '%20', $url);
+                               $alt[] = $url;
+                       }
+               }
+               $urldata = @parse_url($url);
+               if (!isset($urldata['query']) OR (strlen($urldata['query']) <= 0)) {
+                       if (strpos($url, K_PATH_URL) === 0) {
+                               // convert URL to full server path
+                               $tmp = str_replace(K_PATH_URL, K_PATH_MAIN, $url);
+                               $tmp = htmlspecialchars_decode(urldecode($tmp));
+                               $alt[] = $tmp;
+                       }
+               }
+               if (isset($_SERVER['SCRIPT_URI'])) {
+                       $urldata = @parse_url($_SERVER['SCRIPT_URI']);
+                       $alt[] = $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file;
+               }
+               foreach ($alt as $f) {
+                       $ret = @file_get_contents($f);
+                       if (($ret === FALSE)
+                               AND !ini_get('allow_url_fopen')
+                               AND function_exists('curl_init')
+                               AND preg_match('%^(https?|ftp)://%', $f)) {
+                               // try to get remote file data using cURL
+                               $cs = curl_init(); // curl session
+                               curl_setopt($cs, CURLOPT_URL, $f);
+                               curl_setopt($cs, CURLOPT_BINARYTRANSFER, true);
+                               curl_setopt($cs, CURLOPT_FAILONERROR, true);
+                               curl_setopt($cs, CURLOPT_RETURNTRANSFER, true);
+                               if ((ini_get('open_basedir') == '') AND (!ini_get('safe_mode'))) {
+                                       curl_setopt($cs, CURLOPT_FOLLOWLOCATION, true);
+                               }
+                               curl_setopt($cs, CURLOPT_CONNECTTIMEOUT, 5);
+                               curl_setopt($cs, CURLOPT_TIMEOUT, 30);
+                               curl_setopt($cs, CURLOPT_SSL_VERIFYPEER, false);
+                               curl_setopt($cs, CURLOPT_SSL_VERIFYHOST, false);
+                               curl_setopt($cs, CURLOPT_USERAGENT, 'TCPDF');
+                               $ret = curl_exec($cs);
+                               curl_close($cs);
+                       }
+                       if ($ret !== FALSE) {
+                               break;
+                       }
+               }
+               return $ret;
+       }
+
+} // END OF TCPDF_STATIC CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf.php b/inc/3rdparty/libraries/tcpdf/tcpdf.php
new file mode 100644 (file)
index 0000000..78694a0
--- /dev/null
@@ -0,0 +1,24573 @@
+<?php
+//============================================================+
+// File name   : tcpdf.php
+// Version     : 6.0.093
+// Begin       : 2002-08-03
+// Last Update : 2014-09-02
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can ioredistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description :
+//   This is a PHP class for generating PDF documents without requiring external extensions.
+//
+// NOTE:
+//   This class was originally derived in 2002 from the Public
+//   Domain FPDF class by Olivier Plathey (http://www.fpdf.org),
+//   but now is almost entirely rewritten and contains thousands of
+//   new lines of code and hundreds new features.
+//
+// Main features:
+//  * no external libraries are required for the basic functions;
+//  * all standard page formats, custom page formats, custom margins and units of measure;
+//  * UTF-8 Unicode and Right-To-Left languages;
+//  * TrueTypeUnicode, TrueType, Type1 and CID-0 fonts;
+//  * font subsetting;
+//  * methods to publish some XHTML + CSS code, Javascript and Forms;
+//  * images, graphic (geometric figures) and transformation methods;
+//  * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)
+//  * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
+//  * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
+//  * automatic page header and footer management;
+//  * document encryption up to 256 bit and digital signature certifications;
+//  * transactions to UNDO commands;
+//  * PDF annotations, including links, text and file attachments;
+//  * text rendering modes (fill, stroke and clipping);
+//  * multiple columns mode;
+//  * no-write page regions;
+//  * bookmarks, named destinations and table of content;
+//  * text hyphenation;
+//  * text stretching and spacing (tracking);
+//  * automatic page break, line break and text alignments including justification;
+//  * automatic page numbering and page groups;
+//  * move and delete pages;
+//  * page compression (requires php-zlib extension);
+//  * XOBject Templates;
+//  * Layers and object visibility.
+//     * PDF/A-1b support
+//============================================================+
+
+/**
+ * @file
+ * This is a PHP class for generating PDF documents without requiring external extensions.<br>
+ * TCPDF project (http://www.tcpdf.org) was originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
+ * <h3>TCPDF main features are:</h3>
+ * <ul>
+ * <li>no external libraries are required for the basic functions;</li>
+ * <li>all standard page formats, custom page formats, custom margins and units of measure;</li>
+ * <li>UTF-8 Unicode and Right-To-Left languages;</li>
+ * <li>TrueTypeUnicode, TrueType, Type1 and CID-0 fonts;</li>
+ * <li>font subsetting;</li>
+ * <li>methods to publish some XHTML + CSS code, Javascript and Forms;</li>
+ * <li>images, graphic (geometric figures) and transformation methods;
+ * <li>supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)</li>
+ * <li>1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;</li>
+ * <li>JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;</li>
+ * <li>automatic page header and footer management;</li>
+ * <li>document encryption up to 256 bit and digital signature certifications;</li>
+ * <li>transactions to UNDO commands;</li>
+ * <li>PDF annotations, including links, text and file attachments;</li>
+ * <li>text rendering modes (fill, stroke and clipping);</li>
+ * <li>multiple columns mode;</li>
+ * <li>no-write page regions;</li>
+ * <li>bookmarks, named destinations and table of content;</li>
+ * <li>text hyphenation;</li>
+ * <li>text stretching and spacing (tracking);</li>
+ * <li>automatic page break, line break and text alignments including justification;</li>
+ * <li>automatic page numbering and page groups;</li>
+ * <li>move and delete pages;</li>
+ * <li>page compression (requires php-zlib extension);</li>
+ * <li>XOBject Templates;</li>
+ * <li>Layers and object visibility;</li>
+ * <li>PDF/A-1b support.</li>
+ * </ul>
+ * Tools to encode your unicode fonts are on fonts/utils directory.</p>
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 6.0.093
+ */
+
+// TCPDF configuration
+require_once(dirname(__FILE__).'/tcpdf_autoconfig.php');
+// TCPDF static font methods and data
+require_once(dirname(__FILE__).'/include/tcpdf_font_data.php');
+// TCPDF static font methods and data
+require_once(dirname(__FILE__).'/include/tcpdf_fonts.php');
+// TCPDF static color methods and data
+require_once(dirname(__FILE__).'/include/tcpdf_colors.php');
+// TCPDF static image methods and data
+require_once(dirname(__FILE__).'/include/tcpdf_images.php');
+// TCPDF static methods and data
+require_once(dirname(__FILE__).'/include/tcpdf_static.php');
+
+// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+/**
+ * @class TCPDF
+ * PHP class for generating PDF documents without requiring external extensions.
+ * TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.<br>
+ * @package com.tecnick.tcpdf
+ * @brief PHP class for generating PDF documents without requiring external extensions.
+ * @version 6.0.093
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF {
+
+       // Protected properties
+
+       /**
+        * Current page number.
+        * @protected
+        */
+       protected $page;
+
+       /**
+        * Current object number.
+        * @protected
+        */
+       protected $n;
+
+       /**
+        * Array of object offsets.
+        * @protected
+        */
+       protected $offsets = array();
+
+       /**
+        * Array of object IDs for each page.
+        * @protected
+        */
+       protected $pageobjects = array();
+
+       /**
+        * Buffer holding in-memory PDF.
+        * @protected
+        */
+       protected $buffer;
+
+       /**
+        * Array containing pages.
+        * @protected
+        */
+       protected $pages = array();
+
+       /**
+        * Current document state.
+        * @protected
+        */
+       protected $state;
+
+       /**
+        * Compression flag.
+        * @protected
+        */
+       protected $compress;
+
+       /**
+        * Current page orientation (P = Portrait, L = Landscape).
+        * @protected
+        */
+       protected $CurOrientation;
+
+       /**
+        * Page dimensions.
+        * @protected
+        */
+       protected $pagedim = array();
+
+       /**
+        * Scale factor (number of points in user unit).
+        * @protected
+        */
+       protected $k;
+
+       /**
+        * Width of page format in points.
+        * @protected
+        */
+       protected $fwPt;
+
+       /**
+        * Height of page format in points.
+        * @protected
+        */
+       protected $fhPt;
+
+       /**
+        * Current width of page in points.
+        * @protected
+        */
+       protected $wPt;
+
+       /**
+        * Current height of page in points.
+        * @protected
+        */
+       protected $hPt;
+
+       /**
+        * Current width of page in user unit.
+        * @protected
+        */
+       protected $w;
+
+       /**
+        * Current height of page in user unit.
+        * @protected
+        */
+       protected $h;
+
+       /**
+        * Left margin.
+        * @protected
+        */
+       protected $lMargin;
+
+       /**
+        * Right margin.
+        * @protected
+        */
+       protected $rMargin;
+
+       /**
+        * Cell left margin (used by regions).
+        * @protected
+        */
+       protected $clMargin;
+
+       /**
+        * Cell right margin (used by regions).
+        * @protected
+        */
+       protected $crMargin;
+
+       /**
+        * Top margin.
+        * @protected
+        */
+       protected $tMargin;
+
+       /**
+        * Page break margin.
+        * @protected
+        */
+       protected $bMargin;
+
+       /**
+        * Array of cell internal paddings ('T' => top, 'R' => right, 'B' => bottom, 'L' => left).
+        * @since 5.9.000 (2010-10-03)
+        * @protected
+        */
+       protected $cell_padding = array('T' => 0, 'R' => 0, 'B' => 0, 'L' => 0);
+
+       /**
+        * Array of cell margins ('T' => top, 'R' => right, 'B' => bottom, 'L' => left).
+        * @since 5.9.000 (2010-10-04)
+        * @protected
+        */
+       protected $cell_margin = array('T' => 0, 'R' => 0, 'B' => 0, 'L' => 0);
+
+       /**
+        * Current horizontal position in user unit for cell positioning.
+        * @protected
+        */
+       protected $x;
+
+       /**
+        * Current vertical position in user unit for cell positioning.
+        * @protected
+        */
+       protected $y;
+
+       /**
+        * Height of last cell printed.
+        * @protected
+        */
+       protected $lasth;
+
+       /**
+        * Line width in user unit.
+        * @protected
+        */
+       protected $LineWidth;
+
+       /**
+        * Array of standard font names.
+        * @protected
+        */
+       protected $CoreFonts;
+
+       /**
+        * Array of used fonts.
+        * @protected
+        */
+       protected $fonts = array();
+
+       /**
+        * Array of font files.
+        * @protected
+        */
+       protected $FontFiles = array();
+
+       /**
+        * Array of encoding differences.
+        * @protected
+        */
+       protected $diffs = array();
+
+       /**
+        * Array of used images.
+        * @protected
+        */
+       protected $images = array();
+
+       /**
+        * Array of cached files.
+        * @protected
+        */
+       protected $cached_files = array();
+
+       /**
+        * Array of Annotations in pages.
+        * @protected
+        */
+       protected $PageAnnots = array();
+
+       /**
+        * Array of internal links.
+        * @protected
+        */
+       protected $links = array();
+
+       /**
+        * Current font family.
+        * @protected
+        */
+       protected $FontFamily;
+
+       /**
+        * Current font style.
+        * @protected
+        */
+       protected $FontStyle;
+
+       /**
+        * Current font ascent (distance between font top and baseline).
+        * @protected
+        * @since 2.8.000 (2007-03-29)
+        */
+       protected $FontAscent;
+
+       /**
+        * Current font descent (distance between font bottom and baseline).
+        * @protected
+        * @since 2.8.000 (2007-03-29)
+        */
+       protected $FontDescent;
+
+       /**
+        * Underlining flag.
+        * @protected
+        */
+       protected $underline;
+
+       /**
+        * Overlining flag.
+        * @protected
+        */
+       protected $overline;
+
+       /**
+        * Current font info.
+        * @protected
+        */
+       protected $CurrentFont;
+
+       /**
+        * Current font size in points.
+        * @protected
+        */
+       protected $FontSizePt;
+
+       /**
+        * Current font size in user unit.
+        * @protected
+        */
+       protected $FontSize;
+
+       /**
+        * Commands for drawing color.
+        * @protected
+        */
+       protected $DrawColor;
+
+       /**
+        * Commands for filling color.
+        * @protected
+        */
+       protected $FillColor;
+
+       /**
+        * Commands for text color.
+        * @protected
+        */
+       protected $TextColor;
+
+       /**
+        * Indicates whether fill and text colors are different.
+        * @protected
+        */
+       protected $ColorFlag;
+
+       /**
+        * Automatic page breaking.
+        * @protected
+        */
+       protected $AutoPageBreak;
+
+       /**
+        * Threshold used to trigger page breaks.
+        * @protected
+        */
+       protected $PageBreakTrigger;
+
+       /**
+        * Flag set when processing page header.
+        * @protected
+        */
+       protected $InHeader = false;
+
+       /**
+        * Flag set when processing page footer.
+        * @protected
+        */
+       protected $InFooter = false;
+
+       /**
+        * Zoom display mode.
+        * @protected
+        */
+       protected $ZoomMode;
+
+       /**
+        * Layout display mode.
+        * @protected
+        */
+       protected $LayoutMode;
+
+       /**
+        * If true set the document information dictionary in Unicode.
+        * @protected
+        */
+       protected $docinfounicode = true;
+
+       /**
+        * Document title.
+        * @protected
+        */
+       protected $title = '';
+
+       /**
+        * Document subject.
+        * @protected
+        */
+       protected $subject = '';
+
+       /**
+        * Document author.
+        * @protected
+        */
+       protected $author = '';
+
+       /**
+        * Document keywords.
+        * @protected
+        */
+       protected $keywords = '';
+
+       /**
+        * Document creator.
+        * @protected
+        */
+       protected $creator = '';
+
+       /**
+        * Starting page number.
+        * @protected
+        */
+       protected $starting_page_number = 1;
+
+       /**
+        * The right-bottom (or left-bottom for RTL) corner X coordinate of last inserted image.
+        * @since 2002-07-31
+        * @author Nicola Asuni
+        * @protected
+        */
+       protected $img_rb_x;
+
+       /**
+        * The right-bottom corner Y coordinate of last inserted image.
+        * @since 2002-07-31
+        * @author Nicola Asuni
+        * @protected
+        */
+       protected $img_rb_y;
+
+       /**
+        * Adjusting factor to convert pixels to user units.
+        * @since 2004-06-14
+        * @author Nicola Asuni
+        * @protected
+        */
+       protected $imgscale = 1;
+
+       /**
+        * Boolean flag set to true when the input text is unicode (require unicode fonts).
+        * @since 2005-01-02
+        * @author Nicola Asuni
+        * @protected
+        */
+       protected $isunicode = false;
+
+       /**
+        * PDF version.
+        * @since 1.5.3
+        * @protected
+        */
+       protected $PDFVersion = '1.7';
+
+       /**
+        * ID of the stored default header template (-1 = not set).
+        * @protected
+        */
+       protected $header_xobjid = false;
+
+       /**
+        * If true reset the Header Xobject template at each page
+        * @protected
+        */
+       protected $header_xobj_autoreset = false;
+
+       /**
+        * Minimum distance between header and top page margin.
+        * @protected
+        */
+       protected $header_margin;
+
+       /**
+        * Minimum distance between footer and bottom page margin.
+        * @protected
+        */
+       protected $footer_margin;
+
+       /**
+        * Original left margin value.
+        * @protected
+        * @since 1.53.0.TC013
+        */
+       protected $original_lMargin;
+
+       /**
+        * Original right margin value.
+        * @protected
+        * @since 1.53.0.TC013
+        */
+       protected $original_rMargin;
+
+       /**
+        * Default font used on page header.
+        * @protected
+        */
+       protected $header_font;
+
+       /**
+        * Default font used on page footer.
+        * @protected
+        */
+       protected $footer_font;
+
+       /**
+        * Language templates.
+        * @protected
+        */
+       protected $l;
+
+       /**
+        * Barcode to print on page footer (only if set).
+        * @protected
+        */
+       protected $barcode = false;
+
+       /**
+        * Boolean flag to print/hide page header.
+        * @protected
+        */
+       protected $print_header = true;
+
+       /**
+        * Boolean flag to print/hide page footer.
+        * @protected
+        */
+       protected $print_footer = true;
+
+       /**
+        * Header image logo.
+        * @protected
+        */
+       protected $header_logo = '';
+
+       /**
+        * Width of header image logo in user units.
+        * @protected
+        */
+       protected $header_logo_width = 30;
+
+       /**
+        * Title to be printed on default page header.
+        * @protected
+        */
+       protected $header_title = '';
+
+       /**
+        * String to pring on page header after title.
+        * @protected
+        */
+       protected $header_string = '';
+
+       /**
+        * Color for header text (RGB array).
+        * @since 5.9.174 (2012-07-25)
+        * @protected
+        */
+       protected $header_text_color = array(0,0,0);
+
+       /**
+        * Color for header line (RGB array).
+        * @since 5.9.174 (2012-07-25)
+        * @protected
+        */
+       protected $header_line_color = array(0,0,0);
+
+       /**
+        * Color for footer text (RGB array).
+        * @since 5.9.174 (2012-07-25)
+        * @protected
+        */
+       protected $footer_text_color = array(0,0,0);
+
+       /**
+        * Color for footer line (RGB array).
+        * @since 5.9.174 (2012-07-25)
+        * @protected
+        */
+       protected $footer_line_color = array(0,0,0);
+
+       /**
+        * Text shadow data array.
+        * @since 5.9.174 (2012-07-25)
+        * @protected
+        */
+       protected $txtshadow = array('enabled'=>false, 'depth_w'=>0, 'depth_h'=>0, 'color'=>false, 'opacity'=>1, 'blend_mode'=>'Normal');
+
+       /**
+        * Default number of columns for html table.
+        * @protected
+        */
+       protected $default_table_columns = 4;
+
+       // variables for html parser
+
+       /**
+        * HTML PARSER: array to store current link and rendering styles.
+        * @protected
+        */
+       protected $HREF = array();
+
+       /**
+        * List of available fonts on filesystem.
+        * @protected
+        */
+       protected $fontlist = array();
+
+       /**
+        * Current foreground color.
+        * @protected
+        */
+       protected $fgcolor;
+
+       /**
+        * HTML PARSER: array of boolean values, true in case of ordered list (OL), false otherwise.
+        * @protected
+        */
+       protected $listordered = array();
+
+       /**
+        * HTML PARSER: array count list items on nested lists.
+        * @protected
+        */
+       protected $listcount = array();
+
+       /**
+        * HTML PARSER: current list nesting level.
+        * @protected
+        */
+       protected $listnum = 0;
+
+       /**
+        * HTML PARSER: indent amount for lists.
+        * @protected
+        */
+       protected $listindent = 0;
+
+       /**
+        * HTML PARSER: current list indententation level.
+        * @protected
+        */
+       protected $listindentlevel = 0;
+
+       /**
+        * Current background color.
+        * @protected
+        */
+       protected $bgcolor;
+
+       /**
+        * Temporary font size in points.
+        * @protected
+        */
+       protected $tempfontsize = 10;
+
+       /**
+        * Spacer string for LI tags.
+        * @protected
+        */
+       protected $lispacer = '';
+
+       /**
+        * Default encoding.
+        * @protected
+        * @since 1.53.0.TC010
+        */
+       protected $encoding = 'UTF-8';
+
+       /**
+        * PHP internal encoding.
+        * @protected
+        * @since 1.53.0.TC016
+        */
+       protected $internal_encoding;
+
+       /**
+        * Boolean flag to indicate if the document language is Right-To-Left.
+        * @protected
+        * @since 2.0.000
+        */
+       protected $rtl = false;
+
+       /**
+        * Boolean flag used to force RTL or LTR string direction.
+        * @protected
+        * @since 2.0.000
+        */
+       protected $tmprtl = false;
+
+       // --- Variables used for document encryption:
+
+       /**
+        * IBoolean flag indicating whether document is protected.
+        * @protected
+        * @since 2.0.000 (2008-01-02)
+        */
+       protected $encrypted;
+
+       /**
+        * Array containing encryption settings.
+        * @protected
+        * @since 5.0.005 (2010-05-11)
+        */
+       protected $encryptdata = array();
+
+       /**
+        * Last RC4 key encrypted (cached for optimisation).
+        * @protected
+        * @since 2.0.000 (2008-01-02)
+        */
+       protected $last_enc_key;
+
+       /**
+        * Last RC4 computed key.
+        * @protected
+        * @since 2.0.000 (2008-01-02)
+        */
+       protected $last_enc_key_c;
+
+       /**
+        * File ID (used on document trailer).
+        * @protected
+        * @since 5.0.005 (2010-05-12)
+        */
+       protected $file_id;
+
+       // --- bookmark ---
+
+       /**
+        * Outlines for bookmark.
+        * @protected
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected $outlines = array();
+
+       /**
+        * Outline root for bookmark.
+        * @protected
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected $OutlineRoot;
+
+       // --- javascript and form ---
+
+       /**
+        * Javascript code.
+        * @protected
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected $javascript = '';
+
+       /**
+        * Javascript counter.
+        * @protected
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected $n_js;
+
+       /**
+        * line through state
+        * @protected
+        * @since 2.8.000 (2008-03-19)
+        */
+       protected $linethrough;
+
+       /**
+        * Array with additional document-wide usage rights for the document.
+        * @protected
+        * @since 5.8.014 (2010-08-23)
+        */
+       protected $ur = array();
+
+       /**
+        * DPI (Dot Per Inch) Document Resolution (do not change).
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected $dpi = 72;
+
+       /**
+        * Array of page numbers were a new page group was started (the page numbers are the keys of the array).
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected $newpagegroup = array();
+
+       /**
+        * Array that contains the number of pages in each page group.
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected $pagegroups = array();
+
+       /**
+        * Current page group number.
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected $currpagegroup = 0;
+
+       /**
+        * Array of transparency objects and parameters.
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected $extgstates;
+
+       /**
+        * Set the default JPEG compression quality (1-100).
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected $jpeg_quality;
+
+       /**
+        * Default cell height ratio.
+        * @protected
+        * @since 3.0.014 (2008-05-23)
+        */
+       protected $cell_height_ratio = K_CELL_HEIGHT_RATIO;
+
+       /**
+        * PDF viewer preferences.
+        * @protected
+        * @since 3.1.000 (2008-06-09)
+        */
+       protected $viewer_preferences;
+
+       /**
+        * A name object specifying how the document should be displayed when opened.
+        * @protected
+        * @since 3.1.000 (2008-06-09)
+        */
+       protected $PageMode;
+
+       /**
+        * Array for storing gradient information.
+        * @protected
+        * @since 3.1.000 (2008-06-09)
+        */
+       protected $gradients = array();
+
+       /**
+        * Array used to store positions inside the pages buffer (keys are the page numbers).
+        * @protected
+        * @since 3.2.000 (2008-06-26)
+        */
+       protected $intmrk = array();
+
+       /**
+        * Array used to store positions inside the pages buffer (keys are the page numbers).
+        * @protected
+        * @since 5.7.000 (2010-08-03)
+        */
+       protected $bordermrk = array();
+
+       /**
+        * Array used to store page positions to track empty pages (keys are the page numbers).
+        * @protected
+        * @since 5.8.007 (2010-08-18)
+        */
+       protected $emptypagemrk = array();
+
+       /**
+        * Array used to store content positions inside the pages buffer (keys are the page numbers).
+        * @protected
+        * @since 4.6.021 (2009-07-20)
+        */
+       protected $cntmrk = array();
+
+       /**
+        * Array used to store footer positions of each page.
+        * @protected
+        * @since 3.2.000 (2008-07-01)
+        */
+       protected $footerpos = array();
+
+       /**
+        * Array used to store footer length of each page.
+        * @protected
+        * @since 4.0.014 (2008-07-29)
+        */
+       protected $footerlen = array();
+
+       /**
+        * Boolean flag to indicate if a new line is created.
+        * @protected
+        * @since 3.2.000 (2008-07-01)
+        */
+       protected $newline = true;
+
+       /**
+        * End position of the latest inserted line.
+        * @protected
+        * @since 3.2.000 (2008-07-01)
+        */
+       protected $endlinex = 0;
+
+       /**
+        * PDF string for width value of the last line.
+        * @protected
+        * @since 4.0.006 (2008-07-16)
+        */
+       protected $linestyleWidth = '';
+
+       /**
+        * PDF string for CAP value of the last line.
+        * @protected
+        * @since 4.0.006 (2008-07-16)
+        */
+       protected $linestyleCap = '0 J';
+
+       /**
+        * PDF string for join value of the last line.
+        * @protected
+        * @since 4.0.006 (2008-07-16)
+        */
+       protected $linestyleJoin = '0 j';
+
+       /**
+        * PDF string for dash value of the last line.
+        * @protected
+        * @since 4.0.006 (2008-07-16)
+        */
+       protected $linestyleDash = '[] 0 d';
+
+       /**
+        * Boolean flag to indicate if marked-content sequence is open.
+        * @protected
+        * @since 4.0.013 (2008-07-28)
+        */
+       protected $openMarkedContent = false;
+
+       /**
+        * Count the latest inserted vertical spaces on HTML.
+        * @protected
+        * @since 4.0.021 (2008-08-24)
+        */
+       protected $htmlvspace = 0;
+
+       /**
+        * Array of Spot colors.
+        * @protected
+        * @since 4.0.024 (2008-09-12)
+        */
+       protected $spot_colors = array();
+
+       /**
+        * Symbol used for HTML unordered list items.
+        * @protected
+        * @since 4.0.028 (2008-09-26)
+        */
+       protected $lisymbol = '';
+
+       /**
+        * String used to mark the beginning and end of EPS image blocks.
+        * @protected
+        * @since 4.1.000 (2008-10-18)
+        */
+       protected $epsmarker = 'x#!#EPS#!#x';
+
+       /**
+        * Array of transformation matrix.
+        * @protected
+        * @since 4.2.000 (2008-10-29)
+        */
+       protected $transfmatrix = array();
+
+       /**
+        * Current key for transformation matrix.
+        * @protected
+        * @since 4.8.005 (2009-09-17)
+        */
+       protected $transfmatrix_key = 0;
+
+       /**
+        * Booklet mode for double-sided pages.
+        * @protected
+        * @since 4.2.000 (2008-10-29)
+        */
+       protected $booklet = false;
+
+       /**
+        * Epsilon value used for float calculations.
+        * @protected
+        * @since 4.2.000 (2008-10-29)
+        */
+       protected $feps = 0.005;
+
+       /**
+        * Array used for custom vertical spaces for HTML tags.
+        * @protected
+        * @since 4.2.001 (2008-10-30)
+        */
+       protected $tagvspaces = array();
+
+       /**
+        * HTML PARSER: custom indent amount for lists. Negative value means disabled.
+        * @protected
+        * @since 4.2.007 (2008-11-12)
+        */
+       protected $customlistindent = -1;
+
+       /**
+        * Boolean flag to indicate if the border of the cell sides that cross the page should be removed.
+        * @protected
+        * @since 4.2.010 (2008-11-14)
+        */
+       protected $opencell = true;
+
+       /**
+        * Array of files to embedd.
+        * @protected
+        * @since 4.4.000 (2008-12-07)
+        */
+       protected $embeddedfiles = array();
+
+       /**
+        * Boolean flag to indicate if we are inside a PRE tag.
+        * @protected
+        * @since 4.4.001 (2008-12-08)
+        */
+       protected $premode = false;
+
+       /**
+        * Array used to store positions of graphics transformation blocks inside the page buffer.
+        * keys are the page numbers
+        * @protected
+        * @since 4.4.002 (2008-12-09)
+        */
+       protected $transfmrk = array();
+
+       /**
+        * Default color for html links.
+        * @protected
+        * @since 4.4.003 (2008-12-09)
+        */
+       protected $htmlLinkColorArray = array(0, 0, 255);
+
+       /**
+        * Default font style to add to html links.
+        * @protected
+        * @since 4.4.003 (2008-12-09)
+        */
+       protected $htmlLinkFontStyle = 'U';
+
+       /**
+        * Counts the number of pages.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected $numpages = 0;
+
+       /**
+        * Array containing page lengths in bytes.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected $pagelen = array();
+
+       /**
+        * Counts the number of pages.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected $numimages = 0;
+
+       /**
+        * Store the image keys.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected $imagekeys = array();
+
+       /**
+        * Length of the buffer in bytes.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected $bufferlen = 0;
+
+       /**
+        * If true enables disk caching.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected $diskcache = false;
+
+       /**
+        * Counts the number of fonts.
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected $numfonts = 0;
+
+       /**
+        * Store the font keys.
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected $fontkeys = array();
+
+       /**
+        * Store the font object IDs.
+        * @protected
+        * @since 4.8.001 (2009-09-09)
+        */
+       protected $font_obj_ids = array();
+
+       /**
+        * Store the fage status (true when opened, false when closed).
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected $pageopen = array();
+
+       /**
+        * Default monospace font.
+        * @protected
+        * @since 4.5.025 (2009-03-10)
+        */
+       protected $default_monospaced_font = 'courier';
+
+       /**
+        * Cloned copy of the current class object.
+        * @protected
+        * @since 4.5.029 (2009-03-19)
+        */
+       protected $objcopy;
+
+       /**
+        * Array used to store the lengths of cache files.
+        * @protected
+        * @since 4.5.029 (2009-03-19)
+        */
+       protected $cache_file_length = array();
+
+       /**
+        * Table header content to be repeated on each new page.
+        * @protected
+        * @since 4.5.030 (2009-03-20)
+        */
+       protected $thead = '';
+
+       /**
+        * Margins used for table header.
+        * @protected
+        * @since 4.5.030 (2009-03-20)
+        */
+       protected $theadMargins = array();
+
+       /**
+        * Boolean flag to enable document digital signature.
+        * @protected
+        * @since 4.6.005 (2009-04-24)
+        */
+       protected $sign = false;
+
+       /**
+        * Digital signature data.
+        * @protected
+        * @since 4.6.005 (2009-04-24)
+        */
+       protected $signature_data = array();
+
+       /**
+        * Digital signature max length.
+        * @protected
+        * @since 4.6.005 (2009-04-24)
+        */
+       protected $signature_max_length = 11742;
+
+       /**
+        * Data for digital signature appearance.
+        * @protected
+        * @since 5.3.011 (2010-06-16)
+        */
+       protected $signature_appearance = array('page' => 1, 'rect' => '0 0 0 0');
+
+       /**
+        * Array of empty digital signature appearances.
+        * @protected
+        * @since 5.9.101 (2011-07-06)
+        */
+       protected $empty_signature_appearance = array();
+
+       /**
+        * Boolean flag to enable document timestamping with TSA.
+        * @protected
+        * @since 6.0.085 (2014-06-19)
+        */
+       protected $tsa_timestamp = false;
+
+       /**
+        * Timestamping data.
+        * @protected
+        * @since 6.0.085 (2014-06-19)
+        */
+       protected $tsa_data = array();
+
+       /**
+        * Regular expression used to find blank characters (required for word-wrapping).
+        * @protected
+        * @since 4.6.006 (2009-04-28)
+        */
+       protected $re_spaces = '/[^\S\xa0]/';
+
+       /**
+        * Array of $re_spaces parts.
+        * @protected
+        * @since 5.5.011 (2010-07-09)
+        */
+       protected $re_space = array('p' => '[^\S\xa0]', 'm' => '');
+
+       /**
+        * Digital signature object ID.
+        * @protected
+        * @since 4.6.022 (2009-06-23)
+        */
+       protected $sig_obj_id = 0;
+
+       /**
+        * ID of page objects.
+        * @protected
+        * @since 4.7.000 (2009-08-29)
+        */
+       protected $page_obj_id = array();
+
+       /**
+        * List of form annotations IDs.
+        * @protected
+        * @since 4.8.000 (2009-09-07)
+        */
+       protected $form_obj_id = array();
+
+       /**
+        * Deafult Javascript field properties. Possible values are described on official Javascript for Acrobat API reference. Annotation options can be directly specified using the 'aopt' entry.
+        * @protected
+        * @since 4.8.000 (2009-09-07)
+        */
+       protected $default_form_prop = array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 255), 'strokeColor'=>array(128, 128, 128));
+
+       /**
+        * Javascript objects array.
+        * @protected
+        * @since 4.8.000 (2009-09-07)
+        */
+       protected $js_objects = array();
+
+       /**
+        * Current form action (used during XHTML rendering).
+        * @protected
+        * @since 4.8.000 (2009-09-07)
+        */
+       protected $form_action = '';
+
+       /**
+        * Current form encryption type (used during XHTML rendering).
+        * @protected
+        * @since 4.8.000 (2009-09-07)
+        */
+       protected $form_enctype = 'application/x-www-form-urlencoded';
+
+       /**
+        * Current method to submit forms.
+        * @protected
+        * @since 4.8.000 (2009-09-07)
+        */
+       protected $form_mode = 'post';
+
+       /**
+        * List of fonts used on form fields (fontname => fontkey).
+        * @protected
+        * @since 4.8.001 (2009-09-09)
+        */
+       protected $annotation_fonts = array();
+
+       /**
+        * List of radio buttons parent objects.
+        * @protected
+        * @since 4.8.001 (2009-09-09)
+        */
+       protected $radiobutton_groups = array();
+
+       /**
+        * List of radio group objects IDs.
+        * @protected
+        * @since 4.8.001 (2009-09-09)
+        */
+       protected $radio_groups = array();
+
+       /**
+        * Text indentation value (used for text-indent CSS attribute).
+        * @protected
+        * @since 4.8.006 (2009-09-23)
+        */
+       protected $textindent = 0;
+
+       /**
+        * Store page number when startTransaction() is called.
+        * @protected
+        * @since 4.8.006 (2009-09-23)
+        */
+       protected $start_transaction_page = 0;
+
+       /**
+        * Store Y position when startTransaction() is called.
+        * @protected
+        * @since 4.9.001 (2010-03-28)
+        */
+       protected $start_transaction_y = 0;
+
+       /**
+        * True when we are printing the thead section on a new page.
+        * @protected
+        * @since 4.8.027 (2010-01-25)
+        */
+       protected $inthead = false;
+
+       /**
+        * Array of column measures (width, space, starting Y position).
+        * @protected
+        * @since 4.9.001 (2010-03-28)
+        */
+       protected $columns = array();
+
+       /**
+        * Number of colums.
+        * @protected
+        * @since 4.9.001 (2010-03-28)
+        */
+       protected $num_columns = 1;
+
+       /**
+        * Current column number.
+        * @protected
+        * @since 4.9.001 (2010-03-28)
+        */
+       protected $current_column = 0;
+
+       /**
+        * Starting page for columns.
+        * @protected
+        * @since 4.9.001 (2010-03-28)
+        */
+       protected $column_start_page = 0;
+
+       /**
+        * Maximum page and column selected.
+        * @protected
+        * @since 5.8.000 (2010-08-11)
+        */
+       protected $maxselcol = array('page' => 0, 'column' => 0);
+
+       /**
+        * Array of: X difference between table cell x start and starting page margin, cellspacing, cellpadding.
+        * @protected
+        * @since 5.8.000 (2010-08-11)
+        */
+       protected $colxshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0));
+
+       /**
+        * Text rendering mode: 0 = Fill text; 1 = Stroke text; 2 = Fill, then stroke text; 3 = Neither fill nor stroke text (invisible); 4 = Fill text and add to path for clipping; 5 = Stroke text and add to path for clipping; 6 = Fill, then stroke text and add to path for clipping; 7 = Add text to path for clipping.
+        * @protected
+        * @since 4.9.008 (2010-04-03)
+        */
+       protected $textrendermode = 0;
+
+       /**
+        * Text stroke width in doc units.
+        * @protected
+        * @since 4.9.008 (2010-04-03)
+        */
+       protected $textstrokewidth = 0;
+
+       /**
+        * Current stroke color.
+        * @protected
+        * @since 4.9.008 (2010-04-03)
+        */
+       protected $strokecolor;
+
+       /**
+        * Default unit of measure for document.
+        * @protected
+        * @since 5.0.000 (2010-04-22)
+        */
+       protected $pdfunit = 'mm';
+
+       /**
+        * Boolean flag true when we are on TOC (Table Of Content) page.
+        * @protected
+        */
+       protected $tocpage = false;
+
+       /**
+        * Boolean flag: if true convert vector images (SVG, EPS) to raster image using GD or ImageMagick library.
+        * @protected
+        * @since 5.0.000 (2010-04-26)
+        */
+       protected $rasterize_vector_images = false;
+
+       /**
+        * Boolean flag: if true enables font subsetting by default.
+        * @protected
+        * @since 5.3.002 (2010-06-07)
+        */
+       protected $font_subsetting = true;
+
+       /**
+        * Array of default graphic settings.
+        * @protected
+        * @since 5.5.008 (2010-07-02)
+        */
+       protected $default_graphic_vars = array();
+
+       /**
+        * Array of XObjects.
+        * @protected
+        * @since 5.8.014 (2010-08-23)
+        */
+       protected $xobjects = array();
+
+       /**
+        * Boolean value true when we are inside an XObject.
+        * @protected
+        * @since 5.8.017 (2010-08-24)
+        */
+       protected $inxobj = false;
+
+       /**
+        * Current XObject ID.
+        * @protected
+        * @since 5.8.017 (2010-08-24)
+        */
+       protected $xobjid = '';
+
+       /**
+        * Percentage of character stretching.
+        * @protected
+        * @since 5.9.000 (2010-09-29)
+        */
+       protected $font_stretching = 100;
+
+       /**
+        * Increases or decreases the space between characters in a text by the specified amount (tracking).
+        * @protected
+        * @since 5.9.000 (2010-09-29)
+        */
+       protected $font_spacing = 0;
+
+       /**
+        * Array of no-write regions.
+        * ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right)
+        * @protected
+        * @since 5.9.003 (2010-10-14)
+        */
+       protected $page_regions = array();
+
+       /**
+        * Boolean value true when page region check is active.
+        * @protected
+        */
+       protected $check_page_regions = true;
+
+       /**
+        * Array of PDF layers data.
+        * @protected
+        * @since 5.9.102 (2011-07-13)
+        */
+       protected $pdflayers = array();
+
+       /**
+        * A dictionary of names and corresponding destinations (Dests key on document Catalog).
+        * @protected
+        * @since 5.9.097 (2011-06-23)
+        */
+       protected $dests = array();
+
+       /**
+        * Object ID for Named Destinations
+        * @protected
+        * @since 5.9.097 (2011-06-23)
+        */
+       protected $n_dests;
+
+       /**
+        * Embedded Files Names
+        * @protected
+        * @since 5.9.204 (2013-01-23)
+        */
+       protected $efnames = array();
+
+       /**
+        * Directory used for the last SVG image.
+        * @protected
+        * @since 5.0.000 (2010-05-05)
+        */
+       protected $svgdir = '';
+
+       /**
+        *  Deafult unit of measure for SVG.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgunit = 'px';
+
+       /**
+        * Array of SVG gradients.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svggradients = array();
+
+       /**
+        * ID of last SVG gradient.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svggradientid = 0;
+
+       /**
+        * Boolean value true when in SVG defs group.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgdefsmode = false;
+
+       /**
+        * Array of SVG defs.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgdefs = array();
+
+       /**
+        * Boolean value true when in SVG clipPath tag.
+        * @protected
+        * @since 5.0.000 (2010-04-26)
+        */
+       protected $svgclipmode = false;
+
+       /**
+        * Array of SVG clipPath commands.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgclippaths = array();
+
+       /**
+        * Array of SVG clipPath tranformation matrix.
+        * @protected
+        * @since 5.8.022 (2010-08-31)
+        */
+       protected $svgcliptm = array();
+
+       /**
+        * ID of last SVG clipPath.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgclipid = 0;
+
+       /**
+        * SVG text.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgtext = '';
+
+       /**
+        * SVG text properties.
+        * @protected
+        * @since 5.8.013 (2010-08-23)
+        */
+       protected $svgtextmode = array();
+
+       /**
+        * Array of SVG properties.
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected $svgstyles = array(array(
+               'alignment-baseline' => 'auto',
+               'baseline-shift' => 'baseline',
+               'clip' => 'auto',
+               'clip-path' => 'none',
+               'clip-rule' => 'nonzero',
+               'color' => 'black',
+               'color-interpolation' => 'sRGB',
+               'color-interpolation-filters' => 'linearRGB',
+               'color-profile' => 'auto',
+               'color-rendering' => 'auto',
+               'cursor' => 'auto',
+               'direction' => 'ltr',
+               'display' => 'inline',
+               'dominant-baseline' => 'auto',
+               'enable-background' => 'accumulate',
+               'fill' => 'black',
+               'fill-opacity' => 1,
+               'fill-rule' => 'nonzero',
+               'filter' => 'none',
+               'flood-color' => 'black',
+               'flood-opacity' => 1,
+               'font' => '',
+               'font-family' => 'helvetica',
+               'font-size' => 'medium',
+               'font-size-adjust' => 'none',
+               'font-stretch' => 'normal',
+               'font-style' => 'normal',
+               'font-variant' => 'normal',
+               'font-weight' => 'normal',
+               'glyph-orientation-horizontal' => '0deg',
+               'glyph-orientation-vertical' => 'auto',
+               'image-rendering' => 'auto',
+               'kerning' => 'auto',
+               'letter-spacing' => 'normal',
+               'lighting-color' => 'white',
+               'marker' => '',
+               'marker-end' => 'none',
+               'marker-mid' => 'none',
+               'marker-start' => 'none',
+               'mask' => 'none',
+               'opacity' => 1,
+               'overflow' => 'auto',
+               'pointer-events' => 'visiblePainted',
+               'shape-rendering' => 'auto',
+               'stop-color' => 'black',
+               'stop-opacity' => 1,
+               'stroke' => 'none',
+               'stroke-dasharray' => 'none',
+               'stroke-dashoffset' => 0,
+               'stroke-linecap' => 'butt',
+               'stroke-linejoin' => 'miter',
+               'stroke-miterlimit' => 4,
+               'stroke-opacity' => 1,
+               'stroke-width' => 1,
+               'text-anchor' => 'start',
+               'text-decoration' => 'none',
+               'text-rendering' => 'auto',
+               'unicode-bidi' => 'normal',
+               'visibility' => 'visible',
+               'word-spacing' => 'normal',
+               'writing-mode' => 'lr-tb',
+               'text-color' => 'black',
+               'transfmatrix' => array(1, 0, 0, 1, 0, 0)
+               ));
+
+       /**
+        * If true force sRGB color profile for all document.
+        * @protected
+        * @since 5.9.121 (2011-09-28)
+        */
+       protected $force_srgb = false;
+
+       /**
+        * If true set the document to PDF/A mode.
+        * @protected
+        * @since 5.9.121 (2011-09-27)
+        */
+       protected $pdfa_mode = false;
+
+       /**
+        * Document creation date-time
+        * @protected
+        * @since 5.9.152 (2012-03-22)
+        */
+       protected $doc_creation_timestamp;
+
+       /**
+        * Document modification date-time
+        * @protected
+        * @since 5.9.152 (2012-03-22)
+        */
+       protected $doc_modification_timestamp;
+
+       /**
+        * Custom XMP data.
+        * @protected
+        * @since 5.9.128 (2011-10-06)
+        */
+       protected $custom_xmp = '';
+
+       /**
+        * Overprint mode array.
+        * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008).
+        * @protected
+        * @since 5.9.152 (2012-03-23)
+        */
+       protected $overprint = array('OP' => false, 'op' => false, 'OPM' => 0);
+
+       /**
+        * Alpha mode array.
+        * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008).
+        * @protected
+        * @since 5.9.152 (2012-03-23)
+        */
+       protected $alpha = array('CA' => 1, 'ca' => 1, 'BM' => '/Normal', 'AIS' => false);
+
+       /**
+        * Define the page boundaries boxes to be set on document.
+        * @protected
+        * @since 5.9.152 (2012-03-23)
+        */
+       protected $page_boxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox');
+
+       /**
+        * If true print TCPDF meta link.
+        * @protected
+        * @since 5.9.152 (2012-03-23)
+        */
+       protected $tcpdflink = true;
+
+       /**
+        * Cache array for computed GD gamma values.
+        * @protected
+        * @since 5.9.1632 (2012-06-05)
+        */
+       protected $gdgammacache = array();
+
+       //------------------------------------------------------------
+       // METHODS
+       //------------------------------------------------------------
+
+       /**
+        * This is the class constructor.
+        * It allows to set up the page format, the orientation and the measure unit used in all the methods (except for the font sizes).
+        * 
+        * IMPORTANT: Please note that this method sets the mb_internal_encoding to ASCII, so if you are using the mbstring module functions with TCPDF you need to correctly set/unset the mb_internal_encoding when needed.
+        * 
+        * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or Portrait (default)</li><li>L or Landscape</li><li>'' (empty string) for automatic orientation</li></ul>
+        * @param $unit (string) User measure unit. Possible values are:<ul><li>pt: point</li><li>mm: millimeter (default)</li><li>cm: centimeter</li><li>in: inch</li></ul><br />A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit.
+        * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
+        * @param $unicode (boolean) TRUE means that the input text is unicode (default = true)
+        * @param $encoding (string) Charset encoding (used only when converting back html entities); default is UTF-8.
+        * @param $diskcache (boolean) If TRUE reduce the RAM memory usage by caching temporary data on filesystem (slower).
+        * @param $pdfa (boolean) If TRUE set the document to PDF/A mode.
+        * @public
+        * @see getPageSizeFromFormat(), setPageFormat()
+        */
+       public function __construct($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false, $pdfa=false) {
+               /* Set internal character encoding to ASCII */
+               if (function_exists('mb_internal_encoding') AND mb_internal_encoding()) {
+                       $this->internal_encoding = mb_internal_encoding();
+                       mb_internal_encoding('ASCII');
+               }
+               // set file ID for trailer
+               $serformat = (is_array($format) ? json_encode($format) : $format);
+               $this->file_id = md5(TCPDF_STATIC::getRandomSeed('TCPDF'.$orientation.$unit.$serformat.$encoding));
+               $this->font_obj_ids = array();
+               $this->page_obj_id = array();
+               $this->form_obj_id = array();
+               // set pdf/a mode
+               $this->pdfa_mode = $pdfa;
+               $this->force_srgb = false;
+               // set disk caching
+               $this->diskcache = $diskcache ? true : false;
+               // set language direction
+               $this->rtl = false;
+               $this->tmprtl = false;
+               // some checks
+               $this->_dochecks();
+               // initialization of properties
+               $this->isunicode = $unicode;
+               $this->page = 0;
+               $this->transfmrk[0] = array();
+               $this->pagedim = array();
+               $this->n = 2;
+               $this->buffer = '';
+               $this->pages = array();
+               $this->state = 0;
+               $this->fonts = array();
+               $this->FontFiles = array();
+               $this->diffs = array();
+               $this->images = array();
+               $this->links = array();
+               $this->gradients = array();
+               $this->InFooter = false;
+               $this->lasth = 0;
+               $this->FontFamily = defined('PDF_FONT_NAME_MAIN')?PDF_FONT_NAME_MAIN:'helvetica';
+               $this->FontStyle = '';
+               $this->FontSizePt = 12;
+               $this->underline = false;
+               $this->overline = false;
+               $this->linethrough = false;
+               $this->DrawColor = '0 G';
+               $this->FillColor = '0 g';
+               $this->TextColor = '0 g';
+               $this->ColorFlag = false;
+               $this->pdflayers = array();
+               // encryption values
+               $this->encrypted = false;
+               $this->last_enc_key = '';
+               // standard Unicode fonts
+               $this->CoreFonts = array(
+                       'courier'=>'Courier',
+                       'courierB'=>'Courier-Bold',
+                       'courierI'=>'Courier-Oblique',
+                       'courierBI'=>'Courier-BoldOblique',
+                       'helvetica'=>'Helvetica',
+                       'helveticaB'=>'Helvetica-Bold',
+                       'helveticaI'=>'Helvetica-Oblique',
+                       'helveticaBI'=>'Helvetica-BoldOblique',
+                       'times'=>'Times-Roman',
+                       'timesB'=>'Times-Bold',
+                       'timesI'=>'Times-Italic',
+                       'timesBI'=>'Times-BoldItalic',
+                       'symbol'=>'Symbol',
+                       'zapfdingbats'=>'ZapfDingbats'
+               );
+               // set scale factor
+               $this->setPageUnit($unit);
+               // set page format and orientation
+               $this->setPageFormat($format, $orientation);
+               // page margins (1 cm)
+               $margin = 28.35 / $this->k;
+               $this->SetMargins($margin, $margin);
+               $this->clMargin = $this->lMargin;
+               $this->crMargin = $this->rMargin;
+               // internal cell padding
+               $cpadding = $margin / 10;
+               $this->setCellPaddings($cpadding, 0, $cpadding, 0);
+               // cell margins
+               $this->setCellMargins(0, 0, 0, 0);
+               // line width (0.2 mm)
+               $this->LineWidth = 0.57 / $this->k;
+               $this->linestyleWidth = sprintf('%F w', ($this->LineWidth * $this->k));
+               $this->linestyleCap = '0 J';
+               $this->linestyleJoin = '0 j';
+               $this->linestyleDash = '[] 0 d';
+               // automatic page break
+               $this->SetAutoPageBreak(true, (2 * $margin));
+               // full width display mode
+               $this->SetDisplayMode('fullwidth');
+               // compression
+               $this->SetCompression();
+               // set default PDF version number
+               $this->setPDFVersion();
+               $this->tcpdflink = true;
+               $this->encoding = $encoding;
+               $this->HREF = array();
+               $this->getFontsList();
+               $this->fgcolor = array('R' => 0, 'G' => 0, 'B' => 0);
+               $this->strokecolor = array('R' => 0, 'G' => 0, 'B' => 0);
+               $this->bgcolor = array('R' => 255, 'G' => 255, 'B' => 255);
+               $this->extgstates = array();
+               $this->setTextShadow();
+               // signature
+               $this->sign = false;
+               $this->tsa_timestamp = false;
+               $this->tsa_data = array();
+               $this->signature_appearance = array('page' => 1, 'rect' => '0 0 0 0', 'name' => 'Signature');
+               $this->empty_signature_appearance = array();
+               // user's rights
+               $this->ur['enabled'] = false;
+               $this->ur['document'] = '/FullSave';
+               $this->ur['annots'] = '/Create/Delete/Modify/Copy/Import/Export';
+               $this->ur['form'] = '/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate';
+               $this->ur['signature'] = '/Modify';
+               $this->ur['ef'] = '/Create/Delete/Modify/Import';
+               $this->ur['formex'] = '';
+               // set default JPEG quality
+               $this->jpeg_quality = 75;
+               // initialize some settings
+               TCPDF_FONTS::utf8Bidi(array(''), '', false, $this->isunicode, $this->CurrentFont);
+               // set default font
+               $this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt);
+               $this->setHeaderFont(array($this->FontFamily, $this->FontStyle, $this->FontSizePt));
+               $this->setFooterFont(array($this->FontFamily, $this->FontStyle, $this->FontSizePt));
+               // check if PCRE Unicode support is enabled
+               if ($this->isunicode AND (@preg_match('/\pL/u', 'a') == 1)) {
+                       // PCRE unicode support is turned ON
+                       // \s     : any whitespace character
+                       // \p{Z}  : any separator
+                       // \p{Lo} : Unicode letter or ideograph that does not have lowercase and uppercase variants. Is used to chunk chinese words.
+                       // \xa0   : Unicode Character 'NO-BREAK SPACE' (U+00A0)
+                       //$this->setSpacesRE('/(?!\xa0)[\s\p{Z}\p{Lo}]/u');
+                       $this->setSpacesRE('/(?!\xa0)[\s\p{Z}]/u');
+               } else {
+                       // PCRE unicode support is turned OFF
+                       $this->setSpacesRE('/[^\S\xa0]/');
+               }
+               $this->default_form_prop = array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 255), 'strokeColor'=>array(128, 128, 128));
+               // set document creation and modification timestamp
+               $this->doc_creation_timestamp = time();
+               $this->doc_modification_timestamp = $this->doc_creation_timestamp;
+               // get default graphic vars
+               $this->default_graphic_vars = $this->getGraphicVars();
+               $this->header_xobj_autoreset = false;
+               $this->custom_xmp = '';
+       }
+
+       /**
+        * Default destructor.
+        * @public
+        * @since 1.53.0.TC016
+        */
+       public function __destruct() {
+               // restore internal encoding
+               if (isset($this->internal_encoding) AND !empty($this->internal_encoding)) {
+                       mb_internal_encoding($this->internal_encoding);
+               }
+               // unset all class variables
+               $this->_destroy(true);
+       }
+
+       /**
+        * Set the units of measure for the document.
+        * @param $unit (string) User measure unit. Possible values are:<ul><li>pt: point</li><li>mm: millimeter (default)</li><li>cm: centimeter</li><li>in: inch</li></ul><br />A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit.
+        * @public
+        * @since 3.0.015 (2008-06-06)
+        */
+       public function setPageUnit($unit) {
+               $unit = strtolower($unit);
+               //Set scale factor
+               switch ($unit) {
+                       // points
+                       case 'px':
+                       case 'pt': {
+                               $this->k = 1;
+                               break;
+                       }
+                       // millimeters
+                       case 'mm': {
+                               $this->k = $this->dpi / 25.4;
+                               break;
+                       }
+                       // centimeters
+                       case 'cm': {
+                               $this->k = $this->dpi / 2.54;
+                               break;
+                       }
+                       // inches
+                       case 'in': {
+                               $this->k = $this->dpi;
+                               break;
+                       }
+                       // unsupported unit
+                       default : {
+                               $this->Error('Incorrect unit: '.$unit);
+                               break;
+                       }
+               }
+               $this->pdfunit = $unit;
+               if (isset($this->CurOrientation)) {
+                       $this->setPageOrientation($this->CurOrientation);
+               }
+       }
+
+       /**
+        * Change the format of the current page
+        * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() documentation or an array of two numbers (width, height) or an array containing the following measures and options:<ul>
+        * <li>['format'] = page format name (one of the above);</li>
+        * <li>['Rotate'] : The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90.</li>
+        * <li>['PZ'] : The page's preferred zoom (magnification) factor.</li>
+        * <li>['MediaBox'] : the boundaries of the physical medium on which the page shall be displayed or printed:</li>
+        * <li>['MediaBox']['llx'] : lower-left x coordinate</li>
+        * <li>['MediaBox']['lly'] : lower-left y coordinate</li>
+        * <li>['MediaBox']['urx'] : upper-right x coordinate</li>
+        * <li>['MediaBox']['ury'] : upper-right y coordinate</li>
+        * <li>['CropBox'] : the visible region of default user space:</li>
+        * <li>['CropBox']['llx'] : lower-left x coordinate</li>
+        * <li>['CropBox']['lly'] : lower-left y coordinate</li>
+        * <li>['CropBox']['urx'] : upper-right x coordinate</li>
+        * <li>['CropBox']['ury'] : upper-right y coordinate</li>
+        * <li>['BleedBox'] : the region to which the contents of the page shall be clipped when output in a production environment:</li>
+        * <li>['BleedBox']['llx'] : lower-left x coordinate</li>
+        * <li>['BleedBox']['lly'] : lower-left y coordinate</li>
+        * <li>['BleedBox']['urx'] : upper-right x coordinate</li>
+        * <li>['BleedBox']['ury'] : upper-right y coordinate</li>
+        * <li>['TrimBox'] : the intended dimensions of the finished page after trimming:</li>
+        * <li>['TrimBox']['llx'] : lower-left x coordinate</li>
+        * <li>['TrimBox']['lly'] : lower-left y coordinate</li>
+        * <li>['TrimBox']['urx'] : upper-right x coordinate</li>
+        * <li>['TrimBox']['ury'] : upper-right y coordinate</li>
+        * <li>['ArtBox'] : the extent of the page's meaningful content:</li>
+        * <li>['ArtBox']['llx'] : lower-left x coordinate</li>
+        * <li>['ArtBox']['lly'] : lower-left y coordinate</li>
+        * <li>['ArtBox']['urx'] : upper-right x coordinate</li>
+        * <li>['ArtBox']['ury'] : upper-right y coordinate</li>
+        * <li>['BoxColorInfo'] :specify the colours and other visual characteristics that should be used in displaying guidelines on the screen for each of the possible page boundaries other than the MediaBox:</li>
+        * <li>['BoxColorInfo'][BOXTYPE]['C'] : an array of three numbers in the range 0-255, representing the components in the DeviceRGB colour space.</li>
+        * <li>['BoxColorInfo'][BOXTYPE]['W'] : the guideline width in default user units</li>
+        * <li>['BoxColorInfo'][BOXTYPE]['S'] : the guideline style: S = Solid; D = Dashed</li>
+        * <li>['BoxColorInfo'][BOXTYPE]['D'] : dash array defining a pattern of dashes and gaps to be used in drawing dashed guidelines</li>
+        * <li>['trans'] : the style and duration of the visual transition to use when moving from another page to the given page during a presentation</li>
+        * <li>['trans']['Dur'] : The page's display duration (also called its advance timing): the maximum length of time, in seconds, that the page shall be displayed during presentations before the viewer application shall automatically advance to the next page.</li>
+        * <li>['trans']['S'] : transition style : Split, Blinds, Box, Wipe, Dissolve, Glitter, R, Fly, Push, Cover, Uncover, Fade</li>
+        * <li>['trans']['D'] : The duration of the transition effect, in seconds.</li>
+        * <li>['trans']['Dm'] : (Split and Blinds transition styles only) The dimension in which the specified transition effect shall occur: H = Horizontal, V = Vertical. Default value: H.</li>
+        * <li>['trans']['M'] : (Split, Box and Fly transition styles only) The direction of motion for the specified transition effect: I = Inward from the edges of the page, O = Outward from the center of the pageDefault value: I.</li>
+        * <li>['trans']['Di'] : (Wipe, Glitter, Fly, Cover, Uncover and Push transition styles only) The direction in which the specified transition effect shall moves, expressed in degrees counterclockwise starting from a left-to-right direction. If the value is a number, it shall be one of: 0 = Left to right, 90 = Bottom to top (Wipe only), 180 = Right to left (Wipe only), 270 = Top to bottom, 315 = Top-left to bottom-right (Glitter only). If the value is a name, it shall be None, which is relevant only for the Fly transition when the value of SS is not 1.0. Default value: 0.</li>
+        * <li>['trans']['SS'] : (Fly transition style only) The starting or ending scale at which the changes shall be drawn. If M specifies an inward transition, the scale of the changes drawn shall progress from SS to 1.0 over the course of the transition. If M specifies an outward transition, the scale of the changes drawn shall progress from 1.0 to SS over the course of the transition. Default: 1.0.</li>
+        * <li>['trans']['B'] : (Fly transition style only) If true, the area that shall be flown in is rectangular and opaque. Default: false.</li>
+        * </ul>
+        * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul>
+        * <li>P or Portrait (default)</li>
+        * <li>L or Landscape</li>
+        * <li>'' (empty string) for automatic orientation</li>
+        * </ul>
+        * @protected
+        * @since 3.0.015 (2008-06-06)
+        * @see getPageSizeFromFormat()
+        */
+       protected function setPageFormat($format, $orientation='P') {
+               if (!empty($format) AND isset($this->pagedim[$this->page])) {
+                       // remove inherited values
+                       unset($this->pagedim[$this->page]);
+               }
+               if (is_string($format)) {
+                       // get page measures from format name
+                       $pf = TCPDF_STATIC::getPageSizeFromFormat($format);
+                       $this->fwPt = $pf[0];
+                       $this->fhPt = $pf[1];
+               } else {
+                       // the boundaries of the physical medium on which the page shall be displayed or printed
+                       if (isset($format['MediaBox'])) {
+                               $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'MediaBox', $format['MediaBox']['llx'], $format['MediaBox']['lly'], $format['MediaBox']['urx'], $format['MediaBox']['ury'], false, $this->k, $this->pagedim);
+                               $this->fwPt = (($format['MediaBox']['urx'] - $format['MediaBox']['llx']) * $this->k);
+                               $this->fhPt = (($format['MediaBox']['ury'] - $format['MediaBox']['lly']) * $this->k);
+                       } else {
+                               if (isset($format[0]) AND is_numeric($format[0]) AND isset($format[1]) AND is_numeric($format[1])) {
+                                       $pf = array(($format[0] * $this->k), ($format[1] * $this->k));
+                               } else {
+                                       if (!isset($format['format'])) {
+                                               // default value
+                                               $format['format'] = 'A4';
+                                       }
+                                       $pf = TCPDF_STATIC::getPageSizeFromFormat($format['format']);
+                               }
+                               $this->fwPt = $pf[0];
+                               $this->fhPt = $pf[1];
+                               $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'MediaBox', 0, 0, $this->fwPt, $this->fhPt, true, $this->k, $this->pagedim);
+                       }
+                       // the visible region of default user space
+                       if (isset($format['CropBox'])) {
+                               $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'CropBox', $format['CropBox']['llx'], $format['CropBox']['lly'], $format['CropBox']['urx'], $format['CropBox']['ury'], false, $this->k, $this->pagedim);
+                       }
+                       // the region to which the contents of the page shall be clipped when output in a production environment
+                       if (isset($format['BleedBox'])) {
+                               $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'BleedBox', $format['BleedBox']['llx'], $format['BleedBox']['lly'], $format['BleedBox']['urx'], $format['BleedBox']['ury'], false, $this->k, $this->pagedim);
+                       }
+                       // the intended dimensions of the finished page after trimming
+                       if (isset($format['TrimBox'])) {
+                               $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'TrimBox', $format['TrimBox']['llx'], $format['TrimBox']['lly'], $format['TrimBox']['urx'], $format['TrimBox']['ury'], false, $this->k, $this->pagedim);
+                       }
+                       // the page's meaningful content (including potential white space)
+                       if (isset($format['ArtBox'])) {
+                               $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'ArtBox', $format['ArtBox']['llx'], $format['ArtBox']['lly'], $format['ArtBox']['urx'], $format['ArtBox']['ury'], false, $this->k, $this->pagedim);
+                       }
+                       // specify the colours and other visual characteristics that should be used in displaying guidelines on the screen for the various page boundaries
+                       if (isset($format['BoxColorInfo'])) {
+                               $this->pagedim[$this->page]['BoxColorInfo'] = $format['BoxColorInfo'];
+                       }
+                       if (isset($format['Rotate']) AND (($format['Rotate'] % 90) == 0)) {
+                               // The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90.
+                               $this->pagedim[$this->page]['Rotate'] = intval($format['Rotate']);
+                       }
+                       if (isset($format['PZ'])) {
+                               // The page's preferred zoom (magnification) factor
+                               $this->pagedim[$this->page]['PZ'] = floatval($format['PZ']);
+                       }
+                       if (isset($format['trans'])) {
+                               // The style and duration of the visual transition to use when moving from another page to the given page during a presentation
+                               if (isset($format['trans']['Dur'])) {
+                                       // The page's display duration
+                                       $this->pagedim[$this->page]['trans']['Dur'] = floatval($format['trans']['Dur']);
+                               }
+                               $stansition_styles = array('Split', 'Blinds', 'Box', 'Wipe', 'Dissolve', 'Glitter', 'R', 'Fly', 'Push', 'Cover', 'Uncover', 'Fade');
+                               if (isset($format['trans']['S']) AND in_array($format['trans']['S'], $stansition_styles)) {
+                                       // The transition style that shall be used when moving to this page from another during a presentation
+                                       $this->pagedim[$this->page]['trans']['S'] = $format['trans']['S'];
+                                       $valid_effect = array('Split', 'Blinds');
+                                       $valid_vals = array('H', 'V');
+                                       if (isset($format['trans']['Dm']) AND in_array($format['trans']['S'], $valid_effect) AND in_array($format['trans']['Dm'], $valid_vals)) {
+                                               $this->pagedim[$this->page]['trans']['Dm'] = $format['trans']['Dm'];
+                                       }
+                                       $valid_effect = array('Split', 'Box', 'Fly');
+                                       $valid_vals = array('I', 'O');
+                                       if (isset($format['trans']['M']) AND in_array($format['trans']['S'], $valid_effect) AND in_array($format['trans']['M'], $valid_vals)) {
+                                               $this->pagedim[$this->page]['trans']['M'] = $format['trans']['M'];
+                                       }
+                                       $valid_effect = array('Wipe', 'Glitter', 'Fly', 'Cover', 'Uncover', 'Push');
+                                       if (isset($format['trans']['Di']) AND in_array($format['trans']['S'], $valid_effect)) {
+                                               if (((($format['trans']['Di'] == 90) OR ($format['trans']['Di'] == 180)) AND ($format['trans']['S'] == 'Wipe'))
+                                                       OR (($format['trans']['Di'] == 315) AND ($format['trans']['S'] == 'Glitter'))
+                                                       OR (($format['trans']['Di'] == 0) OR ($format['trans']['Di'] == 270))) {
+                                                       $this->pagedim[$this->page]['trans']['Di'] = intval($format['trans']['Di']);
+                                               }
+                                       }
+                                       if (isset($format['trans']['SS']) AND ($format['trans']['S'] == 'Fly')) {
+                                               $this->pagedim[$this->page]['trans']['SS'] = floatval($format['trans']['SS']);
+                                       }
+                                       if (isset($format['trans']['B']) AND ($format['trans']['B'] === true) AND ($format['trans']['S'] == 'Fly')) {
+                                               $this->pagedim[$this->page]['trans']['B'] = 'true';
+                                       }
+                               } else {
+                                       $this->pagedim[$this->page]['trans']['S'] = 'R';
+                               }
+                               if (isset($format['trans']['D'])) {
+                                       // The duration of the transition effect, in seconds
+                                       $this->pagedim[$this->page]['trans']['D'] = floatval($format['trans']['D']);
+                               } else {
+                                       $this->pagedim[$this->page]['trans']['D'] = 1;
+                               }
+                       }
+               }
+               $this->setPageOrientation($orientation);
+       }
+
+       /**
+        * Set page orientation.
+        * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or Portrait (default)</li><li>L or Landscape</li><li>'' (empty string) for automatic orientation</li></ul>
+        * @param $autopagebreak (boolean) Boolean indicating if auto-page-break mode should be on or off.
+        * @param $bottommargin (float) bottom margin of the page.
+        * @public
+        * @since 3.0.015 (2008-06-06)
+        */
+       public function setPageOrientation($orientation, $autopagebreak='', $bottommargin='') {
+               if (!isset($this->pagedim[$this->page]['MediaBox'])) {
+                       // the boundaries of the physical medium on which the page shall be displayed or printed
+                       $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'MediaBox', 0, 0, $this->fwPt, $this->fhPt, true, $this->k, $this->pagedim);
+               }
+               if (!isset($this->pagedim[$this->page]['CropBox'])) {
+                       // the visible region of default user space
+                       $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'CropBox', $this->pagedim[$this->page]['MediaBox']['llx'], $this->pagedim[$this->page]['MediaBox']['lly'], $this->pagedim[$this->page]['MediaBox']['urx'], $this->pagedim[$this->page]['MediaBox']['ury'], true, $this->k, $this->pagedim);
+               }
+               if (!isset($this->pagedim[$this->page]['BleedBox'])) {
+                       // the region to which the contents of the page shall be clipped when output in a production environment
+                       $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'BleedBox', $this->pagedim[$this->page]['CropBox']['llx'], $this->pagedim[$this->page]['CropBox']['lly'], $this->pagedim[$this->page]['CropBox']['urx'], $this->pagedim[$this->page]['CropBox']['ury'], true, $this->k, $this->pagedim);
+               }
+               if (!isset($this->pagedim[$this->page]['TrimBox'])) {
+                       // the intended dimensions of the finished page after trimming
+                       $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'TrimBox', $this->pagedim[$this->page]['CropBox']['llx'], $this->pagedim[$this->page]['CropBox']['lly'], $this->pagedim[$this->page]['CropBox']['urx'], $this->pagedim[$this->page]['CropBox']['ury'], true, $this->k, $this->pagedim);
+               }
+               if (!isset($this->pagedim[$this->page]['ArtBox'])) {
+                       // the page's meaningful content (including potential white space)
+                       $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'ArtBox', $this->pagedim[$this->page]['CropBox']['llx'], $this->pagedim[$this->page]['CropBox']['lly'], $this->pagedim[$this->page]['CropBox']['urx'], $this->pagedim[$this->page]['CropBox']['ury'], true, $this->k, $this->pagedim);
+               }
+               if (!isset($this->pagedim[$this->page]['Rotate'])) {
+                       // The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90.
+                       $this->pagedim[$this->page]['Rotate'] = 0;
+               }
+               if (!isset($this->pagedim[$this->page]['PZ'])) {
+                       // The page's preferred zoom (magnification) factor
+                       $this->pagedim[$this->page]['PZ'] = 1;
+               }
+               if ($this->fwPt > $this->fhPt) {
+                       // landscape
+                       $default_orientation = 'L';
+               } else {
+                       // portrait
+                       $default_orientation = 'P';
+               }
+               $valid_orientations = array('P', 'L');
+               if (empty($orientation)) {
+                       $orientation = $default_orientation;
+               } else {
+                       $orientation = strtoupper($orientation[0]);
+               }
+               if (in_array($orientation, $valid_orientations) AND ($orientation != $default_orientation)) {
+                       $this->CurOrientation = $orientation;
+                       $this->wPt = $this->fhPt;
+                       $this->hPt = $this->fwPt;
+               } else {
+                       $this->CurOrientation = $default_orientation;
+                       $this->wPt = $this->fwPt;
+                       $this->hPt = $this->fhPt;
+               }
+               if ((abs($this->pagedim[$this->page]['MediaBox']['urx'] - $this->hPt) < $this->feps) AND (abs($this->pagedim[$this->page]['MediaBox']['ury'] - $this->wPt) < $this->feps)){
+                       // swap X and Y coordinates (change page orientation)
+                       $this->pagedim = TCPDF_STATIC::swapPageBoxCoordinates($this->page, $this->pagedim);
+               }
+               $this->w = ($this->wPt / $this->k);
+               $this->h = ($this->hPt / $this->k);
+               if (TCPDF_STATIC::empty_string($autopagebreak)) {
+                       if (isset($this->AutoPageBreak)) {
+                               $autopagebreak = $this->AutoPageBreak;
+                       } else {
+                               $autopagebreak = true;
+                       }
+               }
+               if (TCPDF_STATIC::empty_string($bottommargin)) {
+                       if (isset($this->bMargin)) {
+                               $bottommargin = $this->bMargin;
+                       } else {
+                               // default value = 2 cm
+                               $bottommargin = 2 * 28.35 / $this->k;
+                       }
+               }
+               $this->SetAutoPageBreak($autopagebreak, $bottommargin);
+               // store page dimensions
+               $this->pagedim[$this->page]['w'] = $this->wPt;
+               $this->pagedim[$this->page]['h'] = $this->hPt;
+               $this->pagedim[$this->page]['wk'] = $this->w;
+               $this->pagedim[$this->page]['hk'] = $this->h;
+               $this->pagedim[$this->page]['tm'] = $this->tMargin;
+               $this->pagedim[$this->page]['bm'] = $bottommargin;
+               $this->pagedim[$this->page]['lm'] = $this->lMargin;
+               $this->pagedim[$this->page]['rm'] = $this->rMargin;
+               $this->pagedim[$this->page]['pb'] = $autopagebreak;
+               $this->pagedim[$this->page]['or'] = $this->CurOrientation;
+               $this->pagedim[$this->page]['olm'] = $this->original_lMargin;
+               $this->pagedim[$this->page]['orm'] = $this->original_rMargin;
+       }
+
+       /**
+        * Set regular expression to detect withespaces or word separators.
+        * The pattern delimiter must be the forward-slash character "/".
+        * Some example patterns are:
+        * <pre>
+        * Non-Unicode or missing PCRE unicode support: "/[^\S\xa0]/"
+        * Unicode and PCRE unicode support: "/(?!\xa0)[\s\p{Z}]/u"
+        * Unicode and PCRE unicode support in Chinese mode: "/(?!\xa0)[\s\p{Z}\p{Lo}]/u"
+        * if PCRE unicode support is turned ON ("\P" is the negate class of "\p"):
+        *      \s     : any whitespace character
+        *      \p{Z}  : any separator
+        *      \p{Lo} : Unicode letter or ideograph that does not have lowercase and uppercase variants. Is used to chunk chinese words.
+        *      \xa0   : Unicode Character 'NO-BREAK SPACE' (U+00A0)
+        * </pre>
+        * @param $re (string) regular expression (leave empty for default).
+        * @public
+        * @since 4.6.016 (2009-06-15)
+        */
+       public function setSpacesRE($re='/[^\S\xa0]/') {
+               $this->re_spaces = $re;
+               $re_parts = explode('/', $re);
+               // get pattern parts
+               $this->re_space = array();
+               if (isset($re_parts[1]) AND !empty($re_parts[1])) {
+                       $this->re_space['p'] = $re_parts[1];
+               } else {
+                       $this->re_space['p'] = '[\s]';
+               }
+               // set pattern modifiers
+               if (isset($re_parts[2]) AND !empty($re_parts[2])) {
+                       $this->re_space['m'] = $re_parts[2];
+               } else {
+                       $this->re_space['m'] = '';
+               }
+       }
+
+       /**
+        * Enable or disable Right-To-Left language mode
+        * @param $enable (Boolean) if true enable Right-To-Left language mode.
+        * @param $resetx (Boolean) if true reset the X position on direction change.
+        * @public
+        * @since 2.0.000 (2008-01-03)
+        */
+       public function setRTL($enable, $resetx=true) {
+               $enable = $enable ? true : false;
+               $resetx = ($resetx AND ($enable != $this->rtl));
+               $this->rtl = $enable;
+               $this->tmprtl = false;
+               if ($resetx) {
+                       $this->Ln(0);
+               }
+       }
+
+       /**
+        * Return the RTL status
+        * @return boolean
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getRTL() {
+               return $this->rtl;
+       }
+
+       /**
+        * Force temporary RTL language direction
+        * @param $mode (mixed) can be false, 'L' for LTR or 'R' for RTL
+        * @public
+        * @since 2.1.000 (2008-01-09)
+        */
+       public function setTempRTL($mode) {
+               $newmode = false;
+               switch (strtoupper($mode)) {
+                       case 'LTR':
+                       case 'L': {
+                               if ($this->rtl) {
+                                       $newmode = 'L';
+                               }
+                               break;
+                       }
+                       case 'RTL':
+                       case 'R': {
+                               if (!$this->rtl) {
+                                       $newmode = 'R';
+                               }
+                               break;
+                       }
+                       case false:
+                       default: {
+                               $newmode = false;
+                               break;
+                       }
+               }
+               $this->tmprtl = $newmode;
+       }
+
+       /**
+        * Return the current temporary RTL status
+        * @return boolean
+        * @public
+        * @since 4.8.014 (2009-11-04)
+        */
+       public function isRTLTextDir() {
+               return ($this->rtl OR ($this->tmprtl == 'R'));
+       }
+
+       /**
+        * Set the last cell height.
+        * @param $h (float) cell height.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.53.0.TC034
+        */
+       public function setLastH($h) {
+               $this->lasth = $h;
+       }
+
+       /**
+        * Return the cell height
+        * @param $fontsize (int) Font size in internal units
+        * @param $padding (boolean) If true add cell padding
+        * @public
+        */
+       public function getCellHeight($fontsize, $padding=TRUE) {
+               $height = ($fontsize * $this->cell_height_ratio);
+               if ($padding) {
+                       $height += ($this->cell_padding['T'] + $this->cell_padding['B']);
+               }
+               return round($height, 6);
+       }
+
+       /**
+        * Reset the last cell height.
+        * @public
+        * @since 5.9.000 (2010-10-03)
+        */
+       public function resetLastH() {
+               $this->lasth = $this->getCellHeight($this->FontSize);
+       }
+
+       /**
+        * Get the last cell height.
+        * @return last cell height
+        * @public
+        * @since 4.0.017 (2008-08-05)
+        */
+       public function getLastH() {
+               return $this->lasth;
+       }
+
+       /**
+        * Set the adjusting factor to convert pixels to user units.
+        * @param $scale (float) adjusting factor to convert pixels to user units.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.5.2
+        */
+       public function setImageScale($scale) {
+               $this->imgscale = $scale;
+       }
+
+       /**
+        * Returns the adjusting factor to convert pixels to user units.
+        * @return float adjusting factor to convert pixels to user units.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.5.2
+        */
+       public function getImageScale() {
+               return $this->imgscale;
+       }
+
+       /**
+        * Returns an array of page dimensions:
+        * <ul><li>$this->pagedim[$this->page]['w'] = page width in points</li><li>$this->pagedim[$this->page]['h'] = height in points</li><li>$this->pagedim[$this->page]['wk'] = page width in user units</li><li>$this->pagedim[$this->page]['hk'] = page height in user units</li><li>$this->pagedim[$this->page]['tm'] = top margin</li><li>$this->pagedim[$this->page]['bm'] = bottom margin</li><li>$this->pagedim[$this->page]['lm'] = left margin</li><li>$this->pagedim[$this->page]['rm'] = right margin</li><li>$this->pagedim[$this->page]['pb'] = auto page break</li><li>$this->pagedim[$this->page]['or'] = page orientation</li><li>$this->pagedim[$this->page]['olm'] = original left margin</li><li>$this->pagedim[$this->page]['orm'] = original right margin</li><li>$this->pagedim[$this->page]['Rotate'] = The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90.</li><li>$this->pagedim[$this->page]['PZ'] = The page's preferred zoom (magnification) factor.</li><li>$this->pagedim[$this->page]['trans'] : the style and duration of the visual transition to use when moving from another page to the given page during a presentation<ul><li>$this->pagedim[$this->page]['trans']['Dur'] = The page's display duration (also called its advance timing): the maximum length of time, in seconds, that the page shall be displayed during presentations before the viewer application shall automatically advance to the next page.</li><li>$this->pagedim[$this->page]['trans']['S'] = transition style : Split, Blinds, Box, Wipe, Dissolve, Glitter, R, Fly, Push, Cover, Uncover, Fade</li><li>$this->pagedim[$this->page]['trans']['D'] = The duration of the transition effect, in seconds.</li><li>$this->pagedim[$this->page]['trans']['Dm'] = (Split and Blinds transition styles only) The dimension in which the specified transition effect shall occur: H = Horizontal, V = Vertical. Default value: H.</li><li>$this->pagedim[$this->page]['trans']['M'] = (Split, Box and Fly transition styles only) The direction of motion for the specified transition effect: I = Inward from the edges of the page, O = Outward from the center of the pageDefault value: I.</li><li>$this->pagedim[$this->page]['trans']['Di'] = (Wipe, Glitter, Fly, Cover, Uncover and Push transition styles only) The direction in which the specified transition effect shall moves, expressed in degrees counterclockwise starting from a left-to-right direction. If the value is a number, it shall be one of: 0 = Left to right, 90 = Bottom to top (Wipe only), 180 = Right to left (Wipe only), 270 = Top to bottom, 315 = Top-left to bottom-right (Glitter only). If the value is a name, it shall be None, which is relevant only for the Fly transition when the value of SS is not 1.0. Default value: 0.</li><li>$this->pagedim[$this->page]['trans']['SS'] = (Fly transition style only) The starting or ending scale at which the changes shall be drawn. If M specifies an inward transition, the scale of the changes drawn shall progress from SS to 1.0 over the course of the transition. If M specifies an outward transition, the scale of the changes drawn shall progress from 1.0 to SS over the course of the transition. Default: 1.0. </li><li>$this->pagedim[$this->page]['trans']['B'] = (Fly transition style only) If true, the area that shall be flown in is rectangular and opaque. Default: false.</li></ul></li><li>$this->pagedim[$this->page]['MediaBox'] : the boundaries of the physical medium on which the page shall be displayed or printed<ul><li>$this->pagedim[$this->page]['MediaBox']['llx'] = lower-left x coordinate in points</li><li>$this->pagedim[$this->page]['MediaBox']['lly'] = lower-left y coordinate in points</li><li>$this->pagedim[$this->page]['MediaBox']['urx'] = upper-right x coordinate in points</li><li>$this->pagedim[$this->page]['MediaBox']['ury'] = upper-right y coordinate in points</li></ul></li><li>$this->pagedim[$this->page]['CropBox'] : the visible region of default user space<ul><li>$this->pagedim[$this->page]['CropBox']['llx'] = lower-left x coordinate in points</li><li>$this->pagedim[$this->page]['CropBox']['lly'] = lower-left y coordinate in points</li><li>$this->pagedim[$this->page]['CropBox']['urx'] = upper-right x coordinate in points</li><li>$this->pagedim[$this->page]['CropBox']['ury'] = upper-right y coordinate in points</li></ul></li><li>$this->pagedim[$this->page]['BleedBox'] : the region to which the contents of the page shall be clipped when output in a production environment<ul><li>$this->pagedim[$this->page]['BleedBox']['llx'] = lower-left x coordinate in points</li><li>$this->pagedim[$this->page]['BleedBox']['lly'] = lower-left y coordinate in points</li><li>$this->pagedim[$this->page]['BleedBox']['urx'] = upper-right x coordinate in points</li><li>$this->pagedim[$this->page]['BleedBox']['ury'] = upper-right y coordinate in points</li></ul></li><li>$this->pagedim[$this->page]['TrimBox'] : the intended dimensions of the finished page after trimming<ul><li>$this->pagedim[$this->page]['TrimBox']['llx'] = lower-left x coordinate in points</li><li>$this->pagedim[$this->page]['TrimBox']['lly'] = lower-left y coordinate in points</li><li>$this->pagedim[$this->page]['TrimBox']['urx'] = upper-right x coordinate in points</li><li>$this->pagedim[$this->page]['TrimBox']['ury'] = upper-right y coordinate in points</li></ul></li><li>$this->pagedim[$this->page]['ArtBox'] : the extent of the page's meaningful content<ul><li>$this->pagedim[$this->page]['ArtBox']['llx'] = lower-left x coordinate in points</li><li>$this->pagedim[$this->page]['ArtBox']['lly'] = lower-left y coordinate in points</li><li>$this->pagedim[$this->page]['ArtBox']['urx'] = upper-right x coordinate in points</li><li>$this->pagedim[$this->page]['ArtBox']['ury'] = upper-right y coordinate in points</li></ul></li></ul>
+        * @param $pagenum (int) page number (empty = current page)
+        * @return array of page dimensions.
+        * @author Nicola Asuni
+        * @public
+        * @since 4.5.027 (2009-03-16)
+        */
+       public function getPageDimensions($pagenum='') {
+               if (empty($pagenum)) {
+                       $pagenum = $this->page;
+               }
+               return $this->pagedim[$pagenum];
+       }
+
+       /**
+        * Returns the page width in units.
+        * @param $pagenum (int) page number (empty = current page)
+        * @return int page width.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.5.2
+        * @see getPageDimensions()
+        */
+       public function getPageWidth($pagenum='') {
+               if (empty($pagenum)) {
+                       return $this->w;
+               }
+               return $this->pagedim[$pagenum]['w'];
+       }
+
+       /**
+        * Returns the page height in units.
+        * @param $pagenum (int) page number (empty = current page)
+        * @return int page height.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.5.2
+        * @see getPageDimensions()
+        */
+       public function getPageHeight($pagenum='') {
+               if (empty($pagenum)) {
+                       return $this->h;
+               }
+               return $this->pagedim[$pagenum]['h'];
+       }
+
+       /**
+        * Returns the page break margin.
+        * @param $pagenum (int) page number (empty = current page)
+        * @return int page break margin.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.5.2
+        * @see getPageDimensions()
+        */
+       public function getBreakMargin($pagenum='') {
+               if (empty($pagenum)) {
+                       return $this->bMargin;
+               }
+               return $this->pagedim[$pagenum]['bm'];
+       }
+
+       /**
+        * Returns the scale factor (number of points in user unit).
+        * @return int scale factor.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.5.2
+        */
+       public function getScaleFactor() {
+               return $this->k;
+       }
+
+       /**
+        * Defines the left, top and right margins.
+        * @param $left (float) Left margin.
+        * @param $top (float) Top margin.
+        * @param $right (float) Right margin. Default value is the left one.
+        * @param $keepmargins (boolean) if true overwrites the default page margins
+        * @public
+        * @since 1.0
+        * @see SetLeftMargin(), SetTopMargin(), SetRightMargin(), SetAutoPageBreak()
+        */
+       public function SetMargins($left, $top, $right=-1, $keepmargins=false) {
+               //Set left, top and right margins
+               $this->lMargin = $left;
+               $this->tMargin = $top;
+               if ($right == -1) {
+                       $right = $left;
+               }
+               $this->rMargin = $right;
+               if ($keepmargins) {
+                       // overwrite original values
+                       $this->original_lMargin = $this->lMargin;
+                       $this->original_rMargin = $this->rMargin;
+               }
+       }
+
+       /**
+        * Defines the left margin. The method can be called before creating the first page. If the current abscissa gets out of page, it is brought back to the margin.
+        * @param $margin (float) The margin.
+        * @public
+        * @since 1.4
+        * @see SetTopMargin(), SetRightMargin(), SetAutoPageBreak(), SetMargins()
+        */
+       public function SetLeftMargin($margin) {
+               //Set left margin
+               $this->lMargin = $margin;
+               if (($this->page > 0) AND ($this->x < $margin)) {
+                       $this->x = $margin;
+               }
+       }
+
+       /**
+        * Defines the top margin. The method can be called before creating the first page.
+        * @param $margin (float) The margin.
+        * @public
+        * @since 1.5
+        * @see SetLeftMargin(), SetRightMargin(), SetAutoPageBreak(), SetMargins()
+        */
+       public function SetTopMargin($margin) {
+               //Set top margin
+               $this->tMargin = $margin;
+               if (($this->page > 0) AND ($this->y < $margin)) {
+                       $this->y = $margin;
+               }
+       }
+
+       /**
+        * Defines the right margin. The method can be called before creating the first page.
+        * @param $margin (float) The margin.
+        * @public
+        * @since 1.5
+        * @see SetLeftMargin(), SetTopMargin(), SetAutoPageBreak(), SetMargins()
+        */
+       public function SetRightMargin($margin) {
+               $this->rMargin = $margin;
+               if (($this->page > 0) AND ($this->x > ($this->w - $margin))) {
+                       $this->x = $this->w - $margin;
+               }
+       }
+
+       /**
+        * Set the same internal Cell padding for top, right, bottom, left-
+        * @param $pad (float) internal padding.
+        * @public
+        * @since 2.1.000 (2008-01-09)
+        * @see getCellPaddings(), setCellPaddings()
+        */
+       public function SetCellPadding($pad) {
+               if ($pad >= 0) {
+                       $this->cell_padding['L'] = $pad;
+                       $this->cell_padding['T'] = $pad;
+                       $this->cell_padding['R'] = $pad;
+                       $this->cell_padding['B'] = $pad;
+               }
+       }
+
+       /**
+        * Set the internal Cell paddings.
+        * @param $left (float) left padding
+        * @param $top (float) top padding
+        * @param $right (float) right padding
+        * @param $bottom (float) bottom padding
+        * @public
+        * @since 5.9.000 (2010-10-03)
+        * @see getCellPaddings(), SetCellPadding()
+        */
+       public function setCellPaddings($left='', $top='', $right='', $bottom='') {
+               if (($left !== '') AND ($left >= 0)) {
+                       $this->cell_padding['L'] = $left;
+               }
+               if (($top !== '') AND ($top >= 0)) {
+                       $this->cell_padding['T'] = $top;
+               }
+               if (($right !== '') AND ($right >= 0)) {
+                       $this->cell_padding['R'] = $right;
+               }
+               if (($bottom !== '') AND ($bottom >= 0)) {
+                       $this->cell_padding['B'] = $bottom;
+               }
+       }
+
+       /**
+        * Get the internal Cell padding array.
+        * @return array of padding values
+        * @public
+        * @since 5.9.000 (2010-10-03)
+        * @see setCellPaddings(), SetCellPadding()
+        */
+       public function getCellPaddings() {
+               return $this->cell_padding;
+       }
+
+       /**
+        * Set the internal Cell margins.
+        * @param $left (float) left margin
+        * @param $top (float) top margin
+        * @param $right (float) right margin
+        * @param $bottom (float) bottom margin
+        * @public
+        * @since 5.9.000 (2010-10-03)
+        * @see getCellMargins()
+        */
+       public function setCellMargins($left='', $top='', $right='', $bottom='') {
+               if (($left !== '') AND ($left >= 0)) {
+                       $this->cell_margin['L'] = $left;
+               }
+               if (($top !== '') AND ($top >= 0)) {
+                       $this->cell_margin['T'] = $top;
+               }
+               if (($right !== '') AND ($right >= 0)) {
+                       $this->cell_margin['R'] = $right;
+               }
+               if (($bottom !== '') AND ($bottom >= 0)) {
+                       $this->cell_margin['B'] = $bottom;
+               }
+       }
+
+       /**
+        * Get the internal Cell margin array.
+        * @return array of margin values
+        * @public
+        * @since 5.9.000 (2010-10-03)
+        * @see setCellMargins()
+        */
+       public function getCellMargins() {
+               return $this->cell_margin;
+       }
+
+       /**
+        * Adjust the internal Cell padding array to take account of the line width.
+        * @param $brd (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @return array of adjustments
+        * @public
+        * @since 5.9.000 (2010-10-03)
+        */
+       protected function adjustCellPadding($brd=0) {
+               if (empty($brd)) {
+                       return;
+               }
+               if (is_string($brd)) {
+                       // convert string to array
+                       $slen = strlen($brd);
+                       $newbrd = array();
+                       for ($i = 0; $i < $slen; ++$i) {
+                               $newbrd[$brd[$i]] = true;
+                       }
+                       $brd = $newbrd;
+               } elseif (($brd === 1) OR ($brd === true) OR (is_numeric($brd) AND (intval($brd) > 0))) {
+                       $brd = array('LRTB' => true);
+               }
+               if (!is_array($brd)) {
+                       return;
+               }
+               // store current cell padding
+               $cp = $this->cell_padding;
+               // select border mode
+               if (isset($brd['mode'])) {
+                       $mode = $brd['mode'];
+                       unset($brd['mode']);
+               } else {
+                       $mode = 'normal';
+               }
+               // process borders
+               foreach ($brd as $border => $style) {
+                       $line_width = $this->LineWidth;
+                       if (is_array($style) AND isset($style['width'])) {
+                               // get border width
+                               $line_width = $style['width'];
+                       }
+                       $adj = 0; // line width inside the cell
+                       switch ($mode) {
+                               case 'ext': {
+                                       $adj = 0;
+                                       break;
+                               }
+                               case 'int': {
+                                       $adj = $line_width;
+                                       break;
+                               }
+                               case 'normal':
+                               default: {
+                                       $adj = ($line_width / 2);
+                                       break;
+                               }
+                       }
+                       // correct internal cell padding if required to avoid overlap between text and lines
+                       if ((strpos($border,'T') !== false) AND ($this->cell_padding['T'] < $adj)) {
+                               $this->cell_padding['T'] = $adj;
+                       }
+                       if ((strpos($border,'R') !== false) AND ($this->cell_padding['R'] < $adj)) {
+                               $this->cell_padding['R'] = $adj;
+                       }
+                       if ((strpos($border,'B') !== false) AND ($this->cell_padding['B'] < $adj)) {
+                               $this->cell_padding['B'] = $adj;
+                       }
+                       if ((strpos($border,'L') !== false) AND ($this->cell_padding['L'] < $adj)) {
+                               $this->cell_padding['L'] = $adj;
+                       }
+               }
+               return array('T' => ($this->cell_padding['T'] - $cp['T']), 'R' => ($this->cell_padding['R'] - $cp['R']), 'B' => ($this->cell_padding['B'] - $cp['B']), 'L' => ($this->cell_padding['L'] - $cp['L']));
+       }
+
+       /**
+        * Enables or disables the automatic page breaking mode. When enabling, the second parameter is the distance from the bottom of the page that defines the triggering limit. By default, the mode is on and the margin is 2 cm.
+        * @param $auto (boolean) Boolean indicating if mode should be on or off.
+        * @param $margin (float) Distance from the bottom of the page.
+        * @public
+        * @since 1.0
+        * @see Cell(), MultiCell(), AcceptPageBreak()
+        */
+       public function SetAutoPageBreak($auto, $margin=0) {
+               $this->AutoPageBreak = $auto ? true : false;
+               $this->bMargin = $margin;
+               $this->PageBreakTrigger = $this->h - $margin;
+       }
+
+       /**
+        * Return the auto-page-break mode (true or false).
+        * @return boolean auto-page-break mode
+        * @public
+        * @since 5.9.088
+        */
+       public function getAutoPageBreak() {
+               return $this->AutoPageBreak;
+       }
+
+       /**
+        * Defines the way the document is to be displayed by the viewer.
+        * @param $zoom (mixed) The zoom to use. It can be one of the following string values or a number indicating the zooming factor to use. <ul><li>fullpage: displays the entire page on screen </li><li>fullwidth: uses maximum width of window</li><li>real: uses real size (equivalent to 100% zoom)</li><li>default: uses viewer default mode</li></ul>
+        * @param $layout (string) The page layout. Possible values are:<ul><li>SinglePage Display one page at a time</li><li>OneColumn Display the pages in one column</li><li>TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left</li><li>TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right</li><li>TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left</li><li>TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right</li></ul>
+        * @param $mode (string) A name object specifying how the document should be displayed when opened:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible</li><li>UseOC (PDF 1.5) Optional content group panel visible</li><li>UseAttachments (PDF 1.6) Attachments panel visible</li></ul>
+        * @public
+        * @since 1.2
+        */
+       public function SetDisplayMode($zoom, $layout='SinglePage', $mode='UseNone') {
+               if (($zoom == 'fullpage') OR ($zoom == 'fullwidth') OR ($zoom == 'real') OR ($zoom == 'default') OR (!is_string($zoom))) {
+                       $this->ZoomMode = $zoom;
+               } else {
+                       $this->Error('Incorrect zoom display mode: '.$zoom);
+               }
+               $this->LayoutMode = TCPDF_STATIC::getPageLayoutMode($layout);
+               $this->PageMode = TCPDF_STATIC::getPageMode($mode);
+       }
+
+       /**
+        * Activates or deactivates page compression. When activated, the internal representation of each page is compressed, which leads to a compression ratio of about 2 for the resulting document. Compression is on by default.
+        * Note: the Zlib extension is required for this feature. If not present, compression will be turned off.
+        * @param $compress (boolean) Boolean indicating if compression must be enabled.
+        * @public
+        * @since 1.4
+        */
+       public function SetCompression($compress=true) {
+               if (function_exists('gzcompress')) {
+                       $this->compress = $compress ? true : false;
+               } else {
+                       $this->compress = false;
+               }
+       }
+
+       /**
+        * Set flag to force sRGB_IEC61966-2.1 black scaled ICC color profile for the whole document.
+        * @param $mode (boolean) If true force sRGB output intent.
+        * @public
+        * @since 5.9.121 (2011-09-28)
+        */
+       public function setSRGBmode($mode=false) {
+               $this->force_srgb = $mode ? true : false;
+       }
+
+       /**
+        * Turn on/off Unicode mode for document information dictionary (meta tags).
+        * This has effect only when unicode mode is set to false.
+        * @param $unicode (boolean) if true set the meta information in Unicode
+        * @since 5.9.027 (2010-12-01)
+        * @public
+        */
+       public function SetDocInfoUnicode($unicode=true) {
+               $this->docinfounicode = $unicode ? true : false;
+       }
+
+       /**
+        * Defines the title of the document.
+        * @param $title (string) The title.
+        * @public
+        * @since 1.2
+        * @see SetAuthor(), SetCreator(), SetKeywords(), SetSubject()
+        */
+       public function SetTitle($title) {
+               $this->title = $title;
+       }
+
+       /**
+        * Defines the subject of the document.
+        * @param $subject (string) The subject.
+        * @public
+        * @since 1.2
+        * @see SetAuthor(), SetCreator(), SetKeywords(), SetTitle()
+        */
+       public function SetSubject($subject) {
+               $this->subject = $subject;
+       }
+
+       /**
+        * Defines the author of the document.
+        * @param $author (string) The name of the author.
+        * @public
+        * @since 1.2
+        * @see SetCreator(), SetKeywords(), SetSubject(), SetTitle()
+        */
+       public function SetAuthor($author) {
+               $this->author = $author;
+       }
+
+       /**
+        * Associates keywords with the document, generally in the form 'keyword1 keyword2 ...'.
+        * @param $keywords (string) The list of keywords.
+        * @public
+        * @since 1.2
+        * @see SetAuthor(), SetCreator(), SetSubject(), SetTitle()
+        */
+       public function SetKeywords($keywords) {
+               $this->keywords = $keywords;
+       }
+
+       /**
+        * Defines the creator of the document. This is typically the name of the application that generates the PDF.
+        * @param $creator (string) The name of the creator.
+        * @public
+        * @since 1.2
+        * @see SetAuthor(), SetKeywords(), SetSubject(), SetTitle()
+        */
+       public function SetCreator($creator) {
+               $this->creator = $creator;
+       }
+
+       /**
+        * Throw an exception or print an error message and die if the K_TCPDF_PARSER_THROW_EXCEPTION_ERROR constant is set to true.
+        * @param $msg (string) The error message
+        * @public
+        * @since 1.0
+        */
+       public function Error($msg) {
+               // unset all class variables
+               $this->_destroy(true);
+               if (defined('K_TCPDF_THROW_EXCEPTION_ERROR') AND !K_TCPDF_THROW_EXCEPTION_ERROR) {
+                       die('<strong>TCPDF ERROR: </strong>'.$msg);
+               } else {
+                       throw new Exception('TCPDF ERROR: '.$msg);
+               }
+       }
+
+       /**
+        * This method begins the generation of the PDF document.
+        * It is not necessary to call it explicitly because AddPage() does it automatically.
+        * Note: no page is created by this method
+        * @public
+        * @since 1.0
+        * @see AddPage(), Close()
+        */
+       public function Open() {
+               $this->state = 1;
+       }
+
+       /**
+        * Terminates the PDF document.
+        * It is not necessary to call this method explicitly because Output() does it automatically.
+        * If the document contains no page, AddPage() is called to prevent from getting an invalid document.
+        * @public
+        * @since 1.0
+        * @see Open(), Output()
+        */
+       public function Close() {
+               if ($this->state == 3) {
+                       return;
+               }
+               if ($this->page == 0) {
+                       $this->AddPage();
+               }
+               $this->endLayer();
+               if ($this->tcpdflink) {
+                       // save current graphic settings
+                       $gvars = $this->getGraphicVars();
+                       $this->setEqualColumns();
+                       $this->lastpage(true);
+                       $this->SetAutoPageBreak(false);
+                       $this->x = 0;
+                       $this->y = $this->h - (1 / $this->k);
+                       $this->lMargin = 0;
+                       $this->_outSaveGraphicsState();
+                       $font = defined('PDF_FONT_NAME_MAIN')?PDF_FONT_NAME_MAIN:'helvetica';
+                       $this->SetFont($font, '', 1);
+                       $this->setTextRenderingMode(0, false, false);
+                       $msg = "\x50\x6f\x77\x65\x72\x65\x64\x20\x62\x79\x20\x54\x43\x50\x44\x46\x20\x28\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29";
+                       $lnk = "\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67";
+                       $this->Cell(0, 0, $msg, 0, 0, 'L', 0, $lnk, 0, false, 'D', 'B');
+                       $this->_outRestoreGraphicsState();
+                       // restore graphic settings
+                       $this->setGraphicVars($gvars);
+               }
+               // close page
+               $this->endPage();
+               // close document
+               $this->_enddoc();
+               // unset all class variables (except critical ones)
+               $this->_destroy(false);
+       }
+
+       /**
+        * Move pointer at the specified document page and update page dimensions.
+        * @param $pnum (int) page number (1 ... numpages)
+        * @param $resetmargins (boolean) if true reset left, right, top margins and Y position.
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see getPage(), lastpage(), getNumPages()
+        */
+       public function setPage($pnum, $resetmargins=false) {
+               if (($pnum == $this->page) AND ($this->state == 2)) {
+                       return;
+               }
+               if (($pnum > 0) AND ($pnum <= $this->numpages)) {
+                       $this->state = 2;
+                       // save current graphic settings
+                       //$gvars = $this->getGraphicVars();
+                       $oldpage = $this->page;
+                       $this->page = $pnum;
+                       $this->wPt = $this->pagedim[$this->page]['w'];
+                       $this->hPt = $this->pagedim[$this->page]['h'];
+                       $this->w = $this->pagedim[$this->page]['wk'];
+                       $this->h = $this->pagedim[$this->page]['hk'];
+                       $this->tMargin = $this->pagedim[$this->page]['tm'];
+                       $this->bMargin = $this->pagedim[$this->page]['bm'];
+                       $this->original_lMargin = $this->pagedim[$this->page]['olm'];
+                       $this->original_rMargin = $this->pagedim[$this->page]['orm'];
+                       $this->AutoPageBreak = $this->pagedim[$this->page]['pb'];
+                       $this->CurOrientation = $this->pagedim[$this->page]['or'];
+                       $this->SetAutoPageBreak($this->AutoPageBreak, $this->bMargin);
+                       // restore graphic settings
+                       //$this->setGraphicVars($gvars);
+                       if ($resetmargins) {
+                               $this->lMargin = $this->pagedim[$this->page]['olm'];
+                               $this->rMargin = $this->pagedim[$this->page]['orm'];
+                               $this->SetY($this->tMargin);
+                       } else {
+                               // account for booklet mode
+                               if ($this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) {
+                                       $deltam = $this->pagedim[$this->page]['olm'] - $this->pagedim[$this->page]['orm'];
+                                       $this->lMargin += $deltam;
+                                       $this->rMargin -= $deltam;
+                               }
+                       }
+               } else {
+                       $this->Error('Wrong page number on setPage() function: '.$pnum);
+               }
+       }
+
+       /**
+        * Reset pointer to the last document page.
+        * @param $resetmargins (boolean) if true reset left, right, top margins and Y position.
+        * @public
+        * @since 2.0.000 (2008-01-04)
+        * @see setPage(), getPage(), getNumPages()
+        */
+       public function lastPage($resetmargins=false) {
+               $this->setPage($this->getNumPages(), $resetmargins);
+       }
+
+       /**
+        * Get current document page number.
+        * @return int page number
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see setPage(), lastpage(), getNumPages()
+        */
+       public function getPage() {
+               return $this->page;
+       }
+
+       /**
+        * Get the total number of insered pages.
+        * @return int number of pages
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see setPage(), getPage(), lastpage()
+        */
+       public function getNumPages() {
+               return $this->numpages;
+       }
+
+       /**
+        * Adds a new TOC (Table Of Content) page to the document.
+        * @param $orientation (string) page orientation.
+        * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
+        * @param $keepmargins (boolean) if true overwrites the default page margins with the current margins
+        * @public
+        * @since 5.0.001 (2010-05-06)
+        * @see AddPage(), startPage(), endPage(), endTOCPage()
+        */
+       public function addTOCPage($orientation='', $format='', $keepmargins=false) {
+               $this->AddPage($orientation, $format, $keepmargins, true);
+       }
+
+       /**
+        * Terminate the current TOC (Table Of Content) page
+        * @public
+        * @since 5.0.001 (2010-05-06)
+        * @see AddPage(), startPage(), endPage(), addTOCPage()
+        */
+       public function endTOCPage() {
+               $this->endPage(true);
+       }
+
+       /**
+        * Adds a new page to the document. If a page is already present, the Footer() method is called first to output the footer (if enabled). Then the page is added, the current position set to the top-left corner according to the left and top margins (or top-right if in RTL mode), and Header() is called to display the header (if enabled).
+        * The origin of the coordinate system is at the top-left corner (or top-right for RTL) and increasing ordinates go downwards.
+        * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or PORTRAIT (default)</li><li>L or LANDSCAPE</li></ul>
+        * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
+        * @param $keepmargins (boolean) if true overwrites the default page margins with the current margins
+        * @param $tocpage (boolean) if true set the tocpage state to true (the added page will be used to display Table Of Content).
+        * @public
+        * @since 1.0
+        * @see startPage(), endPage(), addTOCPage(), endTOCPage(), getPageSizeFromFormat(), setPageFormat()
+        */
+       public function AddPage($orientation='', $format='', $keepmargins=false, $tocpage=false) {
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       return;
+               }
+               if (!isset($this->original_lMargin) OR $keepmargins) {
+                       $this->original_lMargin = $this->lMargin;
+               }
+               if (!isset($this->original_rMargin) OR $keepmargins) {
+                       $this->original_rMargin = $this->rMargin;
+               }
+               // terminate previous page
+               $this->endPage();
+               // start new page
+               $this->startPage($orientation, $format, $tocpage);
+       }
+
+       /**
+        * Terminate the current page
+        * @param $tocpage (boolean) if true set the tocpage state to false (end the page used to display Table Of Content).
+        * @public
+        * @since 4.2.010 (2008-11-14)
+        * @see AddPage(), startPage(), addTOCPage(), endTOCPage()
+        */
+       public function endPage($tocpage=false) {
+               // check if page is already closed
+               if (($this->page == 0) OR ($this->numpages > $this->page) OR (!$this->pageopen[$this->page])) {
+                       return;
+               }
+               // print page footer
+               $this->setFooter();
+               // close page
+               $this->_endpage();
+               // mark page as closed
+               $this->pageopen[$this->page] = false;
+               if ($tocpage) {
+                       $this->tocpage = false;
+               }
+       }
+
+       /**
+        * Starts a new page to the document. The page must be closed using the endPage() function.
+        * The origin of the coordinate system is at the top-left corner and increasing ordinates go downwards.
+        * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or PORTRAIT (default)</li><li>L or LANDSCAPE</li></ul>
+        * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
+        * @param $tocpage (boolean) if true the page is designated to contain the Table-Of-Content.
+        * @since 4.2.010 (2008-11-14)
+        * @see AddPage(), endPage(), addTOCPage(), endTOCPage(), getPageSizeFromFormat(), setPageFormat()
+        * @public
+        */
+       public function startPage($orientation='', $format='', $tocpage=false) {
+               if ($tocpage) {
+                       $this->tocpage = true;
+               }
+               // move page numbers of documents to be attached
+               if ($this->tocpage) {
+                       // move reference to unexistent pages (used for page attachments)
+                       // adjust outlines
+                       $tmpoutlines = $this->outlines;
+                       foreach ($tmpoutlines as $key => $outline) {
+                               if (!$outline['f'] AND ($outline['p'] > $this->numpages)) {
+                                       $this->outlines[$key]['p'] = ($outline['p'] + 1);
+                               }
+                       }
+                       // adjust dests
+                       $tmpdests = $this->dests;
+                       foreach ($tmpdests as $key => $dest) {
+                               if (!$dest['f'] AND ($dest['p'] > $this->numpages)) {
+                                       $this->dests[$key]['p'] = ($dest['p'] + 1);
+                               }
+                       }
+                       // adjust links
+                       $tmplinks = $this->links;
+                       foreach ($tmplinks as $key => $link) {
+                               if (!$link['f'] AND ($link['p'] > $this->numpages)) {
+                                       $this->links[$key]['p'] = ($link['p'] + 1);
+                               }
+                       }
+               }
+               if ($this->numpages > $this->page) {
+                       // this page has been already added
+                       $this->setPage($this->page + 1);
+                       $this->SetY($this->tMargin);
+                       return;
+               }
+               // start a new page
+               if ($this->state == 0) {
+                       $this->Open();
+               }
+               ++$this->numpages;
+               $this->swapMargins($this->booklet);
+               // save current graphic settings
+               $gvars = $this->getGraphicVars();
+               // start new page
+               $this->_beginpage($orientation, $format);
+               // mark page as open
+               $this->pageopen[$this->page] = true;
+               // restore graphic settings
+               $this->setGraphicVars($gvars);
+               // mark this point
+               $this->setPageMark();
+               // print page header
+               $this->setHeader();
+               // restore graphic settings
+               $this->setGraphicVars($gvars);
+               // mark this point
+               $this->setPageMark();
+               // print table header (if any)
+               $this->setTableHeader();
+               // set mark for empty page check
+               $this->emptypagemrk[$this->page]= $this->pagelen[$this->page];
+       }
+
+       /**
+        * Set start-writing mark on current page stream used to put borders and fills.
+        * Borders and fills are always created after content and inserted on the position marked by this method.
+        * This function must be called after calling Image() function for a background image.
+        * Background images must be always inserted before calling Multicell() or WriteHTMLCell() or WriteHTML() functions.
+        * @public
+        * @since 4.0.016 (2008-07-30)
+        */
+       public function setPageMark() {
+               $this->intmrk[$this->page] = $this->pagelen[$this->page];
+               $this->bordermrk[$this->page] = $this->intmrk[$this->page];
+               $this->setContentMark();
+       }
+
+       /**
+        * Set start-writing mark on selected page.
+        * Borders and fills are always created after content and inserted on the position marked by this method.
+        * @param $page (int) page number (default is the current page)
+        * @protected
+        * @since 4.6.021 (2009-07-20)
+        */
+       protected function setContentMark($page=0) {
+               if ($page <= 0) {
+                       $page = $this->page;
+               }
+               if (isset($this->footerlen[$page])) {
+                       $this->cntmrk[$page] = $this->pagelen[$page] - $this->footerlen[$page];
+               } else {
+                       $this->cntmrk[$page] = $this->pagelen[$page];
+               }
+       }
+
+       /**
+        * Set header data.
+        * @param $ln (string) header image logo
+        * @param $lw (string) header image logo width in mm
+        * @param $ht (string) string to print as title on document header
+        * @param $hs (string) string to print on document header
+        * @param $tc (array) RGB array color for text.
+        * @param $lc (array) RGB array color for line.
+        * @public
+        */
+       public function setHeaderData($ln='', $lw=0, $ht='', $hs='', $tc=array(0,0,0), $lc=array(0,0,0)) {
+               $this->header_logo = $ln;
+               $this->header_logo_width = $lw;
+               $this->header_title = $ht;
+               $this->header_string = $hs;
+               $this->header_text_color = $tc;
+               $this->header_line_color = $lc;
+       }
+
+       /**
+        * Set footer data.
+        * @param $tc (array) RGB array color for text.
+        * @param $lc (array) RGB array color for line.
+        * @public
+        */
+       public function setFooterData($tc=array(0,0,0), $lc=array(0,0,0)) {
+               $this->footer_text_color = $tc;
+               $this->footer_line_color = $lc;
+       }
+
+       /**
+        * Returns header data:
+        * <ul><li>$ret['logo'] = logo image</li><li>$ret['logo_width'] = width of the image logo in user units</li><li>$ret['title'] = header title</li><li>$ret['string'] = header description string</li></ul>
+        * @return array()
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getHeaderData() {
+               $ret = array();
+               $ret['logo'] = $this->header_logo;
+               $ret['logo_width'] = $this->header_logo_width;
+               $ret['title'] = $this->header_title;
+               $ret['string'] = $this->header_string;
+               $ret['text_color'] = $this->header_text_color;
+               $ret['line_color'] = $this->header_line_color;
+               return $ret;
+       }
+
+       /**
+        * Set header margin.
+        * (minimum distance between header and top page margin)
+        * @param $hm (int) distance in user units
+        * @public
+        */
+       public function setHeaderMargin($hm=10) {
+               $this->header_margin = $hm;
+       }
+
+       /**
+        * Returns header margin in user units.
+        * @return float
+        * @since 4.0.012 (2008-07-24)
+        * @public
+        */
+       public function getHeaderMargin() {
+               return $this->header_margin;
+       }
+
+       /**
+        * Set footer margin.
+        * (minimum distance between footer and bottom page margin)
+        * @param $fm (int) distance in user units
+        * @public
+        */
+       public function setFooterMargin($fm=10) {
+               $this->footer_margin = $fm;
+       }
+
+       /**
+        * Returns footer margin in user units.
+        * @return float
+        * @since 4.0.012 (2008-07-24)
+        * @public
+        */
+       public function getFooterMargin() {
+               return $this->footer_margin;
+       }
+       /**
+        * Set a flag to print page header.
+        * @param $val (boolean) set to true to print the page header (default), false otherwise.
+        * @public
+        */
+       public function setPrintHeader($val=true) {
+               $this->print_header = $val ? true : false;
+       }
+
+       /**
+        * Set a flag to print page footer.
+        * @param $val (boolean) set to true to print the page footer (default), false otherwise.
+        * @public
+        */
+       public function setPrintFooter($val=true) {
+               $this->print_footer = $val ? true : false;
+       }
+
+       /**
+        * Return the right-bottom (or left-bottom for RTL) corner X coordinate of last inserted image
+        * @return float
+        * @public
+        */
+       public function getImageRBX() {
+               return $this->img_rb_x;
+       }
+
+       /**
+        * Return the right-bottom (or left-bottom for RTL) corner Y coordinate of last inserted image
+        * @return float
+        * @public
+        */
+       public function getImageRBY() {
+               return $this->img_rb_y;
+       }
+
+       /**
+        * Reset the xobject template used by Header() method.
+        * @public
+        */
+       public function resetHeaderTemplate() {
+               $this->header_xobjid = false;
+       }
+
+       /**
+        * Set a flag to automatically reset the xobject template used by Header() method at each page.
+        * @param $val (boolean) set to true to reset Header xobject template at each page, false otherwise.
+        * @public
+        */
+       public function setHeaderTemplateAutoreset($val=true) {
+               $this->header_xobj_autoreset = $val ? true : false;
+       }
+
+       /**
+        * This method is used to render the page header.
+        * It is automatically called by AddPage() and could be overwritten in your own inherited class.
+        * @public
+        */
+       public function Header() {
+               if ($this->header_xobjid === false) {
+                       // start a new XObject Template
+                       $this->header_xobjid = $this->startTemplate($this->w, $this->tMargin);
+                       $headerfont = $this->getHeaderFont();
+                       $headerdata = $this->getHeaderData();
+                       $this->y = $this->header_margin;
+                       if ($this->rtl) {
+                               $this->x = $this->w - $this->original_rMargin;
+                       } else {
+                               $this->x = $this->original_lMargin;
+                       }
+                       if (($headerdata['logo']) AND ($headerdata['logo'] != K_BLANK_IMAGE)) {
+                               $imgtype = TCPDF_IMAGES::getImageFileType(K_PATH_IMAGES.$headerdata['logo']);
+                               if (($imgtype == 'eps') OR ($imgtype == 'ai')) {
+                                       $this->ImageEps(K_PATH_IMAGES.$headerdata['logo'], '', '', $headerdata['logo_width']);
+                               } elseif ($imgtype == 'svg') {
+                                       $this->ImageSVG(K_PATH_IMAGES.$headerdata['logo'], '', '', $headerdata['logo_width']);
+                               } else {
+                                       $this->Image(K_PATH_IMAGES.$headerdata['logo'], '', '', $headerdata['logo_width']);
+                               }
+                               $imgy = $this->getImageRBY();
+                       } else {
+                               $imgy = $this->y;
+                       }
+                       $cell_height = $this->getCellHeight($headerfont[2] / $this->k);
+                       // set starting margin for text data cell
+                       if ($this->getRTL()) {
+                               $header_x = $this->original_rMargin + ($headerdata['logo_width'] * 1.1);
+                       } else {
+                               $header_x = $this->original_lMargin + ($headerdata['logo_width'] * 1.1);
+                       }
+                       $cw = $this->w - $this->original_lMargin - $this->original_rMargin - ($headerdata['logo_width'] * 1.1);
+                       $this->SetTextColorArray($this->header_text_color);
+                       // header title
+                       $this->SetFont($headerfont[0], 'B', $headerfont[2] + 1);
+                       $this->SetX($header_x);
+                       $this->Cell($cw, $cell_height, $headerdata['title'], 0, 1, '', 0, '', 0);
+                       // header string
+                       $this->SetFont($headerfont[0], $headerfont[1], $headerfont[2]);
+                       $this->SetX($header_x);
+                       $this->MultiCell($cw, $cell_height, $headerdata['string'], 0, '', 0, 1, '', '', true, 0, false, true, 0, 'T', false);
+                       // print an ending header line
+                       $this->SetLineStyle(array('width' => 0.85 / $this->k, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $headerdata['line_color']));
+                       $this->SetY((2.835 / $this->k) + max($imgy, $this->y));
+                       if ($this->rtl) {
+                               $this->SetX($this->original_rMargin);
+                       } else {
+                               $this->SetX($this->original_lMargin);
+                       }
+                       $this->Cell(($this->w - $this->original_lMargin - $this->original_rMargin), 0, '', 'T', 0, 'C');
+                       $this->endTemplate();
+               }
+               // print header template
+               $x = 0;
+               $dx = 0;
+               if (!$this->header_xobj_autoreset AND $this->booklet AND (($this->page % 2) == 0)) {
+                       // adjust margins for booklet mode
+                       $dx = ($this->original_lMargin - $this->original_rMargin);
+               }
+               if ($this->rtl) {
+                       $x = $this->w + $dx;
+               } else {
+                       $x = 0 + $dx;
+               }
+               $this->printTemplate($this->header_xobjid, $x, 0, 0, 0, '', '', false);
+               if ($this->header_xobj_autoreset) {
+                       // reset header xobject template at each page
+                       $this->header_xobjid = false;
+               }
+       }
+
+       /**
+        * This method is used to render the page footer.
+        * It is automatically called by AddPage() and could be overwritten in your own inherited class.
+        * @public
+        */
+       public function Footer() {
+               $cur_y = $this->y;
+               $this->SetTextColorArray($this->footer_text_color);
+               //set style for cell border
+               $line_width = (0.85 / $this->k);
+               $this->SetLineStyle(array('width' => $line_width, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $this->footer_line_color));
+               //print document barcode
+               $barcode = $this->getBarcode();
+               if (!empty($barcode)) {
+                       $this->Ln($line_width);
+                       $barcode_width = round(($this->w - $this->original_lMargin - $this->original_rMargin) / 3);
+                       $style = array(
+                               'position' => $this->rtl?'R':'L',
+                               'align' => $this->rtl?'R':'L',
+                               'stretch' => false,
+                               'fitwidth' => true,
+                               'cellfitalign' => '',
+                               'border' => false,
+                               'padding' => 0,
+                               'fgcolor' => array(0,0,0),
+                               'bgcolor' => false,
+                               'text' => false
+                       );
+                       $this->write1DBarcode($barcode, 'C128', '', $cur_y + $line_width, '', (($this->footer_margin / 3) - $line_width), 0.3, $style, '');
+               }
+               $w_page = isset($this->l['w_page']) ? $this->l['w_page'].' ' : '';
+               if (empty($this->pagegroups)) {
+                       $pagenumtxt = $w_page.$this->getAliasNumPage().' / '.$this->getAliasNbPages();
+               } else {
+                       $pagenumtxt = $w_page.$this->getPageNumGroupAlias().' / '.$this->getPageGroupAlias();
+               }
+               $this->SetY($cur_y);
+               //Print page number
+               if ($this->getRTL()) {
+                       $this->SetX($this->original_rMargin);
+                       $this->Cell(0, 0, $pagenumtxt, 'T', 0, 'L');
+               } else {
+                       $this->SetX($this->original_lMargin);
+                       $this->Cell(0, 0, $this->getAliasRightShift().$pagenumtxt, 'T', 0, 'R');
+               }
+       }
+
+       /**
+        * This method is used to render the page header.
+        * @protected
+        * @since 4.0.012 (2008-07-24)
+        */
+       protected function setHeader() {
+               if (!$this->print_header OR ($this->state != 2)) {
+                       return;
+               }
+               $this->InHeader = true;
+               $this->setGraphicVars($this->default_graphic_vars);
+               $temp_thead = $this->thead;
+               $temp_theadMargins = $this->theadMargins;
+               $lasth = $this->lasth;
+               $newline = $this->newline;
+               $this->_outSaveGraphicsState();
+               $this->rMargin = $this->original_rMargin;
+               $this->lMargin = $this->original_lMargin;
+               $this->SetCellPadding(0);
+               //set current position
+               if ($this->rtl) {
+                       $this->SetXY($this->original_rMargin, $this->header_margin);
+               } else {
+                       $this->SetXY($this->original_lMargin, $this->header_margin);
+               }
+               $this->SetFont($this->header_font[0], $this->header_font[1], $this->header_font[2]);
+               $this->Header();
+               //restore position
+               if ($this->rtl) {
+                       $this->SetXY($this->original_rMargin, $this->tMargin);
+               } else {
+                       $this->SetXY($this->original_lMargin, $this->tMargin);
+               }
+               $this->_outRestoreGraphicsState();
+               $this->lasth = $lasth;
+               $this->thead = $temp_thead;
+               $this->theadMargins = $temp_theadMargins;
+               $this->newline = $newline;
+               $this->InHeader = false;
+       }
+
+       /**
+        * This method is used to render the page footer.
+        * @protected
+        * @since 4.0.012 (2008-07-24)
+        */
+       protected function setFooter() {
+               if ($this->state != 2) {
+                       return;
+               }
+               $this->InFooter = true;
+               // save current graphic settings
+               $gvars = $this->getGraphicVars();
+               // mark this point
+               $this->footerpos[$this->page] = $this->pagelen[$this->page];
+               $this->_out("\n");
+               if ($this->print_footer) {
+                       $this->setGraphicVars($this->default_graphic_vars);
+                       $this->current_column = 0;
+                       $this->num_columns = 1;
+                       $temp_thead = $this->thead;
+                       $temp_theadMargins = $this->theadMargins;
+                       $lasth = $this->lasth;
+                       $this->_outSaveGraphicsState();
+                       $this->rMargin = $this->original_rMargin;
+                       $this->lMargin = $this->original_lMargin;
+                       $this->SetCellPadding(0);
+                       //set current position
+                       $footer_y = $this->h - $this->footer_margin;
+                       if ($this->rtl) {
+                               $this->SetXY($this->original_rMargin, $footer_y);
+                       } else {
+                               $this->SetXY($this->original_lMargin, $footer_y);
+                       }
+                       $this->SetFont($this->footer_font[0], $this->footer_font[1], $this->footer_font[2]);
+                       $this->Footer();
+                       //restore position
+                       if ($this->rtl) {
+                               $this->SetXY($this->original_rMargin, $this->tMargin);
+                       } else {
+                               $this->SetXY($this->original_lMargin, $this->tMargin);
+                       }
+                       $this->_outRestoreGraphicsState();
+                       $this->lasth = $lasth;
+                       $this->thead = $temp_thead;
+                       $this->theadMargins = $temp_theadMargins;
+               }
+               // restore graphic settings
+               $this->setGraphicVars($gvars);
+               $this->current_column = $gvars['current_column'];
+               $this->num_columns = $gvars['num_columns'];
+               // calculate footer length
+               $this->footerlen[$this->page] = $this->pagelen[$this->page] - $this->footerpos[$this->page] + 1;
+               $this->InFooter = false;
+       }
+
+       /**
+        * Check if we are on the page body (excluding page header and footer).
+        * @return true if we are not in page header nor in page footer, false otherwise.
+        * @protected
+        * @since 5.9.091 (2011-06-15)
+        */
+       protected function inPageBody() {
+               return (($this->InHeader === false) AND ($this->InFooter === false));
+       }
+
+       /**
+        * This method is used to render the table header on new page (if any).
+        * @protected
+        * @since 4.5.030 (2009-03-25)
+        */
+       protected function setTableHeader() {
+               if ($this->num_columns > 1) {
+                       // multi column mode
+                       return;
+               }
+               if (isset($this->theadMargins['top'])) {
+                       // restore the original top-margin
+                       $this->tMargin = $this->theadMargins['top'];
+                       $this->pagedim[$this->page]['tm'] = $this->tMargin;
+                       $this->y = $this->tMargin;
+               }
+               if (!TCPDF_STATIC::empty_string($this->thead) AND (!$this->inthead)) {
+                       // set margins
+                       $prev_lMargin = $this->lMargin;
+                       $prev_rMargin = $this->rMargin;
+                       $prev_cell_padding = $this->cell_padding;
+                       $this->lMargin = $this->theadMargins['lmargin'] + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$this->theadMargins['page']]['olm']);
+                       $this->rMargin = $this->theadMargins['rmargin'] + ($this->pagedim[$this->page]['orm'] - $this->pagedim[$this->theadMargins['page']]['orm']);
+                       $this->cell_padding = $this->theadMargins['cell_padding'];
+                       if ($this->rtl) {
+                               $this->x = $this->w - $this->rMargin;
+                       } else {
+                               $this->x = $this->lMargin;
+                       }
+                       // account for special "cell" mode
+                       if ($this->theadMargins['cell']) {
+                               if ($this->rtl) {
+                                       $this->x -= $this->cell_padding['R'];
+                               } else {
+                                       $this->x += $this->cell_padding['L'];
+                               }
+                       }
+                       $gvars = $this->getGraphicVars();
+                       if (!empty($this->theadMargins['gvars'])) {
+                               // set the correct graphic style
+                               $this->setGraphicVars($this->theadMargins['gvars']);
+                               $this->rMargin = $gvars['rMargin'];
+                               $this->lMargin = $gvars['lMargin'];
+                       }
+                       // print table header
+                       $this->writeHTML($this->thead, false, false, false, false, '');
+                       $this->setGraphicVars($gvars);
+                       // set new top margin to skip the table headers
+                       if (!isset($this->theadMargins['top'])) {
+                               $this->theadMargins['top'] = $this->tMargin;
+                       }
+                       // store end of header position
+                       if (!isset($this->columns[0]['th'])) {
+                               $this->columns[0]['th'] = array();
+                       }
+                       $this->columns[0]['th']['\''.$this->page.'\''] = $this->y;
+                       $this->tMargin = $this->y;
+                       $this->pagedim[$this->page]['tm'] = $this->tMargin;
+                       $this->lasth = 0;
+                       $this->lMargin = $prev_lMargin;
+                       $this->rMargin = $prev_rMargin;
+                       $this->cell_padding = $prev_cell_padding;
+               }
+       }
+
+       /**
+        * Returns the current page number.
+        * @return int page number
+        * @public
+        * @since 1.0
+        * @see getAliasNbPages()
+        */
+       public function PageNo() {
+               return $this->page;
+       }
+
+       /**
+        * Returns the array of spot colors.
+        * @return (array) Spot colors array.
+        * @public
+        * @since 6.0.038 (2013-09-30)
+        */
+       public function getAllSpotColors() {
+               return $this->spot_colors;
+       }
+
+       /**
+        * Defines a new spot color.
+        * It can be expressed in RGB components or gray scale.
+        * The method can be called before the first page is created and the value is retained from page to page.
+        * @param $name (string) Full name of the spot color.
+        * @param $c (float) Cyan color for CMYK. Value between 0 and 100.
+        * @param $m (float) Magenta color for CMYK. Value between 0 and 100.
+        * @param $y (float) Yellow color for CMYK. Value between 0 and 100.
+        * @param $k (float) Key (Black) color for CMYK. Value between 0 and 100.
+        * @public
+        * @since 4.0.024 (2008-09-12)
+        * @see SetDrawSpotColor(), SetFillSpotColor(), SetTextSpotColor()
+        */
+       public function AddSpotColor($name, $c, $m, $y, $k) {
+               if (!isset($this->spot_colors[$name])) {
+                       $i = (1 + count($this->spot_colors));
+                       $this->spot_colors[$name] = array('C' => $c, 'M' => $m, 'Y' => $y, 'K' => $k, 'name' => $name, 'i' => $i);
+               }
+       }
+
+       /**
+        * Set the spot color for the specified type ('draw', 'fill', 'text').
+        * @param $type (string) Type of object affected by this color: ('draw', 'fill', 'text').
+        * @param $name (string) Name of the spot color.
+        * @param $tint (float) Intensity of the color (from 0 to 100 ; 100 = full intensity by default).
+        * @return (string) PDF color command.
+        * @public
+        * @since 5.9.125 (2011-10-03)
+        */
+       public function setSpotColor($type, $name, $tint=100) {
+               $spotcolor = TCPDF_COLORS::getSpotColor($name, $this->spot_colors);
+               if ($spotcolor === false) {
+                       $this->Error('Undefined spot color: '.$name.', you must add it using the AddSpotColor() method.');
+               }
+               $tint = (max(0, min(100, $tint)) / 100);
+               $pdfcolor = sprintf('/CS%d ', $this->spot_colors[$name]['i']);
+               switch ($type) {
+                       case 'draw': {
+                               $pdfcolor .= sprintf('CS %F SCN', $tint);
+                               $this->DrawColor = $pdfcolor;
+                               $this->strokecolor = $spotcolor;
+                               break;
+                       }
+                       case 'fill': {
+                               $pdfcolor .= sprintf('cs %F scn', $tint);
+                               $this->FillColor = $pdfcolor;
+                               $this->bgcolor = $spotcolor;
+                               break;
+                       }
+                       case 'text': {
+                               $pdfcolor .= sprintf('cs %F scn', $tint);
+                               $this->TextColor = $pdfcolor;
+                               $this->fgcolor = $spotcolor;
+                               break;
+                       }
+               }
+               $this->ColorFlag = ($this->FillColor != $this->TextColor);
+               if ($this->state == 2) {
+                       $this->_out($pdfcolor);
+               }
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['spot_colors'][$name] = $this->spot_colors[$name];
+               }
+               return $pdfcolor;
+       }
+
+       /**
+        * Defines the spot color used for all drawing operations (lines, rectangles and cell borders).
+        * @param $name (string) Name of the spot color.
+        * @param $tint (float) Intensity of the color (from 0 to 100 ; 100 = full intensity by default).
+        * @public
+        * @since 4.0.024 (2008-09-12)
+        * @see AddSpotColor(), SetFillSpotColor(), SetTextSpotColor()
+        */
+       public function SetDrawSpotColor($name, $tint=100) {
+               $this->setSpotColor('draw', $name, $tint);
+       }
+
+       /**
+        * Defines the spot color used for all filling operations (filled rectangles and cell backgrounds).
+        * @param $name (string) Name of the spot color.
+        * @param $tint (float) Intensity of the color (from 0 to 100 ; 100 = full intensity by default).
+        * @public
+        * @since 4.0.024 (2008-09-12)
+        * @see AddSpotColor(), SetDrawSpotColor(), SetTextSpotColor()
+        */
+       public function SetFillSpotColor($name, $tint=100) {
+               $this->setSpotColor('fill', $name, $tint);
+       }
+
+       /**
+        * Defines the spot color used for text.
+        * @param $name (string) Name of the spot color.
+        * @param $tint (int) Intensity of the color (from 0 to 100 ; 100 = full intensity by default).
+        * @public
+        * @since 4.0.024 (2008-09-12)
+        * @see AddSpotColor(), SetDrawSpotColor(), SetFillSpotColor()
+        */
+       public function SetTextSpotColor($name, $tint=100) {
+               $this->setSpotColor('text', $name, $tint);
+       }
+
+       /**
+        * Set the color array for the specified type ('draw', 'fill', 'text').
+        * It can be expressed in RGB, CMYK or GRAY SCALE components.
+        * The method can be called before the first page is created and the value is retained from page to page.
+        * @param $type (string) Type of object affected by this color: ('draw', 'fill', 'text').
+        * @param $color (array) Array of colors (1=gray, 3=RGB, 4=CMYK or 5=spotcolor=CMYK+name values).
+        * @param $ret (boolean) If true do not send the PDF command.
+        * @return (string) The PDF command or empty string.
+        * @public
+        * @since 3.1.000 (2008-06-11)
+        */
+       public function setColorArray($type, $color, $ret=false) {
+               if (is_array($color)) {
+                       $color = array_values($color);
+                       // component: grey, RGB red or CMYK cyan
+                       $c = isset($color[0]) ? $color[0] : -1;
+                       // component: RGB green or CMYK magenta
+                       $m = isset($color[1]) ? $color[1] : -1;
+                       // component: RGB blue or CMYK yellow
+                       $y = isset($color[2]) ? $color[2] : -1;
+                       // component: CMYK black
+                       $k = isset($color[3]) ? $color[3] : -1;
+                       // color name
+                       $name = isset($color[4]) ? $color[4] : '';
+                       if ($c >= 0) {
+                               return $this->setColor($type, $c, $m, $y, $k, $ret, $name);
+                       }
+               }
+               return '';
+       }
+
+       /**
+        * Defines the color used for all drawing operations (lines, rectangles and cell borders).
+        * It can be expressed in RGB, CMYK or GRAY SCALE components.
+        * The method can be called before the first page is created and the value is retained from page to page.
+        * @param $color (array) Array of colors (1, 3 or 4 values).
+        * @param $ret (boolean) If true do not send the PDF command.
+        * @return string the PDF command
+        * @public
+        * @since 3.1.000 (2008-06-11)
+        * @see SetDrawColor()
+        */
+       public function SetDrawColorArray($color, $ret=false) {
+               return $this->setColorArray('draw', $color, $ret);
+       }
+
+       /**
+        * Defines the color used for all filling operations (filled rectangles and cell backgrounds).
+        * It can be expressed in RGB, CMYK or GRAY SCALE components.
+        * The method can be called before the first page is created and the value is retained from page to page.
+        * @param $color (array) Array of colors (1, 3 or 4 values).
+        * @param $ret (boolean) If true do not send the PDF command.
+        * @public
+        * @since 3.1.000 (2008-6-11)
+        * @see SetFillColor()
+        */
+       public function SetFillColorArray($color, $ret=false) {
+               return $this->setColorArray('fill', $color, $ret);
+       }
+
+       /**
+        * Defines the color used for text. It can be expressed in RGB components or gray scale.
+        * The method can be called before the first page is created and the value is retained from page to page.
+        * @param $color (array) Array of colors (1, 3 or 4 values).
+        * @param $ret (boolean) If true do not send the PDF command.
+        * @public
+        * @since 3.1.000 (2008-6-11)
+        * @see SetFillColor()
+        */
+       public function SetTextColorArray($color, $ret=false) {
+               return $this->setColorArray('text', $color, $ret);
+       }
+
+       /**
+        * Defines the color used by the specified type ('draw', 'fill', 'text').
+        * @param $type (string) Type of object affected by this color: ('draw', 'fill', 'text').
+        * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100).
+        * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100).
+        * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100).
+        * @param $col4 (float) KEY (BLACK) color for CMYK (0-100).
+        * @param $ret (boolean) If true do not send the command.
+        * @param $name (string) spot color name (if any)
+        * @return (string) The PDF command or empty string.
+        * @public
+        * @since 5.9.125 (2011-10-03)
+        */
+       public function setColor($type, $col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') {
+               // set default values
+               if (!is_numeric($col1)) {
+                       $col1 = 0;
+               }
+               if (!is_numeric($col2)) {
+                       $col2 = -1;
+               }
+               if (!is_numeric($col3)) {
+                       $col3 = -1;
+               }
+               if (!is_numeric($col4)) {
+                       $col4 = -1;
+               }
+               // set color by case
+               $suffix = '';
+               if (($col2 == -1) AND ($col3 == -1) AND ($col4 == -1)) {
+                       // Grey scale
+                       $col1 = max(0, min(255, $col1));
+                       $intcolor = array('G' => $col1);
+                       $pdfcolor = sprintf('%F ', ($col1 / 255));
+                       $suffix = 'g';
+               } elseif ($col4 == -1) {
+                       // RGB
+                       $col1 = max(0, min(255, $col1));
+                       $col2 = max(0, min(255, $col2));
+                       $col3 = max(0, min(255, $col3));
+                       $intcolor = array('R' => $col1, 'G' => $col2, 'B' => $col3);
+                       $pdfcolor = sprintf('%F %F %F ', ($col1 / 255), ($col2 / 255), ($col3 / 255));
+                       $suffix = 'rg';
+               } else {
+                       $col1 = max(0, min(100, $col1));
+                       $col2 = max(0, min(100, $col2));
+                       $col3 = max(0, min(100, $col3));
+                       $col4 = max(0, min(100, $col4));
+                       if (empty($name)) {
+                               // CMYK
+                               $intcolor = array('C' => $col1, 'M' => $col2, 'Y' => $col3, 'K' => $col4);
+                               $pdfcolor = sprintf('%F %F %F %F ', ($col1 / 100), ($col2 / 100), ($col3 / 100), ($col4 / 100));
+                               $suffix = 'k';
+                       } else {
+                               // SPOT COLOR
+                               $intcolor = array('C' => $col1, 'M' => $col2, 'Y' => $col3, 'K' => $col4, 'name' => $name);
+                               $this->AddSpotColor($name, $col1, $col2, $col3, $col4);
+                               $pdfcolor = $this->setSpotColor($type, $name, 100);
+                       }
+               }
+               switch ($type) {
+                       case 'draw': {
+                               $pdfcolor .= strtoupper($suffix);
+                               $this->DrawColor = $pdfcolor;
+                               $this->strokecolor = $intcolor;
+                               break;
+                       }
+                       case 'fill': {
+                               $pdfcolor .= $suffix;
+                               $this->FillColor = $pdfcolor;
+                               $this->bgcolor = $intcolor;
+                               break;
+                       }
+                       case 'text': {
+                               $pdfcolor .= $suffix;
+                               $this->TextColor = $pdfcolor;
+                               $this->fgcolor = $intcolor;
+                               break;
+                       }
+               }
+               $this->ColorFlag = ($this->FillColor != $this->TextColor);
+               if (($type != 'text') AND ($this->state == 2)) {
+                       if (!$ret) {
+                               $this->_out($pdfcolor);
+                       }
+                       return $pdfcolor;
+               }
+               return '';
+       }
+
+       /**
+        * Defines the color used for all drawing operations (lines, rectangles and cell borders). It can be expressed in RGB components or gray scale. The method can be called before the first page is created and the value is retained from page to page.
+        * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100).
+        * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100).
+        * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100).
+        * @param $col4 (float) KEY (BLACK) color for CMYK (0-100).
+        * @param $ret (boolean) If true do not send the command.
+        * @param $name (string) spot color name (if any)
+        * @return string the PDF command
+        * @public
+        * @since 1.3
+        * @see SetDrawColorArray(), SetFillColor(), SetTextColor(), Line(), Rect(), Cell(), MultiCell()
+        */
+       public function SetDrawColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') {
+               return $this->setColor('draw', $col1, $col2, $col3, $col4, $ret, $name);
+       }
+
+       /**
+        * Defines the color used for all filling operations (filled rectangles and cell backgrounds). It can be expressed in RGB components or gray scale. The method can be called before the first page is created and the value is retained from page to page.
+        * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100).
+        * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100).
+        * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100).
+        * @param $col4 (float) KEY (BLACK) color for CMYK (0-100).
+        * @param $ret (boolean) If true do not send the command.
+        * @param $name (string) Spot color name (if any).
+        * @return (string) The PDF command.
+        * @public
+        * @since 1.3
+        * @see SetFillColorArray(), SetDrawColor(), SetTextColor(), Rect(), Cell(), MultiCell()
+        */
+       public function SetFillColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') {
+               return $this->setColor('fill', $col1, $col2, $col3, $col4, $ret, $name);
+       }
+
+       /**
+        * Defines the color used for text. It can be expressed in RGB components or gray scale. The method can be called before the first page is created and the value is retained from page to page.
+        * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100).
+        * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100).
+        * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100).
+        * @param $col4 (float) KEY (BLACK) color for CMYK (0-100).
+        * @param $ret (boolean) If true do not send the command.
+        * @param $name (string) Spot color name (if any).
+        * @return (string) Empty string.
+        * @public
+        * @since 1.3
+        * @see SetTextColorArray(), SetDrawColor(), SetFillColor(), Text(), Cell(), MultiCell()
+        */
+       public function SetTextColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') {
+               return $this->setColor('text', $col1, $col2, $col3, $col4, $ret, $name);
+       }
+
+       /**
+        * Returns the length of a string in user unit. A font must be selected.<br>
+        * @param $s (string) The string whose length is to be computed
+        * @param $fontname (string) Family font. It can be either a name defined by AddFont() or one of the standard families. It is also possible to pass an empty string, in that case, the current family is retained.
+        * @param $fontstyle (string) Font style. Possible values are (case insensitive):<ul><li>empty string: regular</li><li>B: bold</li><li>I: italic</li><li>U: underline</li><li>D: line-through</li><li>O: overline</li></ul> or any combination. The default value is regular.
+        * @param $fontsize (float) Font size in points. The default value is the current size.
+        * @param $getarray (boolean) if true returns an array of characters widths, if false returns the total length.
+        * @return mixed int total string length or array of characted widths
+        * @author Nicola Asuni
+        * @public
+        * @since 1.2
+        */
+       public function GetStringWidth($s, $fontname='', $fontstyle='', $fontsize=0, $getarray=false) {
+               return $this->GetArrStringWidth(TCPDF_FONTS::utf8Bidi(TCPDF_FONTS::UTF8StringToArray($s, $this->isunicode, $this->CurrentFont), $s, $this->tmprtl, $this->isunicode, $this->CurrentFont), $fontname, $fontstyle, $fontsize, $getarray);
+       }
+
+       /**
+        * Returns the string length of an array of chars in user unit or an array of characters widths. A font must be selected.<br>
+        * @param $sa (string) The array of chars whose total length is to be computed
+        * @param $fontname (string) Family font. It can be either a name defined by AddFont() or one of the standard families. It is also possible to pass an empty string, in that case, the current family is retained.
+        * @param $fontstyle (string) Font style. Possible values are (case insensitive):<ul><li>empty string: regular</li><li>B: bold</li><li>I: italic</li><li>U: underline</li><li>D: line through</li><li>O: overline</li></ul> or any combination. The default value is regular.
+        * @param $fontsize (float) Font size in points. The default value is the current size.
+        * @param $getarray (boolean) if true returns an array of characters widths, if false returns the total length.
+        * @return mixed int total string length or array of characted widths
+        * @author Nicola Asuni
+        * @public
+        * @since 2.4.000 (2008-03-06)
+        */
+       public function GetArrStringWidth($sa, $fontname='', $fontstyle='', $fontsize=0, $getarray=false) {
+               // store current values
+               if (!TCPDF_STATIC::empty_string($fontname)) {
+                       $prev_FontFamily = $this->FontFamily;
+                       $prev_FontStyle = $this->FontStyle;
+                       $prev_FontSizePt = $this->FontSizePt;
+                       $this->SetFont($fontname, $fontstyle, $fontsize, '', 'default', false);
+               }
+               // convert UTF-8 array to Latin1 if required
+               if ($this->isunicode AND (!$this->isUnicodeFont())) {
+                       $sa = TCPDF_FONTS::UTF8ArrToLatin1Arr($sa);
+               }
+               $w = 0; // total width
+               $wa = array(); // array of characters widths
+               foreach ($sa as $ck => $char) {
+                       // character width
+                       $cw = $this->GetCharWidth($char, isset($sa[($ck + 1)]));
+                       $wa[] = $cw;
+                       $w += $cw;
+               }
+               // restore previous values
+               if (!TCPDF_STATIC::empty_string($fontname)) {
+                       $this->SetFont($prev_FontFamily, $prev_FontStyle, $prev_FontSizePt, '', 'default', false);
+               }
+               if ($getarray) {
+                       return $wa;
+               }
+               return $w;
+       }
+
+       /**
+        * Returns the length of the char in user unit for the current font considering current stretching and spacing (tracking).
+        * @param $char (int) The char code whose length is to be returned
+        * @param $notlast (boolean) If false ignore the font-spacing.
+        * @return float char width
+        * @author Nicola Asuni
+        * @public
+        * @since 2.4.000 (2008-03-06)
+        */
+       public function GetCharWidth($char, $notlast=true) {
+               // get raw width
+               $chw = $this->getRawCharWidth($char);
+               if (($this->font_spacing < 0) OR (($this->font_spacing > 0) AND $notlast)) {
+                       // increase/decrease font spacing
+                       $chw += $this->font_spacing;
+               }
+               if ($this->font_stretching != 100) {
+                       // fixed stretching mode
+                       $chw *= ($this->font_stretching / 100);
+               }
+               return $chw;
+       }
+
+       /**
+        * Returns the length of the char in user unit for the current font.
+        * @param $char (int) The char code whose length is to be returned
+        * @return float char width
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.000 (2010-09-28)
+        */
+       public function getRawCharWidth($char) {
+               if ($char == 173) {
+                       // SHY character will not be printed
+                       return (0);
+               }
+               if (isset($this->CurrentFont['cw'][$char])) {
+                       $w = $this->CurrentFont['cw'][$char];
+               } elseif (isset($this->CurrentFont['dw'])) {
+                       // default width
+                       $w = $this->CurrentFont['dw'];
+               } elseif (isset($this->CurrentFont['cw'][32])) {
+                       // default width
+                       $w = $this->CurrentFont['cw'][32];
+               } else {
+                       $w = 600;
+               }
+               return $this->getAbsFontMeasure($w);
+       }
+
+       /**
+        * Returns the numbero of characters in a string.
+        * @param $s (string) The input string.
+        * @return int number of characters
+        * @public
+        * @since 2.0.0001 (2008-01-07)
+        */
+       public function GetNumChars($s) {
+               if ($this->isUnicodeFont()) {
+                       return count(TCPDF_FONTS::UTF8StringToArray($s, $this->isunicode, $this->CurrentFont));
+               }
+               return strlen($s);
+       }
+
+       /**
+        * Fill the list of available fonts ($this->fontlist).
+        * @protected
+        * @since 4.0.013 (2008-07-28)
+        */
+       protected function getFontsList() {
+               if (($fontsdir = opendir(TCPDF_FONTS::_getfontpath())) !== false) {
+                       while (($file = readdir($fontsdir)) !== false) {
+                               if (substr($file, -4) == '.php') {
+                                       array_push($this->fontlist, strtolower(basename($file, '.php')));
+                               }
+                       }
+                       closedir($fontsdir);
+               }
+       }
+
+       /**
+        * Returns the unicode caracter specified by the value
+        * @param $c (int) UTF-8 value
+        * @return Returns the specified character.
+        * @since 2.3.000 (2008-03-05)
+        * @public
+        * @deprecated
+        */
+       public function unichr($c) {
+               return TCPDF_FONTS::unichr($c, $this->isunicode);
+       }
+
+       /**
+        * Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable).
+        * @param $fontfile (string) Font file (full path).
+        * @param $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional.
+        * @param $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats.
+        * @param $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font.
+        * @param $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder.
+        * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1).
+        * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4.
+        * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file.
+        * @return (string) TCPDF font name.
+        * @author Nicola Asuni
+        * @since 5.9.123 (2010-09-30)
+        * @public
+        * @deprecated
+        */
+       public function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false) {
+               return TCPDF_FONTS::addTTFfont($fontfile, $fonttype, $enc, $flags, $outpath, $platid, $encid, $addcbbox);
+       }
+
+       /**
+        * Imports a TrueType, Type1, core, or CID0 font and makes it available.
+        * It is necessary to generate a font definition file first (read /fonts/utils/README.TXT).
+        * The definition file (and the font file itself when embedding) must be present either in the current directory or in the one indicated by K_PATH_FONTS if the constant is defined. If it could not be found, the error "Could not include font definition file" is generated.
+        * @param $family (string) Font family. The name can be chosen arbitrarily. If it is a standard family name, it will override the corresponding font.
+        * @param $style (string) Font style. Possible values are (case insensitive):<ul><li>empty string: regular (default)</li><li>B: bold</li><li>I: italic</li><li>BI or IB: bold italic</li></ul>
+        * @param $fontfile (string) The font definition file. By default, the name is built from the family and style, in lower case with no spaces.
+        * @return array containing the font data, or false in case of error.
+        * @param $subset (mixed) if true embedd only a subset of the font (stores only the information related to the used characters); if false embedd full font; if 'default' uses the default value set using setFontSubsetting(). This option is valid only for TrueTypeUnicode fonts. If you want to enable users to change the document, set this parameter to false. If you subset the font, the person who receives your PDF would need to have your same font in order to make changes to your PDF. The file size of the PDF would also be smaller because you are embedding only part of a font.
+        * @public
+        * @since 1.5
+        * @see SetFont(), setFontSubsetting()
+        */
+       public function AddFont($family, $style='', $fontfile='', $subset='default') {
+               if ($subset === 'default') {
+                       $subset = $this->font_subsetting;
+               }
+               if ($this->pdfa_mode) {
+                       $subset = false;
+               }
+               if (TCPDF_STATIC::empty_string($family)) {
+                       if (!TCPDF_STATIC::empty_string($this->FontFamily)) {
+                               $family = $this->FontFamily;
+                       } else {
+                               $this->Error('Empty font family');
+                       }
+               }
+               // move embedded styles on $style
+               if (substr($family, -1) == 'I') {
+                       $style .= 'I';
+                       $family = substr($family, 0, -1);
+               }
+               if (substr($family, -1) == 'B') {
+                       $style .= 'B';
+                       $family = substr($family, 0, -1);
+               }
+               // normalize family name
+               $family = strtolower($family);
+               if ((!$this->isunicode) AND ($family == 'arial')) {
+                       $family = 'helvetica';
+               }
+               if (($family == 'symbol') OR ($family == 'zapfdingbats')) {
+                       $style = '';
+               }
+               if ($this->pdfa_mode AND (isset($this->CoreFonts[$family]))) {
+                       // all fonts must be embedded
+                       $family = 'pdfa'.$family;
+               }
+               $tempstyle = strtoupper($style);
+               $style = '';
+               // underline
+               if (strpos($tempstyle, 'U') !== false) {
+                       $this->underline = true;
+               } else {
+                       $this->underline = false;
+               }
+               // line-through (deleted)
+               if (strpos($tempstyle, 'D') !== false) {
+                       $this->linethrough = true;
+               } else {
+                       $this->linethrough = false;
+               }
+               // overline
+               if (strpos($tempstyle, 'O') !== false) {
+                       $this->overline = true;
+               } else {
+                       $this->overline = false;
+               }
+               // bold
+               if (strpos($tempstyle, 'B') !== false) {
+                       $style .= 'B';
+               }
+               // oblique
+               if (strpos($tempstyle, 'I') !== false) {
+                       $style .= 'I';
+               }
+               $bistyle = $style;
+               $fontkey = $family.$style;
+               $font_style = $style.($this->underline ? 'U' : '').($this->linethrough ? 'D' : '').($this->overline ? 'O' : '');
+               $fontdata = array('fontkey' => $fontkey, 'family' => $family, 'style' => $font_style);
+               // check if the font has been already added
+               $fb = $this->getFontBuffer($fontkey);
+               if ($fb !== false) {
+                       if ($this->inxobj) {
+                               // we are inside an XObject template
+                               $this->xobjects[$this->xobjid]['fonts'][$fontkey] = $fb['i'];
+                       }
+                       return $fontdata;
+               }
+               // get specified font directory (if any)
+               $fontdir = false;
+               if (!TCPDF_STATIC::empty_string($fontfile)) {
+                       $fontdir = dirname($fontfile);
+                       if (TCPDF_STATIC::empty_string($fontdir) OR ($fontdir == '.')) {
+                               $fontdir = '';
+                       } else {
+                               $fontdir .= '/';
+                       }
+               }
+               // true when the font style variation is missing
+               $missing_style = false;
+               // search and include font file
+               if (TCPDF_STATIC::empty_string($fontfile) OR (!@file_exists($fontfile))) {
+                       // build a standard filenames for specified font
+                       $tmp_fontfile = str_replace(' ', '', $family).strtolower($style).'.php';
+                       $fontfile = TCPDF_FONTS::getFontFullPath($tmp_fontfile, $fontdir);
+                       if (TCPDF_STATIC::empty_string($fontfile)) {
+                               $missing_style = true;
+                               // try to remove the style part
+                               $tmp_fontfile = str_replace(' ', '', $family).'.php';
+                               $fontfile = TCPDF_FONTS::getFontFullPath($tmp_fontfile, $fontdir);
+                       }
+               }
+               // include font file
+               if (!TCPDF_STATIC::empty_string($fontfile) AND (@file_exists($fontfile))) {
+                       include($fontfile);
+               } else {
+                       $this->Error('Could not include font definition file: '.$family.'');
+               }
+               // check font parameters
+               if ((!isset($type)) OR (!isset($cw))) {
+                       $this->Error('The font definition file has a bad format: '.$fontfile.'');
+               }
+               // SET default parameters
+               if (!isset($file) OR TCPDF_STATIC::empty_string($file)) {
+                       $file = '';
+               }
+               if (!isset($enc) OR TCPDF_STATIC::empty_string($enc)) {
+                       $enc = '';
+               }
+               if (!isset($cidinfo) OR TCPDF_STATIC::empty_string($cidinfo)) {
+                       $cidinfo = array('Registry'=>'Adobe', 'Ordering'=>'Identity', 'Supplement'=>0);
+                       $cidinfo['uni2cid'] = array();
+               }
+               if (!isset($ctg) OR TCPDF_STATIC::empty_string($ctg)) {
+                       $ctg = '';
+               }
+               if (!isset($desc) OR TCPDF_STATIC::empty_string($desc)) {
+                       $desc = array();
+               }
+               if (!isset($up) OR TCPDF_STATIC::empty_string($up)) {
+                       $up = -100;
+               }
+               if (!isset($ut) OR TCPDF_STATIC::empty_string($ut)) {
+                       $ut = 50;
+               }
+               if (!isset($cw) OR TCPDF_STATIC::empty_string($cw)) {
+                       $cw = array();
+               }
+               if (!isset($dw) OR TCPDF_STATIC::empty_string($dw)) {
+                       // set default width
+                       if (isset($desc['MissingWidth']) AND ($desc['MissingWidth'] > 0)) {
+                               $dw = $desc['MissingWidth'];
+                       } elseif (isset($cw[32])) {
+                               $dw = $cw[32];
+                       } else {
+                               $dw = 600;
+                       }
+               }
+               ++$this->numfonts;
+               if ($type == 'core') {
+                       $name = $this->CoreFonts[$fontkey];
+                       $subset = false;
+               } elseif (($type == 'TrueType') OR ($type == 'Type1')) {
+                       $subset = false;
+               } elseif ($type == 'TrueTypeUnicode') {
+                       $enc = 'Identity-H';
+               } elseif ($type == 'cidfont0') {
+                       if ($this->pdfa_mode) {
+                               $this->Error('All fonts must be embedded in PDF/A mode!');
+                       }
+               } else {
+                       $this->Error('Unknow font type: '.$type.'');
+               }
+               // set name if unset
+               if (!isset($name) OR empty($name)) {
+                       $name = $fontkey;
+               }
+               // create artificial font style variations if missing (only works with non-embedded fonts)
+               if (($type != 'core') AND $missing_style) {
+                       // style variations
+                       $styles = array('' => '', 'B' => ',Bold', 'I' => ',Italic', 'BI' => ',BoldItalic');
+                       $name .= $styles[$bistyle];
+                       // artificial bold
+                       if (strpos($bistyle, 'B') !== false) {
+                               if (isset($desc['StemV'])) {
+                                       // from normal to bold
+                                       $desc['StemV'] = round($desc['StemV'] * 1.75);
+                               } else {
+                                       // bold
+                                       $desc['StemV'] = 123;
+                               }
+                       }
+                       // artificial italic
+                       if (strpos($bistyle, 'I') !== false) {
+                               if (isset($desc['ItalicAngle'])) {
+                                       $desc['ItalicAngle'] -= 11;
+                               } else {
+                                       $desc['ItalicAngle'] = -11;
+                               }
+                               if (isset($desc['Flags'])) {
+                                       $desc['Flags'] |= 64; //bit 7
+                               } else {
+                                       $desc['Flags'] = 64;
+                               }
+                       }
+               }
+               // check if the array of characters bounding boxes is defined
+               if (!isset($cbbox)) {
+                       $cbbox = array();
+               }
+               // initialize subsetchars
+               $subsetchars = array_fill(0, 255, true);
+               $this->setFontBuffer($fontkey, array('fontkey' => $fontkey, 'i' => $this->numfonts, 'type' => $type, 'name' => $name, 'desc' => $desc, 'up' => $up, 'ut' => $ut, 'cw' => $cw, 'cbbox' => $cbbox, 'dw' => $dw, 'enc' => $enc, 'cidinfo' => $cidinfo, 'file' => $file, 'ctg' => $ctg, 'subset' => $subset, 'subsetchars' => $subsetchars));
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['fonts'][$fontkey] = $this->numfonts;
+               }
+               if (isset($diff) AND (!empty($diff))) {
+                       //Search existing encodings
+                       $d = 0;
+                       $nb = count($this->diffs);
+                       for ($i=1; $i <= $nb; ++$i) {
+                               if ($this->diffs[$i] == $diff) {
+                                       $d = $i;
+                                       break;
+                               }
+                       }
+                       if ($d == 0) {
+                               $d = $nb + 1;
+                               $this->diffs[$d] = $diff;
+                       }
+                       $this->setFontSubBuffer($fontkey, 'diff', $d);
+               }
+               if (!TCPDF_STATIC::empty_string($file)) {
+                       if (!isset($this->FontFiles[$file])) {
+                               if ((strcasecmp($type,'TrueType') == 0) OR (strcasecmp($type, 'TrueTypeUnicode') == 0)) {
+                                       $this->FontFiles[$file] = array('length1' => $originalsize, 'fontdir' => $fontdir, 'subset' => $subset, 'fontkeys' => array($fontkey));
+                               } elseif ($type != 'core') {
+                                       $this->FontFiles[$file] = array('length1' => $size1, 'length2' => $size2, 'fontdir' => $fontdir, 'subset' => $subset, 'fontkeys' => array($fontkey));
+                               }
+                       } else {
+                               // update fontkeys that are sharing this font file
+                               $this->FontFiles[$file]['subset'] = ($this->FontFiles[$file]['subset'] AND $subset);
+                               if (!in_array($fontkey, $this->FontFiles[$file]['fontkeys'])) {
+                                       $this->FontFiles[$file]['fontkeys'][] = $fontkey;
+                               }
+                       }
+               }
+               return $fontdata;
+       }
+
+       /**
+        * Sets the font used to print character strings.
+        * The font can be either a standard one or a font added via the AddFont() method. Standard fonts use Windows encoding cp1252 (Western Europe).
+        * The method can be called before the first page is created and the font is retained from page to page.
+        * If you just wish to change the current font size, it is simpler to call SetFontSize().
+        * Note: for the standard fonts, the font metric files must be accessible. There are three possibilities for this:<ul><li>They are in the current directory (the one where the running script lies)</li><li>They are in one of the directories defined by the include_path parameter</li><li>They are in the directory defined by the K_PATH_FONTS constant</li></ul><br />
+        * @param $family (string) Family font. It can be either a name defined by AddFont() or one of the standard Type1 families (case insensitive):<ul><li>times (Times-Roman)</li><li>timesb (Times-Bold)</li><li>timesi (Times-Italic)</li><li>timesbi (Times-BoldItalic)</li><li>helvetica (Helvetica)</li><li>helveticab (Helvetica-Bold)</li><li>helveticai (Helvetica-Oblique)</li><li>helveticabi (Helvetica-BoldOblique)</li><li>courier (Courier)</li><li>courierb (Courier-Bold)</li><li>courieri (Courier-Oblique)</li><li>courierbi (Courier-BoldOblique)</li><li>symbol (Symbol)</li><li>zapfdingbats (ZapfDingbats)</li></ul> It is also possible to pass an empty string. In that case, the current family is retained.
+        * @param $style (string) Font style. Possible values are (case insensitive):<ul><li>empty string: regular</li><li>B: bold</li><li>I: italic</li><li>U: underline</li><li>D: line through</li><li>O: overline</li></ul> or any combination. The default value is regular. Bold and italic styles do not apply to Symbol and ZapfDingbats basic fonts or other fonts when not defined.
+        * @param $size (float) Font size in points. The default value is the current size. If no size has been specified since the beginning of the document, the value taken is 12
+        * @param $fontfile (string) The font definition file. By default, the name is built from the family and style, in lower case with no spaces.
+        * @param $subset (mixed) if true embedd only a subset of the font (stores only the information related to the used characters); if false embedd full font; if 'default' uses the default value set using setFontSubsetting(). This option is valid only for TrueTypeUnicode fonts. If you want to enable users to change the document, set this parameter to false. If you subset the font, the person who receives your PDF would need to have your same font in order to make changes to your PDF. The file size of the PDF would also be smaller because you are embedding only part of a font.
+        * @param $out (boolean) if true output the font size command, otherwise only set the font properties.
+        * @author Nicola Asuni
+        * @public
+        * @since 1.0
+        * @see AddFont(), SetFontSize()
+        */
+       public function SetFont($family, $style='', $size=null, $fontfile='', $subset='default', $out=true) {
+               //Select a font; size given in points
+               if ($size === null) {
+                       $size = $this->FontSizePt;
+               }
+               if ($size < 0) {
+                       $size = 0;
+               }
+               // try to add font (if not already added)
+               $fontdata = $this->AddFont($family, $style, $fontfile, $subset);
+               $this->FontFamily = $fontdata['family'];
+               $this->FontStyle = $fontdata['style'];
+               if (isset($this->CurrentFont['fontkey']) AND isset($this->CurrentFont['subsetchars'])) {
+                       // save subset chars of the previous font
+                       $this->setFontSubBuffer($this->CurrentFont['fontkey'], 'subsetchars', $this->CurrentFont['subsetchars']);
+               }
+               $this->CurrentFont = $this->getFontBuffer($fontdata['fontkey']);
+               $this->SetFontSize($size, $out);
+       }
+
+       /**
+        * Defines the size of the current font.
+        * @param $size (float) The font size in points.
+        * @param $out (boolean) if true output the font size command, otherwise only set the font properties.
+        * @public
+        * @since 1.0
+        * @see SetFont()
+        */
+       public function SetFontSize($size, $out=true) {
+               // font size in points
+               $this->FontSizePt = $size;
+               // font size in user units
+               $this->FontSize = $size / $this->k;
+               // calculate some font metrics
+               if (isset($this->CurrentFont['desc']['FontBBox'])) {
+                       $bbox = explode(' ', substr($this->CurrentFont['desc']['FontBBox'], 1, -1));
+                       $font_height = ((intval($bbox[3]) - intval($bbox[1])) * $size / 1000);
+               } else {
+                       $font_height = $size * 1.219;
+               }
+               if (isset($this->CurrentFont['desc']['Ascent']) AND ($this->CurrentFont['desc']['Ascent'] > 0)) {
+                       $font_ascent = ($this->CurrentFont['desc']['Ascent'] * $size / 1000);
+               }
+               if (isset($this->CurrentFont['desc']['Descent']) AND ($this->CurrentFont['desc']['Descent'] <= 0)) {
+                       $font_descent = (- $this->CurrentFont['desc']['Descent'] * $size / 1000);
+               }
+               if (!isset($font_ascent) AND !isset($font_descent)) {
+                       // core font
+                       $font_ascent = 0.76 * $font_height;
+                       $font_descent = $font_height - $font_ascent;
+               } elseif (!isset($font_descent)) {
+                       $font_descent = $font_height - $font_ascent;
+               } elseif (!isset($font_ascent)) {
+                       $font_ascent = $font_height - $font_descent;
+               }
+               $this->FontAscent = ($font_ascent / $this->k);
+               $this->FontDescent = ($font_descent / $this->k);
+               if ($out AND ($this->page > 0) AND (isset($this->CurrentFont['i'])) AND ($this->state == 2)) {
+                       $this->_out(sprintf('BT /F%d %F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+               }
+       }
+
+       /**
+        * Returns the bounding box of the current font in user units.
+        * @return array
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function getFontBBox() {
+               $fbbox = array();
+               if (isset($this->CurrentFont['desc']['FontBBox'])) {
+                       $tmpbbox = explode(' ', substr($this->CurrentFont['desc']['FontBBox'], 1, -1));
+                       $fbbox = array_map(array($this,'getAbsFontMeasure'), $tmpbbox);
+               } else {
+                       // Find max width
+                       if (isset($this->CurrentFont['desc']['MaxWidth'])) {
+                               $maxw = $this->getAbsFontMeasure(intval($this->CurrentFont['desc']['MaxWidth']));
+                       } else {
+                               $maxw = 0;
+                               if (isset($this->CurrentFont['desc']['MissingWidth'])) {
+                                       $maxw = max($maxw, $this->CurrentFont['desc']['MissingWidth']);
+                               }
+                               if (isset($this->CurrentFont['desc']['AvgWidth'])) {
+                                       $maxw = max($maxw, $this->CurrentFont['desc']['AvgWidth']);
+                               }
+                               if (isset($this->CurrentFont['dw'])) {
+                                       $maxw = max($maxw, $this->CurrentFont['dw']);
+                               }
+                               foreach ($this->CurrentFont['cw'] as $char => $w) {
+                                       $maxw = max($maxw, $w);
+                               }
+                               if ($maxw == 0) {
+                                       $maxw = 600;
+                               }
+                               $maxw = $this->getAbsFontMeasure($maxw);
+                       }
+                       $fbbox = array(0, (0 - $this->FontDescent), $maxw, $this->FontAscent);
+               }
+               return $fbbox;
+       }
+
+       /**
+        * Convert a relative font measure into absolute value.
+        * @param $s (int) Font measure.
+        * @return float Absolute measure.
+        * @since 5.9.186 (2012-09-13)
+        */
+       public function getAbsFontMeasure($s) {
+               return ($s * $this->FontSize / 1000);
+       }
+
+       /**
+        * Returns the glyph bounding box of the specified character in the current font in user units.
+        * @param $char (int) Input character code.
+        * @return mixed array(xMin, yMin, xMax, yMax) or FALSE if not defined.
+        * @since 5.9.186 (2012-09-13)
+        */
+       public function getCharBBox($char) {
+               if (isset($this->CurrentFont['cbbox'][$char])) {
+                       return array_map(array($this,'getAbsFontMeasure'), $this->CurrentFont['cbbox'][intval($char)]);
+               }
+               return false;
+       }
+
+       /**
+        * Return the font descent value
+        * @param $font (string) font name
+        * @param $style (string) font style
+        * @param $size (float) The size (in points)
+        * @return int font descent
+        * @public
+        * @author Nicola Asuni
+        * @since 4.9.003 (2010-03-30)
+        */
+       public function getFontDescent($font, $style='', $size=0) {
+               $fontdata = $this->AddFont($font, $style);
+               $fontinfo = $this->getFontBuffer($fontdata['fontkey']);
+               if (isset($fontinfo['desc']['Descent']) AND ($fontinfo['desc']['Descent'] <= 0)) {
+                       $descent = (- $fontinfo['desc']['Descent'] * $size / 1000);
+               } else {
+                       $descent = (1.219 * 0.24 * $size);
+               }
+               return ($descent / $this->k);
+       }
+
+       /**
+        * Return the font ascent value.
+        * @param $font (string) font name
+        * @param $style (string) font style
+        * @param $size (float) The size (in points)
+        * @return int font ascent
+        * @public
+        * @author Nicola Asuni
+        * @since 4.9.003 (2010-03-30)
+        */
+       public function getFontAscent($font, $style='', $size=0) {
+               $fontdata = $this->AddFont($font, $style);
+               $fontinfo = $this->getFontBuffer($fontdata['fontkey']);
+               if (isset($fontinfo['desc']['Ascent']) AND ($fontinfo['desc']['Ascent'] > 0)) {
+                       $ascent = ($fontinfo['desc']['Ascent'] * $size / 1000);
+               } else {
+                       $ascent = 1.219 * 0.76 * $size;
+               }
+               return ($ascent / $this->k);
+       }
+
+       /**
+        * Return true in the character is present in the specified font.
+        * @param $char (mixed) Character to check (integer value or string)
+        * @param $font (string) Font name (family name).
+        * @param $style (string) Font style.
+        * @return (boolean) true if the char is defined, false otherwise.
+        * @public
+        * @since 5.9.153 (2012-03-28)
+        */
+       public function isCharDefined($char, $font='', $style='') {
+               if (is_string($char)) {
+                       // get character code
+                       $char = TCPDF_FONTS::UTF8StringToArray($char, $this->isunicode, $this->CurrentFont);
+                       $char = $char[0];
+               }
+               if (TCPDF_STATIC::empty_string($font)) {
+                       if (TCPDF_STATIC::empty_string($style)) {
+                               return (isset($this->CurrentFont['cw'][intval($char)]));
+                       }
+                       $font = $this->FontFamily;
+               }
+               $fontdata = $this->AddFont($font, $style);
+               $fontinfo = $this->getFontBuffer($fontdata['fontkey']);
+               return (isset($fontinfo['cw'][intval($char)]));
+       }
+
+       /**
+        * Replace missing font characters on selected font with specified substitutions.
+        * @param $text (string) Text to process.
+        * @param $font (string) Font name (family name).
+        * @param $style (string) Font style.
+        * @param $subs (array) Array of possible character substitutions. The key is the character to check (integer value) and the value is a single intege value or an array of possible substitutes.
+        * @return (string) Processed text.
+        * @public
+        * @since 5.9.153 (2012-03-28)
+        */
+       public function replaceMissingChars($text, $font='', $style='', $subs=array()) {
+               if (empty($subs)) {
+                       return $text;
+               }
+               if (TCPDF_STATIC::empty_string($font)) {
+                       $font = $this->FontFamily;
+               }
+               $fontdata = $this->AddFont($font, $style);
+               $fontinfo = $this->getFontBuffer($fontdata['fontkey']);
+               $uniarr = TCPDF_FONTS::UTF8StringToArray($text, $this->isunicode, $this->CurrentFont);
+               foreach ($uniarr as $k => $chr) {
+                       if (!isset($fontinfo['cw'][$chr])) {
+                               // this character is missing on the selected font
+                               if (isset($subs[$chr])) {
+                                       // we have available substitutions
+                                       if (is_array($subs[$chr])) {
+                                               foreach($subs[$chr] as $s) {
+                                                       if (isset($fontinfo['cw'][$s])) {
+                                                               $uniarr[$k] = $s;
+                                                               break;
+                                                       }
+                                               }
+                                       } elseif (isset($fontinfo['cw'][$subs[$chr]])) {
+                                               $uniarr[$k] = $subs[$chr];
+                                       }
+                               }
+                       }
+               }
+               return TCPDF_FONTS::UniArrSubString(TCPDF_FONTS::UTF8ArrayToUniArray($uniarr, $this->isunicode));
+       }
+
+       /**
+        * Defines the default monospaced font.
+        * @param $font (string) Font name.
+        * @public
+        * @since 4.5.025
+        */
+       public function SetDefaultMonospacedFont($font) {
+               $this->default_monospaced_font = $font;
+       }
+
+       /**
+        * Creates a new internal link and returns its identifier. An internal link is a clickable area which directs to another place within the document.<br />
+        * The identifier can then be passed to Cell(), Write(), Image() or Link(). The destination is defined with SetLink().
+        * @public
+        * @since 1.5
+        * @see Cell(), Write(), Image(), Link(), SetLink()
+        */
+       public function AddLink() {
+               // create a new internal link
+               $n = count($this->links) + 1;
+               $this->links[$n] = array('p' => 0, 'y' => 0, 'f' => false);
+               return $n;
+       }
+
+       /**
+        * Defines the page and position a link points to.
+        * @param $link (int) The link identifier returned by AddLink()
+        * @param $y (float) Ordinate of target position; -1 indicates the current position. The default value is 0 (top of page)
+        * @param $page (int) Number of target page; -1 indicates the current page (default value). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages. 
+        * @public
+        * @since 1.5
+        * @see AddLink()
+        */
+       public function SetLink($link, $y=0, $page=-1) {
+               $fixed = false;
+               if (!empty($page) AND ($page[0] == '*')) {
+                       $page = intval(substr($page, 1));
+                       // this page number will not be changed when moving/add/deleting pages
+                       $fixed = true;
+               }
+               if ($page < 0) {
+                       $page = $this->page;
+               }
+               if ($y == -1) {
+                       $y = $this->y;
+               }
+               $this->links[$link] = array('p' => $page, 'y' => $y, 'f' => $fixed);
+       }
+
+       /**
+        * Puts a link on a rectangular area of the page.
+        * Text or image links are generally put via Cell(), Write() or Image(), but this method can be useful for instance to define a clickable area inside an image.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $w (float) Width of the rectangle
+        * @param $h (float) Height of the rectangle
+        * @param $link (mixed) URL or identifier returned by AddLink()
+        * @param $spaces (int) number of spaces on the text to link
+        * @public
+        * @since 1.5
+        * @see AddLink(), Annotation(), Cell(), Write(), Image()
+        */
+       public function Link($x, $y, $w, $h, $link, $spaces=0) {
+               $this->Annotation($x, $y, $w, $h, $link, array('Subtype'=>'Link'), $spaces);
+       }
+
+       /**
+        * Puts a markup annotation on a rectangular area of the page.
+        * !!!!THE ANNOTATION SUPPORT IS NOT YET FULLY IMPLEMENTED !!!!
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $w (float) Width of the rectangle
+        * @param $h (float) Height of the rectangle
+        * @param $text (string) annotation text or alternate content
+        * @param $opt (array) array of options (see section 8.4 of PDF reference 1.7).
+        * @param $spaces (int) number of spaces on the text to link
+        * @public
+        * @since 4.0.018 (2008-08-06)
+        */
+       public function Annotation($x, $y, $w, $h, $text, $opt=array('Subtype'=>'Text'), $spaces=0) {
+               if ($this->inxobj) {
+                       // store parameters for later use on template
+                       $this->xobjects[$this->xobjid]['annotations'][] = array('x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'text' => $text, 'opt' => $opt, 'spaces' => $spaces);
+                       return;
+               }
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               // recalculate coordinates to account for graphic transformations
+               if (isset($this->transfmatrix) AND !empty($this->transfmatrix)) {
+                       for ($i=$this->transfmatrix_key; $i > 0; --$i) {
+                               $maxid = count($this->transfmatrix[$i]) - 1;
+                               for ($j=$maxid; $j >= 0; --$j) {
+                                       $ctm = $this->transfmatrix[$i][$j];
+                                       if (isset($ctm['a'])) {
+                                               $x = $x * $this->k;
+                                               $y = ($this->h - $y) * $this->k;
+                                               $w = $w * $this->k;
+                                               $h = $h * $this->k;
+                                               // top left
+                                               $xt = $x;
+                                               $yt = $y;
+                                               $x1 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e'];
+                                               $y1 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f'];
+                                               // top right
+                                               $xt = $x + $w;
+                                               $yt = $y;
+                                               $x2 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e'];
+                                               $y2 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f'];
+                                               // bottom left
+                                               $xt = $x;
+                                               $yt = $y - $h;
+                                               $x3 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e'];
+                                               $y3 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f'];
+                                               // bottom right
+                                               $xt = $x + $w;
+                                               $yt = $y - $h;
+                                               $x4 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e'];
+                                               $y4 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f'];
+                                               // new coordinates (rectangle area)
+                                               $x = min($x1, $x2, $x3, $x4);
+                                               $y = max($y1, $y2, $y3, $y4);
+                                               $w = (max($x1, $x2, $x3, $x4) - $x) / $this->k;
+                                               $h = ($y - min($y1, $y2, $y3, $y4)) / $this->k;
+                                               $x = $x / $this->k;
+                                               $y = $this->h - ($y / $this->k);
+                                       }
+                               }
+                       }
+               }
+               if ($this->page <= 0) {
+                       $page = 1;
+               } else {
+                       $page = $this->page;
+               }
+               if (!isset($this->PageAnnots[$page])) {
+                       $this->PageAnnots[$page] = array();
+               }
+               $this->PageAnnots[$page][] = array('n' => ++$this->n, 'x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'txt' => $text, 'opt' => $opt, 'numspaces' => $spaces);
+               if (!$this->pdfa_mode) {
+                       if ((($opt['Subtype'] == 'FileAttachment') OR ($opt['Subtype'] == 'Sound')) AND (!TCPDF_STATIC::empty_string($opt['FS']))
+                               AND (@file_exists($opt['FS']) OR TCPDF_STATIC::isValidURL($opt['FS']))
+                               AND (!isset($this->embeddedfiles[basename($opt['FS'])]))) {
+                               $this->embeddedfiles[basename($opt['FS'])] = array('f' => ++$this->n, 'n' => ++$this->n, 'file' => $opt['FS']);
+                       }
+               }
+               // Add widgets annotation's icons
+               if (isset($opt['mk']['i']) AND @file_exists($opt['mk']['i'])) {
+                       $this->Image($opt['mk']['i'], '', '', 10, 10, '', '', '', false, 300, '', false, false, 0, false, true);
+               }
+               if (isset($opt['mk']['ri']) AND @file_exists($opt['mk']['ri'])) {
+                       $this->Image($opt['mk']['ri'], '', '', 0, 0, '', '', '', false, 300, '', false, false, 0, false, true);
+               }
+               if (isset($opt['mk']['ix']) AND @file_exists($opt['mk']['ix'])) {
+                       $this->Image($opt['mk']['ix'], '', '', 0, 0, '', '', '', false, 300, '', false, false, 0, false, true);
+               }
+       }
+
+       /**
+        * Embedd the attached files.
+        * @since 4.4.000 (2008-12-07)
+        * @protected
+        * @see Annotation()
+        */
+       protected function _putEmbeddedFiles() {
+               if ($this->pdfa_mode) {
+                       // embedded files are not allowed in PDF/A mode
+                       return;
+               }
+               reset($this->embeddedfiles);
+               foreach ($this->embeddedfiles as $filename => $filedata) {
+                       $data = TCPDF_STATIC::fileGetContents($filedata['file']);
+                       if ($data !== FALSE) {
+                               $rawsize = strlen($data);
+                               if ($rawsize > 0) {
+                                       // update name tree
+                                       $this->efnames[$filename] = $filedata['f'].' 0 R';
+                                       // embedded file specification object
+                                       $out = $this->_getobj($filedata['f'])."\n";
+                                       $out .= '<</Type /Filespec /F '.$this->_datastring($filename, $filedata['f']).' /EF <</F '.$filedata['n'].' 0 R>> >>';
+                                       $out .= "\n".'endobj';
+                                       $this->_out($out);
+                                       // embedded file object
+                                       $filter = '';
+                                       if ($this->compress) {
+                                               $data = gzcompress($data);
+                                               $filter = ' /Filter /FlateDecode';
+                                       }
+                                       $stream = $this->_getrawstream($data, $filedata['n']);
+                                       $out = $this->_getobj($filedata['n'])."\n";
+                                       $out .= '<< /Type /EmbeddedFile'.$filter.' /Length '.strlen($stream).' /Params <</Size '.$rawsize.'>> >>';
+                                       $out .= ' stream'."\n".$stream."\n".'endstream';
+                                       $out .= "\n".'endobj';
+                                       $this->_out($out);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Prints a text cell at the specified position.
+        * This method allows to place a string precisely on the page.
+        * @param $x (float) Abscissa of the cell origin
+        * @param $y (float) Ordinate of the cell origin
+        * @param $txt (string) String to print
+        * @param $fstroke (int) outline size in user units (false = disable)
+        * @param $fclip (boolean) if true activate clipping mode (you must call StartTransform() before this function and StopTransform() to stop the clipping tranformation).
+        * @param $ffill (boolean) if true fills the text
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $ln (int) Indicates where the current position should go after the call. Possible values are:<ul><li>0: to the right (or left for RTL languages)</li><li>1: to the beginning of the next line</li><li>2: below</li></ul>Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0.
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L or empty string: left align (default value)</li><li>C: center</li><li>R: right align</li><li>J: justify</li></ul>
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $stretch (int) font stretch mode: <ul><li>0 = disabled</li><li>1 = horizontal scaling only if text is larger than cell width</li><li>2 = forced horizontal scaling to fit cell width</li><li>3 = character spacing only if text is larger than cell width</li><li>4 = forced character spacing to fit cell width</li></ul> General font stretching and scaling values will be preserved when possible.
+        * @param $ignore_min_height (boolean) if true ignore automatic minimum height value.
+        * @param $calign (string) cell vertical alignment relative to the specified Y value. Possible values are:<ul><li>T : cell top</li><li>A : font top</li><li>L : font baseline</li><li>D : font bottom</li><li>B : cell bottom</li></ul>
+        * @param $valign (string) text vertical alignment inside the cell. Possible values are:<ul><li>T : top</li><li>C : center</li><li>B : bottom</li></ul>
+        * @param $rtloff (boolean) if true uses the page top-left corner as origin of axis for $x and $y initial position.
+        * @public
+        * @since 1.0
+        * @see Cell(), Write(), MultiCell(), WriteHTML(), WriteHTMLCell()
+        */
+       public function Text($x, $y, $txt, $fstroke=false, $fclip=false, $ffill=true, $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M', $rtloff=false) {
+               $textrendermode = $this->textrendermode;
+               $textstrokewidth = $this->textstrokewidth;
+               $this->setTextRenderingMode($fstroke, $ffill, $fclip);
+               $this->SetXY($x, $y, $rtloff);
+               $this->Cell(0, 0, $txt, $border, $ln, $align, $fill, $link, $stretch, $ignore_min_height, $calign, $valign);
+               // restore previous rendering mode
+               $this->textrendermode = $textrendermode;
+               $this->textstrokewidth = $textstrokewidth;
+       }
+
+       /**
+        * Whenever a page break condition is met, the method is called, and the break is issued or not depending on the returned value.
+        * The default implementation returns a value according to the mode selected by SetAutoPageBreak().<br />
+        * This method is called automatically and should not be called directly by the application.
+        * @return boolean
+        * @public
+        * @since 1.4
+        * @see SetAutoPageBreak()
+        */
+       public function AcceptPageBreak() {
+               if ($this->num_columns > 1) {
+                       // multi column mode
+                       if ($this->current_column < ($this->num_columns - 1)) {
+                               // go to next column
+                               $this->selectColumn($this->current_column + 1);
+                       } elseif ($this->AutoPageBreak) {
+                               // add a new page
+                               $this->AddPage();
+                               // set first column
+                               $this->selectColumn(0);
+                       }
+                       // avoid page breaking from checkPageBreak()
+                       return false;
+               }
+               return $this->AutoPageBreak;
+       }
+
+       /**
+        * Add page if needed.
+        * @param $h (float) Cell height. Default value: 0.
+        * @param $y (mixed) starting y position, leave empty for current position.
+        * @param $addpage (boolean) if true add a page, otherwise only return the true/false state
+        * @return boolean true in case of page break, false otherwise.
+        * @since 3.2.000 (2008-07-01)
+        * @protected
+        */
+       protected function checkPageBreak($h=0, $y='', $addpage=true) {
+               if (TCPDF_STATIC::empty_string($y)) {
+                       $y = $this->y;
+               }
+               $current_page = $this->page;
+               if ((($y + $h) > $this->PageBreakTrigger) AND ($this->inPageBody()) AND ($this->AcceptPageBreak())) {
+                       if ($addpage) {
+                               //Automatic page break
+                               $x = $this->x;
+                               $this->AddPage($this->CurOrientation);
+                               $this->y = $this->tMargin;
+                               $oldpage = $this->page - 1;
+                               if ($this->rtl) {
+                                       if ($this->pagedim[$this->page]['orm'] != $this->pagedim[$oldpage]['orm']) {
+                                               $this->x = $x - ($this->pagedim[$this->page]['orm'] - $this->pagedim[$oldpage]['orm']);
+                                       } else {
+                                               $this->x = $x;
+                                       }
+                               } else {
+                                       if ($this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) {
+                                               $this->x = $x + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$oldpage]['olm']);
+                                       } else {
+                                               $this->x = $x;
+                                       }
+                               }
+                       }
+                       return true;
+               }
+               if ($current_page != $this->page) {
+                       // account for columns mode
+                       return true;
+               }
+               return false;
+       }
+
+       /**
+        * Prints a cell (rectangular area) with optional borders, background color and character string. The upper-left corner of the cell corresponds to the current position. The text can be aligned or centered. After the call, the current position moves to the right or to the next line. It is possible to put a link on the text.<br />
+        * If automatic page breaking is enabled and the cell goes beyond the limit, a page break is done before outputting.
+        * @param $w (float) Cell width. If 0, the cell extends up to the right margin.
+        * @param $h (float) Cell height. Default value: 0.
+        * @param $txt (string) String to print. Default value: empty string.
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $ln (int) Indicates where the current position should go after the call. Possible values are:<ul><li>0: to the right (or left for RTL languages)</li><li>1: to the beginning of the next line</li><li>2: below</li></ul> Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0.
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L or empty string: left align (default value)</li><li>C: center</li><li>R: right align</li><li>J: justify</li></ul>
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $stretch (int) font stretch mode: <ul><li>0 = disabled</li><li>1 = horizontal scaling only if text is larger than cell width</li><li>2 = forced horizontal scaling to fit cell width</li><li>3 = character spacing only if text is larger than cell width</li><li>4 = forced character spacing to fit cell width</li></ul> General font stretching and scaling values will be preserved when possible.
+        * @param $ignore_min_height (boolean) if true ignore automatic minimum height value.
+        * @param $calign (string) cell vertical alignment relative to the specified Y value. Possible values are:<ul><li>T : cell top</li><li>C : center</li><li>B : cell bottom</li><li>A : font top</li><li>L : font baseline</li><li>D : font bottom</li></ul>
+        * @param $valign (string) text vertical alignment inside the cell. Possible values are:<ul><li>T : top</li><li>C : center</li><li>B : bottom</li></ul>
+        * @public
+        * @since 1.0
+        * @see SetFont(), SetDrawColor(), SetFillColor(), SetTextColor(), SetLineWidth(), AddLink(), Ln(), MultiCell(), Write(), SetAutoPageBreak()
+        */
+       public function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M') {
+               $prev_cell_margin = $this->cell_margin;
+               $prev_cell_padding = $this->cell_padding;
+               $this->adjustCellPadding($border);
+               if (!$ignore_min_height) {
+                       $min_cell_height = $this->getCellHeight($this->FontSize);
+                       if ($h < $min_cell_height) {
+                               $h = $min_cell_height;
+                       }
+               }
+               $this->checkPageBreak($h + $this->cell_margin['T'] + $this->cell_margin['B']);
+               // apply text shadow if enabled
+               if ($this->txtshadow['enabled']) {
+                       // save data
+                       $x = $this->x;
+                       $y = $this->y;
+                       $bc = $this->bgcolor;
+                       $fc = $this->fgcolor;
+                       $sc = $this->strokecolor;
+                       $alpha = $this->alpha;
+                       // print shadow
+                       $this->x += $this->txtshadow['depth_w'];
+                       $this->y += $this->txtshadow['depth_h'];
+                       $this->SetFillColorArray($this->txtshadow['color']);
+                       $this->SetTextColorArray($this->txtshadow['color']);
+                       $this->SetDrawColorArray($this->txtshadow['color']);
+                       if ($this->txtshadow['opacity'] != $alpha['CA']) {
+                               $this->setAlpha($this->txtshadow['opacity'], $this->txtshadow['blend_mode']);
+                       }
+                       if ($this->state == 2) {
+                               $this->_out($this->getCellCode($w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, true, $calign, $valign));
+                       }
+                       //restore data
+                       $this->x = $x;
+                       $this->y = $y;
+                       $this->SetFillColorArray($bc);
+                       $this->SetTextColorArray($fc);
+                       $this->SetDrawColorArray($sc);
+                       if ($this->txtshadow['opacity'] != $alpha['CA']) {
+                               $this->setAlpha($alpha['CA'], $alpha['BM'], $alpha['ca'], $alpha['AIS']);
+                       }
+               }
+               if ($this->state == 2) {
+                       $this->_out($this->getCellCode($w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, true, $calign, $valign));
+               }
+               $this->cell_padding = $prev_cell_padding;
+               $this->cell_margin = $prev_cell_margin;
+       }
+
+       /**
+        * Returns the PDF string code to print a cell (rectangular area) with optional borders, background color and character string. The upper-left corner of the cell corresponds to the current position. The text can be aligned or centered. After the call, the current position moves to the right or to the next line. It is possible to put a link on the text.<br />
+        * If automatic page breaking is enabled and the cell goes beyond the limit, a page break is done before outputting.
+        * @param $w (float) Cell width. If 0, the cell extends up to the right margin.
+        * @param $h (float) Cell height. Default value: 0.
+        * @param $txt (string) String to print. Default value: empty string.
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $ln (int) Indicates where the current position should go after the call. Possible values are:<ul><li>0: to the right (or left for RTL languages)</li><li>1: to the beginning of the next line</li><li>2: below</li></ul>Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0.
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L or empty string: left align (default value)</li><li>C: center</li><li>R: right align</li><li>J: justify</li></ul>
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $stretch (int) font stretch mode: <ul><li>0 = disabled</li><li>1 = horizontal scaling only if text is larger than cell width</li><li>2 = forced horizontal scaling to fit cell width</li><li>3 = character spacing only if text is larger than cell width</li><li>4 = forced character spacing to fit cell width</li></ul> General font stretching and scaling values will be preserved when possible.
+        * @param $ignore_min_height (boolean) if true ignore automatic minimum height value.
+        * @param $calign (string) cell vertical alignment relative to the specified Y value. Possible values are:<ul><li>T : cell top</li><li>C : center</li><li>B : cell bottom</li><li>A : font top</li><li>L : font baseline</li><li>D : font bottom</li></ul>
+        * @param $valign (string) text vertical alignment inside the cell. Possible values are:<ul><li>T : top</li><li>M : middle</li><li>B : bottom</li></ul>
+        * @return string containing cell code
+        * @protected
+        * @since 1.0
+        * @see Cell()
+        */
+       protected function getCellCode($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M') {
+               // replace 'NO-BREAK SPACE' (U+00A0) character with a simple space
+               $txt = str_replace(TCPDF_FONTS::unichr(160, $this->isunicode), ' ', $txt);
+               $prev_cell_margin = $this->cell_margin;
+               $prev_cell_padding = $this->cell_padding;
+               $txt = TCPDF_STATIC::removeSHY($txt, $this->isunicode);
+               $rs = ''; //string to be returned
+               $this->adjustCellPadding($border);
+               if (!$ignore_min_height) {
+                       $min_cell_height = $this->getCellHeight($this->FontSize);
+                       if ($h < $min_cell_height) {
+                               $h = $min_cell_height;
+                       }
+               }
+               $k = $this->k;
+               // check page for no-write regions and adapt page margins if necessary
+               list($this->x, $this->y) = $this->checkPageRegions($h, $this->x, $this->y);
+               if ($this->rtl) {
+                       $x = $this->x - $this->cell_margin['R'];
+               } else {
+                       $x = $this->x + $this->cell_margin['L'];
+               }
+               $y = $this->y + $this->cell_margin['T'];
+               $prev_font_stretching = $this->font_stretching;
+               $prev_font_spacing = $this->font_spacing;
+               // cell vertical alignment
+               switch ($calign) {
+                       case 'A': {
+                               // font top
+                               switch ($valign) {
+                                       case 'T': {
+                                               // top
+                                               $y -= $this->cell_padding['T'];
+                                               break;
+                                       }
+                                       case 'B': {
+                                               // bottom
+                                               $y -= ($h - $this->cell_padding['B'] - $this->FontAscent - $this->FontDescent);
+                                               break;
+                                       }
+                                       default:
+                                       case 'C':
+                                       case 'M': {
+                                               // center
+                                               $y -= (($h - $this->FontAscent - $this->FontDescent) / 2);
+                                               break;
+                                       }
+                               }
+                               break;
+                       }
+                       case 'L': {
+                               // font baseline
+                               switch ($valign) {
+                                       case 'T': {
+                                               // top
+                                               $y -= ($this->cell_padding['T'] + $this->FontAscent);
+                                               break;
+                                       }
+                                       case 'B': {
+                                               // bottom
+                                               $y -= ($h - $this->cell_padding['B'] - $this->FontDescent);
+                                               break;
+                                       }
+                                       default:
+                                       case 'C':
+                                       case 'M': {
+                                               // center
+                                               $y -= (($h + $this->FontAscent - $this->FontDescent) / 2);
+                                               break;
+                                       }
+                               }
+                               break;
+                       }
+                       case 'D': {
+                               // font bottom
+                               switch ($valign) {
+                                       case 'T': {
+                                               // top
+                                               $y -= ($this->cell_padding['T'] + $this->FontAscent + $this->FontDescent);
+                                               break;
+                                       }
+                                       case 'B': {
+                                               // bottom
+                                               $y -= ($h - $this->cell_padding['B']);
+                                               break;
+                                       }
+                                       default:
+                                       case 'C':
+                                       case 'M': {
+                                               // center
+                                               $y -= (($h + $this->FontAscent + $this->FontDescent) / 2);
+                                               break;
+                                       }
+                               }
+                               break;
+                       }
+                       case 'B': {
+                               // cell bottom
+                               $y -= $h;
+                               break;
+                       }
+                       case 'C':
+                       case 'M': {
+                               // cell center
+                               $y -= ($h / 2);
+                               break;
+                       }
+                       default:
+                       case 'T': {
+                               // cell top
+                               break;
+                       }
+               }
+               // text vertical alignment
+               switch ($valign) {
+                       case 'T': {
+                               // top
+                               $yt = $y + $this->cell_padding['T'];
+                               break;
+                       }
+                       case 'B': {
+                               // bottom
+                               $yt = $y + $h - $this->cell_padding['B'] - $this->FontAscent - $this->FontDescent;
+                               break;
+                       }
+                       default:
+                       case 'C':
+                       case 'M': {
+                               // center
+                               $yt = $y + (($h - $this->FontAscent - $this->FontDescent) / 2);
+                               break;
+                       }
+               }
+               $basefonty = $yt + $this->FontAscent;
+               if (TCPDF_STATIC::empty_string($w) OR ($w <= 0)) {
+                       if ($this->rtl) {
+                               $w = $x - $this->lMargin;
+                       } else {
+                               $w = $this->w - $this->rMargin - $x;
+                       }
+               }
+               $s = '';
+               // fill and borders
+               if (is_string($border) AND (strlen($border) == 4)) {
+                       // full border
+                       $border = 1;
+               }
+               if ($fill OR ($border == 1)) {
+                       if ($fill) {
+                               $op = ($border == 1) ? 'B' : 'f';
+                       } else {
+                               $op = 'S';
+                       }
+                       if ($this->rtl) {
+                               $xk = (($x - $w) * $k);
+                       } else {
+                               $xk = ($x * $k);
+                       }
+                       $s .= sprintf('%F %F %F %F re %s ', $xk, (($this->h - $y) * $k), ($w * $k), (-$h * $k), $op);
+               }
+               // draw borders
+               $s .= $this->getCellBorder($x, $y, $w, $h, $border);
+               if ($txt != '') {
+                       $txt2 = $txt;
+                       if ($this->isunicode) {
+                               if (($this->CurrentFont['type'] == 'core') OR ($this->CurrentFont['type'] == 'TrueType') OR ($this->CurrentFont['type'] == 'Type1')) {
+                                       $txt2 = TCPDF_FONTS::UTF8ToLatin1($txt2, $this->isunicode, $this->CurrentFont);
+                               } else {
+                                       $unicode = TCPDF_FONTS::UTF8StringToArray($txt, $this->isunicode, $this->CurrentFont); // array of UTF-8 unicode values
+                                       $unicode = TCPDF_FONTS::utf8Bidi($unicode, '', $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                                       // replace thai chars (if any)
+                                       if (defined('K_THAI_TOPCHARS') AND (K_THAI_TOPCHARS == true)) {
+                                               // number of chars
+                                               $numchars = count($unicode);
+                                               // po pla, for far, for fan
+                                               $longtail = array(0x0e1b, 0x0e1d, 0x0e1f);
+                                               // do chada, to patak
+                                               $lowtail = array(0x0e0e, 0x0e0f);
+                                               // mai hun arkad, sara i, sara ii, sara ue, sara uee
+                                               $upvowel = array(0x0e31, 0x0e34, 0x0e35, 0x0e36, 0x0e37);
+                                               // mai ek, mai tho, mai tri, mai chattawa, karan
+                                               $tonemark = array(0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c);
+                                               // sara u, sara uu, pinthu
+                                               $lowvowel = array(0x0e38, 0x0e39, 0x0e3a);
+                                               $output = array();
+                                               for ($i = 0; $i < $numchars; $i++) {
+                                                       if (($unicode[$i] >= 0x0e00) && ($unicode[$i] <= 0x0e5b)) {
+                                                               $ch0 = $unicode[$i];
+                                                               $ch1 = ($i > 0) ? $unicode[($i - 1)] : 0;
+                                                               $ch2 = ($i > 1) ? $unicode[($i - 2)] : 0;
+                                                               $chn = ($i < ($numchars - 1)) ? $unicode[($i + 1)] : 0;
+                                                               if (in_array($ch0, $tonemark)) {
+                                                                       if ($chn == 0x0e33) {
+                                                                               // sara um
+                                                                               if (in_array($ch1, $longtail)) {
+                                                                                       // tonemark at upper left
+                                                                                       $output[] = $this->replaceChar($ch0, (0xf713 + $ch0 - 0x0e48));
+                                                                               } else {
+                                                                                       // tonemark at upper right (normal position)
+                                                                                       $output[] = $ch0;
+                                                                               }
+                                                                       } elseif (in_array($ch1, $longtail) OR (in_array($ch2, $longtail) AND in_array($ch1, $lowvowel))) {
+                                                                               // tonemark at lower left
+                                                                               $output[] = $this->replaceChar($ch0, (0xf705 + $ch0 - 0x0e48));
+                                                                       } elseif (in_array($ch1, $upvowel)) {
+                                                                               if (in_array($ch2, $longtail)) {
+                                                                                       // tonemark at upper left
+                                                                                       $output[] = $this->replaceChar($ch0, (0xf713 + $ch0 - 0x0e48));
+                                                                               } else {
+                                                                                       // tonemark at upper right (normal position)
+                                                                                       $output[] = $ch0;
+                                                                               }
+                                                                       } else {
+                                                                               // tonemark at lower right
+                                                                               $output[] = $this->replaceChar($ch0, (0xf70a + $ch0 - 0x0e48));
+                                                                       }
+                                                               } elseif (($ch0 == 0x0e33) AND (in_array($ch1, $longtail) OR (in_array($ch2, $longtail) AND in_array($ch1, $tonemark)))) {
+                                                                       // add lower left nikhahit and sara aa
+                                                                       if ($this->isCharDefined(0xf711) AND $this->isCharDefined(0x0e32)) {
+                                                                               $output[] = 0xf711;
+                                                                               $this->CurrentFont['subsetchars'][0xf711] = true;
+                                                                               $output[] = 0x0e32;
+                                                                               $this->CurrentFont['subsetchars'][0x0e32] = true;
+                                                                       } else {
+                                                                               $output[] = $ch0;
+                                                                       }
+                                                               } elseif (in_array($ch1, $longtail)) {
+                                                                       if ($ch0 == 0x0e31) {
+                                                                               // lower left mai hun arkad
+                                                                               $output[] = $this->replaceChar($ch0, 0xf710);
+                                                                       } elseif (in_array($ch0, $upvowel)) {
+                                                                               // lower left
+                                                                               $output[] = $this->replaceChar($ch0, (0xf701 + $ch0 - 0x0e34));
+                                                                       } elseif ($ch0 == 0x0e47) {
+                                                                               // lower left mai tai koo
+                                                                               $output[] = $this->replaceChar($ch0, 0xf712);
+                                                                       } else {
+                                                                               // normal character
+                                                                               $output[] = $ch0;
+                                                                       }
+                                                               } elseif (in_array($ch1, $lowtail) AND in_array($ch0, $lowvowel)) {
+                                                                       // lower vowel
+                                                                       $output[] = $this->replaceChar($ch0, (0xf718 + $ch0 - 0x0e38));
+                                                               } elseif (($ch0 == 0x0e0d) AND in_array($chn, $lowvowel)) {
+                                                                       // yo ying without lower part
+                                                                       $output[] = $this->replaceChar($ch0, 0xf70f);
+                                                               } elseif (($ch0 == 0x0e10) AND in_array($chn, $lowvowel)) {
+                                                                       // tho santan without lower part
+                                                                       $output[] = $this->replaceChar($ch0, 0xf700);
+                                                               } else {
+                                                                       $output[] = $ch0;
+                                                               }
+                                                       } else {
+                                                               // non-thai character
+                                                               $output[] = $unicode[$i];
+                                                       }
+                                               }
+                                               $unicode = $output;
+                                               // update font subsetchars
+                                               $this->setFontSubBuffer($this->CurrentFont['fontkey'], 'subsetchars', $this->CurrentFont['subsetchars']);
+                                       } // end of K_THAI_TOPCHARS
+                                       $txt2 = TCPDF_FONTS::arrUTF8ToUTF16BE($unicode, false);
+                               }
+                       }
+                       $txt2 = TCPDF_STATIC::_escape($txt2);
+                       // get current text width (considering general font stretching and spacing)
+                       $txwidth = $this->GetStringWidth($txt);
+                       $width = $txwidth;
+                       // check for stretch mode
+                       if ($stretch > 0) {
+                               // calculate ratio between cell width and text width
+                               if ($width <= 0) {
+                                       $ratio = 1;
+                               } else {
+                                       $ratio = (($w - $this->cell_padding['L'] - $this->cell_padding['R']) / $width);
+                               }
+                               // check if stretching is required
+                               if (($ratio < 1) OR (($ratio > 1) AND (($stretch % 2) == 0))) {
+                                       // the text will be stretched to fit cell width
+                                       if ($stretch > 2) {
+                                               // set new character spacing
+                                               $this->font_spacing += ($w - $this->cell_padding['L'] - $this->cell_padding['R'] - $width) / (max(($this->GetNumChars($txt) - 1), 1) * ($this->font_stretching / 100));
+                                       } else {
+                                               // set new horizontal stretching
+                                               $this->font_stretching *= $ratio;
+                                       }
+                                       // recalculate text width (the text fills the entire cell)
+                                       $width = $w - $this->cell_padding['L'] - $this->cell_padding['R'];
+                                       // reset alignment
+                                       $align = '';
+                               }
+                       }
+                       if ($this->font_stretching != 100) {
+                               // apply font stretching
+                               $rs .= sprintf('BT %F Tz ET ', $this->font_stretching);
+                       }
+                       if ($this->font_spacing != 0) {
+                               // increase/decrease font spacing
+                               $rs .= sprintf('BT %F Tc ET ', ($this->font_spacing * $this->k));
+                       }
+                       if ($this->ColorFlag AND ($this->textrendermode < 4)) {
+                               $s .= 'q '.$this->TextColor.' ';
+                       }
+                       // rendering mode
+                       $s .= sprintf('BT %d Tr %F w ET ', $this->textrendermode, ($this->textstrokewidth * $this->k));
+                       // count number of spaces
+                       $ns = substr_count($txt, chr(32));
+                       // Justification
+                       $spacewidth = 0;
+                       if (($align == 'J') AND ($ns > 0)) {
+                               if ($this->isUnicodeFont()) {
+                                       // get string width without spaces
+                                       $width = $this->GetStringWidth(str_replace(' ', '', $txt));
+                                       // calculate average space width
+                                       $spacewidth = -1000 * ($w - $width - $this->cell_padding['L'] - $this->cell_padding['R']) / ($ns?$ns:1) / ($this->FontSize?$this->FontSize:1);
+                                       if ($this->font_stretching != 100) {
+                                               // word spacing is affected by stretching
+                                               $spacewidth /= ($this->font_stretching / 100);
+                                       }
+                                       // set word position to be used with TJ operator
+                                       $txt2 = str_replace(chr(0).chr(32), ') '.sprintf('%F', $spacewidth).' (', $txt2);
+                                       $unicode_justification = true;
+                               } else {
+                                       // get string width
+                                       $width = $txwidth;
+                                       // new space width
+                                       $spacewidth = (($w - $width - $this->cell_padding['L'] - $this->cell_padding['R']) / ($ns?$ns:1)) * $this->k;
+                                       if ($this->font_stretching != 100) {
+                                               // word spacing (Tw) is affected by stretching
+                                               $spacewidth /= ($this->font_stretching / 100);
+                                       }
+                                       // set word spacing
+                                       $rs .= sprintf('BT %F Tw ET ', $spacewidth);
+                               }
+                               $width = $w - $this->cell_padding['L'] - $this->cell_padding['R'];
+                       }
+                       // replace carriage return characters
+                       $txt2 = str_replace("\r", ' ', $txt2);
+                       switch ($align) {
+                               case 'C': {
+                                       $dx = ($w - $width) / 2;
+                                       break;
+                               }
+                               case 'R': {
+                                       if ($this->rtl) {
+                                               $dx = $this->cell_padding['R'];
+                                       } else {
+                                               $dx = $w - $width - $this->cell_padding['R'];
+                                       }
+                                       break;
+                               }
+                               case 'L': {
+                                       if ($this->rtl) {
+                                               $dx = $w - $width - $this->cell_padding['L'];
+                                       } else {
+                                               $dx = $this->cell_padding['L'];
+                                       }
+                                       break;
+                               }
+                               case 'J':
+                               default: {
+                                       if ($this->rtl) {
+                                               $dx = $this->cell_padding['R'];
+                                       } else {
+                                               $dx = $this->cell_padding['L'];
+                                       }
+                                       break;
+                               }
+                       }
+                       if ($this->rtl) {
+                               $xdx = $x - $dx - $width;
+                       } else {
+                               $xdx = $x + $dx;
+                       }
+                       $xdk = $xdx * $k;
+                       // print text
+                       $s .= sprintf('BT %F %F Td [(%s)] TJ ET', $xdk, (($this->h - $basefonty) * $k), $txt2);
+                       if (isset($uniblock)) {
+                               // print overlapping characters as separate string
+                               $xshift = 0; // horizontal shift
+                               $ty = (($this->h - $basefonty + (0.2 * $this->FontSize)) * $k);
+                               $spw = (($w - $txwidth - $this->cell_padding['L'] - $this->cell_padding['R']) / ($ns?$ns:1));
+                               foreach ($uniblock as $uk => $uniarr) {
+                                       if (($uk % 2) == 0) {
+                                               // x space to skip
+                                               if ($spacewidth != 0) {
+                                                       // justification shift
+                                                       $xshift += (count(array_keys($uniarr, 32)) * $spw);
+                                               }
+                                               $xshift += $this->GetArrStringWidth($uniarr); // + shift justification
+                                       } else {
+                                               // character to print
+                                               $topchr = TCPDF_FONTS::arrUTF8ToUTF16BE($uniarr, false);
+                                               $topchr = TCPDF_STATIC::_escape($topchr);
+                                               $s .= sprintf(' BT %F %F Td [(%s)] TJ ET', ($xdk + ($xshift * $k)), $ty, $topchr);
+                                       }
+                               }
+                       }
+                       if ($this->underline) {
+                               $s .= ' '.$this->_dounderlinew($xdx, $basefonty, $width);
+                       }
+                       if ($this->linethrough) {
+                               $s .= ' '.$this->_dolinethroughw($xdx, $basefonty, $width);
+                       }
+                       if ($this->overline) {
+                               $s .= ' '.$this->_dooverlinew($xdx, $basefonty, $width);
+                       }
+                       if ($this->ColorFlag AND ($this->textrendermode < 4)) {
+                               $s .= ' Q';
+                       }
+                       if ($link) {
+                               $this->Link($xdx, $yt, $width, ($this->FontAscent + $this->FontDescent), $link, $ns);
+                       }
+               }
+               // output cell
+               if ($s) {
+                       // output cell
+                       $rs .= $s;
+                       if ($this->font_spacing != 0) {
+                               // reset font spacing mode
+                               $rs .= ' BT 0 Tc ET';
+                       }
+                       if ($this->font_stretching != 100) {
+                               // reset font stretching mode
+                               $rs .= ' BT 100 Tz ET';
+                       }
+               }
+               // reset word spacing
+               if (!$this->isUnicodeFont() AND ($align == 'J')) {
+                       $rs .= ' BT 0 Tw ET';
+               }
+               // reset stretching and spacing
+               $this->font_stretching = $prev_font_stretching;
+               $this->font_spacing = $prev_font_spacing;
+               $this->lasth = $h;
+               if ($ln > 0) {
+                       //Go to the beginning of the next line
+                       $this->y = $y + $h + $this->cell_margin['B'];
+                       if ($ln == 1) {
+                               if ($this->rtl) {
+                                       $this->x = $this->w - $this->rMargin;
+                               } else {
+                                       $this->x = $this->lMargin;
+                               }
+                       }
+               } else {
+                       // go left or right by case
+                       if ($this->rtl) {
+                               $this->x = $x - $w - $this->cell_margin['L'];
+                       } else {
+                               $this->x = $x + $w + $this->cell_margin['R'];
+                       }
+               }
+               $gstyles = ''.$this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor.' '.$this->FillColor."\n";
+               $rs = $gstyles.$rs;
+               $this->cell_padding = $prev_cell_padding;
+               $this->cell_margin = $prev_cell_margin;
+               return $rs;
+       }
+
+       /**
+        * Replace a char if is defined on the current font.
+        * @param $oldchar (int) Integer code (unicode) of the character to replace.
+        * @param $newchar (int) Integer code (unicode) of the new character.
+        * @return int the replaced char or the old char in case the new char i not defined
+        * @protected
+        * @since 5.9.167 (2012-06-22)
+        */
+       protected function replaceChar($oldchar, $newchar) {
+               if ($this->isCharDefined($newchar)) {
+                       // add the new char on the subset list
+                       $this->CurrentFont['subsetchars'][$newchar] = true;
+                       // return the new character
+                       return $newchar;
+               }
+               // return the old char
+               return $oldchar;
+       }
+
+       /**
+        * Returns the code to draw the cell border
+        * @param $x (float) X coordinate.
+        * @param $y (float) Y coordinate.
+        * @param $w (float) Cell width.
+        * @param $h (float) Cell height.
+        * @param $brd (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @return string containing cell border code
+        * @protected
+        * @see SetLineStyle()
+        * @since 5.7.000 (2010-08-02)
+        */
+       protected function getCellBorder($x, $y, $w, $h, $brd) {
+               $s = ''; // string to be returned
+               if (empty($brd)) {
+                       return $s;
+               }
+               if ($brd == 1) {
+                       $brd = array('LRTB' => true);
+               }
+               // calculate coordinates for border
+               $k = $this->k;
+               if ($this->rtl) {
+                       $xeL = ($x - $w) * $k;
+                       $xeR = $x * $k;
+               } else {
+                       $xeL = $x * $k;
+                       $xeR = ($x + $w) * $k;
+               }
+               $yeL = (($this->h - ($y + $h)) * $k);
+               $yeT = (($this->h - $y) * $k);
+               $xeT = $xeL;
+               $xeB = $xeR;
+               $yeR = $yeT;
+               $yeB = $yeL;
+               if (is_string($brd)) {
+                       // convert string to array
+                       $slen = strlen($brd);
+                       $newbrd = array();
+                       for ($i = 0; $i < $slen; ++$i) {
+                               $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter');
+                       }
+                       $brd = $newbrd;
+               }
+               if (isset($brd['mode'])) {
+                       $mode = $brd['mode'];
+                       unset($brd['mode']);
+               } else {
+                       $mode = 'normal';
+               }
+               foreach ($brd as $border => $style) {
+                       if (is_array($style) AND !empty($style)) {
+                               // apply border style
+                               $prev_style = $this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor.' ';
+                               $s .= $this->SetLineStyle($style, true)."\n";
+                       }
+                       switch ($mode) {
+                               case 'ext': {
+                                       $off = (($this->LineWidth / 2) * $k);
+                                       $xL = $xeL - $off;
+                                       $xR = $xeR + $off;
+                                       $yT = $yeT + $off;
+                                       $yL = $yeL - $off;
+                                       $xT = $xL;
+                                       $xB = $xR;
+                                       $yR = $yT;
+                                       $yB = $yL;
+                                       $w += $this->LineWidth;
+                                       $h += $this->LineWidth;
+                                       break;
+                               }
+                               case 'int': {
+                                       $off = ($this->LineWidth / 2) * $k;
+                                       $xL = $xeL + $off;
+                                       $xR = $xeR - $off;
+                                       $yT = $yeT - $off;
+                                       $yL = $yeL + $off;
+                                       $xT = $xL;
+                                       $xB = $xR;
+                                       $yR = $yT;
+                                       $yB = $yL;
+                                       $w -= $this->LineWidth;
+                                       $h -= $this->LineWidth;
+                                       break;
+                               }
+                               case 'normal':
+                               default: {
+                                       $xL = $xeL;
+                                       $xT = $xeT;
+                                       $xB = $xeB;
+                                       $xR = $xeR;
+                                       $yL = $yeL;
+                                       $yT = $yeT;
+                                       $yB = $yeB;
+                                       $yR = $yeR;
+                                       break;
+                               }
+                       }
+                       // draw borders by case
+                       if (strlen($border) == 4) {
+                               $s .= sprintf('%F %F %F %F re S ', $xT, $yT, ($w * $k), (-$h * $k));
+                       } elseif (strlen($border) == 3) {
+                               if (strpos($border,'B') === false) { // LTR
+                                       $s .= sprintf('%F %F m ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= 'S ';
+                               } elseif (strpos($border,'L') === false) { // TRB
+                                       $s .= sprintf('%F %F m ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= 'S ';
+                               } elseif (strpos($border,'T') === false) { // RBL
+                                       $s .= sprintf('%F %F m ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= 'S ';
+                               } elseif (strpos($border,'R') === false) { // BLT
+                                       $s .= sprintf('%F %F m ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= 'S ';
+                               }
+                       } elseif (strlen($border) == 2) {
+                               if ((strpos($border,'L') !== false) AND (strpos($border,'T') !== false)) { // LT
+                                       $s .= sprintf('%F %F m ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= 'S ';
+                               } elseif ((strpos($border,'T') !== false) AND (strpos($border,'R') !== false)) { // TR
+                                       $s .= sprintf('%F %F m ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= 'S ';
+                               } elseif ((strpos($border,'R') !== false) AND (strpos($border,'B') !== false)) { // RB
+                                       $s .= sprintf('%F %F m ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= 'S ';
+                               } elseif ((strpos($border,'B') !== false) AND (strpos($border,'L') !== false)) { // BL
+                                       $s .= sprintf('%F %F m ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= 'S ';
+                               } elseif ((strpos($border,'L') !== false) AND (strpos($border,'R') !== false)) { // LR
+                                       $s .= sprintf('%F %F m ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= 'S ';
+                                       $s .= sprintf('%F %F m ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= 'S ';
+                               } elseif ((strpos($border,'T') !== false) AND (strpos($border,'B') !== false)) { // TB
+                                       $s .= sprintf('%F %F m ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= 'S ';
+                                       $s .= sprintf('%F %F m ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= 'S ';
+                               }
+                       } else { // strlen($border) == 1
+                               if (strpos($border,'L') !== false) { // L
+                                       $s .= sprintf('%F %F m ', $xL, $yL);
+                                       $s .= sprintf('%F %F l ', $xT, $yT);
+                                       $s .= 'S ';
+                               } elseif (strpos($border,'T') !== false) { // T
+                                       $s .= sprintf('%F %F m ', $xT, $yT);
+                                       $s .= sprintf('%F %F l ', $xR, $yR);
+                                       $s .= 'S ';
+                               } elseif (strpos($border,'R') !== false) { // R
+                                       $s .= sprintf('%F %F m ', $xR, $yR);
+                                       $s .= sprintf('%F %F l ', $xB, $yB);
+                                       $s .= 'S ';
+                               } elseif (strpos($border,'B') !== false) { // B
+                                       $s .= sprintf('%F %F m ', $xB, $yB);
+                                       $s .= sprintf('%F %F l ', $xL, $yL);
+                                       $s .= 'S ';
+                               }
+                       }
+                       if (is_array($style) AND !empty($style)) {
+                               // reset border style to previous value
+                               $s .= "\n".$this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor."\n";
+                       }
+               }
+               return $s;
+       }
+
+       /**
+        * This method allows printing text with line breaks.
+        * They can be automatic (as soon as the text reaches the right border of the cell) or explicit (via the \n character). As many cells as necessary are output, one below the other.<br />
+        * Text can be aligned, centered or justified. The cell block can be framed and the background painted.
+        * @param $w (float) Width of cells. If 0, they extend up to the right margin of the page.
+        * @param $h (float) Cell minimum height. The cell extends automatically if needed.
+        * @param $txt (string) String to print
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L or empty string: left align</li><li>C: center</li><li>R: right align</li><li>J: justification (default value when $ishtml=false)</li></ul>
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $ln (int) Indicates where the current position should go after the call. Possible values are:<ul><li>0: to the right</li><li>1: to the beginning of the next line [DEFAULT]</li><li>2: below</li></ul>
+        * @param $x (float) x position in user units
+        * @param $y (float) y position in user units
+        * @param $reseth (boolean) if true reset the last cell height (default true).
+        * @param $stretch (int) font stretch mode: <ul><li>0 = disabled</li><li>1 = horizontal scaling only if text is larger than cell width</li><li>2 = forced horizontal scaling to fit cell width</li><li>3 = character spacing only if text is larger than cell width</li><li>4 = forced character spacing to fit cell width</li></ul> General font stretching and scaling values will be preserved when possible.
+        * @param $ishtml (boolean) INTERNAL USE ONLY -- set to true if $txt is HTML content (default = false). Never set this parameter to true, use instead writeHTMLCell() or writeHTML() methods.
+        * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width.
+        * @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature. This feature works only when $ishtml=false.
+        * @param $valign (string) Vertical alignment of text (requires $maxh = $h > 0). Possible values are:<ul><li>T: TOP</li><li>M: middle</li><li>B: bottom</li></ul>. This feature works only when $ishtml=false and the cell must fit in a single page.
+        * @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and wqual to $h.
+        * @return int Return the number of cells or 1 for html mode.
+        * @public
+        * @since 1.3
+        * @see SetFont(), SetDrawColor(), SetFillColor(), SetTextColor(), SetLineWidth(), Cell(), Write(), SetAutoPageBreak()
+        */
+       public function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0, $valign='T', $fitcell=false) {
+               $prev_cell_margin = $this->cell_margin;
+               $prev_cell_padding = $this->cell_padding;
+               // adjust internal padding
+               $this->adjustCellPadding($border);
+               $mc_padding = $this->cell_padding;
+               $mc_margin = $this->cell_margin;
+               $this->cell_padding['T'] = 0;
+               $this->cell_padding['B'] = 0;
+               $this->setCellMargins(0, 0, 0, 0);
+               if (TCPDF_STATIC::empty_string($this->lasth) OR $reseth) {
+                       // reset row height
+                       $this->resetLastH();
+               }
+               if (!TCPDF_STATIC::empty_string($y)) {
+                       $this->SetY($y);
+               } else {
+                       $y = $this->GetY();
+               }
+               $resth = 0;
+               if (($h > 0) AND $this->inPageBody() AND (($y + $h + $mc_margin['T'] + $mc_margin['B']) > $this->PageBreakTrigger)) {
+                       // spit cell in more pages/columns
+                       $newh = ($this->PageBreakTrigger - $y);
+                       $resth = ($h - $newh); // cell to be printed on the next page/column
+                       $h = $newh;
+               }
+               // get current page number
+               $startpage = $this->page;
+               // get current column
+               $startcolumn = $this->current_column;
+               if (!TCPDF_STATIC::empty_string($x)) {
+                       $this->SetX($x);
+               } else {
+                       $x = $this->GetX();
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions(0, $x, $y);
+               // apply margins
+               $oy = $y + $mc_margin['T'];
+               if ($this->rtl) {
+                       $ox = ($this->w - $x - $mc_margin['R']);
+               } else {
+                       $ox = ($x + $mc_margin['L']);
+               }
+               $this->x = $ox;
+               $this->y = $oy;
+               // set width
+               if (TCPDF_STATIC::empty_string($w) OR ($w <= 0)) {
+                       if ($this->rtl) {
+                               $w = ($this->x - $this->lMargin - $mc_margin['L']);
+                       } else {
+                               $w = ($this->w - $this->x - $this->rMargin - $mc_margin['R']);
+                       }
+               }
+               // store original margin values
+               $lMargin = $this->lMargin;
+               $rMargin = $this->rMargin;
+               if ($this->rtl) {
+                       $this->rMargin = ($this->w - $this->x);
+                       $this->lMargin = ($this->x - $w);
+               } else {
+                       $this->lMargin = ($this->x);
+                       $this->rMargin = ($this->w - $this->x - $w);
+               }
+               $this->clMargin = $this->lMargin;
+               $this->crMargin = $this->rMargin;
+               if ($autopadding) {
+                       // add top padding
+                       $this->y += $mc_padding['T'];
+               }
+               if ($ishtml) { // ******* Write HTML text
+                       $this->writeHTML($txt, true, false, $reseth, true, $align);
+                       $nl = 1;
+               } else { // ******* Write simple text
+                       $prev_FontSizePt = $this->FontSizePt;
+                       if ($fitcell) {
+                               // ajust height values
+                               $tobottom = ($this->h - $this->y - $this->bMargin - $this->cell_padding['T'] - $this->cell_padding['B']);
+                               $h = $maxh = max(min($h, $tobottom), min($maxh, $tobottom));
+                       }
+                       // vertical alignment
+                       if ($maxh > 0) {
+                               // get text height
+                               $text_height = $this->getStringHeight($w, $txt, $reseth, $autopadding, $mc_padding, $border);
+                               if ($fitcell AND ($text_height > $maxh) AND ($this->FontSizePt > 1)) {
+                                       // try to reduce font size to fit text on cell (use a quick search algorithm)
+                                       $fmin = 1;
+                                       $fmax = $this->FontSizePt;
+                                       $diff_epsilon = (1 / $this->k); // one point (min resolution)
+                                       $maxit = (2 * min(100, max(10, intval($fmax)))); // max number of iterations
+                                       while ($maxit >= 0) {
+                                               $fmid = (($fmax + $fmin) / 2);
+                                               $this->SetFontSize($fmid, false);
+                                               $this->resetLastH();
+                                               $text_height = $this->getStringHeight($w, $txt, $reseth, $autopadding, $mc_padding, $border);
+                                               $diff = ($maxh - $text_height);
+                                               if ($diff >= 0) {
+                                                       if ($diff <= $diff_epsilon) {
+                                                               break;
+                                                       }
+                                                       $fmin = $fmid;
+                                               } else {
+                                                       $fmax = $fmid;
+                                               }
+                                               --$maxit;
+                                       }
+                                       if ($maxit < 0) {
+                                               // premature exit, we get the minimum font value to fit the cell
+                                               $this->SetFontSize($fmin);
+                                               $this->resetLastH();
+                                               $text_height = $this->getStringHeight($w, $txt, $reseth, $autopadding, $mc_padding, $border);
+                                       } else {
+                                               $this->SetFontSize($fmid);
+                                               $this->resetLastH();
+                                       }
+                               }
+                               if ($text_height < $maxh) {
+                                       if ($valign == 'M') {
+                                               // text vertically centered
+                                               $this->y += (($maxh - $text_height) / 2);
+                                       } elseif ($valign == 'B') {
+                                               // text vertically aligned on bottom
+                                               $this->y += ($maxh - $text_height);
+                                       }
+                               }
+                       }
+                       $nl = $this->Write($this->lasth, $txt, '', 0, $align, true, $stretch, false, true, $maxh, 0, $mc_margin);
+                       if ($fitcell) {
+                               // restore font size
+                               $this->SetFontSize($prev_FontSizePt);
+                       }
+               }
+               if ($autopadding) {
+                       // add bottom padding
+                       $this->y += $mc_padding['B'];
+               }
+               // Get end-of-text Y position
+               $currentY = $this->y;
+               // get latest page number
+               $endpage = $this->page;
+               if ($resth > 0) {
+                       $skip = ($endpage - $startpage);
+                       $tmpresth = $resth;
+                       while ($tmpresth > 0) {
+                               if ($skip <= 0) {
+                                       // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                                       $this->checkPageBreak($this->PageBreakTrigger + 1);
+                               }
+                               if ($this->num_columns > 1) {
+                                       $tmpresth -= ($this->h - $this->y - $this->bMargin);
+                               } else {
+                                       $tmpresth -= ($this->h - $this->tMargin - $this->bMargin);
+                               }
+                               --$skip;
+                       }
+                       $currentY = $this->y;
+                       $endpage = $this->page;
+               }
+               // get latest column
+               $endcolumn = $this->current_column;
+               if ($this->num_columns == 0) {
+                       $this->num_columns = 1;
+               }
+               // disable page regions check
+               $check_page_regions = $this->check_page_regions;
+               $this->check_page_regions = false;
+               // get border modes
+               $border_start = TCPDF_STATIC::getBorderMode($border, $position='start', $this->opencell);
+               $border_end = TCPDF_STATIC::getBorderMode($border, $position='end', $this->opencell);
+               $border_middle = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell);
+               // design borders around HTML cells.
+               for ($page = $startpage; $page <= $endpage; ++$page) { // for each page
+                       $ccode = '';
+                       $this->setPage($page);
+                       if ($this->num_columns < 2) {
+                               // single-column mode
+                               $this->SetX($x);
+                               $this->y = $this->tMargin;
+                       }
+                       // account for margin changes
+                       if ($page > $startpage) {
+                               if (($this->rtl) AND ($this->pagedim[$page]['orm'] != $this->pagedim[$startpage]['orm'])) {
+                                       $this->x -= ($this->pagedim[$page]['orm'] - $this->pagedim[$startpage]['orm']);
+                               } elseif ((!$this->rtl) AND ($this->pagedim[$page]['olm'] != $this->pagedim[$startpage]['olm'])) {
+                                       $this->x += ($this->pagedim[$page]['olm'] - $this->pagedim[$startpage]['olm']);
+                               }
+                       }
+                       if ($startpage == $endpage) {
+                               // single page
+                               for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($this->rtl) {
+                                               $this->x -= $mc_margin['R'];
+                                       } else {
+                                               $this->x += $mc_margin['L'];
+                                       }
+                                       if ($startcolumn == $endcolumn) { // single column
+                                               $cborder = $border;
+                                               $h = max($h, ($currentY - $oy));
+                                               $this->y = $oy;
+                                       } elseif ($column == $startcolumn) { // first column
+                                               $cborder = $border_start;
+                                               $this->y = $oy;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       } elseif ($column == $endcolumn) { // end column
+                                               $cborder = $border_end;
+                                               $h = $currentY - $this->y;
+                                               if ($resth > $h) {
+                                                       $h = $resth;
+                                               }
+                                       } else { // middle column
+                                               $cborder = $border_middle;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                               $resth -= $h;
+                                       }
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       } elseif ($page == $startpage) { // first page
+                               for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($this->rtl) {
+                                               $this->x -= $mc_margin['R'];
+                                       } else {
+                                               $this->x += $mc_margin['L'];
+                                       }
+                                       if ($column == $startcolumn) { // first column
+                                               $cborder = $border_start;
+                                               $this->y = $oy;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       } else { // middle column
+                                               $cborder = $border_middle;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                               $resth -= $h;
+                                       }
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       } elseif ($page == $endpage) { // last page
+                               for ($column = 0; $column <= $endcolumn; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($this->rtl) {
+                                               $this->x -= $mc_margin['R'];
+                                       } else {
+                                               $this->x += $mc_margin['L'];
+                                       }
+                                       if ($column == $endcolumn) {
+                                               // end column
+                                               $cborder = $border_end;
+                                               $h = $currentY - $this->y;
+                                               if ($resth > $h) {
+                                                       $h = $resth;
+                                               }
+                                       } else {
+                                               // middle column
+                                               $cborder = $border_middle;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                               $resth -= $h;
+                                       }
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       } else { // middle page
+                               for ($column = 0; $column < $this->num_columns; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($this->rtl) {
+                                               $this->x -= $mc_margin['R'];
+                                       } else {
+                                               $this->x += $mc_margin['L'];
+                                       }
+                                       $cborder = $border_middle;
+                                       $h = $this->h - $this->y - $this->bMargin;
+                                       $resth -= $h;
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       }
+                       if ($cborder OR $fill) {
+                               $offsetlen = strlen($ccode);
+                               // draw border and fill
+                               if ($this->inxobj) {
+                                       // we are inside an XObject template
+                                       if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) {
+                                               $pagemarkkey = key($this->xobjects[$this->xobjid]['transfmrk']);
+                                               $pagemark = $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey];
+                                               $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey] += $offsetlen;
+                                       } else {
+                                               $pagemark = $this->xobjects[$this->xobjid]['intmrk'];
+                                               $this->xobjects[$this->xobjid]['intmrk'] += $offsetlen;
+                                       }
+                                       $pagebuff = $this->xobjects[$this->xobjid]['outdata'];
+                                       $pstart = substr($pagebuff, 0, $pagemark);
+                                       $pend = substr($pagebuff, $pagemark);
+                                       $this->xobjects[$this->xobjid]['outdata'] = $pstart.$ccode.$pend;
+                               } else {
+                                       if (end($this->transfmrk[$this->page]) !== false) {
+                                               $pagemarkkey = key($this->transfmrk[$this->page]);
+                                               $pagemark = $this->transfmrk[$this->page][$pagemarkkey];
+                                               $this->transfmrk[$this->page][$pagemarkkey] += $offsetlen;
+                                       } elseif ($this->InFooter) {
+                                               $pagemark = $this->footerpos[$this->page];
+                                               $this->footerpos[$this->page] += $offsetlen;
+                                       } else {
+                                               $pagemark = $this->intmrk[$this->page];
+                                               $this->intmrk[$this->page] += $offsetlen;
+                                       }
+                                       $pagebuff = $this->getPageBuffer($this->page);
+                                       $pstart = substr($pagebuff, 0, $pagemark);
+                                       $pend = substr($pagebuff, $pagemark);
+                                       $this->setPageBuffer($this->page, $pstart.$ccode.$pend);
+                               }
+                       }
+               } // end for each page
+               // restore page regions check
+               $this->check_page_regions = $check_page_regions;
+               // Get end-of-cell Y position
+               $currentY = $this->GetY();
+               // restore previous values
+               if ($this->num_columns > 1) {
+                       $this->selectColumn();
+               } else {
+                       // restore original margins
+                       $this->lMargin = $lMargin;
+                       $this->rMargin = $rMargin;
+                       if ($this->page > $startpage) {
+                               // check for margin variations between pages (i.e. booklet mode)
+                               $dl = ($this->pagedim[$this->page]['olm'] - $this->pagedim[$startpage]['olm']);
+                               $dr = ($this->pagedim[$this->page]['orm'] - $this->pagedim[$startpage]['orm']);
+                               if (($dl != 0) OR ($dr != 0)) {
+                                       $this->lMargin += $dl;
+                                       $this->rMargin += $dr;
+                               }
+                       }
+               }
+               if ($ln > 0) {
+                       //Go to the beginning of the next line
+                       $this->SetY($currentY + $mc_margin['B']);
+                       if ($ln == 2) {
+                               $this->SetX($x + $w + $mc_margin['L'] + $mc_margin['R']);
+                       }
+               } else {
+                       // go left or right by case
+                       $this->setPage($startpage);
+                       $this->y = $y;
+                       $this->SetX($x + $w + $mc_margin['L'] + $mc_margin['R']);
+               }
+               $this->setContentMark();
+               $this->cell_padding = $prev_cell_padding;
+               $this->cell_margin = $prev_cell_margin;
+               $this->clMargin = $this->lMargin;
+               $this->crMargin = $this->rMargin;
+               return $nl;
+       }
+
+       /**
+        * This method return the estimated number of lines for print a simple text string using Multicell() method.
+        * @param $txt (string) String for calculating his height
+        * @param $w (float) Width of cells. If 0, they extend up to the right margin of the page.
+        * @param $reseth (boolean) if true reset the last cell height (default false).
+        * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width (default true).
+        * @param $cellpadding (float) Internal cell padding, if empty uses default cell padding.
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @return float Return the minimal height needed for multicell method for printing the $txt param.
+        * @author Alexander Escalona Fern\E1ndez, Nicola Asuni
+        * @public
+        * @since 4.5.011
+        */
+       public function getNumLines($txt, $w=0, $reseth=false, $autopadding=true, $cellpadding='', $border=0) {
+               if ($txt === NULL) {
+                       return 0;
+               }
+               if ($txt === '') {
+                       // empty string
+                       return 1;
+               }
+               // adjust internal padding
+               $prev_cell_padding = $this->cell_padding;
+               $prev_lasth = $this->lasth;
+               if (is_array($cellpadding)) {
+                       $this->cell_padding = $cellpadding;
+               }
+               $this->adjustCellPadding($border);
+               if (TCPDF_STATIC::empty_string($w) OR ($w <= 0)) {
+                       if ($this->rtl) {
+                               $w = $this->x - $this->lMargin;
+                       } else {
+                               $w = $this->w - $this->rMargin - $this->x;
+                       }
+               }
+               $wmax = $w - $this->cell_padding['L'] - $this->cell_padding['R'];
+               if ($reseth) {
+                       // reset row height
+                       $this->resetLastH();
+               }
+               $lines = 1;
+               $sum = 0;
+               $chars = TCPDF_FONTS::utf8Bidi(TCPDF_FONTS::UTF8StringToArray($txt, $this->isunicode, $this->CurrentFont), $txt, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+               $charsWidth = $this->GetArrStringWidth($chars, '', '', 0, true);
+               $length = count($chars);
+               $lastSeparator = -1;
+               for ($i = 0; $i < $length; ++$i) {
+                       $c = $chars[$i];
+                       $charWidth = $charsWidth[$i];
+                       if (($c != 160)
+                                       AND (($c == 173)
+                                               OR preg_match($this->re_spaces, TCPDF_FONTS::unichr($c, $this->isunicode))
+                                               OR (($c == 45)
+                                                       AND ($i > 0) AND ($i < ($length - 1))
+                                                       AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($chars[($i - 1)], $this->isunicode))
+                                                       AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($chars[($i + 1)], $this->isunicode))
+                                               )
+                                       )
+                               ) {
+                               $lastSeparator = $i;
+                       }
+                       if ((($sum + $charWidth) > $wmax) OR ($c == 10)) {
+                               ++$lines;
+                               if ($c == 10) {
+                                       $lastSeparator = -1;
+                                       $sum = 0;
+                               } elseif ($lastSeparator != -1) {
+                                       $i = $lastSeparator;
+                                       $lastSeparator = -1;
+                                       $sum = 0;
+                               } else {
+                                       $sum = $charWidth;
+                               }
+                       } else {
+                               $sum += $charWidth;
+                       }
+               }
+               if ($chars[($length - 1)] == 10) {
+                       --$lines;
+               }
+               $this->cell_padding = $prev_cell_padding;
+               $this->lasth = $prev_lasth;
+               return $lines;
+       }
+
+       /**
+        * This method return the estimated height needed for printing a simple text string using the Multicell() method.
+        * Generally, if you want to know the exact height for a block of content you can use the following alternative technique:
+        * @pre
+        *  // store current object
+        *  $pdf->startTransaction();
+        *  // store starting values
+        *  $start_y = $pdf->GetY();
+        *  $start_page = $pdf->getPage();
+        *  // call your printing functions with your parameters
+        *  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+        *  $pdf->MultiCell($w=0, $h=0, $txt, $border=1, $align='L', $fill=false, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0);
+        *  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+        *  // get the new Y
+        *  $end_y = $pdf->GetY();
+        *  $end_page = $pdf->getPage();
+        *  // calculate height
+        *  $height = 0;
+        *  if ($end_page == $start_page) {
+        *      $height = $end_y - $start_y;
+        *  } else {
+        *      for ($page=$start_page; $page <= $end_page; ++$page) {
+        *              $this->setPage($page);
+        *              if ($page == $start_page) {
+        *                      // first page
+        *                      $height = $this->h - $start_y - $this->bMargin;
+        *              } elseif ($page == $end_page) {
+        *                      // last page
+        *                      $height = $end_y - $this->tMargin;
+        *              } else {
+        *                      $height = $this->h - $this->tMargin - $this->bMargin;
+        *              }
+        *      }
+        *  }
+        *  // restore previous object
+        *  $pdf = $pdf->rollbackTransaction();
+        *
+        * @param $w (float) Width of cells. If 0, they extend up to the right margin of the page.
+        * @param $txt (string) String for calculating his height
+        * @param $reseth (boolean) if true reset the last cell height (default false).
+        * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width (default true).
+        * @param $cellpadding (float) Internal cell padding, if empty uses default cell padding.
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @return float Return the minimal height needed for multicell method for printing the $txt param.
+        * @author Nicola Asuni, Alexander Escalona Fern\E1ndez
+        * @public
+        */
+       public function getStringHeight($w, $txt, $reseth=false, $autopadding=true, $cellpadding='', $border=0) {
+               // adjust internal padding
+               $prev_cell_padding = $this->cell_padding;
+               $prev_lasth = $this->lasth;
+               if (is_array($cellpadding)) {
+                       $this->cell_padding = $cellpadding;
+               }
+               $this->adjustCellPadding($border);
+               $lines = $this->getNumLines($txt, $w, $reseth, $autopadding, $cellpadding, $border);
+               $height = $this->getCellHeight(($lines * $this->FontSize), $autopadding);
+               $this->cell_padding = $prev_cell_padding;
+               $this->lasth = $prev_lasth;
+               return $height;
+       }
+
+       /**
+        * This method prints text from the current position.<br />
+        * @param $h (float) Line height
+        * @param $txt (string) String to print
+        * @param $link (mixed) URL or identifier returned by AddLink()
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L or empty string: left align (default value)</li><li>C: center</li><li>R: right align</li><li>J: justify</li></ul>
+        * @param $ln (boolean) if true set cursor at the bottom of the line, otherwise set cursor at the top of the line.
+        * @param $stretch (int) font stretch mode: <ul><li>0 = disabled</li><li>1 = horizontal scaling only if text is larger than cell width</li><li>2 = forced horizontal scaling to fit cell width</li><li>3 = character spacing only if text is larger than cell width</li><li>4 = forced character spacing to fit cell width</li></ul> General font stretching and scaling values will be preserved when possible.
+        * @param $firstline (boolean) if true prints only the first line and return the remaining string.
+        * @param $firstblock (boolean) if true the string is the starting of a line.
+        * @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature.
+        * @param $wadj (float) first line width will be reduced by this amount (used in HTML mode).
+        * @param $margin (array) margin array of the parent container
+        * @return mixed Return the number of cells or the remaining string if $firstline = true.
+        * @public
+        * @since 1.5
+        */
+       public function Write($h, $txt, $link='', $fill=false, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0, $wadj=0, $margin='') {
+               // check page for no-write regions and adapt page margins if necessary
+               list($this->x, $this->y) = $this->checkPageRegions($h, $this->x, $this->y);
+               if (strlen($txt) == 0) {
+                       // fix empty text
+                       $txt = ' ';
+               }
+               if ($margin === '') {
+                       // set default margins
+                       $margin = $this->cell_margin;
+               }
+               // remove carriage returns
+               $s = str_replace("\r", '', $txt);
+               // check if string contains arabic text
+               if (preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_ARABIC, $s)) {
+                       $arabic = true;
+               } else {
+                       $arabic = false;
+               }
+               // check if string contains RTL text
+               if ($arabic OR ($this->tmprtl == 'R') OR preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_RTL, $s)) {
+                       $rtlmode = true;
+               } else {
+                       $rtlmode = false;
+               }
+               // get a char width
+               $chrwidth = $this->GetCharWidth(46); // dot character
+               // get array of unicode values
+               $chars = TCPDF_FONTS::UTF8StringToArray($s, $this->isunicode, $this->CurrentFont);
+               // calculate maximum width for a single character on string
+               $chrw = $this->GetArrStringWidth($chars, '', '', 0, true);
+               array_walk($chrw, array($this, 'getRawCharWidth'));
+               $maxchwidth = max($chrw);
+               // get array of chars
+               $uchars = TCPDF_FONTS::UTF8ArrayToUniArray($chars, $this->isunicode);
+               // get the number of characters
+               $nb = count($chars);
+               // replacement for SHY character (minus symbol)
+               $shy_replacement = 45;
+               $shy_replacement_char = TCPDF_FONTS::unichr($shy_replacement, $this->isunicode);
+               // widht for SHY replacement
+               $shy_replacement_width = $this->GetCharWidth($shy_replacement);
+               // page width
+               $pw = $w = $this->w - $this->lMargin - $this->rMargin;
+               // calculate remaining line width ($w)
+               if ($this->rtl) {
+                       $w = $this->x - $this->lMargin;
+               } else {
+                       $w = $this->w - $this->rMargin - $this->x;
+               }
+               // max column width
+               $wmax = ($w - $wadj);
+               if (!$firstline) {
+                       $wmax -= ($this->cell_padding['L'] + $this->cell_padding['R']);
+               }
+               if ((!$firstline) AND (($chrwidth > $wmax) OR ($maxchwidth > $wmax))) {
+                       // the maximum width character do not fit on column
+                       return '';
+               }
+               // minimum row height
+               $row_height = max($h, $this->getCellHeight($this->FontSize));
+               // max Y
+               $maxy = $this->y + $maxh - max($row_height, $h);
+               $start_page = $this->page;
+               $i = 0; // character position
+               $j = 0; // current starting position
+               $sep = -1; // position of the last blank space
+               $prevsep = $sep; // previous separator
+               $shy = false; // true if the last blank is a soft hypen (SHY)
+               $prevshy = $shy; // previous shy mode
+               $l = 0; // current string length
+               $nl = 0; //number of lines
+               $linebreak = false;
+               $pc = 0; // previous character
+               // for each character
+               while ($i < $nb) {
+                       if (($maxh > 0) AND ($this->y > $maxy) ) {
+                               break;
+                       }
+                       //Get the current character
+                       $c = $chars[$i];
+                       if ($c == 10) { // 10 = "\n" = new line
+                               //Explicit line break
+                               if ($align == 'J') {
+                                       if ($this->rtl) {
+                                               $talign = 'R';
+                                       } else {
+                                               $talign = 'L';
+                                       }
+                               } else {
+                                       $talign = $align;
+                               }
+                               $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $i);
+                               if ($firstline) {
+                                       $startx = $this->x;
+                                       $tmparr = array_slice($chars, $j, ($i - $j));
+                                       if ($rtlmode) {
+                                               $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                                       }
+                                       $linew = $this->GetArrStringWidth($tmparr);
+                                       unset($tmparr);
+                                       if ($this->rtl) {
+                                               $this->endlinex = $startx - $linew;
+                                       } else {
+                                               $this->endlinex = $startx + $linew;
+                                       }
+                                       $w = $linew;
+                                       $tmpcellpadding = $this->cell_padding;
+                                       if ($maxh == 0) {
+                                               $this->SetCellPadding(0);
+                                       }
+                               }
+                               if ($firstblock AND $this->isRTLTextDir()) {
+                                       $tmpstr = $this->stringRightTrim($tmpstr);
+                               }
+                               // Skip newlines at the begining of a page or column
+                               if (!empty($tmpstr) OR ($this->y < ($this->PageBreakTrigger - $row_height))) {
+                                       $this->Cell($w, $h, $tmpstr, 0, 1, $talign, $fill, $link, $stretch);
+                               }
+                               unset($tmpstr);
+                               if ($firstline) {
+                                       $this->cell_padding = $tmpcellpadding;
+                                       return (TCPDF_FONTS::UniArrSubString($uchars, $i));
+                               }
+                               ++$nl;
+                               $j = $i + 1;
+                               $l = 0;
+                               $sep = -1;
+                               $prevsep = $sep;
+                               $shy = false;
+                               // account for margin changes
+                               if ((($this->y + $this->lasth) > $this->PageBreakTrigger) AND ($this->inPageBody())) {
+                                       $this->AcceptPageBreak();
+                                       if ($this->rtl) {
+                                               $this->x -= $margin['R'];
+                                       } else {
+                                               $this->x += $margin['L'];
+                                       }
+                                       $this->lMargin += $margin['L'];
+                                       $this->rMargin += $margin['R'];
+                               }
+                               $w = $this->getRemainingWidth();
+                               $wmax = ($w - $this->cell_padding['L'] - $this->cell_padding['R']);
+                       } else {
+                               // 160 is the non-breaking space.
+                               // 173 is SHY (Soft Hypen).
+                               // \p{Z} or \p{Separator}: any kind of Unicode whitespace or invisible separator.
+                               // \p{Lo} or \p{Other_Letter}: a Unicode letter or ideograph that does not have lowercase and uppercase variants.
+                               // \p{Lo} is needed because Chinese characters are packed next to each other without spaces in between.
+                               if (($c != 160)
+                                       AND (($c == 173)
+                                               OR preg_match($this->re_spaces, TCPDF_FONTS::unichr($c, $this->isunicode))
+                                               OR (($c == 45)
+                                                       AND ($i < ($nb - 1))
+                                                       AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($pc, $this->isunicode))
+                                                       AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($chars[($i + 1)], $this->isunicode))
+                                               )
+                                       )
+                               ) {
+                                       // update last blank space position
+                                       $prevsep = $sep;
+                                       $sep = $i;
+                                       // check if is a SHY
+                                       if (($c == 173) OR ($c == 45)) {
+                                               $prevshy = $shy;
+                                               $shy = true;
+                                               if ($pc == 45) {
+                                                       $tmp_shy_replacement_width = 0;
+                                                       $tmp_shy_replacement_char = '';
+                                               } else {
+                                                       $tmp_shy_replacement_width = $shy_replacement_width;
+                                                       $tmp_shy_replacement_char = $shy_replacement_char;
+                                               }
+                                       } else {
+                                               $shy = false;
+                                       }
+                               }
+                               // update string length
+                               if ($this->isUnicodeFont() AND ($arabic)) {
+                                       // with bidirectional algorithm some chars may be changed affecting the line length
+                                       // *** very slow ***
+                                       $l = $this->GetArrStringWidth(TCPDF_FONTS::utf8Bidi(array_slice($chars, $j, ($i - $j)), '', $this->tmprtl, $this->isunicode, $this->CurrentFont));
+                               } else {
+                                       $l += $this->GetCharWidth($c);
+                               }
+                               if (($l > $wmax) OR (($c == 173) AND (($l + $tmp_shy_replacement_width) >= $wmax))) {
+                                       if (($c == 173) AND (($l + $tmp_shy_replacement_width) > $wmax)) {
+                                               $sep = $prevsep;
+                                               $shy = $prevshy;
+                                       }
+                                       // we have reached the end of column
+                                       if ($sep == -1) {
+                                               // check if the line was already started
+                                               if (($this->rtl AND ($this->x <= ($this->w - $this->rMargin - $this->cell_padding['R'] - $margin['R'] - $chrwidth)))
+                                                       OR ((!$this->rtl) AND ($this->x >= ($this->lMargin + $this->cell_padding['L'] + $margin['L'] + $chrwidth)))) {
+                                                       // print a void cell and go to next line
+                                                       $this->Cell($w, $h, '', 0, 1);
+                                                       $linebreak = true;
+                                                       if ($firstline) {
+                                                               return (TCPDF_FONTS::UniArrSubString($uchars, $j));
+                                                       }
+                                               } else {
+                                                       // truncate the word because do not fit on column
+                                                       $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $i);
+                                                       if ($firstline) {
+                                                               $startx = $this->x;
+                                                               $tmparr = array_slice($chars, $j, ($i - $j));
+                                                               if ($rtlmode) {
+                                                                       $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                                                               }
+                                                               $linew = $this->GetArrStringWidth($tmparr);
+                                                               unset($tmparr);
+                                                               if ($this->rtl) {
+                                                                       $this->endlinex = $startx - $linew;
+                                                               } else {
+                                                                       $this->endlinex = $startx + $linew;
+                                                               }
+                                                               $w = $linew;
+                                                               $tmpcellpadding = $this->cell_padding;
+                                                               if ($maxh == 0) {
+                                                                       $this->SetCellPadding(0);
+                                                               }
+                                                       }
+                                                       if ($firstblock AND $this->isRTLTextDir()) {
+                                                               $tmpstr = $this->stringRightTrim($tmpstr);
+                                                       }
+                                                       $this->Cell($w, $h, $tmpstr, 0, 1, $align, $fill, $link, $stretch);
+                                                       unset($tmpstr);
+                                                       if ($firstline) {
+                                                               $this->cell_padding = $tmpcellpadding;
+                                                               return (TCPDF_FONTS::UniArrSubString($uchars, $i));
+                                                       }
+                                                       $j = $i;
+                                                       --$i;
+                                               }
+                                       } else {
+                                               // word wrapping
+                                               if ($this->rtl AND (!$firstblock) AND ($sep < $i)) {
+                                                       $endspace = 1;
+                                               } else {
+                                                       $endspace = 0;
+                                               }
+                                               // check the length of the next string
+                                               $strrest = TCPDF_FONTS::UniArrSubString($uchars, ($sep + $endspace));
+                                               $nextstr = TCPDF_STATIC::pregSplit('/'.$this->re_space['p'].'/', $this->re_space['m'], $this->stringTrim($strrest));
+                                               if (isset($nextstr[0]) AND ($this->GetStringWidth($nextstr[0]) > $pw)) {
+                                                       // truncate the word because do not fit on a full page width
+                                                       $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $i);
+                                                       if ($firstline) {
+                                                               $startx = $this->x;
+                                                               $tmparr = array_slice($chars, $j, ($i - $j));
+                                                               if ($rtlmode) {
+                                                                       $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                                                               }
+                                                               $linew = $this->GetArrStringWidth($tmparr);
+                                                               unset($tmparr);
+                                                               if ($this->rtl) {
+                                                                       $this->endlinex = ($startx - $linew);
+                                                               } else {
+                                                                       $this->endlinex = ($startx + $linew);
+                                                               }
+                                                               $w = $linew;
+                                                               $tmpcellpadding = $this->cell_padding;
+                                                               if ($maxh == 0) {
+                                                                       $this->SetCellPadding(0);
+                                                               }
+                                                       }
+                                                       if ($firstblock AND $this->isRTLTextDir()) {
+                                                               $tmpstr = $this->stringRightTrim($tmpstr);
+                                                       }
+                                                       $this->Cell($w, $h, $tmpstr, 0, 1, $align, $fill, $link, $stretch);
+                                                       unset($tmpstr);
+                                                       if ($firstline) {
+                                                               $this->cell_padding = $tmpcellpadding;
+                                                               return (TCPDF_FONTS::UniArrSubString($uchars, $i));
+                                                       }
+                                                       $j = $i;
+                                                       --$i;
+                                               } else {
+                                                       // word wrapping
+                                                       if ($shy) {
+                                                               // add hypen (minus symbol) at the end of the line
+                                                               $shy_width = $tmp_shy_replacement_width;
+                                                               if ($this->rtl) {
+                                                                       $shy_char_left = $tmp_shy_replacement_char;
+                                                                       $shy_char_right = '';
+                                                               } else {
+                                                                       $shy_char_left = '';
+                                                                       $shy_char_right = $tmp_shy_replacement_char;
+                                                               }
+                                                       } else {
+                                                               $shy_width = 0;
+                                                               $shy_char_left = '';
+                                                               $shy_char_right = '';
+                                                       }
+                                                       $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, ($sep + $endspace));
+                                                       if ($firstline) {
+                                                               $startx = $this->x;
+                                                               $tmparr = array_slice($chars, $j, (($sep + $endspace) - $j));
+                                                               if ($rtlmode) {
+                                                                       $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                                                               }
+                                                               $linew = $this->GetArrStringWidth($tmparr);
+                                                               unset($tmparr);
+                                                               if ($this->rtl) {
+                                                                       $this->endlinex = $startx - $linew - $shy_width;
+                                                               } else {
+                                                                       $this->endlinex = $startx + $linew + $shy_width;
+                                                               }
+                                                               $w = $linew;
+                                                               $tmpcellpadding = $this->cell_padding;
+                                                               if ($maxh == 0) {
+                                                                       $this->SetCellPadding(0);
+                                                               }
+                                                       }
+                                                       // print the line
+                                                       if ($firstblock AND $this->isRTLTextDir()) {
+                                                               $tmpstr = $this->stringRightTrim($tmpstr);
+                                                       }
+                                                       $this->Cell($w, $h, $shy_char_left.$tmpstr.$shy_char_right, 0, 1, $align, $fill, $link, $stretch);
+                                                       unset($tmpstr);
+                                                       if ($firstline) {
+                                                               if ($chars[$sep] == 45) {
+                                                                       $endspace += 1;
+                                                               }
+                                                               // return the remaining text
+                                                               $this->cell_padding = $tmpcellpadding;
+                                                               return (TCPDF_FONTS::UniArrSubString($uchars, ($sep + $endspace)));
+                                                       }
+                                                       $i = $sep;
+                                                       $sep = -1;
+                                                       $shy = false;
+                                                       $j = ($i + 1);
+                                               }
+                                       }
+                                       // account for margin changes
+                                       if ((($this->y + $this->lasth) > $this->PageBreakTrigger) AND ($this->inPageBody())) {
+                                               $this->AcceptPageBreak();
+                                               if ($this->rtl) {
+                                                       $this->x -= $margin['R'];
+                                               } else {
+                                                       $this->x += $margin['L'];
+                                               }
+                                               $this->lMargin += $margin['L'];
+                                               $this->rMargin += $margin['R'];
+                                       }
+                                       $w = $this->getRemainingWidth();
+                                       $wmax = $w - $this->cell_padding['L'] - $this->cell_padding['R'];
+                                       if ($linebreak) {
+                                               $linebreak = false;
+                                       } else {
+                                               ++$nl;
+                                               $l = 0;
+                                       }
+                               }
+                       }
+                       // save last character
+                       $pc = $c;
+                       ++$i;
+               } // end while i < nb
+               // print last substring (if any)
+               if ($l > 0) {
+                       switch ($align) {
+                               case 'J':
+                               case 'C': {
+                                       $w = $w;
+                                       break;
+                               }
+                               case 'L': {
+                                       if ($this->rtl) {
+                                               $w = $w;
+                                       } else {
+                                               $w = $l;
+                                       }
+                                       break;
+                               }
+                               case 'R': {
+                                       if ($this->rtl) {
+                                               $w = $l;
+                                       } else {
+                                               $w = $w;
+                                       }
+                                       break;
+                               }
+                               default: {
+                                       $w = $l;
+                                       break;
+                               }
+                       }
+                       $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $nb);
+                       if ($firstline) {
+                               $startx = $this->x;
+                               $tmparr = array_slice($chars, $j, ($nb - $j));
+                               if ($rtlmode) {
+                                       $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                               }
+                               $linew = $this->GetArrStringWidth($tmparr);
+                               unset($tmparr);
+                               if ($this->rtl) {
+                                       $this->endlinex = $startx - $linew;
+                               } else {
+                                       $this->endlinex = $startx + $linew;
+                               }
+                               $w = $linew;
+                               $tmpcellpadding = $this->cell_padding;
+                               if ($maxh == 0) {
+                                       $this->SetCellPadding(0);
+                               }
+                       }
+                       if ($firstblock AND $this->isRTLTextDir()) {
+                               $tmpstr = $this->stringRightTrim($tmpstr);
+                       }
+                       $this->Cell($w, $h, $tmpstr, 0, $ln, $align, $fill, $link, $stretch);
+                       unset($tmpstr);
+                       if ($firstline) {
+                               $this->cell_padding = $tmpcellpadding;
+                               return (TCPDF_FONTS::UniArrSubString($uchars, $nb));
+                       }
+                       ++$nl;
+               }
+               if ($firstline) {
+                       return '';
+               }
+               return $nl;
+       }
+
+       /**
+        * Returns the remaining width between the current position and margins.
+        * @return int Return the remaining width
+        * @protected
+        */
+       protected function getRemainingWidth() {
+               list($this->x, $this->y) = $this->checkPageRegions(0, $this->x, $this->y);
+               if ($this->rtl) {
+                       return ($this->x - $this->lMargin);
+               } else {
+                       return ($this->w - $this->rMargin - $this->x);
+               }
+       }
+
+       /**
+        * Set the block dimensions accounting for page breaks and page/column fitting
+        * @param $w (float) width
+        * @param $h (float) height
+        * @param $x (float) X coordinate
+        * @param $y (float) Y coodiante
+        * @param $fitonpage (boolean) if true the block is resized to not exceed page dimensions.
+        * @return array($w, $h, $x, $y)
+        * @protected
+        * @since 5.5.009 (2010-07-05)
+        */
+       protected function fitBlock($w, $h, $x, $y, $fitonpage=false) {
+               if ($w <= 0) {
+                       // set maximum width
+                       $w = ($this->w - $this->lMargin - $this->rMargin);
+                       if ($w <= 0) {
+                               $w = 1;
+                       }
+               }
+               if ($h <= 0) {
+                       // set maximum height
+                       $h = ($this->PageBreakTrigger - $this->tMargin);
+                       if ($h <= 0) {
+                               $h = 1;
+                       }
+               }
+               // resize the block to be vertically contained on a single page or single column
+               if ($fitonpage OR $this->AutoPageBreak) {
+                       $ratio_wh = ($w / $h);
+                       if ($h > ($this->PageBreakTrigger - $this->tMargin)) {
+                               $h = $this->PageBreakTrigger - $this->tMargin;
+                               $w = ($h * $ratio_wh);
+                       }
+                       // resize the block to be horizontally contained on a single page or single column
+                       if ($fitonpage) {
+                               $maxw = ($this->w - $this->lMargin - $this->rMargin);
+                               if ($w > $maxw) {
+                                       $w = $maxw;
+                                       $h = ($w / $ratio_wh);
+                               }
+                       }
+               }
+               // Check whether we need a new page or new column first as this does not fit
+               $prev_x = $this->x;
+               $prev_y = $this->y;
+               if ($this->checkPageBreak($h, $y) OR ($this->y < $prev_y)) {
+                       $y = $this->y;
+                       if ($this->rtl) {
+                               $x += ($prev_x - $this->x);
+                       } else {
+                               $x += ($this->x - $prev_x);
+                       }
+                       $this->newline = true;
+               }
+               // resize the block to be contained on the remaining available page or column space
+               if ($fitonpage) {
+                       $ratio_wh = ($w / $h);
+                       if (($y + $h) > $this->PageBreakTrigger) {
+                               $h = $this->PageBreakTrigger - $y;
+                               $w = ($h * $ratio_wh);
+                       }
+                       if ((!$this->rtl) AND (($x + $w) > ($this->w - $this->rMargin))) {
+                               $w = $this->w - $this->rMargin - $x;
+                               $h = ($w / $ratio_wh);
+                       } elseif (($this->rtl) AND (($x - $w) < ($this->lMargin))) {
+                               $w = $x - $this->lMargin;
+                               $h = ($w / $ratio_wh);
+                       }
+               }
+               return array($w, $h, $x, $y);
+       }
+
+       /**
+        * Puts an image in the page.
+        * The upper-left corner must be given.
+        * The dimensions can be specified in different ways:<ul>
+        * <li>explicit width and height (expressed in user unit)</li>
+        * <li>one explicit dimension, the other being calculated automatically in order to keep the original proportions</li>
+        * <li>no explicit dimension, in which case the image is put at 72 dpi</li></ul>
+        * Supported formats are JPEG and PNG images whitout GD library and all images supported by GD: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM;
+        * The format can be specified explicitly or inferred from the file extension.<br />
+        * It is possible to put a link on the image.<br />
+        * Remark: if an image is used several times, only one copy will be embedded in the file.<br />
+        * @param $file (string) Name of the file containing the image or a '@' character followed by the image data string. To link an image without embedding it on the document, set an asterisk character before the URL (i.e.: '*http://www.example.com/image.jpg').
+        * @param $x (float) Abscissa of the upper-left corner (LTR) or upper-right corner (RTL).
+        * @param $y (float) Ordinate of the upper-left corner (LTR) or upper-right corner (RTL).
+        * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $type (string) Image format. Possible values are (case insensitive): JPEG and PNG (whitout GD library) and all images supported by GD: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM;. If not specified, the type is inferred from the file extension.
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
+        * @param $resize (mixed) If true resize (reduce) the image to fit $w and $h (requires GD or ImageMagick library); if false do not resize; if 2 force resize in all cases (upscaling and downscaling).
+        * @param $dpi (int) dot-per-inch resolution used on resize
+        * @param $palign (string) Allows to center or align the image on the current line. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @param $ismask (boolean) true if this image is a mask, false otherwise
+        * @param $imgmask (mixed) image object returned by this function or false
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $fitbox (mixed) If not false scale image dimensions proportionally to fit within the ($w, $h) box. $fitbox can be true or a 2 characters string indicating the image alignment inside the box. The first character indicate the horizontal alignment (L = left, C = center, R = right) the second character indicate the vertical algnment (T = top, M = middle, B = bottom).
+        * @param $hidden (boolean) If true do not display the image.
+        * @param $fitonpage (boolean) If true the image is resized to not exceed page dimensions.
+        * @param $alt (boolean) If true the image will be added as alternative and not directly printed (the ID of the image will be returned).
+        * @param $altimgs (array) Array of alternate images IDs. Each alternative image must be an array with two values: an integer representing the image ID (the value returned by the Image method) and a boolean value to indicate if the image is the default for printing.
+        * @return image information
+        * @public
+        * @since 1.1
+        */
+       public function Image($file, $x='', $y='', $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false, $alt=false, $altimgs=array()) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               $exurl = ''; // external streams
+               $imsize = FALSE;
+               // check if we are passing an image as file or string
+               if ($file[0] === '@') {
+                       // image from string
+                       $imgdata = substr($file, 1);
+               } else { // image file
+                       if ($file[0] === '*') {
+                               // image as external stream
+                               $file = substr($file, 1);
+                               $exurl = $file;
+                       }
+                       // check if is a local file
+                       if (!@file_exists($file)) {
+                               // try to encode spaces on filename
+                               $tfile = str_replace(' ', '%20', $file);
+                               if (@file_exists($tfile)) {
+                                       $file = $tfile;
+                               }
+                       }
+                       if (($imsize = @getimagesize($file)) === FALSE) {
+                               if (in_array($file, $this->imagekeys)) {
+                                       // get existing image data
+                                       $info = $this->getImageBuffer($file);
+                                       $imsize = array($info['w'], $info['h']);                                
+                               } elseif (strpos($file, '__tcpdf_img') === FALSE) {
+                                       $imgdata = TCPDF_STATIC::fileGetContents($file);
+                               }
+                       }
+               }
+               if (!empty($imgdata)) {
+                       // copy image to cache
+                       $original_file = $file;
+                       $file = TCPDF_STATIC::getObjFilename('img');
+                       $fp = fopen($file, 'w');
+                       if (!$fp) {
+                               $this->Error('Unable to write file: '.$file);
+                       }
+                       fwrite($fp, $imgdata);
+                       fclose($fp);
+                       unset($imgdata);
+                       $imsize = @getimagesize($file);
+                       if ($imsize === FALSE) {
+                               unlink($file);
+                               $file = $original_file;
+                       } else {
+                               $this->cached_files[] = $file;
+                       }
+               }
+               if ($imsize === FALSE) {
+                       if (($w > 0) AND ($h > 0)) {
+                               // get measures from specified data
+                               $pw = $this->getHTMLUnitToUnits($w, 0, $this->pdfunit, true) * $this->imgscale * $this->k;
+                               $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k;
+                               $imsize = array($pw, $ph);
+                       } else {
+                               $this->Error('[Image] Unable to get the size of the image: '.$file);
+                       }
+               }
+               // file hash
+               $filehash = md5($this->file_id.$file);
+               // get original image width and height in pixels
+               list($pixw, $pixh) = $imsize;
+               // calculate image width and height on document
+               if (($w <= 0) AND ($h <= 0)) {
+                       // convert image size to document unit
+                       $w = $this->pixelsToUnits($pixw);
+                       $h = $this->pixelsToUnits($pixh);
+               } elseif ($w <= 0) {
+                       $w = $h * $pixw / $pixh;
+               } elseif ($h <= 0) {
+                       $h = $w * $pixh / $pixw;
+               } elseif (($fitbox !== false) AND ($w > 0) AND ($h > 0)) {
+                       if (strlen($fitbox) !== 2) {
+                               // set default alignment
+                               $fitbox = '--';
+                       }
+                       // scale image dimensions proportionally to fit within the ($w, $h) box
+                       if ((($w * $pixh) / ($h * $pixw)) < 1) {
+                               // store current height
+                               $oldh = $h;
+                               // calculate new height
+                               $h = $w * $pixh / $pixw;
+                               // height difference
+                               $hdiff = ($oldh - $h);
+                               // vertical alignment
+                               switch (strtoupper($fitbox[1])) {
+                                       case 'T': {
+                                               break;
+                                       }
+                                       case 'M': {
+                                               $y += ($hdiff / 2);
+                                               break;
+                                       }
+                                       case 'B': {
+                                               $y += $hdiff;
+                                               break;
+                                       }
+                               }
+                       } else {
+                               // store current width
+                               $oldw = $w;
+                               // calculate new width
+                               $w = $h * $pixw / $pixh;
+                               // width difference
+                               $wdiff = ($oldw - $w);
+                               // horizontal alignment
+                               switch (strtoupper($fitbox[0])) {
+                                       case 'L': {
+                                               if ($this->rtl) {
+                                                       $x -= $wdiff;
+                                               }
+                                               break;
+                                       }
+                                       case 'C': {
+                                               if ($this->rtl) {
+                                                       $x -= ($wdiff / 2);
+                                               } else {
+                                                       $x += ($wdiff / 2);
+                                               }
+                                               break;
+                                       }
+                                       case 'R': {
+                                               if (!$this->rtl) {
+                                                       $x += $wdiff;
+                                               }
+                                               break;
+                                       }
+                               }
+                       }
+               }
+               // fit the image on available space
+               list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage);
+               // calculate new minimum dimensions in pixels
+               $neww = round($w * $this->k * $dpi / $this->dpi);
+               $newh = round($h * $this->k * $dpi / $this->dpi);
+               // check if resize is necessary (resize is used only to reduce the image)
+               $newsize = ($neww * $newh);
+               $pixsize = ($pixw * $pixh);
+               if (intval($resize) == 2) {
+                       $resize = true;
+               } elseif ($newsize >= $pixsize) {
+                       $resize = false;
+               }
+               // check if image has been already added on document
+               $newimage = true;
+               if (in_array($file, $this->imagekeys)) {
+                       $newimage = false;
+                       // get existing image data
+                       $info = $this->getImageBuffer($file);
+                       if (strpos($file, '__tcpdf_imgmask_') === FALSE) {
+                               // check if the newer image is larger
+                               $oldsize = ($info['w'] * $info['h']);
+                               if ((($oldsize < $newsize) AND ($resize)) OR (($oldsize < $pixsize) AND (!$resize))) {
+                                       $newimage = true;
+                               }
+                       }
+               } elseif (($ismask === false) AND ($imgmask === false) AND (strpos($file, '__tcpdf_imgmask_') === FALSE)) {
+                       // create temp image file (without alpha channel)
+                       $tempfile_plain = K_PATH_CACHE.'__tcpdf_imgmask_plain_'.$filehash;
+                       // create temp alpha file
+                       $tempfile_alpha = K_PATH_CACHE.'__tcpdf_imgmask_alpha_'.$filehash;
+                       // check for cached images
+                       if (in_array($tempfile_plain, $this->imagekeys)) {
+                               // get existing image data
+                               $info = $this->getImageBuffer($tempfile_plain);
+                               // check if the newer image is larger
+                               $oldsize = ($info['w'] * $info['h']);
+                               if ((($oldsize < $newsize) AND ($resize)) OR (($oldsize < $pixsize) AND (!$resize))) {
+                                       $newimage = true;
+                               } else {
+                                       $newimage = false;
+                                       // embed mask image
+                                       $imgmask = $this->Image($tempfile_alpha, $x, $y, $w, $h, 'PNG', '', '', $resize, $dpi, '', true, false);
+                                       // embed image, masked with previously embedded mask
+                                       return $this->Image($tempfile_plain, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, false, $imgmask);
+                               }
+                       }
+               }
+               if ($newimage) {
+                       //First use of image, get info
+                       $type = strtolower($type);
+                       if ($type == '') {
+                               $type = TCPDF_IMAGES::getImageFileType($file, $imsize);
+                       } elseif ($type == 'jpg') {
+                               $type = 'jpeg';
+                       }
+                       $mqr = TCPDF_STATIC::get_mqr();
+                       TCPDF_STATIC::set_mqr(false);
+                       // Specific image handlers (defined on TCPDF_IMAGES CLASS)
+                       $mtd = '_parse'.$type;
+                       // GD image handler function
+                       $gdfunction = 'imagecreatefrom'.$type;
+                       $info = false;
+                       if ((method_exists('TCPDF_IMAGES', $mtd)) AND (!($resize AND (function_exists($gdfunction) OR extension_loaded('imagick'))))) {
+                               // TCPDF image functions
+                               $info = TCPDF_IMAGES::$mtd($file);
+                               if (($ismask === false) AND ($imgmask === false) AND (strpos($file, '__tcpdf_imgmask_') === FALSE)
+                                       AND (($info === 'pngalpha') OR (isset($info['trns']) AND !empty($info['trns'])))) {
+                                       return $this->ImagePngAlpha($file, $x, $y, $pixw, $pixh, $w, $h, 'PNG', $link, $align, $resize, $dpi, $palign, $filehash);
+                               }
+                       }
+                       if (($info === false) AND function_exists($gdfunction)) {
+                               try {
+                                       // GD library
+                                       $img = $gdfunction($file);
+                                       if ($img !== false) {
+                                               if ($resize) {
+                                                       $imgr = imagecreatetruecolor($neww, $newh);
+                                                       if (($type == 'gif') OR ($type == 'png')) {
+                                                               $imgr = TCPDF_IMAGES::setGDImageTransparency($imgr, $img);
+                                                       }
+                                                       imagecopyresampled($imgr, $img, 0, 0, 0, 0, $neww, $newh, $pixw, $pixh);
+                                                       $img = $imgr;
+                                               }
+                                               if (($type == 'gif') OR ($type == 'png')) {
+                                                       $info = TCPDF_IMAGES::_toPNG($img);
+                                               } else {
+                                                       $info = TCPDF_IMAGES::_toJPEG($img, $this->jpeg_quality);
+                                               }
+                                       }
+                               } catch(Exception $e) {
+                                       $info = false;
+                               }
+                       }
+                       if (($info === false) AND extension_loaded('imagick')) {
+                               try {
+                                       // ImageMagick library
+                                       $img = new Imagick();
+                                       if ($type == 'svg') {
+                                               if ($file[0] === '@') {
+                                                       // image from string
+                                                       $svgimg = substr($file, 1);
+                                               } else {
+                                                       // get SVG file content
+                                                       $svgimg = TCPDF_STATIC::fileGetContents($file);
+                                               }
+                                               if ($svgimg !== FALSE) {
+                                                       // get width and height
+                                                       $regs = array();
+                                                       if (preg_match('/<svg([^\>]*)>/si', $svgimg, $regs)) {
+                                                               $svgtag = $regs[1];
+                                                               $tmp = array();
+                                                               if (preg_match('/[\s]+width[\s]*=[\s]*"([^"]*)"/si', $svgtag, $tmp)) {
+                                                                       $ow = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false);
+                                                                       $owu = sprintf('%F', ($ow * $dpi / 72)).$this->pdfunit;
+                                                                       $svgtag = preg_replace('/[\s]+width[\s]*=[\s]*"[^"]*"/si', ' width="'.$owu.'"', $svgtag, 1);
+                                                               } else {
+                                                                       $ow = $w;
+                                                               }
+                                                               $tmp = array();
+                                                               if (preg_match('/[\s]+height[\s]*=[\s]*"([^"]*)"/si', $svgtag, $tmp)) {
+                                                                       $oh = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false);
+                                                                       $ohu = sprintf('%F', ($oh * $dpi / 72)).$this->pdfunit;
+                                                                       $svgtag = preg_replace('/[\s]+height[\s]*=[\s]*"[^"]*"/si', ' height="'.$ohu.'"', $svgtag, 1);
+                                                               } else {
+                                                                       $oh = $h;
+                                                               }
+                                                               $tmp = array();
+                                                               if (!preg_match('/[\s]+viewBox[\s]*=[\s]*"[\s]*([0-9\.]+)[\s]+([0-9\.]+)[\s]+([0-9\.]+)[\s]+([0-9\.]+)[\s]*"/si', $svgtag, $tmp)) {
+                                                                       $vbw = ($ow * $this->imgscale * $this->k);
+                                                                       $vbh = ($oh * $this->imgscale * $this->k);
+                                                                       $vbox = sprintf(' viewBox="0 0 %F %F" ', $vbw, $vbh);
+                                                                       $svgtag = $vbox.$svgtag;
+                                                               }
+                                                               $svgimg = preg_replace('/<svg([^\>]*)>/si', '<svg'.$svgtag.'>', $svgimg, 1);
+                                                       }
+                                                       $img->readImageBlob($svgimg);
+                                               }
+                                       } else {
+                                               $img->readImage($file);
+                                       }
+                                       if ($resize) {
+                                               $img->resizeImage($neww, $newh, 10, 1, false);
+                                       }
+                                       $img->setCompressionQuality($this->jpeg_quality);
+                                       $img->setImageFormat('jpeg');
+                                       $tempname = TCPDF_STATIC::getObjFilename('img');
+                                       $img->writeImage($tempname);
+                                       $info = TCPDF_IMAGES::_parsejpeg($tempname);
+                                       unlink($tempname);
+                                       $img->destroy();
+                               } catch(Exception $e) {
+                                       $info = false;
+                               }
+                       }
+                       if ($info === false) {
+                               // unable to process image
+                               return;
+                       }
+                       TCPDF_STATIC::set_mqr($mqr);
+                       if ($ismask) {
+                               // force grayscale
+                               $info['cs'] = 'DeviceGray';
+                       }
+                       if ($imgmask !== false) {
+                               $info['masked'] = $imgmask;
+                       }
+                       if (!empty($exurl)) {
+                               $info['exurl'] = $exurl;
+                       }
+                       // array of alternative images
+                       $info['altimgs'] = $altimgs;
+                       // add image to document
+                       $info['i'] = $this->setImageBuffer($file, $info);
+               }
+               // set alignment
+               $this->img_rb_y = $y + $h;
+               // set alignment
+               if ($this->rtl) {
+                       if ($palign == 'L') {
+                               $ximg = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $ximg = $this->w - $this->rMargin - $w;
+                       } else {
+                               $ximg = $x - $w;
+                       }
+                       $this->img_rb_x = $ximg;
+               } else {
+                       if ($palign == 'L') {
+                               $ximg = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $ximg = $this->w - $this->rMargin - $w;
+                       } else {
+                               $ximg = $x;
+                       }
+                       $this->img_rb_x = $ximg + $w;
+               }
+               if ($ismask OR $hidden) {
+                       // image is not displayed
+                       return $info['i'];
+               }
+               $xkimg = $ximg * $this->k;
+               if (!$alt) {
+                       // only non-alternative immages will be set
+                       $this->_out(sprintf('q %F 0 0 %F %F %F cm /I%u Do Q', ($w * $this->k), ($h * $this->k), $xkimg, (($this->h - ($y + $h)) * $this->k), $info['i']));
+               }
+               if (!empty($border)) {
+                       $bx = $this->x;
+                       $by = $this->y;
+                       $this->x = $ximg;
+                       if ($this->rtl) {
+                               $this->x += $w;
+                       }
+                       $this->y = $y;
+                       $this->Cell($w, $h, '', $border, 0, '', 0, '', 0, true);
+                       $this->x = $bx;
+                       $this->y = $by;
+               }
+               if ($link) {
+                       $this->Link($ximg, $y, $w, $h, $link, 0);
+               }
+               // set pointer to align the next text/objects
+               switch($align) {
+                       case 'T': {
+                               $this->y = $y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'M': {
+                               $this->y = $y + round($h/2);
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'B': {
+                               $this->y = $this->img_rb_y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'N': {
+                               $this->SetY($this->img_rb_y);
+                               break;
+                       }
+                       default:{
+                               break;
+                       }
+               }
+               $this->endlinex = $this->img_rb_x;
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['images'][] = $info['i'];
+               }
+               return $info['i'];
+       }
+
+       /**
+        * Extract info from a PNG image with alpha channel using the Imagick or GD library.
+        * @param $file (string) Name of the file containing the image.
+        * @param $x (float) Abscissa of the upper-left corner.
+        * @param $y (float) Ordinate of the upper-left corner.
+        * @param $wpx (float) Original width of the image in pixels.
+        * @param $hpx (float) original height of the image in pixels.
+        * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $type (string) Image format. Possible values are (case insensitive): JPEG and PNG (whitout GD library) and all images supported by GD: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM;. If not specified, the type is inferred from the file extension.
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
+        * @param $resize (boolean) If true resize (reduce) the image to fit $w and $h (requires GD library).
+        * @param $dpi (int) dot-per-inch resolution used on resize
+        * @param $palign (string) Allows to center or align the image on the current line. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @param $filehash (string) File hash used to build unique file names.
+        * @author Nicola Asuni
+        * @protected
+        * @since 4.3.007 (2008-12-04)
+        * @see Image()
+        */
+       protected function ImagePngAlpha($file, $x, $y, $wpx, $hpx, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $filehash='') {
+               // create temp images
+               if (empty($filehash)) {
+                       $filehash = md5($this->file_id.$file);
+               }
+               // create temp image file (without alpha channel)
+               $tempfile_plain = K_PATH_CACHE.'__tcpdf_imgmask_plain_'.$filehash;
+               // create temp alpha file
+               $tempfile_alpha = K_PATH_CACHE.'__tcpdf_imgmask_alpha_'.$filehash;
+               $parsed = false;
+               $parse_error = '';
+               // ImageMagick extension
+               if (($parsed === false) AND extension_loaded('imagick')) {
+                       try {
+                               // ImageMagick library
+                               $img = new Imagick();
+                               $img->readImage($file);
+                               // clone image object
+                               $imga = TCPDF_STATIC::objclone($img);
+                               // extract alpha channel
+                               if (method_exists($img, 'setImageAlphaChannel') AND defined('Imagick::ALPHACHANNEL_EXTRACT')) {
+                                       $img->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT);
+                               } else {
+                                       $img->separateImageChannel(8); // 8 = (imagick::CHANNEL_ALPHA | imagick::CHANNEL_OPACITY | imagick::CHANNEL_MATTE);
+                                       $img->negateImage(true);
+                               }
+                               $img->setImageFormat('png');
+                               $img->writeImage($tempfile_alpha);
+                               // remove alpha channel
+                               if (method_exists($imga, 'setImageMatte')) {
+                                       $imga->setImageMatte(false);
+                               } else {
+                                       $imga->separateImageChannel(39); // 39 = (imagick::CHANNEL_ALL & ~(imagick::CHANNEL_ALPHA | imagick::CHANNEL_OPACITY | imagick::CHANNEL_MATTE));
+                               }
+                               $imga->setImageFormat('png');
+                               $imga->writeImage($tempfile_plain);
+                               $parsed = true;
+                       } catch (Exception $e) {
+                               // Imagemagick fails, try with GD
+                               $parse_error = 'Imagick library error: '.$e->getMessage();
+                       }
+               }
+               // GD extension
+               if (($parsed === false) AND function_exists('imagecreatefrompng')) {
+                       try {
+                               // generate images
+                               $img = imagecreatefrompng($file);
+                               $imgalpha = imagecreate($wpx, $hpx);
+                               // generate gray scale palette (0 -> 255)
+                               for ($c = 0; $c < 256; ++$c) {
+                                       ImageColorAllocate($imgalpha, $c, $c, $c);
+                               }
+                               // extract alpha channel
+                               for ($xpx = 0; $xpx < $wpx; ++$xpx) {
+                                       for ($ypx = 0; $ypx < $hpx; ++$ypx) {
+                                               $color = imagecolorat($img, $xpx, $ypx);
+                                               // get and correct gamma color
+                                               $alpha = $this->getGDgamma($img, $color);
+                                               imagesetpixel($imgalpha, $xpx, $ypx, $alpha);
+                                       }
+                               }
+                               imagepng($imgalpha, $tempfile_alpha);
+                               imagedestroy($imgalpha);
+                               // extract image without alpha channel
+                               $imgplain = imagecreatetruecolor($wpx, $hpx);
+                               imagecopy($imgplain, $img, 0, 0, 0, 0, $wpx, $hpx);
+                               imagepng($imgplain, $tempfile_plain);
+                               imagedestroy($imgplain);
+                               $parsed = true;
+                       } catch (Exception $e) {
+                               // GD fails
+                               $parse_error = 'GD library error: '.$e->getMessage();
+                       }
+               }
+               if ($parsed === false) {
+                       if (empty($parse_error)) {
+                               $this->Error('TCPDF requires the Imagick or GD extension to handle PNG images with alpha channel.');
+                       } else {
+                               $this->Error($parse_error);
+                       }
+               }
+               // embed mask image
+               $imgmask = $this->Image($tempfile_alpha, $x, $y, $w, $h, 'PNG', '', '', $resize, $dpi, '', true, false);
+               // embed image, masked with previously embedded mask
+               $this->Image($tempfile_plain, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, false, $imgmask);
+               // remove temp files
+               unlink($tempfile_alpha);
+               unlink($tempfile_plain);
+       }
+
+       /**
+        * Get the GD-corrected PNG gamma value from alpha color
+        * @param $img (int) GD image Resource ID.
+        * @param $c (int) alpha color
+        * @protected
+        * @since 4.3.007 (2008-12-04)
+        */
+       protected function getGDgamma($img, $c) {
+               if (!isset($this->gdgammacache['#'.$c])) {
+                       $colors = imagecolorsforindex($img, $c);
+                       // GD alpha is only 7 bit (0 -> 127)
+                       $this->gdgammacache['#'.$c] = (((127 - $colors['alpha']) / 127) * 255);
+                       // correct gamma
+                       $this->gdgammacache['#'.$c] = (pow(($this->gdgammacache['#'.$c] / 255), 2.2) * 255);
+                       // store the latest values on cache to improve performances
+                       if (count($this->gdgammacache) > 8) {
+                               // remove one element from the cache array
+                               array_shift($this->gdgammacache);
+                       }
+               }
+               return $this->gdgammacache['#'.$c];
+       }
+
+       /**
+        * Performs a line break.
+        * The current abscissa goes back to the left margin and the ordinate increases by the amount passed in parameter.
+        * @param $h (float) The height of the break. By default, the value equals the height of the last printed cell.
+        * @param $cell (boolean) if true add the current left (or right o for RTL) padding to the X coordinate
+        * @public
+        * @since 1.0
+        * @see Cell()
+        */
+       public function Ln($h='', $cell=false) {
+               if (($this->num_columns > 1) AND ($this->y == $this->columns[$this->current_column]['y']) AND isset($this->columns[$this->current_column]['x']) AND ($this->x == $this->columns[$this->current_column]['x'])) {
+                       // revove vertical space from the top of the column
+                       return;
+               }
+               if ($cell) {
+                       if ($this->rtl) {
+                               $cellpadding = $this->cell_padding['R'];
+                       } else {
+                               $cellpadding = $this->cell_padding['L'];
+                       }
+               } else {
+                       $cellpadding = 0;
+               }
+               if ($this->rtl) {
+                       $this->x = $this->w - $this->rMargin - $cellpadding;
+               } else {
+                       $this->x = $this->lMargin + $cellpadding;
+               }
+               if (is_string($h)) {
+                       $this->y += $this->lasth;
+               } else {
+                       $this->y += $h;
+               }
+               $this->newline = true;
+       }
+
+       /**
+        * Returns the relative X value of current position.
+        * The value is relative to the left border for LTR languages and to the right border for RTL languages.
+        * @return float
+        * @public
+        * @since 1.2
+        * @see SetX(), GetY(), SetY()
+        */
+       public function GetX() {
+               //Get x position
+               if ($this->rtl) {
+                       return ($this->w - $this->x);
+               } else {
+                       return $this->x;
+               }
+       }
+
+       /**
+        * Returns the absolute X value of current position.
+        * @return float
+        * @public
+        * @since 1.2
+        * @see SetX(), GetY(), SetY()
+        */
+       public function GetAbsX() {
+               return $this->x;
+       }
+
+       /**
+        * Returns the ordinate of the current position.
+        * @return float
+        * @public
+        * @since 1.0
+        * @see SetY(), GetX(), SetX()
+        */
+       public function GetY() {
+               return $this->y;
+       }
+
+       /**
+        * Defines the abscissa of the current position.
+        * If the passed value is negative, it is relative to the right of the page (or left if language is RTL).
+        * @param $x (float) The value of the abscissa in user units.
+        * @param $rtloff (boolean) if true always uses the page top-left corner as origin of axis.
+        * @public
+        * @since 1.2
+        * @see GetX(), GetY(), SetY(), SetXY()
+        */
+       public function SetX($x, $rtloff=false) {
+               $x = floatval($x);
+               if (!$rtloff AND $this->rtl) {
+                       if ($x >= 0) {
+                               $this->x = $this->w - $x;
+                       } else {
+                               $this->x = abs($x);
+                       }
+               } else {
+                       if ($x >= 0) {
+                               $this->x = $x;
+                       } else {
+                               $this->x = $this->w + $x;
+                       }
+               }
+               if ($this->x < 0) {
+                       $this->x = 0;
+               }
+               if ($this->x > $this->w) {
+                       $this->x = $this->w;
+               }
+       }
+
+       /**
+        * Moves the current abscissa back to the left margin and sets the ordinate.
+        * If the passed value is negative, it is relative to the bottom of the page.
+        * @param $y (float) The value of the ordinate in user units.
+        * @param $resetx (bool) if true (default) reset the X position.
+        * @param $rtloff (boolean) if true always uses the page top-left corner as origin of axis.
+        * @public
+        * @since 1.0
+        * @see GetX(), GetY(), SetY(), SetXY()
+        */
+       public function SetY($y, $resetx=true, $rtloff=false) {
+               $y = floatval($y);
+               if ($resetx) {
+                       //reset x
+                       if (!$rtloff AND $this->rtl) {
+                               $this->x = $this->w - $this->rMargin;
+                       } else {
+                               $this->x = $this->lMargin;
+                       }
+               }
+               if ($y >= 0) {
+                       $this->y = $y;
+               } else {
+                       $this->y = $this->h + $y;
+               }
+               if ($this->y < 0) {
+                       $this->y = 0;
+               }
+               if ($this->y > $this->h) {
+                       $this->y = $this->h;
+               }
+       }
+
+       /**
+        * Defines the abscissa and ordinate of the current position.
+        * If the passed values are negative, they are relative respectively to the right and bottom of the page.
+        * @param $x (float) The value of the abscissa.
+        * @param $y (float) The value of the ordinate.
+        * @param $rtloff (boolean) if true always uses the page top-left corner as origin of axis.
+        * @public
+        * @since 1.2
+        * @see SetX(), SetY()
+        */
+       public function SetXY($x, $y, $rtloff=false) {
+               $this->SetY($y, false, $rtloff);
+               $this->SetX($x, $rtloff);
+       }
+
+       /**
+        * Set the absolute X coordinate of the current pointer.
+        * @param $x (float) The value of the abscissa in user units.
+        * @public
+        * @since 5.9.186 (2012-09-13)
+        * @see setAbsX(), setAbsY(), SetAbsXY()
+        */
+       public function SetAbsX($x) {
+               $this->x = floatval($x);
+       }
+
+       /**
+        * Set the absolute Y coordinate of the current pointer.
+        * @param $y (float) (float) The value of the ordinate in user units.
+        * @public
+        * @since 5.9.186 (2012-09-13)
+        * @see setAbsX(), setAbsY(), SetAbsXY()
+        */
+       public function SetAbsY($y) {
+               $this->y = floatval($y);
+       }
+
+       /**
+        * Set the absolute X and Y coordinates of the current pointer.
+        * @param $x (float) The value of the abscissa in user units.
+        * @param $y (float) (float) The value of the ordinate in user units.
+        * @public
+        * @since 5.9.186 (2012-09-13)
+        * @see setAbsX(), setAbsY(), SetAbsXY()
+        */
+       public function SetAbsXY($x, $y) {
+               $this->SetAbsX($x);
+               $this->SetAbsY($y);
+       }
+
+       /**
+        * Send the document to a given destination: string, local file or browser.
+        * In the last case, the plug-in may be used (if present) or a download ("Save as" dialog box) may be forced.<br />
+        * The method first calls Close() if necessary to terminate the document.
+        * @param $name (string) The name of the file when saved. Note that special characters are removed and blanks characters are replaced with the underscore character.
+        * @param $dest (string) Destination where to send the document. It can take one of the following values:<ul><li>I: send the file inline to the browser (default). The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.</li><li>D: send to the browser and force a file download with the name given by name.</li><li>F: save to a local server file with the name given by name.</li><li>S: return the document as a string (name is ignored).</li><li>FI: equivalent to F + I option</li><li>FD: equivalent to F + D option</li><li>E: return the document as base64 mime multi-part email attachment (RFC 2045)</li></ul>
+        * @public
+        * @since 1.0
+        * @see Close()
+        */
+       public function Output($name='doc.pdf', $dest='I') {
+               //Output PDF to some destination
+               //Finish document if necessary
+               if ($this->state < 3) {
+                       $this->Close();
+               }
+               //Normalize parameters
+               if (is_bool($dest)) {
+                       $dest = $dest ? 'D' : 'F';
+               }
+               $dest = strtoupper($dest);
+               if ($dest[0] != 'F') {
+                       $name = preg_replace('/[\s]+/', '_', $name);
+                       $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name);
+               }
+               if ($this->sign) {
+                       // *** apply digital signature to the document ***
+                       // get the document content
+                       $pdfdoc = $this->getBuffer();
+                       // remove last newline
+                       $pdfdoc = substr($pdfdoc, 0, -1);
+                       // Remove the original buffer
+                       if (isset($this->diskcache) AND $this->diskcache) {
+                               // remove buffer file from cache
+                               unlink($this->buffer);
+                       }
+                       unset($this->buffer);
+                       // remove filler space
+                       $byterange_string_len = strlen(TCPDF_STATIC::$byterange_string);
+                       // define the ByteRange
+                       $byte_range = array();
+                       $byte_range[0] = 0;
+                       $byte_range[1] = strpos($pdfdoc, TCPDF_STATIC::$byterange_string) + $byterange_string_len + 10;
+                       $byte_range[2] = $byte_range[1] + $this->signature_max_length + 2;
+                       $byte_range[3] = strlen($pdfdoc) - $byte_range[2];
+                       $pdfdoc = substr($pdfdoc, 0, $byte_range[1]).substr($pdfdoc, $byte_range[2]);
+                       // replace the ByteRange
+                       $byterange = sprintf('/ByteRange[0 %u %u %u]', $byte_range[1], $byte_range[2], $byte_range[3]);
+                       $byterange .= str_repeat(' ', ($byterange_string_len - strlen($byterange)));
+                       $pdfdoc = str_replace(TCPDF_STATIC::$byterange_string, $byterange, $pdfdoc);
+                       // write the document to a temporary folder
+                       $tempdoc = TCPDF_STATIC::getObjFilename('doc');
+                       $f = fopen($tempdoc, 'wb');
+                       if (!$f) {
+                               $this->Error('Unable to create temporary file: '.$tempdoc);
+                       }
+                       $pdfdoc_length = strlen($pdfdoc);
+                       fwrite($f, $pdfdoc, $pdfdoc_length);
+                       fclose($f);
+                       // get digital signature via openssl library
+                       $tempsign = TCPDF_STATIC::getObjFilename('sig');
+                       if (empty($this->signature_data['extracerts'])) {
+                               openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED);
+                       } else {
+                               openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED, $this->signature_data['extracerts']);
+                       }
+                       unlink($tempdoc);
+                       // read signature
+                       $signature = file_get_contents($tempsign);
+                       unlink($tempsign);
+                       // extract signature
+                       $signature = substr($signature, $pdfdoc_length);
+                       $signature = substr($signature, (strpos($signature, "%%EOF\n\n------") + 13));
+                       $tmparr = explode("\n\n", $signature);
+                       $signature = $tmparr[1];
+                       unset($tmparr);
+                       // decode signature
+                       $signature = base64_decode(trim($signature));
+                       // add TSA timestamp to signature
+                       $signature = $this->applyTSA($signature);
+                       // convert signature to hex
+                       $signature = current(unpack('H*', $signature));
+                       $signature = str_pad($signature, $this->signature_max_length, '0');
+                       // disable disk caching
+                       $this->diskcache = false;
+                       // Add signature to the document
+                       $this->buffer = substr($pdfdoc, 0, $byte_range[1]).'<'.$signature.'>'.substr($pdfdoc, $byte_range[1]);
+                       $this->bufferlen = strlen($this->buffer);
+               }
+               switch($dest) {
+                       case 'I': {
+                               // Send PDF to the standard output
+                               if (ob_get_contents()) {
+                                       $this->Error('Some data has already been output, can\'t send PDF file');
+                               }
+                               if (php_sapi_name() != 'cli') {
+                                       // send output to a browser
+                                       header('Content-Type: application/pdf');
+                                       if (headers_sent()) {
+                                               $this->Error('Some data has already been output to browser, can\'t send PDF file');
+                                       }
+                                       header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1');
+                                       //header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+                                       header('Pragma: public');
+                                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+                                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                                       header('Content-Disposition: inline; filename="'.basename($name).'"');
+                                       TCPDF_STATIC::sendOutputData($this->getBuffer(), $this->bufferlen);
+                               } else {
+                                       echo $this->getBuffer();
+                               }
+                               break;
+                       }
+                       case 'D': {
+                               // download PDF as file
+                               if (ob_get_contents()) {
+                                       $this->Error('Some data has already been output, can\'t send PDF file');
+                               }
+                               header('Content-Description: File Transfer');
+                               if (headers_sent()) {
+                                       $this->Error('Some data has already been output to browser, can\'t send PDF file');
+                               }
+                               header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1');
+                               //header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+                               header('Pragma: public');
+                               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+                               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                               // force download dialog
+                               if (strpos(php_sapi_name(), 'cgi') === false) {
+                                       header('Content-Type: application/force-download');
+                                       header('Content-Type: application/octet-stream', false);
+                                       header('Content-Type: application/download', false);
+                                       header('Content-Type: application/pdf', false);
+                               } else {
+                                       header('Content-Type: application/pdf');
+                               }
+                               // use the Content-Disposition header to supply a recommended filename
+                               header('Content-Disposition: attachment; filename="'.basename($name).'"');
+                               header('Content-Transfer-Encoding: binary');
+                               TCPDF_STATIC::sendOutputData($this->getBuffer(), $this->bufferlen);
+                               break;
+                       }
+                       case 'F':
+                       case 'FI':
+                       case 'FD': {
+                               // save PDF to a local file
+                               if ($this->diskcache) {
+                                       copy($this->buffer, $name);
+                               } else {
+                                       $f = fopen($name, 'wb');
+                                       if (!$f) {
+                                               $this->Error('Unable to create output file: '.$name);
+                                       }
+                                       fwrite($f, $this->getBuffer(), $this->bufferlen);
+                                       fclose($f);
+                               }
+                               if ($dest == 'FI') {
+                                       // send headers to browser
+                                       header('Content-Type: application/pdf');
+                                       header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1');
+                                       //header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+                                       header('Pragma: public');
+                                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+                                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                                       header('Content-Disposition: inline; filename="'.basename($name).'"');
+                                       TCPDF_STATIC::sendOutputData(file_get_contents($name), filesize($name));
+                               } elseif ($dest == 'FD') {
+                                       // send headers to browser
+                                       if (ob_get_contents()) {
+                                               $this->Error('Some data has already been output, can\'t send PDF file');
+                                       }
+                                       header('Content-Description: File Transfer');
+                                       if (headers_sent()) {
+                                               $this->Error('Some data has already been output to browser, can\'t send PDF file');
+                                       }
+                                       header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1');
+                                       header('Pragma: public');
+                                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+                                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                                       // force download dialog
+                                       if (strpos(php_sapi_name(), 'cgi') === false) {
+                                               header('Content-Type: application/force-download');
+                                               header('Content-Type: application/octet-stream', false);
+                                               header('Content-Type: application/download', false);
+                                               header('Content-Type: application/pdf', false);
+                                       } else {
+                                               header('Content-Type: application/pdf');
+                                       }
+                                       // use the Content-Disposition header to supply a recommended filename
+                                       header('Content-Disposition: attachment; filename="'.basename($name).'"');
+                                       header('Content-Transfer-Encoding: binary');
+                                       TCPDF_STATIC::sendOutputData(file_get_contents($name), filesize($name));
+                               }
+                               break;
+                       }
+                       case 'E': {
+                               // return PDF as base64 mime multi-part email attachment (RFC 2045)
+                               $retval = 'Content-Type: application/pdf;'."\r\n";
+                               $retval .= ' name="'.$name.'"'."\r\n";
+                               $retval .= 'Content-Transfer-Encoding: base64'."\r\n";
+                               $retval .= 'Content-Disposition: attachment;'."\r\n";
+                               $retval .= ' filename="'.$name.'"'."\r\n\r\n";
+                               $retval .= chunk_split(base64_encode($this->getBuffer()), 76, "\r\n");
+                               return $retval;
+                       }
+                       case 'S': {
+                               // returns PDF as a string
+                               return $this->getBuffer();
+                       }
+                       default: {
+                               $this->Error('Incorrect output destination: '.$dest);
+                       }
+               }
+               return '';
+       }
+
+       /**
+        * Unset all class variables except the following critical variables.
+        * @param $destroyall (boolean) if true destroys all class variables, otherwise preserves critical variables.
+        * @param $preserve_objcopy (boolean) if true preserves the objcopy variable
+        * @public
+        * @since 4.5.016 (2009-02-24)
+        */
+       public function _destroy($destroyall=false, $preserve_objcopy=false) {
+               if ($destroyall AND isset($this->diskcache) AND $this->diskcache AND (!$preserve_objcopy) AND (!TCPDF_STATIC::empty_string($this->buffer))) {
+                       // remove buffer file from cache
+                       unlink($this->buffer);
+               }
+               if ($destroyall AND !empty($this->cached_files)) {
+                       // remove cached files
+                       foreach ($this->cached_files as $cachefile) {
+                               if (is_file($cachefile)) {
+                                       unlink($cachefile);
+                               }
+                       }
+                       unset($this->cached_files);
+               }
+               $preserve = array(
+                       'internal_encoding',
+                       'state',
+                       'bufferlen',
+                       'buffer',
+                       'diskcache',
+                       'cached_files',
+                       'sign',
+                       'signature_data',
+                       'signature_max_length',
+                       'byterange_string',
+                       'tsa_timestamp',
+                       'tsa_data'
+               );
+               foreach (array_keys(get_object_vars($this)) as $val) {
+                       if ($destroyall OR !in_array($val, $preserve)) {
+                               if ((!$preserve_objcopy OR ($val != 'objcopy')) AND isset($this->$val)) {
+                                       unset($this->$val);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Check for locale-related bug
+        * @protected
+        */
+       protected function _dochecks() {
+               //Check for locale-related bug
+               if (1.1 == 1) {
+                       $this->Error('Don\'t alter the locale before including class file');
+               }
+               //Check for decimal separator
+               if (sprintf('%.1F', 1.0) != '1.0') {
+                       setlocale(LC_NUMERIC, 'C');
+               }
+       }
+
+       /**
+        * Return an array containing variations for the basic page number alias.
+        * @param $a (string) Base alias.
+        * @return array of page number aliases
+        * @protected
+        */
+       protected function getInternalPageNumberAliases($a= '') {
+               $alias = array();
+               // build array of Unicode + ASCII variants (the order is important)
+               $alias = array('u' => array(), 'a' => array());
+               $u = '{'.$a.'}';
+               $alias['u'][] = TCPDF_STATIC::_escape($u);
+               if ($this->isunicode) {
+                       $alias['u'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::UTF8ToLatin1($u, $this->isunicode, $this->CurrentFont));
+                       $alias['u'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::utf8StrRev($u, false, $this->tmprtl, $this->isunicode, $this->CurrentFont));
+                       $alias['a'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::UTF8ToLatin1($a, $this->isunicode, $this->CurrentFont));
+                       $alias['a'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::utf8StrRev($a, false, $this->tmprtl, $this->isunicode, $this->CurrentFont));
+               }
+               $alias['a'][] = TCPDF_STATIC::_escape($a);
+               return $alias;
+       }
+
+       /**
+        * Return an array containing all internal page aliases.
+        * @return array of page number aliases
+        * @protected
+        */
+       protected function getAllInternalPageNumberAliases() {
+               $basic_alias = array(TCPDF_STATIC::$alias_tot_pages, TCPDF_STATIC::$alias_num_page, TCPDF_STATIC::$alias_group_tot_pages, TCPDF_STATIC::$alias_group_num_page, TCPDF_STATIC::$alias_right_shift);
+               $pnalias = array();
+               foreach($basic_alias as $k => $a) {
+                       $pnalias[$k] = $this->getInternalPageNumberAliases($a);
+               }
+               return $pnalias;
+       }
+
+       /**
+        * Replace right shift page number aliases with spaces to correct right alignment.
+        * This works perfectly only when using monospaced fonts.
+        * @param $page (string) Page content.
+        * @param $aliases (array) Array of page aliases.
+        * @param $diff (int) initial difference to add.
+        * @return replaced page content.
+        * @protected
+        */
+       protected function replaceRightShiftPageNumAliases($page, $aliases, $diff) {
+               foreach ($aliases as $type => $alias) {
+                       foreach ($alias as $a) {
+                               // find position of compensation factor
+                               $startnum = (strpos($a, ':') + 1);
+                               $a = substr($a, 0, $startnum);
+                               if (($pos = strpos($page, $a)) !== false) {
+                                       // end of alias
+                                       $endnum = strpos($page, '}', $pos);
+                                       // string to be replaced
+                                       $aa = substr($page, $pos, ($endnum - $pos + 1));
+                                       // get compensation factor
+                                       $ratio = substr($page, ($pos + $startnum), ($endnum - $pos - $startnum));
+                                       $ratio = preg_replace('/[^0-9\.]/', '', $ratio);
+                                       $ratio = floatval($ratio);
+                                       if ($type == 'u') {
+                                               $chrdiff = floor(($diff + 12) * $ratio);
+                                               $shift = str_repeat(' ', $chrdiff);
+                                               $shift = TCPDF_FONTS::UTF8ToUTF16BE($shift, false, $this->isunicode, $this->CurrentFont);
+                                       } else {
+                                               $chrdiff = floor(($diff + 11) * $ratio);
+                                               $shift = str_repeat(' ', $chrdiff);
+                                       }
+                                       $page = str_replace($aa, $shift, $page);
+                               }
+                       }
+               }
+               return $page;
+       }
+
+       /**
+        * Set page boxes to be included on page descriptions.
+        * @param $boxes (array) Array of page boxes to set on document: ('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox').
+        * @protected
+        */
+       protected function setPageBoxTypes($boxes) {
+               $this->page_boxes = array();
+               foreach ($boxes as $box) {
+                       if (in_array($box, TCPDF_STATIC::$pageboxes)) {
+                               $this->page_boxes[] = $box;
+                       }
+               }
+       }
+
+       /**
+        * Output pages (and replace page number aliases).
+        * @protected
+        */
+       protected function _putpages() {
+               $filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
+               // get internal aliases for page numbers
+               $pnalias = $this->getAllInternalPageNumberAliases();
+               $num_pages = $this->numpages;
+               $ptpa = TCPDF_STATIC::formatPageNumber(($this->starting_page_number + $num_pages - 1));
+               $ptpu = TCPDF_FONTS::UTF8ToUTF16BE($ptpa, false, $this->isunicode, $this->CurrentFont);
+               $ptp_num_chars = $this->GetNumChars($ptpa);
+               $pagegroupnum = 0;
+               $groupnum = 0;
+               $ptgu = 1;
+               $ptga = 1;
+               $ptg_num_chars = 1;
+               for ($n = 1; $n <= $num_pages; ++$n) {
+                       // get current page
+                       $temppage = $this->getPageBuffer($n);
+                       $pagelen = strlen($temppage);
+                       // set replacements for total pages number
+                       $pnpa = TCPDF_STATIC::formatPageNumber(($this->starting_page_number + $n - 1));
+                       $pnpu = TCPDF_FONTS::UTF8ToUTF16BE($pnpa, false, $this->isunicode, $this->CurrentFont);
+                       $pnp_num_chars = $this->GetNumChars($pnpa);
+                       $pdiff = 0; // difference used for right shift alignment of page numbers
+                       $gdiff = 0; // difference used for right shift alignment of page group numbers
+                       if (!empty($this->pagegroups)) {
+                               if (isset($this->newpagegroup[$n])) {
+                                       $pagegroupnum = 0;
+                                       ++$groupnum;
+                                       $ptga = TCPDF_STATIC::formatPageNumber($this->pagegroups[$groupnum]);
+                                       $ptgu = TCPDF_FONTS::UTF8ToUTF16BE($ptga, false, $this->isunicode, $this->CurrentFont);
+                                       $ptg_num_chars = $this->GetNumChars($ptga);
+                               }
+                               ++$pagegroupnum;
+                               $pnga = TCPDF_STATIC::formatPageNumber($pagegroupnum);
+                               $pngu = TCPDF_FONTS::UTF8ToUTF16BE($pnga, false, $this->isunicode, $this->CurrentFont);
+                               $png_num_chars = $this->GetNumChars($pnga);
+                               // replace page numbers
+                               $replace = array();
+                               $replace[] = array($ptgu, $ptg_num_chars, 9, $pnalias[2]['u']);
+                               $replace[] = array($ptga, $ptg_num_chars, 7, $pnalias[2]['a']);
+                               $replace[] = array($pngu, $png_num_chars, 9, $pnalias[3]['u']);
+                               $replace[] = array($pnga, $png_num_chars, 7, $pnalias[3]['a']);
+                               list($temppage, $gdiff) = TCPDF_STATIC::replacePageNumAliases($temppage, $replace, $gdiff);
+                       }
+                       // replace page numbers
+                       $replace = array();
+                       $replace[] = array($ptpu, $ptp_num_chars, 9, $pnalias[0]['u']);
+                       $replace[] = array($ptpa, $ptp_num_chars, 7, $pnalias[0]['a']);
+                       $replace[] = array($pnpu, $pnp_num_chars, 9, $pnalias[1]['u']);
+                       $replace[] = array($pnpa, $pnp_num_chars, 7, $pnalias[1]['a']);
+                       list($temppage, $pdiff) = TCPDF_STATIC::replacePageNumAliases($temppage, $replace, $pdiff);
+                       // replace right shift alias
+                       $temppage = $this->replaceRightShiftPageNumAliases($temppage, $pnalias[4], max($pdiff, $gdiff));
+                       // replace EPS marker
+                       $temppage = str_replace($this->epsmarker, '', $temppage);
+                       //Page
+                       $this->page_obj_id[$n] = $this->_newobj();
+                       $out = '<<';
+                       $out .= ' /Type /Page';
+                       $out .= ' /Parent 1 0 R';
+                       if (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A')) {
+                               $out .= ' /LastModified '.$this->_datestring(0, $this->doc_modification_timestamp);
+                       }
+                       $out .= ' /Resources 2 0 R';
+                       foreach ($this->page_boxes as $box) {
+                               $out .= ' /'.$box;
+                               $out .= sprintf(' [%F %F %F %F]', $this->pagedim[$n][$box]['llx'], $this->pagedim[$n][$box]['lly'], $this->pagedim[$n][$box]['urx'], $this->pagedim[$n][$box]['ury']);
+                       }
+                       if (isset($this->pagedim[$n]['BoxColorInfo']) AND !empty($this->pagedim[$n]['BoxColorInfo'])) {
+                               $out .= ' /BoxColorInfo <<';
+                               foreach ($this->page_boxes as $box) {
+                                       if (isset($this->pagedim[$n]['BoxColorInfo'][$box])) {
+                                               $out .= ' /'.$box.' <<';
+                                               if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['C'])) {
+                                                       $color = $this->pagedim[$n]['BoxColorInfo'][$box]['C'];
+                                                       $out .= ' /C [';
+                                                       $out .= sprintf(' %F %F %F', ($color[0] / 255), ($color[1] / 255), ($color[2] / 255));
+                                                       $out .= ' ]';
+                                               }
+                                               if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['W'])) {
+                                                       $out .= ' /W '.($this->pagedim[$n]['BoxColorInfo'][$box]['W'] * $this->k);
+                                               }
+                                               if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['S'])) {
+                                                       $out .= ' /S /'.$this->pagedim[$n]['BoxColorInfo'][$box]['S'];
+                                               }
+                                               if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['D'])) {
+                                                       $dashes = $this->pagedim[$n]['BoxColorInfo'][$box]['D'];
+                                                       $out .= ' /D [';
+                                                       foreach ($dashes as $dash) {
+                                                               $out .= sprintf(' %F', ($dash * $this->k));
+                                                       }
+                                                       $out .= ' ]';
+                                               }
+                                               $out .= ' >>';
+                                       }
+                               }
+                               $out .= ' >>';
+                       }
+                       $out .= ' /Contents '.($this->n + 1).' 0 R';
+                       $out .= ' /Rotate '.$this->pagedim[$n]['Rotate'];
+                       if (!$this->pdfa_mode) {
+                               $out .= ' /Group << /Type /Group /S /Transparency /CS /DeviceRGB >>';
+                       }
+                       if (isset($this->pagedim[$n]['trans']) AND !empty($this->pagedim[$n]['trans'])) {
+                               // page transitions
+                               if (isset($this->pagedim[$n]['trans']['Dur'])) {
+                                       $out .= ' /Dur '.$this->pagedim[$n]['trans']['Dur'];
+                               }
+                               $out .= ' /Trans <<';
+                               $out .= ' /Type /Trans';
+                               if (isset($this->pagedim[$n]['trans']['S'])) {
+                                       $out .= ' /S /'.$this->pagedim[$n]['trans']['S'];
+                               }
+                               if (isset($this->pagedim[$n]['trans']['D'])) {
+                                       $out .= ' /D '.$this->pagedim[$n]['trans']['D'];
+                               }
+                               if (isset($this->pagedim[$n]['trans']['Dm'])) {
+                                       $out .= ' /Dm /'.$this->pagedim[$n]['trans']['Dm'];
+                               }
+                               if (isset($this->pagedim[$n]['trans']['M'])) {
+                                       $out .= ' /M /'.$this->pagedim[$n]['trans']['M'];
+                               }
+                               if (isset($this->pagedim[$n]['trans']['Di'])) {
+                                       $out .= ' /Di '.$this->pagedim[$n]['trans']['Di'];
+                               }
+                               if (isset($this->pagedim[$n]['trans']['SS'])) {
+                                       $out .= ' /SS '.$this->pagedim[$n]['trans']['SS'];
+                               }
+                               if (isset($this->pagedim[$n]['trans']['B'])) {
+                                       $out .= ' /B '.$this->pagedim[$n]['trans']['B'];
+                               }
+                               $out .= ' >>';
+                       }
+                       $out .= $this->_getannotsrefs($n);
+                       $out .= ' /PZ '.$this->pagedim[$n]['PZ'];
+                       $out .= ' >>';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+                       //Page content
+                       $p = ($this->compress) ? gzcompress($temppage) : $temppage;
+                       $this->_newobj();
+                       $p = $this->_getrawstream($p);
+                       $this->_out('<<'.$filter.'/Length '.strlen($p).'>> stream'."\n".$p."\n".'endstream'."\n".'endobj');
+                       if ($this->diskcache) {
+                               // remove temporary files
+                               unlink($this->pages[$n]);
+                       }
+               }
+               //Pages root
+               $out = $this->_getobj(1)."\n";
+               $out .= '<< /Type /Pages /Kids [';
+               foreach($this->page_obj_id as $page_obj) {
+                       $out .= ' '.$page_obj.' 0 R';
+               }
+               $out .= ' ] /Count '.$num_pages.' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+       }
+
+       /**
+        * Output references to page annotations
+        * @param $n (int) page number
+        * @protected
+        * @author Nicola Asuni
+        * @since 4.7.000 (2008-08-29)
+        * @deprecated
+        */
+       protected function _putannotsrefs($n) {
+               $this->_out($this->_getannotsrefs($n));
+       }
+
+       /**
+        * Get references to page annotations.
+        * @param $n (int) page number
+        * @return string
+        * @protected
+        * @author Nicola Asuni
+        * @since 5.0.010 (2010-05-17)
+        */
+       protected function _getannotsrefs($n) {
+               if (!(isset($this->PageAnnots[$n]) OR ($this->sign AND isset($this->signature_data['cert_type'])))) {
+                       return '';
+               }
+               $out = ' /Annots [';
+               if (isset($this->PageAnnots[$n])) {
+                       foreach ($this->PageAnnots[$n] as $key => $val) {
+                               if (!in_array($val['n'], $this->radio_groups)) {
+                                       $out .= ' '.$val['n'].' 0 R';
+                               }
+                       }
+                       // add radiobutton groups
+                       if (isset($this->radiobutton_groups[$n])) {
+                               foreach ($this->radiobutton_groups[$n] as $key => $data) {
+                                       if (isset($data['n'])) {
+                                               $out .= ' '.$data['n'].' 0 R';
+                                       }
+                               }
+                       }
+               }
+               if ($this->sign AND ($n == $this->signature_appearance['page']) AND isset($this->signature_data['cert_type'])) {
+                       // set reference for signature object
+                       $out .= ' '.$this->sig_obj_id.' 0 R';
+               }
+               if (!empty($this->empty_signature_appearance)) {
+                       foreach ($this->empty_signature_appearance as $esa) {
+                               if ($esa['page'] == $n) {
+                                       // set reference for empty signature objects
+                                       $out .= ' '.$esa['objid'].' 0 R';
+                               }
+                       }
+               }
+               $out .= ' ]';
+               return $out;
+       }
+
+       /**
+        * Output annotations objects for all pages.
+        * !!! THIS METHOD IS NOT YET COMPLETED !!!
+        * See section 12.5 of PDF 32000_2008 reference.
+        * @protected
+        * @author Nicola Asuni
+        * @since 4.0.018 (2008-08-06)
+        */
+       protected function _putannotsobjs() {
+               // reset object counter
+               for ($n=1; $n <= $this->numpages; ++$n) {
+                       if (isset($this->PageAnnots[$n])) {
+                               // set page annotations
+                               foreach ($this->PageAnnots[$n] as $key => $pl) {
+                                       $annot_obj_id = $this->PageAnnots[$n][$key]['n'];
+                                       // create annotation object for grouping radiobuttons
+                                       if (isset($this->radiobutton_groups[$n][$pl['txt']]) AND is_array($this->radiobutton_groups[$n][$pl['txt']])) {
+                                               $radio_button_obj_id = $this->radiobutton_groups[$n][$pl['txt']]['n'];
+                                               $annots = '<<';
+                                               $annots .= ' /Type /Annot';
+                                               $annots .= ' /Subtype /Widget';
+                                               $annots .= ' /Rect [0 0 0 0]';
+                                               if ($this->radiobutton_groups[$n][$pl['txt']]['#readonly#']) {
+                                                       // read only
+                                                       $annots .= ' /F 68';
+                                                       $annots .= ' /Ff 49153';
+                                               } else {
+                                                       $annots .= ' /F 4'; // default print for PDF/A
+                                                       $annots .= ' /Ff 49152';
+                                               }
+                                               $annots .= ' /T '.$this->_datastring($pl['txt'], $radio_button_obj_id);
+                                               if (isset($pl['opt']['tu']) AND is_string($pl['opt']['tu'])) {
+                                                       $annots .= ' /TU '.$this->_datastring($pl['opt']['tu'], $radio_button_obj_id);
+                                               }
+                                               $annots .= ' /FT /Btn';
+                                               $annots .= ' /Kids [';
+                                               $defval = '';
+                                               foreach ($this->radiobutton_groups[$n][$pl['txt']] as $key => $data) {
+                                                       if (isset($data['kid'])) {
+                                                               $annots .= ' '.$data['kid'].' 0 R';
+                                                               if ($data['def'] !== 'Off') {
+                                                                       $defval = $data['def'];
+                                                               }
+                                                       }
+                                               }
+                                               $annots .= ' ]';
+                                               if (!empty($defval)) {
+                                                       $annots .= ' /V /'.$defval;
+                                               }
+                                               $annots .= ' >>';
+                                               $this->_out($this->_getobj($radio_button_obj_id)."\n".$annots."\n".'endobj');
+                                               $this->form_obj_id[] = $radio_button_obj_id;
+                                               // store object id to be used on Parent entry of Kids
+                                               $this->radiobutton_groups[$n][$pl['txt']] = $radio_button_obj_id;
+                                       }
+                                       $formfield = false;
+                                       $pl['opt'] = array_change_key_case($pl['opt'], CASE_LOWER);
+                                       $a = $pl['x'] * $this->k;
+                                       $b = $this->pagedim[$n]['h'] - (($pl['y'] + $pl['h']) * $this->k);
+                                       $c = $pl['w'] * $this->k;
+                                       $d = $pl['h'] * $this->k;
+                                       $rect = sprintf('%F %F %F %F', $a, $b, $a+$c, $b+$d);
+                                       // create new annotation object
+                                       $annots = '<</Type /Annot';
+                                       $annots .= ' /Subtype /'.$pl['opt']['subtype'];
+                                       $annots .= ' /Rect ['.$rect.']';
+                                       $ft = array('Btn', 'Tx', 'Ch', 'Sig');
+                                       if (isset($pl['opt']['ft']) AND in_array($pl['opt']['ft'], $ft)) {
+                                               $annots .= ' /FT /'.$pl['opt']['ft'];
+                                               $formfield = true;
+                                       }
+                                       $annots .= ' /Contents '.$this->_textstring($pl['txt'], $annot_obj_id);
+                                       $annots .= ' /P '.$this->page_obj_id[$n].' 0 R';
+                                       $annots .= ' /NM '.$this->_datastring(sprintf('%04u-%04u', $n, $key), $annot_obj_id);
+                                       $annots .= ' /M '.$this->_datestring($annot_obj_id, $this->doc_modification_timestamp);
+                                       if (isset($pl['opt']['f'])) {
+                                               $fval = 0;
+                                               if (is_array($pl['opt']['f'])) {
+                                                       foreach ($pl['opt']['f'] as $f) {
+                                                               switch (strtolower($f)) {
+                                                                       case 'invisible': {
+                                                                               $fval += 1 << 0;
+                                                                               break;
+                                                                       }
+                                                                       case 'hidden': {
+                                                                               $fval += 1 << 1;
+                                                                               break;
+                                                                       }
+                                                                       case 'print': {
+                                                                               $fval += 1 << 2;
+                                                                               break;
+                                                                       }
+                                                                       case 'nozoom': {
+                                                                               $fval += 1 << 3;
+                                                                               break;
+                                                                       }
+                                                                       case 'norotate': {
+                                                                               $fval += 1 << 4;
+                                                                               break;
+                                                                       }
+                                                                       case 'noview': {
+                                                                               $fval += 1 << 5;
+                                                                               break;
+                                                                       }
+                                                                       case 'readonly': {
+                                                                               $fval += 1 << 6;
+                                                                               break;
+                                                                       }
+                                                                       case 'locked': {
+                                                                               $fval += 1 << 8;
+                                                                               break;
+                                                                       }
+                                                                       case 'togglenoview': {
+                                                                               $fval += 1 << 9;
+                                                                               break;
+                                                                       }
+                                                                       case 'lockedcontents': {
+                                                                               $fval += 1 << 10;
+                                                                               break;
+                                                                       }
+                                                                       default: {
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                               } else {
+                                                       $fval = intval($pl['opt']['f']);
+                                               }
+                                       } else {
+                                               $fval = 4;
+                                       }
+                                       if ($this->pdfa_mode) {
+                                               // force print flag for PDF/A mode
+                                               $fval |= 4;
+                                       }
+                                       $annots .= ' /F '.intval($fval);
+                                       if (isset($pl['opt']['as']) AND is_string($pl['opt']['as'])) {
+                                               $annots .= ' /AS /'.$pl['opt']['as'];
+                                       }
+                                       if (isset($pl['opt']['ap'])) {
+                                               // appearance stream
+                                               $annots .= ' /AP <<';
+                                               if (is_array($pl['opt']['ap'])) {
+                                                       foreach ($pl['opt']['ap'] as $apmode => $apdef) {
+                                                               // $apmode can be: n = normal; r = rollover; d = down;
+                                                               $annots .= ' /'.strtoupper($apmode);
+                                                               if (is_array($apdef)) {
+                                                                       $annots .= ' <<';
+                                                                       foreach ($apdef as $apstate => $stream) {
+                                                                               // reference to XObject that define the appearance for this mode-state
+                                                                               $apsobjid = $this->_putAPXObject($c, $d, $stream);
+                                                                               $annots .= ' /'.$apstate.' '.$apsobjid.' 0 R';
+                                                                       }
+                                                                       $annots .= ' >>';
+                                                               } else {
+                                                                       // reference to XObject that define the appearance for this mode
+                                                                       $apsobjid = $this->_putAPXObject($c, $d, $apdef);
+                                                                       $annots .= ' '.$apsobjid.' 0 R';
+                                                               }
+                                                       }
+                                               } else {
+                                                       $annots .= $pl['opt']['ap'];
+                                               }
+                                               $annots .= ' >>';
+                                       }
+                                       if (isset($pl['opt']['bs']) AND (is_array($pl['opt']['bs']))) {
+                                               $annots .= ' /BS <<';
+                                               $annots .= ' /Type /Border';
+                                               if (isset($pl['opt']['bs']['w'])) {
+                                                       $annots .= ' /W '.intval($pl['opt']['bs']['w']);
+                                               }
+                                               $bstyles = array('S', 'D', 'B', 'I', 'U');
+                                               if (isset($pl['opt']['bs']['s']) AND in_array($pl['opt']['bs']['s'], $bstyles)) {
+                                                       $annots .= ' /S /'.$pl['opt']['bs']['s'];
+                                               }
+                                               if (isset($pl['opt']['bs']['d']) AND (is_array($pl['opt']['bs']['d']))) {
+                                                       $annots .= ' /D [';
+                                                       foreach ($pl['opt']['bs']['d'] as $cord) {
+                                                               $annots .= ' '.intval($cord);
+                                                       }
+                                                       $annots .= ']';
+                                               }
+                                               $annots .= ' >>';
+                                       } else {
+                                               $annots .= ' /Border [';
+                                               if (isset($pl['opt']['border']) AND (count($pl['opt']['border']) >= 3)) {
+                                                       $annots .= intval($pl['opt']['border'][0]).' ';
+                                                       $annots .= intval($pl['opt']['border'][1]).' ';
+                                                       $annots .= intval($pl['opt']['border'][2]);
+                                                       if (isset($pl['opt']['border'][3]) AND is_array($pl['opt']['border'][3])) {
+                                                               $annots .= ' [';
+                                                               foreach ($pl['opt']['border'][3] as $dash) {
+                                                                       $annots .= intval($dash).' ';
+                                                               }
+                                                               $annots .= ']';
+                                                       }
+                                               } else {
+                                                       $annots .= '0 0 0';
+                                               }
+                                               $annots .= ']';
+                                       }
+                                       if (isset($pl['opt']['be']) AND (is_array($pl['opt']['be']))) {
+                                               $annots .= ' /BE <<';
+                                               $bstyles = array('S', 'C');
+                                               if (isset($pl['opt']['be']['s']) AND in_array($pl['opt']['be']['s'], $bstyles)) {
+                                                       $annots .= ' /S /'.$pl['opt']['bs']['s'];
+                                               } else {
+                                                       $annots .= ' /S /S';
+                                               }
+                                               if (isset($pl['opt']['be']['i']) AND ($pl['opt']['be']['i'] >= 0) AND ($pl['opt']['be']['i'] <= 2)) {
+                                                       $annots .= ' /I '.sprintf(' %F', $pl['opt']['be']['i']);
+                                               }
+                                               $annots .= '>>';
+                                       }
+                                       if (isset($pl['opt']['c']) AND (is_array($pl['opt']['c'])) AND !empty($pl['opt']['c'])) {
+                                               $annots .= ' /C '.TCPDF_COLORS::getColorStringFromArray($pl['opt']['c']);
+                                       }
+                                       //$annots .= ' /StructParent ';
+                                       //$annots .= ' /OC ';
+                                       $markups = array('text', 'freetext', 'line', 'square', 'circle', 'polygon', 'polyline', 'highlight', 'underline', 'squiggly', 'strikeout', 'stamp', 'caret', 'ink', 'fileattachment', 'sound');
+                                       if (in_array(strtolower($pl['opt']['subtype']), $markups)) {
+                                               // this is a markup type
+                                               if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) {
+                                                       $annots .= ' /T '.$this->_textstring($pl['opt']['t'], $annot_obj_id);
+                                               }
+                                               //$annots .= ' /Popup ';
+                                               if (isset($pl['opt']['ca'])) {
+                                                       $annots .= ' /CA '.sprintf('%F', floatval($pl['opt']['ca']));
+                                               }
+                                               if (isset($pl['opt']['rc'])) {
+                                                       $annots .= ' /RC '.$this->_textstring($pl['opt']['rc'], $annot_obj_id);
+                                               }
+                                               $annots .= ' /CreationDate '.$this->_datestring($annot_obj_id, $this->doc_creation_timestamp);
+                                               //$annots .= ' /IRT ';
+                                               if (isset($pl['opt']['subj'])) {
+                                                       $annots .= ' /Subj '.$this->_textstring($pl['opt']['subj'], $annot_obj_id);
+                                               }
+                                               //$annots .= ' /RT ';
+                                               //$annots .= ' /IT ';
+                                               //$annots .= ' /ExData ';
+                                       }
+                                       $lineendings = array('Square', 'Circle', 'Diamond', 'OpenArrow', 'ClosedArrow', 'None', 'Butt', 'ROpenArrow', 'RClosedArrow', 'Slash');
+                                       // Annotation types
+                                       switch (strtolower($pl['opt']['subtype'])) {
+                                               case 'text': {
+                                                       if (isset($pl['opt']['open'])) {
+                                                               $annots .= ' /Open '. (strtolower($pl['opt']['open']) == 'true' ? 'true' : 'false');
+                                                       }
+                                                       $iconsapp = array('Comment', 'Help', 'Insert', 'Key', 'NewParagraph', 'Note', 'Paragraph');
+                                                       if (isset($pl['opt']['name']) AND in_array($pl['opt']['name'], $iconsapp)) {
+                                                               $annots .= ' /Name /'.$pl['opt']['name'];
+                                                       } else {
+                                                               $annots .= ' /Name /Note';
+                                                       }
+                                                       $statemodels = array('Marked', 'Review');
+                                                       if (isset($pl['opt']['statemodel']) AND in_array($pl['opt']['statemodel'], $statemodels)) {
+                                                               $annots .= ' /StateModel /'.$pl['opt']['statemodel'];
+                                                       } else {
+                                                               $pl['opt']['statemodel'] = 'Marked';
+                                                               $annots .= ' /StateModel /'.$pl['opt']['statemodel'];
+                                                       }
+                                                       if ($pl['opt']['statemodel'] == 'Marked') {
+                                                               $states = array('Accepted', 'Unmarked');
+                                                       } else {
+                                                               $states = array('Accepted', 'Rejected', 'Cancelled', 'Completed', 'None');
+                                                       }
+                                                       if (isset($pl['opt']['state']) AND in_array($pl['opt']['state'], $states)) {
+                                                               $annots .= ' /State /'.$pl['opt']['state'];
+                                                       } else {
+                                                               if ($pl['opt']['statemodel'] == 'Marked') {
+                                                                       $annots .= ' /State /Unmarked';
+                                                               } else {
+                                                                       $annots .= ' /State /None';
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 'link': {
+                                                       if (is_string($pl['txt'])) {
+                                                               if ($pl['txt'][0] == '#') {
+                                                                       // internal destination
+                                                                       $annots .= ' /Dest /'.TCPDF_STATIC::encodeNameObject(substr($pl['txt'], 1));
+                                                               } elseif ($pl['txt'][0] == '%') {
+                                                                       // embedded PDF file
+                                                                       $filename = basename(substr($pl['txt'], 1));
+                                                                       $annots .= ' /A << /S /GoToE /D [0 /Fit] /NewWindow true /T << /R /C /P '.($n - 1).' /A '.$this->embeddedfiles[$filename]['a'].' >> >>';
+                                                               } elseif ($pl['txt'][0] == '*') {
+                                                                       // embedded generic file
+                                                                       $filename = basename(substr($pl['txt'], 1));
+                                                                       $jsa = 'var D=event.target.doc;var MyData=D.dataObjects;for (var i in MyData) if (MyData[i].path=="'.$filename.'") D.exportDataObject( { cName : MyData[i].name, nLaunch : 2});';
+                                                                       $annots .= ' /A << /S /JavaScript /JS '.$this->_textstring($jsa, $annot_obj_id).'>>';
+                                                               } else {
+                                                                       $parsedUrl = parse_url($pl['txt']);
+                                                                       if (empty($parsedUrl['scheme']) AND (strtolower(substr($parsedUrl['path'], -4)) == '.pdf')) {
+                                                                               // relative link to a PDF file
+                                                                               $dest = '[0 /Fit]'; // default page 0
+                                                                               if (!empty($parsedUrl['fragment'])) {
+                                                                                       // check for named destination
+                                                                                       $tmp = explode('=', $parsedUrl['fragment']);
+                                                                                       $dest = '('.((count($tmp) == 2) ? $tmp[1] : $tmp[0]).')';
+                                                                               }
+                                                                               $annots .= ' /A <</S /GoToR /D '.$dest.' /F '.$this->_datastring($this->unhtmlentities($parsedUrl['path']), $annot_obj_id).' /NewWindow true>>';
+                                                                       } else {
+                                                                               // external URI link
+                                                                               $annots .= ' /A <</S /URI /URI '.$this->_datastring($this->unhtmlentities($pl['txt']), $annot_obj_id).'>>';
+                                                                       }
+                                                               }
+                                                       } elseif (isset($this->links[$pl['txt']])) {
+                                                               // internal link ID
+                                                               $l = $this->links[$pl['txt']];
+                                                               if (isset($this->page_obj_id[($l['p'])])) {
+                                                                       $annots .= sprintf(' /Dest [%u 0 R /XYZ 0 %F null]', $this->page_obj_id[($l['p'])], ($this->pagedim[$l['p']]['h'] - ($l['y'] * $this->k)));
+                                                               }
+                                                       }
+                                                       $hmodes = array('N', 'I', 'O', 'P');
+                                                       if (isset($pl['opt']['h']) AND in_array($pl['opt']['h'], $hmodes)) {
+                                                               $annots .= ' /H /'.$pl['opt']['h'];
+                                                       } else {
+                                                               $annots .= ' /H /I';
+                                                       }
+                                                       //$annots .= ' /PA ';
+                                                       //$annots .= ' /Quadpoints ';
+                                                       break;
+                                               }
+                                               case 'freetext': {
+                                                       if (isset($pl['opt']['da']) AND !empty($pl['opt']['da'])) {
+                                                               $annots .= ' /DA ('.$pl['opt']['da'].')';
+                                                       }
+                                                       if (isset($pl['opt']['q']) AND ($pl['opt']['q'] >= 0) AND ($pl['opt']['q'] <= 2)) {
+                                                               $annots .= ' /Q '.intval($pl['opt']['q']);
+                                                       }
+                                                       if (isset($pl['opt']['rc'])) {
+                                                               $annots .= ' /RC '.$this->_textstring($pl['opt']['rc'], $annot_obj_id);
+                                                       }
+                                                       if (isset($pl['opt']['ds'])) {
+                                                               $annots .= ' /DS '.$this->_textstring($pl['opt']['ds'], $annot_obj_id);
+                                                       }
+                                                       if (isset($pl['opt']['cl']) AND is_array($pl['opt']['cl'])) {
+                                                               $annots .= ' /CL [';
+                                                               foreach ($pl['opt']['cl'] as $cl) {
+                                                                       $annots .= sprintf('%F ', $cl * $this->k);
+                                                               }
+                                                               $annots .= ']';
+                                                       }
+                                                       $tfit = array('FreeText', 'FreeTextCallout', 'FreeTextTypeWriter');
+                                                       if (isset($pl['opt']['it']) AND in_array($pl['opt']['it'], $tfit)) {
+                                                               $annots .= ' /IT /'.$pl['opt']['it'];
+                                                       }
+                                                       if (isset($pl['opt']['rd']) AND is_array($pl['opt']['rd'])) {
+                                                               $l = $pl['opt']['rd'][0] * $this->k;
+                                                               $r = $pl['opt']['rd'][1] * $this->k;
+                                                               $t = $pl['opt']['rd'][2] * $this->k;
+                                                               $b = $pl['opt']['rd'][3] * $this->k;
+                                                               $annots .= ' /RD ['.sprintf('%F %F %F %F', $l, $r, $t, $b).']';
+                                                       }
+                                                       if (isset($pl['opt']['le']) AND in_array($pl['opt']['le'], $lineendings)) {
+                                                               $annots .= ' /LE /'.$pl['opt']['le'];
+                                                       }
+                                                       break;
+                                               }
+                                               case 'line': {
+                                                       break;
+                                               }
+                                               case 'square': {
+                                                       break;
+                                               }
+                                               case 'circle': {
+                                                       break;
+                                               }
+                                               case 'polygon': {
+                                                       break;
+                                               }
+                                               case 'polyline': {
+                                                       break;
+                                               }
+                                               case 'highlight': {
+                                                       break;
+                                               }
+                                               case 'underline': {
+                                                       break;
+                                               }
+                                               case 'squiggly': {
+                                                       break;
+                                               }
+                                               case 'strikeout': {
+                                                       break;
+                                               }
+                                               case 'stamp': {
+                                                       break;
+                                               }
+                                               case 'caret': {
+                                                       break;
+                                               }
+                                               case 'ink': {
+                                                       break;
+                                               }
+                                               case 'popup': {
+                                                       break;
+                                               }
+                                               case 'fileattachment': {
+                                                       if ($this->pdfa_mode) {
+                                                               // embedded files are not allowed in PDF/A mode
+                                                               break;
+                                                       }
+                                                       if (!isset($pl['opt']['fs'])) {
+                                                               break;
+                                                       }
+                                                       $filename = basename($pl['opt']['fs']);
+                                                       if (isset($this->embeddedfiles[$filename]['f'])) {
+                                                               $annots .= ' /FS '.$this->embeddedfiles[$filename]['f'].' 0 R';
+                                                               $iconsapp = array('Graph', 'Paperclip', 'PushPin', 'Tag');
+                                                               if (isset($pl['opt']['name']) AND in_array($pl['opt']['name'], $iconsapp)) {
+                                                                       $annots .= ' /Name /'.$pl['opt']['name'];
+                                                               } else {
+                                                                       $annots .= ' /Name /PushPin';
+                                                               }
+                                                               // index (zero-based) of the annotation in the Annots array of this page
+                                                               $this->embeddedfiles[$filename]['a'] = $key;
+                                                       }
+                                                       break;
+                                               }
+                                               case 'sound': {
+                                                       if (!isset($pl['opt']['fs'])) {
+                                                               break;
+                                                       }
+                                                       $filename = basename($pl['opt']['fs']);
+                                                       if (isset($this->embeddedfiles[$filename]['f'])) {
+                                                               // ... TO BE COMPLETED ...
+                                                               // /R /C /B /E /CO /CP
+                                                               $annots .= ' /Sound '.$this->embeddedfiles[$filename]['f'].' 0 R';
+                                                               $iconsapp = array('Speaker', 'Mic');
+                                                               if (isset($pl['opt']['name']) AND in_array($pl['opt']['name'], $iconsapp)) {
+                                                                       $annots .= ' /Name /'.$pl['opt']['name'];
+                                                               } else {
+                                                                       $annots .= ' /Name /Speaker';
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 'movie': {
+                                                       break;
+                                               }
+                                               case 'widget': {
+                                                       $hmode = array('N', 'I', 'O', 'P', 'T');
+                                                       if (isset($pl['opt']['h']) AND in_array($pl['opt']['h'], $hmode)) {
+                                                               $annots .= ' /H /'.$pl['opt']['h'];
+                                                       }
+                                                       if (isset($pl['opt']['mk']) AND (is_array($pl['opt']['mk'])) AND !empty($pl['opt']['mk'])) {
+                                                               $annots .= ' /MK <<';
+                                                               if (isset($pl['opt']['mk']['r'])) {
+                                                                       $annots .= ' /R '.$pl['opt']['mk']['r'];
+                                                               }
+                                                               if (isset($pl['opt']['mk']['bc']) AND (is_array($pl['opt']['mk']['bc']))) {
+                                                                       $annots .= ' /BC '.TCPDF_COLORS::getColorStringFromArray($pl['opt']['mk']['bc']);
+                                                               }
+                                                               if (isset($pl['opt']['mk']['bg']) AND (is_array($pl['opt']['mk']['bg']))) {
+                                                                       $annots .= ' /BG '.TCPDF_COLORS::getColorStringFromArray($pl['opt']['mk']['bg']);
+                                                               }
+                                                               if (isset($pl['opt']['mk']['ca'])) {
+                                                                       $annots .= ' /CA '.$pl['opt']['mk']['ca'];
+                                                               }
+                                                               if (isset($pl['opt']['mk']['rc'])) {
+                                                                       $annots .= ' /RC '.$pl['opt']['mk']['rc'];
+                                                               }
+                                                               if (isset($pl['opt']['mk']['ac'])) {
+                                                                       $annots .= ' /AC '.$pl['opt']['mk']['ac'];
+                                                               }
+                                                               if (isset($pl['opt']['mk']['i'])) {
+                                                                       $info = $this->getImageBuffer($pl['opt']['mk']['i']);
+                                                                       if ($info !== false) {
+                                                                               $annots .= ' /I '.$info['n'].' 0 R';
+                                                                       }
+                                                               }
+                                                               if (isset($pl['opt']['mk']['ri'])) {
+                                                                       $info = $this->getImageBuffer($pl['opt']['mk']['ri']);
+                                                                       if ($info !== false) {
+                                                                               $annots .= ' /RI '.$info['n'].' 0 R';
+                                                                       }
+                                                               }
+                                                               if (isset($pl['opt']['mk']['ix'])) {
+                                                                       $info = $this->getImageBuffer($pl['opt']['mk']['ix']);
+                                                                       if ($info !== false) {
+                                                                               $annots .= ' /IX '.$info['n'].' 0 R';
+                                                                       }
+                                                               }
+                                                               if (isset($pl['opt']['mk']['if']) AND (is_array($pl['opt']['mk']['if'])) AND !empty($pl['opt']['mk']['if'])) {
+                                                                       $annots .= ' /IF <<';
+                                                                       $if_sw = array('A', 'B', 'S', 'N');
+                                                                       if (isset($pl['opt']['mk']['if']['sw']) AND in_array($pl['opt']['mk']['if']['sw'], $if_sw)) {
+                                                                               $annots .= ' /SW /'.$pl['opt']['mk']['if']['sw'];
+                                                                       }
+                                                                       $if_s = array('A', 'P');
+                                                                       if (isset($pl['opt']['mk']['if']['s']) AND in_array($pl['opt']['mk']['if']['s'], $if_s)) {
+                                                                               $annots .= ' /S /'.$pl['opt']['mk']['if']['s'];
+                                                                       }
+                                                                       if (isset($pl['opt']['mk']['if']['a']) AND (is_array($pl['opt']['mk']['if']['a'])) AND !empty($pl['opt']['mk']['if']['a'])) {
+                                                                               $annots .= sprintf(' /A [%F %F]', $pl['opt']['mk']['if']['a'][0], $pl['opt']['mk']['if']['a'][1]);
+                                                                       }
+                                                                       if (isset($pl['opt']['mk']['if']['fb']) AND ($pl['opt']['mk']['if']['fb'])) {
+                                                                               $annots .= ' /FB true';
+                                                                       }
+                                                                       $annots .= '>>';
+                                                               }
+                                                               if (isset($pl['opt']['mk']['tp']) AND ($pl['opt']['mk']['tp'] >= 0) AND ($pl['opt']['mk']['tp'] <= 6)) {
+                                                                       $annots .= ' /TP '.intval($pl['opt']['mk']['tp']);
+                                                               }
+                                                               $annots .= '>>';
+                                                       } // end MK
+                                                       // --- Entries for field dictionaries ---
+                                                       if (isset($this->radiobutton_groups[$n][$pl['txt']])) {
+                                                               // set parent
+                                                               $annots .= ' /Parent '.$this->radiobutton_groups[$n][$pl['txt']].' 0 R';
+                                                       }
+                                                       if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) {
+                                                               $annots .= ' /T '.$this->_datastring($pl['opt']['t'], $annot_obj_id);
+                                                       }
+                                                       if (isset($pl['opt']['tu']) AND is_string($pl['opt']['tu'])) {
+                                                               $annots .= ' /TU '.$this->_datastring($pl['opt']['tu'], $annot_obj_id);
+                                                       }
+                                                       if (isset($pl['opt']['tm']) AND is_string($pl['opt']['tm'])) {
+                                                               $annots .= ' /TM '.$this->_datastring($pl['opt']['tm'], $annot_obj_id);
+                                                       }
+                                                       if (isset($pl['opt']['ff'])) {
+                                                               if (is_array($pl['opt']['ff'])) {
+                                                                       // array of bit settings
+                                                                       $flag = 0;
+                                                                       foreach($pl['opt']['ff'] as $val) {
+                                                                               $flag += 1 << ($val - 1);
+                                                                       }
+                                                               } else {
+                                                                       $flag = intval($pl['opt']['ff']);
+                                                               }
+                                                               $annots .= ' /Ff '.$flag;
+                                                       }
+                                                       if (isset($pl['opt']['maxlen'])) {
+                                                               $annots .= ' /MaxLen '.intval($pl['opt']['maxlen']);
+                                                       }
+                                                       if (isset($pl['opt']['v'])) {
+                                                               $annots .= ' /V';
+                                                               if (is_array($pl['opt']['v'])) {
+                                                                       foreach ($pl['opt']['v'] AS $optval) {
+                                                                               if (is_float($optval)) {
+                                                                                       $optval = sprintf('%F', $optval);
+                                                                               }
+                                                                               $annots .= ' '.$optval;
+                                                                       }
+                                                               } else {
+                                                                       $annots .= ' '.$this->_textstring($pl['opt']['v'], $annot_obj_id);
+                                                               }
+                                                       }
+                                                       if (isset($pl['opt']['dv'])) {
+                                                               $annots .= ' /DV';
+                                                               if (is_array($pl['opt']['dv'])) {
+                                                                       foreach ($pl['opt']['dv'] AS $optval) {
+                                                                               if (is_float($optval)) {
+                                                                                       $optval = sprintf('%F', $optval);
+                                                                               }
+                                                                               $annots .= ' '.$optval;
+                                                                       }
+                                                               } else {
+                                                                       $annots .= ' '.$this->_textstring($pl['opt']['dv'], $annot_obj_id);
+                                                               }
+                                                       }
+                                                       if (isset($pl['opt']['rv'])) {
+                                                               $annots .= ' /RV';
+                                                               if (is_array($pl['opt']['rv'])) {
+                                                                       foreach ($pl['opt']['rv'] AS $optval) {
+                                                                               if (is_float($optval)) {
+                                                                                       $optval = sprintf('%F', $optval);
+                                                                               }
+                                                                               $annots .= ' '.$optval;
+                                                                       }
+                                                               } else {
+                                                                       $annots .= ' '.$this->_textstring($pl['opt']['rv'], $annot_obj_id);
+                                                               }
+                                                       }
+                                                       if (isset($pl['opt']['a']) AND !empty($pl['opt']['a'])) {
+                                                               $annots .= ' /A << '.$pl['opt']['a'].' >>';
+                                                       }
+                                                       if (isset($pl['opt']['aa']) AND !empty($pl['opt']['aa'])) {
+                                                               $annots .= ' /AA << '.$pl['opt']['aa'].' >>';
+                                                       }
+                                                       if (isset($pl['opt']['da']) AND !empty($pl['opt']['da'])) {
+                                                               $annots .= ' /DA ('.$pl['opt']['da'].')';
+                                                       }
+                                                       if (isset($pl['opt']['q']) AND ($pl['opt']['q'] >= 0) AND ($pl['opt']['q'] <= 2)) {
+                                                               $annots .= ' /Q '.intval($pl['opt']['q']);
+                                                       }
+                                                       if (isset($pl['opt']['opt']) AND (is_array($pl['opt']['opt'])) AND !empty($pl['opt']['opt'])) {
+                                                               $annots .= ' /Opt [';
+                                                               foreach($pl['opt']['opt'] AS $copt) {
+                                                                       if (is_array($copt)) {
+                                                                               $annots .= ' ['.$this->_textstring($copt[0], $annot_obj_id).' '.$this->_textstring($copt[1], $annot_obj_id).']';
+                                                                       } else {
+                                                                               $annots .= ' '.$this->_textstring($copt, $annot_obj_id);
+                                                                       }
+                                                               }
+                                                               $annots .= ']';
+                                                       }
+                                                       if (isset($pl['opt']['ti'])) {
+                                                               $annots .= ' /TI '.intval($pl['opt']['ti']);
+                                                       }
+                                                       if (isset($pl['opt']['i']) AND (is_array($pl['opt']['i'])) AND !empty($pl['opt']['i'])) {
+                                                               $annots .= ' /I [';
+                                                               foreach($pl['opt']['i'] AS $copt) {
+                                                                       $annots .= intval($copt).' ';
+                                                               }
+                                                               $annots .= ']';
+                                                       }
+                                                       break;
+                                               }
+                                               case 'screen': {
+                                                       break;
+                                               }
+                                               case 'printermark': {
+                                                       break;
+                                               }
+                                               case 'trapnet': {
+                                                       break;
+                                               }
+                                               case 'watermark': {
+                                                       break;
+                                               }
+                                               case '3d': {
+                                                       break;
+                                               }
+                                               default: {
+                                                       break;
+                                               }
+                                       }
+                                       $annots .= '>>';
+                                       // create new annotation object
+                                       $this->_out($this->_getobj($annot_obj_id)."\n".$annots."\n".'endobj');
+                                       if ($formfield AND !isset($this->radiobutton_groups[$n][$pl['txt']])) {
+                                               // store reference of form object
+                                               $this->form_obj_id[] = $annot_obj_id;
+                                       }
+                               }
+                       }
+               } // end for each page
+       }
+
+       /**
+        * Put appearance streams XObject used to define annotation's appearance states.
+        * @param $w (int) annotation width
+        * @param $h (int) annotation height
+        * @param $stream (string) appearance stream
+        * @return int object ID
+        * @protected
+        * @since 4.8.001 (2009-09-09)
+        */
+       protected function _putAPXObject($w=0, $h=0, $stream='') {
+               $stream = trim($stream);
+               $out = $this->_getobj()."\n";
+               $this->xobjects['AX'.$this->n] = array('n' => $this->n);
+               $out .= '<<';
+               $out .= ' /Type /XObject';
+               $out .= ' /Subtype /Form';
+               $out .= ' /FormType 1';
+               if ($this->compress) {
+                       $stream = gzcompress($stream);
+                       $out .= ' /Filter /FlateDecode';
+               }
+               $rect = sprintf('%F %F', $w, $h);
+               $out .= ' /BBox [0 0 '.$rect.']';
+               $out .= ' /Matrix [1 0 0 1 0 0]';
+               $out .= ' /Resources 2 0 R';
+               $stream = $this->_getrawstream($stream);
+               $out .= ' /Length '.strlen($stream);
+               $out .= ' >>';
+               $out .= ' stream'."\n".$stream."\n".'endstream';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               return $this->n;
+       }
+
+       /**
+        * Output fonts.
+        * @author Nicola Asuni
+        * @protected
+        */
+       protected function _putfonts() {
+               $nf = $this->n;
+               foreach ($this->diffs as $diff) {
+                       //Encodings
+                       $this->_newobj();
+                       $this->_out('<< /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.'] >>'."\n".'endobj');
+               }
+               $mqr = TCPDF_STATIC::get_mqr();
+               TCPDF_STATIC::set_mqr(false);
+               foreach ($this->FontFiles as $file => $info) {
+                       // search and get font file to embedd
+                       $fontfile = TCPDF_FONTS::getFontFullPath($file, $info['fontdir']);
+                       if (!TCPDF_STATIC::empty_string($fontfile)) {
+                               $font = file_get_contents($fontfile);
+                               $compressed = (substr($file, -2) == '.z');
+                               if ((!$compressed) AND (isset($info['length2']))) {
+                                       $header = (ord($font[0]) == 128);
+                                       if ($header) {
+                                               // strip first binary header
+                                               $font = substr($font, 6);
+                                       }
+                                       if ($header AND (ord($font[$info['length1']]) == 128)) {
+                                               // strip second binary header
+                                               $font = substr($font, 0, $info['length1']).substr($font, ($info['length1'] + 6));
+                                       }
+                               } elseif ($info['subset'] AND ((!$compressed) OR ($compressed AND function_exists('gzcompress')))) {
+                                       if ($compressed) {
+                                               // uncompress font
+                                               $font = gzuncompress($font);
+                                       }
+                                       // merge subset characters
+                                       $subsetchars = array(); // used chars
+                                       foreach ($info['fontkeys'] as $fontkey) {
+                                               $fontinfo = $this->getFontBuffer($fontkey);
+                                               $subsetchars += $fontinfo['subsetchars'];
+                                       }
+                                       // rebuild a font subset
+                                       $font = TCPDF_FONTS::_getTrueTypeFontSubset($font, $subsetchars);
+                                       // calculate new font length
+                                       $info['length1'] = strlen($font);
+                                       if ($compressed) {
+                                               // recompress font
+                                               $font = gzcompress($font);
+                                       }
+                               }
+                               $this->_newobj();
+                               $this->FontFiles[$file]['n'] = $this->n;
+                               $stream = $this->_getrawstream($font);
+                               $out = '<< /Length '.strlen($stream);
+                               if ($compressed) {
+                                       $out .= ' /Filter /FlateDecode';
+                               }
+                               $out .= ' /Length1 '.$info['length1'];
+                               if (isset($info['length2'])) {
+                                       $out .= ' /Length2 '.$info['length2'].' /Length3 0';
+                               }
+                               $out .= ' >>';
+                               $out .= ' stream'."\n".$stream."\n".'endstream';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                       }
+               }
+               TCPDF_STATIC::set_mqr($mqr);
+               foreach ($this->fontkeys as $k) {
+                       //Font objects
+                       $font = $this->getFontBuffer($k);
+                       $type = $font['type'];
+                       $name = $font['name'];
+                       if ($type == 'core') {
+                               // standard core font
+                               $out = $this->_getobj($this->font_obj_ids[$k])."\n";
+                               $out .= '<</Type /Font';
+                               $out .= ' /Subtype /Type1';
+                               $out .= ' /BaseFont /'.$name;
+                               $out .= ' /Name /F'.$font['i'];
+                               if ((strtolower($name) != 'symbol') AND (strtolower($name) != 'zapfdingbats')) {
+                                       $out .= ' /Encoding /WinAnsiEncoding';
+                               }
+                               if ($k == 'helvetica') {
+                                       // add default font for annotations
+                                       $this->annotation_fonts[$k] = $font['i'];
+                               }
+                               $out .= ' >>';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                       } elseif (($type == 'Type1') OR ($type == 'TrueType')) {
+                               // additional Type1 or TrueType font
+                               $out = $this->_getobj($this->font_obj_ids[$k])."\n";
+                               $out .= '<</Type /Font';
+                               $out .= ' /Subtype /'.$type;
+                               $out .= ' /BaseFont /'.$name;
+                               $out .= ' /Name /F'.$font['i'];
+                               $out .= ' /FirstChar 32 /LastChar 255';
+                               $out .= ' /Widths '.($this->n + 1).' 0 R';
+                               $out .= ' /FontDescriptor '.($this->n + 2).' 0 R';
+                               if ($font['enc']) {
+                                       if (isset($font['diff'])) {
+                                               $out .= ' /Encoding '.($nf + $font['diff']).' 0 R';
+                                       } else {
+                                               $out .= ' /Encoding /WinAnsiEncoding';
+                                       }
+                               }
+                               $out .= ' >>';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                               // Widths
+                               $this->_newobj();
+                               $s = '[';
+                               for ($i = 32; $i < 256; ++$i) {
+                                       if (isset($font['cw'][$i])) {
+                                               $s .= $font['cw'][$i].' ';
+                                       } else {
+                                               $s .= $font['dw'].' ';
+                                       }
+                               }
+                               $s .= ']';
+                               $s .= "\n".'endobj';
+                               $this->_out($s);
+                               //Descriptor
+                               $this->_newobj();
+                               $s = '<</Type /FontDescriptor /FontName /'.$name;
+                               foreach ($font['desc'] as $fdk => $fdv) {
+                                       if (is_float($fdv)) {
+                                               $fdv = sprintf('%F', $fdv);
+                                       }
+                                       $s .= ' /'.$fdk.' '.$fdv.'';
+                               }
+                               if (!TCPDF_STATIC::empty_string($font['file'])) {
+                                       $s .= ' /FontFile'.($type == 'Type1' ? '' : '2').' '.$this->FontFiles[$font['file']]['n'].' 0 R';
+                               }
+                               $s .= '>>';
+                               $s .= "\n".'endobj';
+                               $this->_out($s);
+                       } else {
+                               // additional types
+                               $mtd = '_put'.strtolower($type);
+                               if (!method_exists($this, $mtd)) {
+                                       $this->Error('Unsupported font type: '.$type);
+                               }
+                               $this->$mtd($font);
+                       }
+               }
+       }
+
+       /**
+        * Adds unicode fonts.<br>
+        * Based on PDF Reference 1.3 (section 5)
+        * @param $font (array) font data
+        * @protected
+        * @author Nicola Asuni
+        * @since 1.52.0.TC005 (2005-01-05)
+        */
+       protected function _puttruetypeunicode($font) {
+               $fontname = '';
+               if ($font['subset']) {
+                       // change name for font subsetting
+                       $subtag = sprintf('%06u', $font['i']);
+                       $subtag = strtr($subtag, '0123456789', 'ABCDEFGHIJ');
+                       $fontname .= $subtag.'+';
+               }
+               $fontname .= $font['name'];
+               // Type0 Font
+               // A composite font composed of other fonts, organized hierarchically
+               $out = $this->_getobj($this->font_obj_ids[$font['fontkey']])."\n";
+               $out .= '<< /Type /Font';
+               $out .= ' /Subtype /Type0';
+               $out .= ' /BaseFont /'.$fontname;
+               $out .= ' /Name /F'.$font['i'];
+               $out .= ' /Encoding /'.$font['enc'];
+               $out .= ' /ToUnicode '.($this->n + 1).' 0 R';
+               $out .= ' /DescendantFonts ['.($this->n + 2).' 0 R]';
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               // ToUnicode map for Identity-H
+               $stream = TCPDF_FONT_DATA::$uni_identity_h;
+               // ToUnicode Object
+               $this->_newobj();
+               $stream = ($this->compress) ? gzcompress($stream) : $stream;
+               $filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
+               $stream = $this->_getrawstream($stream);
+               $this->_out('<<'.$filter.'/Length '.strlen($stream).'>> stream'."\n".$stream."\n".'endstream'."\n".'endobj');
+               // CIDFontType2
+               // A CIDFont whose glyph descriptions are based on TrueType font technology
+               $oid = $this->_newobj();
+               $out = '<< /Type /Font';
+               $out .= ' /Subtype /CIDFontType2';
+               $out .= ' /BaseFont /'.$fontname;
+               // A dictionary containing entries that define the character collection of the CIDFont.
+               $cidinfo = '/Registry '.$this->_datastring($font['cidinfo']['Registry'], $oid);
+               $cidinfo .= ' /Ordering '.$this->_datastring($font['cidinfo']['Ordering'], $oid);
+               $cidinfo .= ' /Supplement '.$font['cidinfo']['Supplement'];
+               $out .= ' /CIDSystemInfo << '.$cidinfo.' >>';
+               $out .= ' /FontDescriptor '.($this->n + 1).' 0 R';
+               $out .= ' /DW '.$font['dw']; // default width
+               $out .= "\n".TCPDF_FONTS::_putfontwidths($font, 0);
+               if (isset($font['ctg']) AND (!TCPDF_STATIC::empty_string($font['ctg']))) {
+                       $out .= "\n".'/CIDToGIDMap '.($this->n + 2).' 0 R';
+               }
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               // Font descriptor
+               // A font descriptor describing the CIDFont default metrics other than its glyph widths
+               $this->_newobj();
+               $out = '<< /Type /FontDescriptor';
+               $out .= ' /FontName /'.$fontname;
+               foreach ($font['desc'] as $key => $value) {
+                       if (is_float($value)) {
+                               $value = sprintf('%F', $value);
+                       }
+                       $out .= ' /'.$key.' '.$value;
+               }
+               $fontdir = false;
+               if (!TCPDF_STATIC::empty_string($font['file'])) {
+                       // A stream containing a TrueType font
+                       $out .= ' /FontFile2 '.$this->FontFiles[$font['file']]['n'].' 0 R';
+                       $fontdir = $this->FontFiles[$font['file']]['fontdir'];
+               }
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               if (isset($font['ctg']) AND (!TCPDF_STATIC::empty_string($font['ctg']))) {
+                       $this->_newobj();
+                       // Embed CIDToGIDMap
+                       // A specification of the mapping from CIDs to glyph indices
+                       // search and get CTG font file to embedd
+                       $ctgfile = strtolower($font['ctg']);
+                       // search and get ctg font file to embedd
+                       $fontfile = TCPDF_FONTS::getFontFullPath($ctgfile, $fontdir);
+                       if (TCPDF_STATIC::empty_string($fontfile)) {
+                               $this->Error('Font file not found: '.$ctgfile);
+                       }
+                       $stream = $this->_getrawstream(file_get_contents($fontfile));
+                       $out = '<< /Length '.strlen($stream).'';
+                       if (substr($fontfile, -2) == '.z') { // check file extension
+                               // Decompresses data encoded using the public-domain
+                               // zlib/deflate compression method, reproducing the
+                               // original text or binary data
+                               $out .= ' /Filter /FlateDecode';
+                       }
+                       $out .= ' >>';
+                       $out .= ' stream'."\n".$stream."\n".'endstream';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+               }
+       }
+
+       /**
+        * Output CID-0 fonts.
+        * A Type 0 CIDFont contains glyph descriptions based on the Adobe Type 1 font format
+        * @param $font (array) font data
+        * @protected
+        * @author Andrew Whitehead, Nicola Asuni, Yukihiro Nakadaira
+        * @since 3.2.000 (2008-06-23)
+        */
+       protected function _putcidfont0($font) {
+               $cidoffset = 0;
+               if (!isset($font['cw'][1])) {
+                       $cidoffset = 31;
+               }
+               if (isset($font['cidinfo']['uni2cid'])) {
+                       // convert unicode to cid.
+                       $uni2cid = $font['cidinfo']['uni2cid'];
+                       $cw = array();
+                       foreach ($font['cw'] as $uni => $width) {
+                               if (isset($uni2cid[$uni])) {
+                                       $cw[($uni2cid[$uni] + $cidoffset)] = $width;
+                               } elseif ($uni < 256) {
+                                       $cw[$uni] = $width;
+                               } // else unknown character
+                       }
+                       $font = array_merge($font, array('cw' => $cw));
+               }
+               $name = $font['name'];
+               $enc = $font['enc'];
+               if ($enc) {
+                       $longname = $name.'-'.$enc;
+               } else {
+                       $longname = $name;
+               }
+               $out = $this->_getobj($this->font_obj_ids[$font['fontkey']])."\n";
+               $out .= '<</Type /Font';
+               $out .= ' /Subtype /Type0';
+               $out .= ' /BaseFont /'.$longname;
+               $out .= ' /Name /F'.$font['i'];
+               if ($enc) {
+                       $out .= ' /Encoding /'.$enc;
+               }
+               $out .= ' /DescendantFonts ['.($this->n + 1).' 0 R]';
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               $oid = $this->_newobj();
+               $out = '<</Type /Font';
+               $out .= ' /Subtype /CIDFontType0';
+               $out .= ' /BaseFont /'.$name;
+               $cidinfo = '/Registry '.$this->_datastring($font['cidinfo']['Registry'], $oid);
+               $cidinfo .= ' /Ordering '.$this->_datastring($font['cidinfo']['Ordering'], $oid);
+               $cidinfo .= ' /Supplement '.$font['cidinfo']['Supplement'];
+               $out .= ' /CIDSystemInfo <<'.$cidinfo.'>>';
+               $out .= ' /FontDescriptor '.($this->n + 1).' 0 R';
+               $out .= ' /DW '.$font['dw'];
+               $out .= "\n".TCPDF_FONTS::_putfontwidths($font, $cidoffset);
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               $this->_newobj();
+               $s = '<</Type /FontDescriptor /FontName /'.$name;
+               foreach ($font['desc'] as $k => $v) {
+                       if ($k != 'Style') {
+                               if (is_float($v)) {
+                                       $v = sprintf('%F', $v);
+                               }
+                               $s .= ' /'.$k.' '.$v.'';
+                       }
+               }
+               $s .= '>>';
+               $s .= "\n".'endobj';
+               $this->_out($s);
+       }
+
+       /**
+        * Output images.
+        * @protected
+        */
+       protected function _putimages() {
+               $filter = ($this->compress) ? '/Filter /FlateDecode ' : '';
+               foreach ($this->imagekeys as $file) {
+                       $info = $this->getImageBuffer($file);
+                       // set object for alternate images array
+                       if ((!$this->pdfa_mode) AND isset($info['altimgs']) AND !empty($info['altimgs'])) {
+                               $altoid = $this->_newobj();
+                               $out = '[';
+                               foreach ($info['altimgs'] as $altimage) {
+                                       if (isset($this->xobjects['I'.$altimage[0]]['n'])) {
+                                               $out .= ' << /Image '.$this->xobjects['I'.$altimage[0]]['n'].' 0 R';
+                                               $out .= ' /DefaultForPrinting';
+                                               if ($altimage[1] === true) {
+                                                       $out .= ' true';
+                                               } else {
+                                                       $out .= ' false';
+                                               }
+                                               $out .= ' >>';
+                                       }
+                               }
+                               $out .= ' ]';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                       }
+                       // set image object
+                       $oid = $this->_newobj();
+                       $this->xobjects['I'.$info['i']] = array('n' => $oid);
+                       $this->setImageSubBuffer($file, 'n', $this->n);
+                       $out = '<</Type /XObject';
+                       $out .= ' /Subtype /Image';
+                       $out .= ' /Width '.$info['w'];
+                       $out .= ' /Height '.$info['h'];
+                       if (array_key_exists('masked', $info)) {
+                               $out .= ' /SMask '.($this->n - 1).' 0 R';
+                       }
+                       // set color space
+                       $icc = false;
+                       if (isset($info['icc']) AND ($info['icc'] !== false)) {
+                               // ICC Colour Space
+                               $icc = true;
+                               $out .= ' /ColorSpace [/ICCBased '.($this->n + 1).' 0 R]';
+                       } elseif ($info['cs'] == 'Indexed') {
+                               // Indexed Colour Space
+                               $out .= ' /ColorSpace [/Indexed /DeviceRGB '.((strlen($info['pal']) / 3) - 1).' '.($this->n + 1).' 0 R]';
+                       } else {
+                               // Device Colour Space
+                               $out .= ' /ColorSpace /'.$info['cs'];
+                       }
+                       if ($info['cs'] == 'DeviceCMYK') {
+                               $out .= ' /Decode [1 0 1 0 1 0 1 0]';
+                       }
+                       $out .= ' /BitsPerComponent '.$info['bpc'];
+                       if (isset($altoid) AND ($altoid > 0)) {
+                               // reference to alternate images dictionary
+                               $out .= ' /Alternates '.$altoid.' 0 R';
+                       }
+                       if (isset($info['exurl']) AND !empty($info['exurl'])) {
+                               // external stream
+                               $out .= ' /Length 0';
+                               $out .= ' /F << /FS /URL /F '.$this->_datastring($info['exurl'], $oid).' >>';
+                               if (isset($info['f'])) {
+                                       $out .= ' /FFilter /'.$info['f'];
+                               }
+                               $out .= ' >>';
+                               $out .= ' stream'."\n".'endstream';
+                       } else {
+                               if (isset($info['f'])) {
+                                       $out .= ' /Filter /'.$info['f'];
+                               }
+                               if (isset($info['parms'])) {
+                                       $out .= ' '.$info['parms'];
+                               }
+                               if (isset($info['trns']) AND is_array($info['trns'])) {
+                                       $trns = '';
+                                       $count_info = count($info['trns']);
+                                       if ($info['cs'] == 'Indexed') {
+                                               $maxval =(pow(2, $info['bpc']) - 1);
+                                               for ($i = 0; $i < $count_info; ++$i) {
+                                                       if (($info['trns'][$i] != 0) AND ($info['trns'][$i] != $maxval)) {
+                                                               // this is not a binary type mask @TODO: create a SMask
+                                                               $trns = '';
+                                                               break;
+                                                       } elseif (empty($trns) AND ($info['trns'][$i] == 0)) {
+                                                               // store the first fully transparent value
+                                                               $trns .= $i.' '.$i.' ';
+                                                       }
+                                               }
+                                       } else {
+                                               // grayscale or RGB
+                                               for ($i = 0; $i < $count_info; ++$i) {
+                                                       if ($info['trns'][$i] == 0) {
+                                                               $trns .= $info['trns'][$i].' '.$info['trns'][$i].' ';
+                                                       }
+                                               }
+                                       }
+                                       // Colour Key Masking
+                                       if (!empty($trns)) {
+                                               $out .= ' /Mask ['.$trns.']';
+                                       }
+                               }
+                               $stream = $this->_getrawstream($info['data']);
+                               $out .= ' /Length '.strlen($stream).' >>';
+                               $out .= ' stream'."\n".$stream."\n".'endstream';
+                       }
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+                       if ($icc) {
+                               // ICC colour profile
+                               $this->_newobj();
+                               $icc = ($this->compress) ? gzcompress($info['icc']) : $info['icc'];
+                               $icc = $this->_getrawstream($icc);
+                               $this->_out('<</N '.$info['ch'].' /Alternate /'.$info['cs'].' '.$filter.'/Length '.strlen($icc).'>> stream'."\n".$icc."\n".'endstream'."\n".'endobj');
+                       } elseif ($info['cs'] == 'Indexed') {
+                               // colour palette
+                               $this->_newobj();
+                               $pal = ($this->compress) ? gzcompress($info['pal']) : $info['pal'];
+                               $pal = $this->_getrawstream($pal);
+                               $this->_out('<<'.$filter.'/Length '.strlen($pal).'>> stream'."\n".$pal."\n".'endstream'."\n".'endobj');
+                       }
+               }
+       }
+
+       /**
+        * Output Form XObjects Templates.
+        * @author Nicola Asuni
+        * @since 5.8.017 (2010-08-24)
+        * @protected
+        * @see startTemplate(), endTemplate(), printTemplate()
+        */
+       protected function _putxobjects() {
+               foreach ($this->xobjects as $key => $data) {
+                       if (isset($data['outdata'])) {
+                               $stream = str_replace($this->epsmarker, '', trim($data['outdata']));
+                               $out = $this->_getobj($data['n'])."\n";
+                               $out .= '<<';
+                               $out .= ' /Type /XObject';
+                               $out .= ' /Subtype /Form';
+                               $out .= ' /FormType 1';
+                               if ($this->compress) {
+                                       $stream = gzcompress($stream);
+                                       $out .= ' /Filter /FlateDecode';
+                               }
+                               $out .= sprintf(' /BBox [%F %F %F %F]', ($data['x'] * $this->k), (-$data['y'] * $this->k), (($data['w'] + $data['x']) * $this->k), (($data['h'] - $data['y']) * $this->k));
+                               $out .= ' /Matrix [1 0 0 1 0 0]';
+                               $out .= ' /Resources <<';
+                               $out .= ' /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]';
+                               if (!$this->pdfa_mode) {
+                                       // transparency
+                                       if (isset($data['extgstates']) AND !empty($data['extgstates'])) {
+                                               $out .= ' /ExtGState <<';
+                                               foreach ($data['extgstates'] as $k => $extgstate) {
+                                                       if (isset($this->extgstates[$k]['name'])) {
+                                                               $out .= ' /'.$this->extgstates[$k]['name'];
+                                                       } else {
+                                                               $out .= ' /GS'.$k;
+                                                       }
+                                                       $out .= ' '.$this->extgstates[$k]['n'].' 0 R';
+                                               }
+                                               $out .= ' >>';
+                                       }
+                                       if (isset($data['gradients']) AND !empty($data['gradients'])) {
+                                               $gp = '';
+                                               $gs = '';
+                                               foreach ($data['gradients'] as $id => $grad) {
+                                                       // gradient patterns
+                                                       $gp .= ' /p'.$id.' '.$this->gradients[$id]['pattern'].' 0 R';
+                                                       // gradient shadings
+                                                       $gs .= ' /Sh'.$id.' '.$this->gradients[$id]['id'].' 0 R';
+                                               }
+                                               $out .= ' /Pattern <<'.$gp.' >>';
+                                               $out .= ' /Shading <<'.$gs.' >>';
+                                       }
+                               }
+                               // spot colors
+                               if (isset($data['spot_colors']) AND !empty($data['spot_colors'])) {
+                                       $out .= ' /ColorSpace <<';
+                                       foreach ($data['spot_colors'] as $name => $color) {
+                                               $out .= ' /CS'.$color['i'].' '.$this->spot_colors[$name]['n'].' 0 R';
+                                       }
+                                       $out .= ' >>';
+                               }
+                               // fonts
+                               if (!empty($data['fonts'])) {
+                                       $out .= ' /Font <<';
+                                       foreach ($data['fonts'] as $fontkey => $fontid) {
+                                               $out .= ' /F'.$fontid.' '.$this->font_obj_ids[$fontkey].' 0 R';
+                                       }
+                                       $out .= ' >>';
+                               }
+                               // images or nested xobjects
+                               if (!empty($data['images']) OR !empty($data['xobjects'])) {
+                                       $out .= ' /XObject <<';
+                                       foreach ($data['images'] as $imgid) {
+                                               $out .= ' /I'.$imgid.' '.$this->xobjects['I'.$imgid]['n'].' 0 R';
+                                       }
+                                       foreach ($data['xobjects'] as $sub_id => $sub_objid) {
+                                               $out .= ' /'.$sub_id.' '.$sub_objid['n'].' 0 R';
+                                       }
+                                       $out .= ' >>';
+                               }
+                               $out .= ' >>'; //end resources
+                               if (isset($data['group']) AND ($data['group'] !== false)) {
+                                       // set transparency group
+                                       $out .= ' /Group << /Type /Group /S /Transparency';
+                                       if (is_array($data['group'])) {
+                                               if (isset($data['group']['CS']) AND !empty($data['group']['CS'])) {
+                                                       $out .= ' /CS /'.$data['group']['CS'];
+                                               }
+                                               if (isset($data['group']['I'])) {
+                                                       $out .= ' /I /'.($data['group']['I']===true?'true':'false');
+                                               }
+                                               if (isset($data['group']['K'])) {
+                                                       $out .= ' /K /'.($data['group']['K']===true?'true':'false');
+                                               }
+                                       }
+                                       $out .= ' >>';
+                               }
+                               $stream = $this->_getrawstream($stream, $data['n']);
+                               $out .= ' /Length '.strlen($stream);
+                               $out .= ' >>';
+                               $out .= ' stream'."\n".$stream."\n".'endstream';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                       }
+               }
+       }
+
+       /**
+        * Output Spot Colors Resources.
+        * @protected
+        * @since 4.0.024 (2008-09-12)
+        */
+       protected function _putspotcolors() {
+               foreach ($this->spot_colors as $name => $color) {
+                       $this->_newobj();
+                       $this->spot_colors[$name]['n'] = $this->n;
+                       $out = '[/Separation /'.str_replace(' ', '#20', $name);
+                       $out .= ' /DeviceCMYK <<';
+                       $out .= ' /Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0]';
+                       $out .= ' '.sprintf('/C1 [%F %F %F %F] ', ($color['C'] / 100), ($color['M'] / 100), ($color['Y'] / 100), ($color['K'] / 100));
+                       $out .= ' /FunctionType 2 /Domain [0 1] /N 1>>]';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+               }
+       }
+
+       /**
+        * Return XObjects Dictionary.
+        * @return string XObjects dictionary
+        * @protected
+        * @since 5.8.014 (2010-08-23)
+        */
+       protected function _getxobjectdict() {
+               $out = '';
+               foreach ($this->xobjects as $id => $objid) {
+                       $out .= ' /'.$id.' '.$objid['n'].' 0 R';
+               }
+               return $out;
+       }
+
+       /**
+        * Output Resources Dictionary.
+        * @protected
+        */
+       protected function _putresourcedict() {
+               $out = $this->_getobj(2)."\n";
+               $out .= '<< /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]';
+               $out .= ' /Font <<';
+               foreach ($this->fontkeys as $fontkey) {
+                       $font = $this->getFontBuffer($fontkey);
+                       $out .= ' /F'.$font['i'].' '.$font['n'].' 0 R';
+               }
+               $out .= ' >>';
+               $out .= ' /XObject <<';
+               $out .= $this->_getxobjectdict();
+               $out .= ' >>';
+               // layers
+               if (!empty($this->pdflayers)) {
+                       $out .= ' /Properties <<';
+                       foreach ($this->pdflayers as $layer) {
+                               $out .= ' /'.$layer['layer'].' '.$layer['objid'].' 0 R';
+                       }
+                       $out .= ' >>';
+               }
+               if (!$this->pdfa_mode) {
+                       // transparency
+                       if (isset($this->extgstates) AND !empty($this->extgstates)) {
+                               $out .= ' /ExtGState <<';
+                               foreach ($this->extgstates as $k => $extgstate) {
+                                       if (isset($extgstate['name'])) {
+                                               $out .= ' /'.$extgstate['name'];
+                                       } else {
+                                               $out .= ' /GS'.$k;
+                                       }
+                                       $out .= ' '.$extgstate['n'].' 0 R';
+                               }
+                               $out .= ' >>';
+                       }
+                       if (isset($this->gradients) AND !empty($this->gradients)) {
+                               $gp = '';
+                               $gs = '';
+                               foreach ($this->gradients as $id => $grad) {
+                                       // gradient patterns
+                                       $gp .= ' /p'.$id.' '.$grad['pattern'].' 0 R';
+                                       // gradient shadings
+                                       $gs .= ' /Sh'.$id.' '.$grad['id'].' 0 R';
+                               }
+                               $out .= ' /Pattern <<'.$gp.' >>';
+                               $out .= ' /Shading <<'.$gs.' >>';
+                       }
+               }
+               // spot colors
+               if (isset($this->spot_colors) AND !empty($this->spot_colors)) {
+                       $out .= ' /ColorSpace <<';
+                       foreach ($this->spot_colors as $color) {
+                               $out .= ' /CS'.$color['i'].' '.$color['n'].' 0 R';
+                       }
+                       $out .= ' >>';
+               }
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+       }
+
+       /**
+        * Output Resources.
+        * @protected
+        */
+       protected function _putresources() {
+               $this->_putextgstates();
+               $this->_putocg();
+               $this->_putfonts();
+               $this->_putimages();
+               $this->_putspotcolors();
+               $this->_putshaders();
+               $this->_putxobjects();
+               $this->_putresourcedict();
+               $this->_putdests();
+               $this->_putEmbeddedFiles();
+               $this->_putannotsobjs();
+               $this->_putjavascript();
+               $this->_putbookmarks();
+               $this->_putencryption();
+       }
+
+       /**
+        * Adds some Metadata information (Document Information Dictionary)
+        * (see Chapter 14.3.3 Document Information Dictionary of PDF32000_2008.pdf Reference)
+        * @return int object id
+        * @protected
+        */
+       protected function _putinfo() {
+               $oid = $this->_newobj();
+               $out = '<<';
+               // store current isunicode value
+               $prev_isunicode = $this->isunicode;
+               if ($this->docinfounicode) {
+                       $this->isunicode = true;
+               }
+               if (!TCPDF_STATIC::empty_string($this->title)) {
+                       // The document's title.
+                       $out .= ' /Title '.$this->_textstring($this->title, $oid);
+               }
+               if (!TCPDF_STATIC::empty_string($this->author)) {
+                       // The name of the person who created the document.
+                       $out .= ' /Author '.$this->_textstring($this->author, $oid);
+               }
+               if (!TCPDF_STATIC::empty_string($this->subject)) {
+                       // The subject of the document.
+                       $out .= ' /Subject '.$this->_textstring($this->subject, $oid);
+               }
+               if (!TCPDF_STATIC::empty_string($this->keywords)) {
+                       // Keywords associated with the document.
+                       $out .= ' /Keywords '.$this->_textstring($this->keywords, $oid);
+               }
+               if (!TCPDF_STATIC::empty_string($this->creator)) {
+                       // If the document was converted to PDF from another format, the name of the conforming product that created the original document from which it was converted.
+                       $out .= ' /Creator '.$this->_textstring($this->creator, $oid);
+               }
+               // restore previous isunicode value
+               $this->isunicode = $prev_isunicode;
+               // default producer
+               $out .= ' /Producer '.$this->_textstring(TCPDF_STATIC::getTCPDFProducer(), $oid);
+               // The date and time the document was created, in human-readable form
+               $out .= ' /CreationDate '.$this->_datestring(0, $this->doc_creation_timestamp);
+               // The date and time the document was most recently modified, in human-readable form
+               $out .= ' /ModDate '.$this->_datestring(0, $this->doc_modification_timestamp);
+               // A name object indicating whether the document has been modified to include trapping information
+               $out .= ' /Trapped /False';
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               return $oid;
+       }
+
+       /**
+        * Set additional XMP data to be added on the default XMP data just before the end of "x:xmpmeta" tag.
+        * IMPORTANT: This data is added as-is without controls, so you have to validate your data before using this method!
+        * @param $xmp (string) Custom XMP data.
+        * @since 5.9.128 (2011-10-06)
+        * @public
+        */
+       public function setExtraXMP($xmp) {
+               $this->custom_xmp = $xmp;
+       }
+
+       /**
+        * Put XMP data object and return ID.
+        * @return (int) The object ID.
+        * @since 5.9.121 (2011-09-28)
+        * @protected
+        */
+       protected function _putXMP() {
+               $oid = $this->_newobj();
+               // store current isunicode value
+               $prev_isunicode = $this->isunicode;
+               $this->isunicode = true;
+               $prev_encrypted = $this->encrypted;
+               $this->encrypted = false;
+               // set XMP data
+               $xmp = '<?xpacket begin="'.TCPDF_FONTS::unichr(0xfeff, $this->isunicode).'" id="W5M0MpCehiHzreSzNTczkc9d"?>'."\n";
+               $xmp .= '<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:08:04">'."\n";
+               $xmp .= "\t".'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">'."\n";
+               $xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">'."\n";
+               $xmp .= "\t\t\t".'<dc:format>application/pdf</dc:format>'."\n";
+               $xmp .= "\t\t\t".'<dc:title>'."\n";
+               $xmp .= "\t\t\t\t".'<rdf:Alt>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li xml:lang="x-default">'.TCPDF_STATIC::_escapeXML($this->title).'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t".'</rdf:Alt>'."\n";
+               $xmp .= "\t\t\t".'</dc:title>'."\n";
+               $xmp .= "\t\t\t".'<dc:creator>'."\n";
+               $xmp .= "\t\t\t\t".'<rdf:Seq>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li>'.TCPDF_STATIC::_escapeXML($this->author).'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t".'</rdf:Seq>'."\n";
+               $xmp .= "\t\t\t".'</dc:creator>'."\n";
+               $xmp .= "\t\t\t".'<dc:description>'."\n";
+               $xmp .= "\t\t\t\t".'<rdf:Alt>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li xml:lang="x-default">'.TCPDF_STATIC::_escapeXML($this->subject).'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t".'</rdf:Alt>'."\n";
+               $xmp .= "\t\t\t".'</dc:description>'."\n";
+               $xmp .= "\t\t\t".'<dc:subject>'."\n";
+               $xmp .= "\t\t\t\t".'<rdf:Bag>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li>'.TCPDF_STATIC::_escapeXML($this->keywords).'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t".'</rdf:Bag>'."\n";
+               $xmp .= "\t\t\t".'</dc:subject>'."\n";
+               $xmp .= "\t\t".'</rdf:Description>'."\n";
+               // convert doc creation date format
+               $dcdate = TCPDF_STATIC::getFormattedDate($this->doc_creation_timestamp);
+               $doccreationdate = substr($dcdate, 0, 4).'-'.substr($dcdate, 4, 2).'-'.substr($dcdate, 6, 2);
+               $doccreationdate .= 'T'.substr($dcdate, 8, 2).':'.substr($dcdate, 10, 2).':'.substr($dcdate, 12, 2);
+               $doccreationdate .= '+'.substr($dcdate, 15, 2).':'.substr($dcdate, 18, 2);
+               $doccreationdate = TCPDF_STATIC::_escapeXML($doccreationdate);
+               // convert doc modification date format
+               $dmdate = TCPDF_STATIC::getFormattedDate($this->doc_modification_timestamp);
+               $docmoddate = substr($dmdate, 0, 4).'-'.substr($dmdate, 4, 2).'-'.substr($dmdate, 6, 2);
+               $docmoddate .= 'T'.substr($dmdate, 8, 2).':'.substr($dmdate, 10, 2).':'.substr($dmdate, 12, 2);
+               $docmoddate .= '+'.substr($dmdate, 15, 2).':'.substr($dmdate, 18, 2);
+               $docmoddate = TCPDF_STATIC::_escapeXML($docmoddate);
+               $xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/">'."\n";
+               $xmp .= "\t\t\t".'<xmp:CreateDate>'.$doccreationdate.'</xmp:CreateDate>'."\n";
+               $xmp .= "\t\t\t".'<xmp:CreatorTool>'.$this->creator.'</xmp:CreatorTool>'."\n";
+               $xmp .= "\t\t\t".'<xmp:ModifyDate>'.$docmoddate.'</xmp:ModifyDate>'."\n";
+               $xmp .= "\t\t\t".'<xmp:MetadataDate>'.$doccreationdate.'</xmp:MetadataDate>'."\n";
+               $xmp .= "\t\t".'</rdf:Description>'."\n";
+               $xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">'."\n";
+               $xmp .= "\t\t\t".'<pdf:Keywords>'.TCPDF_STATIC::_escapeXML($this->keywords).'</pdf:Keywords>'."\n";
+               $xmp .= "\t\t\t".'<pdf:Producer>'.TCPDF_STATIC::_escapeXML(TCPDF_STATIC::getTCPDFProducer()).'</pdf:Producer>'."\n";
+               $xmp .= "\t\t".'</rdf:Description>'."\n";
+               $xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">'."\n";
+               $uuid = 'uuid:'.substr($this->file_id, 0, 8).'-'.substr($this->file_id, 8, 4).'-'.substr($this->file_id, 12, 4).'-'.substr($this->file_id, 16, 4).'-'.substr($this->file_id, 20, 12);
+               $xmp .= "\t\t\t".'<xmpMM:DocumentID>'.$uuid.'</xmpMM:DocumentID>'."\n";
+               $xmp .= "\t\t\t".'<xmpMM:InstanceID>'.$uuid.'</xmpMM:InstanceID>'."\n";
+               $xmp .= "\t\t".'</rdf:Description>'."\n";
+               if ($this->pdfa_mode) {
+                       $xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">'."\n";
+                       $xmp .= "\t\t\t".'<pdfaid:part>1</pdfaid:part>'."\n";
+                       $xmp .= "\t\t\t".'<pdfaid:conformance>B</pdfaid:conformance>'."\n";
+                       $xmp .= "\t\t".'</rdf:Description>'."\n";
+               }
+               // XMP extension schemas
+               $xmp .= "\t\t".'<rdf:Description rdf:about="" xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/" xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema#" xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property#">'."\n";
+               $xmp .= "\t\t\t".'<pdfaExtension:schemas>'."\n";
+               $xmp .= "\t\t\t\t".'<rdf:Bag>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:namespaceURI>http://ns.adobe.com/pdf/1.3/</pdfaSchema:namespaceURI>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:prefix>pdf</pdfaSchema:prefix>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:schema>Adobe PDF Schema</pdfaSchema:schema>'."\n";
+               $xmp .= "\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:namespaceURI>http://ns.adobe.com/xap/1.0/mm/</pdfaSchema:namespaceURI>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:prefix>xmpMM</pdfaSchema:prefix>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:schema>XMP Media Management Schema</pdfaSchema:schema>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:property>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t".'<rdf:Seq>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:category>internal</pdfaProperty:category>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:description>UUID based identifier for specific incarnation of a document</pdfaProperty:description>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:name>InstanceID</pdfaProperty:name>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:valueType>URI</pdfaProperty:valueType>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t".'</rdf:Seq>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'</pdfaSchema:property>'."\n";
+               $xmp .= "\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:namespaceURI>http://www.aiim.org/pdfa/ns/id/</pdfaSchema:namespaceURI>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:prefix>pdfaid</pdfaSchema:prefix>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:schema>PDF/A ID Schema</pdfaSchema:schema>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'<pdfaSchema:property>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t".'<rdf:Seq>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:category>internal</pdfaProperty:category>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:description>Part of PDF/A standard</pdfaProperty:description>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:name>part</pdfaProperty:name>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:valueType>Integer</pdfaProperty:valueType>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:category>internal</pdfaProperty:category>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:description>Amendment of PDF/A standard</pdfaProperty:description>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:name>amd</pdfaProperty:name>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:valueType>Text</pdfaProperty:valueType>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'<rdf:li rdf:parseType="Resource">'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:category>internal</pdfaProperty:category>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:description>Conformance level of PDF/A standard</pdfaProperty:description>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:name>conformance</pdfaProperty:name>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t\t".'<pdfaProperty:valueType>Text</pdfaProperty:valueType>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t\t\t\t".'</rdf:Seq>'."\n";
+               $xmp .= "\t\t\t\t\t\t".'</pdfaSchema:property>'."\n";
+               $xmp .= "\t\t\t\t\t".'</rdf:li>'."\n";
+               $xmp .= "\t\t\t\t".'</rdf:Bag>'."\n";
+               $xmp .= "\t\t\t".'</pdfaExtension:schemas>'."\n";
+               $xmp .= "\t\t".'</rdf:Description>'."\n";
+               $xmp .= "\t".'</rdf:RDF>'."\n";
+               $xmp .= $this->custom_xmp;
+               $xmp .= '</x:xmpmeta>'."\n";
+               $xmp .= '<?xpacket end="w"?>';
+               $out = '<< /Type /Metadata /Subtype /XML /Length '.strlen($xmp).' >> stream'."\n".$xmp."\n".'endstream'."\n".'endobj';
+               // restore previous isunicode value
+               $this->isunicode = $prev_isunicode;
+               $this->encrypted = $prev_encrypted;
+               $this->_out($out);
+               return $oid;
+       }
+
+       /**
+        * Output Catalog.
+        * @return int object id
+        * @protected
+        */
+       protected function _putcatalog() {
+               // put XMP
+               $xmpobj = $this->_putXMP();
+               // if required, add standard sRGB_IEC61966-2.1 blackscaled ICC colour profile
+               if ($this->pdfa_mode OR $this->force_srgb) {
+                       $iccobj = $this->_newobj();
+                       $icc = file_get_contents(dirname(__FILE__).'/include/sRGB.icc');
+                       $filter = '';
+                       if ($this->compress) {
+                               $filter = ' /Filter /FlateDecode';
+                               $icc = gzcompress($icc);
+                       }
+                       $icc = $this->_getrawstream($icc);
+                       $this->_out('<</N 3 '.$filter.'/Length '.strlen($icc).'>> stream'."\n".$icc."\n".'endstream'."\n".'endobj');
+               }
+               // start catalog
+               $oid = $this->_newobj();
+               $out = '<< /Type /Catalog';
+               $out .= ' /Version /'.$this->PDFVersion;
+               //$out .= ' /Extensions <<>>';
+               $out .= ' /Pages 1 0 R';
+               //$out .= ' /PageLabels ' //...;
+               $out .= ' /Names <<';
+               if ((!$this->pdfa_mode) AND !empty($this->n_js)) {
+                       $out .= ' /JavaScript '.$this->n_js;
+               }
+               if (!empty($this->efnames)) {
+                       $out .= ' /EmbeddedFiles <</Names [';
+                       foreach ($this->efnames AS $fn => $fref) {
+                               $out .= ' '.$this->_datastring($fn).' '.$fref;
+                       }
+                       $out .= ' ]>>';
+               }
+               $out .= ' >>';
+               if (!empty($this->dests)) {
+                       $out .= ' /Dests '.($this->n_dests).' 0 R';
+               }
+               $out .= $this->_putviewerpreferences();
+               if (isset($this->LayoutMode) AND (!TCPDF_STATIC::empty_string($this->LayoutMode))) {
+                       $out .= ' /PageLayout /'.$this->LayoutMode;
+               }
+               if (isset($this->PageMode) AND (!TCPDF_STATIC::empty_string($this->PageMode))) {
+                       $out .= ' /PageMode /'.$this->PageMode;
+               }
+               if (count($this->outlines) > 0) {
+                       $out .= ' /Outlines '.$this->OutlineRoot.' 0 R';
+                       $out .= ' /PageMode /UseOutlines';
+               }
+               //$out .= ' /Threads []';
+               if ($this->ZoomMode == 'fullpage') {
+                       $out .= ' /OpenAction ['.$this->page_obj_id[1].' 0 R /Fit]';
+               } elseif ($this->ZoomMode == 'fullwidth') {
+                       $out .= ' /OpenAction ['.$this->page_obj_id[1].' 0 R /FitH null]';
+               } elseif ($this->ZoomMode == 'real') {
+                       $out .= ' /OpenAction ['.$this->page_obj_id[1].' 0 R /XYZ null null 1]';
+               } elseif (!is_string($this->ZoomMode)) {
+                       $out .= sprintf(' /OpenAction ['.$this->page_obj_id[1].' 0 R /XYZ null null %F]', ($this->ZoomMode / 100));
+               }
+               //$out .= ' /AA <<>>';
+               //$out .= ' /URI <<>>';
+               $out .= ' /Metadata '.$xmpobj.' 0 R';
+               //$out .= ' /StructTreeRoot <<>>';
+               //$out .= ' /MarkInfo <<>>';
+               if (isset($this->l['a_meta_language'])) {
+                       $out .= ' /Lang '.$this->_textstring($this->l['a_meta_language'], $oid);
+               }
+               //$out .= ' /SpiderInfo <<>>';
+               // set OutputIntent to sRGB IEC61966-2.1 if required
+               if ($this->pdfa_mode OR $this->force_srgb) {
+                       $out .= ' /OutputIntents [<<';
+                       $out .= ' /Type /OutputIntent';
+                       $out .= ' /S /GTS_PDFA1';
+                       $out .= ' /OutputCondition '.$this->_textstring('sRGB IEC61966-2.1', $oid);
+                       $out .= ' /OutputConditionIdentifier '.$this->_textstring('sRGB IEC61966-2.1', $oid);
+                       $out .= ' /RegistryName '.$this->_textstring('http://www.color.org', $oid);
+                       $out .= ' /Info '.$this->_textstring('sRGB IEC61966-2.1', $oid);
+                       $out .= ' /DestOutputProfile '.$iccobj.' 0 R';
+                       $out .= ' >>]';
+               }
+               //$out .= ' /PieceInfo <<>>';
+               if (!empty($this->pdflayers)) {
+                       $lyrobjs = '';
+                       $lyrobjs_off = '';
+                       $lyrobjs_lock = '';
+                       foreach ($this->pdflayers as $layer) {
+                               $layer_obj_ref = ' '.$layer['objid'].' 0 R';
+                               $lyrobjs .= $layer_obj_ref;
+                               if ($layer['view'] === false) {
+                                       $lyrobjs_off .= $layer_obj_ref;
+                               }
+                               if ($layer['lock']) {
+                                       $lyrobjs_lock .= $layer_obj_ref;
+                               }
+                       }
+                       $out .= ' /OCProperties << /OCGs ['.$lyrobjs.']';
+                       $out .= ' /D <<';
+                       $out .= ' /Name '.$this->_textstring('Layers', $oid);
+                       $out .= ' /Creator '.$this->_textstring('TCPDF', $oid);
+                       $out .= ' /BaseState /ON';
+                       $out .= ' /OFF ['.$lyrobjs_off.']';
+                       $out .= ' /Locked ['.$lyrobjs_lock.']';
+                       $out .= ' /Intent /View';
+                       $out .= ' /AS [';
+                       $out .= ' << /Event /Print /OCGs ['.$lyrobjs.'] /Category [/Print] >>';
+                       $out .= ' << /Event /View /OCGs ['.$lyrobjs.'] /Category [/View] >>';
+                       $out .= ' ]';
+                       $out .= ' /Order ['.$lyrobjs.']';
+                       $out .= ' /ListMode /AllPages';
+                       //$out .= ' /RBGroups ['..']';
+                       //$out .= ' /Locked ['..']';
+                       $out .= ' >>';
+                       $out .= ' >>';
+               }
+               // AcroForm
+               if (!empty($this->form_obj_id)
+                       OR ($this->sign AND isset($this->signature_data['cert_type']))
+                       OR !empty($this->empty_signature_appearance)) {
+                       $out .= ' /AcroForm <<';
+                       $objrefs = '';
+                       if ($this->sign AND isset($this->signature_data['cert_type'])) {
+                               // set reference for signature object
+                               $objrefs .= $this->sig_obj_id.' 0 R';
+                       }
+                       if (!empty($this->empty_signature_appearance)) {
+                               foreach ($this->empty_signature_appearance as $esa) {
+                                       // set reference for empty signature objects
+                                       $objrefs .= ' '.$esa['objid'].' 0 R';
+                               }
+                       }
+                       if (!empty($this->form_obj_id)) {
+                               foreach($this->form_obj_id as $objid) {
+                                       $objrefs .= ' '.$objid.' 0 R';
+                               }
+                       }
+                       $out .= ' /Fields ['.$objrefs.']';
+                       // It's better to turn off this value and set the appearance stream for each annotation (/AP) to avoid conflicts with signature fields.
+                       if (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A')) {
+                               $out .= ' /NeedAppearances false';
+                       }
+                       if ($this->sign AND isset($this->signature_data['cert_type'])) {
+                               if ($this->signature_data['cert_type'] > 0) {
+                                       $out .= ' /SigFlags 3';
+                               } else {
+                                       $out .= ' /SigFlags 1';
+                               }
+                       }
+                       //$out .= ' /CO ';
+                       if (isset($this->annotation_fonts) AND !empty($this->annotation_fonts)) {
+                               $out .= ' /DR <<';
+                               $out .= ' /Font <<';
+                               foreach ($this->annotation_fonts as $fontkey => $fontid) {
+                                       $out .= ' /F'.$fontid.' '.$this->font_obj_ids[$fontkey].' 0 R';
+                               }
+                               $out .= ' >> >>';
+                       }
+                       $font = $this->getFontBuffer('helvetica');
+                       $out .= ' /DA (/F'.$font['i'].' 0 Tf 0 g)';
+                       $out .= ' /Q '.(($this->rtl)?'2':'0');
+                       //$out .= ' /XFA ';
+                       $out .= ' >>';
+                       // signatures
+                       if ($this->sign AND isset($this->signature_data['cert_type']) 
+                               AND (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A'))) {
+                               if ($this->signature_data['cert_type'] > 0) {
+                                       $out .= ' /Perms << /DocMDP '.($this->sig_obj_id + 1).' 0 R >>';
+                               } else {
+                                       $out .= ' /Perms << /UR3 '.($this->sig_obj_id + 1).' 0 R >>';
+                               }
+                       }
+               }
+               //$out .= ' /Legal <<>>';
+               //$out .= ' /Requirements []';
+               //$out .= ' /Collection <<>>';
+               //$out .= ' /NeedsRendering true';
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+               return $oid;
+       }
+
+       /**
+        * Output viewer preferences.
+        * @return string for viewer preferences
+        * @author Nicola asuni
+        * @since 3.1.000 (2008-06-09)
+        * @protected
+        */
+       protected function _putviewerpreferences() {
+               $vp = $this->viewer_preferences;
+               $out = ' /ViewerPreferences <<';
+               if ($this->rtl) {
+                       $out .= ' /Direction /R2L';
+               } else {
+                       $out .= ' /Direction /L2R';
+               }
+               if (isset($vp['HideToolbar']) AND ($vp['HideToolbar'])) {
+                       $out .= ' /HideToolbar true';
+               }
+               if (isset($vp['HideMenubar']) AND ($vp['HideMenubar'])) {
+                       $out .= ' /HideMenubar true';
+               }
+               if (isset($vp['HideWindowUI']) AND ($vp['HideWindowUI'])) {
+                       $out .= ' /HideWindowUI true';
+               }
+               if (isset($vp['FitWindow']) AND ($vp['FitWindow'])) {
+                       $out .= ' /FitWindow true';
+               }
+               if (isset($vp['CenterWindow']) AND ($vp['CenterWindow'])) {
+                       $out .= ' /CenterWindow true';
+               }
+               if (isset($vp['DisplayDocTitle']) AND ($vp['DisplayDocTitle'])) {
+                       $out .= ' /DisplayDocTitle true';
+               }
+               if (isset($vp['NonFullScreenPageMode'])) {
+                       $out .= ' /NonFullScreenPageMode /'.$vp['NonFullScreenPageMode'];
+               }
+               if (isset($vp['ViewArea'])) {
+                       $out .= ' /ViewArea /'.$vp['ViewArea'];
+               }
+               if (isset($vp['ViewClip'])) {
+                       $out .= ' /ViewClip /'.$vp['ViewClip'];
+               }
+               if (isset($vp['PrintArea'])) {
+                       $out .= ' /PrintArea /'.$vp['PrintArea'];
+               }
+               if (isset($vp['PrintClip'])) {
+                       $out .= ' /PrintClip /'.$vp['PrintClip'];
+               }
+               if (isset($vp['PrintScaling'])) {
+                       $out .= ' /PrintScaling /'.$vp['PrintScaling'];
+               }
+               if (isset($vp['Duplex']) AND (!TCPDF_STATIC::empty_string($vp['Duplex']))) {
+                       $out .= ' /Duplex /'.$vp['Duplex'];
+               }
+               if (isset($vp['PickTrayByPDFSize'])) {
+                       if ($vp['PickTrayByPDFSize']) {
+                               $out .= ' /PickTrayByPDFSize true';
+                       } else {
+                               $out .= ' /PickTrayByPDFSize false';
+                       }
+               }
+               if (isset($vp['PrintPageRange'])) {
+                       $PrintPageRangeNum = '';
+                       foreach ($vp['PrintPageRange'] as $k => $v) {
+                               $PrintPageRangeNum .= ' '.($v - 1).'';
+                       }
+                       $out .= ' /PrintPageRange ['.substr($PrintPageRangeNum,1).']';
+               }
+               if (isset($vp['NumCopies'])) {
+                       $out .= ' /NumCopies '.intval($vp['NumCopies']);
+               }
+               $out .= ' >>';
+               return $out;
+       }
+
+       /**
+        * Output PDF File Header (7.5.2).
+        * @protected
+        */
+       protected function _putheader() {
+               $this->_out('%PDF-'.$this->PDFVersion);
+               $this->_out('%'.chr(0xe2).chr(0xe3).chr(0xcf).chr(0xd3));
+       }
+
+       /**
+        * Output end of document (EOF).
+        * @protected
+        */
+       protected function _enddoc() {
+               if (isset($this->CurrentFont['fontkey']) AND isset($this->CurrentFont['subsetchars'])) {
+                       // save subset chars of the previous font
+                       $this->setFontSubBuffer($this->CurrentFont['fontkey'], 'subsetchars', $this->CurrentFont['subsetchars']);
+               }
+               $this->state = 1;
+               $this->_putheader();
+               $this->_putpages();
+               $this->_putresources();
+               // empty signature fields
+               if (!empty($this->empty_signature_appearance)) {
+                       foreach ($this->empty_signature_appearance as $key => $esa) {
+                               // widget annotation for empty signature
+                               $out = $this->_getobj($esa['objid'])."\n";
+                               $out .= '<< /Type /Annot';
+                               $out .= ' /Subtype /Widget';
+                               $out .= ' /Rect ['.$esa['rect'].']';
+                               $out .= ' /P '.$this->page_obj_id[($esa['page'])].' 0 R'; // link to signature appearance page
+                               $out .= ' /F 4';
+                               $out .= ' /FT /Sig';
+                               $signame = $esa['name'].sprintf(' [%03d]', ($key + 1));
+                               $out .= ' /T '.$this->_textstring($signame, $esa['objid']);
+                               $out .= ' /Ff 0';
+                               $out .= ' >>';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                       }
+               }
+               // Signature
+               if ($this->sign AND isset($this->signature_data['cert_type'])) {
+                       // widget annotation for signature
+                       $out = $this->_getobj($this->sig_obj_id)."\n";
+                       $out .= '<< /Type /Annot';
+                       $out .= ' /Subtype /Widget';
+                       $out .= ' /Rect ['.$this->signature_appearance['rect'].']';
+                       $out .= ' /P '.$this->page_obj_id[($this->signature_appearance['page'])].' 0 R'; // link to signature appearance page
+                       $out .= ' /F 4';
+                       $out .= ' /FT /Sig';
+                       $out .= ' /T '.$this->_textstring($this->signature_appearance['name'], $this->sig_obj_id);
+                       $out .= ' /Ff 0';
+                       $out .= ' /V '.($this->sig_obj_id + 1).' 0 R';
+                       $out .= ' >>';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+                       // signature
+                       $this->_putsignature();
+               }
+               // Info
+               $objid_info = $this->_putinfo();
+               // Catalog
+               $objid_catalog = $this->_putcatalog();
+               // Cross-ref
+               $o = $this->bufferlen;
+               // XREF section
+               $this->_out('xref');
+               $this->_out('0 '.($this->n + 1));
+               $this->_out('0000000000 65535 f ');
+               $freegen = ($this->n + 2);
+               for ($i=1; $i <= $this->n; ++$i) {
+                       if (!isset($this->offsets[$i]) AND ($i > 1)) {
+                               $this->_out(sprintf('0000000000 %05d f ', $freegen));
+                               ++$freegen;
+                       } else {
+                               $this->_out(sprintf('%010d 00000 n ', $this->offsets[$i]));
+                       }
+               }
+               // TRAILER
+               $out = 'trailer'."\n";
+               $out .= '<<';
+               $out .= ' /Size '.($this->n + 1);
+               $out .= ' /Root '.$objid_catalog.' 0 R';
+               $out .= ' /Info '.$objid_info.' 0 R';
+               if ($this->encrypted) {
+                       $out .= ' /Encrypt '.$this->encryptdata['objid'].' 0 R';
+               }
+               $out .= ' /ID [ <'.$this->file_id.'> <'.$this->file_id.'> ]';
+               $out .= ' >>';
+               $this->_out($out);
+               $this->_out('startxref');
+               $this->_out($o);
+               $this->_out('%%EOF');
+               $this->state = 3; // end-of-doc
+               if ($this->diskcache) {
+                       // remove temporary files used for images
+                       foreach ($this->imagekeys as $key) {
+                               // remove temporary files
+                               unlink($this->images[$key]);
+                       }
+                       foreach ($this->fontkeys as $key) {
+                               // remove temporary files
+                               unlink($this->fonts[$key]);
+                       }
+               }
+       }
+
+       /**
+        * Initialize a new page.
+        * @param $orientation (string) page orientation. Possible values are (case insensitive):<ul><li>P or PORTRAIT (default)</li><li>L or LANDSCAPE</li></ul>
+        * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat().
+        * @protected
+        * @see getPageSizeFromFormat(), setPageFormat()
+        */
+       protected function _beginpage($orientation='', $format='') {
+               ++$this->page;
+               $this->pageobjects[$this->page] = array();
+               $this->setPageBuffer($this->page, '');
+               // initialize array for graphics tranformation positions inside a page buffer
+               $this->transfmrk[$this->page] = array();
+               $this->state = 2;
+               if (TCPDF_STATIC::empty_string($orientation)) {
+                       if (isset($this->CurOrientation)) {
+                               $orientation = $this->CurOrientation;
+                       } elseif ($this->fwPt > $this->fhPt) {
+                               // landscape
+                               $orientation = 'L';
+                       } else {
+                               // portrait
+                               $orientation = 'P';
+                       }
+               }
+               if (TCPDF_STATIC::empty_string($format)) {
+                       $this->pagedim[$this->page] = $this->pagedim[($this->page - 1)];
+                       $this->setPageOrientation($orientation);
+               } else {
+                       $this->setPageFormat($format, $orientation);
+               }
+               if ($this->rtl) {
+                       $this->x = $this->w - $this->rMargin;
+               } else {
+                       $this->x = $this->lMargin;
+               }
+               $this->y = $this->tMargin;
+               if (isset($this->newpagegroup[$this->page])) {
+                       // start a new group
+                       $this->currpagegroup = $this->newpagegroup[$this->page];
+                       $this->pagegroups[$this->currpagegroup] = 1;
+               } elseif (isset($this->currpagegroup) AND ($this->currpagegroup > 0)) {
+                       ++$this->pagegroups[$this->currpagegroup];
+               }
+       }
+
+       /**
+        * Mark end of page.
+        * @protected
+        */
+       protected function _endpage() {
+               $this->setVisibility('all');
+               $this->state = 1;
+       }
+
+       /**
+        * Begin a new object and return the object number.
+        * @return int object number
+        * @protected
+        */
+       protected function _newobj() {
+               $this->_out($this->_getobj());
+               return $this->n;
+       }
+
+       /**
+        * Return the starting object string for the selected object ID.
+        * @param $objid (int) Object ID (leave empty to get a new ID).
+        * @return string the starting object string
+        * @protected
+        * @since 5.8.009 (2010-08-20)
+        */
+       protected function _getobj($objid='') {
+               if ($objid === '') {
+                       ++$this->n;
+                       $objid = $this->n;
+               }
+               $this->offsets[$objid] = $this->bufferlen;
+               $this->pageobjects[$this->page][] = $objid;
+               return $objid.' 0 obj';
+       }
+
+       /**
+        * Underline text.
+        * @param $x (int) X coordinate
+        * @param $y (int) Y coordinate
+        * @param $txt (string) text to underline
+        * @protected
+        */
+       protected function _dounderline($x, $y, $txt) {
+               $w = $this->GetStringWidth($txt);
+               return $this->_dounderlinew($x, $y, $w);
+       }
+
+       /**
+        * Underline for rectangular text area.
+        * @param $x (int) X coordinate
+        * @param $y (int) Y coordinate
+        * @param $w (int) width to underline
+        * @protected
+        * @since 4.8.008 (2009-09-29)
+        */
+       protected function _dounderlinew($x, $y, $w) {
+               $linew = - $this->CurrentFont['ut'] / 1000 * $this->FontSizePt;
+               return sprintf('%F %F %F %F re f', $x * $this->k, ((($this->h - $y) * $this->k) + $linew), $w * $this->k, $linew);
+       }
+
+       /**
+        * Line through text.
+        * @param $x (int) X coordinate
+        * @param $y (int) Y coordinate
+        * @param $txt (string) text to linethrough
+        * @protected
+        */
+       protected function _dolinethrough($x, $y, $txt) {
+               $w = $this->GetStringWidth($txt);
+               return $this->_dolinethroughw($x, $y, $w);
+       }
+
+       /**
+        * Line through for rectangular text area.
+        * @param $x (int) X coordinate
+        * @param $y (int) Y coordinate
+        * @param $w (int) line length (width)
+        * @protected
+        * @since 4.9.008 (2009-09-29)
+        */
+       protected function _dolinethroughw($x, $y, $w) {
+               $linew = - $this->CurrentFont['ut'] / 1000 * $this->FontSizePt;
+               return sprintf('%F %F %F %F re f', $x * $this->k, ((($this->h - $y) * $this->k) + $linew + ($this->FontSizePt / 3)), $w * $this->k, $linew);
+       }
+
+       /**
+        * Overline text.
+        * @param $x (int) X coordinate
+        * @param $y (int) Y coordinate
+        * @param $txt (string) text to overline
+        * @protected
+        * @since 4.9.015 (2010-04-19)
+        */
+       protected function _dooverline($x, $y, $txt) {
+               $w = $this->GetStringWidth($txt);
+               return $this->_dooverlinew($x, $y, $w);
+       }
+
+       /**
+        * Overline for rectangular text area.
+        * @param $x (int) X coordinate
+        * @param $y (int) Y coordinate
+        * @param $w (int) width to overline
+        * @protected
+        * @since 4.9.015 (2010-04-19)
+        */
+       protected function _dooverlinew($x, $y, $w) {
+               $linew = - $this->CurrentFont['ut'] / 1000 * $this->FontSizePt;
+               return sprintf('%F %F %F %F re f', $x * $this->k, (($this->h - $y + $this->FontAscent) * $this->k) - $linew, $w * $this->k, $linew);
+
+       }
+
+       /**
+        * Format a data string for meta information
+        * @param $s (string) data string to escape.
+        * @param $n (int) object ID
+        * @return string escaped string.
+        * @protected
+        */
+       protected function _datastring($s, $n=0) {
+               if ($n == 0) {
+                       $n = $this->n;
+               }
+               $s = $this->_encrypt_data($n, $s);
+               return '('. TCPDF_STATIC::_escape($s).')';
+       }
+
+       /**
+        * Set the document creation timestamp
+        * @param $time (mixed) Document creation timestamp in seconds or date-time string.
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function setDocCreationTimestamp($time) {
+               if (is_string($time)) {
+                       $time = TCPDF_STATIC::getTimestamp($time);
+               }
+               $this->doc_creation_timestamp = intval($time);
+       }
+
+       /**
+        * Set the document modification timestamp
+        * @param $time (mixed) Document modification timestamp in seconds or date-time string.
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function setDocModificationTimestamp($time) {
+               if (is_string($time)) {
+                       $time = TCPDF_STATIC::getTimestamp($time);
+               }
+               $this->doc_modification_timestamp = intval($time);
+       }
+
+       /**
+        * Returns document creation timestamp in seconds.
+        * @return (int) Creation timestamp in seconds.
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function getDocCreationTimestamp() {
+               return $this->doc_creation_timestamp;
+       }
+
+       /**
+        * Returns document modification timestamp in seconds.
+        * @return (int) Modfication timestamp in seconds.
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function getDocModificationTimestamp() {
+               return $this->doc_modification_timestamp;
+       }
+
+       /**
+        * Returns a formatted date for meta information
+        * @param $n (int) Object ID.
+        * @param $timestamp (int) Timestamp to convert.
+        * @return string escaped date string.
+        * @protected
+        * @since 4.6.028 (2009-08-25)
+        */
+       protected function _datestring($n=0, $timestamp=0) {
+               if ((empty($timestamp)) OR ($timestamp < 0)) {
+                       $timestamp = $this->doc_creation_timestamp;
+               }
+               return $this->_datastring('D:'.TCPDF_STATIC::getFormattedDate($timestamp), $n);
+       }
+
+       /**
+        * Format a text string for meta information
+        * @param $s (string) string to escape.
+        * @param $n (int) object ID
+        * @return string escaped string.
+        * @protected
+        */
+       protected function _textstring($s, $n=0) {
+               if ($this->isunicode) {
+                       //Convert string to UTF-16BE
+                       $s = TCPDF_FONTS::UTF8ToUTF16BE($s, true, $this->isunicode, $this->CurrentFont);
+               }
+               return $this->_datastring($s, $n);
+       }
+
+       /**
+        * THIS METHOD IS DEPRECATED
+        * Format a text string
+        * @param $s (string) string to escape.
+        * @return string escaped string.
+        * @protected
+        * @deprecated
+        */
+       protected function _escapetext($s) {
+               if ($this->isunicode) {
+                       if (($this->CurrentFont['type'] == 'core') OR ($this->CurrentFont['type'] == 'TrueType') OR ($this->CurrentFont['type'] == 'Type1')) {
+                               $s = TCPDF_FONTS::UTF8ToLatin1($s, $this->isunicode, $this->CurrentFont);
+                       } else {
+                               //Convert string to UTF-16BE and reverse RTL language
+                               $s = TCPDF_FONTS::utf8StrRev($s, false, $this->tmprtl, $this->isunicode, $this->CurrentFont);
+                       }
+               }
+               return TCPDF_STATIC::_escape($s);
+       }
+
+       /**
+        * get raw output stream.
+        * @param $s (string) string to output.
+        * @param $n (int) object reference for encryption mode
+        * @protected
+        * @author Nicola Asuni
+        * @since 5.5.000 (2010-06-22)
+        */
+       protected function _getrawstream($s, $n=0) {
+               if ($n <= 0) {
+                       // default to current object
+                       $n = $this->n;
+               }
+               return $this->_encrypt_data($n, $s);
+       }
+
+       /**
+        * Format output stream (DEPRECATED).
+        * @param $s (string) string to output.
+        * @param $n (int) object reference for encryption mode
+        * @protected
+        * @deprecated
+        */
+       protected function _getstream($s, $n=0) {
+               return 'stream'."\n".$this->_getrawstream($s, $n)."\n".'endstream';
+       }
+
+       /**
+        * Output a stream (DEPRECATED).
+        * @param $s (string) string to output.
+        * @param $n (int) object reference for encryption mode
+        * @protected
+        * @deprecated
+        */
+       protected function _putstream($s, $n=0) {
+               $this->_out($this->_getstream($s, $n));
+       }
+
+       /**
+        * Output a string to the document.
+        * @param $s (string) string to output.
+        * @protected
+        */
+       protected function _out($s) {
+               if ($this->state == 2) {
+                       if ($this->inxobj) {
+                               // we are inside an XObject template
+                               $this->xobjects[$this->xobjid]['outdata'] .= $s."\n";
+                       } elseif ((!$this->InFooter) AND isset($this->footerlen[$this->page]) AND ($this->footerlen[$this->page] > 0)) {
+                               // puts data before page footer
+                               $pagebuff = $this->getPageBuffer($this->page);
+                               $page = substr($pagebuff, 0, -$this->footerlen[$this->page]);
+                               $footer = substr($pagebuff, -$this->footerlen[$this->page]);
+                               $this->setPageBuffer($this->page, $page.$s."\n".$footer);
+                               // update footer position
+                               $this->footerpos[$this->page] += strlen($s."\n");
+                       } else {
+                               // set page data
+                               $this->setPageBuffer($this->page, $s."\n", true);
+                       }
+               } elseif ($this->state > 0) {
+                       // set general data
+                       $this->setBuffer($s."\n");
+               }
+       }
+
+       /**
+        * Set header font.
+        * @param $font (array) Array describing the basic font parameters: (family, style, size).
+        * @public
+        * @since 1.1
+        */
+       public function setHeaderFont($font) {
+               $this->header_font = $font;
+       }
+
+       /**
+        * Get header font.
+        * @return array() Array describing the basic font parameters: (family, style, size).
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getHeaderFont() {
+               return $this->header_font;
+       }
+
+       /**
+        * Set footer font.
+        * @param $font (array) Array describing the basic font parameters: (family, style, size).
+        * @public
+        * @since 1.1
+        */
+       public function setFooterFont($font) {
+               $this->footer_font = $font;
+       }
+
+       /**
+        * Get Footer font.
+        * @return array() Array describing the basic font parameters: (family, style, size).
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getFooterFont() {
+               return $this->footer_font;
+       }
+
+       /**
+        * Set language array.
+        * @param $language (array)
+        * @public
+        * @since 1.1
+        */
+       public function setLanguageArray($language) {
+               $this->l = $language;
+               if (isset($this->l['a_meta_dir'])) {
+                       $this->rtl = $this->l['a_meta_dir']=='rtl' ? true : false;
+               } else {
+                       $this->rtl = false;
+               }
+       }
+
+       /**
+        * Returns the PDF data.
+        * @public
+        */
+       public function getPDFData() {
+               if ($this->state < 3) {
+                       $this->Close();
+               }
+               return $this->buffer;
+       }
+
+       /**
+        * Output anchor link.
+        * @param $url (string) link URL or internal link (i.e.: &lt;a href="#23,4.5"&gt;link to page 23 at 4.5 Y position&lt;/a&gt;)
+        * @param $name (string) link name
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $firstline (boolean) if true prints only the first line and return the remaining string.
+        * @param $color (array) array of RGB text color
+        * @param $style (string) font style (U, D, B, I)
+        * @param $firstblock (boolean) if true the string is the starting of a line.
+        * @return the number of cells used or the remaining text if $firstline = true;
+        * @public
+        */
+       public function addHtmlLink($url, $name, $fill=false, $firstline=false, $color='', $style=-1, $firstblock=false) {
+               if (isset($url[1]) AND ($url[0] == '#')) {
+                       // convert url to internal link
+                       $lnkdata = explode(',', $url);
+                       if (isset($lnkdata[0]) ) {
+                               $page = substr($lnkdata[0], 1);
+                               if (isset($lnkdata[1]) AND (strlen($lnkdata[1]) > 0)) {
+                                       $lnky = floatval($lnkdata[1]);
+                               } else {
+                                       $lnky = 0;
+                               }
+                               $url = $this->AddLink();
+                               $this->SetLink($url, $lnky, $page);
+                       }
+               }
+               // store current settings
+               $prevcolor = $this->fgcolor;
+               $prevstyle = $this->FontStyle;
+               if (empty($color)) {
+                       $this->SetTextColorArray($this->htmlLinkColorArray);
+               } else {
+                       $this->SetTextColorArray($color);
+               }
+               if ($style == -1) {
+                       $this->SetFont('', $this->FontStyle.$this->htmlLinkFontStyle);
+               } else {
+                       $this->SetFont('', $this->FontStyle.$style);
+               }
+               $ret = $this->Write($this->lasth, $name, $url, $fill, '', false, 0, $firstline, $firstblock, 0);
+               // restore settings
+               $this->SetFont('', $prevstyle);
+               $this->SetTextColorArray($prevcolor);
+               return $ret;
+       }
+
+       /**
+        * Converts pixels to User's Units.
+        * @param $px (int) pixels
+        * @return float value in user's unit
+        * @public
+        * @see setImageScale(), getImageScale()
+        */
+       public function pixelsToUnits($px) {
+               return ($px / ($this->imgscale * $this->k));
+       }
+
+       /**
+        * Reverse function for htmlentities.
+        * Convert entities in UTF-8.
+        * @param $text_to_convert (string) Text to convert.
+        * @return string converted text string
+        * @public
+        */
+       public function unhtmlentities($text_to_convert) {
+               return @html_entity_decode($text_to_convert, ENT_QUOTES, $this->encoding);
+       }
+
+       // ENCRYPTION METHODS ----------------------------------
+
+       /**
+        * Compute encryption key depending on object number where the encrypted data is stored.
+        * This is used for all strings and streams without crypt filter specifier.
+        * @param $n (int) object number
+        * @return int object key
+        * @protected
+        * @author Nicola Asuni
+        * @since 2.0.000 (2008-01-02)
+        */
+       protected function _objectkey($n) {
+               $objkey = $this->encryptdata['key'].pack('VXxx', $n);
+               if ($this->encryptdata['mode'] == 2) { // AES-128
+                       // AES padding
+                       $objkey .= "\x73\x41\x6C\x54"; // sAlT
+               }
+               $objkey = substr(TCPDF_STATIC::_md5_16($objkey), 0, (($this->encryptdata['Length'] / 8) + 5));
+               $objkey = substr($objkey, 0, 16);
+               return $objkey;
+       }
+
+       /**
+        * Encrypt the input string.
+        * @param $n (int) object number
+        * @param $s (string) data string to encrypt
+        * @return encrypted string
+        * @protected
+        * @author Nicola Asuni
+        * @since 5.0.005 (2010-05-11)
+        */
+       protected function _encrypt_data($n, $s) {
+               if (!$this->encrypted) {
+                       return $s;
+               }
+               switch ($this->encryptdata['mode']) {
+                       case 0:   // RC4-40
+                       case 1: { // RC4-128
+                               $s = TCPDF_STATIC::_RC4($this->_objectkey($n), $s, $this->last_enc_key, $this->last_enc_key_c);
+                               break;
+                       }
+                       case 2: { // AES-128
+                               $s = TCPDF_STATIC::_AES($this->_objectkey($n), $s);
+                               break;
+                       }
+                       case 3: { // AES-256
+                               $s = TCPDF_STATIC::_AES($this->encryptdata['key'], $s);
+                               break;
+                       }
+               }
+               return $s;
+       }
+
+       /**
+        * Put encryption on PDF document.
+        * @protected
+        * @author Nicola Asuni
+        * @since 2.0.000 (2008-01-02)
+        */
+       protected function _putencryption() {
+               if (!$this->encrypted) {
+                       return;
+               }
+               $this->encryptdata['objid'] = $this->_newobj();
+               $out = '<<';
+               if (!isset($this->encryptdata['Filter']) OR empty($this->encryptdata['Filter'])) {
+                       $this->encryptdata['Filter'] = 'Standard';
+               }
+               $out .= ' /Filter /'.$this->encryptdata['Filter'];
+               if (isset($this->encryptdata['SubFilter']) AND !empty($this->encryptdata['SubFilter'])) {
+                       $out .= ' /SubFilter /'.$this->encryptdata['SubFilter'];
+               }
+               if (!isset($this->encryptdata['V']) OR empty($this->encryptdata['V'])) {
+                       $this->encryptdata['V'] = 1;
+               }
+               // V is a code specifying the algorithm to be used in encrypting and decrypting the document
+               $out .= ' /V '.$this->encryptdata['V'];
+               if (isset($this->encryptdata['Length']) AND !empty($this->encryptdata['Length'])) {
+                       // The length of the encryption key, in bits. The value shall be a multiple of 8, in the range 40 to 256
+                       $out .= ' /Length '.$this->encryptdata['Length'];
+               } else {
+                       $out .= ' /Length 40';
+               }
+               if ($this->encryptdata['V'] >= 4) {
+                       if (!isset($this->encryptdata['StmF']) OR empty($this->encryptdata['StmF'])) {
+                               $this->encryptdata['StmF'] = 'Identity';
+                       }
+                       if (!isset($this->encryptdata['StrF']) OR empty($this->encryptdata['StrF'])) {
+                               // The name of the crypt filter that shall be used when decrypting all strings in the document.
+                               $this->encryptdata['StrF'] = 'Identity';
+                       }
+                       // A dictionary whose keys shall be crypt filter names and whose values shall be the corresponding crypt filter dictionaries.
+                       if (isset($this->encryptdata['CF']) AND !empty($this->encryptdata['CF'])) {
+                               $out .= ' /CF <<';
+                               $out .= ' /'.$this->encryptdata['StmF'].' <<';
+                               $out .= ' /Type /CryptFilter';
+                               if (isset($this->encryptdata['CF']['CFM']) AND !empty($this->encryptdata['CF']['CFM'])) {
+                                       // The method used
+                                       $out .= ' /CFM /'.$this->encryptdata['CF']['CFM'];
+                                       if ($this->encryptdata['pubkey']) {
+                                               $out .= ' /Recipients [';
+                                               foreach ($this->encryptdata['Recipients'] as $rec) {
+                                                       $out .= ' <'.$rec.'>';
+                                               }
+                                               $out .= ' ]';
+                                               if (isset($this->encryptdata['CF']['EncryptMetadata']) AND (!$this->encryptdata['CF']['EncryptMetadata'])) {
+                                                       $out .= ' /EncryptMetadata false';
+                                               } else {
+                                                       $out .= ' /EncryptMetadata true';
+                                               }
+                                       }
+                               } else {
+                                       $out .= ' /CFM /None';
+                               }
+                               if (isset($this->encryptdata['CF']['AuthEvent']) AND !empty($this->encryptdata['CF']['AuthEvent'])) {
+                                       // The event to be used to trigger the authorization that is required to access encryption keys used by this filter.
+                                       $out .= ' /AuthEvent /'.$this->encryptdata['CF']['AuthEvent'];
+                               } else {
+                                       $out .= ' /AuthEvent /DocOpen';
+                               }
+                               if (isset($this->encryptdata['CF']['Length']) AND !empty($this->encryptdata['CF']['Length'])) {
+                                       // The bit length of the encryption key.
+                                       $out .= ' /Length '.$this->encryptdata['CF']['Length'];
+                               }
+                               $out .= ' >> >>';
+                       }
+                       // The name of the crypt filter that shall be used by default when decrypting streams.
+                       $out .= ' /StmF /'.$this->encryptdata['StmF'];
+                       // The name of the crypt filter that shall be used when decrypting all strings in the document.
+                       $out .= ' /StrF /'.$this->encryptdata['StrF'];
+                       if (isset($this->encryptdata['EFF']) AND !empty($this->encryptdata['EFF'])) {
+                               // The name of the crypt filter that shall be used when encrypting embedded file streams that do not have their own crypt filter specifier.
+                               $out .= ' /EFF /'.$this->encryptdata[''];
+                       }
+               }
+               // Additional encryption dictionary entries for the standard security handler
+               if ($this->encryptdata['pubkey']) {
+                       if (($this->encryptdata['V'] < 4) AND isset($this->encryptdata['Recipients']) AND !empty($this->encryptdata['Recipients'])) {
+                               $out .= ' /Recipients [';
+                               foreach ($this->encryptdata['Recipients'] as $rec) {
+                                       $out .= ' <'.$rec.'>';
+                               }
+                               $out .= ' ]';
+                       }
+               } else {
+                       $out .= ' /R';
+                       if ($this->encryptdata['V'] == 5) { // AES-256
+                               $out .= ' 5';
+                               $out .= ' /OE ('.TCPDF_STATIC::_escape($this->encryptdata['OE']).')';
+                               $out .= ' /UE ('.TCPDF_STATIC::_escape($this->encryptdata['UE']).')';
+                               $out .= ' /Perms ('.TCPDF_STATIC::_escape($this->encryptdata['perms']).')';
+                       } elseif ($this->encryptdata['V'] == 4) { // AES-128
+                               $out .= ' 4';
+                       } elseif ($this->encryptdata['V'] < 2) { // RC-40
+                               $out .= ' 2';
+                       } else { // RC-128
+                               $out .= ' 3';
+                       }
+                       $out .= ' /O ('.TCPDF_STATIC::_escape($this->encryptdata['O']).')';
+                       $out .= ' /U ('.TCPDF_STATIC::_escape($this->encryptdata['U']).')';
+                       $out .= ' /P '.$this->encryptdata['P'];
+                       if (isset($this->encryptdata['EncryptMetadata']) AND (!$this->encryptdata['EncryptMetadata'])) {
+                               $out .= ' /EncryptMetadata false';
+                       } else {
+                               $out .= ' /EncryptMetadata true';
+                       }
+               }
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+       }
+
+       /**
+        * Compute U value (used for encryption)
+        * @return string U value
+        * @protected
+        * @since 2.0.000 (2008-01-02)
+        * @author Nicola Asuni
+        */
+       protected function _Uvalue() {
+               if ($this->encryptdata['mode'] == 0) { // RC4-40
+                       return TCPDF_STATIC::_RC4($this->encryptdata['key'], TCPDF_STATIC::$enc_padding, $this->last_enc_key, $this->last_enc_key_c);
+               } elseif ($this->encryptdata['mode'] < 3) { // RC4-128, AES-128
+                       $tmp = TCPDF_STATIC::_md5_16(TCPDF_STATIC::$enc_padding.$this->encryptdata['fileid']);
+                       $enc = TCPDF_STATIC::_RC4($this->encryptdata['key'], $tmp, $this->last_enc_key, $this->last_enc_key_c);
+                       $len = strlen($tmp);
+                       for ($i = 1; $i <= 19; ++$i) {
+                               $ek = '';
+                               for ($j = 0; $j < $len; ++$j) {
+                                       $ek .= chr(ord($this->encryptdata['key'][$j]) ^ $i);
+                               }
+                               $enc = TCPDF_STATIC::_RC4($ek, $enc, $this->last_enc_key, $this->last_enc_key_c);
+                       }
+                       $enc .= str_repeat("\x00", 16);
+                       return substr($enc, 0, 32);
+               } elseif ($this->encryptdata['mode'] == 3) { // AES-256
+                       $seed = TCPDF_STATIC::_md5_16(TCPDF_STATIC::getRandomSeed());
+                       // User Validation Salt
+                       $this->encryptdata['UVS'] = substr($seed, 0, 8);
+                       // User Key Salt
+                       $this->encryptdata['UKS'] = substr($seed, 8, 16);
+                       return hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UVS'], true).$this->encryptdata['UVS'].$this->encryptdata['UKS'];
+               }
+       }
+
+       /**
+        * Compute UE value (used for encryption)
+        * @return string UE value
+        * @protected
+        * @since 5.9.006 (2010-10-19)
+        * @author Nicola Asuni
+        */
+       protected function _UEvalue() {
+               $hashkey = hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UKS'], true);
+               $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
+               return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv);
+       }
+
+       /**
+        * Compute O value (used for encryption)
+        * @return string O value
+        * @protected
+        * @since 2.0.000 (2008-01-02)
+        * @author Nicola Asuni
+        */
+       protected function _Ovalue() {
+               if ($this->encryptdata['mode'] < 3) { // RC4-40, RC4-128, AES-128
+                       $tmp = TCPDF_STATIC::_md5_16($this->encryptdata['owner_password']);
+                       if ($this->encryptdata['mode'] > 0) {
+                               for ($i = 0; $i < 50; ++$i) {
+                                       $tmp = TCPDF_STATIC::_md5_16($tmp);
+                               }
+                       }
+                       $owner_key = substr($tmp, 0, ($this->encryptdata['Length'] / 8));
+                       $enc = TCPDF_STATIC::_RC4($owner_key, $this->encryptdata['user_password'], $this->last_enc_key, $this->last_enc_key_c);
+                       if ($this->encryptdata['mode'] > 0) {
+                               $len = strlen($owner_key);
+                               for ($i = 1; $i <= 19; ++$i) {
+                                       $ek = '';
+                                       for ($j = 0; $j < $len; ++$j) {
+                                               $ek .= chr(ord($owner_key[$j]) ^ $i);
+                                       }
+                                       $enc = TCPDF_STATIC::_RC4($ek, $enc, $this->last_enc_key, $this->last_enc_key_c);
+                               }
+                       }
+                       return $enc;
+               } elseif ($this->encryptdata['mode'] == 3) { // AES-256
+                       $seed = TCPDF_STATIC::_md5_16(TCPDF_STATIC::getRandomSeed());
+                       // Owner Validation Salt
+                       $this->encryptdata['OVS'] = substr($seed, 0, 8);
+                       // Owner Key Salt
+                       $this->encryptdata['OKS'] = substr($seed, 8, 16);
+                       return hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OVS'].$this->encryptdata['U'], true).$this->encryptdata['OVS'].$this->encryptdata['OKS'];
+               }
+       }
+
+       /**
+        * Compute OE value (used for encryption)
+        * @return string OE value
+        * @protected
+        * @since 5.9.006 (2010-10-19)
+        * @author Nicola Asuni
+        */
+       protected function _OEvalue() {
+               $hashkey = hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OKS'].$this->encryptdata['U'], true);
+               $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
+               return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv);
+       }
+
+       /**
+        * Convert password for AES-256 encryption mode
+        * @param $password (string) password
+        * @return string password
+        * @protected
+        * @since 5.9.006 (2010-10-19)
+        * @author Nicola Asuni
+        */
+       protected function _fixAES256Password($password) {
+               $psw = ''; // password to be returned
+               $psw_array = TCPDF_FONTS::utf8Bidi(TCPDF_FONTS::UTF8StringToArray($password, $this->isunicode, $this->CurrentFont), $password, $this->rtl, $this->isunicode, $this->CurrentFont);
+               foreach ($psw_array as $c) {
+                       $psw .= TCPDF_FONTS::unichr($c, $this->isunicode);
+               }
+               return substr($psw, 0, 127);
+       }
+
+       /**
+        * Compute encryption key
+        * @protected
+        * @since 2.0.000 (2008-01-02)
+        * @author Nicola Asuni
+        */
+       protected function _generateencryptionkey() {
+               $keybytelen = ($this->encryptdata['Length'] / 8);
+               if (!$this->encryptdata['pubkey']) { // standard mode
+                       if ($this->encryptdata['mode'] == 3) { // AES-256
+                               // generate 256 bit random key
+                               $this->encryptdata['key'] = substr(hash('sha256', TCPDF_STATIC::getRandomSeed(), true), 0, $keybytelen);
+                               // truncate passwords
+                               $this->encryptdata['user_password'] = $this->_fixAES256Password($this->encryptdata['user_password']);
+                               $this->encryptdata['owner_password'] = $this->_fixAES256Password($this->encryptdata['owner_password']);
+                               // Compute U value
+                               $this->encryptdata['U'] = $this->_Uvalue();
+                               // Compute UE value
+                               $this->encryptdata['UE'] = $this->_UEvalue();
+                               // Compute O value
+                               $this->encryptdata['O'] = $this->_Ovalue();
+                               // Compute OE value
+                               $this->encryptdata['OE'] = $this->_OEvalue();
+                               // Compute P value
+                               $this->encryptdata['P'] = $this->encryptdata['protection'];
+                               // Computing the encryption dictionary's Perms (permissions) value
+                               $perms = TCPDF_STATIC::getEncPermissionsString($this->encryptdata['protection']); // bytes 0-3
+                               $perms .= chr(255).chr(255).chr(255).chr(255); // bytes 4-7
+                               if (isset($this->encryptdata['CF']['EncryptMetadata']) AND (!$this->encryptdata['CF']['EncryptMetadata'])) { // byte 8
+                                       $perms .= 'F';
+                               } else {
+                                       $perms .= 'T';
+                               }
+                               $perms .= 'adb'; // bytes 9-11
+                               $perms .= 'nick'; // bytes 12-15
+                               $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB));
+                               $this->encryptdata['perms'] = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->encryptdata['key'], $perms, MCRYPT_MODE_ECB, $iv);
+                       } else { // RC4-40, RC4-128, AES-128
+                               // Pad passwords
+                               $this->encryptdata['user_password'] = substr($this->encryptdata['user_password'].TCPDF_STATIC::$enc_padding, 0, 32);
+                               $this->encryptdata['owner_password'] = substr($this->encryptdata['owner_password'].TCPDF_STATIC::$enc_padding, 0, 32);
+                               // Compute O value
+                               $this->encryptdata['O'] = $this->_Ovalue();
+                               // get default permissions (reverse byte order)
+                               $permissions = TCPDF_STATIC::getEncPermissionsString($this->encryptdata['protection']);
+                               // Compute encryption key
+                               $tmp = TCPDF_STATIC::_md5_16($this->encryptdata['user_password'].$this->encryptdata['O'].$permissions.$this->encryptdata['fileid']);
+                               if ($this->encryptdata['mode'] > 0) {
+                                       for ($i = 0; $i < 50; ++$i) {
+                                               $tmp = TCPDF_STATIC::_md5_16(substr($tmp, 0, $keybytelen));
+                                       }
+                               }
+                               $this->encryptdata['key'] = substr($tmp, 0, $keybytelen);
+                               // Compute U value
+                               $this->encryptdata['U'] = $this->_Uvalue();
+                               // Compute P value
+                               $this->encryptdata['P'] = $this->encryptdata['protection'];
+                       }
+               } else { // Public-Key mode
+                       // random 20-byte seed
+                       $seed = sha1(TCPDF_STATIC::getRandomSeed(), true);
+                       $recipient_bytes = '';
+                       foreach ($this->encryptdata['pubkeys'] as $pubkey) {
+                               // for each public certificate
+                               if (isset($pubkey['p'])) {
+                                       $pkprotection = TCPDF_STATIC::getUserPermissionCode($pubkey['p'], $this->encryptdata['mode']);
+                               } else {
+                                       $pkprotection = $this->encryptdata['protection'];
+                               }
+                               // get default permissions (reverse byte order)
+                               $pkpermissions = TCPDF_STATIC::getEncPermissionsString($pkprotection);
+                               // envelope data
+                               $envelope = $seed.$pkpermissions;
+                               // write the envelope data to a temporary file
+                               $tempkeyfile = TCPDF_STATIC::getObjFilename('key');
+                               $f = fopen($tempkeyfile, 'wb');
+                               if (!$f) {
+                                       $this->Error('Unable to create temporary key file: '.$tempkeyfile);
+                               }
+                               $envelope_length = strlen($envelope);
+                               fwrite($f, $envelope, $envelope_length);
+                               fclose($f);
+                               $tempencfile = TCPDF_STATIC::getObjFilename('enc');
+                               if (!openssl_pkcs7_encrypt($tempkeyfile, $tempencfile, $pubkey['c'], array(), PKCS7_BINARY | PKCS7_DETACHED)) {
+                                       $this->Error('Unable to encrypt the file: '.$tempkeyfile);
+                               }
+                               unlink($tempkeyfile);
+                               // read encryption signature
+                               $signature = file_get_contents($tempencfile, false, null, $envelope_length);
+                               unlink($tempencfile);
+                               // extract signature
+                               $signature = substr($signature, strpos($signature, 'Content-Disposition'));
+                               $tmparr = explode("\n\n", $signature);
+                               $signature = trim($tmparr[1]);
+                               unset($tmparr);
+                               // decode signature
+                               $signature = base64_decode($signature);
+                               // convert signature to hex
+                               $hexsignature = current(unpack('H*', $signature));
+                               // store signature on recipients array
+                               $this->encryptdata['Recipients'][] = $hexsignature;
+                               // The bytes of each item in the Recipients array of PKCS#7 objects in the order in which they appear in the array
+                               $recipient_bytes .= $signature;
+                       }
+                       // calculate encryption key
+                       if ($this->encryptdata['mode'] == 3) { // AES-256
+                               $this->encryptdata['key'] = substr(hash('sha256', $seed.$recipient_bytes, true), 0, $keybytelen);
+                       } else { // RC4-40, RC4-128, AES-128
+                               $this->encryptdata['key'] = substr(sha1($seed.$recipient_bytes, true), 0, $keybytelen);
+                       }
+               }
+       }
+
+       /**
+        * Set document protection
+        * Remark: the protection against modification is for people who have the full Acrobat product.
+        * If you don't set any password, the document will open as usual. If you set a user password, the PDF viewer will ask for it before displaying the document. The master password, if different from the user one, can be used to get full access.
+        * Note: protecting a document requires to encrypt it, which increases the processing time a lot. This can cause a PHP time-out in some cases, especially if the document contains images or fonts.
+        * @param $permissions (Array) the set of permissions (specify the ones you want to block):<ul><li>print : Print the document;</li><li>modify : Modify the contents of the document by operations other than those controlled by 'fill-forms', 'extract' and 'assemble';</li><li>copy : Copy or otherwise extract text and graphics from the document;</li><li>annot-forms : Add or modify text annotations, fill in interactive form fields, and, if 'modify' is also set, create or modify interactive form fields (including signature fields);</li><li>fill-forms : Fill in existing interactive form fields (including signature fields), even if 'annot-forms' is not specified;</li><li>extract : Extract text and graphics (in support of accessibility to users with disabilities or for other purposes);</li><li>assemble : Assemble the document (insert, rotate, or delete pages and create bookmarks or thumbnail images), even if 'modify' is not set;</li><li>print-high : Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this is not set, printing is limited to a low-level representation of the appearance, possibly of degraded quality.</li><li>owner : (inverted logic - only for public-key) when set permits change of encryption and enables all other permissions.</li></ul>
+        * @param $user_pass (String) user password. Empty by default.
+        * @param $owner_pass (String) owner password. If not specified, a random value is used.
+        * @param $mode (int) encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit.
+        * @param $pubkeys (String) array of recipients containing public-key certificates ('c') and permissions ('p'). For example: array(array('c' => 'file://../examples/data/cert/tcpdf.crt', 'p' => array('print')))
+        * @public
+        * @since 2.0.000 (2008-01-02)
+        * @author Nicola Asuni
+        */
+       public function SetProtection($permissions=array('print', 'modify', 'copy', 'annot-forms', 'fill-forms', 'extract', 'assemble', 'print-high'), $user_pass='', $owner_pass=null, $mode=0, $pubkeys=null) {
+               if ($this->pdfa_mode) {
+                       // encryption is not allowed in PDF/A mode
+                       return;
+               }
+               $this->encryptdata['protection'] = TCPDF_STATIC::getUserPermissionCode($permissions, $mode);
+               if (($pubkeys !== null) AND (is_array($pubkeys))) {
+                       // public-key mode
+                       $this->encryptdata['pubkeys'] = $pubkeys;
+                       if ($mode == 0) {
+                               // public-Key Security requires at least 128 bit
+                               $mode = 1;
+                       }
+                       if (!function_exists('openssl_pkcs7_encrypt')) {
+                               $this->Error('Public-Key Security requires openssl library.');
+                       }
+                       // Set Public-Key filter (availabe are: Entrust.PPKEF, Adobe.PPKLite, Adobe.PubSec)
+                       $this->encryptdata['pubkey'] = true;
+                       $this->encryptdata['Filter'] = 'Adobe.PubSec';
+                       $this->encryptdata['StmF'] = 'DefaultCryptFilter';
+                       $this->encryptdata['StrF'] = 'DefaultCryptFilter';
+               } else {
+                       // standard mode (password mode)
+                       $this->encryptdata['pubkey'] = false;
+                       $this->encryptdata['Filter'] = 'Standard';
+                       $this->encryptdata['StmF'] = 'StdCF';
+                       $this->encryptdata['StrF'] = 'StdCF';
+               }
+               if ($mode > 1) { // AES
+                       if (!extension_loaded('mcrypt')) {
+                               $this->Error('AES encryption requires mcrypt library (http://www.php.net/manual/en/mcrypt.requirements.php).');
+                       }
+                       if (mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) {
+                               $this->Error('AES encryption requires MCRYPT_RIJNDAEL_128 cypher.');
+                       }
+                       if (($mode == 3) AND !function_exists('hash')) {
+                               // the Hash extension requires no external libraries and is enabled by default as of PHP 5.1.2.
+                               $this->Error('AES 256 encryption requires HASH Message Digest Framework (http://www.php.net/manual/en/book.hash.php).');
+                       }
+               }
+               if ($owner_pass === null) {
+                       $owner_pass = md5(TCPDF_STATIC::getRandomSeed());
+               }
+               $this->encryptdata['user_password'] = $user_pass;
+               $this->encryptdata['owner_password'] = $owner_pass;
+               $this->encryptdata['mode'] = $mode;
+               switch ($mode) {
+                       case 0: { // RC4 40 bit
+                               $this->encryptdata['V'] = 1;
+                               $this->encryptdata['Length'] = 40;
+                               $this->encryptdata['CF']['CFM'] = 'V2';
+                               break;
+                       }
+                       case 1: { // RC4 128 bit
+                               $this->encryptdata['V'] = 2;
+                               $this->encryptdata['Length'] = 128;
+                               $this->encryptdata['CF']['CFM'] = 'V2';
+                               if ($this->encryptdata['pubkey']) {
+                                       $this->encryptdata['SubFilter'] = 'adbe.pkcs7.s4';
+                                       $this->encryptdata['Recipients'] = array();
+                               }
+                               break;
+                       }
+                       case 2: { // AES 128 bit
+                               $this->encryptdata['V'] = 4;
+                               $this->encryptdata['Length'] = 128;
+                               $this->encryptdata['CF']['CFM'] = 'AESV2';
+                               $this->encryptdata['CF']['Length'] = 128;
+                               if ($this->encryptdata['pubkey']) {
+                                       $this->encryptdata['SubFilter'] = 'adbe.pkcs7.s5';
+                                       $this->encryptdata['Recipients'] = array();
+                               }
+                               break;
+                       }
+                       case 3: { // AES 256 bit
+                               $this->encryptdata['V'] = 5;
+                               $this->encryptdata['Length'] = 256;
+                               $this->encryptdata['CF']['CFM'] = 'AESV3';
+                               $this->encryptdata['CF']['Length'] = 256;
+                               if ($this->encryptdata['pubkey']) {
+                                       $this->encryptdata['SubFilter'] = 'adbe.pkcs7.s5';
+                                       $this->encryptdata['Recipients'] = array();
+                               }
+                               break;
+                       }
+               }
+               $this->encrypted = true;
+               $this->encryptdata['fileid'] = TCPDF_STATIC::convertHexStringToString($this->file_id);
+               $this->_generateencryptionkey();
+       }
+
+       // END OF ENCRYPTION FUNCTIONS -------------------------
+
+       // START TRANSFORMATIONS SECTION -----------------------
+
+       /**
+        * Starts a 2D tranformation saving current graphic state.
+        * This function must be called before scaling, mirroring, translation, rotation and skewing.
+        * Use StartTransform() before, and StopTransform() after the transformations to restore the normal behavior.
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function StartTransform() {
+               if ($this->state != 2) {
+                       return;
+               }
+               $this->_outSaveGraphicsState();
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['transfmrk'][] = strlen($this->xobjects[$this->xobjid]['outdata']);
+               } else {
+                       $this->transfmrk[$this->page][] = $this->pagelen[$this->page];
+               }
+               ++$this->transfmatrix_key;
+               $this->transfmatrix[$this->transfmatrix_key] = array();
+       }
+
+       /**
+        * Stops a 2D tranformation restoring previous graphic state.
+        * This function must be called after scaling, mirroring, translation, rotation and skewing.
+        * Use StartTransform() before, and StopTransform() after the transformations to restore the normal behavior.
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function StopTransform() {
+               if ($this->state != 2) {
+                       return;
+               }
+               $this->_outRestoreGraphicsState();
+               if (isset($this->transfmatrix[$this->transfmatrix_key])) {
+                       array_pop($this->transfmatrix[$this->transfmatrix_key]);
+                       --$this->transfmatrix_key;
+               }
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       array_pop($this->xobjects[$this->xobjid]['transfmrk']);
+               } else {
+                       array_pop($this->transfmrk[$this->page]);
+               }
+       }
+       /**
+        * Horizontal Scaling.
+        * @param $s_x (float) scaling factor for width as percent. 0 is not allowed.
+        * @param $x (int) abscissa of the scaling center. Default is current x position
+        * @param $y (int) ordinate of the scaling center. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function ScaleX($s_x, $x='', $y='') {
+               $this->Scale($s_x, 100, $x, $y);
+       }
+
+       /**
+        * Vertical Scaling.
+        * @param $s_y (float) scaling factor for height as percent. 0 is not allowed.
+        * @param $x (int) abscissa of the scaling center. Default is current x position
+        * @param $y (int) ordinate of the scaling center. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function ScaleY($s_y, $x='', $y='') {
+               $this->Scale(100, $s_y, $x, $y);
+       }
+
+       /**
+        * Vertical and horizontal proportional Scaling.
+        * @param $s (float) scaling factor for width and height as percent. 0 is not allowed.
+        * @param $x (int) abscissa of the scaling center. Default is current x position
+        * @param $y (int) ordinate of the scaling center. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function ScaleXY($s, $x='', $y='') {
+               $this->Scale($s, $s, $x, $y);
+       }
+
+       /**
+        * Vertical and horizontal non-proportional Scaling.
+        * @param $s_x (float) scaling factor for width as percent. 0 is not allowed.
+        * @param $s_y (float) scaling factor for height as percent. 0 is not allowed.
+        * @param $x (int) abscissa of the scaling center. Default is current x position
+        * @param $y (int) ordinate of the scaling center. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function Scale($s_x, $s_y, $x='', $y='') {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               if (($s_x == 0) OR ($s_y == 0)) {
+                       $this->Error('Please do not use values equal to zero for scaling');
+               }
+               $y = ($this->h - $y) * $this->k;
+               $x *= $this->k;
+               //calculate elements of transformation matrix
+               $s_x /= 100;
+               $s_y /= 100;
+               $tm = array();
+               $tm[0] = $s_x;
+               $tm[1] = 0;
+               $tm[2] = 0;
+               $tm[3] = $s_y;
+               $tm[4] = $x * (1 - $s_x);
+               $tm[5] = $y * (1 - $s_y);
+               //scale the coordinate system
+               $this->Transform($tm);
+       }
+
+       /**
+        * Horizontal Mirroring.
+        * @param $x (int) abscissa of the point. Default is current x position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function MirrorH($x='') {
+               $this->Scale(-100, 100, $x);
+       }
+
+       /**
+        * Verical Mirroring.
+        * @param $y (int) ordinate of the point. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function MirrorV($y='') {
+               $this->Scale(100, -100, '', $y);
+       }
+
+       /**
+        * Point reflection mirroring.
+        * @param $x (int) abscissa of the point. Default is current x position
+        * @param $y (int) ordinate of the point. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function MirrorP($x='',$y='') {
+               $this->Scale(-100, -100, $x, $y);
+       }
+
+       /**
+        * Reflection against a straight line through point (x, y) with the gradient angle (angle).
+        * @param $angle (float) gradient angle of the straight line. Default is 0 (horizontal line).
+        * @param $x (int) abscissa of the point. Default is current x position
+        * @param $y (int) ordinate of the point. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function MirrorL($angle=0, $x='',$y='') {
+               $this->Scale(-100, 100, $x, $y);
+               $this->Rotate(-2*($angle-90), $x, $y);
+       }
+
+       /**
+        * Translate graphic object horizontally.
+        * @param $t_x (int) movement to the right (or left for RTL)
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function TranslateX($t_x) {
+               $this->Translate($t_x, 0);
+       }
+
+       /**
+        * Translate graphic object vertically.
+        * @param $t_y (int) movement to the bottom
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function TranslateY($t_y) {
+               $this->Translate(0, $t_y);
+       }
+
+       /**
+        * Translate graphic object horizontally and vertically.
+        * @param $t_x (int) movement to the right
+        * @param $t_y (int) movement to the bottom
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function Translate($t_x, $t_y) {
+               //calculate elements of transformation matrix
+               $tm = array();
+               $tm[0] = 1;
+               $tm[1] = 0;
+               $tm[2] = 0;
+               $tm[3] = 1;
+               $tm[4] = $t_x * $this->k;
+               $tm[5] = -$t_y * $this->k;
+               //translate the coordinate system
+               $this->Transform($tm);
+       }
+
+       /**
+        * Rotate object.
+        * @param $angle (float) angle in degrees for counter-clockwise rotation
+        * @param $x (int) abscissa of the rotation center. Default is current x position
+        * @param $y (int) ordinate of the rotation center. Default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function Rotate($angle, $x='', $y='') {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               $y = ($this->h - $y) * $this->k;
+               $x *= $this->k;
+               //calculate elements of transformation matrix
+               $tm = array();
+               $tm[0] = cos(deg2rad($angle));
+               $tm[1] = sin(deg2rad($angle));
+               $tm[2] = -$tm[1];
+               $tm[3] = $tm[0];
+               $tm[4] = $x + ($tm[1] * $y) - ($tm[0] * $x);
+               $tm[5] = $y - ($tm[0] * $y) - ($tm[1] * $x);
+               //rotate the coordinate system around ($x,$y)
+               $this->Transform($tm);
+       }
+
+       /**
+        * Skew horizontally.
+        * @param $angle_x (float) angle in degrees between -90 (skew to the left) and 90 (skew to the right)
+        * @param $x (int) abscissa of the skewing center. default is current x position
+        * @param $y (int) ordinate of the skewing center. default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function SkewX($angle_x, $x='', $y='') {
+               $this->Skew($angle_x, 0, $x, $y);
+       }
+
+       /**
+        * Skew vertically.
+        * @param $angle_y (float) angle in degrees between -90 (skew to the bottom) and 90 (skew to the top)
+        * @param $x (int) abscissa of the skewing center. default is current x position
+        * @param $y (int) ordinate of the skewing center. default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function SkewY($angle_y, $x='', $y='') {
+               $this->Skew(0, $angle_y, $x, $y);
+       }
+
+       /**
+        * Skew.
+        * @param $angle_x (float) angle in degrees between -90 (skew to the left) and 90 (skew to the right)
+        * @param $angle_y (float) angle in degrees between -90 (skew to the bottom) and 90 (skew to the top)
+        * @param $x (int) abscissa of the skewing center. default is current x position
+        * @param $y (int) ordinate of the skewing center. default is current y position
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       public function Skew($angle_x, $angle_y, $x='', $y='') {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               if (($angle_x <= -90) OR ($angle_x >= 90) OR ($angle_y <= -90) OR ($angle_y >= 90)) {
+                       $this->Error('Please use values between -90 and +90 degrees for Skewing.');
+               }
+               $x *= $this->k;
+               $y = ($this->h - $y) * $this->k;
+               //calculate elements of transformation matrix
+               $tm = array();
+               $tm[0] = 1;
+               $tm[1] = tan(deg2rad($angle_y));
+               $tm[2] = tan(deg2rad($angle_x));
+               $tm[3] = 1;
+               $tm[4] = -$tm[2] * $y;
+               $tm[5] = -$tm[1] * $x;
+               //skew the coordinate system
+               $this->Transform($tm);
+       }
+
+       /**
+        * Apply graphic transformations.
+        * @param $tm (array) transformation matrix
+        * @protected
+        * @since 2.1.000 (2008-01-07)
+        * @see StartTransform(), StopTransform()
+        */
+       protected function Transform($tm) {
+               if ($this->state != 2) {
+                       return;
+               }
+               $this->_out(sprintf('%F %F %F %F %F %F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5]));
+               // add tranformation matrix
+               $this->transfmatrix[$this->transfmatrix_key][] = array('a' => $tm[0], 'b' => $tm[1], 'c' => $tm[2], 'd' => $tm[3], 'e' => $tm[4], 'f' => $tm[5]);
+               // update transformation mark
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) {
+                               $key = key($this->xobjects[$this->xobjid]['transfmrk']);
+                               $this->xobjects[$this->xobjid]['transfmrk'][$key] = strlen($this->xobjects[$this->xobjid]['outdata']);
+                       }
+               } elseif (end($this->transfmrk[$this->page]) !== false) {
+                       $key = key($this->transfmrk[$this->page]);
+                       $this->transfmrk[$this->page][$key] = $this->pagelen[$this->page];
+               }
+       }
+
+       // END TRANSFORMATIONS SECTION -------------------------
+
+       // START GRAPHIC FUNCTIONS SECTION ---------------------
+       // The following section is based on the code provided by David Hernandez Sanz
+
+       /**
+        * Defines the line width. By default, the value equals 0.2 mm. The method can be called before the first page is created and the value is retained from page to page.
+        * @param $width (float) The width.
+        * @public
+        * @since 1.0
+        * @see Line(), Rect(), Cell(), MultiCell()
+        */
+       public function SetLineWidth($width) {
+               //Set line width
+               $this->LineWidth = $width;
+               $this->linestyleWidth = sprintf('%F w', ($width * $this->k));
+               if ($this->state == 2) {
+                       $this->_out($this->linestyleWidth);
+               }
+       }
+
+       /**
+        * Returns the current the line width.
+        * @return int Line width
+        * @public
+        * @since 2.1.000 (2008-01-07)
+        * @see Line(), SetLineWidth()
+        */
+       public function GetLineWidth() {
+               return $this->LineWidth;
+       }
+
+       /**
+        * Set line style.
+        * @param $style (array) Line style. Array with keys among the following:
+        * <ul>
+        *       <li>width (float): Width of the line in user units.</li>
+        *       <li>cap (string): Type of cap to put on the line. Possible values are:
+        * butt, round, square. The difference between "square" and "butt" is that
+        * "square" projects a flat end past the end of the line.</li>
+        *       <li>join (string): Type of join. Possible values are: miter, round,
+        * bevel.</li>
+        *       <li>dash (mixed): Dash pattern. Is 0 (without dash) or string with
+        * series of length values, which are the lengths of the on and off dashes.
+        * For example: "2" represents 2 on, 2 off, 2 on, 2 off, ...; "2,1" is 2 on,
+        * 1 off, 2 on, 1 off, ...</li>
+        *       <li>phase (integer): Modifier on the dash pattern which is used to shift
+        * the point at which the pattern starts.</li>
+        *       <li>color (array): Draw color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName).</li>
+        * </ul>
+        * @param $ret (boolean) if true do not send the command.
+        * @return string the PDF command
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function SetLineStyle($style, $ret=false) {
+               $s = ''; // string to be returned
+               if (!is_array($style)) {
+                       return;
+               }
+               if (isset($style['width'])) {
+                       $this->LineWidth = $style['width'];
+                       $this->linestyleWidth = sprintf('%F w', ($style['width'] * $this->k));
+                       $s .= $this->linestyleWidth.' ';
+               }
+               if (isset($style['cap'])) {
+                       $ca = array('butt' => 0, 'round'=> 1, 'square' => 2);
+                       if (isset($ca[$style['cap']])) {
+                               $this->linestyleCap = $ca[$style['cap']].' J';
+                               $s .= $this->linestyleCap.' ';
+                       }
+               }
+               if (isset($style['join'])) {
+                       $ja = array('miter' => 0, 'round' => 1, 'bevel' => 2);
+                       if (isset($ja[$style['join']])) {
+                               $this->linestyleJoin = $ja[$style['join']].' j';
+                               $s .= $this->linestyleJoin.' ';
+                       }
+               }
+               if (isset($style['dash'])) {
+                       $dash_string = '';
+                       if ($style['dash']) {
+                               if (preg_match('/^.+,/', $style['dash']) > 0) {
+                                       $tab = explode(',', $style['dash']);
+                               } else {
+                                       $tab = array($style['dash']);
+                               }
+                               $dash_string = '';
+                               foreach ($tab as $i => $v) {
+                                       if ($i) {
+                                               $dash_string .= ' ';
+                                       }
+                                       $dash_string .= sprintf('%F', $v);
+                               }
+                       }
+                       if (!isset($style['phase']) OR !$style['dash']) {
+                               $style['phase'] = 0;
+                       }
+                       $this->linestyleDash = sprintf('[%s] %F d', $dash_string, $style['phase']);
+                       $s .= $this->linestyleDash.' ';
+               }
+               if (isset($style['color'])) {
+                       $s .= $this->SetDrawColorArray($style['color'], true).' ';
+               }
+               if (!$ret AND ($this->state == 2)) {
+                       $this->_out($s);
+               }
+               return $s;
+       }
+
+       /**
+        * Begin a new subpath by moving the current point to coordinates (x, y), omitting any connecting line segment.
+        * @param $x (float) Abscissa of point.
+        * @param $y (float) Ordinate of point.
+        * @protected
+        * @since 2.1.000 (2008-01-08)
+        */
+       protected function _outPoint($x, $y) {
+               if ($this->state == 2) {
+                       $this->_out(sprintf('%F %F m', ($x * $this->k), (($this->h - $y) * $this->k)));
+               }
+       }
+
+       /**
+        * Append a straight line segment from the current point to the point (x, y).
+        * The new current point shall be (x, y).
+        * @param $x (float) Abscissa of end point.
+        * @param $y (float) Ordinate of end point.
+        * @protected
+        * @since 2.1.000 (2008-01-08)
+        */
+       protected function _outLine($x, $y) {
+               if ($this->state == 2) {
+                       $this->_out(sprintf('%F %F l', ($x * $this->k), (($this->h - $y) * $this->k)));
+               }
+       }
+
+       /**
+        * Append a rectangle to the current path as a complete subpath, with lower-left corner (x, y) and dimensions widthand height in user space.
+        * @param $x (float) Abscissa of upper-left corner.
+        * @param $y (float) Ordinate of upper-left corner.
+        * @param $w (float) Width.
+        * @param $h (float) Height.
+        * @param $op (string) options
+        * @protected
+        * @since 2.1.000 (2008-01-08)
+        */
+       protected function _outRect($x, $y, $w, $h, $op) {
+               if ($this->state == 2) {
+                       $this->_out(sprintf('%F %F %F %F re %s', ($x * $this->k), (($this->h - $y) * $this->k), ($w * $this->k), (-$h * $this->k), $op));
+               }
+       }
+
+       /**
+        * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the Bezier control points.
+        * The new current point shall be (x3, y3).
+        * @param $x1 (float) Abscissa of control point 1.
+        * @param $y1 (float) Ordinate of control point 1.
+        * @param $x2 (float) Abscissa of control point 2.
+        * @param $y2 (float) Ordinate of control point 2.
+        * @param $x3 (float) Abscissa of end point.
+        * @param $y3 (float) Ordinate of end point.
+        * @protected
+        * @since 2.1.000 (2008-01-08)
+        */
+       protected function _outCurve($x1, $y1, $x2, $y2, $x3, $y3) {
+               if ($this->state == 2) {
+                       $this->_out(sprintf('%F %F %F %F %F %F c', ($x1 * $this->k), (($this->h - $y1) * $this->k), ($x2 * $this->k), (($this->h - $y2) * $this->k), ($x3 * $this->k), (($this->h - $y3) * $this->k)));
+               }
+       }
+
+       /**
+        * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using the current point and (x2, y2) as the Bezier control points.
+        * The new current point shall be (x3, y3).
+        * @param $x2 (float) Abscissa of control point 2.
+        * @param $y2 (float) Ordinate of control point 2.
+        * @param $x3 (float) Abscissa of end point.
+        * @param $y3 (float) Ordinate of end point.
+        * @protected
+        * @since 4.9.019 (2010-04-26)
+        */
+       protected function _outCurveV($x2, $y2, $x3, $y3) {
+               if ($this->state == 2) {
+                       $this->_out(sprintf('%F %F %F %F v', ($x2 * $this->k), (($this->h - $y2) * $this->k), ($x3 * $this->k), (($this->h - $y3) * $this->k)));
+               }
+       }
+
+       /**
+        * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the Bezier control points.
+        * The new current point shall be (x3, y3).
+        * @param $x1 (float) Abscissa of control point 1.
+        * @param $y1 (float) Ordinate of control point 1.
+        * @param $x3 (float) Abscissa of end point.
+        * @param $y3 (float) Ordinate of end point.
+        * @protected
+        * @since 2.1.000 (2008-01-08)
+        */
+       protected function _outCurveY($x1, $y1, $x3, $y3) {
+               if ($this->state == 2) {
+                       $this->_out(sprintf('%F %F %F %F y', ($x1 * $this->k), (($this->h - $y1) * $this->k), ($x3 * $this->k), (($this->h - $y3) * $this->k)));
+               }
+       }
+
+       /**
+        * Draws a line between two points.
+        * @param $x1 (float) Abscissa of first point.
+        * @param $y1 (float) Ordinate of first point.
+        * @param $x2 (float) Abscissa of second point.
+        * @param $y2 (float) Ordinate of second point.
+        * @param $style (array) Line style. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @public
+        * @since 1.0
+        * @see SetLineWidth(), SetDrawColor(), SetLineStyle()
+        */
+       public function Line($x1, $y1, $x2, $y2, $style=array()) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if (is_array($style)) {
+                       $this->SetLineStyle($style);
+               }
+               $this->_outPoint($x1, $y1);
+               $this->_outLine($x2, $y2);
+               $this->_out('S');
+       }
+
+       /**
+        * Draws a rectangle.
+        * @param $x (float) Abscissa of upper-left corner.
+        * @param $y (float) Ordinate of upper-left corner.
+        * @param $w (float) Width.
+        * @param $h (float) Height.
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $border_style (array) Border style of rectangle. Array with keys among the following:
+        * <ul>
+        *       <li>all: Line style of all borders. Array like for SetLineStyle().</li>
+        *       <li>L, T, R, B or combinations: Line style of left, top, right or bottom border. Array like for SetLineStyle().</li>
+        * </ul>
+        * If a key is not present or is null, the correspondent border is not drawn. Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @public
+        * @since 1.0
+        * @see SetLineStyle()
+        */
+       public function Rect($x, $y, $w, $h, $style='', $border_style=array(), $fill_color=array()) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if (empty($style)) {
+                       $style = 'S';
+               }
+               if (!(strpos($style, 'F') === false) AND !empty($fill_color)) {
+                       // set background color
+                       $this->SetFillColorArray($fill_color);
+               }
+               if (!empty($border_style)) {
+                       if (isset($border_style['all']) AND !empty($border_style['all'])) {
+                               //set global style for border
+                               $this->SetLineStyle($border_style['all']);
+                               $border_style = array();
+                       } else {
+                               // remove stroke operator from style
+                               $opnostroke = array('S' => '', 'D' => '', 's' => '', 'd' => '', 'B' => 'F', 'FD' => 'F', 'DF' => 'F', 'B*' => 'F*', 'F*D' => 'F*', 'DF*' => 'F*', 'b' => 'f', 'fd' => 'f', 'df' => 'f', 'b*' => 'f*', 'f*d' => 'f*', 'df*' => 'f*' );
+                               if (isset($opnostroke[$style])) {
+                                       $style = $opnostroke[$style];
+                               }
+                       }
+               }
+               if (!empty($style)) {
+                       $op = TCPDF_STATIC::getPathPaintOperator($style);
+                       $this->_outRect($x, $y, $w, $h, $op);
+               }
+               if (!empty($border_style)) {
+                       $border_style2 = array();
+                       foreach ($border_style as $line => $value) {
+                               $length = strlen($line);
+                               for ($i = 0; $i < $length; ++$i) {
+                                       $border_style2[$line[$i]] = $value;
+                               }
+                       }
+                       $border_style = $border_style2;
+                       if (isset($border_style['L']) AND $border_style['L']) {
+                               $this->Line($x, $y, $x, $y + $h, $border_style['L']);
+                       }
+                       if (isset($border_style['T']) AND $border_style['T']) {
+                               $this->Line($x, $y, $x + $w, $y, $border_style['T']);
+                       }
+                       if (isset($border_style['R']) AND $border_style['R']) {
+                               $this->Line($x + $w, $y, $x + $w, $y + $h, $border_style['R']);
+                       }
+                       if (isset($border_style['B']) AND $border_style['B']) {
+                               $this->Line($x, $y + $h, $x + $w, $y + $h, $border_style['B']);
+                       }
+               }
+       }
+
+       /**
+        * Draws a Bezier curve.
+        * The Bezier curve is a tangent to the line between the control points at
+        * either end of the curve.
+        * @param $x0 (float) Abscissa of start point.
+        * @param $y0 (float) Ordinate of start point.
+        * @param $x1 (float) Abscissa of control point 1.
+        * @param $y1 (float) Ordinate of control point 1.
+        * @param $x2 (float) Abscissa of control point 2.
+        * @param $y2 (float) Ordinate of control point 2.
+        * @param $x3 (float) Abscissa of end point.
+        * @param $y3 (float) Ordinate of end point.
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of curve. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @public
+        * @see SetLineStyle()
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function Curve($x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3, $style='', $line_style=array(), $fill_color=array()) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if (!(false === strpos($style, 'F')) AND isset($fill_color)) {
+                       $this->SetFillColorArray($fill_color);
+               }
+               $op = TCPDF_STATIC::getPathPaintOperator($style);
+               if ($line_style) {
+                       $this->SetLineStyle($line_style);
+               }
+               $this->_outPoint($x0, $y0);
+               $this->_outCurve($x1, $y1, $x2, $y2, $x3, $y3);
+               $this->_out($op);
+       }
+
+       /**
+        * Draws a poly-Bezier curve.
+        * Each Bezier curve segment is a tangent to the line between the control points at
+        * either end of the curve.
+        * @param $x0 (float) Abscissa of start point.
+        * @param $y0 (float) Ordinate of start point.
+        * @param $segments (float) An array of bezier descriptions. Format: array(x1, y1, x2, y2, x3, y3).
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of curve. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @public
+        * @see SetLineStyle()
+        * @since 3.0008 (2008-05-12)
+        */
+       public function Polycurve($x0, $y0, $segments, $style='', $line_style=array(), $fill_color=array()) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if (!(false === strpos($style, 'F')) AND isset($fill_color)) {
+                       $this->SetFillColorArray($fill_color);
+               }
+               $op = TCPDF_STATIC::getPathPaintOperator($style);
+               if ($op == 'f') {
+                       $line_style = array();
+               }
+               if ($line_style) {
+                       $this->SetLineStyle($line_style);
+               }
+               $this->_outPoint($x0, $y0);
+               foreach ($segments as $segment) {
+                       list($x1, $y1, $x2, $y2, $x3, $y3) = $segment;
+                       $this->_outCurve($x1, $y1, $x2, $y2, $x3, $y3);
+               }
+               $this->_out($op);
+       }
+
+       /**
+        * Draws an ellipse.
+        * An ellipse is formed from n Bezier curves.
+        * @param $x0 (float) Abscissa of center point.
+        * @param $y0 (float) Ordinate of center point.
+        * @param $rx (float) Horizontal radius.
+        * @param $ry (float) Vertical radius (if ry = 0 then is a circle, see Circle()). Default value: 0.
+        * @param $angle: (float) Angle oriented (anti-clockwise). Default value: 0.
+        * @param $astart: (float) Angle start of draw line. Default value: 0.
+        * @param $afinish: (float) Angle finish of draw line. Default value: 360.
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of ellipse. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @param $nc (integer) Number of curves used to draw a 90 degrees portion of ellipse.
+        * @author Nicola Asuni
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function Ellipse($x0, $y0, $rx, $ry='', $angle=0, $astart=0, $afinish=360, $style='', $line_style=array(), $fill_color=array(), $nc=2) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if (TCPDF_STATIC::empty_string($ry) OR ($ry == 0)) {
+                       $ry = $rx;
+               }
+               if (!(false === strpos($style, 'F')) AND isset($fill_color)) {
+                       $this->SetFillColorArray($fill_color);
+               }
+               $op = TCPDF_STATIC::getPathPaintOperator($style);
+               if ($op == 'f') {
+                       $line_style = array();
+               }
+               if ($line_style) {
+                       $this->SetLineStyle($line_style);
+               }
+               $this->_outellipticalarc($x0, $y0, $rx, $ry, $angle, $astart, $afinish, false, $nc, true, true, false);
+               $this->_out($op);
+       }
+
+       /**
+        * Append an elliptical arc to the current path.
+        * An ellipse is formed from n Bezier curves.
+        * @param $xc (float) Abscissa of center point.
+        * @param $yc (float) Ordinate of center point.
+        * @param $rx (float) Horizontal radius.
+        * @param $ry (float) Vertical radius (if ry = 0 then is a circle, see Circle()). Default value: 0.
+        * @param $xang: (float) Angle between the X-axis and the major axis of the ellipse. Default value: 0.
+        * @param $angs: (float) Angle start of draw line. Default value: 0.
+        * @param $angf: (float) Angle finish of draw line. Default value: 360.
+        * @param $pie (boolean) if true do not mark the border point (used to draw pie sectors).
+        * @param $nc (integer) Number of curves used to draw a 90 degrees portion of ellipse.
+        * @param $startpoint (boolean) if true output a starting point.
+        * @param $ccw (boolean) if true draws in counter-clockwise.
+        * @param $svg (boolean) if true the angles are in svg mode (already calculated).
+        * @return array bounding box coordinates (x min, y min, x max, y max)
+        * @author Nicola Asuni
+        * @protected
+        * @since 4.9.019 (2010-04-26)
+        */
+       protected function _outellipticalarc($xc, $yc, $rx, $ry, $xang=0, $angs=0, $angf=360, $pie=false, $nc=2, $startpoint=true, $ccw=true, $svg=false) {
+               if (($rx <= 0) OR ($ry < 0)) {
+                       return;
+               }
+               $k = $this->k;
+               if ($nc < 2) {
+                       $nc = 2;
+               }
+               $xmin = 2147483647;
+               $ymin = 2147483647;
+               $xmax = 0;
+               $ymax = 0;
+               if ($pie) {
+                       // center of the arc
+                       $this->_outPoint($xc, $yc);
+               }
+               $xang = deg2rad((float) $xang);
+               $angs = deg2rad((float) $angs);
+               $angf = deg2rad((float) $angf);
+               if ($svg) {
+                       $as = $angs;
+                       $af = $angf;
+               } else {
+                       $as = atan2((sin($angs) / $ry), (cos($angs) / $rx));
+                       $af = atan2((sin($angf) / $ry), (cos($angf) / $rx));
+               }
+               if ($as < 0) {
+                       $as += (2 * M_PI);
+               }
+               if ($af < 0) {
+                       $af += (2 * M_PI);
+               }
+               if ($ccw AND ($as > $af)) {
+                       // reverse rotation
+                       $as -= (2 * M_PI);
+               } elseif (!$ccw AND ($as < $af)) {
+                       // reverse rotation
+                       $af -= (2 * M_PI);
+               }
+               $total_angle = ($af - $as);
+               if ($nc < 2) {
+                       $nc = 2;
+               }
+               // total arcs to draw
+               $nc *= (2 * abs($total_angle) / M_PI);
+               $nc = round($nc) + 1;
+               // angle of each arc
+               $arcang = ($total_angle / $nc);
+               // center point in PDF coordinates
+               $x0 = $xc;
+               $y0 = ($this->h - $yc);
+               // starting angle
+               $ang = $as;
+               $alpha = sin($arcang) * ((sqrt(4 + (3 * pow(tan(($arcang) / 2), 2))) - 1) / 3);
+               $cos_xang = cos($xang);
+               $sin_xang = sin($xang);
+               $cos_ang = cos($ang);
+               $sin_ang = sin($ang);
+               // first arc point
+               $px1 = $x0 + ($rx * $cos_xang * $cos_ang) - ($ry * $sin_xang * $sin_ang);
+               $py1 = $y0 + ($rx * $sin_xang * $cos_ang) + ($ry * $cos_xang * $sin_ang);
+               // first Bezier control point
+               $qx1 = ($alpha * ((-$rx * $cos_xang * $sin_ang) - ($ry * $sin_xang * $cos_ang)));
+               $qy1 = ($alpha * ((-$rx * $sin_xang * $sin_ang) + ($ry * $cos_xang * $cos_ang)));
+               if ($pie) {
+                       // line from center to arc starting point
+                       $this->_outLine($px1, $this->h - $py1);
+               } elseif ($startpoint) {
+                       // arc starting point
+                       $this->_outPoint($px1, $this->h - $py1);
+               }
+               // draw arcs
+               for ($i = 1; $i <= $nc; ++$i) {
+                       // starting angle
+                       $ang = $as + ($i * $arcang);
+                       if ($i == $nc) {
+                               $ang = $af;
+                       }
+                       $cos_ang = cos($ang);
+                       $sin_ang = sin($ang);
+                       // second arc point
+                       $px2 = $x0 + ($rx * $cos_xang * $cos_ang) - ($ry * $sin_xang * $sin_ang);
+                       $py2 = $y0 + ($rx * $sin_xang * $cos_ang) + ($ry * $cos_xang * $sin_ang);
+                       // second Bezier control point
+                       $qx2 = ($alpha * ((-$rx * $cos_xang * $sin_ang) - ($ry * $sin_xang * $cos_ang)));
+                       $qy2 = ($alpha * ((-$rx * $sin_xang * $sin_ang) + ($ry * $cos_xang * $cos_ang)));
+                       // draw arc
+                       $cx1 = ($px1 + $qx1);
+                       $cy1 = ($this->h - ($py1 + $qy1));
+                       $cx2 = ($px2 - $qx2);
+                       $cy2 = ($this->h - ($py2 - $qy2));
+                       $cx3 = $px2;
+                       $cy3 = ($this->h - $py2);
+                       $this->_outCurve($cx1, $cy1, $cx2, $cy2, $cx3, $cy3);
+                       // get bounding box coordinates
+                       $xmin = min($xmin, $cx1, $cx2, $cx3);
+                       $ymin = min($ymin, $cy1, $cy2, $cy3);
+                       $xmax = max($xmax, $cx1, $cx2, $cx3);
+                       $ymax = max($ymax, $cy1, $cy2, $cy3);
+                       // move to next point
+                       $px1 = $px2;
+                       $py1 = $py2;
+                       $qx1 = $qx2;
+                       $qy1 = $qy2;
+               }
+               if ($pie) {
+                       $this->_outLine($xc, $yc);
+                       // get bounding box coordinates
+                       $xmin = min($xmin, $xc);
+                       $ymin = min($ymin, $yc);
+                       $xmax = max($xmax, $xc);
+                       $ymax = max($ymax, $yc);
+               }
+               return array($xmin, $ymin, $xmax, $ymax);
+       }
+
+       /**
+        * Draws a circle.
+        * A circle is formed from n Bezier curves.
+        * @param $x0 (float) Abscissa of center point.
+        * @param $y0 (float) Ordinate of center point.
+        * @param $r (float) Radius.
+        * @param $angstr: (float) Angle start of draw line. Default value: 0.
+        * @param $angend: (float) Angle finish of draw line. Default value: 360.
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of circle. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(red, green, blue). Default value: default color (empty array).
+        * @param $nc (integer) Number of curves used to draw a 90 degrees portion of circle.
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function Circle($x0, $y0, $r, $angstr=0, $angend=360, $style='', $line_style=array(), $fill_color=array(), $nc=2) {
+               $this->Ellipse($x0, $y0, $r, $r, 0, $angstr, $angend, $style, $line_style, $fill_color, $nc);
+       }
+
+       /**
+        * Draws a polygonal line
+        * @param $p (array) Points 0 to ($np - 1). Array with values (x0, y0, x1, y1,..., x(np-1), y(np - 1))
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of polygon. Array with keys among the following:
+        * <ul>
+        *       <li>all: Line style of all lines. Array like for SetLineStyle().</li>
+        *       <li>0 to ($np - 1): Line style of each line. Array like for SetLineStyle().</li>
+        * </ul>
+        * If a key is not present or is null, not draws the line. Default value is default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @since 4.8.003 (2009-09-15)
+        * @public
+        */
+       public function PolyLine($p, $style='', $line_style=array(), $fill_color=array()) {
+               $this->Polygon($p, $style, $line_style, $fill_color, false);
+       }
+
+       /**
+        * Draws a polygon.
+        * @param $p (array) Points 0 to ($np - 1). Array with values (x0, y0, x1, y1,..., x(np-1), y(np - 1))
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of polygon. Array with keys among the following:
+        * <ul>
+        *       <li>all: Line style of all lines. Array like for SetLineStyle().</li>
+        *       <li>0 to ($np - 1): Line style of each line. Array like for SetLineStyle().</li>
+        * </ul>
+        * If a key is not present or is null, not draws the line. Default value is default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @param $closed (boolean) if true the polygon is closes, otherwise will remain open
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function Polygon($p, $style='', $line_style=array(), $fill_color=array(), $closed=true) {
+               if ($this->state != 2) {
+                       return;
+               }
+               $nc = count($p); // number of coordinates
+               $np = $nc / 2; // number of points
+               if ($closed) {
+                       // close polygon by adding the first 2 points at the end (one line)
+                       for ($i = 0; $i < 4; ++$i) {
+                               $p[$nc + $i] = $p[$i];
+                       }
+                       // copy style for the last added line
+                       if (isset($line_style[0])) {
+                               $line_style[$np] = $line_style[0];
+                       }
+                       $nc += 4;
+               }
+               if (!(false === strpos($style, 'F')) AND isset($fill_color)) {
+                       $this->SetFillColorArray($fill_color);
+               }
+               $op = TCPDF_STATIC::getPathPaintOperator($style);
+               if ($op == 'f') {
+                       $line_style = array();
+               }
+               $draw = true;
+               if ($line_style) {
+                       if (isset($line_style['all'])) {
+                               $this->SetLineStyle($line_style['all']);
+                       } else {
+                               $draw = false;
+                               if ($op == 'B') {
+                                       // draw fill
+                                       $op = 'f';
+                                       $this->_outPoint($p[0], $p[1]);
+                                       for ($i = 2; $i < $nc; $i = $i + 2) {
+                                               $this->_outLine($p[$i], $p[$i + 1]);
+                                       }
+                                       $this->_out($op);
+                               }
+                               // draw outline
+                               $this->_outPoint($p[0], $p[1]);
+                               for ($i = 2; $i < $nc; $i = $i + 2) {
+                                       $line_num = ($i / 2) - 1;
+                                       if (isset($line_style[$line_num])) {
+                                               if ($line_style[$line_num] != 0) {
+                                                       if (is_array($line_style[$line_num])) {
+                                                               $this->_out('S');
+                                                               $this->SetLineStyle($line_style[$line_num]);
+                                                               $this->_outPoint($p[$i - 2], $p[$i - 1]);
+                                                               $this->_outLine($p[$i], $p[$i + 1]);
+                                                               $this->_out('S');
+                                                               $this->_outPoint($p[$i], $p[$i + 1]);
+                                                       } else {
+                                                               $this->_outLine($p[$i], $p[$i + 1]);
+                                                       }
+                                               }
+                                       } else {
+                                               $this->_outLine($p[$i], $p[$i + 1]);
+                                       }
+                               }
+                               $this->_out($op);
+                       }
+               }
+               if ($draw) {
+                       $this->_outPoint($p[0], $p[1]);
+                       for ($i = 2; $i < $nc; $i = $i + 2) {
+                               $this->_outLine($p[$i], $p[$i + 1]);
+                       }
+                       $this->_out($op);
+               }
+       }
+
+       /**
+        * Draws a regular polygon.
+        * @param $x0 (float) Abscissa of center point.
+        * @param $y0 (float) Ordinate of center point.
+        * @param $r: (float) Radius of inscribed circle.
+        * @param $ns (integer) Number of sides.
+        * @param $angle (float) Angle oriented (anti-clockwise). Default value: 0.
+        * @param $draw_circle (boolean) Draw inscribed circle or not. Default value: false.
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of polygon sides. Array with keys among the following:
+        * <ul>
+        *       <li>all: Line style of all sides. Array like for SetLineStyle().</li>
+        *       <li>0 to ($ns - 1): Line style of each side. Array like for SetLineStyle().</li>
+        * </ul>
+        * If a key is not present or is null, not draws the side. Default value is default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(red, green, blue). Default value: default color (empty array).
+        * @param $circle_style (string) Style of rendering of inscribed circle (if draws). Possible values are:
+        * <ul>
+        *       <li>D or empty string: Draw (default).</li>
+        *       <li>F: Fill.</li>
+        *       <li>DF or FD: Draw and fill.</li>
+        *       <li>CNZ: Clipping mode (using the even-odd rule to determine which regions lie inside the clipping path).</li>
+        *       <li>CEO: Clipping mode (using the nonzero winding number rule to determine which regions lie inside the clipping path).</li>
+        * </ul>
+        * @param $circle_outLine_style (array) Line style of inscribed circle (if draws). Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $circle_fill_color (array) Fill color of inscribed circle (if draws). Format: array(red, green, blue). Default value: default color (empty array).
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function RegularPolygon($x0, $y0, $r, $ns, $angle=0, $draw_circle=false, $style='', $line_style=array(), $fill_color=array(), $circle_style='', $circle_outLine_style=array(), $circle_fill_color=array()) {
+               if (3 > $ns) {
+                       $ns = 3;
+               }
+               if ($draw_circle) {
+                       $this->Circle($x0, $y0, $r, 0, 360, $circle_style, $circle_outLine_style, $circle_fill_color);
+               }
+               $p = array();
+               for ($i = 0; $i < $ns; ++$i) {
+                       $a = $angle + ($i * 360 / $ns);
+                       $a_rad = deg2rad((float) $a);
+                       $p[] = $x0 + ($r * sin($a_rad));
+                       $p[] = $y0 + ($r * cos($a_rad));
+               }
+               $this->Polygon($p, $style, $line_style, $fill_color);
+       }
+
+       /**
+        * Draws a star polygon
+        * @param $x0 (float) Abscissa of center point.
+        * @param $y0 (float) Ordinate of center point.
+        * @param $r (float) Radius of inscribed circle.
+        * @param $nv (integer) Number of vertices.
+        * @param $ng (integer) Number of gap (if ($ng % $nv = 1) then is a regular polygon).
+        * @param $angle: (float) Angle oriented (anti-clockwise). Default value: 0.
+        * @param $draw_circle: (boolean) Draw inscribed circle or not. Default value is false.
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $line_style (array) Line style of polygon sides. Array with keys among the following:
+        * <ul>
+        *       <li>all: Line style of all sides. Array like for
+        * SetLineStyle().</li>
+        *       <li>0 to (n - 1): Line style of each side. Array like for SetLineStyle().</li>
+        * </ul>
+        * If a key is not present or is null, not draws the side. Default value is default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(red, green, blue). Default value: default color (empty array).
+        * @param $circle_style (string) Style of rendering of inscribed circle (if draws). Possible values are:
+        * <ul>
+        *       <li>D or empty string: Draw (default).</li>
+        *       <li>F: Fill.</li>
+        *       <li>DF or FD: Draw and fill.</li>
+        *       <li>CNZ: Clipping mode (using the even-odd rule to determine which regions lie inside the clipping path).</li>
+        *       <li>CEO: Clipping mode (using the nonzero winding number rule to determine which regions lie inside the clipping path).</li>
+        * </ul>
+        * @param $circle_outLine_style (array) Line style of inscribed circle (if draws). Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $circle_fill_color (array) Fill color of inscribed circle (if draws). Format: array(red, green, blue). Default value: default color (empty array).
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function StarPolygon($x0, $y0, $r, $nv, $ng, $angle=0, $draw_circle=false, $style='', $line_style=array(), $fill_color=array(), $circle_style='', $circle_outLine_style=array(), $circle_fill_color=array()) {
+               if ($nv < 2) {
+                       $nv = 2;
+               }
+               if ($draw_circle) {
+                       $this->Circle($x0, $y0, $r, 0, 360, $circle_style, $circle_outLine_style, $circle_fill_color);
+               }
+               $p2 = array();
+               $visited = array();
+               for ($i = 0; $i < $nv; ++$i) {
+                       $a = $angle + ($i * 360 / $nv);
+                       $a_rad = deg2rad((float) $a);
+                       $p2[] = $x0 + ($r * sin($a_rad));
+                       $p2[] = $y0 + ($r * cos($a_rad));
+                       $visited[] = false;
+               }
+               $p = array();
+               $i = 0;
+               do {
+                       $p[] = $p2[$i * 2];
+                       $p[] = $p2[($i * 2) + 1];
+                       $visited[$i] = true;
+                       $i += $ng;
+                       $i %= $nv;
+               } while (!$visited[$i]);
+               $this->Polygon($p, $style, $line_style, $fill_color);
+       }
+
+       /**
+        * Draws a rounded rectangle.
+        * @param $x (float) Abscissa of upper-left corner.
+        * @param $y (float) Ordinate of upper-left corner.
+        * @param $w (float) Width.
+        * @param $h (float) Height.
+        * @param $r (float) the radius of the circle used to round off the corners of the rectangle.
+        * @param $round_corner (string) Draws rounded corner or not. String with a 0 (not rounded i-corner) or 1 (rounded i-corner) in i-position. Positions are, in order and begin to 0: top right, bottom right, bottom left and top left. Default value: all rounded corner ("1111").
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $border_style (array) Border style of rectangle. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @public
+        * @since 2.1.000 (2008-01-08)
+        */
+       public function RoundedRect($x, $y, $w, $h, $r, $round_corner='1111', $style='', $border_style=array(), $fill_color=array()) {
+               $this->RoundedRectXY($x, $y, $w, $h, $r, $r, $round_corner, $style, $border_style, $fill_color);
+       }
+
+       /**
+        * Draws a rounded rectangle.
+        * @param $x (float) Abscissa of upper-left corner.
+        * @param $y (float) Ordinate of upper-left corner.
+        * @param $w (float) Width.
+        * @param $h (float) Height.
+        * @param $rx (float) the x-axis radius of the ellipse used to round off the corners of the rectangle.
+        * @param $ry (float) the y-axis radius of the ellipse used to round off the corners of the rectangle.
+        * @param $round_corner (string) Draws rounded corner or not. String with a 0 (not rounded i-corner) or 1 (rounded i-corner) in i-position. Positions are, in order and begin to 0: top right, bottom right, bottom left and top left. Default value: all rounded corner ("1111").
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $border_style (array) Border style of rectangle. Array like for SetLineStyle(). Default value: default line style (empty array).
+        * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array).
+        * @public
+        * @since 4.9.019 (2010-04-22)
+        */
+       public function RoundedRectXY($x, $y, $w, $h, $rx, $ry, $round_corner='1111', $style='', $border_style=array(), $fill_color=array()) {
+               if ($this->state != 2) {
+                       return;
+               }
+               if (($round_corner == '0000') OR (($rx == $ry) AND ($rx == 0))) {
+                       // Not rounded
+                       $this->Rect($x, $y, $w, $h, $style, $border_style, $fill_color);
+                       return;
+               }
+               // Rounded
+               if (!(false === strpos($style, 'F')) AND isset($fill_color)) {
+                       $this->SetFillColorArray($fill_color);
+               }
+               $op = TCPDF_STATIC::getPathPaintOperator($style);
+               if ($op == 'f') {
+                       $border_style = array();
+               }
+               if ($border_style) {
+                       $this->SetLineStyle($border_style);
+               }
+               $MyArc = 4 / 3 * (sqrt(2) - 1);
+               $this->_outPoint($x + $rx, $y);
+               $xc = $x + $w - $rx;
+               $yc = $y + $ry;
+               $this->_outLine($xc, $y);
+               if ($round_corner[0]) {
+                       $this->_outCurve($xc + ($rx * $MyArc), $yc - $ry, $xc + $rx, $yc - ($ry * $MyArc), $xc + $rx, $yc);
+               } else {
+                       $this->_outLine($x + $w, $y);
+               }
+               $xc = $x + $w - $rx;
+               $yc = $y + $h - $ry;
+               $this->_outLine($x + $w, $yc);
+               if ($round_corner[1]) {
+                       $this->_outCurve($xc + $rx, $yc + ($ry * $MyArc), $xc + ($rx * $MyArc), $yc + $ry, $xc, $yc + $ry);
+               } else {
+                       $this->_outLine($x + $w, $y + $h);
+               }
+               $xc = $x + $rx;
+               $yc = $y + $h - $ry;
+               $this->_outLine($xc, $y + $h);
+               if ($round_corner[2]) {
+                       $this->_outCurve($xc - ($rx * $MyArc), $yc + $ry, $xc - $rx, $yc + ($ry * $MyArc), $xc - $rx, $yc);
+               } else {
+                       $this->_outLine($x, $y + $h);
+               }
+               $xc = $x + $rx;
+               $yc = $y + $ry;
+               $this->_outLine($x, $yc);
+               if ($round_corner[3]) {
+                       $this->_outCurve($xc - $rx, $yc - ($ry * $MyArc), $xc - ($rx * $MyArc), $yc - $ry, $xc, $yc - $ry);
+               } else {
+                       $this->_outLine($x, $y);
+                       $this->_outLine($x + $rx, $y);
+               }
+               $this->_out($op);
+       }
+
+       /**
+        * Draws a grahic arrow.
+        * @param $x0 (float) Abscissa of first point.
+        * @param $y0 (float) Ordinate of first point.
+        * @param $x1 (float) Abscissa of second point.
+        * @param $y1 (float) Ordinate of second point.
+        * @param $head_style (int) (0 = draw only arrowhead arms, 1 = draw closed arrowhead, but no fill, 2 = closed and filled arrowhead, 3 = filled arrowhead)
+        * @param $arm_size (float) length of arrowhead arms
+        * @param $arm_angle (int) angle between an arm and the shaft
+        * @author Piotr Galecki, Nicola Asuni, Andy Meier
+        * @since 4.6.018 (2009-07-10)
+        */
+       public function Arrow($x0, $y0, $x1, $y1, $head_style=0, $arm_size=5, $arm_angle=15) {
+               // getting arrow direction angle
+               // 0 deg angle is when both arms go along X axis. angle grows clockwise.
+               $dir_angle = atan2(($y0 - $y1), ($x0 - $x1));
+               if ($dir_angle < 0) {
+                       $dir_angle += (2 * M_PI);
+               }
+               $arm_angle = deg2rad($arm_angle);
+               $sx1 = $x1;
+               $sy1 = $y1;
+               if ($head_style > 0) {
+                       // calculate the stopping point for the arrow shaft
+                       $sx1 = $x1 + (($arm_size - $this->LineWidth) * cos($dir_angle));
+                       $sy1 = $y1 + (($arm_size - $this->LineWidth) * sin($dir_angle));
+               }
+               // main arrow line / shaft
+               $this->Line($x0, $y0, $sx1, $sy1);
+               // left arrowhead arm tip
+               $x2L = $x1 + ($arm_size * cos($dir_angle + $arm_angle));
+               $y2L = $y1 + ($arm_size * sin($dir_angle + $arm_angle));
+               // right arrowhead arm tip
+               $x2R = $x1 + ($arm_size * cos($dir_angle - $arm_angle));
+               $y2R = $y1 + ($arm_size * sin($dir_angle - $arm_angle));
+               $mode = 'D';
+               $style = array();
+               switch ($head_style) {
+                       case 0: {
+                               // draw only arrowhead arms
+                               $mode = 'D';
+                               $style = array(1, 1, 0);
+                               break;
+                       }
+                       case 1: {
+                               // draw closed arrowhead, but no fill
+                               $mode = 'D';
+                               break;
+                       }
+                       case 2: {
+                               // closed and filled arrowhead
+                               $mode = 'DF';
+                               break;
+                       }
+                       case 3: {
+                               // filled arrowhead
+                               $mode = 'F';
+                               break;
+                       }
+               }
+               $this->Polygon(array($x2L, $y2L, $x1, $y1, $x2R, $y2R), $mode, $style, array());
+       }
+
+       // END GRAPHIC FUNCTIONS SECTION -----------------------
+
+       /**
+        * Add a Named Destination.
+        * NOTE: destination names are unique, so only last entry will be saved.
+        * @param $name (string) Destination name.
+        * @param $y (float) Y position in user units of the destiantion on the selected page (default = -1 = current position; 0 = page start;).
+        * @param $page (int|string) Target page number (leave empty for current page). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages.
+        * @param $x (float) X position in user units of the destiantion on the selected page (default = -1 = current position;).
+        * @return (string) Stripped named destination identifier or false in case of error.
+        * @public
+        * @author Christian Deligant, Nicola Asuni
+        * @since 5.9.097 (2011-06-23)
+        */
+       public function setDestination($name, $y=-1, $page='', $x=-1) {
+               // remove unsupported characters
+               $name = TCPDF_STATIC::encodeNameObject($name);
+               if (TCPDF_STATIC::empty_string($name)) {
+                       return false;
+               }
+               if ($y == -1) {
+                       $y = $this->GetY();
+               } elseif ($y < 0) {
+                       $y = 0;
+               } elseif ($y > $this->h) {
+                       $y = $this->h;
+               }
+               if ($x == -1) {
+                       $x = $this->GetX();
+               } elseif ($x < 0) {
+                       $x = 0;
+               } elseif ($x > $this->w) {
+                       $x = $this->w;
+               }
+               $fixed = false;
+               if (!empty($page) AND ($page[0] == '*')) {
+                       $page = intval(substr($page, 1));
+                       // this page number will not be changed when moving/add/deleting pages
+                       $fixed = true;
+               }
+               if (empty($page)) {
+                       $page = $this->PageNo();
+                       if (empty($page)) {
+                               return;
+                       }
+               }
+               $this->dests[$name] = array('x' => $x, 'y' => $y, 'p' => $page, 'f' => $fixed);
+               return $name;
+       }
+
+       /**
+        * Return the Named Destination array.
+        * @return (array) Named Destination array.
+        * @public
+        * @author Nicola Asuni
+        * @since 5.9.097 (2011-06-23)
+        */
+       public function getDestination() {
+               return $this->dests;
+       }
+
+       /**
+        * Insert Named Destinations.
+        * @protected
+        * @author Johannes G\FCntert, Nicola Asuni
+        * @since 5.9.098 (2011-06-23)
+        */
+       protected function _putdests() {
+               if (empty($this->dests)) {
+                       return;
+               }
+               $this->n_dests = $this->_newobj();
+               $out = ' <<';
+               foreach($this->dests as $name => $o) {
+                       $out .= ' /'.$name.' '.sprintf('[%u 0 R /XYZ %F %F null]', $this->page_obj_id[($o['p'])], ($o['x'] * $this->k), ($this->pagedim[$o['p']]['h'] - ($o['y'] * $this->k)));
+               }
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+       }
+
+       /**
+        * Adds a bookmark - alias for Bookmark().
+        * @param $txt (string) Bookmark description.
+        * @param $level (int) Bookmark level (minimum value is 0).
+        * @param $y (float) Y position in user units of the bookmark on the selected page (default = -1 = current position; 0 = page start;).
+        * @param $page (int|string) Target page number (leave empty for current page). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages.
+        * @param $style (string) Font style: B = Bold, I = Italic, BI = Bold + Italic.
+        * @param $color (array) RGB color array (values from 0 to 255).
+        * @param $x (float) X position in user units of the bookmark on the selected page (default = -1 = current position;).
+        * @param $link (mixed) URL, or numerical link ID, or named destination (# character followed by the destination name), or embedded file (* character followed by the file name).
+        * @public
+        */
+       public function setBookmark($txt, $level=0, $y=-1, $page='', $style='', $color=array(0,0,0), $x=-1, $link='') {
+               $this->Bookmark($txt, $level, $y, $page, $style, $color, $x, $link);
+       }
+
+       /**
+        * Adds a bookmark.
+        * @param $txt (string) Bookmark description.
+        * @param $level (int) Bookmark level (minimum value is 0).
+        * @param $y (float) Y position in user units of the bookmark on the selected page (default = -1 = current position; 0 = page start;).
+        * @param $page (int|string) Target page number (leave empty for current page). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages.
+        * @param $style (string) Font style: B = Bold, I = Italic, BI = Bold + Italic.
+        * @param $color (array) RGB color array (values from 0 to 255).
+        * @param $x (float) X position in user units of the bookmark on the selected page (default = -1 = current position;).
+        * @param $link (mixed) URL, or numerical link ID, or named destination (# character followed by the destination name), or embedded file (* character followed by the file name).
+        * @public
+        * @since 2.1.002 (2008-02-12)
+        */
+       public function Bookmark($txt, $level=0, $y=-1, $page='', $style='', $color=array(0,0,0), $x=-1, $link='') {
+               if ($level < 0) {
+                       $level = 0;
+               }
+               if (isset($this->outlines[0])) {
+                       $lastoutline = end($this->outlines);
+                       $maxlevel = $lastoutline['l'] + 1;
+               } else {
+                       $maxlevel = 0;
+               }
+               if ($level > $maxlevel) {
+                       $level = $maxlevel;
+               }
+               if ($y == -1) {
+                       $y = $this->GetY();
+               } elseif ($y < 0) {
+                       $y = 0;
+               } elseif ($y > $this->h) {
+                       $y = $this->h;
+               }
+               if ($x == -1) {
+                       $x = $this->GetX();
+               } elseif ($x < 0) {
+                       $x = 0;
+               } elseif ($x > $this->w) {
+                       $x = $this->w;
+               }
+               $fixed = false;
+               if (!empty($page) AND ($page[0] == '*')) {
+                       $page = intval(substr($page, 1));
+                       // this page number will not be changed when moving/add/deleting pages
+                       $fixed = true;
+               }
+               if (empty($page)) {
+                       $page = $this->PageNo();
+                       if (empty($page)) {
+                               return;
+                       }
+               }
+               $this->outlines[] = array('t' => $txt, 'l' => $level, 'x' => $x, 'y' => $y, 'p' => $page, 'f' => $fixed, 's' => strtoupper($style), 'c' => $color, 'u' => $link);
+       }
+
+       /**
+        * Sort bookmarks for page and key.
+        * @protected
+        * @since 5.9.119 (2011-09-19)
+        */
+       protected function sortBookmarks() {
+               // get sorting columns
+               $outline_p = array();
+               $outline_y = array();
+               foreach ($this->outlines as $key => $row) {
+                       $outline_p[$key] = $row['p'];
+                       $outline_k[$key] = $key;
+               }
+               // sort outlines by page and original position
+               array_multisort($outline_p, SORT_NUMERIC, SORT_ASC, $outline_k, SORT_NUMERIC, SORT_ASC, $this->outlines);
+       }
+
+       /**
+        * Create a bookmark PDF string.
+        * @protected
+        * @author Olivier Plathey, Nicola Asuni
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected function _putbookmarks() {
+               $nb = count($this->outlines);
+               if ($nb == 0) {
+                       return;
+               }
+               // sort bookmarks
+               $this->sortBookmarks();
+               $lru = array();
+               $level = 0;
+               foreach ($this->outlines as $i => $o) {
+                       if ($o['l'] > 0) {
+                               $parent = $lru[($o['l'] - 1)];
+                               //Set parent and last pointers
+                               $this->outlines[$i]['parent'] = $parent;
+                               $this->outlines[$parent]['last'] = $i;
+                               if ($o['l'] > $level) {
+                                       //Level increasing: set first pointer
+                                       $this->outlines[$parent]['first'] = $i;
+                               }
+                       } else {
+                               $this->outlines[$i]['parent'] = $nb;
+                       }
+                       if (($o['l'] <= $level) AND ($i > 0)) {
+                               //Set prev and next pointers
+                               $prev = $lru[$o['l']];
+                               $this->outlines[$prev]['next'] = $i;
+                               $this->outlines[$i]['prev'] = $prev;
+                       }
+                       $lru[$o['l']] = $i;
+                       $level = $o['l'];
+               }
+               //Outline items
+               $n = $this->n + 1;
+               $nltags = '/<br[\s]?\/>|<\/(blockquote|dd|dl|div|dt|h1|h2|h3|h4|h5|h6|hr|li|ol|p|pre|ul|tcpdf|table|tr|td)>/si';
+               foreach ($this->outlines as $i => $o) {
+                       $oid = $this->_newobj();
+                       // covert HTML title to string
+                       $title = preg_replace($nltags, "\n", $o['t']);
+                       $title = preg_replace("/[\r]+/si", '', $title);
+                       $title = preg_replace("/[\n]+/si", "\n", $title);
+                       $title = strip_tags($title);
+                       $title = $this->stringTrim($title);
+                       $out = '<</Title '.$this->_textstring($title, $oid);
+                       $out .= ' /Parent '.($n + $o['parent']).' 0 R';
+                       if (isset($o['prev'])) {
+                               $out .= ' /Prev '.($n + $o['prev']).' 0 R';
+                       }
+                       if (isset($o['next'])) {
+                               $out .= ' /Next '.($n + $o['next']).' 0 R';
+                       }
+                       if (isset($o['first'])) {
+                               $out .= ' /First '.($n + $o['first']).' 0 R';
+                       }
+                       if (isset($o['last'])) {
+                               $out .= ' /Last '.($n + $o['last']).' 0 R';
+                       }
+                       if (isset($o['u']) AND !empty($o['u'])) {
+                               // link
+                               if (is_string($o['u'])) {
+                                       if ($o['u'][0] == '#') {
+                                               // internal destination
+                                               $out .= ' /Dest /'.TCPDF_STATIC::encodeNameObject(substr($o['u'], 1));
+                                       } elseif ($o['u'][0] == '%') {
+                                               // embedded PDF file
+                                               $filename = basename(substr($o['u'], 1));
+                                               $out .= ' /A <</S /GoToE /D [0 /Fit] /NewWindow true /T << /R /C /P '.($o['p'] - 1).' /A '.$this->embeddedfiles[$filename]['a'].' >> >>';
+                                       } elseif ($o['u'][0] == '*') {
+                                               // embedded generic file
+                                               $filename = basename(substr($o['u'], 1));
+                                               $jsa = 'var D=event.target.doc;var MyData=D.dataObjects;for (var i in MyData) if (MyData[i].path=="'.$filename.'") D.exportDataObject( { cName : MyData[i].name, nLaunch : 2});';
+                                               $out .= ' /A <</S /JavaScript /JS '.$this->_textstring($jsa, $oid).'>>';
+                                       } else {
+                                               // external URI link
+                                               $out .= ' /A <</S /URI /URI '.$this->_datastring($this->unhtmlentities($o['u']), $oid).'>>';
+                                       }
+                               } elseif (isset($this->links[$o['u']])) {
+                                       // internal link ID
+                                       $l = $this->links[$o['u']];
+                                       if (isset($this->page_obj_id[($l['p'])])) {
+                                               $out .= sprintf(' /Dest [%u 0 R /XYZ 0 %F null]', $this->page_obj_id[($l['p'])], ($this->pagedim[$l['p']]['h'] - ($l['y'] * $this->k)));
+                                       }
+                               }
+                       } elseif (isset($this->page_obj_id[($o['p'])])) {
+                               // link to a page
+                               $out .= ' '.sprintf('/Dest [%u 0 R /XYZ %F %F null]', $this->page_obj_id[($o['p'])], ($o['x'] * $this->k), ($this->pagedim[$o['p']]['h'] - ($o['y'] * $this->k)));
+                       }
+                       // set font style
+                       $style = 0;
+                       if (!empty($o['s'])) {
+                               // bold
+                               if (strpos($o['s'], 'B') !== false) {
+                                       $style |= 2;
+                               }
+                               // oblique
+                               if (strpos($o['s'], 'I') !== false) {
+                                       $style |= 1;
+                               }
+                       }
+                       $out .= sprintf(' /F %d', $style);
+                       // set bookmark color
+                       if (isset($o['c']) AND is_array($o['c']) AND (count($o['c']) == 3)) {
+                               $color = array_values($o['c']);
+                               $out .= sprintf(' /C [%F %F %F]', ($color[0] / 255), ($color[1] / 255), ($color[2] / 255));
+                       } else {
+                               // black
+                               $out .= ' /C [0.0 0.0 0.0]';
+                       }
+                       $out .= ' /Count 0'; // normally closed item
+                       $out .= ' >>';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+               }
+               //Outline root
+               $this->OutlineRoot = $this->_newobj();
+               $this->_out('<< /Type /Outlines /First '.$n.' 0 R /Last '.($n + $lru[0]).' 0 R >>'."\n".'endobj');
+       }
+
+       // --- JAVASCRIPT ------------------------------------------------------
+
+       /**
+        * Adds a javascript
+        * @param $script (string) Javascript code
+        * @public
+        * @author Johannes G\FCntert, Nicola Asuni
+        * @since 2.1.002 (2008-02-12)
+        */
+       public function IncludeJS($script) {
+               $this->javascript .= $script;
+       }
+
+       /**
+        * Adds a javascript object and return object ID
+        * @param $script (string) Javascript code
+        * @param $onload (boolean) if true executes this object when opening the document
+        * @return int internal object ID
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function addJavascriptObject($script, $onload=false) {
+               if ($this->pdfa_mode) {
+                       // javascript is not allowed in PDF/A mode
+                       return false;
+               }
+               ++$this->n;
+               $this->js_objects[$this->n] = array('n' => $this->n, 'js' => $script, 'onload' => $onload);
+               return $this->n;
+       }
+
+       /**
+        * Create a javascript PDF string.
+        * @protected
+        * @author Johannes G\FCntert, Nicola Asuni
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected function _putjavascript() {
+               if ($this->pdfa_mode OR (empty($this->javascript) AND empty($this->js_objects))) {
+                       return;
+               }
+               if (strpos($this->javascript, 'this.addField') > 0) {
+                       if (!$this->ur['enabled']) {
+                               //$this->setUserRights();
+                       }
+                       // the following two lines are used to avoid form fields duplication after saving
+                       // The addField method only works when releasing user rights (UR3)
+                       $jsa = sprintf("ftcpdfdocsaved=this.addField('%s','%s',%d,[%F,%F,%F,%F]);", 'tcpdfdocsaved', 'text', 0, 0, 1, 0, 1);
+                       $jsb = "getField('tcpdfdocsaved').value='saved';";
+                       $this->javascript = $jsa."\n".$this->javascript."\n".$jsb;
+               }
+               // name tree for javascript
+               $this->n_js = '<< /Names [';
+               if (!empty($this->javascript)) {
+                       $this->n_js .= ' (EmbeddedJS) '.($this->n + 1).' 0 R';
+               }
+               if (!empty($this->js_objects)) {
+                       foreach ($this->js_objects as $key => $val) {
+                               if ($val['onload']) {
+                                       $this->n_js .= ' (JS'.$key.') '.$key.' 0 R';
+                               }
+                       }
+               }
+               $this->n_js .= ' ] >>';
+               // default Javascript object
+               if (!empty($this->javascript)) {
+                       $obj_id = $this->_newobj();
+                       $out = '<< /S /JavaScript';
+                       $out .= ' /JS '.$this->_textstring($this->javascript, $obj_id);
+                       $out .= ' >>';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+               }
+               // additional Javascript objects
+               if (!empty($this->js_objects)) {
+                       foreach ($this->js_objects as $key => $val) {
+                               $out = $this->_getobj($key)."\n".' << /S /JavaScript /JS '.$this->_textstring($val['js'], $key).' >>'."\n".'endobj';
+                               $this->_out($out);
+                       }
+               }
+       }
+
+       /**
+        * Adds a javascript form field.
+        * @param $type (string) field type
+        * @param $name (string) field name
+        * @param $x (int) horizontal position
+        * @param $y (int) vertical position
+        * @param $w (int) width
+        * @param $h (int) height
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @protected
+        * @author Denis Van Nuffelen, Nicola Asuni
+        * @since 2.1.002 (2008-02-12)
+        */
+       protected function _addfield($type, $name, $x, $y, $w, $h, $prop) {
+               if ($this->rtl) {
+                       $x = $x - $w;
+               }
+               // the followind avoid fields duplication after saving the document
+               $this->javascript .= "if (getField('tcpdfdocsaved').value != 'saved') {";
+               $k = $this->k;
+               $this->javascript .= sprintf("f".$name."=this.addField('%s','%s',%u,[%F,%F,%F,%F]);", $name, $type, $this->PageNo()-1, $x*$k, ($this->h-$y)*$k+1, ($x+$w)*$k, ($this->h-$y-$h)*$k+1)."\n";
+               $this->javascript .= 'f'.$name.'.textSize='.$this->FontSizePt.";\n";
+               while (list($key, $val) = each($prop)) {
+                       if (strcmp(substr($key, -5), 'Color') == 0) {
+                               $val = TCPDF_COLORS::_JScolor($val);
+                       } else {
+                               $val = "'".$val."'";
+                       }
+                       $this->javascript .= 'f'.$name.'.'.$key.'='.$val.";\n";
+               }
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+               $this->javascript .= '}';
+       }
+
+       // --- FORM FIELDS -----------------------------------------------------
+
+
+
+       /**
+        * Set default properties for form fields.
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-06)
+        */
+       public function setFormDefaultProp($prop=array()) {
+               $this->default_form_prop = $prop;
+       }
+
+       /**
+        * Return the default properties for form fields.
+        * @return array $prop javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-06)
+        */
+       public function getFormDefaultProp() {
+               return $this->default_form_prop;
+       }
+
+       /**
+        * Creates a text field
+        * @param $name (string) field name
+        * @param $w (float) Width of the rectangle
+        * @param $h (float) Height of the rectangle
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function TextField($name, $w, $h, $prop=array(), $opt=array(), $x='', $y='', $js=false) {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               if ($js) {
+                       $this->_addfield('text', $name, $x, $y, $w, $h, $prop);
+                       return;
+               }
+               // get default style
+               $prop = array_merge($this->getFormDefaultProp(), $prop);
+               // get annotation data
+               $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl);
+               // set default appearance stream
+               $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i'];
+               $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor);
+               $popt['da'] = $fontstyle;
+               // build appearance stream
+               $popt['ap'] = array();
+               $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' ';
+               $text = '';
+               if (isset($prop['value']) AND !empty($prop['value'])) {
+                       $text = $prop['value'];
+               } elseif (isset($opt['v']) AND !empty($opt['v'])) {
+                       $text = $opt['v'];
+               }
+               $tmpid = $this->startTemplate($w, $h, false);
+               $align = '';
+               if (isset($popt['q'])) {
+                       switch ($popt['q']) {
+                               case 0: {
+                                       $align = 'L';
+                                       break;
+                               }
+                               case 1: {
+                                       $align = 'C';
+                                       break;
+                               }
+                               case 2: {
+                                       $align = 'R';
+                                       break;
+                               }
+                               default: {
+                                       $align = '';
+                                       break;
+                               }
+                       }
+               }
+               $this->MultiCell($w, $h, $text, 0, $align, false, 0, 0, 0, true, 0, false, true, 0, 'T', false);
+               $this->endTemplate();
+               --$this->n;
+               $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata'];
+               unset($this->xobjects[$tmpid]);
+               $popt['ap']['n'] .= 'Q EMC';
+               // merge options
+               $opt = array_merge($popt, $opt);
+               // remove some conflicting options
+               unset($opt['bs']);
+               // set remaining annotation data
+               $opt['Subtype'] = 'Widget';
+               $opt['ft'] = 'Tx';
+               $opt['t'] = $name;
+               // Additional annotation's parameters (check _putannotsobj() method):
+               //$opt['f']
+               //$opt['as']
+               //$opt['bs']
+               //$opt['be']
+               //$opt['c']
+               //$opt['border']
+               //$opt['h']
+               //$opt['mk'];
+               //$opt['mk']['r']
+               //$opt['mk']['bc'];
+               //$opt['mk']['bg'];
+               unset($opt['mk']['ca']);
+               unset($opt['mk']['rc']);
+               unset($opt['mk']['ac']);
+               unset($opt['mk']['i']);
+               unset($opt['mk']['ri']);
+               unset($opt['mk']['ix']);
+               unset($opt['mk']['if']);
+               //$opt['mk']['if']['sw'];
+               //$opt['mk']['if']['s'];
+               //$opt['mk']['if']['a'];
+               //$opt['mk']['if']['fb'];
+               unset($opt['mk']['tp']);
+               //$opt['tu']
+               //$opt['tm']
+               //$opt['ff']
+               //$opt['v']
+               //$opt['dv']
+               //$opt['a']
+               //$opt['aa']
+               //$opt['q']
+               $this->Annotation($x, $y, $w, $h, $name, $opt, 0);
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+       }
+
+       /**
+        * Creates a RadioButton field.
+        * @param $name (string) Field name.
+        * @param $w (int) Width of the radio button.
+        * @param $prop (array) Javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $opt (array) Annotation parameters. Possible values are described on official PDF32000_2008 reference.
+        * @param $onvalue (string) Value to be returned if selected.
+        * @param $checked (boolean) Define the initial state.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $js (boolean) If true put the field using JavaScript (requires Acrobat Writer to be rendered).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function RadioButton($name, $w, $prop=array(), $opt=array(), $onvalue='On', $checked=false, $x='', $y='', $js=false) {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($w, $x, $y);
+               if ($js) {
+                       $this->_addfield('radiobutton', $name, $x, $y, $w, $w, $prop);
+                       return;
+               }
+               if (TCPDF_STATIC::empty_string($onvalue)) {
+                       $onvalue = 'On';
+               }
+               if ($checked) {
+                       $defval = $onvalue;
+               } else {
+                       $defval = 'Off';
+               }
+               // set font
+               $font = 'zapfdingbats';
+               if ($this->pdfa_mode) {
+                       // all fonts must be embedded
+                       $font = 'pdfa'.$font;
+               }
+               $this->AddFont($font);
+               $tmpfont = $this->getFontBuffer($font);
+               // set data for parent group
+               if (!isset($this->radiobutton_groups[$this->page])) {
+                       $this->radiobutton_groups[$this->page] = array();
+               }
+               if (!isset($this->radiobutton_groups[$this->page][$name])) {
+                       $this->radiobutton_groups[$this->page][$name] = array();
+                       ++$this->n;
+                       $this->radiobutton_groups[$this->page][$name]['n'] = $this->n;
+                       $this->radio_groups[] = $this->n;
+               }
+               $kid = ($this->n + 1);
+               // save object ID to be added on Kids entry on parent object
+               $this->radiobutton_groups[$this->page][$name][] = array('kid' => $kid, 'def' => $defval);
+               // get default style
+               $prop = array_merge($this->getFormDefaultProp(), $prop);
+               $prop['NoToggleToOff'] = 'true';
+               $prop['Radio'] = 'true';
+               $prop['borderStyle'] = 'inset';
+               // get annotation data
+               $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl);
+               // set additional default options
+               $this->annotation_fonts[$tmpfont['fontkey']] = $tmpfont['i'];
+               $fontstyle = sprintf('/F%d %F Tf %s', $tmpfont['i'], $this->FontSizePt, $this->TextColor);
+               $popt['da'] = $fontstyle;
+               // build appearance stream
+               $popt['ap'] = array();
+               $popt['ap']['n'] = array();
+               $fx = ((($w - $this->getAbsFontMeasure($tmpfont['cw'][108])) / 2) * $this->k);
+               $fy = (($w - ((($tmpfont['desc']['Ascent'] - $tmpfont['desc']['Descent']) * $this->FontSizePt / 1000) / $this->k)) * $this->k);
+               $popt['ap']['n'][$onvalue] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(108).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy);
+               $popt['ap']['n']['Off'] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(109).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy);
+               if (!isset($popt['mk'])) {
+                       $popt['mk'] = array();
+               }
+               $popt['mk']['ca'] = '(l)';
+               // merge options
+               $opt = array_merge($popt, $opt);
+               // set remaining annotation data
+               $opt['Subtype'] = 'Widget';
+               $opt['ft'] = 'Btn';
+               if ($checked) {
+                       $opt['v'] = array('/'.$onvalue);
+                       $opt['as'] = $onvalue;
+               } else {
+                       $opt['as'] = 'Off';
+               }
+               // store readonly flag
+               if (!isset($this->radiobutton_groups[$this->page][$name]['#readonly#'])) {
+                       $this->radiobutton_groups[$this->page][$name]['#readonly#'] = false;
+               }
+               $this->radiobutton_groups[$this->page][$name]['#readonly#'] |= ($opt['f'] & 64);
+               $this->Annotation($x, $y, $w, $w, $name, $opt, 0);
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+       }
+
+       /**
+        * Creates a List-box field
+        * @param $name (string) field name
+        * @param $w (int) width
+        * @param $h (int) height
+        * @param $values (array) array containing the list of values.
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function ListBox($name, $w, $h, $values, $prop=array(), $opt=array(), $x='', $y='', $js=false) {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               if ($js) {
+                       $this->_addfield('listbox', $name, $x, $y, $w, $h, $prop);
+                       $s = '';
+                       foreach ($values as $value) {
+                               if (is_array($value)) {
+                                       $s .= ',[\''.addslashes($value[1]).'\',\''.addslashes($value[0]).'\']';
+                               } else {
+                                       $s .= ',[\''.addslashes($value).'\',\''.addslashes($value).'\']';
+                               }
+                       }
+                       $this->javascript .= 'f'.$name.'.setItems('.substr($s, 1).');'."\n";
+                       return;
+               }
+               // get default style
+               $prop = array_merge($this->getFormDefaultProp(), $prop);
+               // get annotation data
+               $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl);
+               // set additional default values
+               $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i'];
+               $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor);
+               $popt['da'] = $fontstyle;
+               // build appearance stream
+               $popt['ap'] = array();
+               $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' ';
+               $text = '';
+               foreach($values as $item) {
+                       if (is_array($item)) {
+                               $text .= $item[1]."\n";
+                       } else {
+                               $text .= $item."\n";
+                       }
+               }
+               $tmpid = $this->startTemplate($w, $h, false);
+               $this->MultiCell($w, $h, $text, 0, '', false, 0, 0, 0, true, 0, false, true, 0, 'T', false);
+               $this->endTemplate();
+               --$this->n;
+               $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata'];
+               unset($this->xobjects[$tmpid]);
+               $popt['ap']['n'] .= 'Q EMC';
+               // merge options
+               $opt = array_merge($popt, $opt);
+               // set remaining annotation data
+               $opt['Subtype'] = 'Widget';
+               $opt['ft'] = 'Ch';
+               $opt['t'] = $name;
+               $opt['opt'] = $values;
+               unset($opt['mk']['ca']);
+               unset($opt['mk']['rc']);
+               unset($opt['mk']['ac']);
+               unset($opt['mk']['i']);
+               unset($opt['mk']['ri']);
+               unset($opt['mk']['ix']);
+               unset($opt['mk']['if']);
+               unset($opt['mk']['tp']);
+               $this->Annotation($x, $y, $w, $h, $name, $opt, 0);
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+       }
+
+       /**
+        * Creates a Combo-box field
+        * @param $name (string) field name
+        * @param $w (int) width
+        * @param $h (int) height
+        * @param $values (array) array containing the list of values.
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function ComboBox($name, $w, $h, $values, $prop=array(), $opt=array(), $x='', $y='', $js=false) {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               if ($js) {
+                       $this->_addfield('combobox', $name, $x, $y, $w, $h, $prop);
+                       $s = '';
+                       foreach ($values as $value) {
+                               if (is_array($value)) {
+                                       $s .= ',[\''.addslashes($value[1]).'\',\''.addslashes($value[0]).'\']';
+                               } else {
+                                       $s .= ',[\''.addslashes($value).'\',\''.addslashes($value).'\']';
+                               }
+                       }
+                       $this->javascript .= 'f'.$name.'.setItems('.substr($s, 1).');'."\n";
+                       return;
+               }
+               // get default style
+               $prop = array_merge($this->getFormDefaultProp(), $prop);
+               $prop['Combo'] = true;
+               // get annotation data
+               $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl);
+               // set additional default options
+               $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i'];
+               $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor);
+               $popt['da'] = $fontstyle;
+               // build appearance stream
+               $popt['ap'] = array();
+               $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' ';
+               $text = '';
+               foreach($values as $item) {
+                       if (is_array($item)) {
+                               $text .= $item[1]."\n";
+                       } else {
+                               $text .= $item."\n";
+                       }
+               }
+               $tmpid = $this->startTemplate($w, $h, false);
+               $this->MultiCell($w, $h, $text, 0, '', false, 0, 0, 0, true, 0, false, true, 0, 'T', false);
+               $this->endTemplate();
+               --$this->n;
+               $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata'];
+               unset($this->xobjects[$tmpid]);
+               $popt['ap']['n'] .= 'Q EMC';
+               // merge options
+               $opt = array_merge($popt, $opt);
+               // set remaining annotation data
+               $opt['Subtype'] = 'Widget';
+               $opt['ft'] = 'Ch';
+               $opt['t'] = $name;
+               $opt['opt'] = $values;
+               unset($opt['mk']['ca']);
+               unset($opt['mk']['rc']);
+               unset($opt['mk']['ac']);
+               unset($opt['mk']['i']);
+               unset($opt['mk']['ri']);
+               unset($opt['mk']['ix']);
+               unset($opt['mk']['if']);
+               unset($opt['mk']['tp']);
+               $this->Annotation($x, $y, $w, $h, $name, $opt, 0);
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+       }
+
+       /**
+        * Creates a CheckBox field
+        * @param $name (string) field name
+        * @param $w (int) width
+        * @param $checked (boolean) define the initial state.
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference.
+        * @param $onvalue (string) value to be returned if selected.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function CheckBox($name, $w, $checked=false, $prop=array(), $opt=array(), $onvalue='Yes', $x='', $y='', $js=false) {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($w, $x, $y);
+               if ($js) {
+                       $this->_addfield('checkbox', $name, $x, $y, $w, $w, $prop);
+                       return;
+               }
+               if (!isset($prop['value'])) {
+                       $prop['value'] = array('Yes');
+               }
+               // get default style
+               $prop = array_merge($this->getFormDefaultProp(), $prop);
+               $prop['borderStyle'] = 'inset';
+               // get annotation data
+               $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl);
+               // set additional default options
+               $font = 'zapfdingbats';
+               if ($this->pdfa_mode) {
+                       // all fonts must be embedded
+                       $font = 'pdfa'.$font;
+               }
+               $this->AddFont($font);
+               $tmpfont = $this->getFontBuffer($font);
+               $this->annotation_fonts[$tmpfont['fontkey']] = $tmpfont['i'];
+               $fontstyle = sprintf('/F%d %F Tf %s', $tmpfont['i'], $this->FontSizePt, $this->TextColor);
+               $popt['da'] = $fontstyle;
+               // build appearance stream
+               $popt['ap'] = array();
+               $popt['ap']['n'] = array();
+               $fx = ((($w - $this->getAbsFontMeasure($tmpfont['cw'][110])) / 2) * $this->k);
+               $fy = (($w - ((($tmpfont['desc']['Ascent'] - $tmpfont['desc']['Descent']) * $this->FontSizePt / 1000) / $this->k)) * $this->k);
+               $popt['ap']['n']['Yes'] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(110).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy);
+               $popt['ap']['n']['Off'] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(111).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy);
+               // merge options
+               $opt = array_merge($popt, $opt);
+               // set remaining annotation data
+               $opt['Subtype'] = 'Widget';
+               $opt['ft'] = 'Btn';
+               $opt['t'] = $name;
+               if (TCPDF_STATIC::empty_string($onvalue)) {
+                       $onvalue = 'Yes';
+               }
+               $opt['opt'] = array($onvalue);
+               if ($checked) {
+                       $opt['v'] = array('/Yes');
+                       $opt['as'] = 'Yes';
+               } else {
+                       $opt['v'] = array('/Off');
+                       $opt['as'] = 'Off';
+               }
+               $this->Annotation($x, $y, $w, $w, $name, $opt, 0);
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+       }
+
+       /**
+        * Creates a button field
+        * @param $name (string) field name
+        * @param $w (int) width
+        * @param $h (int) height
+        * @param $caption (string) caption.
+        * @param $action (mixed) action triggered by pressing the button. Use a string to specify a javascript action. Use an array to specify a form action options as on section 12.7.5 of PDF32000_2008.
+        * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference.
+        * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference.
+        * @param $x (float) Abscissa of the upper-left corner of the rectangle
+        * @param $y (float) Ordinate of the upper-left corner of the rectangle
+        * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.8.000 (2009-09-07)
+        */
+       public function Button($name, $w, $h, $caption, $action, $prop=array(), $opt=array(), $x='', $y='', $js=false) {
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               if ($js) {
+                       $this->_addfield('button', $name, $this->x, $this->y, $w, $h, $prop);
+                       $this->javascript .= 'f'.$name.".buttonSetCaption('".addslashes($caption)."');\n";
+                       $this->javascript .= 'f'.$name.".setAction('MouseUp','".addslashes($action)."');\n";
+                       $this->javascript .= 'f'.$name.".highlight='push';\n";
+                       $this->javascript .= 'f'.$name.".print=false;\n";
+                       return;
+               }
+               // get default style
+               $prop = array_merge($this->getFormDefaultProp(), $prop);
+               $prop['Pushbutton'] = 'true';
+               $prop['highlight'] = 'push';
+               $prop['display'] = 'display.noPrint';
+               // get annotation data
+               $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl);
+               $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i'];
+               $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor);
+               $popt['da'] = $fontstyle;
+               // build appearance stream
+               $popt['ap'] = array();
+               $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' ';
+               $tmpid = $this->startTemplate($w, $h, false);
+               $bw = (2 / $this->k); // border width
+               $border = array(
+                       'L' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(231)),
+                       'R' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(51)),
+                       'T' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(231)),
+                       'B' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(51)));
+               $this->SetFillColor(204);
+               $this->Cell($w, $h, $caption, $border, 0, 'C', true, '', 1, false, 'T', 'M');
+               $this->endTemplate();
+               --$this->n;
+               $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata'];
+               unset($this->xobjects[$tmpid]);
+               $popt['ap']['n'] .= 'Q EMC';
+               // set additional default options
+               if (!isset($popt['mk'])) {
+                       $popt['mk'] = array();
+               }
+               $ann_obj_id = ($this->n + 1);
+               if (!empty($action) AND !is_array($action)) {
+                       $ann_obj_id = ($this->n + 2);
+               }
+               $popt['mk']['ca'] = $this->_textstring($caption, $ann_obj_id);
+               $popt['mk']['rc'] = $this->_textstring($caption, $ann_obj_id);
+               $popt['mk']['ac'] = $this->_textstring($caption, $ann_obj_id);
+               // merge options
+               $opt = array_merge($popt, $opt);
+               // set remaining annotation data
+               $opt['Subtype'] = 'Widget';
+               $opt['ft'] = 'Btn';
+               $opt['t'] = $caption;
+               $opt['v'] = $name;
+               if (!empty($action)) {
+                       if (is_array($action)) {
+                               // form action options as on section 12.7.5 of PDF32000_2008.
+                               $opt['aa'] = '/D <<';
+                               $bmode = array('SubmitForm', 'ResetForm', 'ImportData');
+                               foreach ($action AS $key => $val) {
+                                       if (($key == 'S') AND in_array($val, $bmode)) {
+                                               $opt['aa'] .= ' /S /'.$val;
+                                       } elseif (($key == 'F') AND (!empty($val))) {
+                                               $opt['aa'] .= ' /F '.$this->_datastring($val, $ann_obj_id);
+                                       } elseif (($key == 'Fields') AND is_array($val) AND !empty($val)) {
+                                               $opt['aa'] .= ' /Fields [';
+                                               foreach ($val AS $field) {
+                                                       $opt['aa'] .= ' '.$this->_textstring($field, $ann_obj_id);
+                                               }
+                                               $opt['aa'] .= ']';
+                                       } elseif (($key == 'Flags')) {
+                                               $ff = 0;
+                                               if (is_array($val)) {
+                                                       foreach ($val AS $flag) {
+                                                               switch ($flag) {
+                                                                       case 'Include/Exclude': {
+                                                                               $ff += 1 << 0;
+                                                                               break;
+                                                                       }
+                                                                       case 'IncludeNoValueFields': {
+                                                                               $ff += 1 << 1;
+                                                                               break;
+                                                                       }
+                                                                       case 'ExportFormat': {
+                                                                               $ff += 1 << 2;
+                                                                               break;
+                                                                       }
+                                                                       case 'GetMethod': {
+                                                                               $ff += 1 << 3;
+                                                                               break;
+                                                                       }
+                                                                       case 'SubmitCoordinates': {
+                                                                               $ff += 1 << 4;
+                                                                               break;
+                                                                       }
+                                                                       case 'XFDF': {
+                                                                               $ff += 1 << 5;
+                                                                               break;
+                                                                       }
+                                                                       case 'IncludeAppendSaves': {
+                                                                               $ff += 1 << 6;
+                                                                               break;
+                                                                       }
+                                                                       case 'IncludeAnnotations': {
+                                                                               $ff += 1 << 7;
+                                                                               break;
+                                                                       }
+                                                                       case 'SubmitPDF': {
+                                                                               $ff += 1 << 8;
+                                                                               break;
+                                                                       }
+                                                                       case 'CanonicalFormat': {
+                                                                               $ff += 1 << 9;
+                                                                               break;
+                                                                       }
+                                                                       case 'ExclNonUserAnnots': {
+                                                                               $ff += 1 << 10;
+                                                                               break;
+                                                                       }
+                                                                       case 'ExclFKey': {
+                                                                               $ff += 1 << 11;
+                                                                               break;
+                                                                       }
+                                                                       case 'EmbedForm': {
+                                                                               $ff += 1 << 13;
+                                                                               break;
+                                                                       }
+                                                               }
+                                                       }
+                                               } else {
+                                                       $ff = intval($val);
+                                               }
+                                               $opt['aa'] .= ' /Flags '.$ff;
+                                       }
+                               }
+                               $opt['aa'] .= ' >>';
+                       } else {
+                               // Javascript action or raw action command
+                               $js_obj_id = $this->addJavascriptObject($action);
+                               $opt['aa'] = '/D '.$js_obj_id.' 0 R';
+                       }
+               }
+               $this->Annotation($x, $y, $w, $h, $name, $opt, 0);
+               if ($this->rtl) {
+                       $this->x -= $w;
+               } else {
+                       $this->x += $w;
+               }
+       }
+
+       // --- END FORMS FIELDS ------------------------------------------------
+
+       /**
+        * Add certification signature (DocMDP or UR3)
+        * You can set only one signature type
+        * @protected
+        * @author Nicola Asuni
+        * @since 4.6.008 (2009-05-07)
+        */
+       protected function _putsignature() {
+               if ((!$this->sign) OR (!isset($this->signature_data['cert_type']))) {
+                       return;
+               }
+               $sigobjid = ($this->sig_obj_id + 1);
+               $out = $this->_getobj($sigobjid)."\n";
+               $out .= '<< /Type /Sig';
+               $out .= ' /Filter /Adobe.PPKLite';
+               $out .= ' /SubFilter /adbe.pkcs7.detached';
+               $out .= ' '.TCPDF_STATIC::$byterange_string;
+               $out .= ' /Contents<'.str_repeat('0', $this->signature_max_length).'>';
+               if (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A')) {
+                       $out .= ' /Reference ['; // array of signature reference dictionaries
+                       $out .= ' << /Type /SigRef';
+                       if ($this->signature_data['cert_type'] > 0) {
+                               $out .= ' /TransformMethod /DocMDP';
+                               $out .= ' /TransformParams <<';
+                               $out .= ' /Type /TransformParams';
+                               $out .= ' /P '.$this->signature_data['cert_type'];
+                               $out .= ' /V /1.2';
+                       } else {
+                               $out .= ' /TransformMethod /UR3';
+                               $out .= ' /TransformParams <<';
+                               $out .= ' /Type /TransformParams';
+                               $out .= ' /V /2.2';
+                               if (!TCPDF_STATIC::empty_string($this->ur['document'])) {
+                                       $out .= ' /Document['.$this->ur['document'].']';
+                               }
+                               if (!TCPDF_STATIC::empty_string($this->ur['form'])) {
+                                       $out .= ' /Form['.$this->ur['form'].']';
+                               }
+                               if (!TCPDF_STATIC::empty_string($this->ur['signature'])) {
+                                       $out .= ' /Signature['.$this->ur['signature'].']';
+                               }
+                               if (!TCPDF_STATIC::empty_string($this->ur['annots'])) {
+                                       $out .= ' /Annots['.$this->ur['annots'].']';
+                               }
+                               if (!TCPDF_STATIC::empty_string($this->ur['ef'])) {
+                                       $out .= ' /EF['.$this->ur['ef'].']';
+                               }
+                               if (!TCPDF_STATIC::empty_string($this->ur['formex'])) {
+                                       $out .= ' /FormEX['.$this->ur['formex'].']';
+                               }
+                       }
+                       $out .= ' >>'; // close TransformParams
+                       // optional digest data (values must be calculated and replaced later)
+                       //$out .= ' /Data ********** 0 R';
+                       //$out .= ' /DigestMethod/MD5';
+                       //$out .= ' /DigestLocation[********** 34]';
+                       //$out .= ' /DigestValue<********************************>';
+                       $out .= ' >>';
+                       $out .= ' ]'; // end of reference
+               }
+               if (isset($this->signature_data['info']['Name']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['Name'])) {
+                       $out .= ' /Name '.$this->_textstring($this->signature_data['info']['Name'], $sigobjid);
+               }
+               if (isset($this->signature_data['info']['Location']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['Location'])) {
+                       $out .= ' /Location '.$this->_textstring($this->signature_data['info']['Location'], $sigobjid);
+               }
+               if (isset($this->signature_data['info']['Reason']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['Reason'])) {
+                       $out .= ' /Reason '.$this->_textstring($this->signature_data['info']['Reason'], $sigobjid);
+               }
+               if (isset($this->signature_data['info']['ContactInfo']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['ContactInfo'])) {
+                       $out .= ' /ContactInfo '.$this->_textstring($this->signature_data['info']['ContactInfo'], $sigobjid);
+               }
+               $out .= ' /M '.$this->_datestring($sigobjid, $this->doc_modification_timestamp);
+               $out .= ' >>';
+               $out .= "\n".'endobj';
+               $this->_out($out);
+       }
+
+       /**
+        * Set User's Rights for PDF Reader
+        * WARNING: This is experimental and currently do not work.
+        * Check the PDF Reference 8.7.1 Transform Methods,
+        * Table 8.105 Entries in the UR transform parameters dictionary
+        * @param $enable (boolean) if true enable user's rights on PDF reader
+        * @param $document (string) Names specifying additional document-wide usage rights for the document. The only defined value is "/FullSave", which permits a user to save the document along with modified form and/or annotation data.
+        * @param $annots (string) Names specifying additional annotation-related usage rights for the document. Valid names in PDF 1.5 and later are /Create/Delete/Modify/Copy/Import/Export, which permit the user to perform the named operation on annotations.
+        * @param $form (string) Names specifying additional form-field-related usage rights for the document. Valid names are: /Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate
+        * @param $signature (string) Names specifying additional signature-related usage rights for the document. The only defined value is /Modify, which permits a user to apply a digital signature to an existing signature form field or clear a signed signature form field.
+        * @param $ef (string) Names specifying additional usage rights for named embedded files in the document. Valid names are /Create/Delete/Modify/Import, which permit the user to perform the named operation on named embedded files
+        Names specifying additional embedded-files-related usage rights for the document.
+        * @param $formex (string) Names specifying additional form-field-related usage rights. The only valid name is BarcodePlaintext, which permits text form field data to be encoded as a plaintext two-dimensional barcode.
+        * @public
+        * @author Nicola Asuni
+        * @since 2.9.000 (2008-03-26)
+        */
+       public function setUserRights(
+                       $enable=true,
+                       $document='/FullSave',
+                       $annots='/Create/Delete/Modify/Copy/Import/Export',
+                       $form='/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate',
+                       $signature='/Modify',
+                       $ef='/Create/Delete/Modify/Import',
+                       $formex='') {
+               $this->ur['enabled'] = $enable;
+               $this->ur['document'] = $document;
+               $this->ur['annots'] = $annots;
+               $this->ur['form'] = $form;
+               $this->ur['signature'] = $signature;
+               $this->ur['ef'] = $ef;
+               $this->ur['formex'] = $formex;
+               if (!$this->sign) {
+                       $this->setSignature('', '', '', '', 0, array());
+               }
+       }
+
+       /**
+        * Enable document signature (requires the OpenSSL Library).
+        * The digital signature improve document authenticity and integrity and allows o enable extra features on Acrobat Reader.
+        * To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt
+        * To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12
+        * To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes
+        * @param $signing_cert (mixed) signing certificate (string or filename prefixed with 'file://')
+        * @param $private_key (mixed) private key (string or filename prefixed with 'file://')
+        * @param $private_key_password (string) password
+        * @param $extracerts (string) specifies the name of a file containing a bunch of extra certificates to include in the signature which can for example be used to help the recipient to verify the certificate that you used.
+        * @param $cert_type (int) The access permissions granted for this document. Valid values shall be: 1 = No changes to the document shall be permitted; any change to the document shall invalidate the signature; 2 = Permitted changes shall be filling in forms, instantiating page templates, and signing; other changes shall invalidate the signature; 3 = Permitted changes shall be the same as for 2, as well as annotation creation, deletion, and modification; other changes shall invalidate the signature.
+        * @param $info (array) array of option information: Name, Location, Reason, ContactInfo.
+        * @param $approval (string) Enable approval signature eg. for PDF incremental update
+        * @public
+        * @author Nicola Asuni
+        * @since 4.6.005 (2009-04-24)
+        */
+       public function setSignature($signing_cert='', $private_key='', $private_key_password='', $extracerts='', $cert_type=2, $info=array(), $approval='') {
+               // to create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt
+               // to export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12
+               // to convert pfx certificate to pem: openssl
+               //     OpenSSL> pkcs12 -in <cert.pfx> -out <cert.crt> -nodes
+               $this->sign = true;
+               ++$this->n;
+               $this->sig_obj_id = $this->n; // signature widget
+               ++$this->n; // signature object ($this->sig_obj_id + 1)
+               $this->signature_data = array();
+               if (strlen($signing_cert) == 0) {
+                       $this->Error('Please provide a certificate file and password!');
+               }
+               if (strlen($private_key) == 0) {
+                       $private_key = $signing_cert;
+               }
+               $this->signature_data['signcert'] = $signing_cert;
+               $this->signature_data['privkey'] = $private_key;
+               $this->signature_data['password'] = $private_key_password;
+               $this->signature_data['extracerts'] = $extracerts;
+               $this->signature_data['cert_type'] = $cert_type;
+               $this->signature_data['info'] = $info;
+               $this->signature_data['approval'] = $approval;
+       }
+
+       /**
+        * Set the digital signature appearance (a cliccable rectangle area to get signature properties)
+        * @param $x (float) Abscissa of the upper-left corner.
+        * @param $y (float) Ordinate of the upper-left corner.
+        * @param $w (float) Width of the signature area.
+        * @param $h (float) Height of the signature area.
+        * @param $page (int) option page number (if < 0 the current page is used).
+        * @param $name (string) Name of the signature.
+        * @public
+        * @author Nicola Asuni
+        * @since 5.3.011 (2010-06-17)
+        */
+       public function setSignatureAppearance($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') {
+               $this->signature_appearance = $this->getSignatureAppearanceArray($x, $y, $w, $h, $page, $name);
+       }
+
+       /**
+        * Add an empty digital signature appearance (a cliccable rectangle area to get signature properties)
+        * @param $x (float) Abscissa of the upper-left corner.
+        * @param $y (float) Ordinate of the upper-left corner.
+        * @param $w (float) Width of the signature area.
+        * @param $h (float) Height of the signature area.
+        * @param $page (int) option page number (if < 0 the current page is used).
+        * @param $name (string) Name of the signature.
+        * @public
+        * @author Nicola Asuni
+        * @since 5.9.101 (2011-07-06)
+        */
+       public function addEmptySignatureAppearance($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') {
+               ++$this->n;
+               $this->empty_signature_appearance[] = array('objid' => $this->n) + $this->getSignatureAppearanceArray($x, $y, $w, $h, $page, $name);
+       }
+
+       /**
+        * Get the array that defines the signature appearance (page and rectangle coordinates).
+        * @param $x (float) Abscissa of the upper-left corner.
+        * @param $y (float) Ordinate of the upper-left corner.
+        * @param $w (float) Width of the signature area.
+        * @param $h (float) Height of the signature area.
+        * @param $page (int) option page number (if < 0 the current page is used).
+        * @param $name (string) Name of the signature.
+        * @return (array) Array defining page and rectangle coordinates of signature appearance.
+        * @protected
+        * @author Nicola Asuni
+        * @since 5.9.101 (2011-07-06)
+        */
+       protected function getSignatureAppearanceArray($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') {
+               $sigapp = array();
+               if (($page < 1) OR ($page > $this->numpages)) {
+                       $sigapp['page'] = $this->page;
+               } else {
+                       $sigapp['page'] = intval($page);
+               }
+               if (empty($name)) {
+                       $sigapp['name'] = 'Signature';
+               } else {
+                       $sigapp['name'] = $name;
+               }
+               $a = $x * $this->k;
+               $b = $this->pagedim[($sigapp['page'])]['h'] - (($y + $h) * $this->k);
+               $c = $w * $this->k;
+               $d = $h * $this->k;
+               $sigapp['rect'] = sprintf('%F %F %F %F', $a, $b, ($a + $c), ($b + $d));
+               return $sigapp;
+       }
+
+       /**
+        * Enable document timestamping (requires the OpenSSL Library).
+        * The trusted timestamping improve document security that means that no one should be able to change the document once it has been recorded.
+        * Use with digital signature only!
+        * @param $tsa_host (string) Time Stamping Authority (TSA) server (prefixed with 'https://')
+        * @param $tsa_username (string) Specifies the username for TSA authorization (optional) OR specifies the TSA authorization PEM file (see: example_66.php, optional)
+        * @param $tsa_password (string) Specifies the password for TSA authorization (optional)
+        * @param $tsa_cert (string) Specifies the location of TSA certificate for authorization (optional for cURL)
+        * @public
+        * @author Richard Stockinger
+        * @since 6.0.090 (2014-06-16)
+        */
+       public function setTimeStamp($tsa_host='', $tsa_username='', $tsa_password='', $tsa_cert='') {
+               $this->tsa_data = array();
+               if (!function_exists('curl_init')) {
+                       $this->Error('Please enable cURL PHP extension!');
+               }
+               if (strlen($tsa_host) == 0) {
+                       $this->Error('Please specify the host of Time Stamping Authority (TSA)!');
+               }
+               $this->tsa_data['tsa_host'] = $tsa_host;
+               if (is_file($tsa_username)) {
+                       $this->tsa_data['tsa_auth'] = $tsa_username;
+               } else {
+                       $this->tsa_data['tsa_username'] = $tsa_username;
+               }
+               $this->tsa_data['tsa_password'] = $tsa_password;
+               $this->tsa_data['tsa_cert'] = $tsa_cert;
+               $this->tsa_timestamp = true;
+       }
+
+       /**
+        * NOT YET IMPLEMENTED
+        * Request TSA for a timestamp
+        * @param $signature (string) Digital signature as binary string
+        * @return (string) Timestamped digital signature
+        * @protected
+        * @author Richard Stockinger
+        * @since 6.0.090 (2014-06-16)
+        */
+       protected function applyTSA($signature) {
+               if (!$this->tsa_timestamp) {
+                       return $signature;
+               }
+               //@TODO: implement this feature
+               return $signature;
+       }
+
+       /**
+        * Create a new page group.
+        * NOTE: call this function before calling AddPage()
+        * @param $page (int) starting group page (leave empty for next page).
+        * @public
+        * @since 3.0.000 (2008-03-27)
+        */
+       public function startPageGroup($page='') {
+               if (empty($page)) {
+                       $page = $this->page + 1;
+               }
+               $this->newpagegroup[$page] = sizeof($this->newpagegroup) + 1;
+       }
+
+       /**
+        * Set the starting page number.
+        * @param $num (int) Starting page number.
+        * @since 5.9.093 (2011-06-16)
+        * @public
+        */
+       public function setStartingPageNumber($num=1) {
+               $this->starting_page_number = max(0, intval($num));
+       }
+
+       /**
+        * Returns the string alias used right align page numbers.
+        * If the current font is unicode type, the returned string wil contain an additional open curly brace.
+        * @return string
+        * @since 5.9.099 (2011-06-27)
+        * @public
+        */
+       public function getAliasRightShift() {
+               // calculate aproximatively the ratio between widths of aliases and replacements.
+               $ref = '{'.TCPDF_STATIC::$alias_right_shift.'}{'.TCPDF_STATIC::$alias_tot_pages.'}{'.TCPDF_STATIC::$alias_num_page.'}';
+               $rep = str_repeat(' ', $this->GetNumChars($ref));
+               $wrep = $this->GetStringWidth($rep);
+               if ($wrep > 0) {
+                       $wdiff = max(1, ($this->GetStringWidth($ref) / $wrep));
+               } else {
+                       $wdiff = 1;
+               }
+               $sdiff = sprintf('%F', $wdiff);
+               $alias = TCPDF_STATIC::$alias_right_shift.$sdiff.'}';
+               if ($this->isUnicodeFont()) {
+                       $alias = '{'.$alias;
+               }
+               return $alias;
+       }
+
+       /**
+        * Returns the string alias used for the total number of pages.
+        * If the current font is unicode type, the returned string is surrounded by additional curly braces.
+        * This alias will be replaced by the total number of pages in the document.
+        * @return string
+        * @since 4.0.018 (2008-08-08)
+        * @public
+        */
+       public function getAliasNbPages() {
+               if ($this->isUnicodeFont()) {
+                       return '{'.TCPDF_STATIC::$alias_tot_pages.'}';
+               }
+               return TCPDF_STATIC::$alias_tot_pages;
+       }
+
+       /**
+        * Returns the string alias used for the page number.
+        * If the current font is unicode type, the returned string is surrounded by additional curly braces.
+        * This alias will be replaced by the page number.
+        * @return string
+        * @since 4.5.000 (2009-01-02)
+        * @public
+        */
+       public function getAliasNumPage() {
+               if ($this->isUnicodeFont()) {
+                       return '{'.TCPDF_STATIC::$alias_num_page.'}';
+               }
+               return TCPDF_STATIC::$alias_num_page;
+       }
+
+       /**
+        * Return the alias for the total number of pages in the current page group.
+        * If the current font is unicode type, the returned string is surrounded by additional curly braces.
+        * This alias will be replaced by the total number of pages in this group.
+        * @return alias of the current page group
+        * @public
+        * @since 3.0.000 (2008-03-27)
+        */
+       public function getPageGroupAlias() {
+               if ($this->isUnicodeFont()) {
+                       return '{'.TCPDF_STATIC::$alias_group_tot_pages.'}';
+               }
+               return TCPDF_STATIC::$alias_group_tot_pages;
+       }
+
+       /**
+        * Return the alias for the page number on the current page group.
+        * If the current font is unicode type, the returned string is surrounded by additional curly braces.
+        * This alias will be replaced by the page number (relative to the belonging group).
+        * @return alias of the current page group
+        * @public
+        * @since 4.5.000 (2009-01-02)
+        */
+       public function getPageNumGroupAlias() {
+               if ($this->isUnicodeFont()) {
+                       return '{'.TCPDF_STATIC::$alias_group_num_page.'}';
+               }
+               return TCPDF_STATIC::$alias_group_num_page;
+       }
+
+       /**
+        * Return the current page in the group.
+        * @return current page in the group
+        * @public
+        * @since 3.0.000 (2008-03-27)
+        */
+       public function getGroupPageNo() {
+               return $this->pagegroups[$this->currpagegroup];
+       }
+
+       /**
+        * Returns the current group page number formatted as a string.
+        * @public
+        * @since 4.3.003 (2008-11-18)
+        * @see PaneNo(), formatPageNumber()
+        */
+       public function getGroupPageNoFormatted() {
+               return TCPDF_STATIC::formatPageNumber($this->getGroupPageNo());
+       }
+
+       /**
+        * Returns the current page number formatted as a string.
+        * @public
+        * @since 4.2.005 (2008-11-06)
+        * @see PaneNo(), formatPageNumber()
+        */
+       public function PageNoFormatted() {
+               return TCPDF_STATIC::formatPageNumber($this->PageNo());
+       }
+
+       /**
+        * Put pdf layers.
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected function _putocg() {
+               if (empty($this->pdflayers)) {
+                       return;
+               }
+               foreach ($this->pdflayers as $key => $layer) {
+                        $this->pdflayers[$key]['objid'] = $this->_newobj();
+                        $out = '<< /Type /OCG';
+                        $out .= ' /Name '.$this->_textstring($layer['name'], $this->pdflayers[$key]['objid']);
+                        $out .= ' /Usage <<';
+                        if (isset($layer['print']) AND ($layer['print'] !== NULL)) {
+                               $out .= ' /Print <</PrintState /'.($layer['print']?'ON':'OFF').'>>';
+                        }
+                        $out .= ' /View <</ViewState /'.($layer['view']?'ON':'OFF').'>>';
+                        $out .= ' >> >>';
+                        $out .= "\n".'endobj';
+                        $this->_out($out);
+               }
+       }
+
+       /**
+        * Start a new pdf layer.
+        * @param $name (string) Layer name (only a-z letters and numbers). Leave empty for automatic name.
+        * @param $print (boolean|null) Set to TRUE to print this layer, FALSE to not print and NULL to not set this option
+        * @param $view (boolean) Set to true to view this layer.
+        * @param $lock (boolean) If true lock the layer
+        * @public
+        * @since 5.9.102 (2011-07-13)
+        */
+       public function startLayer($name='', $print=true, $view=true, $lock=true) {
+               if ($this->state != 2) {
+                       return;
+               }
+               $layer = sprintf('LYR%03d', (count($this->pdflayers) + 1));
+               if (empty($name)) {
+                       $name = $layer;
+               } else {
+                       $name = preg_replace('/[^a-zA-Z0-9_\-]/', '', $name);
+               }
+               $this->pdflayers[] = array('layer' => $layer, 'name' => $name, 'print' => $print, 'view' => $view, 'lock' => $lock);
+               $this->openMarkedContent = true;
+               $this->_out('/OC /'.$layer.' BDC');
+       }
+
+       /**
+        * End the current PDF layer.
+        * @public
+        * @since 5.9.102 (2011-07-13)
+        */
+       public function endLayer() {
+               if ($this->state != 2) {
+                       return;
+               }
+               if ($this->openMarkedContent) {
+                       // close existing open marked-content layer
+                       $this->_out('EMC');
+                       $this->openMarkedContent = false;
+               }
+       }
+
+       /**
+        * Set the visibility of the successive elements.
+        * This can be useful, for instance, to put a background
+        * image or color that will show on screen but won't print.
+        * @param $v (string) visibility mode. Legal values are: all, print, screen or view.
+        * @public
+        * @since 3.0.000 (2008-03-27)
+        */
+       public function setVisibility($v) {
+               if ($this->state != 2) {
+                       return;
+               }
+               $this->endLayer();
+               switch($v) {
+                       case 'print': {
+                               $this->startLayer('Print', true, false);
+                               break;
+                       }
+                       case 'view':
+                       case 'screen': {
+                               $this->startLayer('View', false, true);
+                               break;
+                       }
+                       case 'all': {
+                               $this->_out('');
+                               break;
+                       }
+                       default: {
+                               $this->Error('Incorrect visibility: '.$v);
+                               break;
+                       }
+               }
+       }
+
+       /**
+        * Add transparency parameters to the current extgstate
+        * @param $parms (array) parameters
+        * @return the number of extgstates
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected function addExtGState($parms) {
+               if ($this->pdfa_mode) {
+                       // transparencies are not allowed in PDF/A mode
+                       return;
+               }
+               // check if this ExtGState already exist
+               foreach ($this->extgstates as $i => $ext) {
+                       if ($ext['parms'] == $parms) {
+                               if ($this->inxobj) {
+                                       // we are inside an XObject template
+                                       $this->xobjects[$this->xobjid]['extgstates'][$i] = $ext;
+                               }
+                               // return reference to existing ExtGState
+                               return $i;
+                       }
+               }
+               $n = (count($this->extgstates) + 1);
+               $this->extgstates[$n] = array('parms' => $parms);
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['extgstates'][$n] = $this->extgstates[$n];
+               }
+               return $n;
+       }
+
+       /**
+        * Add an extgstate
+        * @param $gs (array) extgstate
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected function setExtGState($gs) {
+               if ($this->pdfa_mode OR ($this->state != 2)) {
+                       // transparency is not allowed in PDF/A mode
+                       return;
+               }
+               $this->_out(sprintf('/GS%d gs', $gs));
+       }
+
+       /**
+        * Put extgstates for object transparency
+        * @protected
+        * @since 3.0.000 (2008-03-27)
+        */
+       protected function _putextgstates() {
+               foreach ($this->extgstates as $i => $ext) {
+                       $this->extgstates[$i]['n'] = $this->_newobj();
+                       $out = '<< /Type /ExtGState';
+                       foreach ($ext['parms'] as $k => $v) {
+                               if (is_float($v)) {
+                                       $v = sprintf('%F', $v);
+                               } elseif ($v === true) {
+                                       $v = 'true';
+                               } elseif ($v === false) {
+                                       $v = 'false';
+                               }
+                               $out .= ' /'.$k.' '.$v;
+                       }
+                       $out .= ' >>';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+               }
+       }
+
+       /**
+        * Set overprint mode for stroking (OP) and non-stroking (op) painting operations.
+        * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008).
+        * @param $stroking (boolean) If true apply overprint for stroking operations.
+        * @param $nonstroking (boolean) If true apply overprint for painting operations other than stroking.
+        * @param $mode (integer) Overprint mode: (0 = each source colour component value replaces the value previously painted for the corresponding device colorant; 1 = a tint value of 0.0 for a source colour component shall leave the corresponding component of the previously painted colour unchanged).
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function setOverprint($stroking=true, $nonstroking='', $mode=0) {
+               if ($this->state != 2) {
+                       return;
+               }
+               $stroking = $stroking ? true : false;
+               if (TCPDF_STATIC::empty_string($nonstroking)) {
+                       // default value if not set
+                       $nonstroking = $stroking;
+               } else {
+                       $nonstroking = $nonstroking ? true : false;
+               }
+               if (($mode != 0) AND ($mode != 1)) {
+                       $mode = 0;
+               }
+               $this->overprint = array('OP' => $stroking, 'op' => $nonstroking, 'OPM' => $mode);
+               $gs = $this->addExtGState($this->overprint);
+               $this->setExtGState($gs);
+       }
+
+       /**
+        * Get the overprint mode array (OP, op, OPM).
+        * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008).
+        * @return array.
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function getOverprint() {
+               return $this->overprint;
+       }
+
+       /**
+        * Set alpha for stroking (CA) and non-stroking (ca) operations.
+        * @param $stroking (float) Alpha value for stroking operations: real value from 0 (transparent) to 1 (opaque).
+        * @param $bm (string) blend mode, one of the following: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity
+        * @param $nonstroking (float) Alpha value for non-stroking operations: real value from 0 (transparent) to 1 (opaque).
+        * @param $ais (boolean)
+        * @public
+        * @since 3.0.000 (2008-03-27)
+        */
+       public function setAlpha($stroking=1, $bm='Normal', $nonstroking='', $ais=false) {
+               if ($this->pdfa_mode) {
+                       // transparency is not allowed in PDF/A mode
+                       return;
+               }
+               $stroking = floatval($stroking);
+               if (TCPDF_STATIC::empty_string($nonstroking)) {
+                       // default value if not set
+                       $nonstroking = $stroking;
+               } else {
+                       $nonstroking = floatval($nonstroking);
+               }
+               if ($bm[0] == '/') {
+                       // remove trailing slash
+                       $bm = substr($bm, 1);
+               }
+               if (!in_array($bm, array('Normal', 'Multiply', 'Screen', 'Overlay', 'Darken', 'Lighten', 'ColorDodge', 'ColorBurn', 'HardLight', 'SoftLight', 'Difference', 'Exclusion', 'Hue', 'Saturation', 'Color', 'Luminosity'))) {
+                       $bm = 'Normal';
+               }
+               $ais = $ais ? true : false;
+               $this->alpha = array('CA' => $stroking, 'ca' => $nonstroking, 'BM' => '/'.$bm, 'AIS' => $ais);
+               $gs = $this->addExtGState($this->alpha);
+               $this->setExtGState($gs);
+       }
+
+       /**
+        * Get the alpha mode array (CA, ca, BM, AIS).
+        * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008).
+        * @return array.
+        * @public
+        * @since 5.9.152 (2012-03-23)
+        */
+       public function getAlpha() {
+               return $this->alpha;
+       }
+
+       /**
+        * Set the default JPEG compression quality (1-100)
+        * @param $quality (int) JPEG quality, integer between 1 and 100
+        * @public
+        * @since 3.0.000 (2008-03-27)
+        */
+       public function setJPEGQuality($quality) {
+               if (($quality < 1) OR ($quality > 100)) {
+                       $quality = 75;
+               }
+               $this->jpeg_quality = intval($quality);
+       }
+
+       /**
+        * Set the default number of columns in a row for HTML tables.
+        * @param $cols (int) number of columns
+        * @public
+        * @since 3.0.014 (2008-06-04)
+        */
+       public function setDefaultTableColumns($cols=4) {
+               $this->default_table_columns = intval($cols);
+       }
+
+       /**
+        * Set the height of the cell (line height) respect the font height.
+        * @param $h (int) cell proportion respect font height (typical value = 1.25).
+        * @public
+        * @since 3.0.014 (2008-06-04)
+        */
+       public function setCellHeightRatio($h) {
+               $this->cell_height_ratio = $h;
+       }
+
+       /**
+        * return the height of cell repect font height.
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getCellHeightRatio() {
+               return $this->cell_height_ratio;
+       }
+
+       /**
+        * Set the PDF version (check PDF reference for valid values).
+        * @param $version (string) PDF document version.
+        * @public
+        * @since 3.1.000 (2008-06-09)
+        */
+       public function setPDFVersion($version='1.7') {
+               if ($this->pdfa_mode) {
+                       // PDF/A mode
+                       $this->PDFVersion = '1.4';
+               } else {
+                       $this->PDFVersion = $version;
+               }
+       }
+
+       /**
+        * Set the viewer preferences dictionary controlling the way the document is to be presented on the screen or in print.
+        * (see Section 8.1 of PDF reference, "Viewer Preferences").
+        * <ul><li>HideToolbar boolean (Optional) A flag specifying whether to hide the viewer application's tool bars when the document is active. Default value: false.</li><li>HideMenubar boolean (Optional) A flag specifying whether to hide the viewer application's menu bar when the document is active. Default value: false.</li><li>HideWindowUI boolean (Optional) A flag specifying whether to hide user interface elements in the document's window (such as scroll bars and navigation controls), leaving only the document's contents displayed. Default value: false.</li><li>FitWindow boolean (Optional) A flag specifying whether to resize the document's window to fit the size of the first displayed page. Default value: false.</li><li>CenterWindow boolean (Optional) A flag specifying whether to position the document's window in the center of the screen. Default value: false.</li><li>DisplayDocTitle boolean (Optional; PDF 1.4) A flag specifying whether the window's title bar should display the document title taken from the Title entry of the document information dictionary (see Section 10.2.1, "Document Information Dictionary"). If false, the title bar should instead display the name of the PDF file containing the document. Default value: false.</li><li>NonFullScreenPageMode name (Optional) The document's page mode, specifying how to display the document on exiting full-screen mode:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>UseOC Optional content group panel visible</li></ul>This entry is meaningful only if the value of the PageMode entry in the catalog dictionary (see Section 3.6.1, "Document Catalog") is FullScreen; it is ignored otherwise. Default value: UseNone.</li><li>ViewArea name (Optional; PDF 1.4) The name of the page boundary representing the area of a page to be displayed when viewing the document on the screen. Valid values are (see Section 10.10.1, "Page Boundaries").:<ul><li>MediaBox</li><li>CropBox (default)</li><li>BleedBox</li><li>TrimBox</li><li>ArtBox</li></ul></li><li>ViewClip name (Optional; PDF 1.4) The name of the page boundary to which the contents of a page are to be clipped when viewing the document on the screen. Valid values are (see Section 10.10.1, "Page Boundaries").:<ul><li>MediaBox</li><li>CropBox (default)</li><li>BleedBox</li><li>TrimBox</li><li>ArtBox</li></ul></li><li>PrintArea name (Optional; PDF 1.4) The name of the page boundary representing the area of a page to be rendered when printing the document. Valid values are (see Section 10.10.1, "Page Boundaries").:<ul><li>MediaBox</li><li>CropBox (default)</li><li>BleedBox</li><li>TrimBox</li><li>ArtBox</li></ul></li><li>PrintClip name (Optional; PDF 1.4) The name of the page boundary to which the contents of a page are to be clipped when printing the document. Valid values are (see Section 10.10.1, "Page Boundaries").:<ul><li>MediaBox</li><li>CropBox (default)</li><li>BleedBox</li><li>TrimBox</li><li>ArtBox</li></ul></li><li>PrintScaling name (Optional; PDF 1.6) The page scaling option to be selected when a print dialog is displayed for this document. Valid values are: <ul><li>None, which indicates that the print dialog should reflect no page scaling</li><li>AppDefault (default), which indicates that applications should use the current print scaling</li></ul></li><li>Duplex name (Optional; PDF 1.7) The paper handling option to use when printing the file from the print dialog. The following values are valid:<ul><li>Simplex - Print single-sided</li><li>DuplexFlipShortEdge - Duplex and flip on the short edge of the sheet</li><li>DuplexFlipLongEdge - Duplex and flip on the long edge of the sheet</li></ul>Default value: none</li><li>PickTrayByPDFSize boolean (Optional; PDF 1.7) A flag specifying whether the PDF page size is used to select the input paper tray. This setting influences only the preset values used to populate the print dialog presented by a PDF viewer application. If PickTrayByPDFSize is true, the check box in the print dialog associated with input paper tray is checked. Note: This setting has no effect on Mac OS systems, which do not provide the ability to pick the input tray by size.</li><li>PrintPageRange array (Optional; PDF 1.7) The page numbers used to initialize the print dialog box when the file is printed. The first page of the PDF file is denoted by 1. Each pair consists of the first and last pages in the sub-range. An odd number of integers causes this entry to be ignored. Negative numbers cause the entire array to be ignored. Default value: as defined by PDF viewer application</li><li>NumCopies integer (Optional; PDF 1.7) The number of copies to be printed when the print dialog is opened for this file. Supported values are the integers 2 through 5. Values outside this range are ignored. Default value: as defined by PDF viewer application, but typically 1</li></ul>
+        * @param $preferences (array) array of options.
+        * @author Nicola Asuni
+        * @public
+        * @since 3.1.000 (2008-06-09)
+        */
+       public function setViewerPreferences($preferences) {
+               $this->viewer_preferences = $preferences;
+       }
+
+       /**
+        * Paints color transition registration bars
+        * @param $x (float) abscissa of the top left corner of the rectangle.
+        * @param $y (float) ordinate of the top left corner of the rectangle.
+        * @param $w (float) width of the rectangle.
+        * @param $h (float) height of the rectangle.
+        * @param $transition (boolean) if true prints tcolor transitions to white.
+        * @param $vertical (boolean) if true prints bar vertically.
+        * @param $colors (string) colors to print separated by comma. Valid values are: A,W,R,G,B,C,M,Y,K,RGB,CMYK,ALL,ALLSPOT,<SPOT_COLOR_NAME>. Where: A = grayscale black, W = grayscale white, R = RGB red, G RGB green, B RGB blue, C = CMYK cyan, M = CMYK magenta, Y = CMYK yellow, K = CMYK key/black, RGB = RGB registration color, CMYK = CMYK registration color, ALL = Spot registration color, ALLSPOT = print all defined spot colors, <SPOT_COLOR_NAME> = name of the spot color to print.
+        * @author Nicola Asuni
+        * @since 4.9.000 (2010-03-26)
+        * @public
+        */
+       public function colorRegistrationBar($x, $y, $w, $h, $transition=true, $vertical=false, $colors='A,R,G,B,C,M,Y,K') {
+               if (strpos($colors, 'ALLSPOT') !== false) {
+                       // expand spot colors
+                       $spot_colors = '';
+                       foreach ($this->spot_colors as $spot_color_name => $v) {
+                               $spot_colors .= ','.$spot_color_name;
+                       }
+                       if (!empty($spot_colors)) {
+                               $spot_colors = substr($spot_colors, 1);
+                               $colors = str_replace('ALLSPOT', $spot_colors, $colors);
+                       } else {
+                               $colors = str_replace('ALLSPOT', 'NONE', $colors);
+                       }
+               }
+               $bars = explode(',', $colors);
+               $numbars = count($bars); // number of bars to print
+               if ($numbars <= 0) {
+                       return;
+               }
+               // set bar measures
+               if ($vertical) {
+                       $coords = array(0, 0, 0, 1);
+                       $wb = $w / $numbars; // bar width
+                       $hb = $h; // bar height
+                       $xd = $wb; // delta x
+                       $yd = 0; // delta y
+               } else {
+                       $coords = array(1, 0, 0, 0);
+                       $wb = $w; // bar width
+                       $hb = $h / $numbars; // bar height
+                       $xd = 0; // delta x
+                       $yd = $hb; // delta y
+               }
+               $xb = $x;
+               $yb = $y;
+               foreach ($bars as $col) {
+                       switch ($col) {
+                               // set transition colors
+                               case 'A': { // BLACK (GRAYSCALE)
+                                       $col_a = array(255);
+                                       $col_b = array(0);
+                                       break;
+                               }
+                               case 'W': { // WHITE (GRAYSCALE)
+                                       $col_a = array(0);
+                                       $col_b = array(255);
+                                       break;
+                               }
+                               case 'R': { // RED (RGB)
+                                       $col_a = array(255,255,255);
+                                       $col_b = array(255,0,0);
+                                       break;
+                               }
+                               case 'G': { // GREEN (RGB)
+                                       $col_a = array(255,255,255);
+                                       $col_b = array(0,255,0);
+                                       break;
+                               }
+                               case 'B': { // BLUE (RGB)
+                                       $col_a = array(255,255,255);
+                                       $col_b = array(0,0,255);
+                                       break;
+                               }
+                               case 'C': { // CYAN (CMYK)
+                                       $col_a = array(0,0,0,0);
+                                       $col_b = array(100,0,0,0);
+                                       break;
+                               }
+                               case 'M': { // MAGENTA (CMYK)
+                                       $col_a = array(0,0,0,0);
+                                       $col_b = array(0,100,0,0);
+                                       break;
+                               }
+                               case 'Y': { // YELLOW (CMYK)
+                                       $col_a = array(0,0,0,0);
+                                       $col_b = array(0,0,100,0);
+                                       break;
+                               }
+                               case 'K': { // KEY - BLACK (CMYK)
+                                       $col_a = array(0,0,0,0);
+                                       $col_b = array(0,0,0,100);
+                                       break;
+                               }
+                               case 'RGB': { // BLACK REGISTRATION (RGB)
+                                       $col_a = array(255,255,255);
+                                       $col_b = array(0,0,0);
+                                       break;
+                               }
+                               case 'CMYK': { // BLACK REGISTRATION (CMYK)
+                                       $col_a = array(0,0,0,0);
+                                       $col_b = array(100,100,100,100);
+                                       break;
+                               }
+                               case 'ALL': { // SPOT COLOR REGISTRATION
+                                       $col_a = array(0,0,0,0,'None');
+                                       $col_b = array(100,100,100,100,'All');
+                                       break;
+                               }
+                               case 'NONE': { // SKIP THIS COLOR
+                                       $col_a = array(0,0,0,0,'None');
+                                       $col_b = array(0,0,0,0,'None');
+                                       break;
+                               }
+                               default: { // SPECIFIC SPOT COLOR NAME
+                                       $col_a = array(0,0,0,0,'None');
+                                       $col_b = TCPDF_COLORS::getSpotColor($col, $this->spot_colors);
+                                       if ($col_b === false) {
+                                               // in case of error defaults to the registration color
+                                               $col_b = array(100,100,100,100,'All');
+                                       }
+                                       break;
+                               }
+                       }
+                       if ($col != 'NONE') {
+                               if ($transition) {
+                                       // color gradient
+                                       $this->LinearGradient($xb, $yb, $wb, $hb, $col_a, $col_b, $coords);
+                               } else {
+                                       $this->SetFillColorArray($col_b);
+                                       // colored rectangle
+                                       $this->Rect($xb, $yb, $wb, $hb, 'F', array());
+                               }
+                               $xb += $xd;
+                               $yb += $yd;
+                       }
+               }
+       }
+
+       /**
+        * Paints crop marks.
+        * @param $x (float) abscissa of the crop mark center.
+        * @param $y (float) ordinate of the crop mark center.
+        * @param $w (float) width of the crop mark.
+        * @param $h (float) height of the crop mark.
+        * @param $type (string) type of crop mark, one symbol per type separated by comma: T = TOP, F = BOTTOM, L = LEFT, R = RIGHT, TL = A = TOP-LEFT, TR = B = TOP-RIGHT, BL = C = BOTTOM-LEFT, BR = D = BOTTOM-RIGHT.
+        * @param $color (array) crop mark color (default spot registration color).
+        * @author Nicola Asuni
+        * @since 4.9.000 (2010-03-26)
+        * @public
+        */
+       public function cropMark($x, $y, $w, $h, $type='T,R,B,L', $color=array(100,100,100,100,'All')) {
+               $this->SetLineStyle(array('width' => (0.5 / $this->k), 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $color));
+               $type = strtoupper($type);
+               $type = preg_replace('/[^A-Z\-\,]*/', '', $type);
+               // split type in single components
+               $type = str_replace('-', ',', $type);
+               $type = str_replace('TL', 'T,L', $type);
+               $type = str_replace('TR', 'T,R', $type);
+               $type = str_replace('BL', 'F,L', $type);
+               $type = str_replace('BR', 'F,R', $type);
+               $type = str_replace('A', 'T,L', $type);
+               $type = str_replace('B', 'T,R', $type);
+               $type = str_replace('T,RO', 'BO', $type);
+               $type = str_replace('C', 'F,L', $type);
+               $type = str_replace('D', 'F,R', $type);
+               $crops = explode(',', strtoupper($type));
+               // remove duplicates
+               $crops = array_unique($crops);
+               $dw = ($w / 4); // horizontal space to leave before the intersection point
+               $dh = ($h / 4); // vertical space to leave before the intersection point
+               foreach ($crops as $crop) {
+                       switch ($crop) {
+                               case 'T':
+                               case 'TOP': {
+                                       $x1 = $x;
+                                       $y1 = ($y - $h);
+                                       $x2 = $x;
+                                       $y2 = ($y - $dh);
+                                       break;
+                               }
+                               case 'F':
+                               case 'BOTTOM': {
+                                       $x1 = $x;
+                                       $y1 = ($y + $dh);
+                                       $x2 = $x;
+                                       $y2 = ($y + $h);
+                                       break;
+                               }
+                               case 'L':
+                               case 'LEFT': {
+                                       $x1 = ($x - $w);
+                                       $y1 = $y;
+                                       $x2 = ($x - $dw);
+                                       $y2 = $y;
+                                       break;
+                               }
+                               case 'R':
+                               case 'RIGHT': {
+                                       $x1 = ($x + $dw);
+                                       $y1 = $y;
+                                       $x2 = ($x + $w);
+                                       $y2 = $y;
+                                       break;
+                               }
+                       }
+                       $this->Line($x1, $y1, $x2, $y2);
+               }
+       }
+
+       /**
+        * Paints a registration mark
+        * @param $x (float) abscissa of the registration mark center.
+        * @param $y (float) ordinate of the registration mark center.
+        * @param $r (float) radius of the crop mark.
+        * @param $double (boolean) if true print two concentric crop marks.
+        * @param $cola (array) crop mark color (default spot registration color 'All').
+        * @param $colb (array) second crop mark color (default spot registration color 'None').
+        * @author Nicola Asuni
+        * @since 4.9.000 (2010-03-26)
+        * @public
+        */
+       public function registrationMark($x, $y, $r, $double=false, $cola=array(100,100,100,100,'All'), $colb=array(0,0,0,0,'None')) {
+               $line_style = array('width' => max((0.5 / $this->k),($r / 30)), 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $cola);
+               $this->SetFillColorArray($cola);
+               $this->PieSector($x, $y, $r, 90, 180, 'F');
+               $this->PieSector($x, $y, $r, 270, 360, 'F');
+               $this->Circle($x, $y, $r, 0, 360, 'C', $line_style, array(), 8);
+               if ($double) {
+                       $ri = $r * 0.5;
+                       $this->SetFillColorArray($colb);
+                       $this->PieSector($x, $y, $ri, 90, 180, 'F');
+                       $this->PieSector($x, $y, $ri, 270, 360, 'F');
+                       $this->SetFillColorArray($cola);
+                       $this->PieSector($x, $y, $ri, 0, 90, 'F');
+                       $this->PieSector($x, $y, $ri, 180, 270, 'F');
+                       $this->Circle($x, $y, $ri, 0, 360, 'C', $line_style, array(), 8);
+               }
+       }
+
+       /**
+        * Paints a CMYK registration mark
+        * @param $x (float) abscissa of the registration mark center.
+        * @param $y (float) ordinate of the registration mark center.
+        * @param $r (float) radius of the crop mark.
+        * @author Nicola Asuni
+        * @since 6.0.038 (2013-09-30)
+        * @public
+        */
+       public function registrationMarkCMYK($x, $y, $r) {
+               // line width
+               $lw = max((0.5 / $this->k),($r / 8));
+               // internal radius
+               $ri = ($r * 0.6);
+               // external radius
+               $re = ($r * 1.3);
+               // Cyan
+               $this->SetFillColorArray(array(100,0,0,0));
+               $this->PieSector($x, $y, $ri, 270, 360, 'F');
+               // Magenta
+               $this->SetFillColorArray(array(0,100,0,0));
+               $this->PieSector($x, $y, $ri, 0, 90, 'F');
+               // Yellow
+               $this->SetFillColorArray(array(0,0,100,0));
+               $this->PieSector($x, $y, $ri, 90, 180, 'F');
+               // Key - black
+               $this->SetFillColorArray(array(0,0,0,100));
+               $this->PieSector($x, $y, $ri, 180, 270, 'F');
+               // registration color
+               $line_style = array('width' => $lw, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(100,100,100,100,'All'));
+               $this->SetFillColorArray(array(100,100,100,100,'All'));
+               // external circle
+               $this->Circle($x, $y, $r, 0, 360, 'C', $line_style, array(), 8);
+               // cross lines
+               $this->Line($x, ($y - $re), $x, ($y - $ri));
+               $this->Line($x, ($y + $ri), $x, ($y + $re));
+               $this->Line(($x - $re), $y, ($x - $ri), $y);
+               $this->Line(($x + $ri), $y, ($x + $re), $y);
+       }
+
+       /**
+        * Paints a linear colour gradient.
+        * @param $x (float) abscissa of the top left corner of the rectangle.
+        * @param $y (float) ordinate of the top left corner of the rectangle.
+        * @param $w (float) width of the rectangle.
+        * @param $h (float) height of the rectangle.
+        * @param $col1 (array) first color (Grayscale, RGB or CMYK components).
+        * @param $col2 (array) second color (Grayscale, RGB or CMYK components).
+        * @param $coords (array) array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
+        * @author Andreas W\FCrmser, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function LinearGradient($x, $y, $w, $h, $col1=array(), $col2=array(), $coords=array(0,0,1,0)) {
+               $this->Clip($x, $y, $w, $h);
+               $this->Gradient(2, $coords, array(array('color' => $col1, 'offset' => 0, 'exponent' => 1), array('color' => $col2, 'offset' => 1, 'exponent' => 1)), array(), false);
+       }
+
+       /**
+        * Paints a radial colour gradient.
+        * @param $x (float) abscissa of the top left corner of the rectangle.
+        * @param $y (float) ordinate of the top left corner of the rectangle.
+        * @param $w (float) width of the rectangle.
+        * @param $h (float) height of the rectangle.
+        * @param $col1 (array) first color (Grayscale, RGB or CMYK components).
+        * @param $col2 (array) second color (Grayscale, RGB or CMYK components).
+        * @param $coords (array) array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). (fx, fy) should be inside the circle, otherwise some areas will not be defined.
+        * @author Andreas W\FCrmser, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function RadialGradient($x, $y, $w, $h, $col1=array(), $col2=array(), $coords=array(0.5,0.5,0.5,0.5,1)) {
+               $this->Clip($x, $y, $w, $h);
+               $this->Gradient(3, $coords, array(array('color' => $col1, 'offset' => 0, 'exponent' => 1), array('color' => $col2, 'offset' => 1, 'exponent' => 1)), array(), false);
+       }
+
+       /**
+        * Paints a coons patch mesh.
+        * @param $x (float) abscissa of the top left corner of the rectangle.
+        * @param $y (float) ordinate of the top left corner of the rectangle.
+        * @param $w (float) width of the rectangle.
+        * @param $h (float) height of the rectangle.
+        * @param $col1 (array) first color (lower left corner) (RGB components).
+        * @param $col2 (array) second color (lower right corner) (RGB components).
+        * @param $col3 (array) third color (upper right corner) (RGB components).
+        * @param $col4 (array) fourth color (upper left corner) (RGB components).
+        * @param $coords (array) <ul><li>for one patch mesh: array(float x1, float y1, .... float x12, float y12): 12 pairs of coordinates (normally from 0 to 1) which specify the Bezier control points that define the patch. First pair is the lower left edge point, next is its right control point (control point 2). Then the other points are defined in the order: control point 1, edge point, control point 2 going counter-clockwise around the patch. Last (x12, y12) is the first edge point's left control point (control point 1).</li><li>for two or more patch meshes: array[number of patches]: arrays with the following keys for each patch: f: where to put that patch (0 = first patch, 1, 2, 3 = right, top and left of precedent patch - I didn't figure this out completely - just try and error ;-) points: 12 pairs of coordinates of the Bezier control points as above for the first patch, 8 pairs of coordinates for the following patches, ignoring the coordinates already defined by the precedent patch (I also didn't figure out the order of these - also: try and see what's happening) colors: must be 4 colors for the first patch, 2 colors for the following patches</li></ul>
+        * @param $coords_min (array) minimum value used by the coordinates. If a coordinate's value is smaller than this it will be cut to coords_min. default: 0
+        * @param $coords_max (array) maximum value used by the coordinates. If a coordinate's value is greater than this it will be cut to coords_max. default: 1
+        * @param $antialias (boolean) A flag indicating whether to filter the shading function to prevent aliasing artifacts.
+        * @author Andreas W\FCrmser, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function CoonsPatchMesh($x, $y, $w, $h, $col1=array(), $col2=array(), $col3=array(), $col4=array(), $coords=array(0.00,0.0,0.33,0.00,0.67,0.00,1.00,0.00,1.00,0.33,1.00,0.67,1.00,1.00,0.67,1.00,0.33,1.00,0.00,1.00,0.00,0.67,0.00,0.33), $coords_min=0, $coords_max=1, $antialias=false) {
+               if ($this->pdfa_mode OR ($this->state != 2)) {
+                       return;
+               }
+               $this->Clip($x, $y, $w, $h);
+               $n = count($this->gradients) + 1;
+               $this->gradients[$n] = array();
+               $this->gradients[$n]['type'] = 6; //coons patch mesh
+               $this->gradients[$n]['coords'] = array();
+               $this->gradients[$n]['antialias'] = $antialias;
+               $this->gradients[$n]['colors'] = array();
+               $this->gradients[$n]['transparency'] = false;
+               //check the coords array if it is the simple array or the multi patch array
+               if (!isset($coords[0]['f'])) {
+                       //simple array -> convert to multi patch array
+                       if (!isset($col1[1])) {
+                               $col1[1] = $col1[2] = $col1[0];
+                       }
+                       if (!isset($col2[1])) {
+                               $col2[1] = $col2[2] = $col2[0];
+                       }
+                       if (!isset($col3[1])) {
+                               $col3[1] = $col3[2] = $col3[0];
+                       }
+                       if (!isset($col4[1])) {
+                               $col4[1] = $col4[2] = $col4[0];
+                       }
+                       $patch_array[0]['f'] = 0;
+                       $patch_array[0]['points'] = $coords;
+                       $patch_array[0]['colors'][0]['r'] = $col1[0];
+                       $patch_array[0]['colors'][0]['g'] = $col1[1];
+                       $patch_array[0]['colors'][0]['b'] = $col1[2];
+                       $patch_array[0]['colors'][1]['r'] = $col2[0];
+                       $patch_array[0]['colors'][1]['g'] = $col2[1];
+                       $patch_array[0]['colors'][1]['b'] = $col2[2];
+                       $patch_array[0]['colors'][2]['r'] = $col3[0];
+                       $patch_array[0]['colors'][2]['g'] = $col3[1];
+                       $patch_array[0]['colors'][2]['b'] = $col3[2];
+                       $patch_array[0]['colors'][3]['r'] = $col4[0];
+                       $patch_array[0]['colors'][3]['g'] = $col4[1];
+                       $patch_array[0]['colors'][3]['b'] = $col4[2];
+               } else {
+                       //multi patch array
+                       $patch_array = $coords;
+               }
+               $bpcd = 65535; //16 bits per coordinate
+               //build the data stream
+               $this->gradients[$n]['stream'] = '';
+               $count_patch = count($patch_array);
+               for ($i=0; $i < $count_patch; ++$i) {
+                       $this->gradients[$n]['stream'] .= chr($patch_array[$i]['f']); //start with the edge flag as 8 bit
+                       $count_points = count($patch_array[$i]['points']);
+                       for ($j=0; $j < $count_points; ++$j) {
+                               //each point as 16 bit
+                               $patch_array[$i]['points'][$j] = (($patch_array[$i]['points'][$j] - $coords_min) / ($coords_max - $coords_min)) * $bpcd;
+                               if ($patch_array[$i]['points'][$j] < 0) {
+                                       $patch_array[$i]['points'][$j] = 0;
+                               }
+                               if ($patch_array[$i]['points'][$j] > $bpcd) {
+                                       $patch_array[$i]['points'][$j] = $bpcd;
+                               }
+                               $this->gradients[$n]['stream'] .= chr(floor($patch_array[$i]['points'][$j] / 256));
+                               $this->gradients[$n]['stream'] .= chr(floor($patch_array[$i]['points'][$j] % 256));
+                       }
+                       $count_cols = count($patch_array[$i]['colors']);
+                       for ($j=0; $j < $count_cols; ++$j) {
+                               //each color component as 8 bit
+                               $this->gradients[$n]['stream'] .= chr($patch_array[$i]['colors'][$j]['r']);
+                               $this->gradients[$n]['stream'] .= chr($patch_array[$i]['colors'][$j]['g']);
+                               $this->gradients[$n]['stream'] .= chr($patch_array[$i]['colors'][$j]['b']);
+                       }
+               }
+               //paint the gradient
+               $this->_out('/Sh'.$n.' sh');
+               //restore previous Graphic State
+               $this->_outRestoreGraphicsState();
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['gradients'][$n] = $this->gradients[$n];
+               }
+       }
+
+       /**
+        * Set a rectangular clipping area.
+        * @param $x (float) abscissa of the top left corner of the rectangle (or top right corner for RTL mode).
+        * @param $y (float) ordinate of the top left corner of the rectangle.
+        * @param $w (float) width of the rectangle.
+        * @param $h (float) height of the rectangle.
+        * @author Andreas W\FCrmser, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @protected
+        */
+       protected function Clip($x, $y, $w, $h) {
+               if ($this->state != 2) {
+                        return;
+               }
+               if ($this->rtl) {
+                       $x = $this->w - $x - $w;
+               }
+               //save current Graphic State
+               $s = 'q';
+               //set clipping area
+               $s .= sprintf(' %F %F %F %F re W n', $x*$this->k, ($this->h-$y)*$this->k, $w*$this->k, -$h*$this->k);
+               //set up transformation matrix for gradient
+               $s .= sprintf(' %F 0 0 %F %F %F cm', $w*$this->k, $h*$this->k, $x*$this->k, ($this->h-($y+$h))*$this->k);
+               $this->_out($s);
+       }
+
+       /**
+        * Output gradient.
+        * @param $type (int) type of gradient (1 Function-based shading; 2 Axial shading; 3 Radial shading; 4 Free-form Gouraud-shaded triangle mesh; 5 Lattice-form Gouraud-shaded triangle mesh; 6 Coons patch mesh; 7 Tensor-product patch mesh). (Not all types are currently supported)
+        * @param $coords (array) array of coordinates.
+        * @param $stops (array) array gradient color components: color = array of GRAY, RGB or CMYK color components; offset = (0 to 1) represents a location along the gradient vector; exponent = exponent of the exponential interpolation function (default = 1).
+        * @param $background (array) An array of colour components appropriate to the colour space, specifying a single background colour value.
+        * @param $antialias (boolean) A flag indicating whether to filter the shading function to prevent aliasing artifacts.
+        * @author Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function Gradient($type, $coords, $stops, $background=array(), $antialias=false) {
+               if ($this->pdfa_mode OR ($this->state != 2)) {
+                       return;
+               }
+               $n = count($this->gradients) + 1;
+               $this->gradients[$n] = array();
+               $this->gradients[$n]['type'] = $type;
+               $this->gradients[$n]['coords'] = $coords;
+               $this->gradients[$n]['antialias'] = $antialias;
+               $this->gradients[$n]['colors'] = array();
+               $this->gradients[$n]['transparency'] = false;
+               // color space
+               $numcolspace = count($stops[0]['color']);
+               $bcolor = array_values($background);
+               switch($numcolspace) {
+                       case 5:   // SPOT
+                       case 4: { // CMYK
+                               $this->gradients[$n]['colspace'] = 'DeviceCMYK';
+                               if (!empty($background)) {
+                                       $this->gradients[$n]['background'] = sprintf('%F %F %F %F', $bcolor[0]/100, $bcolor[1]/100, $bcolor[2]/100, $bcolor[3]/100);
+                               }
+                               break;
+                       }
+                       case 3: { // RGB
+                               $this->gradients[$n]['colspace'] = 'DeviceRGB';
+                               if (!empty($background)) {
+                                       $this->gradients[$n]['background'] = sprintf('%F %F %F', $bcolor[0]/255, $bcolor[1]/255, $bcolor[2]/255);
+                               }
+                               break;
+                       }
+                       case 1: { // GRAY SCALE
+                               $this->gradients[$n]['colspace'] = 'DeviceGray';
+                               if (!empty($background)) {
+                                       $this->gradients[$n]['background'] = sprintf('%F', $bcolor[0]/255);
+                               }
+                               break;
+                       }
+               }
+               $num_stops = count($stops);
+               $last_stop_id = $num_stops - 1;
+               foreach ($stops as $key => $stop) {
+                       $this->gradients[$n]['colors'][$key] = array();
+                       // offset represents a location along the gradient vector
+                       if (isset($stop['offset'])) {
+                               $this->gradients[$n]['colors'][$key]['offset'] = $stop['offset'];
+                       } else {
+                               if ($key == 0) {
+                                       $this->gradients[$n]['colors'][$key]['offset'] = 0;
+                               } elseif ($key == $last_stop_id) {
+                                       $this->gradients[$n]['colors'][$key]['offset'] = 1;
+                               } else {
+                                       $offsetstep = (1 - $this->gradients[$n]['colors'][($key - 1)]['offset']) / ($num_stops - $key);
+                                       $this->gradients[$n]['colors'][$key]['offset'] = $this->gradients[$n]['colors'][($key - 1)]['offset'] + $offsetstep;
+                               }
+                       }
+                       if (isset($stop['opacity'])) {
+                               $this->gradients[$n]['colors'][$key]['opacity'] = $stop['opacity'];
+                               if ((!$this->pdfa_mode) AND ($stop['opacity'] < 1)) {
+                                       $this->gradients[$n]['transparency'] = true;
+                               }
+                       } else {
+                               $this->gradients[$n]['colors'][$key]['opacity'] = 1;
+                       }
+                       // exponent for the exponential interpolation function
+                       if (isset($stop['exponent'])) {
+                               $this->gradients[$n]['colors'][$key]['exponent'] = $stop['exponent'];
+                       } else {
+                               $this->gradients[$n]['colors'][$key]['exponent'] = 1;
+                       }
+                       // set colors
+                       $color = array_values($stop['color']);
+                       switch($numcolspace) {
+                               case 5:   // SPOT
+                               case 4: { // CMYK
+                                       $this->gradients[$n]['colors'][$key]['color'] = sprintf('%F %F %F %F', $color[0]/100, $color[1]/100, $color[2]/100, $color[3]/100);
+                                       break;
+                               }
+                               case 3: { // RGB
+                                       $this->gradients[$n]['colors'][$key]['color'] = sprintf('%F %F %F', $color[0]/255, $color[1]/255, $color[2]/255);
+                                       break;
+                               }
+                               case 1: { // GRAY SCALE
+                                       $this->gradients[$n]['colors'][$key]['color'] = sprintf('%F', $color[0]/255);
+                                       break;
+                               }
+                       }
+               }
+               if ($this->gradients[$n]['transparency']) {
+                       // paint luminosity gradient
+                       $this->_out('/TGS'.$n.' gs');
+               }
+               //paint the gradient
+               $this->_out('/Sh'.$n.' sh');
+               //restore previous Graphic State
+               $this->_outRestoreGraphicsState();
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $this->xobjects[$this->xobjid]['gradients'][$n] = $this->gradients[$n];
+               }
+       }
+
+       /**
+        * Output gradient shaders.
+        * @author Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @protected
+        */
+       function _putshaders() {
+               if ($this->pdfa_mode) {
+                       return;
+               }
+               $idt = count($this->gradients); //index for transparency gradients
+               foreach ($this->gradients as $id => $grad) {
+                       if (($grad['type'] == 2) OR ($grad['type'] == 3)) {
+                               $fc = $this->_newobj();
+                               $out = '<<';
+                               $out .= ' /FunctionType 3';
+                               $out .= ' /Domain [0 1]';
+                               $functions = '';
+                               $bounds = '';
+                               $encode = '';
+                               $i = 1;
+                               $num_cols = count($grad['colors']);
+                               $lastcols = $num_cols - 1;
+                               for ($i = 1; $i < $num_cols; ++$i) {
+                                       $functions .= ($fc + $i).' 0 R ';
+                                       if ($i < $lastcols) {
+                                               $bounds .= sprintf('%F ', $grad['colors'][$i]['offset']);
+                                       }
+                                       $encode .= '0 1 ';
+                               }
+                               $out .= ' /Functions ['.trim($functions).']';
+                               $out .= ' /Bounds ['.trim($bounds).']';
+                               $out .= ' /Encode ['.trim($encode).']';
+                               $out .= ' >>';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                               for ($i = 1; $i < $num_cols; ++$i) {
+                                       $this->_newobj();
+                                       $out = '<<';
+                                       $out .= ' /FunctionType 2';
+                                       $out .= ' /Domain [0 1]';
+                                       $out .= ' /C0 ['.$grad['colors'][($i - 1)]['color'].']';
+                                       $out .= ' /C1 ['.$grad['colors'][$i]['color'].']';
+                                       $out .= ' /N '.$grad['colors'][$i]['exponent'];
+                                       $out .= ' >>';
+                                       $out .= "\n".'endobj';
+                                       $this->_out($out);
+                               }
+                               // set transparency fuctions
+                               if ($grad['transparency']) {
+                                       $ft = $this->_newobj();
+                                       $out = '<<';
+                                       $out .= ' /FunctionType 3';
+                                       $out .= ' /Domain [0 1]';
+                                       $functions = '';
+                                       $i = 1;
+                                       $num_cols = count($grad['colors']);
+                                       for ($i = 1; $i < $num_cols; ++$i) {
+                                               $functions .= ($ft + $i).' 0 R ';
+                                       }
+                                       $out .= ' /Functions ['.trim($functions).']';
+                                       $out .= ' /Bounds ['.trim($bounds).']';
+                                       $out .= ' /Encode ['.trim($encode).']';
+                                       $out .= ' >>';
+                                       $out .= "\n".'endobj';
+                                       $this->_out($out);
+                                       for ($i = 1; $i < $num_cols; ++$i) {
+                                               $this->_newobj();
+                                               $out = '<<';
+                                               $out .= ' /FunctionType 2';
+                                               $out .= ' /Domain [0 1]';
+                                               $out .= ' /C0 ['.$grad['colors'][($i - 1)]['opacity'].']';
+                                               $out .= ' /C1 ['.$grad['colors'][$i]['opacity'].']';
+                                               $out .= ' /N '.$grad['colors'][$i]['exponent'];
+                                               $out .= ' >>';
+                                               $out .= "\n".'endobj';
+                                               $this->_out($out);
+                                       }
+                               }
+                       }
+                       // set shading object
+                       $this->_newobj();
+                       $out = '<< /ShadingType '.$grad['type'];
+                       if (isset($grad['colspace'])) {
+                               $out .= ' /ColorSpace /'.$grad['colspace'];
+                       } else {
+                               $out .= ' /ColorSpace /DeviceRGB';
+                       }
+                       if (isset($grad['background']) AND !empty($grad['background'])) {
+                               $out .= ' /Background ['.$grad['background'].']';
+                       }
+                       if (isset($grad['antialias']) AND ($grad['antialias'] === true)) {
+                               $out .= ' /AntiAlias true';
+                       }
+                       if ($grad['type'] == 2) {
+                               $out .= ' '.sprintf('/Coords [%F %F %F %F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]);
+                               $out .= ' /Domain [0 1]';
+                               $out .= ' /Function '.$fc.' 0 R';
+                               $out .= ' /Extend [true true]';
+                               $out .= ' >>';
+                       } elseif ($grad['type'] == 3) {
+                               //x0, y0, r0, x1, y1, r1
+                               //at this this time radius of inner circle is 0
+                               $out .= ' '.sprintf('/Coords [%F %F 0 %F %F %F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3], $grad['coords'][4]);
+                               $out .= ' /Domain [0 1]';
+                               $out .= ' /Function '.$fc.' 0 R';
+                               $out .= ' /Extend [true true]';
+                               $out .= ' >>';
+                       } elseif ($grad['type'] == 6) {
+                               $out .= ' /BitsPerCoordinate 16';
+                               $out .= ' /BitsPerComponent 8';
+                               $out .= ' /Decode[0 1 0 1 0 1 0 1 0 1]';
+                               $out .= ' /BitsPerFlag 8';
+                               $stream = $this->_getrawstream($grad['stream']);
+                               $out .= ' /Length '.strlen($stream);
+                               $out .= ' >>';
+                               $out .= ' stream'."\n".$stream."\n".'endstream';
+                       }
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+                       if ($grad['transparency']) {
+                               $shading_transparency = preg_replace('/\/ColorSpace \/[^\s]+/si', '/ColorSpace /DeviceGray', $out);
+                               $shading_transparency = preg_replace('/\/Function [0-9]+ /si', '/Function '.$ft.' ', $shading_transparency);
+                       }
+                       $this->gradients[$id]['id'] = $this->n;
+                       // set pattern object
+                       $this->_newobj();
+                       $out = '<< /Type /Pattern /PatternType 2';
+                       $out .= ' /Shading '.$this->gradients[$id]['id'].' 0 R';
+                       $out .= ' >>';
+                       $out .= "\n".'endobj';
+                       $this->_out($out);
+                       $this->gradients[$id]['pattern'] = $this->n;
+                       // set shading and pattern for transparency mask
+                       if ($grad['transparency']) {
+                               // luminosity pattern
+                               $idgs = $id + $idt;
+                               $this->_newobj();
+                               $this->_out($shading_transparency);
+                               $this->gradients[$idgs]['id'] = $this->n;
+                               $this->_newobj();
+                               $out = '<< /Type /Pattern /PatternType 2';
+                               $out .= ' /Shading '.$this->gradients[$idgs]['id'].' 0 R';
+                               $out .= ' >>';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                               $this->gradients[$idgs]['pattern'] = $this->n;
+                               // luminosity XObject
+                               $oid = $this->_newobj();
+                               $this->xobjects['LX'.$oid] = array('n' => $oid);
+                               $filter = '';
+                               $stream = 'q /a0 gs /Pattern cs /p'.$idgs.' scn 0 0 '.$this->wPt.' '.$this->hPt.' re f Q';
+                               if ($this->compress) {
+                                       $filter = ' /Filter /FlateDecode';
+                                       $stream = gzcompress($stream);
+                               }
+                               $stream = $this->_getrawstream($stream);
+                               $out = '<< /Type /XObject /Subtype /Form /FormType 1'.$filter;
+                               $out .= ' /Length '.strlen($stream);
+                               $rect = sprintf('%F %F', $this->wPt, $this->hPt);
+                               $out .= ' /BBox [0 0 '.$rect.']';
+                               $out .= ' /Group << /Type /Group /S /Transparency /CS /DeviceGray >>';
+                               $out .= ' /Resources <<';
+                               $out .= ' /ExtGState << /a0 << /ca 1 /CA 1 >> >>';
+                               $out .= ' /Pattern << /p'.$idgs.' '.$this->gradients[$idgs]['pattern'].' 0 R >>';
+                               $out .= ' >>';
+                               $out .= ' >> ';
+                               $out .= ' stream'."\n".$stream."\n".'endstream';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+                               // SMask
+                               $this->_newobj();
+                               $out = '<< /Type /Mask /S /Luminosity /G '.($this->n - 1).' 0 R >>'."\n".'endobj';
+                               $this->_out($out);
+                               // ExtGState
+                               $this->_newobj();
+                               $out = '<< /Type /ExtGState /SMask '.($this->n - 1).' 0 R /AIS false >>'."\n".'endobj';
+                               $this->_out($out);
+                               $this->extgstates[] = array('n' => $this->n, 'name' => 'TGS'.$id);
+                       }
+               }
+       }
+
+       /**
+        * Draw the sector of a circle.
+        * It can be used for instance to render pie charts.
+        * @param $xc (float) abscissa of the center.
+        * @param $yc (float) ordinate of the center.
+        * @param $r (float) radius.
+        * @param $a (float) start angle (in degrees).
+        * @param $b (float) end angle (in degrees).
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $cw: (float) indicates whether to go clockwise (default: true).
+        * @param $o: (float) origin of angles (0 for 3 o'clock, 90 for noon, 180 for 9 o'clock, 270 for 6 o'clock). Default: 90.
+        * @author Maxime Delorme, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function PieSector($xc, $yc, $r, $a, $b, $style='FD', $cw=true, $o=90) {
+               $this->PieSectorXY($xc, $yc, $r, $r, $a, $b, $style, $cw, $o);
+       }
+
+       /**
+        * Draw the sector of an ellipse.
+        * It can be used for instance to render pie charts.
+        * @param $xc (float) abscissa of the center.
+        * @param $yc (float) ordinate of the center.
+        * @param $rx (float) the x-axis radius.
+        * @param $ry (float) the y-axis radius.
+        * @param $a (float) start angle (in degrees).
+        * @param $b (float) end angle (in degrees).
+        * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information.
+        * @param $cw: (float) indicates whether to go clockwise.
+        * @param $o: (float) origin of angles (0 for 3 o'clock, 90 for noon, 180 for 9 o'clock, 270 for 6 o'clock).
+        * @param $nc (integer) Number of curves used to draw a 90 degrees portion of arc.
+        * @author Maxime Delorme, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function PieSectorXY($xc, $yc, $rx, $ry, $a, $b, $style='FD', $cw=false, $o=0, $nc=2) {
+               if ($this->state != 2) {
+                        return;
+               }
+               if ($this->rtl) {
+                       $xc = ($this->w - $xc);
+               }
+               $op = TCPDF_STATIC::getPathPaintOperator($style);
+               if ($op == 'f') {
+                       $line_style = array();
+               }
+               if ($cw) {
+                       $d = $b;
+                       $b = (360 - $a + $o);
+                       $a = (360 - $d + $o);
+               } else {
+                       $b += $o;
+                       $a += $o;
+               }
+               $this->_outellipticalarc($xc, $yc, $rx, $ry, 0, $a, $b, true, $nc);
+               $this->_out($op);
+       }
+
+       /**
+        * Embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files.
+        * NOTE: EPS is not yet fully implemented, use the setRasterizeVectorImages() method to enable/disable rasterization of vector images using ImageMagick library.
+        * Only vector drawing is supported, not text or bitmap.
+        * Although the script was successfully tested with various AI format versions, best results are probably achieved with files that were exported in the AI3 format (tested with Illustrator CS2, Freehand MX and Photoshop CS2).
+        * @param $file (string) Name of the file containing the image or a '@' character followed by the EPS/AI data string.
+        * @param $x (float) Abscissa of the upper-left corner.
+        * @param $y (float) Ordinate of the upper-left corner.
+        * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $useBoundingBox (boolean) specifies whether to position the bounding box (true) or the complete canvas (false) at location (x,y). Default value is true.
+        * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
+        * @param $palign (string) Allows to center or align the image on the current line. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $fitonpage (boolean) if true the image is resized to not exceed page dimensions.
+        * @param $fixoutvals (boolean) if true remove values outside the bounding box.
+        * @author Valentin Schmidt, Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function ImageEps($file, $x='', $y='', $w=0, $h=0, $link='', $useBoundingBox=true, $align='', $palign='', $border=0, $fitonpage=false, $fixoutvals=false) {
+               if ($this->state != 2) {
+                        return;
+               }
+               if ($this->rasterize_vector_images AND ($w > 0) AND ($h > 0)) {
+                       // convert EPS to raster image using GD or ImageMagick libraries
+                       return $this->Image($file, $x, $y, $w, $h, 'EPS', $link, $align, true, 300, $palign, false, false, $border, false, false, $fitonpage);
+               }
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               $k = $this->k;
+               if ($file[0] === '@') { // image from string
+                       $data = substr($file, 1);
+               } else { // EPS/AI file
+                       $data = TCPDF_STATIC::fileGetContents($file);
+               }
+               if ($data === FALSE) {
+                       $this->Error('EPS file not found: '.$file);
+               }
+               $regs = array();
+               // EPS/AI compatibility check (only checks files created by Adobe Illustrator!)
+               preg_match("/%%Creator:([^\r\n]+)/", $data, $regs); # find Creator
+               if (count($regs) > 1) {
+                       $version_str = trim($regs[1]); # e.g. "Adobe Illustrator(R) 8.0"
+                       if (strpos($version_str, 'Adobe Illustrator') !== false) {
+                               $versexp = explode(' ', $version_str);
+                               $version = (float)array_pop($versexp);
+                               if ($version >= 9) {
+                                       $this->Error('This version of Adobe Illustrator file is not supported: '.$file);
+                               }
+                       }
+               }
+               // strip binary bytes in front of PS-header
+               $start = strpos($data, '%!PS-Adobe');
+               if ($start > 0) {
+                       $data = substr($data, $start);
+               }
+               // find BoundingBox params
+               preg_match("/%%BoundingBox:([^\r\n]+)/", $data, $regs);
+               if (count($regs) > 1) {
+                       list($x1, $y1, $x2, $y2) = explode(' ', trim($regs[1]));
+               } else {
+                       $this->Error('No BoundingBox found in EPS/AI file: '.$file);
+               }
+               $start = strpos($data, '%%EndSetup');
+               if ($start === false) {
+                       $start = strpos($data, '%%EndProlog');
+               }
+               if ($start === false) {
+                       $start = strpos($data, '%%BoundingBox');
+               }
+               $data = substr($data, $start);
+               $end = strpos($data, '%%PageTrailer');
+               if ($end===false) {
+                       $end = strpos($data, 'showpage');
+               }
+               if ($end) {
+                       $data = substr($data, 0, $end);
+               }
+               // calculate image width and height on document
+               if (($w <= 0) AND ($h <= 0)) {
+                       $w = ($x2 - $x1) / $k;
+                       $h = ($y2 - $y1) / $k;
+               } elseif ($w <= 0) {
+                       $w = ($x2-$x1) / $k * ($h / (($y2 - $y1) / $k));
+               } elseif ($h <= 0) {
+                       $h = ($y2 - $y1) / $k * ($w / (($x2 - $x1) / $k));
+               }
+               // fit the image on available space
+               list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage);
+               if ($this->rasterize_vector_images) {
+                       // convert EPS to raster image using GD or ImageMagick libraries
+                       return $this->Image($file, $x, $y, $w, $h, 'EPS', $link, $align, true, 300, $palign, false, false, $border, false, false, $fitonpage);
+               }
+               // set scaling factors
+               $scale_x = $w / (($x2 - $x1) / $k);
+               $scale_y = $h / (($y2 - $y1) / $k);
+               // set alignment
+               $this->img_rb_y = $y + $h;
+               // set alignment
+               if ($this->rtl) {
+                       if ($palign == 'L') {
+                               $ximg = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $ximg = $this->w - $this->rMargin - $w;
+                       } else {
+                               $ximg = $x - $w;
+                       }
+                       $this->img_rb_x = $ximg;
+               } else {
+                       if ($palign == 'L') {
+                               $ximg = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $ximg = $this->w - $this->rMargin - $w;
+                       } else {
+                               $ximg = $x;
+                       }
+                       $this->img_rb_x = $ximg + $w;
+               }
+               if ($useBoundingBox) {
+                       $dx = $ximg * $k - $x1;
+                       $dy = $y * $k - $y1;
+               } else {
+                       $dx = $ximg * $k;
+                       $dy = $y * $k;
+               }
+               // save the current graphic state
+               $this->_out('q'.$this->epsmarker);
+               // translate
+               $this->_out(sprintf('%F %F %F %F %F %F cm', 1, 0, 0, 1, $dx, $dy + ($this->hPt - (2 * $y * $k) - ($y2 - $y1))));
+               // scale
+               if (isset($scale_x)) {
+                       $this->_out(sprintf('%F %F %F %F %F %F cm', $scale_x, 0, 0, $scale_y, $x1 * (1 - $scale_x), $y2 * (1 - $scale_y)));
+               }
+               // handle pc/unix/mac line endings
+               $lines = preg_split('/[\r\n]+/si', $data, -1, PREG_SPLIT_NO_EMPTY);
+               $u=0;
+               $cnt = count($lines);
+               for ($i=0; $i < $cnt; ++$i) {
+                       $line = $lines[$i];
+                       if (($line == '') OR ($line[0] == '%')) {
+                               continue;
+                       }
+                       $len = strlen($line);
+                       // check for spot color names
+                       $color_name = '';
+                       if (strcasecmp('x', substr(trim($line), -1)) == 0) {
+                               if (preg_match('/\([^\)]*\)/', $line, $matches) > 0) {
+                                       // extract spot color name
+                                       $color_name = $matches[0];
+                                       // remove color name from string
+                                       $line = str_replace(' '.$color_name, '', $line);
+                                       // remove pharentesis from color name
+                                       $color_name = substr($color_name, 1, -1);
+                               }
+                       }
+                       $chunks = explode(' ', $line);
+                       $cmd = trim(array_pop($chunks));
+                       // RGB
+                       if (($cmd == 'Xa') OR ($cmd == 'XA')) {
+                               $b = array_pop($chunks);
+                               $g = array_pop($chunks);
+                               $r = array_pop($chunks);
+                               $this->_out(''.$r.' '.$g.' '.$b.' '.($cmd=='Xa'?'rg':'RG')); //substr($line, 0, -2).'rg' -> in EPS (AI8): c m y k r g b rg!
+                               continue;
+                       }
+                       $skip = false;
+                       if ($fixoutvals) {
+                               // check for values outside the bounding box
+                               switch ($cmd) {
+                                       case 'm':
+                                       case 'l':
+                                       case 'L': {
+                                               // skip values outside bounding box
+                                               foreach ($chunks as $key => $val) {
+                                                       if ((($key % 2) == 0) AND (($val < $x1) OR ($val > $x2))) {
+                                                               $skip = true;
+                                                       } elseif ((($key % 2) != 0) AND (($val < $y1) OR ($val > $y2))) {
+                                                               $skip = true;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+                       switch ($cmd) {
+                               case 'm':
+                               case 'l':
+                               case 'v':
+                               case 'y':
+                               case 'c':
+                               case 'k':
+                               case 'K':
+                               case 'g':
+                               case 'G':
+                               case 's':
+                               case 'S':
+                               case 'J':
+                               case 'j':
+                               case 'w':
+                               case 'M':
+                               case 'd':
+                               case 'n': {
+                                       if ($skip) {
+                                               break;
+                                       }
+                                       $this->_out($line);
+                                       break;
+                               }
+                               case 'x': {// custom fill color
+                                       if (empty($color_name)) {
+                                               // CMYK color
+                                               list($col_c, $col_m, $col_y, $col_k) = $chunks;
+                                               $this->_out(''.$col_c.' '.$col_m.' '.$col_y.' '.$col_k.' k');
+                                       } else {
+                                               // Spot Color (CMYK + tint)
+                                               list($col_c, $col_m, $col_y, $col_k, $col_t) = $chunks;
+                                               $this->AddSpotColor($color_name, ($col_c * 100), ($col_m * 100), ($col_y * 100), ($col_k * 100));
+                                               $color_cmd = sprintf('/CS%d cs %F scn', $this->spot_colors[$color_name]['i'], (1 - $col_t));
+                                               $this->_out($color_cmd);
+                                       }
+                                       break;
+                               }
+                               case 'X': { // custom stroke color
+                                       if (empty($color_name)) {
+                                               // CMYK color
+                                               list($col_c, $col_m, $col_y, $col_k) = $chunks;
+                                               $this->_out(''.$col_c.' '.$col_m.' '.$col_y.' '.$col_k.' K');
+                                       } else {
+                                               // Spot Color (CMYK + tint)
+                                               list($col_c, $col_m, $col_y, $col_k, $col_t) = $chunks;
+                                               $this->AddSpotColor($color_name, ($col_c * 100), ($col_m * 100), ($col_y * 100), ($col_k * 100));
+                                               $color_cmd = sprintf('/CS%d CS %F SCN', $this->spot_colors[$color_name]['i'], (1 - $col_t));
+                                               $this->_out($color_cmd);
+                                       }
+                                       break;
+                               }
+                               case 'Y':
+                               case 'N':
+                               case 'V':
+                               case 'L':
+                               case 'C': {
+                                       if ($skip) {
+                                               break;
+                                       }
+                                       $line[($len - 1)] = strtolower($cmd);
+                                       $this->_out($line);
+                                       break;
+                               }
+                               case 'b':
+                               case 'B': {
+                                       $this->_out($cmd . '*');
+                                       break;
+                               }
+                               case 'f':
+                               case 'F': {
+                                       if ($u > 0) {
+                                               $isU = false;
+                                               $max = min(($i + 5), $cnt);
+                                               for ($j = ($i + 1); $j < $max; ++$j) {
+                                                       $isU = ($isU OR (($lines[$j] == 'U') OR ($lines[$j] == '*U')));
+                                               }
+                                               if ($isU) {
+                                                       $this->_out('f*');
+                                               }
+                                       } else {
+                                               $this->_out('f*');
+                                       }
+                                       break;
+                               }
+                               case '*u': {
+                                       ++$u;
+                                       break;
+                               }
+                               case '*U': {
+                                       --$u;
+                                       break;
+                               }
+                       }
+               }
+               // restore previous graphic state
+               $this->_out($this->epsmarker.'Q');
+               if (!empty($border)) {
+                       $bx = $this->x;
+                       $by = $this->y;
+                       $this->x = $ximg;
+                       if ($this->rtl) {
+                               $this->x += $w;
+                       }
+                       $this->y = $y;
+                       $this->Cell($w, $h, '', $border, 0, '', 0, '', 0, true);
+                       $this->x = $bx;
+                       $this->y = $by;
+               }
+               if ($link) {
+                       $this->Link($ximg, $y, $w, $h, $link, 0);
+               }
+               // set pointer to align the next text/objects
+               switch($align) {
+                       case 'T':{
+                               $this->y = $y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'M':{
+                               $this->y = $y + round($h/2);
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'B':{
+                               $this->y = $this->img_rb_y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'N':{
+                               $this->SetY($this->img_rb_y);
+                               break;
+                       }
+                       default:{
+                               break;
+                       }
+               }
+               $this->endlinex = $this->img_rb_x;
+       }
+
+       /**
+        * Set document barcode.
+        * @param $bc (string) barcode
+        * @public
+        */
+       public function setBarcode($bc='') {
+               $this->barcode = $bc;
+       }
+
+       /**
+        * Get current barcode.
+        * @return string
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getBarcode() {
+               return $this->barcode;
+       }
+
+       /**
+        * Print a Linear Barcode.
+        * @param $code (string) code to print
+        * @param $type (string) type of barcode (see tcpdf_barcodes_1d.php for supported formats).
+        * @param $x (int) x position in user units (empty string = current x position)
+        * @param $y (int) y position in user units (empty string = current y position)
+        * @param $w (int) width in user units (empty string = remaining page width)
+        * @param $h (int) height in user units (empty string = remaining page height)
+        * @param $xres (float) width of the smallest bar in user units (empty string = default value = 0.4mm)
+        * @param $style (array) array of options:<ul>
+        * <li>boolean $style['border'] if true prints a border</li>
+        * <li>int $style['padding'] padding to leave around the barcode in user units (set to 'auto' for automatic padding)</li>
+        * <li>int $style['hpadding'] horizontal padding in user units (set to 'auto' for automatic padding)</li>
+        * <li>int $style['vpadding'] vertical padding in user units (set to 'auto' for automatic padding)</li>
+        * <li>array $style['fgcolor'] color array for bars and text</li>
+        * <li>mixed $style['bgcolor'] color array for background (set to false for transparent)</li>
+        * <li>boolean $style['text'] if true prints text below the barcode</li>
+        * <li>string $style['label'] override default label</li>
+        * <li>string $style['font'] font name for text</li><li>int $style['fontsize'] font size for text</li>
+        * <li>int $style['stretchtext']: 0 = disabled; 1 = horizontal scaling only if necessary; 2 = forced horizontal scaling; 3 = character spacing only if necessary; 4 = forced character spacing.</li>
+        * <li>string $style['position'] horizontal position of the containing barcode cell on the page: L = left margin; C = center; R = right margin.</li>
+        * <li>string $style['align'] horizontal position of the barcode on the containing rectangle: L = left; C = center; R = right.</li>
+        * <li>string $style['stretch'] if true stretch the barcode to best fit the available width, otherwise uses $xres resolution for a single bar.</li>
+        * <li>string $style['fitwidth'] if true reduce the width to fit the barcode width + padding. When this option is enabled the 'stretch' option is automatically disabled.</li>
+        * <li>string $style['cellfitalign'] this option works only when 'fitwidth' is true and 'position' is unset or empty. Set the horizontal position of the containing barcode cell inside the specified rectangle: L = left; C = center; R = right.</li></ul>
+        * @param $align (string) Indicates the alignment of the pointer next to barcode insertion relative to barcode height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
+        * @author Nicola Asuni
+        * @since 3.1.000 (2008-06-09)
+        * @public
+        */
+       public function write1DBarcode($code, $type, $x='', $y='', $w='', $h='', $xres='', $style='', $align='') {
+               if (TCPDF_STATIC::empty_string(trim($code))) {
+                       return;
+               }
+               require_once(dirname(__FILE__).'/tcpdf_barcodes_1d.php');
+               // save current graphic settings
+               $gvars = $this->getGraphicVars();
+               // create new barcode object
+               $barcodeobj = new TCPDFBarcode($code, $type);
+               $arrcode = $barcodeobj->getBarcodeArray();
+               if (($arrcode === false) OR empty($arrcode) OR ($arrcode['maxw'] <= 0)) {
+                       $this->Error('Error in 1D barcode string');
+               }
+               if ($arrcode['maxh'] <= 0) {
+                       $arrcode['maxh'] = 1;
+               }
+               // set default values
+               if (!isset($style['position'])) {
+                       $style['position'] = '';
+               } elseif ($style['position'] == 'S') {
+                       // keep this for backward compatibility
+                       $style['position'] = '';
+                       $style['stretch'] = true;
+               }
+               if (!isset($style['fitwidth'])) {
+                       if (!isset($style['stretch'])) {
+                               $style['fitwidth'] = true;
+                       } else {
+                               $style['fitwidth'] = false;
+                       }
+               }
+               if ($style['fitwidth']) {
+                       // disable stretch
+                       $style['stretch'] = false;
+               }
+               if (!isset($style['stretch'])) {
+                       if (($w === '') OR ($w <= 0)) {
+                               $style['stretch'] = false;
+                       } else {
+                               $style['stretch'] = true;
+                       }
+               }
+               if (!isset($style['fgcolor'])) {
+                       $style['fgcolor'] = array(0,0,0); // default black
+               }
+               if (!isset($style['bgcolor'])) {
+                       $style['bgcolor'] = false; // default transparent
+               }
+               if (!isset($style['border'])) {
+                       $style['border'] = false;
+               }
+               $fontsize = 0;
+               if (!isset($style['text'])) {
+                       $style['text'] = false;
+               }
+               if ($style['text'] AND isset($style['font'])) {
+                       if (isset($style['fontsize'])) {
+                               $fontsize = $style['fontsize'];
+                       }
+                       $this->SetFont($style['font'], '', $fontsize);
+               }
+               if (!isset($style['stretchtext'])) {
+                       $style['stretchtext'] = 4;
+               }
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               if (($w === '') OR ($w <= 0)) {
+                       if ($this->rtl) {
+                               $w = $x - $this->lMargin;
+                       } else {
+                               $w = $this->w - $this->rMargin - $x;
+                       }
+               }
+               // padding
+               if (!isset($style['padding'])) {
+                       $padding = 0;
+               } elseif ($style['padding'] === 'auto') {
+                       $padding = 10 * ($w / ($arrcode['maxw'] + 20));
+               } else {
+                       $padding = floatval($style['padding']);
+               }
+               // horizontal padding
+               if (!isset($style['hpadding'])) {
+                       $hpadding = $padding;
+               } elseif ($style['hpadding'] === 'auto') {
+                       $hpadding = 10 * ($w / ($arrcode['maxw'] + 20));
+               } else {
+                       $hpadding = floatval($style['hpadding']);
+               }
+               // vertical padding
+               if (!isset($style['vpadding'])) {
+                       $vpadding = $padding;
+               } elseif ($style['vpadding'] === 'auto') {
+                       $vpadding = ($hpadding / 2);
+               } else {
+                       $vpadding = floatval($style['vpadding']);
+               }
+               // calculate xres (single bar width)
+               $max_xres = ($w - (2 * $hpadding)) / $arrcode['maxw'];
+               if ($style['stretch']) {
+                       $xres = $max_xres;
+               } else {
+                       if (TCPDF_STATIC::empty_string($xres)) {
+                               $xres = (0.141 * $this->k); // default bar width = 0.4 mm
+                       }
+                       if ($xres > $max_xres) {
+                               // correct xres to fit on $w
+                               $xres = $max_xres;
+                       }
+                       if ((isset($style['padding']) AND ($style['padding'] === 'auto'))
+                               OR (isset($style['hpadding']) AND ($style['hpadding'] === 'auto'))) {
+                               $hpadding = 10 * $xres;
+                               if (isset($style['vpadding']) AND ($style['vpadding'] === 'auto')) {
+                                       $vpadding = ($hpadding / 2);
+                               }
+                       }
+               }
+               if ($style['fitwidth']) {
+                       $wold = $w;
+                       $w = (($arrcode['maxw'] * $xres) + (2 * $hpadding));
+                       if (isset($style['cellfitalign'])) {
+                               switch ($style['cellfitalign']) {
+                                       case 'L': {
+                                               if ($this->rtl) {
+                                                       $x -= ($wold - $w);
+                                               }
+                                               break;
+                                       }
+                                       case 'R': {
+                                               if (!$this->rtl) {
+                                                       $x += ($wold - $w);
+                                               }
+                                               break;
+                                       }
+                                       case 'C': {
+                                               if ($this->rtl) {
+                                                       $x -= (($wold - $w) / 2);
+                                               } else {
+                                                       $x += (($wold - $w) / 2);
+                                               }
+                                               break;
+                                       }
+                                       default : {
+                                               break;
+                                       }
+                               }
+                       }
+               }
+               $text_height = $this->getCellHeight($fontsize / $this->k);
+               // height
+               if (($h === '') OR ($h <= 0)) {
+                       // set default height
+                       $h = (($arrcode['maxw'] * $xres) / 3) + (2 * $vpadding) + $text_height;
+               }
+               $barh = $h - $text_height - (2 * $vpadding);
+               if ($barh <=0) {
+                       // try to reduce font or padding to fit barcode on available height
+                       if ($text_height > $h) {
+                               $fontsize = (($h * $this->k) / (4 * $this->cell_height_ratio));
+                               $text_height = $this->getCellHeight($fontsize / $this->k);
+                               $this->SetFont($style['font'], '', $fontsize);
+                       }
+                       if ($vpadding > 0) {
+                               $vpadding = (($h - $text_height) / 4);
+                       }
+                       $barh = $h - $text_height - (2 * $vpadding);
+               }
+               // fit the barcode on available space
+               list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, false);
+               // set alignment
+               $this->img_rb_y = $y + $h;
+               // set alignment
+               if ($this->rtl) {
+                       if ($style['position'] == 'L') {
+                               $xpos = $this->lMargin;
+                       } elseif ($style['position'] == 'C') {
+                               $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($style['position'] == 'R') {
+                               $xpos = $this->w - $this->rMargin - $w;
+                       } else {
+                               $xpos = $x - $w;
+                       }
+                       $this->img_rb_x = $xpos;
+               } else {
+                       if ($style['position'] == 'L') {
+                               $xpos = $this->lMargin;
+                       } elseif ($style['position'] == 'C') {
+                               $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($style['position'] == 'R') {
+                               $xpos = $this->w - $this->rMargin - $w;
+                       } else {
+                               $xpos = $x;
+                       }
+                       $this->img_rb_x = $xpos + $w;
+               }
+               $xpos_rect = $xpos;
+               if (!isset($style['align'])) {
+                       $style['align'] = 'C';
+               }
+               switch ($style['align']) {
+                       case 'L': {
+                               $xpos = $xpos_rect + $hpadding;
+                               break;
+                       }
+                       case 'R': {
+                               $xpos = $xpos_rect + ($w - ($arrcode['maxw'] * $xres)) - $hpadding;
+                               break;
+                       }
+                       case 'C':
+                       default : {
+                               $xpos = $xpos_rect + (($w - ($arrcode['maxw'] * $xres)) / 2);
+                               break;
+                       }
+               }
+               $xpos_text = $xpos;
+               // barcode is always printed in LTR direction
+               $tempRTL = $this->rtl;
+               $this->rtl = false;
+               // print background color
+               if ($style['bgcolor']) {
+                       $this->Rect($xpos_rect, $y, $w, $h, $style['border'] ? 'DF' : 'F', '', $style['bgcolor']);
+               } elseif ($style['border']) {
+                       $this->Rect($xpos_rect, $y, $w, $h, 'D');
+               }
+               // set foreground color
+               $this->SetDrawColorArray($style['fgcolor']);
+               $this->SetTextColorArray($style['fgcolor']);
+               // print bars
+               foreach ($arrcode['bcode'] as $k => $v) {
+                       $bw = ($v['w'] * $xres);
+                       if ($v['t']) {
+                               // draw a vertical bar
+                               $ypos = $y + $vpadding + ($v['p'] * $barh / $arrcode['maxh']);
+                               $this->Rect($xpos, $ypos, $bw, ($v['h'] * $barh / $arrcode['maxh']), 'F', array(), $style['fgcolor']);
+                       }
+                       $xpos += $bw;
+               }
+               // print text
+               if ($style['text']) {
+                       if (isset($style['label']) AND !TCPDF_STATIC::empty_string($style['label'])) {
+                               $label = $style['label'];
+                       } else {
+                               $label = $code;
+                       }
+                       $txtwidth = ($arrcode['maxw'] * $xres);
+                       if ($this->GetStringWidth($label) > $txtwidth) {
+                               $style['stretchtext'] = 2;
+                       }
+                       // print text
+                       $this->x = $xpos_text;
+                       $this->y = $y + $vpadding + $barh;
+                       $cellpadding = $this->cell_padding;
+                       $this->SetCellPadding(0);
+                       $this->Cell($txtwidth, '', $label, 0, 0, 'C', false, '', $style['stretchtext'], false, 'T', 'T');
+                       $this->cell_padding = $cellpadding;
+               }
+               // restore original direction
+               $this->rtl = $tempRTL;
+               // restore previous settings
+               $this->setGraphicVars($gvars);
+               // set pointer to align the next text/objects
+               switch($align) {
+                       case 'T':{
+                               $this->y = $y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'M':{
+                               $this->y = $y + round($h / 2);
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'B':{
+                               $this->y = $this->img_rb_y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'N':{
+                               $this->SetY($this->img_rb_y);
+                               break;
+                       }
+                       default:{
+                               break;
+                       }
+               }
+               $this->endlinex = $this->img_rb_x;
+       }
+
+       /**
+        * Print 2D Barcode.
+        * @param $code (string) code to print
+        * @param $type (string) type of barcode (see tcpdf_barcodes_2d.php for supported formats).
+        * @param $x (int) x position in user units
+        * @param $y (int) y position in user units
+        * @param $w (int) width in user units
+        * @param $h (int) height in user units
+        * @param $style (array) array of options:<ul>
+        * <li>boolean $style['border'] if true prints a border around the barcode</li>
+        * <li>int $style['padding'] padding to leave around the barcode in barcode units (set to 'auto' for automatic padding)</li>
+        * <li>int $style['hpadding'] horizontal padding in barcode units (set to 'auto' for automatic padding)</li>
+        * <li>int $style['vpadding'] vertical padding in barcode units (set to 'auto' for automatic padding)</li>
+        * <li>int $style['module_width'] width of a single module in points</li>
+        * <li>int $style['module_height'] height of a single module in points</li>
+        * <li>array $style['fgcolor'] color array for bars and text</li>
+        * <li>mixed $style['bgcolor'] color array for background or false for transparent</li>
+        * <li>string $style['position'] barcode position on the page: L = left margin; C = center; R = right margin; S = stretch</li><li>$style['module_width'] width of a single module in points</li>
+        * <li>$style['module_height'] height of a single module in points</li></ul>
+        * @param $align (string) Indicates the alignment of the pointer next to barcode insertion relative to barcode height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
+        * @param $distort (boolean) if true distort the barcode to fit width and height, otherwise preserve aspect ratio
+        * @author Nicola Asuni
+        * @since 4.5.037 (2009-04-07)
+        * @public
+        */
+       public function write2DBarcode($code, $type, $x='', $y='', $w='', $h='', $style='', $align='', $distort=false) {
+               if (TCPDF_STATIC::empty_string(trim($code))) {
+                       return;
+               }
+               require_once(dirname(__FILE__).'/tcpdf_barcodes_2d.php');
+               // save current graphic settings
+               $gvars = $this->getGraphicVars();
+               // create new barcode object
+               $barcodeobj = new TCPDF2DBarcode($code, $type);
+               $arrcode = $barcodeobj->getBarcodeArray();
+               if (($arrcode === false) OR empty($arrcode) OR !isset($arrcode['num_rows']) OR ($arrcode['num_rows'] == 0) OR !isset($arrcode['num_cols']) OR ($arrcode['num_cols'] == 0)) {
+                       $this->Error('Error in 2D barcode string');
+               }
+               // set default values
+               if (!isset($style['position'])) {
+                       $style['position'] = '';
+               }
+               if (!isset($style['fgcolor'])) {
+                       $style['fgcolor'] = array(0,0,0); // default black
+               }
+               if (!isset($style['bgcolor'])) {
+                       $style['bgcolor'] = false; // default transparent
+               }
+               if (!isset($style['border'])) {
+                       $style['border'] = false;
+               }
+               // padding
+               if (!isset($style['padding'])) {
+                       $style['padding'] = 0;
+               } elseif ($style['padding'] === 'auto') {
+                       $style['padding'] = 4;
+               }
+               if (!isset($style['hpadding'])) {
+                       $style['hpadding'] = $style['padding'];
+               } elseif ($style['hpadding'] === 'auto') {
+                       $style['hpadding'] = 4;
+               }
+               if (!isset($style['vpadding'])) {
+                       $style['vpadding'] = $style['padding'];
+               } elseif ($style['vpadding'] === 'auto') {
+                       $style['vpadding'] = 4;
+               }
+               $hpad = (2 * $style['hpadding']);
+               $vpad = (2 * $style['vpadding']);
+               // cell (module) dimension
+               if (!isset($style['module_width'])) {
+                       $style['module_width'] = 1; // width of a single module in points
+               }
+               if (!isset($style['module_height'])) {
+                       $style['module_height'] = 1; // height of a single module in points
+               }
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               // number of barcode columns and rows
+               $rows = $arrcode['num_rows'];
+               $cols = $arrcode['num_cols'];
+               if (($rows <= 0) || ($cols <= 0)){
+                       $this->Error('Error in 2D barcode string');
+               }
+               // module width and height
+               $mw = $style['module_width'];
+               $mh = $style['module_height'];
+               if (($mw <= 0) OR ($mh <= 0)) {
+                       $this->Error('Error in 2D barcode string');
+               }
+               // get max dimensions
+               if ($this->rtl) {
+                       $maxw = $x - $this->lMargin;
+               } else {
+                       $maxw = $this->w - $this->rMargin - $x;
+               }
+               $maxh = ($this->h - $this->tMargin - $this->bMargin);
+               $ratioHW = ((($rows * $mh) + $hpad) / (($cols * $mw) + $vpad));
+               $ratioWH = ((($cols * $mw) + $vpad) / (($rows * $mh) + $hpad));
+               if (!$distort) {
+                       if (($maxw * $ratioHW) > $maxh) {
+                               $maxw = $maxh * $ratioWH;
+                       }
+                       if (($maxh * $ratioWH) > $maxw) {
+                               $maxh = $maxw * $ratioHW;
+                       }
+               }
+               // set maximum dimesions
+               if ($w > $maxw) {
+                       $w = $maxw;
+               }
+               if ($h > $maxh) {
+                       $h = $maxh;
+               }
+               // set dimensions
+               if ((($w === '') OR ($w <= 0)) AND (($h === '') OR ($h <= 0))) {
+                       $w = ($cols + $hpad) * ($mw / $this->k);
+                       $h = ($rows + $vpad) * ($mh / $this->k);
+               } elseif (($w === '') OR ($w <= 0)) {
+                       $w = $h * $ratioWH;
+               } elseif (($h === '') OR ($h <= 0)) {
+                       $h = $w * $ratioHW;
+               }
+               // barcode size (excluding padding)
+               $bw = ($w * $cols) / ($cols + $hpad);
+               $bh = ($h * $rows) / ($rows + $vpad);
+               // dimension of single barcode cell unit
+               $cw = $bw / $cols;
+               $ch = $bh / $rows;
+               if (!$distort) {
+                       if (($cw / $ch) > ($mw / $mh)) {
+                               // correct horizontal distortion
+                               $cw = $ch * $mw / $mh;
+                               $bw = $cw * $cols;
+                               $style['hpadding'] = ($w - $bw) / (2 * $cw);
+                       } else {
+                               // correct vertical distortion
+                               $ch = $cw * $mh / $mw;
+                               $bh = $ch * $rows;
+                               $style['vpadding'] = ($h - $bh) / (2 * $ch);
+                       }
+               }
+               // fit the barcode on available space
+               list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, false);
+               // set alignment
+               $this->img_rb_y = $y + $h;
+               // set alignment
+               if ($this->rtl) {
+                       if ($style['position'] == 'L') {
+                               $xpos = $this->lMargin;
+                       } elseif ($style['position'] == 'C') {
+                               $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($style['position'] == 'R') {
+                               $xpos = $this->w - $this->rMargin - $w;
+                       } else {
+                               $xpos = $x - $w;
+                       }
+                       $this->img_rb_x = $xpos;
+               } else {
+                       if ($style['position'] == 'L') {
+                               $xpos = $this->lMargin;
+                       } elseif ($style['position'] == 'C') {
+                               $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($style['position'] == 'R') {
+                               $xpos = $this->w - $this->rMargin - $w;
+                       } else {
+                               $xpos = $x;
+                       }
+                       $this->img_rb_x = $xpos + $w;
+               }
+               $xstart = $xpos + ($style['hpadding'] * $cw);
+               $ystart = $y + ($style['vpadding'] * $ch);
+               // barcode is always printed in LTR direction
+               $tempRTL = $this->rtl;
+               $this->rtl = false;
+               // print background color
+               if ($style['bgcolor']) {
+                       $this->Rect($xpos, $y, $w, $h, $style['border'] ? 'DF' : 'F', '', $style['bgcolor']);
+               } elseif ($style['border']) {
+                       $this->Rect($xpos, $y, $w, $h, 'D');
+               }
+               // set foreground color
+               $this->SetDrawColorArray($style['fgcolor']);
+               // print barcode cells
+               // for each row
+               for ($r = 0; $r < $rows; ++$r) {
+                       $xr = $xstart;
+                       // for each column
+                       for ($c = 0; $c < $cols; ++$c) {
+                               if ($arrcode['bcode'][$r][$c] == 1) {
+                                       // draw a single barcode cell
+                                       $this->Rect($xr, $ystart, $cw, $ch, 'F', array(), $style['fgcolor']);
+                               }
+                               $xr += $cw;
+                       }
+                       $ystart += $ch;
+               }
+               // restore original direction
+               $this->rtl = $tempRTL;
+               // restore previous settings
+               $this->setGraphicVars($gvars);
+               // set pointer to align the next text/objects
+               switch($align) {
+                       case 'T':{
+                               $this->y = $y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'M':{
+                               $this->y = $y + round($h/2);
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'B':{
+                               $this->y = $this->img_rb_y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'N':{
+                               $this->SetY($this->img_rb_y);
+                               break;
+                       }
+                       default:{
+                               break;
+                       }
+               }
+               $this->endlinex = $this->img_rb_x;
+       }
+
+       /**
+        * Returns an array containing current margins:
+        * <ul>
+                       <li>$ret['left'] = left margin</li>
+                       <li>$ret['right'] = right margin</li>
+                       <li>$ret['top'] = top margin</li>
+                       <li>$ret['bottom'] = bottom margin</li>
+                       <li>$ret['header'] = header margin</li>
+                       <li>$ret['footer'] = footer margin</li>
+                       <li>$ret['cell'] = cell padding array</li>
+                       <li>$ret['padding_left'] = cell left padding</li>
+                       <li>$ret['padding_top'] = cell top padding</li>
+                       <li>$ret['padding_right'] = cell right padding</li>
+                       <li>$ret['padding_bottom'] = cell bottom padding</li>
+        * </ul>
+        * @return array containing all margins measures
+        * @public
+        * @since 3.2.000 (2008-06-23)
+        */
+       public function getMargins() {
+               $ret = array(
+                       'left' => $this->lMargin,
+                       'right' => $this->rMargin,
+                       'top' => $this->tMargin,
+                       'bottom' => $this->bMargin,
+                       'header' => $this->header_margin,
+                       'footer' => $this->footer_margin,
+                       'cell' => $this->cell_padding,
+                       'padding_left' => $this->cell_padding['L'],
+                       'padding_top' => $this->cell_padding['T'],
+                       'padding_right' => $this->cell_padding['R'],
+                       'padding_bottom' => $this->cell_padding['B']
+               );
+               return $ret;
+       }
+
+       /**
+        * Returns an array containing original margins:
+        * <ul>
+                       <li>$ret['left'] = left margin</li>
+                       <li>$ret['right'] = right margin</li>
+        * </ul>
+        * @return array containing all margins measures
+        * @public
+        * @since 4.0.012 (2008-07-24)
+        */
+       public function getOriginalMargins() {
+               $ret = array(
+                       'left' => $this->original_lMargin,
+                       'right' => $this->original_rMargin
+               );
+               return $ret;
+       }
+
+       /**
+        * Returns the current font size.
+        * @return current font size
+        * @public
+        * @since 3.2.000 (2008-06-23)
+        */
+       public function getFontSize() {
+               return $this->FontSize;
+       }
+
+       /**
+        * Returns the current font size in points unit.
+        * @return current font size in points unit
+        * @public
+        * @since 3.2.000 (2008-06-23)
+        */
+       public function getFontSizePt() {
+               return $this->FontSizePt;
+       }
+
+       /**
+        * Returns the current font family name.
+        * @return string current font family name
+        * @public
+        * @since 4.3.008 (2008-12-05)
+        */
+       public function getFontFamily() {
+               return $this->FontFamily;
+       }
+
+       /**
+        * Returns the current font style.
+        * @return string current font style
+        * @public
+        * @since 4.3.008 (2008-12-05)
+        */
+       public function getFontStyle() {
+               return $this->FontStyle;
+       }
+
+       /**
+        * Cleanup HTML code (requires HTML Tidy library).
+        * @param $html (string) htmlcode to fix
+        * @param $default_css (string) CSS commands to add
+        * @param $tagvs (array) parameters for setHtmlVSpace method
+        * @param $tidy_options (array) options for tidy_parse_string function
+        * @return string XHTML code cleaned up
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.017 (2010-11-16)
+        * @see setHtmlVSpace()
+        */
+       public function fixHTMLCode($html, $default_css='', $tagvs='', $tidy_options='') {
+               return TCPDF_STATIC::fixHTMLCode($html, $default_css, $tagvs, $tidy_options, $this->tagvspaces);
+       }
+
+       /**
+        * Returns the border width from CSS property
+        * @param $width (string) border width
+        * @return int with in user units
+        * @protected
+        * @since 5.7.000 (2010-08-02)
+        */
+       protected function getCSSBorderWidth($width) {
+               if ($width == 'thin') {
+                       $width = (2 / $this->k);
+               } elseif ($width == 'medium') {
+                       $width = (4 / $this->k);
+               } elseif ($width == 'thick') {
+                       $width = (6 / $this->k);
+               } else {
+                       $width = $this->getHTMLUnitToUnits($width, 1, 'px', false);
+               }
+               return $width;
+       }
+
+       /**
+        * Returns the border dash style from CSS property
+        * @param $style (string) border style to convert
+        * @return int sash style (return -1 in case of none or hidden border)
+        * @protected
+        * @since 5.7.000 (2010-08-02)
+        */
+       protected function getCSSBorderDashStyle($style) {
+               switch (strtolower($style)) {
+                       case 'none':
+                       case 'hidden': {
+                               $dash = -1;
+                               break;
+                       }
+                       case 'dotted': {
+                               $dash = 1;
+                               break;
+                       }
+                       case 'dashed': {
+                               $dash = 3;
+                               break;
+                       }
+                       case 'double':
+                       case 'groove':
+                       case 'ridge':
+                       case 'inset':
+                       case 'outset':
+                       case 'solid':
+                       default: {
+                               $dash = 0;
+                               break;
+                       }
+               }
+               return $dash;
+       }
+
+       /**
+        * Returns the border style array from CSS border properties
+        * @param $cssborder (string) border properties
+        * @return array containing border properties
+        * @protected
+        * @since 5.7.000 (2010-08-02)
+        */
+       protected function getCSSBorderStyle($cssborder) {
+               $bprop = preg_split('/[\s]+/', trim($cssborder));
+               $border = array(); // value to be returned
+               switch (count($bprop)) {
+                       case 3: {
+                               $width = $bprop[0];
+                               $style = $bprop[1];
+                               $color = $bprop[2];
+                               break;
+                       }
+                       case 2: {
+                               $width = 'medium';
+                               $style = $bprop[0];
+                               $color = $bprop[1];
+                               break;
+                       }
+                       case 1: {
+                               $width = 'medium';
+                               $style = $bprop[0];
+                               $color = 'black';
+                               break;
+                       }
+                       default: {
+                               $width = 'medium';
+                               $style = 'solid';
+                               $color = 'black';
+                               break;
+                       }
+               }
+               if ($style == 'none') {
+                       return array();
+               }
+               $border['cap'] = 'square';
+               $border['join'] = 'miter';
+               $border['dash'] = $this->getCSSBorderDashStyle($style);
+               if ($border['dash'] < 0) {
+                       return array();
+               }
+               $border['width'] = $this->getCSSBorderWidth($width);
+               $border['color'] = TCPDF_COLORS::convertHTMLColorToDec($color, $this->spot_colors);
+               return $border;
+       }
+
+       /**
+        * Get the internal Cell padding from CSS attribute.
+        * @param $csspadding (string) padding properties
+        * @param $width (float) width of the containing element
+        * @return array of cell paddings
+        * @public
+        * @since 5.9.000 (2010-10-04)
+        */
+       public function getCSSPadding($csspadding, $width=0) {
+               $padding = preg_split('/[\s]+/', trim($csspadding));
+               $cell_padding = array(); // value to be returned
+               switch (count($padding)) {
+                       case 4: {
+                               $cell_padding['T'] = $padding[0];
+                               $cell_padding['R'] = $padding[1];
+                               $cell_padding['B'] = $padding[2];
+                               $cell_padding['L'] = $padding[3];
+                               break;
+                       }
+                       case 3: {
+                               $cell_padding['T'] = $padding[0];
+                               $cell_padding['R'] = $padding[1];
+                               $cell_padding['B'] = $padding[2];
+                               $cell_padding['L'] = $padding[1];
+                               break;
+                       }
+                       case 2: {
+                               $cell_padding['T'] = $padding[0];
+                               $cell_padding['R'] = $padding[1];
+                               $cell_padding['B'] = $padding[0];
+                               $cell_padding['L'] = $padding[1];
+                               break;
+                       }
+                       case 1: {
+                               $cell_padding['T'] = $padding[0];
+                               $cell_padding['R'] = $padding[0];
+                               $cell_padding['B'] = $padding[0];
+                               $cell_padding['L'] = $padding[0];
+                               break;
+                       }
+                       default: {
+                               return $this->cell_padding;
+                       }
+               }
+               if ($width == 0) {
+                       $width = $this->w - $this->lMargin - $this->rMargin;
+               }
+               $cell_padding['T'] = $this->getHTMLUnitToUnits($cell_padding['T'], $width, 'px', false);
+               $cell_padding['R'] = $this->getHTMLUnitToUnits($cell_padding['R'], $width, 'px', false);
+               $cell_padding['B'] = $this->getHTMLUnitToUnits($cell_padding['B'], $width, 'px', false);
+               $cell_padding['L'] = $this->getHTMLUnitToUnits($cell_padding['L'], $width, 'px', false);
+               return $cell_padding;
+       }
+
+       /**
+        * Get the internal Cell margin from CSS attribute.
+        * @param $cssmargin (string) margin properties
+        * @param $width (float) width of the containing element
+        * @return array of cell margins
+        * @public
+        * @since 5.9.000 (2010-10-04)
+        */
+       public function getCSSMargin($cssmargin, $width=0) {
+               $margin = preg_split('/[\s]+/', trim($cssmargin));
+               $cell_margin = array(); // value to be returned
+               switch (count($margin)) {
+                       case 4: {
+                               $cell_margin['T'] = $margin[0];
+                               $cell_margin['R'] = $margin[1];
+                               $cell_margin['B'] = $margin[2];
+                               $cell_margin['L'] = $margin[3];
+                               break;
+                       }
+                       case 3: {
+                               $cell_margin['T'] = $margin[0];
+                               $cell_margin['R'] = $margin[1];
+                               $cell_margin['B'] = $margin[2];
+                               $cell_margin['L'] = $margin[1];
+                               break;
+                       }
+                       case 2: {
+                               $cell_margin['T'] = $margin[0];
+                               $cell_margin['R'] = $margin[1];
+                               $cell_margin['B'] = $margin[0];
+                               $cell_margin['L'] = $margin[1];
+                               break;
+                       }
+                       case 1: {
+                               $cell_margin['T'] = $margin[0];
+                               $cell_margin['R'] = $margin[0];
+                               $cell_margin['B'] = $margin[0];
+                               $cell_margin['L'] = $margin[0];
+                               break;
+                       }
+                       default: {
+                               return $this->cell_margin;
+                       }
+               }
+               if ($width == 0) {
+                       $width = $this->w - $this->lMargin - $this->rMargin;
+               }
+               $cell_margin['T'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['T']), $width, 'px', false);
+               $cell_margin['R'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['R']), $width, 'px', false);
+               $cell_margin['B'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['B']), $width, 'px', false);
+               $cell_margin['L'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['L']), $width, 'px', false);
+               return $cell_margin;
+       }
+
+       /**
+        * Get the border-spacing from CSS attribute.
+        * @param $cssbspace (string) border-spacing CSS properties
+        * @param $width (float) width of the containing element
+        * @return array of border spacings
+        * @public
+        * @since 5.9.010 (2010-10-27)
+        */
+       public function getCSSBorderMargin($cssbspace, $width=0) {
+               $space = preg_split('/[\s]+/', trim($cssbspace));
+               $border_spacing = array(); // value to be returned
+               switch (count($space)) {
+                       case 2: {
+                               $border_spacing['H'] = $space[0];
+                               $border_spacing['V'] = $space[1];
+                               break;
+                       }
+                       case 1: {
+                               $border_spacing['H'] = $space[0];
+                               $border_spacing['V'] = $space[0];
+                               break;
+                       }
+                       default: {
+                               return array('H' => 0, 'V' => 0);
+                       }
+               }
+               if ($width == 0) {
+                       $width = $this->w - $this->lMargin - $this->rMargin;
+               }
+               $border_spacing['H'] = $this->getHTMLUnitToUnits($border_spacing['H'], $width, 'px', false);
+               $border_spacing['V'] = $this->getHTMLUnitToUnits($border_spacing['V'], $width, 'px', false);
+               return $border_spacing;
+       }
+
+       /**
+        * Returns the letter-spacing value from CSS value
+        * @param $spacing (string) letter-spacing value
+        * @param $parent (float) font spacing (tracking) value of the parent element
+        * @return float quantity to increases or decreases the space between characters in a text.
+        * @protected
+        * @since 5.9.000 (2010-10-02)
+        */
+       protected function getCSSFontSpacing($spacing, $parent=0) {
+               $val = 0; // value to be returned
+               $spacing = trim($spacing);
+               switch ($spacing) {
+                       case 'normal': {
+                               $val = 0;
+                               break;
+                       }
+                       case 'inherit': {
+                               if ($parent == 'normal') {
+                                       $val = 0;
+                               } else {
+                                       $val = $parent;
+                               }
+                               break;
+                       }
+                       default: {
+                               $val = $this->getHTMLUnitToUnits($spacing, 0, 'px', false);
+                       }
+               }
+               return $val;
+       }
+
+       /**
+        * Returns the percentage of font stretching from CSS value
+        * @param $stretch (string) stretch mode
+        * @param $parent (float) stretch value of the parent element
+        * @return float font stretching percentage
+        * @protected
+        * @since 5.9.000 (2010-10-02)
+        */
+       protected function getCSSFontStretching($stretch, $parent=100) {
+               $val = 100; // value to be returned
+               $stretch = trim($stretch);
+               switch ($stretch) {
+                       case 'ultra-condensed': {
+                               $val = 40;
+                               break;
+                       }
+                       case 'extra-condensed': {
+                               $val = 55;
+                               break;
+                       }
+                       case 'condensed': {
+                               $val = 70;
+                               break;
+                       }
+                       case 'semi-condensed': {
+                               $val = 85;
+                               break;
+                       }
+                       case 'normal': {
+                               $val = 100;
+                               break;
+                       }
+                       case 'semi-expanded': {
+                               $val = 115;
+                               break;
+                       }
+                       case 'expanded': {
+                               $val = 130;
+                               break;
+                       }
+                       case 'extra-expanded': {
+                               $val = 145;
+                               break;
+                       }
+                       case 'ultra-expanded': {
+                               $val = 160;
+                               break;
+                       }
+                       case 'wider': {
+                               $val = ($parent + 10);
+                               break;
+                       }
+                       case 'narrower': {
+                               $val = ($parent - 10);
+                               break;
+                       }
+                       case 'inherit': {
+                               if ($parent == 'normal') {
+                                       $val = 100;
+                               } else {
+                                       $val = $parent;
+                               }
+                               break;
+                       }
+                       default: {
+                               $val = $this->getHTMLUnitToUnits($stretch, 100, '%', false);
+                       }
+               }
+               return $val;
+       }
+
+       /**
+        * Convert HTML string containing font size value to points
+        * @param $val (string) String containing font size value and unit.
+        * @param $refsize (float) Reference font size in points.
+        * @param $parent_size (float) Parent font size in points.
+        * @param $defaultunit (string) Default unit (can be one of the following: %, em, ex, px, in, mm, pc, pt).
+        * @return float value in points
+        * @public
+        */
+       public function getHTMLFontUnits($val, $refsize=12, $parent_size=12, $defaultunit='pt') {
+               $refsize = TCPDF_FONTS::getFontRefSize($refsize);
+               $parent_size = TCPDF_FONTS::getFontRefSize($parent_size, $refsize);
+               switch ($val) {
+                       case 'xx-small': {
+                               $size = ($refsize - 4);
+                               break;
+                       }
+                       case 'x-small': {
+                               $size = ($refsize - 3);
+                               break;
+                       }
+                       case 'small': {
+                               $size = ($refsize - 2);
+                               break;
+                       }
+                       case 'medium': {
+                               $size = $refsize;
+                               break;
+                       }
+                       case 'large': {
+                               $size = ($refsize + 2);
+                               break;
+                       }
+                       case 'x-large': {
+                               $size = ($refsize + 4);
+                               break;
+                       }
+                       case 'xx-large': {
+                               $size = ($refsize + 6);
+                               break;
+                       }
+                       case 'smaller': {
+                               $size = ($parent_size - 3);
+                               break;
+                       }
+                       case 'larger': {
+                               $size = ($parent_size + 3);
+                               break;
+                       }
+                       default: {
+                               $size = $this->getHTMLUnitToUnits($val, $parent_size, $defaultunit, true);
+                       }
+               }
+               return $size;
+       }
+
+       /**
+        * Returns the HTML DOM array.
+        * @param $html (string) html code
+        * @return array
+        * @protected
+        * @since 3.2.000 (2008-06-20)
+        */
+       protected function getHtmlDomArray($html) {
+               // array of CSS styles ( selector => properties).
+               $css = array();
+               // get CSS array defined at previous call
+               $matches = array();
+               if (preg_match_all('/<cssarray>([^\<]*)<\/cssarray>/isU', $html, $matches) > 0) {
+                       if (isset($matches[1][0])) {
+                               $css = array_merge($css, json_decode($this->unhtmlentities($matches[1][0]), true));
+                       }
+                       $html = preg_replace('/<cssarray>(.*?)<\/cssarray>/isU', '', $html);
+               }
+               // extract external CSS files
+               $matches = array();
+               if (preg_match_all('/<link([^\>]*)>/isU', $html, $matches) > 0) {
+                       foreach ($matches[1] as $key => $link) {
+                               $type = array();
+                               if (preg_match('/type[\s]*=[\s]*"text\/css"/', $link, $type)) {
+                                       $type = array();
+                                       preg_match('/media[\s]*=[\s]*"([^"]*)"/', $link, $type);
+                                       // get 'all' and 'print' media, other media types are discarded
+                                       // (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv)
+                                       if (empty($type) OR (isset($type[1]) AND (($type[1] == 'all') OR ($type[1] == 'print')))) {
+                                               $type = array();
+                                               if (preg_match('/href[\s]*=[\s]*"([^"]*)"/', $link, $type) > 0) {
+                                                       // read CSS data file
+                                                       $cssdata = TCPDF_STATIC::fileGetContents(trim($type[1]));
+                                                       if (($cssdata !== FALSE) AND (strlen($cssdata) > 0)) {
+                                                               $css = array_merge($css, TCPDF_STATIC::extractCSSproperties($cssdata));
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               // extract style tags
+               $matches = array();
+               if (preg_match_all('/<style([^\>]*)>([^\<]*)<\/style>/isU', $html, $matches) > 0) {
+                       foreach ($matches[1] as $key => $media) {
+                               $type = array();
+                               preg_match('/media[\s]*=[\s]*"([^"]*)"/', $media, $type);
+                               // get 'all' and 'print' media, other media types are discarded
+                               // (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv)
+                               if (empty($type) OR (isset($type[1]) AND (($type[1] == 'all') OR ($type[1] == 'print')))) {
+                                       $cssdata = $matches[2][$key];
+                                       $css = array_merge($css, TCPDF_STATIC::extractCSSproperties($cssdata));
+                               }
+                       }
+               }
+               // create a special tag to contain the CSS array (used for table content)
+               $csstagarray = '<cssarray>'.htmlentities(json_encode($css)).'</cssarray>';
+               // remove head and style blocks
+               $html = preg_replace('/<head([^\>]*)>(.*?)<\/head>/siU', '', $html);
+               $html = preg_replace('/<style([^\>]*)>([^\<]*)<\/style>/isU', '', $html);
+               // define block tags
+               $blocktags = array('blockquote','br','dd','dl','div','dt','h1','h2','h3','h4','h5','h6','hr','li','ol','p','pre','ul','tcpdf','table','tr','td');
+               // define self-closing tags
+               $selfclosingtags = array('area','base','basefont','br','hr','input','img','link','meta');
+               // remove all unsupported tags (the line below lists all supported tags)
+               $html = strip_tags($html, '<marker/><a><b><blockquote><body><br><br/><dd><del><div><dl><dt><em><font><form><h1><h2><h3><h4><h5><h6><hr><hr/><i><img><input><label><li><ol><option><p><pre><s><select><small><span><strike><strong><sub><sup><table><tablehead><tcpdf><td><textarea><th><thead><tr><tt><u><ul>');
+               //replace some blank characters
+               $html = preg_replace('/<pre/', '<xre', $html); // preserve pre tag
+               $html = preg_replace('/<(table|tr|td|th|tcpdf|blockquote|dd|div|dl|dt|form|h1|h2|h3|h4|h5|h6|br|hr|li|ol|ul|p)([^\>]*)>[\n\r\t]+/', '<\\1\\2>', $html);
+               $html = preg_replace('@(\r\n|\r)@', "\n", $html);
+               $repTable = array("\t" => ' ', "\0" => ' ', "\x0B" => ' ', "\\" => "\\\\");
+               $html = strtr($html, $repTable);
+               $offset = 0;
+               while (($offset < strlen($html)) AND ($pos = strpos($html, '</pre>', $offset)) !== false) {
+                       $html_a = substr($html, 0, $offset);
+                       $html_b = substr($html, $offset, ($pos - $offset + 6));
+                       while (preg_match("'<xre([^\>]*)>(.*?)\n(.*?)</pre>'si", $html_b)) {
+                               // preserve newlines on <pre> tag
+                               $html_b = preg_replace("'<xre([^\>]*)>(.*?)\n(.*?)</pre>'si", "<xre\\1>\\2<br />\\3</pre>", $html_b);
+                       }
+                       while (preg_match("'<xre([^\>]*)>(.*?)".$this->re_space['p']."(.*?)</pre>'".$this->re_space['m'], $html_b)) {
+                               // preserve spaces on <pre> tag
+                               $html_b = preg_replace("'<xre([^\>]*)>(.*?)".$this->re_space['p']."(.*?)</pre>'".$this->re_space['m'], "<xre\\1>\\2&nbsp;\\3</pre>", $html_b);
+                       }
+                       $html = $html_a.$html_b.substr($html, $pos + 6);
+                       $offset = strlen($html_a.$html_b);
+               }
+               $offset = 0;
+               while (($offset < strlen($html)) AND ($pos = strpos($html, '</textarea>', $offset)) !== false) {
+                       $html_a = substr($html, 0, $offset);
+                       $html_b = substr($html, $offset, ($pos - $offset + 11));
+                       while (preg_match("'<textarea([^\>]*)>(.*?)\n(.*?)</textarea>'si", $html_b)) {
+                               // preserve newlines on <textarea> tag
+                               $html_b = preg_replace("'<textarea([^\>]*)>(.*?)\n(.*?)</textarea>'si", "<textarea\\1>\\2<TBR>\\3</textarea>", $html_b);
+                               $html_b = preg_replace("'<textarea([^\>]*)>(.*?)[\"](.*?)</textarea>'si", "<textarea\\1>\\2''\\3</textarea>", $html_b);
+                       }
+                       $html = $html_a.$html_b.substr($html, $pos + 11);
+                       $offset = strlen($html_a.$html_b);
+               }
+               $html = preg_replace('/([\s]*)<option/si', '<option', $html);
+               $html = preg_replace('/<\/option>([\s]*)/si', '</option>', $html);
+               $offset = 0;
+               while (($offset < strlen($html)) AND ($pos = strpos($html, '</option>', $offset)) !== false) {
+                       $html_a = substr($html, 0, $offset);
+                       $html_b = substr($html, $offset, ($pos - $offset + 9));
+                       while (preg_match("'<option([^\>]*)>(.*?)</option>'si", $html_b)) {
+                               $html_b = preg_replace("'<option([\s]+)value=\"([^\"]*)\"([^\>]*)>(.*?)</option>'si", "\\2#!TaB!#\\4#!NwL!#", $html_b);
+                               $html_b = preg_replace("'<option([^\>]*)>(.*?)</option>'si", "\\2#!NwL!#", $html_b);
+                       }
+                       $html = $html_a.$html_b.substr($html, $pos + 9);
+                       $offset = strlen($html_a.$html_b);
+               }
+               if (preg_match("'</select'si", $html)) {
+                       $html = preg_replace("'<select([^\>]*)>'si", "<select\\1 opt=\"", $html);
+                       $html = preg_replace("'#!NwL!#</select>'si", "\" />", $html);
+               }
+               $html = str_replace("\n", ' ', $html);
+               // restore textarea newlines
+               $html = str_replace('<TBR>', "\n", $html);
+               // remove extra spaces from code
+               $html = preg_replace('/[\s]+<\/(table|tr|ul|ol|dl)>/', '</\\1>', $html);
+               $html = preg_replace('/'.$this->re_space['p'].'+<\/(td|th|li|dt|dd)>/'.$this->re_space['m'], '</\\1>', $html);
+               $html = preg_replace('/[\s]+<(tr|td|th|li|dt|dd)/', '<\\1', $html);
+               $html = preg_replace('/'.$this->re_space['p'].'+<(ul|ol|dl|br)/'.$this->re_space['m'], '<\\1', $html);
+               $html = preg_replace('/<\/(table|tr|td|th|blockquote|dd|dt|dl|div|dt|h1|h2|h3|h4|h5|h6|hr|li|ol|ul|p)>[\s]+</', '</\\1><', $html);
+               $html = preg_replace('/<\/(td|th)>/', '<marker style="font-size:0"/></\\1>', $html);
+               $html = preg_replace('/<\/table>([\s]*)<marker style="font-size:0"\/>/', '</table>', $html);
+               $html = preg_replace('/'.$this->re_space['p'].'+<img/'.$this->re_space['m'], chr(32).'<img', $html);
+               $html = preg_replace('/<img([^\>]*)>[\s]+([^\<])/xi', '<img\\1>&nbsp;\\2', $html);
+               $html = preg_replace('/<img([^\>]*)>/xi', '<img\\1><span><marker style="font-size:0"/></span>', $html);
+               $html = preg_replace('/<xre/', '<pre', $html); // restore pre tag
+               $html = preg_replace('/<textarea([^\>]*)>([^\<]*)<\/textarea>/xi', '<textarea\\1 value="\\2" />', $html);
+               $html = preg_replace('/<li([^\>]*)><\/li>/', '<li\\1>&nbsp;</li>', $html);
+               $html = preg_replace('/<li([^\>]*)>'.$this->re_space['p'].'*<img/'.$this->re_space['m'], '<li\\1><font size="1">&nbsp;</font><img', $html);
+               $html = preg_replace('/<([^\>\/]*)>[\s]/', '<\\1>&nbsp;', $html); // preserve some spaces
+               $html = preg_replace('/[\s]<\/([^\>]*)>/', '&nbsp;</\\1>', $html); // preserve some spaces
+               $html = preg_replace('/<su([bp])/', '<zws/><su\\1', $html); // fix sub/sup alignment
+               $html = preg_replace('/<\/su([bp])>/', '</su\\1><zws/>', $html); // fix sub/sup alignment
+               $html = preg_replace('/'.$this->re_space['p'].'+/'.$this->re_space['m'], chr(32), $html); // replace multiple spaces with a single space
+               // trim string
+               $html = $this->stringTrim($html);
+               // fix br tag after li
+               $html = preg_replace('/<li><br([^\>]*)>/', '<li> <br\\1>', $html);
+               // fix first image tag alignment
+               $html = preg_replace('/^<img/', '<span style="font-size:0"><br /></span> <img', $html, 1);
+               // pattern for generic tag
+               $tagpattern = '/(<[^>]+>)/';
+               // explodes the string
+               $a = preg_split($tagpattern, $html, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+               // count elements
+               $maxel = count($a);
+               $elkey = 0;
+               $key = 0;
+               // create an array of elements
+               $dom = array();
+               $dom[$key] = array();
+               // set inheritable properties fot the first void element
+               // possible inheritable properties are: azimuth, border-collapse, border-spacing, caption-side, color, cursor, direction, empty-cells, font, font-family, font-stretch, font-size, font-size-adjust, font-style, font-variant, font-weight, letter-spacing, line-height, list-style, list-style-image, list-style-position, list-style-type, orphans, page, page-break-inside, quotes, speak, speak-header, text-align, text-indent, text-transform, volume, white-space, widows, word-spacing
+               $dom[$key]['tag'] = false;
+               $dom[$key]['block'] = false;
+               $dom[$key]['value'] = '';
+               $dom[$key]['parent'] = 0;
+               $dom[$key]['hide'] = false;
+               $dom[$key]['fontname'] = $this->FontFamily;
+               $dom[$key]['fontstyle'] = $this->FontStyle;
+               $dom[$key]['fontsize'] = $this->FontSizePt;
+               $dom[$key]['font-stretch'] = $this->font_stretching;
+               $dom[$key]['letter-spacing'] = $this->font_spacing;
+               $dom[$key]['stroke'] = $this->textstrokewidth;
+               $dom[$key]['fill'] = (($this->textrendermode % 2) == 0);
+               $dom[$key]['clip'] = ($this->textrendermode > 3);
+               $dom[$key]['line-height'] = $this->cell_height_ratio;
+               $dom[$key]['bgcolor'] = false;
+               $dom[$key]['fgcolor'] = $this->fgcolor; // color
+               $dom[$key]['strokecolor'] = $this->strokecolor;
+               $dom[$key]['align'] = '';
+               $dom[$key]['listtype'] = '';
+               $dom[$key]['text-indent'] = 0;
+               $dom[$key]['text-transform'] = '';
+               $dom[$key]['border'] = array();
+               $dom[$key]['dir'] = $this->rtl?'rtl':'ltr';
+               $thead = false; // true when we are inside the THEAD tag
+               ++$key;
+               $level = array();
+               array_push($level, 0); // root
+               while ($elkey < $maxel) {
+                       $dom[$key] = array();
+                       $element = $a[$elkey];
+                       $dom[$key]['elkey'] = $elkey;
+                       if (preg_match($tagpattern, $element)) {
+                               // html tag
+                               $element = substr($element, 1, -1);
+                               // get tag name
+                               preg_match('/[\/]?([a-zA-Z0-9]*)/', $element, $tag);
+                               $tagname = strtolower($tag[1]);
+                               // check if we are inside a table header
+                               if ($tagname == 'thead') {
+                                       if ($element[0] == '/') {
+                                               $thead = false;
+                                       } else {
+                                               $thead = true;
+                                       }
+                                       ++$elkey;
+                                       continue;
+                               }
+                               $dom[$key]['tag'] = true;
+                               $dom[$key]['value'] = $tagname;
+                               if (in_array($dom[$key]['value'], $blocktags)) {
+                                       $dom[$key]['block'] = true;
+                               } else {
+                                       $dom[$key]['block'] = false;
+                               }
+                               if ($element[0] == '/') {
+                                       // *** closing html tag
+                                       $dom[$key]['opening'] = false;
+                                       $dom[$key]['parent'] = end($level);
+                                       array_pop($level);
+                                       $dom[$key]['hide'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['hide'];
+                                       $dom[$key]['fontname'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fontname'];
+                                       $dom[$key]['fontstyle'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fontstyle'];
+                                       $dom[$key]['fontsize'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fontsize'];
+                                       $dom[$key]['font-stretch'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['font-stretch'];
+                                       $dom[$key]['letter-spacing'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['letter-spacing'];
+                                       $dom[$key]['stroke'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['stroke'];
+                                       $dom[$key]['fill'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fill'];
+                                       $dom[$key]['clip'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['clip'];
+                                       $dom[$key]['line-height'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['line-height'];
+                                       $dom[$key]['bgcolor'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['bgcolor'];
+                                       $dom[$key]['fgcolor'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fgcolor'];
+                                       $dom[$key]['strokecolor'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['strokecolor'];
+                                       $dom[$key]['align'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['align'];
+                                       $dom[$key]['text-transform'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['text-transform'];
+                                       $dom[$key]['dir'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['dir'];
+                                       if (isset($dom[($dom[($dom[$key]['parent'])]['parent'])]['listtype'])) {
+                                               $dom[$key]['listtype'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['listtype'];
+                                       }
+                                       // set the number of columns in table tag
+                                       if (($dom[$key]['value'] == 'tr') AND (!isset($dom[($dom[($dom[$key]['parent'])]['parent'])]['cols']))) {
+                                               $dom[($dom[($dom[$key]['parent'])]['parent'])]['cols'] = $dom[($dom[$key]['parent'])]['cols'];
+                                       }
+                                       if (($dom[$key]['value'] == 'td') OR ($dom[$key]['value'] == 'th')) {
+                                               $dom[($dom[$key]['parent'])]['content'] = $csstagarray;
+                                               for ($i = ($dom[$key]['parent'] + 1); $i < $key; ++$i) {
+                                                       $dom[($dom[$key]['parent'])]['content'] .= $a[$dom[$i]['elkey']];
+                                               }
+                                               $key = $i;
+                                               // mark nested tables
+                                               $dom[($dom[$key]['parent'])]['content'] = str_replace('<table', '<table nested="true"', $dom[($dom[$key]['parent'])]['content']);
+                                               // remove thead sections from nested tables
+                                               $dom[($dom[$key]['parent'])]['content'] = str_replace('<thead>', '', $dom[($dom[$key]['parent'])]['content']);
+                                               $dom[($dom[$key]['parent'])]['content'] = str_replace('</thead>', '', $dom[($dom[$key]['parent'])]['content']);
+                                       }
+                                       // store header rows on a new table
+                                       if (($dom[$key]['value'] == 'tr') AND ($dom[($dom[$key]['parent'])]['thead'] === true)) {
+                                               if (TCPDF_STATIC::empty_string($dom[($dom[($dom[$key]['parent'])]['parent'])]['thead'])) {
+                                                       $dom[($dom[($dom[$key]['parent'])]['parent'])]['thead'] = $csstagarray.$a[$dom[($dom[($dom[$key]['parent'])]['parent'])]['elkey']];
+                                               }
+                                               for ($i = $dom[$key]['parent']; $i <= $key; ++$i) {
+                                                       $dom[($dom[($dom[$key]['parent'])]['parent'])]['thead'] .= $a[$dom[$i]['elkey']];
+                                               }
+                                               if (!isset($dom[($dom[$key]['parent'])]['attribute'])) {
+                                                       $dom[($dom[$key]['parent'])]['attribute'] = array();
+                                               }
+                                               // header elements must be always contained in a single page
+                                               $dom[($dom[$key]['parent'])]['attribute']['nobr'] = 'true';
+                                       }
+                                       if (($dom[$key]['value'] == 'table') AND (!TCPDF_STATIC::empty_string($dom[($dom[$key]['parent'])]['thead']))) {
+                                               // remove the nobr attributes from the table header
+                                               $dom[($dom[$key]['parent'])]['thead'] = str_replace(' nobr="true"', '', $dom[($dom[$key]['parent'])]['thead']);
+                                               $dom[($dom[$key]['parent'])]['thead'] .= '</tablehead>';
+                                       }
+                               } else {
+                                       // *** opening or self-closing html tag
+                                       $dom[$key]['opening'] = true;
+                                       $dom[$key]['parent'] = end($level);
+                                       if ((substr($element, -1, 1) == '/') OR (in_array($dom[$key]['value'], $selfclosingtags))) {
+                                               // self-closing tag
+                                               $dom[$key]['self'] = true;
+                                       } else {
+                                               // opening tag
+                                               array_push($level, $key);
+                                               $dom[$key]['self'] = false;
+                                       }
+                                       // copy some values from parent
+                                       $parentkey = 0;
+                                       if ($key > 0) {
+                                               $parentkey = $dom[$key]['parent'];
+                                               $dom[$key]['hide'] = $dom[$parentkey]['hide'];
+                                               $dom[$key]['fontname'] = $dom[$parentkey]['fontname'];
+                                               $dom[$key]['fontstyle'] = $dom[$parentkey]['fontstyle'];
+                                               $dom[$key]['fontsize'] = $dom[$parentkey]['fontsize'];
+                                               $dom[$key]['font-stretch'] = $dom[$parentkey]['font-stretch'];
+                                               $dom[$key]['letter-spacing'] = $dom[$parentkey]['letter-spacing'];
+                                               $dom[$key]['stroke'] = $dom[$parentkey]['stroke'];
+                                               $dom[$key]['fill'] = $dom[$parentkey]['fill'];
+                                               $dom[$key]['clip'] = $dom[$parentkey]['clip'];
+                                               $dom[$key]['line-height'] = $dom[$parentkey]['line-height'];
+                                               $dom[$key]['bgcolor'] = $dom[$parentkey]['bgcolor'];
+                                               $dom[$key]['fgcolor'] = $dom[$parentkey]['fgcolor'];
+                                               $dom[$key]['strokecolor'] = $dom[$parentkey]['strokecolor'];
+                                               $dom[$key]['align'] = $dom[$parentkey]['align'];
+                                               $dom[$key]['listtype'] = $dom[$parentkey]['listtype'];
+                                               $dom[$key]['text-indent'] = $dom[$parentkey]['text-indent'];
+                                               $dom[$key]['text-transform'] = $dom[$parentkey]['text-transform'];
+                                               $dom[$key]['border'] = array();
+                                               $dom[$key]['dir'] = $dom[$parentkey]['dir'];
+                                       }
+                                       // get attributes
+                                       preg_match_all('/([^=\s]*)[\s]*=[\s]*"([^"]*)"/', $element, $attr_array, PREG_PATTERN_ORDER);
+                                       $dom[$key]['attribute'] = array(); // reset attribute array
+                                       while (list($id, $name) = each($attr_array[1])) {
+                                               $dom[$key]['attribute'][strtolower($name)] = $attr_array[2][$id];
+                                       }
+                                       if (!empty($css)) {
+                                               // merge CSS style to current style
+                                               list($dom[$key]['csssel'], $dom[$key]['cssdata']) = TCPDF_STATIC::getCSSdataArray($dom, $key, $css);
+                                               $dom[$key]['attribute']['style'] = TCPDF_STATIC::getTagStyleFromCSSarray($dom[$key]['cssdata']);
+                                       }
+                                       // split style attributes
+                                       if (isset($dom[$key]['attribute']['style']) AND !empty($dom[$key]['attribute']['style'])) {
+                                               // get style attributes
+                                               preg_match_all('/([^;:\s]*):([^;]*)/', $dom[$key]['attribute']['style'], $style_array, PREG_PATTERN_ORDER);
+                                               $dom[$key]['style'] = array(); // reset style attribute array
+                                               while (list($id, $name) = each($style_array[1])) {
+                                                       // in case of duplicate attribute the last replace the previous
+                                                       $dom[$key]['style'][strtolower($name)] = trim($style_array[2][$id]);
+                                               }
+                                               // --- get some style attributes ---
+                                               // text direction
+                                               if (isset($dom[$key]['style']['direction'])) {
+                                                       $dom[$key]['dir'] = $dom[$key]['style']['direction'];
+                                               }
+                                               // display
+                                               if (isset($dom[$key]['style']['display'])) {
+                                                       $dom[$key]['hide'] = (trim(strtolower($dom[$key]['style']['display'])) == 'none');
+                                               }
+                                               // font family
+                                               if (isset($dom[$key]['style']['font-family'])) {
+                                                       $dom[$key]['fontname'] = $this->getFontFamilyName($dom[$key]['style']['font-family']);
+                                               }
+                                               // list-style-type
+                                               if (isset($dom[$key]['style']['list-style-type'])) {
+                                                       $dom[$key]['listtype'] = trim(strtolower($dom[$key]['style']['list-style-type']));
+                                                       if ($dom[$key]['listtype'] == 'inherit') {
+                                                               $dom[$key]['listtype'] = $dom[$parentkey]['listtype'];
+                                                       }
+                                               }
+                                               // text-indent
+                                               if (isset($dom[$key]['style']['text-indent'])) {
+                                                       $dom[$key]['text-indent'] = $this->getHTMLUnitToUnits($dom[$key]['style']['text-indent']);
+                                                       if ($dom[$key]['text-indent'] == 'inherit') {
+                                                               $dom[$key]['text-indent'] = $dom[$parentkey]['text-indent'];
+                                                       }
+                                               }
+                                               // text-transform
+                                               if (isset($dom[$key]['style']['text-transform'])) {
+                                                       $dom[$key]['text-transform'] = $dom[$key]['style']['text-transform'];
+                                               }
+                                               // font size
+                                               if (isset($dom[$key]['style']['font-size'])) {
+                                                       $fsize = trim($dom[$key]['style']['font-size']);
+                                                       $dom[$key]['fontsize'] = $this->getHTMLFontUnits($fsize, $dom[0]['fontsize'], $dom[$parentkey]['fontsize'], 'pt');
+                                               }
+                                               // font-stretch
+                                               if (isset($dom[$key]['style']['font-stretch'])) {
+                                                       $dom[$key]['font-stretch'] = $this->getCSSFontStretching($dom[$key]['style']['font-stretch'], $dom[$parentkey]['font-stretch']);
+                                               }
+                                               // letter-spacing
+                                               if (isset($dom[$key]['style']['letter-spacing'])) {
+                                                       $dom[$key]['letter-spacing'] = $this->getCSSFontSpacing($dom[$key]['style']['letter-spacing'], $dom[$parentkey]['letter-spacing']);
+                                               }
+                                               // line-height (internally is the cell height ratio)
+                                               if (isset($dom[$key]['style']['line-height'])) {
+                                                       $lineheight = trim($dom[$key]['style']['line-height']);
+                                                       switch ($lineheight) {
+                                                               // A normal line height. This is default
+                                                               case 'normal': {
+                                                                       $dom[$key]['line-height'] = $dom[0]['line-height'];
+                                                                       break;
+                                                               }
+                                                               case 'inherit': {
+                                                                       $dom[$key]['line-height'] = $dom[$parentkey]['line-height'];
+                                                               }
+                                                               default: {
+                                                                       if (is_numeric($lineheight)) {
+                                                                               // convert to percentage of font height
+                                                                               $lineheight = ($lineheight * 100).'%';
+                                                                       }
+                                                                       $dom[$key]['line-height'] = $this->getHTMLUnitToUnits($lineheight, 1, '%', true);
+                                                                       if (substr($lineheight, -1) !== '%') {
+                                                                               if ($dom[$key]['fontsize'] <= 0) {
+                                                                                       $dom[$key]['line-height'] = 1;
+                                                                               } else {
+                                                                                       $dom[$key]['line-height'] = (($dom[$key]['line-height'] - $this->cell_padding['T'] - $this->cell_padding['B']) / $dom[$key]['fontsize']);
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               // font style
+                                               if (isset($dom[$key]['style']['font-weight'])) {
+                                                       if (strtolower($dom[$key]['style']['font-weight'][0]) == 'n') {
+                                                               if (strpos($dom[$key]['fontstyle'], 'B') !== false) {
+                                                                       $dom[$key]['fontstyle'] = str_replace('B', '', $dom[$key]['fontstyle']);
+                                                               }
+                                                       } elseif (strtolower($dom[$key]['style']['font-weight'][0]) == 'b') {
+                                                               $dom[$key]['fontstyle'] .= 'B';
+                                                       }
+                                               }
+                                               if (isset($dom[$key]['style']['font-style']) AND (strtolower($dom[$key]['style']['font-style'][0]) == 'i')) {
+                                                       $dom[$key]['fontstyle'] .= 'I';
+                                               }
+                                               // font color
+                                               if (isset($dom[$key]['style']['color']) AND (!TCPDF_STATIC::empty_string($dom[$key]['style']['color']))) {
+                                                       $dom[$key]['fgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['style']['color'], $this->spot_colors);
+                                               } elseif ($dom[$key]['value'] == 'a') {
+                                                       $dom[$key]['fgcolor'] = $this->htmlLinkColorArray;
+                                               }
+                                               // background color
+                                               if (isset($dom[$key]['style']['background-color']) AND (!TCPDF_STATIC::empty_string($dom[$key]['style']['background-color']))) {
+                                                       $dom[$key]['bgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['style']['background-color'], $this->spot_colors);
+                                               }
+                                               // text-decoration
+                                               if (isset($dom[$key]['style']['text-decoration'])) {
+                                                       $decors = explode(' ', strtolower($dom[$key]['style']['text-decoration']));
+                                                       foreach ($decors as $dec) {
+                                                               $dec = trim($dec);
+                                                               if (!TCPDF_STATIC::empty_string($dec)) {
+                                                                       if ($dec[0] == 'u') {
+                                                                               // underline
+                                                                               $dom[$key]['fontstyle'] .= 'U';
+                                                                       } elseif ($dec[0] == 'l') {
+                                                                               // line-through
+                                                                               $dom[$key]['fontstyle'] .= 'D';
+                                                                       } elseif ($dec[0] == 'o') {
+                                                                               // overline
+                                                                               $dom[$key]['fontstyle'] .= 'O';
+                                                                       }
+                                                               }
+                                                       }
+                                               } elseif ($dom[$key]['value'] == 'a') {
+                                                       $dom[$key]['fontstyle'] = $this->htmlLinkFontStyle;
+                                               }
+                                               // check for width attribute
+                                               if (isset($dom[$key]['style']['width'])) {
+                                                       $dom[$key]['width'] = $dom[$key]['style']['width'];
+                                               }
+                                               // check for height attribute
+                                               if (isset($dom[$key]['style']['height'])) {
+                                                       $dom[$key]['height'] = $dom[$key]['style']['height'];
+                                               }
+                                               // check for text alignment
+                                               if (isset($dom[$key]['style']['text-align'])) {
+                                                       $dom[$key]['align'] = strtoupper($dom[$key]['style']['text-align'][0]);
+                                               }
+                                               // check for CSS border properties
+                                               if (isset($dom[$key]['style']['border'])) {
+                                                       $borderstyle = $this->getCSSBorderStyle($dom[$key]['style']['border']);
+                                                       if (!empty($borderstyle)) {
+                                                               $dom[$key]['border']['LTRB'] = $borderstyle;
+                                                       }
+                                               }
+                                               if (isset($dom[$key]['style']['border-color'])) {
+                                                       $brd_colors = preg_split('/[\s]+/', trim($dom[$key]['style']['border-color']));
+                                                       if (isset($brd_colors[3])) {
+                                                               $dom[$key]['border']['L']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[3], $this->spot_colors);
+                                                       }
+                                                       if (isset($brd_colors[1])) {
+                                                               $dom[$key]['border']['R']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[1], $this->spot_colors);
+                                                       }
+                                                       if (isset($brd_colors[0])) {
+                                                               $dom[$key]['border']['T']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[0], $this->spot_colors);
+                                                       }
+                                                       if (isset($brd_colors[2])) {
+                                                               $dom[$key]['border']['B']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[2], $this->spot_colors);
+                                                       }
+                                               }
+                                               if (isset($dom[$key]['style']['border-width'])) {
+                                                       $brd_widths = preg_split('/[\s]+/', trim($dom[$key]['style']['border-width']));
+                                                       if (isset($brd_widths[3])) {
+                                                               $dom[$key]['border']['L']['width'] = $this->getCSSBorderWidth($brd_widths[3]);
+                                                       }
+                                                       if (isset($brd_widths[1])) {
+                                                               $dom[$key]['border']['R']['width'] = $this->getCSSBorderWidth($brd_widths[1]);
+                                                       }
+                                                       if (isset($brd_widths[0])) {
+                                                               $dom[$key]['border']['T']['width'] = $this->getCSSBorderWidth($brd_widths[0]);
+                                                       }
+                                                       if (isset($brd_widths[2])) {
+                                                               $dom[$key]['border']['B']['width'] = $this->getCSSBorderWidth($brd_widths[2]);
+                                                       }
+                                               }
+                                               if (isset($dom[$key]['style']['border-style'])) {
+                                                       $brd_styles = preg_split('/[\s]+/', trim($dom[$key]['style']['border-style']));
+                                                       if (isset($brd_styles[3]) AND ($brd_styles[3]!='none')) {
+                                                               $dom[$key]['border']['L']['cap'] = 'square';
+                                                               $dom[$key]['border']['L']['join'] = 'miter';
+                                                               $dom[$key]['border']['L']['dash'] = $this->getCSSBorderDashStyle($brd_styles[3]);
+                                                               if ($dom[$key]['border']['L']['dash'] < 0) {
+                                                                       $dom[$key]['border']['L'] = array();
+                                                               }
+                                                       }
+                                                       if (isset($brd_styles[1])) {
+                                                               $dom[$key]['border']['R']['cap'] = 'square';
+                                                               $dom[$key]['border']['R']['join'] = 'miter';
+                                                               $dom[$key]['border']['R']['dash'] = $this->getCSSBorderDashStyle($brd_styles[1]);
+                                                               if ($dom[$key]['border']['R']['dash'] < 0) {
+                                                                       $dom[$key]['border']['R'] = array();
+                                                               }
+                                                       }
+                                                       if (isset($brd_styles[0])) {
+                                                               $dom[$key]['border']['T']['cap'] = 'square';
+                                                               $dom[$key]['border']['T']['join'] = 'miter';
+                                                               $dom[$key]['border']['T']['dash'] = $this->getCSSBorderDashStyle($brd_styles[0]);
+                                                               if ($dom[$key]['border']['T']['dash'] < 0) {
+                                                                       $dom[$key]['border']['T'] = array();
+                                                               }
+                                                       }
+                                                       if (isset($brd_styles[2])) {
+                                                               $dom[$key]['border']['B']['cap'] = 'square';
+                                                               $dom[$key]['border']['B']['join'] = 'miter';
+                                                               $dom[$key]['border']['B']['dash'] = $this->getCSSBorderDashStyle($brd_styles[2]);
+                                                               if ($dom[$key]['border']['B']['dash'] < 0) {
+                                                                       $dom[$key]['border']['B'] = array();
+                                                               }
+                                                       }
+                                               }
+                                               $cellside = array('L' => 'left', 'R' => 'right', 'T' => 'top', 'B' => 'bottom');
+                                               foreach ($cellside as $bsk => $bsv) {
+                                                       if (isset($dom[$key]['style']['border-'.$bsv])) {
+                                                               $borderstyle = $this->getCSSBorderStyle($dom[$key]['style']['border-'.$bsv]);
+                                                               if (!empty($borderstyle)) {
+                                                                       $dom[$key]['border'][$bsk] = $borderstyle;
+                                                               }
+                                                       }
+                                                       if (isset($dom[$key]['style']['border-'.$bsv.'-color'])) {
+                                                               $dom[$key]['border'][$bsk]['color'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['style']['border-'.$bsv.'-color'], $this->spot_colors);
+                                                       }
+                                                       if (isset($dom[$key]['style']['border-'.$bsv.'-width'])) {
+                                                               $dom[$key]['border'][$bsk]['width'] = $this->getCSSBorderWidth($dom[$key]['style']['border-'.$bsv.'-width']);
+                                                       }
+                                                       if (isset($dom[$key]['style']['border-'.$bsv.'-style'])) {
+                                                               $dom[$key]['border'][$bsk]['dash'] = $this->getCSSBorderDashStyle($dom[$key]['style']['border-'.$bsv.'-style']);
+                                                               if ($dom[$key]['border'][$bsk]['dash'] < 0) {
+                                                                       $dom[$key]['border'][$bsk] = array();
+                                                               }
+                                                       }
+                                               }
+                                               // check for CSS padding properties
+                                               if (isset($dom[$key]['style']['padding'])) {
+                                                       $dom[$key]['padding'] = $this->getCSSPadding($dom[$key]['style']['padding']);
+                                               } else {
+                                                       $dom[$key]['padding'] = $this->cell_padding;
+                                               }
+                                               foreach ($cellside as $psk => $psv) {
+                                                       if (isset($dom[$key]['style']['padding-'.$psv])) {
+                                                               $dom[$key]['padding'][$psk] = $this->getHTMLUnitToUnits($dom[$key]['style']['padding-'.$psv], 0, 'px', false);
+                                                       }
+                                               }
+                                               // check for CSS margin properties
+                                               if (isset($dom[$key]['style']['margin'])) {
+                                                       $dom[$key]['margin'] = $this->getCSSMargin($dom[$key]['style']['margin']);
+                                               } else {
+                                                       $dom[$key]['margin'] = $this->cell_margin;
+                                               }
+                                               foreach ($cellside as $psk => $psv) {
+                                                       if (isset($dom[$key]['style']['margin-'.$psv])) {
+                                                               $dom[$key]['margin'][$psk] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $dom[$key]['style']['margin-'.$psv]), 0, 'px', false);
+                                                       }
+                                               }
+                                               // check for CSS border-spacing properties
+                                               if (isset($dom[$key]['style']['border-spacing'])) {
+                                                       $dom[$key]['border-spacing'] = $this->getCSSBorderMargin($dom[$key]['style']['border-spacing']);
+                                               }
+                                               // page-break-inside
+                                               if (isset($dom[$key]['style']['page-break-inside']) AND ($dom[$key]['style']['page-break-inside'] == 'avoid')) {
+                                                       $dom[$key]['attribute']['nobr'] = 'true';
+                                               }
+                                               // page-break-before
+                                               if (isset($dom[$key]['style']['page-break-before'])) {
+                                                       if ($dom[$key]['style']['page-break-before'] == 'always') {
+                                                               $dom[$key]['attribute']['pagebreak'] = 'true';
+                                                       } elseif ($dom[$key]['style']['page-break-before'] == 'left') {
+                                                               $dom[$key]['attribute']['pagebreak'] = 'left';
+                                                       } elseif ($dom[$key]['style']['page-break-before'] == 'right') {
+                                                               $dom[$key]['attribute']['pagebreak'] = 'right';
+                                                       }
+                                               }
+                                               // page-break-after
+                                               if (isset($dom[$key]['style']['page-break-after'])) {
+                                                       if ($dom[$key]['style']['page-break-after'] == 'always') {
+                                                               $dom[$key]['attribute']['pagebreakafter'] = 'true';
+                                                       } elseif ($dom[$key]['style']['page-break-after'] == 'left') {
+                                                               $dom[$key]['attribute']['pagebreakafter'] = 'left';
+                                                       } elseif ($dom[$key]['style']['page-break-after'] == 'right') {
+                                                               $dom[$key]['attribute']['pagebreakafter'] = 'right';
+                                                       }
+                                               }
+                                       }
+                                       if (isset($dom[$key]['attribute']['display'])) {
+                                               $dom[$key]['hide'] = (trim(strtolower($dom[$key]['attribute']['display'])) == 'none');
+                                       }
+                                       if (isset($dom[$key]['attribute']['border']) AND ($dom[$key]['attribute']['border'] != 0)) {
+                                               $borderstyle = $this->getCSSBorderStyle($dom[$key]['attribute']['border'].' solid black');
+                                               if (!empty($borderstyle)) {
+                                                       $dom[$key]['border']['LTRB'] = $borderstyle;
+                                               }
+                                       }
+                                       // check for font tag
+                                       if ($dom[$key]['value'] == 'font') {
+                                               // font family
+                                               if (isset($dom[$key]['attribute']['face'])) {
+                                                       $dom[$key]['fontname'] = $this->getFontFamilyName($dom[$key]['attribute']['face']);
+                                               }
+                                               // font size
+                                               if (isset($dom[$key]['attribute']['size'])) {
+                                                       if ($key > 0) {
+                                                               if ($dom[$key]['attribute']['size'][0] == '+') {
+                                                                       $dom[$key]['fontsize'] = $dom[($dom[$key]['parent'])]['fontsize'] + intval(substr($dom[$key]['attribute']['size'], 1));
+                                                               } elseif ($dom[$key]['attribute']['size'][0] == '-') {
+                                                                       $dom[$key]['fontsize'] = $dom[($dom[$key]['parent'])]['fontsize'] - intval(substr($dom[$key]['attribute']['size'], 1));
+                                                               } else {
+                                                                       $dom[$key]['fontsize'] = intval($dom[$key]['attribute']['size']);
+                                                               }
+                                                       } else {
+                                                               $dom[$key]['fontsize'] = intval($dom[$key]['attribute']['size']);
+                                                       }
+                                               }
+                                       }
+                                       // force natural alignment for lists
+                                       if ((($dom[$key]['value'] == 'ul') OR ($dom[$key]['value'] == 'ol') OR ($dom[$key]['value'] == 'dl'))
+                                               AND (!isset($dom[$key]['align']) OR TCPDF_STATIC::empty_string($dom[$key]['align']) OR ($dom[$key]['align'] != 'J'))) {
+                                               if ($this->rtl) {
+                                                       $dom[$key]['align'] = 'R';
+                                               } else {
+                                                       $dom[$key]['align'] = 'L';
+                                               }
+                                       }
+                                       if (($dom[$key]['value'] == 'small') OR ($dom[$key]['value'] == 'sup') OR ($dom[$key]['value'] == 'sub')) {
+                                               if (!isset($dom[$key]['attribute']['size']) AND !isset($dom[$key]['style']['font-size'])) {
+                                                       $dom[$key]['fontsize'] = $dom[$key]['fontsize'] * K_SMALL_RATIO;
+                                               }
+                                       }
+                                       if (($dom[$key]['value'] == 'strong') OR ($dom[$key]['value'] == 'b')) {
+                                               $dom[$key]['fontstyle'] .= 'B';
+                                       }
+                                       if (($dom[$key]['value'] == 'em') OR ($dom[$key]['value'] == 'i')) {
+                                               $dom[$key]['fontstyle'] .= 'I';
+                                       }
+                                       if ($dom[$key]['value'] == 'u') {
+                                               $dom[$key]['fontstyle'] .= 'U';
+                                       }
+                                       if (($dom[$key]['value'] == 'del') OR ($dom[$key]['value'] == 's') OR ($dom[$key]['value'] == 'strike')) {
+                                               $dom[$key]['fontstyle'] .= 'D';
+                                       }
+                                       if (!isset($dom[$key]['style']['text-decoration']) AND ($dom[$key]['value'] == 'a')) {
+                                               $dom[$key]['fontstyle'] = $this->htmlLinkFontStyle;
+                                       }
+                                       if (($dom[$key]['value'] == 'pre') OR ($dom[$key]['value'] == 'tt')) {
+                                               $dom[$key]['fontname'] = $this->default_monospaced_font;
+                                       }
+                                       if (!empty($dom[$key]['value']) AND ($dom[$key]['value'][0] == 'h') AND (intval($dom[$key]['value']{1}) > 0) AND (intval($dom[$key]['value']{1}) < 7)) {
+                                               // headings h1, h2, h3, h4, h5, h6
+                                               if (!isset($dom[$key]['attribute']['size']) AND !isset($dom[$key]['style']['font-size'])) {
+                                                       $headsize = (4 - intval($dom[$key]['value']{1})) * 2;
+                                                       $dom[$key]['fontsize'] = $dom[0]['fontsize'] + $headsize;
+                                               }
+                                               if (!isset($dom[$key]['style']['font-weight'])) {
+                                                       $dom[$key]['fontstyle'] .= 'B';
+                                               }
+                                       }
+                                       if (($dom[$key]['value'] == 'table')) {
+                                               $dom[$key]['rows'] = 0; // number of rows
+                                               $dom[$key]['trids'] = array(); // IDs of TR elements
+                                               $dom[$key]['thead'] = ''; // table header rows
+                                       }
+                                       if (($dom[$key]['value'] == 'tr')) {
+                                               $dom[$key]['cols'] = 0;
+                                               if ($thead) {
+                                                       $dom[$key]['thead'] = true;
+                                                       // rows on thead block are printed as a separate table
+                                               } else {
+                                                       $dom[$key]['thead'] = false;
+                                                       // store the number of rows on table element
+                                                       ++$dom[($dom[$key]['parent'])]['rows'];
+                                                       // store the TR elements IDs on table element
+                                                       array_push($dom[($dom[$key]['parent'])]['trids'], $key);
+                                               }
+                                       }
+                                       if (($dom[$key]['value'] == 'th') OR ($dom[$key]['value'] == 'td')) {
+                                               if (isset($dom[$key]['attribute']['colspan'])) {
+                                                       $colspan = intval($dom[$key]['attribute']['colspan']);
+                                               } else {
+                                                       $colspan = 1;
+                                               }
+                                               $dom[$key]['attribute']['colspan'] = $colspan;
+                                               $dom[($dom[$key]['parent'])]['cols'] += $colspan;
+                                       }
+                                       // text direction
+                                       if (isset($dom[$key]['attribute']['dir'])) {
+                                               $dom[$key]['dir'] = $dom[$key]['attribute']['dir'];
+                                       }
+                                       // set foreground color attribute
+                                       if (isset($dom[$key]['attribute']['color']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['color']))) {
+                                               $dom[$key]['fgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['attribute']['color'], $this->spot_colors);
+                                       } elseif (!isset($dom[$key]['style']['color']) AND ($dom[$key]['value'] == 'a')) {
+                                               $dom[$key]['fgcolor'] = $this->htmlLinkColorArray;
+                                       }
+                                       // set background color attribute
+                                       if (isset($dom[$key]['attribute']['bgcolor']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['bgcolor']))) {
+                                               $dom[$key]['bgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['attribute']['bgcolor'], $this->spot_colors);
+                                       }
+                                       // set stroke color attribute
+                                       if (isset($dom[$key]['attribute']['strokecolor']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['strokecolor']))) {
+                                               $dom[$key]['strokecolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['attribute']['strokecolor'], $this->spot_colors);
+                                       }
+                                       // check for width attribute
+                                       if (isset($dom[$key]['attribute']['width'])) {
+                                               $dom[$key]['width'] = $dom[$key]['attribute']['width'];
+                                       }
+                                       // check for height attribute
+                                       if (isset($dom[$key]['attribute']['height'])) {
+                                               $dom[$key]['height'] = $dom[$key]['attribute']['height'];
+                                       }
+                                       // check for text alignment
+                                       if (isset($dom[$key]['attribute']['align']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['align'])) AND ($dom[$key]['value'] !== 'img')) {
+                                               $dom[$key]['align'] = strtoupper($dom[$key]['attribute']['align'][0]);
+                                       }
+                                       // check for text rendering mode (the following attributes do not exist in HTML)
+                                       if (isset($dom[$key]['attribute']['stroke'])) {
+                                               // font stroke width
+                                               $dom[$key]['stroke'] = $this->getHTMLUnitToUnits($dom[$key]['attribute']['stroke'], $dom[$key]['fontsize'], 'pt', true);
+                                       }
+                                       if (isset($dom[$key]['attribute']['fill'])) {
+                                               // font fill
+                                               if ($dom[$key]['attribute']['fill'] == 'true') {
+                                                       $dom[$key]['fill'] = true;
+                                               } else {
+                                                       $dom[$key]['fill'] = false;
+                                               }
+                                       }
+                                       if (isset($dom[$key]['attribute']['clip'])) {
+                                               // clipping mode
+                                               if ($dom[$key]['attribute']['clip'] == 'true') {
+                                                       $dom[$key]['clip'] = true;
+                                               } else {
+                                                       $dom[$key]['clip'] = false;
+                                               }
+                                       }
+                               } // end opening tag
+                       } else {
+                               // text
+                               $dom[$key]['tag'] = false;
+                               $dom[$key]['block'] = false;
+                               $dom[$key]['parent'] = end($level);
+                               $dom[$key]['dir'] = $dom[$dom[$key]['parent']]['dir'];
+                               if (!empty($dom[$dom[$key]['parent']]['text-transform'])) {
+                                       // text-transform for unicode requires mb_convert_case (Multibyte String Functions)
+                                       if (function_exists('mb_convert_case')) {
+                                               $ttm = array('capitalize' => MB_CASE_TITLE, 'uppercase' => MB_CASE_UPPER, 'lowercase' => MB_CASE_LOWER);
+                                               if (isset($ttm[$dom[$dom[$key]['parent']]['text-transform']])) {
+                                                       $element = mb_convert_case($element, $ttm[$dom[$dom[$key]['parent']]['text-transform']], $this->encoding);
+                                               }
+                                       } elseif (!$this->isunicode) {
+                                               switch ($dom[$dom[$key]['parent']]['text-transform']) {
+                                                       case 'capitalize': {
+                                                               $element = ucwords(strtolower($element));
+                                                               break;
+                                                       }
+                                                       case 'uppercase': {
+                                                               $element = strtoupper($element);
+                                                               break;
+                                                       }
+                                                       case 'lowercase': {
+                                                               $element = strtolower($element);
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                               }
+                               $dom[$key]['value'] = stripslashes($this->unhtmlentities($element));
+                       }
+                       ++$elkey;
+                       ++$key;
+               }
+               return $dom;
+       }
+
+       /**
+        * Returns the string used to find spaces
+        * @return string
+        * @protected
+        * @author Nicola Asuni
+        * @since 4.8.024 (2010-01-15)
+        */
+       protected function getSpaceString() {
+               $spacestr = chr(32);
+               if ($this->isUnicodeFont()) {
+                       $spacestr = chr(0).chr(32);
+               }
+               return $spacestr;
+       }
+
+       /**
+        * Serialize an array of parameters to be used with TCPDF tag in HTML code.
+        * @param $pararray (array) parameters array
+        * @return sting containing serialized data
+        * @since 4.9.006 (2010-04-02)
+        * @public
+        * @deprecated
+        */
+       public function serializeTCPDFtagParameters($pararray) {
+               return TCPDF_STATIC::serializeTCPDFtagParameters($pararray);
+       }
+
+       /**
+        * Prints a cell (rectangular area) with optional borders, background color and html text string.
+        * The upper-left corner of the cell corresponds to the current position. After the call, the current position moves to the right or to the next line.<br />
+        * If automatic page breaking is enabled and the cell goes beyond the limit, a page break is done before outputting.
+        * IMPORTANT: The HTML must be well formatted - try to clean-up it using an application like HTML-Tidy before submitting.
+        * Supported tags are: a, b, blockquote, br, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, img, li, ol, p, pre, small, span, strong, sub, sup, table, tcpdf, td, th, thead, tr, tt, u, ul
+        * NOTE: all the HTML attributes must be enclosed in double-quote.
+        * @param $w (float) Cell width. If 0, the cell extends up to the right margin.
+        * @param $h (float) Cell minimum height. The cell extends automatically if needed.
+        * @param $x (float) upper-left corner X coordinate
+        * @param $y (float) upper-left corner Y coordinate
+        * @param $html (string) html text to print. Default value: empty string.
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $ln (int) Indicates where the current position should go after the call. Possible values are:<ul><li>0: to the right (or left for RTL language)</li><li>1: to the beginning of the next line</li><li>2: below</li></ul>
+Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0.
+        * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false).
+        * @param $reseth (boolean) if true reset the last cell height (default true).
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width.
+        * @see Multicell(), writeHTML()
+        * @public
+        */
+       public function writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true) {
+               return $this->MultiCell($w, $h, $html, $border, $align, $fill, $ln, $x, $y, $reseth, 0, true, $autopadding, 0, 'T', false);
+       }
+
+       /**
+        * Allows to preserve some HTML formatting (limited support).<br />
+        * IMPORTANT: The HTML must be well formatted - try to clean-up it using an application like HTML-Tidy before submitting.
+        * Supported tags are: a, b, blockquote, br, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, img, li, ol, p, pre, small, span, strong, sub, sup, table, tcpdf, td, th, thead, tr, tt, u, ul
+        * NOTE: all the HTML attributes must be enclosed in double-quote.
+        * @param $html (string) text to display
+        * @param $ln (boolean) if true add a new line after text (default = true)
+        * @param $fill (boolean) Indicates if the background must be painted (true) or transparent (false).
+        * @param $reseth (boolean) if true reset the last cell height (default false).
+        * @param $cell (boolean) if true add the current left (or right for RTL) padding to each Write (default false).
+        * @param $align (string) Allows to center or align the text. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @public
+        */
+       public function writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='') {
+               $gvars = $this->getGraphicVars();
+               // store current values
+               $prev_cell_margin = $this->cell_margin;
+               $prev_cell_padding = $this->cell_padding;
+               $prevPage = $this->page;
+               $prevlMargin = $this->lMargin;
+               $prevrMargin = $this->rMargin;
+               $curfontname = $this->FontFamily;
+               $curfontstyle = $this->FontStyle;
+               $curfontsize = $this->FontSizePt;
+               $curfontascent = $this->getFontAscent($curfontname, $curfontstyle, $curfontsize);
+               $curfontdescent = $this->getFontDescent($curfontname, $curfontstyle, $curfontsize);
+               $curfontstretcing = $this->font_stretching;
+               $curfonttracking = $this->font_spacing;
+               $this->newline = true;
+               $newline = true;
+               $startlinepage = $this->page;
+               $minstartliney = $this->y;
+               $maxbottomliney = 0;
+               $startlinex = $this->x;
+               $startliney = $this->y;
+               $yshift = 0;
+               $loop = 0;
+               $curpos = 0;
+               $this_method_vars = array();
+               $undo = false;
+               $fontaligned = false;
+               $reverse_dir = false; // true when the text direction is reversed
+               $this->premode = false;
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $pask = count($this->xobjects[$this->xobjid]['annotations']);
+               } elseif (isset($this->PageAnnots[$this->page])) {
+                       $pask = count($this->PageAnnots[$this->page]);
+               } else {
+                       $pask = 0;
+               }
+               if ($this->inxobj) {
+                       // we are inside an XObject template
+                       $startlinepos = strlen($this->xobjects[$this->xobjid]['outdata']);
+               } elseif (!$this->InFooter) {
+                       if (isset($this->footerlen[$this->page])) {
+                               $this->footerpos[$this->page] = $this->pagelen[$this->page] - $this->footerlen[$this->page];
+                       } else {
+                               $this->footerpos[$this->page] = $this->pagelen[$this->page];
+                       }
+                       $startlinepos = $this->footerpos[$this->page];
+               } else {
+                       // we are inside the footer
+                       $startlinepos = $this->pagelen[$this->page];
+               }
+               $lalign = $align;
+               $plalign = $align;
+               if ($this->rtl) {
+                       $w = $this->x - $this->lMargin;
+               } else {
+                       $w = $this->w - $this->rMargin - $this->x;
+               }
+               $w -= ($this->cell_padding['L'] + $this->cell_padding['R']);
+               if ($cell) {
+                       if ($this->rtl) {
+                               $this->x -= $this->cell_padding['R'];
+                               $this->lMargin += $this->cell_padding['R'];
+                       } else {
+                               $this->x += $this->cell_padding['L'];
+                               $this->rMargin += $this->cell_padding['L'];
+                       }
+               }
+               if ($this->customlistindent >= 0) {
+                       $this->listindent = $this->customlistindent;
+               } else {
+                       $this->listindent = $this->GetStringWidth('000000');
+               }
+               $this->listindentlevel = 0;
+               // save previous states
+               $prev_cell_height_ratio = $this->cell_height_ratio;
+               $prev_listnum = $this->listnum;
+               $prev_listordered = $this->listordered;
+               $prev_listcount = $this->listcount;
+               $prev_lispacer = $this->lispacer;
+               $this->listnum = 0;
+               $this->listordered = array();
+               $this->listcount = array();
+               $this->lispacer = '';
+               if ((TCPDF_STATIC::empty_string($this->lasth)) OR ($reseth)) {
+                       // reset row height
+                       $this->resetLastH();
+               }
+               $dom = $this->getHtmlDomArray($html);
+               $maxel = count($dom);
+               $key = 0;
+               while ($key < $maxel) {
+                       if ($dom[$key]['tag'] AND $dom[$key]['opening'] AND $dom[$key]['hide']) {
+                               // store the node key
+                               $hidden_node_key = $key;
+                               if ($dom[$key]['self']) {
+                                       // skip just this self-closing tag
+                                       ++$key;
+                               } else {
+                                       // skip this and all children tags
+                                       while (($key < $maxel) AND (!$dom[$key]['tag'] OR $dom[$key]['opening'] OR ($dom[$key]['parent'] != $hidden_node_key))) {
+                                               // skip hidden objects
+                                               ++$key;
+                                       }
+                                       ++$key;
+                               }
+                       }
+                       if ($dom[$key]['tag'] AND isset($dom[$key]['attribute']['pagebreak'])) {
+                               // check for pagebreak
+                               if (($dom[$key]['attribute']['pagebreak'] == 'true') OR ($dom[$key]['attribute']['pagebreak'] == 'left') OR ($dom[$key]['attribute']['pagebreak'] == 'right')) {
+                                       // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                                       $this->checkPageBreak($this->PageBreakTrigger + 1);
+                                       $this->htmlvspace = ($this->PageBreakTrigger + 1);
+                               }
+                               if ((($dom[$key]['attribute']['pagebreak'] == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0))))
+                                       OR (($dom[$key]['attribute']['pagebreak'] == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) {
+                                       // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                                       $this->checkPageBreak($this->PageBreakTrigger + 1);
+                                       $this->htmlvspace = ($this->PageBreakTrigger + 1);
+                               }
+                       }
+                       if ($dom[$key]['tag'] AND $dom[$key]['opening'] AND isset($dom[$key]['attribute']['nobr']) AND ($dom[$key]['attribute']['nobr'] == 'true')) {
+                               if (isset($dom[($dom[$key]['parent'])]['attribute']['nobr']) AND ($dom[($dom[$key]['parent'])]['attribute']['nobr'] == 'true')) {
+                                       $dom[$key]['attribute']['nobr'] = false;
+                               } else {
+                                       // store current object
+                                       $this->startTransaction();
+                                       // save this method vars
+                                       $this_method_vars['html'] = $html;
+                                       $this_method_vars['ln'] = $ln;
+                                       $this_method_vars['fill'] = $fill;
+                                       $this_method_vars['reseth'] = $reseth;
+                                       $this_method_vars['cell'] = $cell;
+                                       $this_method_vars['align'] = $align;
+                                       $this_method_vars['gvars'] = $gvars;
+                                       $this_method_vars['prevPage'] = $prevPage;
+                                       $this_method_vars['prev_cell_margin'] = $prev_cell_margin;
+                                       $this_method_vars['prev_cell_padding'] = $prev_cell_padding;
+                                       $this_method_vars['prevlMargin'] = $prevlMargin;
+                                       $this_method_vars['prevrMargin'] = $prevrMargin;
+                                       $this_method_vars['curfontname'] = $curfontname;
+                                       $this_method_vars['curfontstyle'] = $curfontstyle;
+                                       $this_method_vars['curfontsize'] = $curfontsize;
+                                       $this_method_vars['curfontascent'] = $curfontascent;
+                                       $this_method_vars['curfontdescent'] = $curfontdescent;
+                                       $this_method_vars['curfontstretcing'] = $curfontstretcing;
+                                       $this_method_vars['curfonttracking'] = $curfonttracking;
+                                       $this_method_vars['minstartliney'] = $minstartliney;
+                                       $this_method_vars['maxbottomliney'] = $maxbottomliney;
+                                       $this_method_vars['yshift'] = $yshift;
+                                       $this_method_vars['startlinepage'] = $startlinepage;
+                                       $this_method_vars['startlinepos'] = $startlinepos;
+                                       $this_method_vars['startlinex'] = $startlinex;
+                                       $this_method_vars['startliney'] = $startliney;
+                                       $this_method_vars['newline'] = $newline;
+                                       $this_method_vars['loop'] = $loop;
+                                       $this_method_vars['curpos'] = $curpos;
+                                       $this_method_vars['pask'] = $pask;
+                                       $this_method_vars['lalign'] = $lalign;
+                                       $this_method_vars['plalign'] = $plalign;
+                                       $this_method_vars['w'] = $w;
+                                       $this_method_vars['prev_cell_height_ratio'] = $prev_cell_height_ratio;
+                                       $this_method_vars['prev_listnum'] = $prev_listnum;
+                                       $this_method_vars['prev_listordered'] = $prev_listordered;
+                                       $this_method_vars['prev_listcount'] = $prev_listcount;
+                                       $this_method_vars['prev_lispacer'] = $prev_lispacer;
+                                       $this_method_vars['fontaligned'] = $fontaligned;
+                                       $this_method_vars['key'] = $key;
+                                       $this_method_vars['dom'] = $dom;
+                               }
+                       }
+                       // print THEAD block
+                       if (($dom[$key]['value'] == 'tr') AND isset($dom[$key]['thead']) AND $dom[$key]['thead']) {
+                               if (isset($dom[$key]['parent']) AND isset($dom[$dom[$key]['parent']]['thead']) AND !TCPDF_STATIC::empty_string($dom[$dom[$key]['parent']]['thead'])) {
+                                       $this->inthead = true;
+                                       // print table header (thead)
+                                       $this->writeHTML($this->thead, false, false, false, false, '');
+                                       // check if we are on a new page or on a new column
+                                       if (($this->y < $this->start_transaction_y) OR ($this->checkPageBreak($this->lasth, '', false))) {
+                                               // we are on a new page or on a new column and the total object height is less than the available vertical space.
+                                               // restore previous object
+                                               $this->rollbackTransaction(true);
+                                               // restore previous values
+                                               foreach ($this_method_vars as $vkey => $vval) {
+                                                       $$vkey = $vval;
+                                               }
+                                               // disable table header
+                                               $tmp_thead = $this->thead;
+                                               $this->thead = '';
+                                               // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                                               $pre_y = $this->y;
+                                               if ((!$this->checkPageBreak($this->PageBreakTrigger + 1)) AND ($this->y < $pre_y)) {
+                                                       // fix for multicolumn mode
+                                                       $startliney = $this->y;
+                                               }
+                                               $this->start_transaction_page = $this->page;
+                                               $this->start_transaction_y = $this->y;
+                                               // restore table header
+                                               $this->thead = $tmp_thead;
+                                               // fix table border properties
+                                               if (isset($dom[$dom[$key]['parent']]['attribute']['cellspacing'])) {
+                                                       $tmp_cellspacing = $this->getHTMLUnitToUnits($dom[$dom[$key]['parent']]['attribute']['cellspacing'], 1, 'px');
+                                               } elseif (isset($dom[$dom[$key]['parent']]['border-spacing'])) {
+                                                       $tmp_cellspacing = $dom[$dom[$key]['parent']]['border-spacing']['V'];
+                                               } else {
+                                                       $tmp_cellspacing = 0;
+                                               }
+                                               $dom[$dom[$key]['parent']]['borderposition']['page'] = $this->page;
+                                               $dom[$dom[$key]['parent']]['borderposition']['column'] = $this->current_column;
+                                               $dom[$dom[$key]['parent']]['borderposition']['y'] = $this->y + $tmp_cellspacing;
+                                               $xoffset = ($this->x - $dom[$dom[$key]['parent']]['borderposition']['x']);
+                                               $dom[$dom[$key]['parent']]['borderposition']['x'] += $xoffset;
+                                               $dom[$dom[$key]['parent']]['borderposition']['xmax'] += $xoffset;
+                                               // print table header (thead)
+                                               $this->writeHTML($this->thead, false, false, false, false, '');
+                                       }
+                               }
+                               // move $key index forward to skip THEAD block
+                               while ( ($key < $maxel) AND (!(
+                                       ($dom[$key]['tag'] AND $dom[$key]['opening'] AND ($dom[$key]['value'] == 'tr') AND (!isset($dom[$key]['thead']) OR !$dom[$key]['thead']))
+                                       OR ($dom[$key]['tag'] AND (!$dom[$key]['opening']) AND ($dom[$key]['value'] == 'table'))) )) {
+                                       ++$key;
+                               }
+                       }
+                       if ($dom[$key]['tag'] OR ($key == 0)) {
+                               if ((($dom[$key]['value'] == 'table') OR ($dom[$key]['value'] == 'tr')) AND (isset($dom[$key]['align']))) {
+                                       $dom[$key]['align'] = ($this->rtl) ? 'R' : 'L';
+                               }
+                               // vertically align image in line
+                               if ((!$this->newline) AND ($dom[$key]['value'] == 'img') AND (isset($dom[$key]['height'])) AND ($dom[$key]['height'] > 0)) {
+                                       // get image height
+                                       $imgh = $this->getHTMLUnitToUnits($dom[$key]['height'], ($dom[$key]['fontsize'] / $this->k), 'px');
+                                       $autolinebreak = false;
+                                       if (!empty($dom[$key]['width'])) {
+                                               $imgw = $this->getHTMLUnitToUnits($dom[$key]['width'], ($dom[$key]['fontsize'] / $this->k), 'px', false);
+                                               if (($imgw <= ($this->w - $this->lMargin - $this->rMargin - $this->cell_padding['L'] - $this->cell_padding['R']))
+                                                       AND ((($this->rtl) AND (($this->x - $imgw) < ($this->lMargin + $this->cell_padding['L'])))
+                                                       OR ((!$this->rtl) AND (($this->x + $imgw) > ($this->w - $this->rMargin - $this->cell_padding['R']))))) {
+                                                       // add automatic line break
+                                                       $autolinebreak = true;
+                                                       $this->Ln('', $cell);
+                                                       if ((!$dom[($key-1)]['tag']) AND ($dom[($key-1)]['value'] == ' ')) {
+                                                               // go back to evaluate this line break
+                                                               --$key;
+                                                       }
+                                               }
+                                       }
+                                       if (!$autolinebreak) {
+                                               if ($this->inPageBody()) {
+                                                       $pre_y = $this->y;
+                                                       // check for page break
+                                                       if ((!$this->checkPageBreak($imgh)) AND ($this->y < $pre_y)) {
+                                                               // fix for multicolumn mode
+                                                               $startliney = $this->y;
+                                                       }
+                                               }
+                                               if ($this->page > $startlinepage) {
+                                                       // fix line splitted over two pages
+                                                       if (isset($this->footerlen[$startlinepage])) {
+                                                               $curpos = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage];
+                                                       }
+                                                       // line to be moved one page forward
+                                                       $pagebuff = $this->getPageBuffer($startlinepage);
+                                                       $linebeg = substr($pagebuff, $startlinepos, ($curpos - $startlinepos));
+                                                       $tstart = substr($pagebuff, 0, $startlinepos);
+                                                       $tend = substr($this->getPageBuffer($startlinepage), $curpos);
+                                                       // remove line from previous page
+                                                       $this->setPageBuffer($startlinepage, $tstart.''.$tend);
+                                                       $pagebuff = $this->getPageBuffer($this->page);
+                                                       $tstart = substr($pagebuff, 0, $this->cntmrk[$this->page]);
+                                                       $tend = substr($pagebuff, $this->cntmrk[$this->page]);
+                                                       // add line start to current page
+                                                       $yshift = ($minstartliney - $this->y);
+                                                       if ($fontaligned) {
+                                                               $yshift += ($curfontsize / $this->k);
+                                                       }
+                                                       $try = sprintf('1 0 0 1 0 %F cm', ($yshift * $this->k));
+                                                       $this->setPageBuffer($this->page, $tstart."\nq\n".$try."\n".$linebeg."\nQ\n".$tend);
+                                                       // shift the annotations and links
+                                                       if (isset($this->PageAnnots[$this->page])) {
+                                                               $next_pask = count($this->PageAnnots[$this->page]);
+                                                       } else {
+                                                               $next_pask = 0;
+                                                       }
+                                                       if (isset($this->PageAnnots[$startlinepage])) {
+                                                               foreach ($this->PageAnnots[$startlinepage] as $pak => $pac) {
+                                                                       if ($pak >= $pask) {
+                                                                               $this->PageAnnots[$this->page][] = $pac;
+                                                                               unset($this->PageAnnots[$startlinepage][$pak]);
+                                                                               $npak = count($this->PageAnnots[$this->page]) - 1;
+                                                                               $this->PageAnnots[$this->page][$npak]['y'] -= $yshift;
+                                                                       }
+                                                               }
+                                                       }
+                                                       $pask = $next_pask;
+                                                       $startlinepos = $this->cntmrk[$this->page];
+                                                       $startlinepage = $this->page;
+                                                       $startliney = $this->y;
+                                                       $this->newline = false;
+                                               }
+                                               $this->y += ($this->getCellHeight($curfontsize / $this->k) - ($curfontdescent * $this->cell_height_ratio) - $imgh);
+                                               $minstartliney = min($this->y, $minstartliney);
+                                               $maxbottomliney = ($startliney + $this->getCellHeight($curfontsize / $this->k));
+                                       }
+                               } elseif (isset($dom[$key]['fontname']) OR isset($dom[$key]['fontstyle']) OR isset($dom[$key]['fontsize']) OR isset($dom[$key]['line-height'])) {
+                                       // account for different font size
+                                       $pfontname = $curfontname;
+                                       $pfontstyle = $curfontstyle;
+                                       $pfontsize = $curfontsize;
+                                       $fontname = (isset($dom[$key]['fontname']) ? $dom[$key]['fontname'] : $curfontname);
+                                       $fontstyle = (isset($dom[$key]['fontstyle']) ? $dom[$key]['fontstyle'] : $curfontstyle);
+                                       $fontsize = (isset($dom[$key]['fontsize']) ? $dom[$key]['fontsize'] : $curfontsize);
+                                       $fontascent = $this->getFontAscent($fontname, $fontstyle, $fontsize);
+                                       $fontdescent = $this->getFontDescent($fontname, $fontstyle, $fontsize);
+                                       if (($fontname != $curfontname) OR ($fontstyle != $curfontstyle) OR ($fontsize != $curfontsize)
+                                               OR ($this->cell_height_ratio != $dom[$key]['line-height'])
+                                               OR ($dom[$key]['tag'] AND $dom[$key]['opening'] AND ($dom[$key]['value'] == 'li')) ) {
+                                               if (($key < ($maxel - 1)) AND (
+                                                               ($dom[$key]['tag'] AND $dom[$key]['opening'] AND ($dom[$key]['value'] == 'li'))
+                                                               OR ($this->cell_height_ratio != $dom[$key]['line-height'])
+                                                               OR (!$this->newline AND is_numeric($fontsize) AND is_numeric($curfontsize)
+                                                               AND ($fontsize >= 0) AND ($curfontsize >= 0)
+                                                               AND (($fontsize != $curfontsize) OR ($fontstyle != $curfontstyle) OR ($fontname != $curfontname)))
+                                                       )) {
+                                                       if ($this->page > $startlinepage) {
+                                                               // fix lines splitted over two pages
+                                                               if (isset($this->footerlen[$startlinepage])) {
+                                                                       $curpos = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage];
+                                                               }
+                                                               // line to be moved one page forward
+                                                               $pagebuff = $this->getPageBuffer($startlinepage);
+                                                               $linebeg = substr($pagebuff, $startlinepos, ($curpos - $startlinepos));
+                                                               $tstart = substr($pagebuff, 0, $startlinepos);
+                                                               $tend = substr($this->getPageBuffer($startlinepage), $curpos);
+                                                               // remove line start from previous page
+                                                               $this->setPageBuffer($startlinepage, $tstart.''.$tend);
+                                                               $pagebuff = $this->getPageBuffer($this->page);
+                                                               $tstart = substr($pagebuff, 0, $this->cntmrk[$this->page]);
+                                                               $tend = substr($pagebuff, $this->cntmrk[$this->page]);
+                                                               // add line start to current page
+                                                               $yshift = ($minstartliney - $this->y);
+                                                               $try = sprintf('1 0 0 1 0 %F cm', ($yshift * $this->k));
+                                                               $this->setPageBuffer($this->page, $tstart."\nq\n".$try."\n".$linebeg."\nQ\n".$tend);
+                                                               // shift the annotations and links
+                                                               if (isset($this->PageAnnots[$this->page])) {
+                                                                       $next_pask = count($this->PageAnnots[$this->page]);
+                                                               } else {
+                                                                       $next_pask = 0;
+                                                               }
+                                                               if (isset($this->PageAnnots[$startlinepage])) {
+                                                                       foreach ($this->PageAnnots[$startlinepage] as $pak => $pac) {
+                                                                               if ($pak >= $pask) {
+                                                                                       $this->PageAnnots[$this->page][] = $pac;
+                                                                                       unset($this->PageAnnots[$startlinepage][$pak]);
+                                                                                       $npak = count($this->PageAnnots[$this->page]) - 1;
+                                                                                       $this->PageAnnots[$this->page][$npak]['y'] -= $yshift;
+                                                                               }
+                                                                       }
+                                                               }
+                                                               $pask = $next_pask;
+                                                               $startlinepos = $this->cntmrk[$this->page];
+                                                               $startlinepage = $this->page;
+                                                               $startliney = $this->y;
+                                                       }
+                                                       if (!isset($dom[$key]['line-height'])) {
+                                                               $dom[$key]['line-height'] = $this->cell_height_ratio;
+                                                       }
+                                                       if (!$dom[$key]['block']) {
+                                                               if (!(isset($dom[($key + 1)]) AND $dom[($key + 1)]['tag'] AND (!$dom[($key + 1)]['opening']) AND ($dom[($key + 1)]['value'] != 'li') AND $dom[$key]['tag'] AND (!$dom[$key]['opening']))) {
+                                                                       $this->y += (((($curfontsize * $this->cell_height_ratio) - ($fontsize * $dom[$key]['line-height'])) / $this->k) + $curfontascent - $fontascent - $curfontdescent + $fontdescent) / 2;
+                                                               }
+                                                               if (($dom[$key]['value'] != 'sup') AND ($dom[$key]['value'] != 'sub')) {
+                                                                       $current_line_align_data = array($key, $minstartliney, $maxbottomliney);
+                                                                       if (isset($line_align_data) AND (($line_align_data[0] == ($key - 1)) OR (($line_align_data[0] == ($key - 2)) AND (isset($dom[($key - 1)])) AND (preg_match('/^([\s]+)$/', $dom[($key - 1)]['value']) > 0)))) {
+                                                                               $minstartliney = min($this->y, $line_align_data[1]);
+                                                                               $maxbottomliney = max(($this->y + $this->getCellHeight($fontsize / $this->k)), $line_align_data[2]);
+                                                                       } else {
+                                                                               $minstartliney = min($this->y, $minstartliney);
+                                                                               $maxbottomliney = max(($this->y + $this->getCellHeight($fontsize / $this->k)), $maxbottomliney);
+                                                                       }
+                                                                       $line_align_data = $current_line_align_data;
+                                                               }
+                                                       }
+                                                       $this->cell_height_ratio = $dom[$key]['line-height'];
+                                                       $fontaligned = true;
+                                               }
+                                               $this->SetFont($fontname, $fontstyle, $fontsize);
+                                               // reset row height
+                                               $this->resetLastH();
+                                               $curfontname = $fontname;
+                                               $curfontstyle = $fontstyle;
+                                               $curfontsize = $fontsize;
+                                               $curfontascent = $fontascent;
+                                               $curfontdescent = $fontdescent;
+                                       }
+                               }
+                               // set text rendering mode
+                               $textstroke = isset($dom[$key]['stroke']) ? $dom[$key]['stroke'] : $this->textstrokewidth;
+                               $textfill = isset($dom[$key]['fill']) ? $dom[$key]['fill'] : (($this->textrendermode % 2) == 0);
+                               $textclip = isset($dom[$key]['clip']) ? $dom[$key]['clip'] : ($this->textrendermode > 3);
+                               $this->setTextRenderingMode($textstroke, $textfill, $textclip);
+                               if (isset($dom[$key]['font-stretch']) AND ($dom[$key]['font-stretch'] !== false)) {
+                                       $this->setFontStretching($dom[$key]['font-stretch']);
+                               }
+                               if (isset($dom[$key]['letter-spacing']) AND ($dom[$key]['letter-spacing'] !== false)) {
+                                       $this->setFontSpacing($dom[$key]['letter-spacing']);
+                               }
+                               if (($plalign == 'J') AND $dom[$key]['block']) {
+                                       $plalign = '';
+                               }
+                               // get current position on page buffer
+                               $curpos = $this->pagelen[$startlinepage];
+                               if (isset($dom[$key]['bgcolor']) AND ($dom[$key]['bgcolor'] !== false)) {
+                                       $this->SetFillColorArray($dom[$key]['bgcolor']);
+                                       $wfill = true;
+                               } else {
+                                       $wfill = $fill | false;
+                               }
+                               if (isset($dom[$key]['fgcolor']) AND ($dom[$key]['fgcolor'] !== false)) {
+                                       $this->SetTextColorArray($dom[$key]['fgcolor']);
+                               }
+                               if (isset($dom[$key]['strokecolor']) AND ($dom[$key]['strokecolor'] !== false)) {
+                                       $this->SetDrawColorArray($dom[$key]['strokecolor']);
+                               }
+                               if (isset($dom[$key]['align'])) {
+                                       $lalign = $dom[$key]['align'];
+                               }
+                               if (TCPDF_STATIC::empty_string($lalign)) {
+                                       $lalign = $align;
+                               }
+                       }
+                       // align lines
+                       if ($this->newline AND (strlen($dom[$key]['value']) > 0) AND ($dom[$key]['value'] != 'td') AND ($dom[$key]['value'] != 'th')) {
+                               $newline = true;
+                               $fontaligned = false;
+                               // we are at the beginning of a new line
+                               if (isset($startlinex)) {
+                                       $yshift = ($minstartliney - $startliney);
+                                       if (($yshift > 0) OR ($this->page > $startlinepage)) {
+                                               $yshift = 0;
+                                       }
+                                       $t_x = 0;
+                                       // the last line must be shifted to be aligned as requested
+                                       $linew = abs($this->endlinex - $startlinex);
+                                       if ($this->inxobj) {
+                                               // we are inside an XObject template
+                                               $pstart = substr($this->xobjects[$this->xobjid]['outdata'], 0, $startlinepos);
+                                               if (isset($opentagpos)) {
+                                                       $midpos = $opentagpos;
+                                               } else {
+                                                       $midpos = 0;
+                                               }
+                                               if ($midpos > 0) {
+                                                       $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos, ($midpos - $startlinepos));
+                                                       $pend = substr($this->xobjects[$this->xobjid]['outdata'], $midpos);
+                                               } else {
+                                                       $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos);
+                                                       $pend = '';
+                                               }
+                                       } else {
+                                               $pstart = substr($this->getPageBuffer($startlinepage), 0, $startlinepos);
+                                               if (isset($opentagpos) AND isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) {
+                                                       $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage];
+                                                       $midpos = min($opentagpos, $this->footerpos[$startlinepage]);
+                                               } elseif (isset($opentagpos)) {
+                                                       $midpos = $opentagpos;
+                                               } elseif (isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) {
+                                                       $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage];
+                                                       $midpos = $this->footerpos[$startlinepage];
+                                               } else {
+                                                       $midpos = 0;
+                                               }
+                                               if ($midpos > 0) {
+                                                       $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos, ($midpos - $startlinepos));
+                                                       $pend = substr($this->getPageBuffer($startlinepage), $midpos);
+                                               } else {
+                                                       $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos);
+                                                       $pend = '';
+                                               }
+                                       }
+                                       if ((isset($plalign) AND ((($plalign == 'C') OR ($plalign == 'J') OR (($plalign == 'R') AND (!$this->rtl)) OR (($plalign == 'L') AND ($this->rtl)))))) {
+                                               // calculate shifting amount
+                                               $tw = $w;
+                                               if (($plalign == 'J') AND $this->isRTLTextDir() AND ($this->num_columns > 1)) {
+                                                       $tw += $this->cell_padding['R'];
+                                               }
+                                               if ($this->lMargin != $prevlMargin) {
+                                                       $tw += ($prevlMargin - $this->lMargin);
+                                               }
+                                               if ($this->rMargin != $prevrMargin) {
+                                                       $tw += ($prevrMargin - $this->rMargin);
+                                               }
+                                               $one_space_width = $this->GetStringWidth(chr(32));
+                                               $no = 0; // number of spaces on a line contained on a single block
+                                               if ($this->isRTLTextDir()) { // RTL
+                                                       // remove left space if exist
+                                                       $pos1 = TCPDF_STATIC::revstrpos($pmid, '[(');
+                                                       if ($pos1 > 0) {
+                                                               $pos1 = intval($pos1);
+                                                               if ($this->isUnicodeFont()) {
+                                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(0).chr(32)));
+                                                                       $spacelen = 2;
+                                                               } else {
+                                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(32)));
+                                                                       $spacelen = 1;
+                                                               }
+                                                               if ($pos1 == $pos2) {
+                                                                       $pmid = substr($pmid, 0, ($pos1 + 2)).substr($pmid, ($pos1 + 2 + $spacelen));
+                                                                       if (substr($pmid, $pos1, 4) == '[()]') {
+                                                                               $linew -= $one_space_width;
+                                                                       } elseif ($pos1 == strpos($pmid, '[(')) {
+                                                                               $no = 1;
+                                                                       }
+                                                               }
+                                                       }
+                                               } else { // LTR
+                                                       // remove right space if exist
+                                                       $pos1 = TCPDF_STATIC::revstrpos($pmid, ')]');
+                                                       if ($pos1 > 0) {
+                                                               $pos1 = intval($pos1);
+                                                               if ($this->isUnicodeFont()) {
+                                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(0).chr(32).')]')) + 2;
+                                                                       $spacelen = 2;
+                                                               } else {
+                                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(32).')]')) + 1;
+                                                                       $spacelen = 1;
+                                                               }
+                                                               if ($pos1 == $pos2) {
+                                                                       $pmid = substr($pmid, 0, ($pos1 - $spacelen)).substr($pmid, $pos1);
+                                                                       $linew -= $one_space_width;
+                                                               }
+                                                       }
+                                               }
+                                               $mdiff = ($tw - $linew);
+                                               if ($plalign == 'C') {
+                                                       if ($this->rtl) {
+                                                               $t_x = -($mdiff / 2);
+                                                       } else {
+                                                               $t_x = ($mdiff / 2);
+                                                       }
+                                               } elseif ($plalign == 'R') {
+                                                       // right alignment on LTR document
+                                                       $t_x = $mdiff;
+                                               } elseif ($plalign == 'L') {
+                                                       // left alignment on RTL document
+                                                       $t_x = -$mdiff;
+                                               } elseif (($plalign == 'J') AND ($plalign == $lalign)) {
+                                                       // Justification
+                                                       if ($this->isRTLTextDir()) {
+                                                               // align text on the left
+                                                               $t_x = -$mdiff;
+                                                       }
+                                                       $ns = 0; // number of spaces
+                                                       $pmidtemp = $pmid;
+                                                       // escape special characters
+                                                       $pmidtemp = preg_replace('/[\\\][\(]/x', '\\#!#OP#!#', $pmidtemp);
+                                                       $pmidtemp = preg_replace('/[\\\][\)]/x', '\\#!#CP#!#', $pmidtemp);
+                                                       // search spaces
+                                                       if (preg_match_all('/\[\(([^\)]*)\)\]/x', $pmidtemp, $lnstring, PREG_PATTERN_ORDER)) {
+                                                               $spacestr = $this->getSpaceString();
+                                                               $maxkk = count($lnstring[1]) - 1;
+                                                               for ($kk=0; $kk <= $maxkk; ++$kk) {
+                                                                       // restore special characters
+                                                                       $lnstring[1][$kk] = str_replace('#!#OP#!#', '(', $lnstring[1][$kk]);
+                                                                       $lnstring[1][$kk] = str_replace('#!#CP#!#', ')', $lnstring[1][$kk]);
+                                                                       // store number of spaces on the strings
+                                                                       $lnstring[2][$kk] = substr_count($lnstring[1][$kk], $spacestr);
+                                                                       // count total spaces on line
+                                                                       $ns += $lnstring[2][$kk];
+                                                                       $lnstring[3][$kk] = $ns;
+                                                               }
+                                                               if ($ns == 0) {
+                                                                       $ns = 1;
+                                                               }
+                                                               // calculate additional space to add to each existing space
+                                                               $spacewidth = ($mdiff / ($ns - $no)) * $this->k;
+                                                               if ($this->FontSize <= 0) {
+                                                                       $this->FontSize = 1;
+                                                               }
+                                                               $spacewidthu = -1000 * ($mdiff + (($ns + $no) * $one_space_width)) / $ns / $this->FontSize;
+                                                               if ($this->font_spacing != 0) {
+                                                                       // fixed spacing mode
+                                                                       $osw = -1000 * $this->font_spacing / $this->FontSize;
+                                                                       $spacewidthu += $osw;
+                                                               }
+                                                               $nsmax = $ns;
+                                                               $ns = 0;
+                                                               reset($lnstring);
+                                                               $offset = 0;
+                                                               $strcount = 0;
+                                                               $prev_epsposbeg = 0;
+                                                               $textpos = 0;
+                                                               if ($this->isRTLTextDir()) {
+                                                                       $textpos = $this->wPt;
+                                                               }
+                                                               while (preg_match('/([0-9\.\+\-]*)[\s](Td|cm|m|l|c|re)[\s]/x', $pmid, $strpiece, PREG_OFFSET_CAPTURE, $offset) == 1) {
+                                                                       // check if we are inside a string section '[( ... )]'
+                                                                       $stroffset = strpos($pmid, '[(', $offset);
+                                                                       if (($stroffset !== false) AND ($stroffset <= $strpiece[2][1])) {
+                                                                               // set offset to the end of string section
+                                                                               $offset = strpos($pmid, ')]', $stroffset);
+                                                                               while (($offset !== false) AND ($pmid[($offset - 1)] == '\\')) {
+                                                                                       $offset = strpos($pmid, ')]', ($offset + 1));
+                                                                               }
+                                                                               if ($offset === false) {
+                                                                                       $this->Error('HTML Justification: malformed PDF code.');
+                                                                               }
+                                                                               continue;
+                                                                       }
+                                                                       if ($this->isRTLTextDir()) {
+                                                                               $spacew = ($spacewidth * ($nsmax - $ns));
+                                                                       } else {
+                                                                               $spacew = ($spacewidth * $ns);
+                                                                       }
+                                                                       $offset = $strpiece[2][1] + strlen($strpiece[2][0]);
+                                                                       $epsposend = strpos($pmid, $this->epsmarker.'Q', $offset);                              
+                                                                       if ($epsposend !== null) {
+                                                                               $epsposend += strlen($this->epsmarker.'Q');
+                                                                               $epsposbeg = strpos($pmid, 'q'.$this->epsmarker, $offset);
+                                                                               if ($epsposbeg === null) {
+                                                                                       $epsposbeg = strpos($pmid, 'q'.$this->epsmarker, ($prev_epsposbeg - 6));
+                                                                                       $prev_epsposbeg = $epsposbeg;
+                                                                               }
+                                                                               if (($epsposbeg > 0) AND ($epsposend > 0) AND ($offset > $epsposbeg) AND ($offset < $epsposend)) {
+                                                                                       // shift EPS images
+                                                                                       $trx = sprintf('1 0 0 1 %F 0 cm', $spacew);
+                                                                                       $pmid_b = substr($pmid, 0, $epsposbeg);
+                                                                                       $pmid_m = substr($pmid, $epsposbeg, ($epsposend - $epsposbeg));
+                                                                                       $pmid_e = substr($pmid, $epsposend);
+                                                                                       $pmid = $pmid_b."\nq\n".$trx."\n".$pmid_m."\nQ\n".$pmid_e;
+                                                                                       $offset = $epsposend;
+                                                                                       continue;
+                                                                               }
+                                                                       }
+                                                                       $currentxpos = 0;
+                                                                       // shift blocks of code
+                                                                       switch ($strpiece[2][0]) {
+                                                                               case 'Td':
+                                                                               case 'cm':
+                                                                               case 'm':
+                                                                               case 'l': {
+                                                                                       // get current X position
+                                                                                       preg_match('/([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s]('.$strpiece[2][0].')([\s]*)/x', $pmid, $xmatches);
+                                                                                       if (!isset($xmatches[1])) {
+                                                                                               break;
+                                                                                       }
+                                                                                       $currentxpos = $xmatches[1];
+                                                                                       $textpos = $currentxpos;
+                                                                                       if (($strcount <= $maxkk) AND ($strpiece[2][0] == 'Td')) {
+                                                                                               $ns = $lnstring[3][$strcount];
+                                                                                               if ($this->isRTLTextDir()) {
+                                                                                                       $spacew = ($spacewidth * ($nsmax - $ns));
+                                                                                               }
+                                                                                               ++$strcount;
+                                                                                       }
+                                                                                       // justify block
+                                                                                       if (preg_match('/([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s]('.$strpiece[2][0].')([\s]*)/x', $pmid, $pmatch) == 1) {
+                                                                                               $newpmid = sprintf('%F',(floatval($pmatch[1]) + $spacew)).' '.$pmatch[2].' x*#!#*x'.$pmatch[3].$pmatch[4];
+                                                                                               $pmid = str_replace($pmatch[0], $newpmid, $pmid);
+                                                                                               unset($pmatch, $newpmid);
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case 're': {
+                                                                                       // justify block
+                                                                                       if (!TCPDF_STATIC::empty_string($this->lispacer)) {
+                                                                                               $this->lispacer = '';
+                                                                                               continue;
+                                                                                       }
+                                                                                       preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](re)([\s]*)/x', $pmid, $xmatches);
+                                                                                       if (!isset($xmatches[1])) {
+                                                                                               break;
+                                                                                       }
+                                                                                       $currentxpos = $xmatches[1];
+                                                                                       $x_diff = 0;
+                                                                                       $w_diff = 0;
+                                                                                       if ($this->isRTLTextDir()) { // RTL
+                                                                                               if ($currentxpos < $textpos) {
+                                                                                                       $x_diff = ($spacewidth * ($nsmax - $lnstring[3][$strcount]));
+                                                                                                       $w_diff = ($spacewidth * $lnstring[2][$strcount]);
+                                                                                               } else {
+                                                                                                       if ($strcount > 0) {
+                                                                                                               $x_diff = ($spacewidth * ($nsmax - $lnstring[3][($strcount - 1)]));
+                                                                                                               $w_diff = ($spacewidth * $lnstring[2][($strcount - 1)]);
+                                                                                                       }
+                                                                                               }
+                                                                                       } else { // LTR
+                                                                                               if ($currentxpos > $textpos) {
+                                                                                                       if ($strcount > 0) {
+                                                                                                               $x_diff = ($spacewidth * $lnstring[3][($strcount - 1)]);
+                                                                                                       }
+                                                                                                       $w_diff = ($spacewidth * $lnstring[2][$strcount]);
+                                                                                               } else {
+                                                                                                       if ($strcount > 1) {
+                                                                                                               $x_diff = ($spacewidth * $lnstring[3][($strcount - 2)]);
+                                                                                                       }
+                                                                                                       if ($strcount > 0) {
+                                                                                                               $w_diff = ($spacewidth * $lnstring[2][($strcount - 1)]);
+                                                                                                       }
+                                                                                               }
+                                                                                       }
+                                                                                       if (preg_match('/('.$xmatches[1].')[\s]('.$xmatches[2].')[\s]('.$xmatches[3].')[\s]('.$strpiece[1][0].')[\s](re)([\s]*)/x', $pmid, $pmatch) == 1) {
+                                                                                               $newx = sprintf('%F',(floatval($pmatch[1]) + $x_diff));
+                                                                                               $neww = sprintf('%F',(floatval($pmatch[3]) + $w_diff));
+                                                                                               $newpmid = $newx.' '.$pmatch[2].' '.$neww.' '.$pmatch[4].' x*#!#*x'.$pmatch[5].$pmatch[6];
+                                                                                               $pmid = str_replace($pmatch[0], $newpmid, $pmid);
+                                                                                               unset($pmatch, $newpmid, $newx, $neww);
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                               case 'c': {
+                                                                                       // get current X position
+                                                                                       preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x', $pmid, $xmatches);
+                                                                                       if (!isset($xmatches[1])) {
+                                                                                               break;
+                                                                                       }
+                                                                                       $currentxpos = $xmatches[1];
+                                                                                       // justify block
+                                                                                       if (preg_match('/('.$xmatches[1].')[\s]('.$xmatches[2].')[\s]('.$xmatches[3].')[\s]('.$xmatches[4].')[\s]('.$xmatches[5].')[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x', $pmid, $pmatch) == 1) {
+                                                                                               $newx1 = sprintf('%F',(floatval($pmatch[1]) + $spacew));
+                                                                                               $newx2 = sprintf('%F',(floatval($pmatch[3]) + $spacew));
+                                                                                               $newx3 = sprintf('%F',(floatval($pmatch[5]) + $spacew));
+                                                                                               $newpmid = $newx1.' '.$pmatch[2].' '.$newx2.' '.$pmatch[4].' '.$newx3.' '.$pmatch[6].' x*#!#*x'.$pmatch[7].$pmatch[8];
+                                                                                               $pmid = str_replace($pmatch[0], $newpmid, $pmid);
+                                                                                               unset($pmatch, $newpmid, $newx1, $newx2, $newx3);
+                                                                                       }
+                                                                                       break;
+                                                                               }
+                                                                       }
+                                                                       // shift the annotations and links
+                                                                       $cxpos = ($currentxpos / $this->k);
+                                                                       $lmpos = ($this->lMargin + $this->cell_padding['L'] + $this->feps);
+                                                                       if ($this->inxobj) {
+                                                                               // we are inside an XObject template
+                                                                               foreach ($this->xobjects[$this->xobjid]['annotations'] as $pak => $pac) {
+                                                                                       if (($pac['y'] >= $minstartliney) AND (($pac['x'] * $this->k) >= ($currentxpos - $this->feps)) AND (($pac['x'] * $this->k) <= ($currentxpos + $this->feps))) {
+                                                                                               if ($cxpos > $lmpos) {
+                                                                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['x'] += ($spacew / $this->k);
+                                                                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k);
+                                                                                               } else {
+                                                                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k);
+                                                                                               }
+                                                                                               break;
+                                                                                       }
+                                                                               }
+                                                                       } elseif (isset($this->PageAnnots[$this->page])) {
+                                                                               foreach ($this->PageAnnots[$this->page] as $pak => $pac) {
+                                                                                       if (($pac['y'] >= $minstartliney) AND (($pac['x'] * $this->k) >= ($currentxpos - $this->feps)) AND (($pac['x'] * $this->k) <= ($currentxpos + $this->feps))) {
+                                                                                               if ($cxpos > $lmpos) {
+                                                                                                       $this->PageAnnots[$this->page][$pak]['x'] += ($spacew / $this->k);
+                                                                                                       $this->PageAnnots[$this->page][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k);
+                                                                                               } else {
+                                                                                                       $this->PageAnnots[$this->page][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k);
+                                                                                               }
+                                                                                               break;
+                                                                                       }
+                                                                               }
+                                                                       }
+                                                               } // end of while
+                                                               // remove markers
+                                                               $pmid = str_replace('x*#!#*x', '', $pmid);
+                                                               if ($this->isUnicodeFont()) {
+                                                                       // multibyte characters
+                                                                       $spacew = $spacewidthu;
+                                                                       if ($this->font_stretching != 100) {
+                                                                               // word spacing is affected by stretching
+                                                                               $spacew /= ($this->font_stretching / 100);
+                                                                       }
+                                                                       // escape special characters
+                                                                       $pos = 0;
+                                                                       $pmid = preg_replace('/[\\\][\(]/x', '\\#!#OP#!#', $pmid);
+                                                                       $pmid = preg_replace('/[\\\][\)]/x', '\\#!#CP#!#', $pmid);
+                                                                       if (preg_match_all('/\[\(([^\)]*)\)\]/x', $pmid, $pamatch) > 0) {
+                                                                               foreach($pamatch[0] as $pk => $pmatch) {
+                                                                                       $replace = $pamatch[1][$pk];
+                                                                                       $replace = str_replace('#!#OP#!#', '(', $replace);
+                                                                                       $replace = str_replace('#!#CP#!#', ')', $replace);
+                                                                                       $newpmid = '[('.str_replace(chr(0).chr(32), ') '.sprintf('%F', $spacew).' (', $replace).')]';
+                                                                                       $pos = strpos($pmid, $pmatch, $pos);
+                                                                                       if ($pos !== FALSE) {
+                                                                                               $pmid = substr_replace($pmid, $newpmid, $pos, strlen($pmatch));
+                                                                                       }
+                                                                                       ++$pos;
+                                                                               }
+                                                                               unset($pamatch);
+                                                                       }
+                                                                       if ($this->inxobj) {
+                                                                               // we are inside an XObject template
+                                                                               $this->xobjects[$this->xobjid]['outdata'] = $pstart."\n".$pmid."\n".$pend;
+                                                                       } else {
+                                                                               $this->setPageBuffer($startlinepage, $pstart."\n".$pmid."\n".$pend);
+                                                                       }
+                                                                       $endlinepos = strlen($pstart."\n".$pmid."\n");
+                                                               } else {
+                                                                       // non-unicode (single-byte characters)
+                                                                       if ($this->font_stretching != 100) {
+                                                                               // word spacing (Tw) is affected by stretching
+                                                                               $spacewidth /= ($this->font_stretching / 100);
+                                                                       }
+                                                                       $rs = sprintf('%F Tw', $spacewidth);
+                                                                       $pmid = preg_replace("/\[\(/x", $rs.' [(', $pmid);
+                                                                       if ($this->inxobj) {
+                                                                               // we are inside an XObject template
+                                                                               $this->xobjects[$this->xobjid]['outdata'] = $pstart."\n".$pmid."\nBT 0 Tw ET\n".$pend;
+                                                                       } else {
+                                                                               $this->setPageBuffer($startlinepage, $pstart."\n".$pmid."\nBT 0 Tw ET\n".$pend);
+                                                                       }
+                                                                       $endlinepos = strlen($pstart."\n".$pmid."\nBT 0 Tw ET\n");
+                                                               }
+                                                       }
+                                               } // end of J
+                                       } // end if $startlinex
+                                       if (($t_x != 0) OR ($yshift < 0)) {
+                                               // shift the line
+                                               $trx = sprintf('1 0 0 1 %F %F cm', ($t_x * $this->k), ($yshift * $this->k));
+                                               $pstart .= "\nq\n".$trx."\n".$pmid."\nQ\n";
+                                               $endlinepos = strlen($pstart);
+                                               if ($this->inxobj) {
+                                                       // we are inside an XObject template
+                                                       $this->xobjects[$this->xobjid]['outdata'] = $pstart.$pend;
+                                                       foreach ($this->xobjects[$this->xobjid]['annotations'] as $pak => $pac) {
+                                                               if ($pak >= $pask) {
+                                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['x'] += $t_x;
+                                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['y'] -= $yshift;
+                                                               }
+                                                       }
+                                               } else {
+                                                       $this->setPageBuffer($startlinepage, $pstart.$pend);
+                                                       // shift the annotations and links
+                                                       if (isset($this->PageAnnots[$this->page])) {
+                                                               foreach ($this->PageAnnots[$this->page] as $pak => $pac) {
+                                                                       if ($pak >= $pask) {
+                                                                               $this->PageAnnots[$this->page][$pak]['x'] += $t_x;
+                                                                               $this->PageAnnots[$this->page][$pak]['y'] -= $yshift;
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               $this->y -= $yshift;
+                                       }
+                               }
+                               $pbrk = $this->checkPageBreak($this->lasth);
+                               $this->newline = false;
+                               $startlinex = $this->x;
+                               $startliney = $this->y;
+                               if ($dom[$dom[$key]['parent']]['value'] == 'sup') {
+                                       $startliney -= ((0.3 * $this->FontSizePt) / $this->k);
+                               } elseif ($dom[$dom[$key]['parent']]['value'] == 'sub') {
+                                       $startliney -= (($this->FontSizePt / 0.7) / $this->k);
+                               } else {
+                                       $minstartliney = $startliney;
+                                       $maxbottomliney = ($this->y + $this->getCellHeight($fontsize / $this->k));
+                               }
+                               $startlinepage = $this->page;
+                               if (isset($endlinepos) AND (!$pbrk)) {
+                                       $startlinepos = $endlinepos;
+                               } else {
+                                       if ($this->inxobj) {
+                                               // we are inside an XObject template
+                                               $startlinepos = strlen($this->xobjects[$this->xobjid]['outdata']);
+                                       } elseif (!$this->InFooter) {
+                                               if (isset($this->footerlen[$this->page])) {
+                                                       $this->footerpos[$this->page] = $this->pagelen[$this->page] - $this->footerlen[$this->page];
+                                               } else {
+                                                       $this->footerpos[$this->page] = $this->pagelen[$this->page];
+                                               }
+                                               $startlinepos = $this->footerpos[$this->page];
+                                       } else {
+                                               $startlinepos = $this->pagelen[$this->page];
+                                       }
+                               }
+                               unset($endlinepos);
+                               $plalign = $lalign;
+                               if (isset($this->PageAnnots[$this->page])) {
+                                       $pask = count($this->PageAnnots[$this->page]);
+                               } else {
+                                       $pask = 0;
+                               }
+                               if (!($dom[$key]['tag'] AND !$dom[$key]['opening'] AND ($dom[$key]['value'] == 'table')
+                                       AND (isset($this->emptypagemrk[$this->page]))
+                                       AND ($this->emptypagemrk[$this->page] == $this->pagelen[$this->page]))) {
+                                       $this->SetFont($fontname, $fontstyle, $fontsize);
+                                       if ($wfill) {
+                                               $this->SetFillColorArray($this->bgcolor);
+                                       }
+                               }
+                       } // end newline
+                       if (isset($opentagpos)) {
+                               unset($opentagpos);
+                       }
+                       if ($dom[$key]['tag']) {
+                               if ($dom[$key]['opening']) {
+                                       // get text indentation (if any)
+                                       if (isset($dom[$key]['text-indent']) AND $dom[$key]['block']) {
+                                               $this->textindent = $dom[$key]['text-indent'];
+                                               $this->newline = true;
+                                       }
+                                       // table
+                                       if (($dom[$key]['value'] == 'table') AND isset($dom[$key]['cols']) AND ($dom[$key]['cols'] > 0)) {
+                                               // available page width
+                                               if ($this->rtl) {
+                                                       $wtmp = $this->x - $this->lMargin;
+                                               } else {
+                                                       $wtmp = $this->w - $this->rMargin - $this->x;
+                                               }
+                                               // get cell spacing
+                                               if (isset($dom[$key]['attribute']['cellspacing'])) {
+                                                       $clsp = $this->getHTMLUnitToUnits($dom[$key]['attribute']['cellspacing'], 1, 'px');
+                                                       $cellspacing = array('H' => $clsp, 'V' => $clsp);
+                                               } elseif (isset($dom[$key]['border-spacing'])) {
+                                                       $cellspacing = $dom[$key]['border-spacing'];
+                                               } else {
+                                                       $cellspacing = array('H' => 0, 'V' => 0);
+                                               }
+                                               // table width
+                                               if (isset($dom[$key]['width'])) {
+                                                       $table_width = $this->getHTMLUnitToUnits($dom[$key]['width'], $wtmp, 'px');
+                                               } else {
+                                                       $table_width = $wtmp;
+                                               }
+                                               $table_width -= (2 * $cellspacing['H']);
+                                               if (!$this->inthead) {
+                                                       $this->y += $cellspacing['V'];
+                                               }
+                                               if ($this->rtl) {
+                                                       $cellspacingx = -$cellspacing['H'];
+                                               } else {
+                                                       $cellspacingx = $cellspacing['H'];
+                                               }
+                                               // total table width without cellspaces
+                                               $table_columns_width = ($table_width - ($cellspacing['H'] * ($dom[$key]['cols'] - 1)));
+                                               // minimum column width
+                                               $table_min_column_width = ($table_columns_width / $dom[$key]['cols']);
+                                               // array of custom column widths
+                                               $table_colwidths = array_fill(0, $dom[$key]['cols'], $table_min_column_width);
+                                       }
+                                       // table row
+                                       if ($dom[$key]['value'] == 'tr') {
+                                               // reset column counter
+                                               $colid = 0;
+                                       }
+                                       // table cell
+                                       if (($dom[$key]['value'] == 'td') OR ($dom[$key]['value'] == 'th')) {
+                                               $trid = $dom[$key]['parent'];
+                                               $table_el = $dom[$trid]['parent'];
+                                               if (!isset($dom[$table_el]['cols'])) {
+                                                       $dom[$table_el]['cols'] = $dom[$trid]['cols'];
+                                               }
+                                               // store border info
+                                               $tdborder = 0;
+                                               if (isset($dom[$key]['border']) AND !empty($dom[$key]['border'])) {
+                                                       $tdborder = $dom[$key]['border'];
+                                               }
+                                               $colspan = intval($dom[$key]['attribute']['colspan']);
+                                               if ($colspan <= 0) {
+                                                       $colspan = 1;
+                                               }
+                                               $old_cell_padding = $this->cell_padding;
+                                               if (isset($dom[($dom[$trid]['parent'])]['attribute']['cellpadding'])) {
+                                                       $crclpd = $this->getHTMLUnitToUnits($dom[($dom[$trid]['parent'])]['attribute']['cellpadding'], 1, 'px');
+                                                       $current_cell_padding = array('L' => $crclpd, 'T' => $crclpd, 'R' => $crclpd, 'B' => $crclpd);
+                                               } elseif (isset($dom[($dom[$trid]['parent'])]['padding'])) {
+                                                       $current_cell_padding = $dom[($dom[$trid]['parent'])]['padding'];
+                                               } else {
+                                                       $current_cell_padding = array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0);
+                                               }
+                                               $this->cell_padding = $current_cell_padding;
+                                               if (isset($dom[$key]['height'])) {
+                                                       // minimum cell height
+                                                       $cellh = $this->getHTMLUnitToUnits($dom[$key]['height'], 0, 'px');
+                                               } else {
+                                                       $cellh = 0;
+                                               }
+                                               if (isset($dom[$key]['content'])) {
+                                                       $cell_content = stripslashes($dom[$key]['content']);
+                                               } else {
+                                                       $cell_content = '&nbsp;';
+                                               }
+                                               $tagtype = $dom[$key]['value'];
+                                               $parentid = $key;
+                                               while (($key < $maxel) AND (!(($dom[$key]['tag']) AND (!$dom[$key]['opening']) AND ($dom[$key]['value'] == $tagtype) AND ($dom[$key]['parent'] == $parentid)))) {
+                                                       // move $key index forward
+                                                       ++$key;
+                                               }
+                                               if (!isset($dom[$trid]['startpage'])) {
+                                                       $dom[$trid]['startpage'] = $this->page;
+                                               } else {
+                                                       $this->setPage($dom[$trid]['startpage']);
+                                               }
+                                               if (!isset($dom[$trid]['startcolumn'])) {
+                                                       $dom[$trid]['startcolumn'] = $this->current_column;
+                                               } elseif ($this->current_column != $dom[$trid]['startcolumn']) {
+                                                       $tmpx = $this->x;
+                                                       $this->selectColumn($dom[$trid]['startcolumn']);
+                                                       $this->x = $tmpx;
+                                               }
+                                               if (!isset($dom[$trid]['starty'])) {
+                                                       $dom[$trid]['starty'] = $this->y;
+                                               } else {
+                                                       $this->y = $dom[$trid]['starty'];
+                                               }
+                                               if (!isset($dom[$trid]['startx'])) {
+                                                       $dom[$trid]['startx'] = $this->x;
+                                                       $this->x += $cellspacingx;
+                                               } else {
+                                                       $this->x += ($cellspacingx / 2);
+                                               }
+                                               if (isset($dom[$parentid]['attribute']['rowspan'])) {
+                                                       $rowspan = intval($dom[$parentid]['attribute']['rowspan']);
+                                               } else {
+                                                       $rowspan = 1;
+                                               }
+                                               // skip row-spanned cells started on the previous rows
+                                               if (isset($dom[$table_el]['rowspans'])) {
+                                                       $rsk = 0;
+                                                       $rskmax = count($dom[$table_el]['rowspans']);
+                                                       while ($rsk < $rskmax) {
+                                                               $trwsp = $dom[$table_el]['rowspans'][$rsk];
+                                                               $rsstartx = $trwsp['startx'];
+                                                               $rsendx = $trwsp['endx'];
+                                                               // account for margin changes
+                                                               if ($trwsp['startpage'] < $this->page) {
+                                                                       if (($this->rtl) AND ($this->pagedim[$this->page]['orm'] != $this->pagedim[$trwsp['startpage']]['orm'])) {
+                                                                               $dl = ($this->pagedim[$this->page]['orm'] - $this->pagedim[$trwsp['startpage']]['orm']);
+                                                                               $rsstartx -= $dl;
+                                                                               $rsendx -= $dl;
+                                                                       } elseif ((!$this->rtl) AND ($this->pagedim[$this->page]['olm'] != $this->pagedim[$trwsp['startpage']]['olm'])) {
+                                                                               $dl = ($this->pagedim[$this->page]['olm'] - $this->pagedim[$trwsp['startpage']]['olm']);
+                                                                               $rsstartx += $dl;
+                                                                               $rsendx += $dl;
+                                                                       }
+                                                               }
+                                                               if (($trwsp['rowspan'] > 0)
+                                                                       AND ($rsstartx > ($this->x - $cellspacing['H'] - $current_cell_padding['L'] - $this->feps))
+                                                                       AND ($rsstartx < ($this->x + $cellspacing['H'] + $current_cell_padding['R'] + $this->feps))
+                                                                       AND (($trwsp['starty'] < ($this->y - $this->feps)) OR ($trwsp['startpage'] < $this->page) OR ($trwsp['startcolumn'] < $this->current_column))) {
+                                                                       // set the starting X position of the current cell
+                                                                       $this->x = $rsendx + $cellspacingx;
+                                                                       // increment column indicator
+                                                                       $colid += $trwsp['colspan'];
+                                                                       if (($trwsp['rowspan'] == 1)
+                                                                               AND (isset($dom[$trid]['endy']))
+                                                                               AND (isset($dom[$trid]['endpage']))
+                                                                               AND (isset($dom[$trid]['endcolumn']))
+                                                                               AND ($trwsp['endpage'] == $dom[$trid]['endpage'])
+                                                                               AND ($trwsp['endcolumn'] == $dom[$trid]['endcolumn'])) {
+                                                                               // set ending Y position for row
+                                                                               $dom[$table_el]['rowspans'][$rsk]['endy'] = max($dom[$trid]['endy'], $trwsp['endy']);
+                                                                               $dom[$trid]['endy'] = $dom[$table_el]['rowspans'][$rsk]['endy'];
+                                                                       }
+                                                                       $rsk = 0;
+                                                               } else {
+                                                                       ++$rsk;
+                                                               }
+                                                       }
+                                               }
+                                               if (isset($dom[$parentid]['width'])) {
+                                                       // user specified width
+                                                       $cellw = $this->getHTMLUnitToUnits($dom[$parentid]['width'], $table_columns_width, 'px');
+                                                       $tmpcw = ($cellw / $colspan);
+                                                       for ($i = 0; $i < $colspan; ++$i) {
+                                                               $table_colwidths[($colid + $i)] = $tmpcw;
+                                                       }
+                                               } else {
+                                                       // inherit column width
+                                                       $cellw = 0;
+                                                       for ($i = 0; $i < $colspan; ++$i) {
+                                                               $cellw += $table_colwidths[($colid + $i)];
+                                                       }
+                                               }
+                                               $cellw += (($colspan - 1) * $cellspacing['H']);
+                                               // increment column indicator
+                                               $colid += $colspan;
+                                               // add rowspan information to table element
+                                               if ($rowspan > 1) {
+                                                       $trsid = array_push($dom[$table_el]['rowspans'], array('trid' => $trid, 'rowspan' => $rowspan, 'mrowspan' => $rowspan, 'colspan' => $colspan, 'startpage' => $this->page, 'startcolumn' => $this->current_column, 'startx' => $this->x, 'starty' => $this->y));
+                                               }
+                                               $cellid = array_push($dom[$trid]['cellpos'], array('startx' => $this->x));
+                                               if ($rowspan > 1) {
+                                                       $dom[$trid]['cellpos'][($cellid - 1)]['rowspanid'] = ($trsid - 1);
+                                               }
+                                               // push background colors
+                                               if (isset($dom[$parentid]['bgcolor']) AND ($dom[$parentid]['bgcolor'] !== false)) {
+                                                       $dom[$trid]['cellpos'][($cellid - 1)]['bgcolor'] = $dom[$parentid]['bgcolor'];
+                                               }
+                                               // store border info
+                                               if (isset($tdborder) AND !empty($tdborder)) {
+                                                       $dom[$trid]['cellpos'][($cellid - 1)]['border'] = $tdborder;
+                                               }
+                                               $prevLastH = $this->lasth;
+                                               // store some info for multicolumn mode
+                                               if ($this->rtl) {
+                                                       $this->colxshift['x'] = $this->w - $this->x - $this->rMargin;
+                                               } else {
+                                                       $this->colxshift['x'] = $this->x - $this->lMargin;
+                                               }
+                                               $this->colxshift['s'] = $cellspacing;
+                                               $this->colxshift['p'] = $current_cell_padding;
+                                               // ****** write the cell content ******
+                                               $this->MultiCell($cellw, $cellh, $cell_content, false, $lalign, false, 2, '', '', true, 0, true, true, 0, 'T', false);
+                                               // restore some values
+                                               $this->colxshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0));
+                                               $this->lasth = $prevLastH;
+                                               $this->cell_padding = $old_cell_padding;
+                                               $dom[$trid]['cellpos'][($cellid - 1)]['endx'] = $this->x;
+                                               // update the end of row position
+                                               if ($rowspan <= 1) {
+                                                       if (isset($dom[$trid]['endy'])) {
+                                                               if (($this->page == $dom[$trid]['endpage']) AND ($this->current_column == $dom[$trid]['endcolumn'])) {
+                                                                       $dom[$trid]['endy'] = max($this->y, $dom[$trid]['endy']);
+                                                               } elseif (($this->page > $dom[$trid]['endpage']) OR ($this->current_column > $dom[$trid]['endcolumn'])) {
+                                                                       $dom[$trid]['endy'] = $this->y;
+                                                               }
+                                                       } else {
+                                                               $dom[$trid]['endy'] = $this->y;
+                                                       }
+                                                       if (isset($dom[$trid]['endpage'])) {
+                                                               $dom[$trid]['endpage'] = max($this->page, $dom[$trid]['endpage']);
+                                                       } else {
+                                                               $dom[$trid]['endpage'] = $this->page;
+                                                       }
+                                                       if (isset($dom[$trid]['endcolumn'])) {
+                                                               $dom[$trid]['endcolumn'] = max($this->current_column, $dom[$trid]['endcolumn']);
+                                                       } else {
+                                                               $dom[$trid]['endcolumn'] = $this->current_column;
+                                                       }
+                                               } else {
+                                                       // account for row-spanned cells
+                                                       $dom[$table_el]['rowspans'][($trsid - 1)]['endx'] = $this->x;
+                                                       $dom[$table_el]['rowspans'][($trsid - 1)]['endy'] = $this->y;
+                                                       $dom[$table_el]['rowspans'][($trsid - 1)]['endpage'] = $this->page;
+                                                       $dom[$table_el]['rowspans'][($trsid - 1)]['endcolumn'] = $this->current_column;
+                                               }
+                                               if (isset($dom[$table_el]['rowspans'])) {
+                                                       // update endy and endpage on rowspanned cells
+                                                       foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) {
+                                                               if ($trwsp['rowspan'] > 0) {
+                                                                       if (isset($dom[$trid]['endpage'])) {
+                                                                               if (($trwsp['endpage'] == $dom[$trid]['endpage']) AND ($trwsp['endcolumn'] == $dom[$trid]['endcolumn'])) {
+                                                                                       $dom[$table_el]['rowspans'][$k]['endy'] = max($dom[$trid]['endy'], $trwsp['endy']);
+                                                                               } elseif (($trwsp['endpage'] < $dom[$trid]['endpage']) OR ($trwsp['endcolumn'] < $dom[$trid]['endcolumn'])) {
+                                                                                       $dom[$table_el]['rowspans'][$k]['endy'] = $dom[$trid]['endy'];
+                                                                                       $dom[$table_el]['rowspans'][$k]['endpage'] = $dom[$trid]['endpage'];
+                                                                                       $dom[$table_el]['rowspans'][$k]['endcolumn'] = $dom[$trid]['endcolumn'];
+                                                                               } else {
+                                                                                       $dom[$trid]['endy'] = $this->pagedim[$dom[$trid]['endpage']]['hk'] - $this->pagedim[$dom[$trid]['endpage']]['bm'];
+                                                                               }
+                                                                       }
+                                                               }
+                                                       }
+                                               }
+                                               $this->x += ($cellspacingx / 2);
+                                       } else {
+                                               // opening tag (or self-closing tag)
+                                               if (!isset($opentagpos)) {
+                                                       if ($this->inxobj) {
+                                                               // we are inside an XObject template
+                                                               $opentagpos = strlen($this->xobjects[$this->xobjid]['outdata']);
+                                                       } elseif (!$this->InFooter) {
+                                                               if (isset($this->footerlen[$this->page])) {
+                                                                       $this->footerpos[$this->page] = $this->pagelen[$this->page] - $this->footerlen[$this->page];
+                                                               } else {
+                                                                       $this->footerpos[$this->page] = $this->pagelen[$this->page];
+                                                               }
+                                                               $opentagpos = $this->footerpos[$this->page];
+                                                       }
+                                               }
+                                               $dom = $this->openHTMLTagHandler($dom, $key, $cell);
+                                       }
+                               } else { // closing tag
+                                       $prev_numpages = $this->numpages;
+                                       $old_bordermrk = $this->bordermrk[$this->page];
+                                       $dom = $this->closeHTMLTagHandler($dom, $key, $cell, $maxbottomliney);
+                                       if ($this->bordermrk[$this->page] > $old_bordermrk) {
+                                               $startlinepos += ($this->bordermrk[$this->page] - $old_bordermrk);
+                                       }
+                                       if ($prev_numpages > $this->numpages) {
+                                               $startlinepage = $this->page;
+                                       }
+                               }
+                       } elseif (strlen($dom[$key]['value']) > 0) {
+                               // print list-item
+                               if (!TCPDF_STATIC::empty_string($this->lispacer) AND ($this->lispacer != '^')) {
+                                       $this->SetFont($pfontname, $pfontstyle, $pfontsize);
+                                       $this->resetLastH();
+                                       $minstartliney = $this->y;
+                                       $maxbottomliney = ($startliney + $this->getCellHeight($this->FontSize));
+                                       if (is_numeric($pfontsize) AND ($pfontsize > 0)) {
+                                               $this->putHtmlListBullet($this->listnum, $this->lispacer, $pfontsize);
+                                       }
+                                       $this->SetFont($curfontname, $curfontstyle, $curfontsize);
+                                       $this->resetLastH();
+                                       if (is_numeric($pfontsize) AND ($pfontsize > 0) AND is_numeric($curfontsize) AND ($curfontsize > 0) AND ($pfontsize != $curfontsize)) {
+                                               $pfontascent = $this->getFontAscent($pfontname, $pfontstyle, $pfontsize);
+                                               $pfontdescent = $this->getFontDescent($pfontname, $pfontstyle, $pfontsize);
+                                               $this->y += ($this->getCellHeight(($pfontsize - $curfontsize) / $this->k) + $pfontascent - $curfontascent - $pfontdescent + $curfontdescent) / 2;
+                                               $minstartliney = min($this->y, $minstartliney);
+                                               $maxbottomliney = max(($this->y + $this->getCellHeight($pfontsize / $this->k)), $maxbottomliney);
+                                       }
+                               }
+                               // text
+                               $this->htmlvspace = 0;
+                               if ((!$this->premode) AND $this->isRTLTextDir()) {
+                                       // reverse spaces order
+                                       $lsp = ''; // left spaces
+                                       $rsp = ''; // right spaces
+                                       if (preg_match('/^('.$this->re_space['p'].'+)/'.$this->re_space['m'], $dom[$key]['value'], $matches)) {
+                                               $lsp = $matches[1];
+                                       }
+                                       if (preg_match('/('.$this->re_space['p'].'+)$/'.$this->re_space['m'], $dom[$key]['value'], $matches)) {
+                                               $rsp = $matches[1];
+                                       }
+                                       $dom[$key]['value'] = $rsp.$this->stringTrim($dom[$key]['value']).$lsp;
+                               }
+                               if ($newline) {
+                                       if (!$this->premode) {
+                                               $prelen = strlen($dom[$key]['value']);
+                                               if ($this->isRTLTextDir()) {
+                                                       // right trim except non-breaking space
+                                                       $dom[$key]['value'] = $this->stringRightTrim($dom[$key]['value']);
+                                               } else {
+                                                       // left trim except non-breaking space
+                                                       $dom[$key]['value'] = $this->stringLeftTrim($dom[$key]['value']);
+                                               }
+                                               $postlen = strlen($dom[$key]['value']);
+                                               if (($postlen == 0) AND ($prelen > 0)) {
+                                                       $dom[$key]['trimmed_space'] = true;
+                                               }
+                                       }
+                                       $newline = false;
+                                       $firstblock = true;
+                               } else {
+                                       $firstblock = false;
+                                       // replace empty multiple spaces string with a single space
+                                       $dom[$key]['value'] = preg_replace('/^'.$this->re_space['p'].'+$/'.$this->re_space['m'], chr(32), $dom[$key]['value']);
+                               }
+                               $strrest = '';
+                               if ($this->rtl) {
+                                       $this->x -= $this->textindent;
+                               } else {
+                                       $this->x += $this->textindent;
+                               }
+                               if (!isset($dom[$key]['trimmed_space']) OR !$dom[$key]['trimmed_space']) {
+                                       $strlinelen = $this->GetStringWidth($dom[$key]['value']);
+                                       if (!empty($this->HREF) AND (isset($this->HREF['url']))) {
+                                               // HTML <a> Link
+                                               $hrefcolor = '';
+                                               if (isset($dom[($dom[$key]['parent'])]['fgcolor']) AND ($dom[($dom[$key]['parent'])]['fgcolor'] !== false)) {
+                                                       $hrefcolor = $dom[($dom[$key]['parent'])]['fgcolor'];
+                                               }
+                                               $hrefstyle = -1;
+                                               if (isset($dom[($dom[$key]['parent'])]['fontstyle']) AND ($dom[($dom[$key]['parent'])]['fontstyle'] !== false)) {
+                                                       $hrefstyle = $dom[($dom[$key]['parent'])]['fontstyle'];
+                                               }
+                                               $strrest = $this->addHtmlLink($this->HREF['url'], $dom[$key]['value'], $wfill, true, $hrefcolor, $hrefstyle, true);
+                                       } else {
+                                               $wadj = 0; // space to leave for block continuity
+                                               if ($this->rtl) {
+                                                       $cwa = ($this->x - $this->lMargin);
+                                               } else {
+                                                       $cwa = ($this->w - $this->rMargin - $this->x);
+                                               }
+                                               if (($strlinelen < $cwa) AND (isset($dom[($key + 1)])) AND ($dom[($key + 1)]['tag']) AND (!$dom[($key + 1)]['block'])) {
+                                                       // check the next text blocks for continuity
+                                                       $nkey = ($key + 1);
+                                                       $write_block = true;
+                                                       $same_textdir = true;
+                                                       $tmp_fontname = $this->FontFamily;
+                                                       $tmp_fontstyle = $this->FontStyle;
+                                                       $tmp_fontsize = $this->FontSizePt;
+                                                       while ($write_block AND isset($dom[$nkey])) {
+                                                               if ($dom[$nkey]['tag']) {
+                                                                       if ($dom[$nkey]['block']) {
+                                                                               // end of block
+                                                                               $write_block = false;
+                                                                       }
+                                                                       $tmp_fontname = isset($dom[$nkey]['fontname']) ? $dom[$nkey]['fontname'] : $this->FontFamily;
+                                                                       $tmp_fontstyle = isset($dom[$nkey]['fontstyle']) ? $dom[$nkey]['fontstyle'] : $this->FontStyle;
+                                                                       $tmp_fontsize = isset($dom[$nkey]['fontsize']) ? $dom[$nkey]['fontsize'] : $this->FontSizePt;
+                                                                       $same_textdir = ($dom[$nkey]['dir'] == $dom[$key]['dir']);
+                                                               } else {
+                                                                       $nextstr = TCPDF_STATIC::pregSplit('/'.$this->re_space['p'].'+/', $this->re_space['m'], $dom[$nkey]['value']);
+                                                                       if (isset($nextstr[0]) AND $same_textdir) {
+                                                                               $wadj += $this->GetStringWidth($nextstr[0], $tmp_fontname, $tmp_fontstyle, $tmp_fontsize);
+                                                                               if (isset($nextstr[1])) {
+                                                                                       $write_block = false;
+                                                                               }
+                                                                       }
+                                                               }
+                                                               ++$nkey;
+                                                       }
+                                               }
+                                               if (($wadj > 0) AND (($strlinelen + $wadj) >= $cwa)) {
+                                                       $wadj = 0;
+                                                       $nextstr = TCPDF_STATIC::pregSplit('/'.$this->re_space['p'].'/', $this->re_space['m'], $dom[$key]['value']);
+                                                       $numblks = count($nextstr);
+                                                       if ($numblks > 1) {
+                                                               // try to split on blank spaces
+                                                               $wadj = ($cwa - $strlinelen + $this->GetStringWidth($nextstr[($numblks - 1)]));
+                                                       } else {
+                                                               // set the entire block on new line
+                                                               $wadj = $this->GetStringWidth($nextstr[0]);
+                                                       }
+                                               }
+                                               // check for reversed text direction
+                                               if (($wadj > 0) AND (($this->rtl AND ($this->tmprtl === 'L')) OR (!$this->rtl AND ($this->tmprtl === 'R')))) {
+                                                       // LTR text on RTL direction or RTL text on LTR direction
+                                                       $reverse_dir = true;
+                                                       $this->rtl = !$this->rtl;
+                                                       $revshift = ($strlinelen + $wadj + 0.000001); // add little quantity for rounding problems
+                                                       if ($this->rtl) {
+                                                               $this->x += $revshift;
+                                                       } else {
+                                                               $this->x -= $revshift;
+                                                       }
+                                                       $xws = $this->x;
+                                               }
+                                               // ****** write only until the end of the line and get the rest ******
+                                               $strrest = $this->Write($this->lasth, $dom[$key]['value'], '', $wfill, '', false, 0, true, $firstblock, 0, $wadj);
+                                               // restore default direction
+                                               if ($reverse_dir AND ($wadj == 0)) {
+                                                       $this->x = $xws;
+                                                       $this->rtl = !$this->rtl;
+                                                       $reverse_dir = false;
+                                               }
+                                       }
+                               }
+                               $this->textindent = 0;
+                               if (strlen($strrest) > 0) {
+                                       // store the remaining string on the previous $key position
+                                       $this->newline = true;
+                                       if ($strrest == $dom[$key]['value']) {
+                                               // used to avoid infinite loop
+                                               ++$loop;
+                                       } else {
+                                               $loop = 0;
+                                       }
+                                       $dom[$key]['value'] = $strrest;
+                                       if ($cell) {
+                                               if ($this->rtl) {
+                                                       $this->x -= $this->cell_padding['R'];
+                                               } else {
+                                                       $this->x += $this->cell_padding['L'];
+                                               }
+                                       }
+                                       if ($loop < 3) {
+                                               --$key;
+                                       }
+                               } else {
+                                       $loop = 0;
+                                       // add the positive font spacing of the last character (if any)
+                                        if ($this->font_spacing > 0) {
+                                               if ($this->rtl) {
+                                                       $this->x -= $this->font_spacing;
+                                               } else {
+                                                       $this->x += $this->font_spacing;
+                                               }
+                                       }
+                               }
+                       }
+                       ++$key;
+                       if (isset($dom[$key]['tag']) AND $dom[$key]['tag'] AND (!isset($dom[$key]['opening']) OR !$dom[$key]['opening']) AND isset($dom[($dom[$key]['parent'])]['attribute']['nobr']) AND ($dom[($dom[$key]['parent'])]['attribute']['nobr'] == 'true')) {
+                               // check if we are on a new page or on a new column
+                               if ((!$undo) AND (($this->y < $this->start_transaction_y) OR (($dom[$key]['value'] == 'tr') AND ($dom[($dom[$key]['parent'])]['endy'] < $this->start_transaction_y)))) {
+                                       // we are on a new page or on a new column and the total object height is less than the available vertical space.
+                                       // restore previous object
+                                       $this->rollbackTransaction(true);
+                                       // restore previous values
+                                       foreach ($this_method_vars as $vkey => $vval) {
+                                               $$vkey = $vval;
+                                       }
+                                       if (!empty($dom[$key]['thead'])) {
+                                               $this->inthead = true;
+                                       }
+                                       // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                                       $pre_y = $this->y;
+                                       if ((!$this->checkPageBreak($this->PageBreakTrigger + 1)) AND ($this->y < $pre_y)) {
+                                               $startliney = $this->y;
+                                       }
+                                       $undo = true; // avoid infinite loop
+                               } else {
+                                       $undo = false;
+                               }
+                       }
+               } // end for each $key
+               // align the last line
+               if (isset($startlinex)) {
+                       $yshift = ($minstartliney - $startliney);
+                       if (($yshift > 0) OR ($this->page > $startlinepage)) {
+                               $yshift = 0;
+                       }
+                       $t_x = 0;
+                       // the last line must be shifted to be aligned as requested
+                       $linew = abs($this->endlinex - $startlinex);
+                       if ($this->inxobj) {
+                               // we are inside an XObject template
+                               $pstart = substr($this->xobjects[$this->xobjid]['outdata'], 0, $startlinepos);
+                               if (isset($opentagpos)) {
+                                       $midpos = $opentagpos;
+                               } else {
+                                       $midpos = 0;
+                               }
+                               if ($midpos > 0) {
+                                       $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos, ($midpos - $startlinepos));
+                                       $pend = substr($this->xobjects[$this->xobjid]['outdata'], $midpos);
+                               } else {
+                                       $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos);
+                                       $pend = '';
+                               }
+                       } else {
+                               $pstart = substr($this->getPageBuffer($startlinepage), 0, $startlinepos);
+                               if (isset($opentagpos) AND isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) {
+                                       $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage];
+                                       $midpos = min($opentagpos, $this->footerpos[$startlinepage]);
+                               } elseif (isset($opentagpos)) {
+                                       $midpos = $opentagpos;
+                               } elseif (isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) {
+                                       $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage];
+                                       $midpos = $this->footerpos[$startlinepage];
+                               } else {
+                                       $midpos = 0;
+                               }
+                               if ($midpos > 0) {
+                                       $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos, ($midpos - $startlinepos));
+                                       $pend = substr($this->getPageBuffer($startlinepage), $midpos);
+                               } else {
+                                       $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos);
+                                       $pend = '';
+                               }
+                       }
+                       if ((isset($plalign) AND ((($plalign == 'C') OR (($plalign == 'R') AND (!$this->rtl)) OR (($plalign == 'L') AND ($this->rtl)))))) {
+                               // calculate shifting amount
+                               $tw = $w;
+                               if ($this->lMargin != $prevlMargin) {
+                                       $tw += ($prevlMargin - $this->lMargin);
+                               }
+                               if ($this->rMargin != $prevrMargin) {
+                                       $tw += ($prevrMargin - $this->rMargin);
+                               }
+                               $one_space_width = $this->GetStringWidth(chr(32));
+                               $no = 0; // number of spaces on a line contained on a single block
+                               if ($this->isRTLTextDir()) { // RTL
+                                       // remove left space if exist
+                                       $pos1 = TCPDF_STATIC::revstrpos($pmid, '[(');
+                                       if ($pos1 > 0) {
+                                               $pos1 = intval($pos1);
+                                               if ($this->isUnicodeFont()) {
+                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(0).chr(32)));
+                                                       $spacelen = 2;
+                                               } else {
+                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(32)));
+                                                       $spacelen = 1;
+                                               }
+                                               if ($pos1 == $pos2) {
+                                                       $pmid = substr($pmid, 0, ($pos1 + 2)).substr($pmid, ($pos1 + 2 + $spacelen));
+                                                       if (substr($pmid, $pos1, 4) == '[()]') {
+                                                               $linew -= $one_space_width;
+                                                       } elseif ($pos1 == strpos($pmid, '[(')) {
+                                                               $no = 1;
+                                                       }
+                                               }
+                                       }
+                               } else { // LTR
+                                       // remove right space if exist
+                                       $pos1 = TCPDF_STATIC::revstrpos($pmid, ')]');
+                                       if ($pos1 > 0) {
+                                               $pos1 = intval($pos1);
+                                               if ($this->isUnicodeFont()) {
+                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(0).chr(32).')]')) + 2;
+                                                       $spacelen = 2;
+                                               } else {
+                                                       $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(32).')]')) + 1;
+                                                       $spacelen = 1;
+                                               }
+                                               if ($pos1 == $pos2) {
+                                                       $pmid = substr($pmid, 0, ($pos1 - $spacelen)).substr($pmid, $pos1);
+                                                       $linew -= $one_space_width;
+                                               }
+                                       }
+                               }
+                               $mdiff = ($tw - $linew);
+                               if ($plalign == 'C') {
+                                       if ($this->rtl) {
+                                               $t_x = -($mdiff / 2);
+                                       } else {
+                                               $t_x = ($mdiff / 2);
+                                       }
+                               } elseif ($plalign == 'R') {
+                                       // right alignment on LTR document
+                                       $t_x = $mdiff;
+                               } elseif ($plalign == 'L') {
+                                       // left alignment on RTL document
+                                       $t_x = -$mdiff;
+                               }
+                       } // end if startlinex
+                       if (($t_x != 0) OR ($yshift < 0)) {
+                               // shift the line
+                               $trx = sprintf('1 0 0 1 %F %F cm', ($t_x * $this->k), ($yshift * $this->k));
+                               $pstart .= "\nq\n".$trx."\n".$pmid."\nQ\n";
+                               $endlinepos = strlen($pstart);
+                               if ($this->inxobj) {
+                                       // we are inside an XObject template
+                                       $this->xobjects[$this->xobjid]['outdata'] = $pstart.$pend;
+                                       foreach ($this->xobjects[$this->xobjid]['annotations'] as $pak => $pac) {
+                                               if ($pak >= $pask) {
+                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['x'] += $t_x;
+                                                       $this->xobjects[$this->xobjid]['annotations'][$pak]['y'] -= $yshift;
+                                               }
+                                       }
+                               } else {
+                                       $this->setPageBuffer($startlinepage, $pstart.$pend);
+                                       // shift the annotations and links
+                                       if (isset($this->PageAnnots[$this->page])) {
+                                               foreach ($this->PageAnnots[$this->page] as $pak => $pac) {
+                                                       if ($pak >= $pask) {
+                                                               $this->PageAnnots[$this->page][$pak]['x'] += $t_x;
+                                                               $this->PageAnnots[$this->page][$pak]['y'] -= $yshift;
+                                                       }
+                                               }
+                                       }
+                               }
+                               $this->y -= $yshift;
+                               $yshift = 0;
+                       }
+               }
+               // restore previous values
+               $this->setGraphicVars($gvars);
+               if ($this->num_columns > 1) {
+                       $this->selectColumn();
+               } elseif ($this->page > $prevPage) {
+                       $this->lMargin = $this->pagedim[$this->page]['olm'];
+                       $this->rMargin = $this->pagedim[$this->page]['orm'];
+               }
+               // restore previous list state
+               $this->cell_height_ratio = $prev_cell_height_ratio;
+               $this->listnum = $prev_listnum;
+               $this->listordered = $prev_listordered;
+               $this->listcount = $prev_listcount;
+               $this->lispacer = $prev_lispacer;
+               if ($ln AND (!($cell AND ($dom[$key-1]['value'] == 'table')))) {
+                       $this->Ln($this->lasth);
+                       if ($this->y < $maxbottomliney) {
+                               $this->y = $maxbottomliney;
+                       }
+               }
+               unset($dom);
+       }
+
+       /**
+        * Process opening tags.
+        * @param $dom (array) html dom array
+        * @param $key (int) current element id
+        * @param $cell (boolean) if true add the default left (or right if RTL) padding to each new line (default false).
+        * @return $dom array
+        * @protected
+        */
+       protected function openHTMLTagHandler($dom, $key, $cell) {
+               $tag = $dom[$key];
+               $parent = $dom[($dom[$key]['parent'])];
+               $firsttag = ($key == 1);
+               // check for text direction attribute
+               if (isset($tag['dir'])) {
+                       $this->setTempRTL($tag['dir']);
+               } else {
+                       $this->tmprtl = false;
+               }
+               if ($tag['block']) {
+                       $hbz = 0; // distance from y to line bottom
+                       $hb = 0; // vertical space between block tags
+                       // calculate vertical space for block tags
+                       if (isset($this->tagvspaces[$tag['value']][0]['h']) AND ($this->tagvspaces[$tag['value']][0]['h'] >= 0)) {
+                               $cur_h = $this->tagvspaces[$tag['value']][0]['h'];
+                       } elseif (isset($tag['fontsize'])) {
+                               $cur_h = $this->getCellHeight($tag['fontsize'] / $this->k);
+                       } else {
+                               $cur_h = $this->getCellHeight($this->FontSize);
+                       }
+                       if (isset($this->tagvspaces[$tag['value']][0]['n'])) {
+                               $on = $this->tagvspaces[$tag['value']][0]['n'];
+                       } elseif (preg_match('/[h][0-9]/', $tag['value']) > 0) {
+                               $on = 0.6;
+                       } else {
+                               $on = 1;
+                       }
+                       if ((!isset($this->tagvspaces[$tag['value']])) AND (in_array($tag['value'], array('div', 'dt', 'dd', 'li', 'br', 'hr')))) {
+                               $hb = 0;
+                       } else {
+                               $hb = ($on * $cur_h);
+                       }
+                       if (($this->htmlvspace <= 0) AND ($on > 0)) {
+                               if (isset($parent['fontsize'])) {
+                                       $hbz = (($parent['fontsize'] / $this->k) * $this->cell_height_ratio);
+                               } else {
+                                       $hbz = $this->getCellHeight($this->FontSize);
+                               }
+                       }
+                       if (isset($dom[($key - 1)]) AND ($dom[($key - 1)]['value'] == 'table')) {
+                               // fix vertical space after table
+                               $hbz = 0;
+                       }
+                       // closing vertical space
+                       $hbc = 0;
+                       if (isset($this->tagvspaces[$tag['value']][1]['h']) AND ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) {
+                               $pre_h = $this->tagvspaces[$tag['value']][1]['h'];
+                       } elseif (isset($parent['fontsize'])) {
+                               $pre_h = $this->getCellHeight($parent['fontsize'] / $this->k);
+                       } else {
+                               $pre_h = $this->getCellHeight($this->FontSize);
+                       }
+                       if (isset($this->tagvspaces[$tag['value']][1]['n'])) {
+                               $cn = $this->tagvspaces[$tag['value']][1]['n'];
+                       } elseif (preg_match('/[h][0-9]/', $tag['value']) > 0) {
+                               $cn = 0.6;
+                       } else {
+                               $cn = 1;
+                       }
+                       if (isset($this->tagvspaces[$tag['value']][1])) {
+                               $hbc = ($cn * $pre_h);
+                       }
+               }
+               // Opening tag
+               switch($tag['value']) {
+                       case 'table': {
+                               $cp = 0;
+                               $cs = 0;
+                               $dom[$key]['rowspans'] = array();
+                               if (!isset($dom[$key]['attribute']['nested']) OR ($dom[$key]['attribute']['nested'] != 'true')) {
+                                       $this->htmlvspace = 0;
+                                       // set table header
+                                       if (!TCPDF_STATIC::empty_string($dom[$key]['thead'])) {
+                                               // set table header
+                                               $this->thead = $dom[$key]['thead'];
+                                               if (!isset($this->theadMargins) OR (empty($this->theadMargins))) {
+                                                       $this->theadMargins = array();
+                                                       $this->theadMargins['cell_padding'] = $this->cell_padding;
+                                                       $this->theadMargins['lmargin'] = $this->lMargin;
+                                                       $this->theadMargins['rmargin'] = $this->rMargin;
+                                                       $this->theadMargins['page'] = $this->page;
+                                                       $this->theadMargins['cell'] = $cell;
+                                                       $this->theadMargins['gvars'] = $this->getGraphicVars();
+                                               }
+                                       }
+                               }
+                               // store current margins and page
+                               $dom[$key]['old_cell_padding'] = $this->cell_padding;
+                               if (isset($tag['attribute']['cellpadding'])) {
+                                       $pad = $this->getHTMLUnitToUnits($tag['attribute']['cellpadding'], 1, 'px');
+                                       $this->SetCellPadding($pad);
+                               } elseif (isset($tag['padding'])) {
+                                       $this->cell_padding = $tag['padding'];
+                               }
+                               if (isset($tag['attribute']['cellspacing'])) {
+                                       $cs = $this->getHTMLUnitToUnits($tag['attribute']['cellspacing'], 1, 'px');
+                               } elseif (isset($tag['border-spacing'])) {
+                                       $cs = $tag['border-spacing']['V'];
+                               }
+                               $prev_y = $this->y;
+                               if ($this->checkPageBreak(((2 * $cp) + (2 * $cs) + $this->lasth), '', false) OR ($this->y < $prev_y)) {
+                                       $this->inthead = true;
+                                       // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                                       $this->checkPageBreak($this->PageBreakTrigger + 1);
+                               }
+                               break;
+                       }
+                       case 'tr': {
+                               // array of columns positions
+                               $dom[$key]['cellpos'] = array();
+                               break;
+                       }
+                       case 'hr': {
+                               if ((isset($tag['height'])) AND ($tag['height'] != '')) {
+                                       $hrHeight = $this->getHTMLUnitToUnits($tag['height'], 1, 'px');
+                               } else {
+                                       $hrHeight = $this->GetLineWidth();
+                               }
+                               $this->addHTMLVertSpace($hbz, max($hb, ($hrHeight / 2)), $cell, $firsttag);
+                               $x = $this->GetX();
+                               $y = $this->GetY();
+                               $wtmp = $this->w - $this->lMargin - $this->rMargin;
+                               if ($cell) {
+                                       $wtmp -= ($this->cell_padding['L'] + $this->cell_padding['R']);
+                               }
+                               if ((isset($tag['width'])) AND ($tag['width'] != '')) {
+                                       $hrWidth = $this->getHTMLUnitToUnits($tag['width'], $wtmp, 'px');
+                               } else {
+                                       $hrWidth = $wtmp;
+                               }
+                               $prevlinewidth = $this->GetLineWidth();
+                               $this->SetLineWidth($hrHeight);
+                               $this->Line($x, $y, $x + $hrWidth, $y);
+                               $this->SetLineWidth($prevlinewidth);
+                               $this->addHTMLVertSpace(max($hbc, ($hrHeight / 2)), 0, $cell, !isset($dom[($key + 1)]));
+                               break;
+                       }
+                       case 'a': {
+                               if (array_key_exists('href', $tag['attribute'])) {
+                                       $this->HREF['url'] = $tag['attribute']['href'];
+                               }
+                               break;
+                       }
+                       case 'img': {
+                               if (!empty($tag['attribute']['src'])) {
+                                       if ($tag['attribute']['src'][0] === '@') {
+                                               // data stream
+                                               $tag['attribute']['src'] = '@'.base64_decode(substr($tag['attribute']['src'], 1));
+                                               $type = '';
+                                       } else {
+                                               // get image type
+                                               $type = TCPDF_IMAGES::getImageFileType($tag['attribute']['src']);
+                                       }
+                                       if (!isset($tag['width'])) {
+                                               $tag['width'] = 0;
+                                       }
+                                       if (!isset($tag['height'])) {
+                                               $tag['height'] = 0;
+                                       }
+                                       //if (!isset($tag['attribute']['align'])) {
+                                               // the only alignment supported is "bottom"
+                                               // further development is required for other modes.
+                                               $tag['attribute']['align'] = 'bottom';
+                                       //}
+                                       switch($tag['attribute']['align']) {
+                                               case 'top': {
+                                                       $align = 'T';
+                                                       break;
+                                               }
+                                               case 'middle': {
+                                                       $align = 'M';
+                                                       break;
+                                               }
+                                               case 'bottom': {
+                                                       $align = 'B';
+                                                       break;
+                                               }
+                                               default: {
+                                                       $align = 'B';
+                                                       break;
+                                               }
+                                       }
+                                       $prevy = $this->y;
+                                       $xpos = $this->x;
+                                       $imglink = '';
+                                       if (isset($this->HREF['url']) AND !TCPDF_STATIC::empty_string($this->HREF['url'])) {
+                                               $imglink = $this->HREF['url'];
+                                               if ($imglink[0] == '#') {
+                                                       // convert url to internal link
+                                                       $lnkdata = explode(',', $imglink);
+                                                       if (isset($lnkdata[0])) {
+                                                               $page = intval(substr($lnkdata[0], 1));
+                                                               if (empty($page) OR ($page <= 0)) {
+                                                                       $page = $this->page;
+                                                               }
+                                                               if (isset($lnkdata[1]) AND (strlen($lnkdata[1]) > 0)) {
+                                                                       $lnky = floatval($lnkdata[1]);
+                                                               } else {
+                                                                       $lnky = 0;
+                                                               }
+                                                               $imglink = $this->AddLink();
+                                                               $this->SetLink($imglink, $lnky, $page);
+                                                       }
+                                               }
+                                       }
+                                       $border = 0;
+                                       if (isset($tag['border']) AND !empty($tag['border'])) {
+                                               // currently only support 1 (frame) or a combination of 'LTRB'
+                                               $border = $tag['border'];
+                                       }
+                                       $iw = '';
+                                       if (isset($tag['width'])) {
+                                               $iw = $this->getHTMLUnitToUnits($tag['width'], ($tag['fontsize'] / $this->k), 'px', false);
+                                       }
+                                       $ih = '';
+                                       if (isset($tag['height'])) {
+                                               $ih = $this->getHTMLUnitToUnits($tag['height'], ($tag['fontsize'] / $this->k), 'px', false);
+                                       }
+                                       if (($type == 'eps') OR ($type == 'ai')) {
+                                               $this->ImageEps($tag['attribute']['src'], $xpos, $this->y, $iw, $ih, $imglink, true, $align, '', $border, true);
+                                       } elseif ($type == 'svg') {
+                                               $this->ImageSVG($tag['attribute']['src'], $xpos, $this->y, $iw, $ih, $imglink, $align, '', $border, true);
+                                       } else {
+                                               $this->Image($tag['attribute']['src'], $xpos, $this->y, $iw, $ih, '', $imglink, $align, false, 300, '', false, false, $border, false, false, true);
+                                       }
+                                       switch($align) {
+                                               case 'T': {
+                                                       $this->y = $prevy;
+                                                       break;
+                                               }
+                                               case 'M': {
+                                                       $this->y = (($this->img_rb_y + $prevy - ($this->getCellHeight($tag['fontsize'] / $this->k))) / 2);
+                                                       break;
+                                               }
+                                               case 'B': {
+                                                       $this->y = $this->img_rb_y - ($this->getCellHeight($tag['fontsize'] / $this->k) - ($this->getFontDescent($tag['fontname'], $tag['fontstyle'], $tag['fontsize']) * $this->cell_height_ratio));
+                                                       break;
+                                               }
+                                       }
+                               }
+                               break;
+                       }
+                       case 'dl': {
+                               ++$this->listnum;
+                               if ($this->listnum == 1) {
+                                       $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               } else {
+                                       $this->addHTMLVertSpace(0, 0, $cell, $firsttag);
+                               }
+                               break;
+                       }
+                       case 'dt': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       case 'dd': {
+                               if ($this->rtl) {
+                                       $this->rMargin += $this->listindent;
+                               } else {
+                                       $this->lMargin += $this->listindent;
+                               }
+                               ++$this->listindentlevel;
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       case 'ul':
+                       case 'ol': {
+                               ++$this->listnum;
+                               if ($tag['value'] == 'ol') {
+                                       $this->listordered[$this->listnum] = true;
+                               } else {
+                                       $this->listordered[$this->listnum] = false;
+                               }
+                               if (isset($tag['attribute']['start'])) {
+                                       $this->listcount[$this->listnum] = intval($tag['attribute']['start']) - 1;
+                               } else {
+                                       $this->listcount[$this->listnum] = 0;
+                               }
+                               if ($this->rtl) {
+                                       $this->rMargin += $this->listindent;
+                                       $this->x -= $this->listindent;
+                               } else {
+                                       $this->lMargin += $this->listindent;
+                                       $this->x += $this->listindent;
+                               }
+                               ++$this->listindentlevel;
+                               if ($this->listnum == 1) {
+                                       if ($key > 1) {
+                                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                                       }
+                               } else {
+                                       $this->addHTMLVertSpace(0, 0, $cell, $firsttag);
+                               }
+                               break;
+                       }
+                       case 'li': {
+                               if ($key > 2) {
+                                       $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               }
+                               if ($this->listordered[$this->listnum]) {
+                                       // ordered item
+                                       if (isset($parent['attribute']['type']) AND !TCPDF_STATIC::empty_string($parent['attribute']['type'])) {
+                                               $this->lispacer = $parent['attribute']['type'];
+                                       } elseif (isset($parent['listtype']) AND !TCPDF_STATIC::empty_string($parent['listtype'])) {
+                                               $this->lispacer = $parent['listtype'];
+                                       } elseif (isset($this->lisymbol) AND !TCPDF_STATIC::empty_string($this->lisymbol)) {
+                                               $this->lispacer = $this->lisymbol;
+                                       } else {
+                                               $this->lispacer = '#';
+                                       }
+                                       ++$this->listcount[$this->listnum];
+                                       if (isset($tag['attribute']['value'])) {
+                                               $this->listcount[$this->listnum] = intval($tag['attribute']['value']);
+                                       }
+                               } else {
+                                       // unordered item
+                                       if (isset($parent['attribute']['type']) AND !TCPDF_STATIC::empty_string($parent['attribute']['type'])) {
+                                               $this->lispacer = $parent['attribute']['type'];
+                                       } elseif (isset($parent['listtype']) AND !TCPDF_STATIC::empty_string($parent['listtype'])) {
+                                               $this->lispacer = $parent['listtype'];
+                                       } elseif (isset($this->lisymbol) AND !TCPDF_STATIC::empty_string($this->lisymbol)) {
+                                               $this->lispacer = $this->lisymbol;
+                                       } else {
+                                               $this->lispacer = '!';
+                                       }
+                               }
+                               break;
+                       }
+                       case 'blockquote': {
+                               if ($this->rtl) {
+                                       $this->rMargin += $this->listindent;
+                               } else {
+                                       $this->lMargin += $this->listindent;
+                               }
+                               ++$this->listindentlevel;
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       case 'br': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       case 'div': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       case 'p': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       case 'pre': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               $this->premode = true;
+                               break;
+                       }
+                       case 'sup': {
+                               $this->SetXY($this->GetX(), $this->GetY() - ((0.7 * $this->FontSizePt) / $this->k));
+                               break;
+                       }
+                       case 'sub': {
+                               $this->SetXY($this->GetX(), $this->GetY() + ((0.3 * $this->FontSizePt) / $this->k));
+                               break;
+                       }
+                       case 'h1':
+                       case 'h2':
+                       case 'h3':
+                       case 'h4':
+                       case 'h5':
+                       case 'h6': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag);
+                               break;
+                       }
+                       // Form fields (since 4.8.000 - 2009-09-07)
+                       case 'form': {
+                               if (isset($tag['attribute']['action'])) {
+                                       $this->form_action = $tag['attribute']['action'];
+                               } else {
+                                       $this->Error('Please explicitly set action attribute path!');
+                               }
+                               if (isset($tag['attribute']['enctype'])) {
+                                       $this->form_enctype = $tag['attribute']['enctype'];
+                               } else {
+                                       $this->form_enctype = 'application/x-www-form-urlencoded';
+                               }
+                               if (isset($tag['attribute']['method'])) {
+                                       $this->form_mode = $tag['attribute']['method'];
+                               } else {
+                                       $this->form_mode = 'post';
+                               }
+                               break;
+                       }
+                       case 'input': {
+                               if (isset($tag['attribute']['name']) AND !TCPDF_STATIC::empty_string($tag['attribute']['name'])) {
+                                       $name = $tag['attribute']['name'];
+                               } else {
+                                       break;
+                               }
+                               $prop = array();
+                               $opt = array();
+                               if (isset($tag['attribute']['readonly']) AND !TCPDF_STATIC::empty_string($tag['attribute']['readonly'])) {
+                                       $prop['readonly'] = true;
+                               }
+                               if (isset($tag['attribute']['value']) AND !TCPDF_STATIC::empty_string($tag['attribute']['value'])) {
+                                       $value = $tag['attribute']['value'];
+                               }
+                               if (isset($tag['attribute']['maxlength']) AND !TCPDF_STATIC::empty_string($tag['attribute']['maxlength'])) {
+                                       $opt['maxlen'] = intval($tag['attribute']['maxlength']);
+                               }
+                               $h = $this->getCellHeight($this->FontSize);
+                               if (isset($tag['attribute']['size']) AND !TCPDF_STATIC::empty_string($tag['attribute']['size'])) {
+                                       $w = intval($tag['attribute']['size']) * $this->GetStringWidth(chr(32)) * 2;
+                               } else {
+                                       $w = $h;
+                               }
+                               if (isset($tag['attribute']['checked']) AND (($tag['attribute']['checked'] == 'checked') OR ($tag['attribute']['checked'] == 'true'))) {
+                                       $checked = true;
+                               } else {
+                                       $checked = false;
+                               }
+                               if (isset($tag['align'])) {
+                                       switch ($tag['align']) {
+                                               case 'C': {
+                                                       $opt['q'] = 1;
+                                                       break;
+                                               }
+                                               case 'R': {
+                                                       $opt['q'] = 2;
+                                                       break;
+                                               }
+                                               case 'L':
+                                               default: {
+                                                       break;
+                                               }
+                                       }
+                               }
+                               switch ($tag['attribute']['type']) {
+                                       case 'text': {
+                                               if (isset($value)) {
+                                                       $opt['v'] = $value;
+                                               }
+                                               $this->TextField($name, $w, $h, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'password': {
+                                               if (isset($value)) {
+                                                       $opt['v'] = $value;
+                                               }
+                                               $prop['password'] = 'true';
+                                               $this->TextField($name, $w, $h, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'checkbox': {
+                                               if (!isset($value)) {
+                                                       break;
+                                               }
+                                               $this->CheckBox($name, $w, $checked, $prop, $opt, $value, '', '', false);
+                                               break;
+                                       }
+                                       case 'radio': {
+                                               if (!isset($value)) {
+                                                       break;
+                                               }
+                                               $this->RadioButton($name, $w, $prop, $opt, $value, $checked, '', '', false);
+                                               break;
+                                       }
+                                       case 'submit': {
+                                               if (!isset($value)) {
+                                                       $value = 'submit';
+                                               }
+                                               $w = $this->GetStringWidth($value) * 1.5;
+                                               $h *= 1.6;
+                                               $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255));
+                                               $action = array();
+                                               $action['S'] = 'SubmitForm';
+                                               $action['F'] = $this->form_action;
+                                               if ($this->form_enctype != 'FDF') {
+                                                       $action['Flags'] = array('ExportFormat');
+                                               }
+                                               if ($this->form_mode == 'get') {
+                                                       $action['Flags'] = array('GetMethod');
+                                               }
+                                               $this->Button($name, $w, $h, $value, $action, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'reset': {
+                                               if (!isset($value)) {
+                                                       $value = 'reset';
+                                               }
+                                               $w = $this->GetStringWidth($value) * 1.5;
+                                               $h *= 1.6;
+                                               $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255));
+                                               $this->Button($name, $w, $h, $value, array('S'=>'ResetForm'), $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'file': {
+                                               $prop['fileSelect'] = 'true';
+                                               $this->TextField($name, $w, $h, $prop, $opt, '', '', false);
+                                               if (!isset($value)) {
+                                                       $value = '*';
+                                               }
+                                               $w = $this->GetStringWidth($value) * 2;
+                                               $h *= 1.2;
+                                               $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255));
+                                               $jsaction = 'var f=this.getField(\''.$name.'\'); f.browseForFileToSubmit();';
+                                               $this->Button('FB_'.$name, $w, $h, $value, $jsaction, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'hidden': {
+                                               if (isset($value)) {
+                                                       $opt['v'] = $value;
+                                               }
+                                               $opt['f'] = array('invisible', 'hidden');
+                                               $this->TextField($name, 0, 0, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'image': {
+                                               // THIS TYPE MUST BE FIXED
+                                               if (isset($tag['attribute']['src']) AND !TCPDF_STATIC::empty_string($tag['attribute']['src'])) {
+                                                       $img = $tag['attribute']['src'];
+                                               } else {
+                                                       break;
+                                               }
+                                               $value = 'img';
+                                               //$opt['mk'] = array('i'=>$img, 'tp'=>1, 'if'=>array('sw'=>'A', 's'=>'A', 'fb'=>false));
+                                               if (isset($tag['attribute']['onclick']) AND !empty($tag['attribute']['onclick'])) {
+                                                       $jsaction = $tag['attribute']['onclick'];
+                                               } else {
+                                                       $jsaction = '';
+                                               }
+                                               $this->Button($name, $w, $h, $value, $jsaction, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                                       case 'button': {
+                                               if (!isset($value)) {
+                                                       $value = ' ';
+                                               }
+                                               $w = $this->GetStringWidth($value) * 1.5;
+                                               $h *= 1.6;
+                                               $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255));
+                                               if (isset($tag['attribute']['onclick']) AND !empty($tag['attribute']['onclick'])) {
+                                                       $jsaction = $tag['attribute']['onclick'];
+                                               } else {
+                                                       $jsaction = '';
+                                               }
+                                               $this->Button($name, $w, $h, $value, $jsaction, $prop, $opt, '', '', false);
+                                               break;
+                                       }
+                               }
+                               break;
+                       }
+                       case 'textarea': {
+                               $prop = array();
+                               $opt = array();
+                               if (isset($tag['attribute']['readonly']) AND !TCPDF_STATIC::empty_string($tag['attribute']['readonly'])) {
+                                       $prop['readonly'] = true;
+                               }
+                               if (isset($tag['attribute']['name']) AND !TCPDF_STATIC::empty_string($tag['attribute']['name'])) {
+                                       $name = $tag['attribute']['name'];
+                               } else {
+                                       break;
+                               }
+                               if (isset($tag['attribute']['value']) AND !TCPDF_STATIC::empty_string($tag['attribute']['value'])) {
+                                       $opt['v'] = $tag['attribute']['value'];
+                               }
+                               if (isset($tag['attribute']['cols']) AND !TCPDF_STATIC::empty_string($tag['attribute']['cols'])) {
+                                       $w = intval($tag['attribute']['cols']) * $this->GetStringWidth(chr(32)) * 2;
+                               } else {
+                                       $w = 40;
+                               }
+                               if (isset($tag['attribute']['rows']) AND !TCPDF_STATIC::empty_string($tag['attribute']['rows'])) {
+                                       $h = intval($tag['attribute']['rows']) * $this->getCellHeight($this->FontSize);
+                               } else {
+                                       $h = 10;
+                               }
+                               $prop['multiline'] = 'true';
+                               $this->TextField($name, $w, $h, $prop, $opt, '', '', false);
+                               break;
+                       }
+                       case 'select': {
+                               $h = $this->getCellHeight($this->FontSize);
+                               if (isset($tag['attribute']['size']) AND !TCPDF_STATIC::empty_string($tag['attribute']['size'])) {
+                                       $h *= ($tag['attribute']['size'] + 1);
+                               }
+                               $prop = array();
+                               $opt = array();
+                               if (isset($tag['attribute']['name']) AND !TCPDF_STATIC::empty_string($tag['attribute']['name'])) {
+                                       $name = $tag['attribute']['name'];
+                               } else {
+                                       break;
+                               }
+                               $w = 0;
+                               if (isset($tag['attribute']['opt']) AND !TCPDF_STATIC::empty_string($tag['attribute']['opt'])) {
+                                       $options = explode('#!NwL!#', $tag['attribute']['opt']);
+                                       $values = array();
+                                       foreach ($options as $val) {
+                                               if (strpos($val, '#!TaB!#') !== false) {
+                                                       $opts = explode('#!TaB!#', $val);
+                                                       $values[] = $opts;
+                                                       $w = max($w, $this->GetStringWidth($opts[1]));
+                                               } else {
+                                                       $values[] = $val;
+                                                       $w = max($w, $this->GetStringWidth($val));
+                                               }
+                                       }
+                               } else {
+                                       break;
+                               }
+                               $w *= 2;
+                               if (isset($tag['attribute']['multiple']) AND ($tag['attribute']['multiple']='multiple')) {
+                                       $prop['multipleSelection'] = 'true';
+                                       $this->ListBox($name, $w, $h, $values, $prop, $opt, '', '', false);
+                               } else {
+                                       $this->ComboBox($name, $w, $h, $values, $prop, $opt, '', '', false);
+                               }
+                               break;
+                       }
+                       case 'tcpdf': {
+                               if (defined('K_TCPDF_CALLS_IN_HTML') AND (K_TCPDF_CALLS_IN_HTML === true)) {
+                                       // Special tag used to call TCPDF methods
+                                       if (isset($tag['attribute']['method'])) {
+                                               $tcpdf_method = $tag['attribute']['method'];
+                                               if (method_exists($this, $tcpdf_method)) {
+                                                       if (isset($tag['attribute']['params']) AND (!empty($tag['attribute']['params']))) {
+                                                               $params = TCPDF_STATIC::unserializeTCPDFtagParameters($tag['attribute']['params']);
+                                                               call_user_func_array(array($this, $tcpdf_method), $params);
+                                                       } else {
+                                                               $this->$tcpdf_method();
+                                                       }
+                                                       $this->newline = true;
+                                               }
+                                       }
+                               }
+                               break;
+                       }
+                       default: {
+                               break;
+                       }
+               }
+               // define tags that support borders and background colors
+               $bordertags = array('blockquote','br','dd','dl','div','dt','h1','h2','h3','h4','h5','h6','hr','li','ol','p','pre','ul','tcpdf','table');
+               if (in_array($tag['value'], $bordertags)) {
+                       // set border
+                       $dom[$key]['borderposition'] = $this->getBorderStartPosition();
+               }
+               if ($dom[$key]['self'] AND isset($dom[$key]['attribute']['pagebreakafter'])) {
+                       $pba = $dom[$key]['attribute']['pagebreakafter'];
+                       // check for pagebreak
+                       if (($pba == 'true') OR ($pba == 'left') OR ($pba == 'right')) {
+                               // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                               $this->checkPageBreak($this->PageBreakTrigger + 1);
+                       }
+                       if ((($pba == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0))))
+                               OR (($pba == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) {
+                               // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                               $this->checkPageBreak($this->PageBreakTrigger + 1);
+                       }
+               }
+               return $dom;
+       }
+
+       /**
+        * Process closing tags.
+        * @param $dom (array) html dom array
+        * @param $key (int) current element id
+        * @param $cell (boolean) if true add the default left (or right if RTL) padding to each new line (default false).
+        * @param $maxbottomliney (int) maximum y value of current line
+        * @return $dom array
+        * @protected
+        */
+       protected function closeHTMLTagHandler($dom, $key, $cell, $maxbottomliney=0) {
+               $tag = $dom[$key];
+               $parent = $dom[($dom[$key]['parent'])];
+               $lasttag = ((!isset($dom[($key + 1)])) OR ((!isset($dom[($key + 2)])) AND ($dom[($key + 1)]['value'] == 'marker')));
+               $in_table_head = false;
+               // maximum x position (used to draw borders)
+               if ($this->rtl) {
+                       $xmax = $this->w;
+               } else {
+                       $xmax = 0;
+               }
+               if ($tag['block']) {
+                       $hbz = 0; // distance from y to line bottom
+                       $hb = 0; // vertical space between block tags
+                       // calculate vertical space for block tags
+                       if (isset($this->tagvspaces[$tag['value']][1]['h']) AND ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) {
+                               $pre_h = $this->tagvspaces[$tag['value']][1]['h'];
+                       } elseif (isset($parent['fontsize'])) {
+                               $pre_h = $this->getCellHeight($parent['fontsize'] / $this->k);
+                       } else {
+                               $pre_h = $this->getCellHeight($this->FontSize);
+                       }
+                       if (isset($this->tagvspaces[$tag['value']][1]['n'])) {
+                               $cn = $this->tagvspaces[$tag['value']][1]['n'];
+                       } elseif (preg_match('/[h][0-9]/', $tag['value']) > 0) {
+                               $cn = 0.6;
+                       } else {
+                               $cn = 1;
+                       }
+                       if ((!isset($this->tagvspaces[$tag['value']])) AND ($tag['value'] == 'div')) {
+                               $hb = 0;
+                       } else {
+                               $hb = ($cn * $pre_h);
+                       }
+                       if ($maxbottomliney > $this->PageBreakTrigger) {
+                               $hbz = $this->getCellHeight($this->FontSize);
+                       } elseif ($this->y < $maxbottomliney) {
+                               $hbz = ($maxbottomliney - $this->y);
+                       }
+               }
+               // Closing tag
+               switch($tag['value']) {
+                       case 'tr': {
+                               $table_el = $dom[($dom[$key]['parent'])]['parent'];
+                               if (!isset($parent['endy'])) {
+                                       $dom[($dom[$key]['parent'])]['endy'] = $this->y;
+                                       $parent['endy'] = $this->y;
+                               }
+                               if (!isset($parent['endpage'])) {
+                                       $dom[($dom[$key]['parent'])]['endpage'] = $this->page;
+                                       $parent['endpage'] = $this->page;
+                               }
+                               if (!isset($parent['endcolumn'])) {
+                                       $dom[($dom[$key]['parent'])]['endcolumn'] = $this->current_column;
+                                       $parent['endcolumn'] = $this->current_column;
+                               }
+                               // update row-spanned cells
+                               if (isset($dom[$table_el]['rowspans'])) {
+                                       foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) {
+                                               $dom[$table_el]['rowspans'][$k]['rowspan'] -= 1;
+                                               if ($dom[$table_el]['rowspans'][$k]['rowspan'] == 0) {
+                                                       if (($dom[$table_el]['rowspans'][$k]['endpage'] == $parent['endpage']) AND ($dom[$table_el]['rowspans'][$k]['endcolumn'] == $parent['endcolumn'])) {
+                                                               $dom[($dom[$key]['parent'])]['endy'] = max($dom[$table_el]['rowspans'][$k]['endy'], $parent['endy']);
+                                                       } elseif (($dom[$table_el]['rowspans'][$k]['endpage'] > $parent['endpage']) OR ($dom[$table_el]['rowspans'][$k]['endcolumn'] > $parent['endcolumn'])) {
+                                                               $dom[($dom[$key]['parent'])]['endy'] = $dom[$table_el]['rowspans'][$k]['endy'];
+                                                               $dom[($dom[$key]['parent'])]['endpage'] = $dom[$table_el]['rowspans'][$k]['endpage'];
+                                                               $dom[($dom[$key]['parent'])]['endcolumn'] = $dom[$table_el]['rowspans'][$k]['endcolumn'];
+                                                       }
+                                               }
+                                       }
+                                       // report new endy and endpage to the rowspanned cells
+                                       foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) {
+                                               if ($dom[$table_el]['rowspans'][$k]['rowspan'] == 0) {
+                                                       $dom[$table_el]['rowspans'][$k]['endpage'] = max($dom[$table_el]['rowspans'][$k]['endpage'], $dom[($dom[$key]['parent'])]['endpage']);
+                                                       $dom[($dom[$key]['parent'])]['endpage'] = $dom[$table_el]['rowspans'][$k]['endpage'];
+                                                       $dom[$table_el]['rowspans'][$k]['endcolumn'] = max($dom[$table_el]['rowspans'][$k]['endcolumn'], $dom[($dom[$key]['parent'])]['endcolumn']);
+                                                       $dom[($dom[$key]['parent'])]['endcolumn'] = $dom[$table_el]['rowspans'][$k]['endcolumn'];
+                                                       $dom[$table_el]['rowspans'][$k]['endy'] = max($dom[$table_el]['rowspans'][$k]['endy'], $dom[($dom[$key]['parent'])]['endy']);
+                                                       $dom[($dom[$key]['parent'])]['endy'] = $dom[$table_el]['rowspans'][$k]['endy'];
+                                               }
+                                       }
+                                       // update remaining rowspanned cells
+                                       foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) {
+                                               if ($dom[$table_el]['rowspans'][$k]['rowspan'] == 0) {
+                                                       $dom[$table_el]['rowspans'][$k]['endpage'] = $dom[($dom[$key]['parent'])]['endpage'];
+                                                       $dom[$table_el]['rowspans'][$k]['endcolumn'] = $dom[($dom[$key]['parent'])]['endcolumn'];
+                                                       $dom[$table_el]['rowspans'][$k]['endy'] = $dom[($dom[$key]['parent'])]['endy'];
+                                               }
+                                       }
+                               }
+                               $prev_page = $this->page;
+                               $this->setPage($dom[($dom[$key]['parent'])]['endpage']);
+                               if ($this->num_columns > 1) {
+                                       if ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1)))
+                                               OR (($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']) AND ($prev_page < $this->page))) {
+                                               // page jump
+                                               $this->selectColumn(0);
+                                               $dom[($dom[$key]['parent'])]['endcolumn'] = 0;
+                                               $dom[($dom[$key]['parent'])]['endy'] = $this->y;
+                                       } else {
+                                               $this->selectColumn($dom[($dom[$key]['parent'])]['endcolumn']);
+                                               $this->y = $dom[($dom[$key]['parent'])]['endy'];
+                                       }
+                               } else {
+                                       $this->y = $dom[($dom[$key]['parent'])]['endy'];
+                               }
+                               if (isset($dom[$table_el]['attribute']['cellspacing'])) {
+                                       $this->y += $this->getHTMLUnitToUnits($dom[$table_el]['attribute']['cellspacing'], 1, 'px');
+                               } elseif (isset($dom[$table_el]['border-spacing'])) {
+                                       $this->y += $dom[$table_el]['border-spacing']['V'];
+                               }
+                               $this->Ln(0, $cell);
+                               if ($this->current_column == $parent['startcolumn']) {
+                                       $this->x = $parent['startx'];
+                               }
+                               // account for booklet mode
+                               if ($this->page > $parent['startpage']) {
+                                       if (($this->rtl) AND ($this->pagedim[$this->page]['orm'] != $this->pagedim[$parent['startpage']]['orm'])) {
+                                               $this->x -= ($this->pagedim[$this->page]['orm'] - $this->pagedim[$parent['startpage']]['orm']);
+                                       } elseif ((!$this->rtl) AND ($this->pagedim[$this->page]['olm'] != $this->pagedim[$parent['startpage']]['olm'])) {
+                                               $this->x += ($this->pagedim[$this->page]['olm'] - $this->pagedim[$parent['startpage']]['olm']);
+                                       }
+                               }
+                               break;
+                       }
+                       case 'tablehead':
+                               // closing tag used for the thead part
+                               $in_table_head = true;
+                               $this->inthead = false;
+                       case 'table': {
+                               $table_el = $parent;
+                               // set default border
+                               if (isset($table_el['attribute']['border']) AND ($table_el['attribute']['border'] > 0)) {
+                                       // set default border
+                                       $border = array('LTRB' => array('width' => $this->getCSSBorderWidth($table_el['attribute']['border']), 'cap'=>'square', 'join'=>'miter', 'dash'=> 0, 'color'=>array(0,0,0)));
+                               } else {
+                                       $border = 0;
+                               }
+                               $default_border = $border;
+                               // fix bottom line alignment of last line before page break
+                               foreach ($dom[($dom[$key]['parent'])]['trids'] as $j => $trkey) {
+                                       // update row-spanned cells
+                                       if (isset($dom[($dom[$key]['parent'])]['rowspans'])) {
+                                               foreach ($dom[($dom[$key]['parent'])]['rowspans'] as $k => $trwsp) {
+                                                       if (isset($prevtrkey) AND ($trwsp['trid'] == $prevtrkey) AND ($trwsp['mrowspan'] > 0)) {
+                                                               $dom[($dom[$key]['parent'])]['rowspans'][$k]['trid'] = $trkey;
+                                                       }
+                                                       if ($dom[($dom[$key]['parent'])]['rowspans'][$k]['trid'] == $trkey) {
+                                                               $dom[($dom[$key]['parent'])]['rowspans'][$k]['mrowspan'] -= 1;
+                                                       }
+                                               }
+                                       }
+                                       if (isset($prevtrkey) AND ($dom[$trkey]['startpage'] > $dom[$prevtrkey]['endpage'])) {
+                                               $pgendy = $this->pagedim[$dom[$prevtrkey]['endpage']]['hk'] - $this->pagedim[$dom[$prevtrkey]['endpage']]['bm'];
+                                               $dom[$prevtrkey]['endy'] = $pgendy;
+                                               // update row-spanned cells
+                                               if (isset($dom[($dom[$key]['parent'])]['rowspans'])) {
+                                                       foreach ($dom[($dom[$key]['parent'])]['rowspans'] as $k => $trwsp) {
+                                                               if (($trwsp['trid'] == $prevtrkey) AND ($trwsp['mrowspan'] >= 0) AND ($trwsp['endpage'] == $dom[$prevtrkey]['endpage'])) {
+                                                                       $dom[($dom[$key]['parent'])]['rowspans'][$k]['endy'] = $pgendy;
+                                                                       $dom[($dom[$key]['parent'])]['rowspans'][$k]['mrowspan'] = -1;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                                       $prevtrkey = $trkey;
+                                       $table_el = $dom[($dom[$key]['parent'])];
+                               }
+                               // for each row
+                               if (count($table_el['trids']) > 0) {
+                                       unset($xmax);
+                               }
+                               foreach ($table_el['trids'] as $j => $trkey) {
+                                       $parent = $dom[$trkey];
+                                       if (!isset($xmax)) {
+                                               $xmax = $parent['cellpos'][(count($parent['cellpos']) - 1)]['endx'];
+                                       }
+                                       // for each cell on the row
+                                       foreach ($parent['cellpos'] as $k => $cellpos) {
+                                               if (isset($cellpos['rowspanid']) AND ($cellpos['rowspanid'] >= 0)) {
+                                                       $cellpos['startx'] = $table_el['rowspans'][($cellpos['rowspanid'])]['startx'];
+                                                       $cellpos['endx'] = $table_el['rowspans'][($cellpos['rowspanid'])]['endx'];
+                                                       $endy = $table_el['rowspans'][($cellpos['rowspanid'])]['endy'];
+                                                       $startpage = $table_el['rowspans'][($cellpos['rowspanid'])]['startpage'];
+                                                       $endpage = $table_el['rowspans'][($cellpos['rowspanid'])]['endpage'];
+                                                       $startcolumn = $table_el['rowspans'][($cellpos['rowspanid'])]['startcolumn'];
+                                                       $endcolumn = $table_el['rowspans'][($cellpos['rowspanid'])]['endcolumn'];
+                                               } else {
+                                                       $endy = $parent['endy'];
+                                                       $startpage = $parent['startpage'];
+                                                       $endpage = $parent['endpage'];
+                                                       $startcolumn = $parent['startcolumn'];
+                                                       $endcolumn = $parent['endcolumn'];
+                                               }
+                                               if ($this->num_columns == 0) {
+                                                       $this->num_columns = 1;
+                                               }
+                                               if (isset($cellpos['border'])) {
+                                                       $border = $cellpos['border'];
+                                               }
+                                               if (isset($cellpos['bgcolor']) AND ($cellpos['bgcolor']) !== false) {
+                                                       $this->SetFillColorArray($cellpos['bgcolor']);
+                                                       $fill = true;
+                                               } else {
+                                                       $fill = false;
+                                               }
+                                               $x = $cellpos['startx'];
+                                               $y = $parent['starty'];
+                                               $starty = $y;
+                                               $w = abs($cellpos['endx'] - $cellpos['startx']);
+                                               // get border modes
+                                               $border_start = TCPDF_STATIC::getBorderMode($border, $position='start', $this->opencell);
+                                               $border_end = TCPDF_STATIC::getBorderMode($border, $position='end', $this->opencell);
+                                               $border_middle = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell);
+                                               // design borders around HTML cells.
+                                               for ($page = $startpage; $page <= $endpage; ++$page) { // for each page
+                                                       $ccode = '';
+                                                       $this->setPage($page);
+                                                       if ($this->num_columns < 2) {
+                                                               // single-column mode
+                                                               $this->x = $x;
+                                                               $this->y = $this->tMargin;
+                                                       }
+                                                       // account for margin changes
+                                                       if ($page > $startpage) {
+                                                               if (($this->rtl) AND ($this->pagedim[$page]['orm'] != $this->pagedim[$startpage]['orm'])) {
+                                                                       $this->x -= ($this->pagedim[$page]['orm'] - $this->pagedim[$startpage]['orm']);
+                                                               } elseif ((!$this->rtl) AND ($this->pagedim[$page]['olm'] != $this->pagedim[$startpage]['olm'])) {
+                                                                       $this->x += ($this->pagedim[$page]['olm'] - $this->pagedim[$startpage]['olm']);
+                                                               }
+                                                       }
+                                                       if ($startpage == $endpage) { // single page
+                                                               $deltacol = 0;
+                                                               $deltath = 0;
+                                                               for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column
+                                                                       $this->selectColumn($column);
+                                                                       if ($startcolumn == $endcolumn) { // single column
+                                                                               $cborder = $border;
+                                                                               $h = $endy - $parent['starty'];
+                                                                               $this->y = $y;
+                                                                               $this->x = $x;
+                                                                       } elseif ($column == $startcolumn) { // first column
+                                                                               $cborder = $border_start;
+                                                                               $this->y = $starty;
+                                                                               $this->x = $x;
+                                                                               $h = $this->h - $this->y - $this->bMargin;
+                                                                               if ($this->rtl) {
+                                                                                       $deltacol = $this->x + $this->rMargin - $this->w;
+                                                                               } else {
+                                                                                       $deltacol = $this->x - $this->lMargin;
+                                                                               }
+                                                                       } elseif ($column == $endcolumn) { // end column
+                                                                               $cborder = $border_end;
+                                                                               if (isset($this->columns[$column]['th']['\''.$page.'\''])) {
+                                                                                       $this->y = $this->columns[$column]['th']['\''.$page.'\''];
+                                                                               }
+                                                                               $this->x += $deltacol;
+                                                                               $h = $endy - $this->y;
+                                                                       } else { // middle column
+                                                                               $cborder = $border_middle;
+                                                                               if (isset($this->columns[$column]['th']['\''.$page.'\''])) {
+                                                                                       $this->y = $this->columns[$column]['th']['\''.$page.'\''];
+                                                                               }
+                                                                               $this->x += $deltacol;
+                                                                               $h = $this->h - $this->y - $this->bMargin;
+                                                                       }
+                                                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                                                               } // end for each column
+                                                       } elseif ($page == $startpage) { // first page
+                                                               $deltacol = 0;
+                                                               $deltath = 0;
+                                                               for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column
+                                                                       $this->selectColumn($column);
+                                                                       if ($column == $startcolumn) { // first column
+                                                                               $cborder = $border_start;
+                                                                               $this->y = $starty;
+                                                                               $this->x = $x;
+                                                                               $h = $this->h - $this->y - $this->bMargin;
+                                                                               if ($this->rtl) {
+                                                                                       $deltacol = $this->x + $this->rMargin - $this->w;
+                                                                               } else {
+                                                                                       $deltacol = $this->x - $this->lMargin;
+                                                                               }
+                                                                       } else { // middle column
+                                                                               $cborder = $border_middle;
+                                                                               if (isset($this->columns[$column]['th']['\''.$page.'\''])) {
+                                                                                       $this->y = $this->columns[$column]['th']['\''.$page.'\''];
+                                                                               }
+                                                                               $this->x += $deltacol;
+                                                                               $h = $this->h - $this->y - $this->bMargin;
+                                                                       }
+                                                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                                                               } // end for each column
+                                                       } elseif ($page == $endpage) { // last page
+                                                               $deltacol = 0;
+                                                               $deltath = 0;
+                                                               for ($column = 0; $column <= $endcolumn; ++$column) { // for each column
+                                                                       $this->selectColumn($column);
+                                                                       if ($column == $endcolumn) { // end column
+                                                                               $cborder = $border_end;
+                                                                               if (isset($this->columns[$column]['th']['\''.$page.'\''])) {
+                                                                                       $this->y = $this->columns[$column]['th']['\''.$page.'\''];
+                                                                               }
+                                                                               $this->x += $deltacol;
+                                                                               $h = $endy - $this->y;
+                                                                       } else { // middle column
+                                                                               $cborder = $border_middle;
+                                                                               if (isset($this->columns[$column]['th']['\''.$page.'\''])) {
+                                                                                       $this->y = $this->columns[$column]['th']['\''.$page.'\''];
+                                                                               }
+                                                                               $this->x += $deltacol;
+                                                                               $h = $this->h - $this->y - $this->bMargin;
+                                                                       }
+                                                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                                                               } // end for each column
+                                                       } else { // middle page
+                                                               $deltacol = 0;
+                                                               $deltath = 0;
+                                                               for ($column = 0; $column < $this->num_columns; ++$column) { // for each column
+                                                                       $this->selectColumn($column);
+                                                                       $cborder = $border_middle;
+                                                                       if (isset($this->columns[$column]['th']['\''.$page.'\''])) {
+                                                                               $this->y = $this->columns[$column]['th']['\''.$page.'\''];
+                                                                       }
+                                                                       $this->x += $deltacol;
+                                                                       $h = $this->h - $this->y - $this->bMargin;
+                                                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                                                               } // end for each column
+                                                       }
+                                                       if ($cborder OR $fill) {
+                                                               $offsetlen = strlen($ccode);
+                                                               // draw border and fill
+                                                               if ($this->inxobj) {
+                                                                       // we are inside an XObject template
+                                                                       if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) {
+                                                                               $pagemarkkey = key($this->xobjects[$this->xobjid]['transfmrk']);
+                                                                               $pagemark = $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey];
+                                                                               $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey] += $offsetlen;
+                                                                       } else {
+                                                                               $pagemark = $this->xobjects[$this->xobjid]['intmrk'];
+                                                                               $this->xobjects[$this->xobjid]['intmrk'] += $offsetlen;
+                                                                       }
+                                                                       $pagebuff = $this->xobjects[$this->xobjid]['outdata'];
+                                                                       $pstart = substr($pagebuff, 0, $pagemark);
+                                                                       $pend = substr($pagebuff, $pagemark);
+                                                                       $this->xobjects[$this->xobjid]['outdata'] = $pstart.$ccode.$pend;
+                                                               } else {
+                                                                       // draw border and fill
+                                                                       if (end($this->transfmrk[$this->page]) !== false) {
+                                                                               $pagemarkkey = key($this->transfmrk[$this->page]);
+                                                                               $pagemark = $this->transfmrk[$this->page][$pagemarkkey];
+                                                                       } elseif ($this->InFooter) {
+                                                                               $pagemark = $this->footerpos[$this->page];
+                                                                       } else {
+                                                                               $pagemark = $this->intmrk[$this->page];
+                                                                       }
+                                                                       $pagebuff = $this->getPageBuffer($this->page);
+                                                                       $pstart = substr($pagebuff, 0, $pagemark);
+                                                                       $pend = substr($pagebuff, $pagemark);
+                                                                       $this->setPageBuffer($this->page, $pstart.$ccode.$pend);
+                                                               }
+                                                       }
+                                               } // end for each page
+                                               // restore default border
+                                               $border = $default_border;
+                                       } // end for each cell on the row
+                                       if (isset($table_el['attribute']['cellspacing'])) {
+                                               $this->y += $this->getHTMLUnitToUnits($table_el['attribute']['cellspacing'], 1, 'px');
+                                       } elseif (isset($table_el['border-spacing'])) {
+                                               $this->y += $table_el['border-spacing']['V'];
+                                       }
+                                       $this->Ln(0, $cell);
+                                       $this->x = $parent['startx'];
+                                       if ($endpage > $startpage) {
+                                               if (($this->rtl) AND ($this->pagedim[$endpage]['orm'] != $this->pagedim[$startpage]['orm'])) {
+                                                       $this->x += ($this->pagedim[$endpage]['orm'] - $this->pagedim[$startpage]['orm']);
+                                               } elseif ((!$this->rtl) AND ($this->pagedim[$endpage]['olm'] != $this->pagedim[$startpage]['olm'])) {
+                                                       $this->x += ($this->pagedim[$endpage]['olm'] - $this->pagedim[$startpage]['olm']);
+                                               }
+                                       }
+                               }
+                               if (!$in_table_head) { // we are not inside a thead section
+                                       $this->cell_padding = $table_el['old_cell_padding'];
+                                       // reset row height
+                                       $this->resetLastH();
+                                       if (($this->page == ($this->numpages - 1)) AND ($this->pageopen[$this->numpages])) {
+                                               $plendiff = ($this->pagelen[$this->numpages] - $this->emptypagemrk[$this->numpages]);
+                                               if (($plendiff > 0) AND ($plendiff < 60)) {
+                                                       $pagediff = substr($this->getPageBuffer($this->numpages), $this->emptypagemrk[$this->numpages], $plendiff);
+                                                       if (substr($pagediff, 0, 5) == 'BT /F') {
+                                                               // the difference is only a font setting
+                                                               $plendiff = 0;
+                                                       }
+                                               }
+                                               if ($plendiff == 0) {
+                                                       // remove last blank page
+                                                       $this->deletePage($this->numpages);
+                                               }
+                                       }
+                                       if (isset($this->theadMargins['top'])) {
+                                               // restore top margin
+                                               $this->tMargin = $this->theadMargins['top'];
+                                       }
+                                       if (!isset($table_el['attribute']['nested']) OR ($table_el['attribute']['nested'] != 'true')) {
+                                               // reset main table header
+                                               $this->thead = '';
+                                               $this->theadMargins = array();
+                                               $this->pagedim[$this->page]['tm'] = $this->tMargin;
+                                       }
+                               }
+                               $parent = $table_el;
+                               break;
+                       }
+                       case 'a': {
+                               $this->HREF = '';
+                               break;
+                       }
+                       case 'sup': {
+                               $this->SetXY($this->GetX(), $this->GetY() + ((0.7 * $parent['fontsize']) / $this->k));
+                               break;
+                       }
+                       case 'sub': {
+                               $this->SetXY($this->GetX(), $this->GetY() - ((0.3 * $parent['fontsize']) / $this->k));
+                               break;
+                       }
+                       case 'div': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               break;
+                       }
+                       case 'blockquote': {
+                               if ($this->rtl) {
+                                       $this->rMargin -= $this->listindent;
+                               } else {
+                                       $this->lMargin -= $this->listindent;
+                               }
+                               --$this->listindentlevel;
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               break;
+                       }
+                       case 'p': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               break;
+                       }
+                       case 'pre': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               $this->premode = false;
+                               break;
+                       }
+                       case 'dl': {
+                               --$this->listnum;
+                               if ($this->listnum <= 0) {
+                                       $this->listnum = 0;
+                                       $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               } else {
+                                       $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag);
+                               }
+                               $this->resetLastH();
+                               break;
+                       }
+                       case 'dt': {
+                               $this->lispacer = '';
+                               $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag);
+                               break;
+                       }
+                       case 'dd': {
+                               $this->lispacer = '';
+                               if ($this->rtl) {
+                                       $this->rMargin -= $this->listindent;
+                               } else {
+                                       $this->lMargin -= $this->listindent;
+                               }
+                               --$this->listindentlevel;
+                               $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag);
+                               break;
+                       }
+                       case 'ul':
+                       case 'ol': {
+                               --$this->listnum;
+                               $this->lispacer = '';
+                               if ($this->rtl) {
+                                       $this->rMargin -= $this->listindent;
+                               } else {
+                                       $this->lMargin -= $this->listindent;
+                               }
+                               --$this->listindentlevel;
+                               if ($this->listnum <= 0) {
+                                       $this->listnum = 0;
+                                       $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               } else {
+                                       $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag);
+                               }
+                               $this->resetLastH();
+                               break;
+                       }
+                       case 'li': {
+                               $this->lispacer = '';
+                               $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag);
+                               break;
+                       }
+                       case 'h1':
+                       case 'h2':
+                       case 'h3':
+                       case 'h4':
+                       case 'h5':
+                       case 'h6': {
+                               $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag);
+                               break;
+                       }
+                       // Form fields (since 4.8.000 - 2009-09-07)
+                       case 'form': {
+                               $this->form_action = '';
+                               $this->form_enctype = 'application/x-www-form-urlencoded';
+                               break;
+                       }
+                       default : {
+                               break;
+                       }
+               }
+               // draw border and background (if any)
+               $this->drawHTMLTagBorder($parent, $xmax);
+               if (isset($dom[($dom[$key]['parent'])]['attribute']['pagebreakafter'])) {
+                       $pba = $dom[($dom[$key]['parent'])]['attribute']['pagebreakafter'];
+                       // check for pagebreak
+                       if (($pba == 'true') OR ($pba == 'left') OR ($pba == 'right')) {
+                               // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                               $this->checkPageBreak($this->PageBreakTrigger + 1);
+                       }
+                       if ((($pba == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0))))
+                               OR (($pba == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) {
+                               // add a page (or trig AcceptPageBreak() for multicolumn mode)
+                               $this->checkPageBreak($this->PageBreakTrigger + 1);
+                       }
+               }
+               $this->tmprtl = false;
+               return $dom;
+       }
+
+       /**
+        * Add vertical spaces if needed.
+        * @param $hbz (string) Distance between current y and line bottom.
+        * @param $hb (string) The height of the break.
+        * @param $cell (boolean) if true add the default left (or right if RTL) padding to each new line (default false).
+        * @param $firsttag (boolean) set to true when the tag is the first.
+        * @param $lasttag (boolean) set to true when the tag is the last.
+        * @protected
+        */
+       protected function addHTMLVertSpace($hbz=0, $hb=0, $cell=false, $firsttag=false, $lasttag=false) {
+               if ($firsttag) {
+                       $this->Ln(0, $cell);
+                       $this->htmlvspace = 0;
+                       return;
+               }
+               if ($lasttag) {
+                       $this->Ln($hbz, $cell);
+                       $this->htmlvspace = 0;
+                       return;
+               }
+               if ($hb < $this->htmlvspace) {
+                       $hd = 0;
+               } else {
+                       $hd = $hb - $this->htmlvspace;
+                       $this->htmlvspace = $hb;
+               }
+               $this->Ln(($hbz + $hd), $cell);
+       }
+
+       /**
+        * Return the starting coordinates to draw an html border
+        * @return array containing top-left border coordinates
+        * @protected
+        * @since 5.7.000 (2010-08-03)
+        */
+       protected function getBorderStartPosition() {
+               if ($this->rtl) {
+                       $xmax = $this->lMargin;
+               } else {
+                       $xmax = $this->w - $this->rMargin;
+               }
+               return array('page' => $this->page, 'column' => $this->current_column, 'x' => $this->x, 'y' => $this->y, 'xmax' => $xmax);
+       }
+
+       /**
+        * Draw an HTML block border and fill
+        * @param $tag (array) array of tag properties.
+        * @param $xmax (int) end X coordinate for border.
+        * @protected
+        * @since 5.7.000 (2010-08-03)
+        */
+       protected function drawHTMLTagBorder($tag, $xmax) {
+               if (!isset($tag['borderposition'])) {
+                       // nothing to draw
+                       return;
+               }
+               $prev_x = $this->x;
+               $prev_y = $this->y;
+               $prev_lasth = $this->lasth;
+               $border = 0;
+               $fill = false;
+               $this->lasth = 0;
+               if (isset($tag['border']) AND !empty($tag['border'])) {
+                       // get border style
+                       $border = $tag['border'];
+                       if (!TCPDF_STATIC::empty_string($this->thead) AND (!$this->inthead)) {
+                               // border for table header
+                               $border = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell);
+                       }
+               }
+               if (isset($tag['bgcolor']) AND ($tag['bgcolor'] !== false)) {
+                       // get background color
+                       $old_bgcolor = $this->bgcolor;
+                       $this->SetFillColorArray($tag['bgcolor']);
+                       $fill = true;
+               }
+               if (!$border AND !$fill) {
+                       // nothing to draw
+                       return;
+               }
+               if (isset($tag['attribute']['cellspacing'])) {
+                       $clsp = $this->getHTMLUnitToUnits($tag['attribute']['cellspacing'], 1, 'px');
+                       $cellspacing = array('H' => $clsp, 'V' => $clsp);
+               } elseif (isset($tag['border-spacing'])) {
+                       $cellspacing = $tag['border-spacing'];
+               } else {
+                       $cellspacing = array('H' => 0, 'V' => 0);
+               }
+               if (($tag['value'] != 'table') AND (is_array($border)) AND (!empty($border))) {
+                       // draw the border externally respect the sqare edge.
+                       $border['mode'] = 'ext';
+               }
+               if ($this->rtl) {
+                       if ($xmax >= $tag['borderposition']['x']) {
+                               $xmax = $tag['borderposition']['xmax'];
+                       }
+                       $w = ($tag['borderposition']['x'] - $xmax);
+               } else {
+                       if ($xmax <= $tag['borderposition']['x']) {
+                               $xmax = $tag['borderposition']['xmax'];
+                       }
+                       $w = ($xmax - $tag['borderposition']['x']);
+               }
+               if ($w <= 0) {
+                       return;
+               }
+               $w += $cellspacing['H'];
+               $startpage = $tag['borderposition']['page'];
+               $startcolumn = $tag['borderposition']['column'];
+               $x = $tag['borderposition']['x'];
+               $y = $tag['borderposition']['y'];
+               $endpage = $this->page;
+               $starty = $tag['borderposition']['y'] - $cellspacing['V'];
+               $currentY = $this->y;
+               $this->x = $x;
+               // get latest column
+               $endcolumn = $this->current_column;
+               if ($this->num_columns == 0) {
+                       $this->num_columns = 1;
+               }
+               // get border modes
+               $border_start = TCPDF_STATIC::getBorderMode($border, $position='start', $this->opencell);
+               $border_end = TCPDF_STATIC::getBorderMode($border, $position='end', $this->opencell);
+               $border_middle = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell);
+               // temporary disable page regions
+               $temp_page_regions = $this->page_regions;
+               $this->page_regions = array();
+               // design borders around HTML cells.
+               for ($page = $startpage; $page <= $endpage; ++$page) { // for each page
+                       $ccode = '';
+                       $this->setPage($page);
+                       if ($this->num_columns < 2) {
+                               // single-column mode
+                               $this->x = $x;
+                               $this->y = $this->tMargin;
+                       }
+                       // account for margin changes
+                       if ($page > $startpage) {
+                               if (($this->rtl) AND ($this->pagedim[$page]['orm'] != $this->pagedim[$startpage]['orm'])) {
+                                       $this->x -= ($this->pagedim[$page]['orm'] - $this->pagedim[$startpage]['orm']);
+                               } elseif ((!$this->rtl) AND ($this->pagedim[$page]['olm'] != $this->pagedim[$startpage]['olm'])) {
+                                       $this->x += ($this->pagedim[$page]['olm'] - $this->pagedim[$startpage]['olm']);
+                               }
+                       }
+                       if ($startpage == $endpage) {
+                               // single page
+                               for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($startcolumn == $endcolumn) { // single column
+                                               $cborder = $border;
+                                               $h = ($currentY - $y) + $cellspacing['V'];
+                                               $this->y = $starty;
+                                       } elseif ($column == $startcolumn) { // first column
+                                               $cborder = $border_start;
+                                               $this->y = $starty;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       } elseif ($column == $endcolumn) { // end column
+                                               $cborder = $border_end;
+                                               $h = $currentY - $this->y;
+                                       } else { // middle column
+                                               $cborder = $border_middle;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       }
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       } elseif ($page == $startpage) { // first page
+                               for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($column == $startcolumn) { // first column
+                                               $cborder = $border_start;
+                                               $this->y = $starty;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       } else { // middle column
+                                               $cborder = $border_middle;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       }
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       } elseif ($page == $endpage) { // last page
+                               for ($column = 0; $column <= $endcolumn; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       if ($column == $endcolumn) {
+                                               // end column
+                                               $cborder = $border_end;
+                                               $h = $currentY - $this->y;
+                                       } else {
+                                               // middle column
+                                               $cborder = $border_middle;
+                                               $h = $this->h - $this->y - $this->bMargin;
+                                       }
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       } else { // middle page
+                               for ($column = 0; $column < $this->num_columns; ++$column) { // for each column
+                                       $this->selectColumn($column);
+                                       $cborder = $border_middle;
+                                       $h = $this->h - $this->y - $this->bMargin;
+                                       $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n";
+                               } // end for each column
+                       }
+                       if ($cborder OR $fill) {
+                               $offsetlen = strlen($ccode);
+                               // draw border and fill
+                               if ($this->inxobj) {
+                                       // we are inside an XObject template
+                                       if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) {
+                                               $pagemarkkey = key($this->xobjects[$this->xobjid]['transfmrk']);
+                                               $pagemark = $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey];
+                                               $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey] += $offsetlen;
+                                       } else {
+                                               $pagemark = $this->xobjects[$this->xobjid]['intmrk'];
+                                               $this->xobjects[$this->xobjid]['intmrk'] += $offsetlen;
+                                       }
+                                       $pagebuff = $this->xobjects[$this->xobjid]['outdata'];
+                                       $pstart = substr($pagebuff, 0, $pagemark);
+                                       $pend = substr($pagebuff, $pagemark);
+                                       $this->xobjects[$this->xobjid]['outdata'] = $pstart.$ccode.$pend;
+                               } else {
+                                       if (end($this->transfmrk[$this->page]) !== false) {
+                                               $pagemarkkey = key($this->transfmrk[$this->page]);
+                                               $pagemark = $this->transfmrk[$this->page][$pagemarkkey];
+                                       } elseif ($this->InFooter) {
+                                               $pagemark = $this->footerpos[$this->page];
+                                       } else {
+                                               $pagemark = $this->intmrk[$this->page];
+                                       }
+                                       $pagebuff = $this->getPageBuffer($this->page);
+                                       $pstart = substr($pagebuff, 0, $pagemark);
+                                       $pend = substr($pagebuff, $pagemark);
+                                       $this->setPageBuffer($this->page, $pstart.$ccode.$pend);
+                                       $this->bordermrk[$this->page] += $offsetlen;
+                                       $this->cntmrk[$this->page] += $offsetlen;
+                               }
+                       }
+               } // end for each page
+               // restore page regions
+               $this->page_regions = $temp_page_regions;
+               if (isset($old_bgcolor)) {
+                       // restore background color
+                       $this->SetFillColorArray($old_bgcolor);
+               }
+               // restore pointer position
+               $this->x = $prev_x;
+               $this->y = $prev_y;
+               $this->lasth = $prev_lasth;
+       }
+
+       /**
+        * Set the default bullet to be used as LI bullet symbol
+        * @param $symbol (string) character or string to be used (legal values are: '' = automatic, '!' = auto bullet, '#' = auto numbering, 'disc', 'disc', 'circle', 'square', '1', 'decimal', 'decimal-leading-zero', 'i', 'lower-roman', 'I', 'upper-roman', 'a', 'lower-alpha', 'lower-latin', 'A', 'upper-alpha', 'upper-latin', 'lower-greek', 'img|type|width|height|image.ext')
+        * @public
+        * @since 4.0.028 (2008-09-26)
+        */
+       public function setLIsymbol($symbol='!') {
+               // check for custom image symbol
+               if (substr($symbol, 0, 4) == 'img|') {
+                       $this->lisymbol = $symbol;
+                       return;
+               }
+               $symbol = strtolower($symbol);
+               $valid_symbols = array('!', '#', 'disc', 'circle', 'square', '1', 'decimal', 'decimal-leading-zero', 'i', 'lower-roman', 'I', 'upper-roman', 'a', 'lower-alpha', 'lower-latin', 'A', 'upper-alpha', 'upper-latin', 'lower-greek');
+               if (in_array($symbol, $valid_symbols)) {
+                       $this->lisymbol = $symbol;
+               } else {
+                       $this->lisymbol = '';
+               }
+       }
+
+       /**
+        * Set the booklet mode for double-sided pages.
+        * @param $booklet (boolean) true set the booklet mode on, false otherwise.
+        * @param $inner (float) Inner page margin.
+        * @param $outer (float) Outer page margin.
+        * @public
+        * @since 4.2.000 (2008-10-29)
+        */
+       public function SetBooklet($booklet=true, $inner=-1, $outer=-1) {
+               $this->booklet = $booklet;
+               if ($inner >= 0) {
+                       $this->lMargin = $inner;
+               }
+               if ($outer >= 0) {
+                       $this->rMargin = $outer;
+               }
+       }
+
+       /**
+        * Swap the left and right margins.
+        * @param $reverse (boolean) if true swap left and right margins.
+        * @protected
+        * @since 4.2.000 (2008-10-29)
+        */
+       protected function swapMargins($reverse=true) {
+               if ($reverse) {
+                       // swap left and right margins
+                       $mtemp = $this->original_lMargin;
+                       $this->original_lMargin = $this->original_rMargin;
+                       $this->original_rMargin = $mtemp;
+                       $deltam = $this->original_lMargin - $this->original_rMargin;
+                       $this->lMargin += $deltam;
+                       $this->rMargin -= $deltam;
+               }
+       }
+
+       /**
+        * Set the vertical spaces for HTML tags.
+        * The array must have the following structure (example):
+        * $tagvs = array('h1' => array(0 => array('h' => '', 'n' => 2), 1 => array('h' => 1.3, 'n' => 1)));
+        * The first array level contains the tag names,
+        * the second level contains 0 for opening tags or 1 for closing tags,
+        * the third level contains the vertical space unit (h) and the number spaces to add (n).
+        * If the h parameter is not specified, default values are used.
+        * @param $tagvs (array) array of tags and relative vertical spaces.
+        * @public
+        * @since 4.2.001 (2008-10-30)
+        */
+       public function setHtmlVSpace($tagvs) {
+               $this->tagvspaces = $tagvs;
+       }
+
+       /**
+        * Set custom width for list indentation.
+        * @param $width (float) width of the indentation. Use negative value to disable it.
+        * @public
+        * @since 4.2.007 (2008-11-12)
+        */
+       public function setListIndentWidth($width) {
+               return $this->customlistindent = floatval($width);
+       }
+
+       /**
+        * Set the top/bottom cell sides to be open or closed when the cell cross the page.
+        * @param $isopen (boolean) if true keeps the top/bottom border open for the cell sides that cross the page.
+        * @public
+        * @since 4.2.010 (2008-11-14)
+        */
+       public function setOpenCell($isopen) {
+               $this->opencell = $isopen;
+       }
+
+       /**
+        * Set the color and font style for HTML links.
+        * @param $color (array) RGB array of colors
+        * @param $fontstyle (string) additional font styles to add
+        * @public
+        * @since 4.4.003 (2008-12-09)
+        */
+       public function setHtmlLinksStyle($color=array(0,0,255), $fontstyle='U') {
+               $this->htmlLinkColorArray = $color;
+               $this->htmlLinkFontStyle = $fontstyle;
+       }
+
+       /**
+        * Convert HTML string containing value and unit of measure to user's units or points.
+        * @param $htmlval (string) String containing values and unit.
+        * @param $refsize (string) Reference value in points.
+        * @param $defaultunit (string) Default unit (can be one of the following: %, em, ex, px, in, mm, pc, pt).
+        * @param $points (boolean) If true returns points, otherwise returns value in user's units.
+        * @return float value in user's unit or point if $points=true
+        * @public
+        * @since 4.4.004 (2008-12-10)
+        */
+       public function getHTMLUnitToUnits($htmlval, $refsize=1, $defaultunit='px', $points=false) {
+               $supportedunits = array('%', 'em', 'ex', 'px', 'in', 'cm', 'mm', 'pc', 'pt');
+               $retval = 0;
+               $value = 0;
+               $unit = 'px';
+               if ($points) {
+                       $k = 1;
+               } else {
+                       $k = $this->k;
+               }
+               if (in_array($defaultunit, $supportedunits)) {
+                       $unit = $defaultunit;
+               }
+               if (is_numeric($htmlval)) {
+                       $value = floatval($htmlval);
+               } elseif (preg_match('/([0-9\.\-\+]+)/', $htmlval, $mnum)) {
+                       $value = floatval($mnum[1]);
+                       if (preg_match('/([a-z%]+)/', $htmlval, $munit)) {
+                               if (in_array($munit[1], $supportedunits)) {
+                                       $unit = $munit[1];
+                               }
+                       }
+               }
+               switch ($unit) {
+                       // percentage
+                       case '%': {
+                               $retval = (($value * $refsize) / 100);
+                               break;
+                       }
+                       // relative-size
+                       case 'em': {
+                               $retval = ($value * $refsize);
+                               break;
+                       }
+                       // height of lower case 'x' (about half the font-size)
+                       case 'ex': {
+                               $retval = ($value * ($refsize / 2));
+                               break;
+                       }
+                       // absolute-size
+                       case 'in': {
+                               $retval = (($value * $this->dpi) / $k);
+                               break;
+                       }
+                       // centimeters
+                       case 'cm': {
+                               $retval = (($value / 2.54 * $this->dpi) / $k);
+                               break;
+                       }
+                       // millimeters
+                       case 'mm': {
+                               $retval = (($value / 25.4 * $this->dpi) / $k);
+                               break;
+                       }
+                       // one pica is 12 points
+                       case 'pc': {
+                               $retval = (($value * 12) / $k);
+                               break;
+                       }
+                       // points
+                       case 'pt': {
+                               $retval = ($value / $k);
+                               break;
+                       }
+                       // pixels
+                       case 'px': {
+                               $retval = $this->pixelsToUnits($value);
+                               if ($points) {
+                                       $retval *= $this->k;
+                               }
+                               break;
+                       }
+               }
+               return $retval;
+       }
+
+       /**
+        * Output an HTML list bullet or ordered item symbol
+        * @param $listdepth (int) list nesting level
+        * @param $listtype (string) type of list
+        * @param $size (float) current font size
+        * @protected
+        * @since 4.4.004 (2008-12-10)
+        */
+       protected function putHtmlListBullet($listdepth, $listtype='', $size=10) {
+               if ($this->state != 2) {
+                       return;
+               }
+               $size /= $this->k;
+               $fill = '';
+               $bgcolor = $this->bgcolor;
+               $color = $this->fgcolor;
+               $strokecolor = $this->strokecolor;
+               $width = 0;
+               $textitem = '';
+               $tmpx = $this->x;
+               $lspace = $this->GetStringWidth('  ');
+               if ($listtype == '^') {
+                       // special symbol used for avoid justification of rect bullet
+                       $this->lispacer = '';
+                       return;
+               } elseif ($listtype == '!') {
+                       // set default list type for unordered list
+                       $deftypes = array('disc', 'circle', 'square');
+                       $listtype = $deftypes[($listdepth - 1) % 3];
+               } elseif ($listtype == '#') {
+                       // set default list type for ordered list
+                       $listtype = 'decimal';
+               } elseif (substr($listtype, 0, 4) == 'img|') {
+                       // custom image type ('img|type|width|height|image.ext')
+                       $img = explode('|', $listtype);
+                       $listtype = 'img';
+               }
+               switch ($listtype) {
+                       // unordered types
+                       case 'none': {
+                               break;
+                       }
+                       case 'disc': {
+                               $r = $size / 6;
+                               $lspace += (2 * $r);
+                               if ($this->rtl) {
+                                       $this->x += $lspace;
+                               } else {
+                                       $this->x -= $lspace;
+                               }
+                               $this->Circle(($this->x + $r), ($this->y + ($this->lasth / 2)), $r, 0, 360, 'F', array(), $color, 8);
+                               break;
+                       }
+                       case 'circle': {
+                               $r = $size / 6;
+                               $lspace += (2 * $r);
+                               if ($this->rtl) {
+                                       $this->x += $lspace;
+                               } else {
+                                       $this->x -= $lspace;
+                               }
+                               $prev_line_style = $this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor;
+                               $new_line_style = array('width' => ($r / 3), 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'phase' => 0, 'color'=>$color);
+                               $this->Circle(($this->x + $r), ($this->y + ($this->lasth / 2)), ($r * (1 - (1/6))), 0, 360, 'D', $new_line_style, array(), 8);
+                               $this->_out($prev_line_style); // restore line settings
+                               break;
+                       }
+                       case 'square': {
+                               $l = $size / 3;
+                               $lspace += $l;
+                               if ($this->rtl) {;
+                                       $this->x += $lspace;
+                               } else {
+                                       $this->x -= $lspace;
+                               }
+                               $this->Rect($this->x, ($this->y + (($this->lasth - $l) / 2)), $l, $l, 'F', array(), $color);
+                               break;
+                       }
+                       case 'img': {
+                               // 1=>type, 2=>width, 3=>height, 4=>image.ext
+                               $lspace += $img[2];
+                               if ($this->rtl) {;
+                                       $this->x += $lspace;
+                               } else {
+                                       $this->x -= $lspace;
+                               }
+                               $imgtype = strtolower($img[1]);
+                               $prev_y = $this->y;
+                               switch ($imgtype) {
+                                       case 'svg': {
+                                               $this->ImageSVG($img[4], $this->x, ($this->y + (($this->lasth - $img[3]) / 2)), $img[2], $img[3], '', 'T', '', 0, false);
+                                               break;
+                                       }
+                                       case 'ai':
+                                       case 'eps': {
+                                               $this->ImageEps($img[4], $this->x, ($this->y + (($this->lasth - $img[3]) / 2)), $img[2], $img[3], '', true, 'T', '', 0, false);
+                                               break;
+                                       }
+                                       default: {
+                                               $this->Image($img[4], $this->x, ($this->y + (($this->lasth - $img[3]) / 2)), $img[2], $img[3], $img[1], '', 'T', false, 300, '', false, false, 0, false, false, false);
+                                               break;
+                                       }
+                               }
+                               $this->y = $prev_y;
+                               break;
+                       }
+                       // ordered types
+                       // $this->listcount[$this->listnum];
+                       // $textitem
+                       case '1':
+                       case 'decimal': {
+                               $textitem = $this->listcount[$this->listnum];
+                               break;
+                       }
+                       case 'decimal-leading-zero': {
+                               $textitem = sprintf('%02d', $this->listcount[$this->listnum]);
+                               break;
+                       }
+                       case 'i':
+                       case 'lower-roman': {
+                               $textitem = strtolower(TCPDF_STATIC::intToRoman($this->listcount[$this->listnum]));
+                               break;
+                       }
+                       case 'I':
+                       case 'upper-roman': {
+                               $textitem = TCPDF_STATIC::intToRoman($this->listcount[$this->listnum]);
+                               break;
+                       }
+                       case 'a':
+                       case 'lower-alpha':
+                       case 'lower-latin': {
+                               $textitem = chr(97 + $this->listcount[$this->listnum] - 1);
+                               break;
+                       }
+                       case 'A':
+                       case 'upper-alpha':
+                       case 'upper-latin': {
+                               $textitem = chr(65 + $this->listcount[$this->listnum] - 1);
+                               break;
+                       }
+                       case 'lower-greek': {
+                               $textitem = TCPDF_FONTS::unichr((945 + $this->listcount[$this->listnum] - 1), $this->isunicode);
+                               break;
+                       }
+                       /*
+                       // Types to be implemented (special handling)
+                       case 'hebrew': {
+                               break;
+                       }
+                       case 'armenian': {
+                               break;
+                       }
+                       case 'georgian': {
+                               break;
+                       }
+                       case 'cjk-ideographic': {
+                               break;
+                       }
+                       case 'hiragana': {
+                               break;
+                       }
+                       case 'katakana': {
+                               break;
+                       }
+                       case 'hiragana-iroha': {
+                               break;
+                       }
+                       case 'katakana-iroha': {
+                               break;
+                       }
+                       */
+                       default: {
+                               $textitem = $this->listcount[$this->listnum];
+                       }
+               }
+               if (!TCPDF_STATIC::empty_string($textitem)) {
+                       // Check whether we need a new page or new column
+                       $prev_y = $this->y;
+                       $h = $this->getCellHeight($this->FontSize);
+                       if ($this->checkPageBreak($h) OR ($this->y < $prev_y)) {
+                               $tmpx = $this->x;
+                       }
+                       // print ordered item
+                       if ($this->rtl) {
+                               $textitem = '.'.$textitem;
+                       } else {
+                               $textitem = $textitem.'.';
+                       }
+                       $lspace += $this->GetStringWidth($textitem);
+                       if ($this->rtl) {
+                               $this->x += $lspace;
+                       } else {
+                               $this->x -= $lspace;
+                       }
+                       $this->Write($this->lasth, $textitem, '', false, '', false, 0, false);
+               }
+               $this->x = $tmpx;
+               $this->lispacer = '^';
+               // restore colors
+               $this->SetFillColorArray($bgcolor);
+               $this->SetDrawColorArray($strokecolor);
+               $this->SettextColorArray($color);
+       }
+
+       /**
+        * Returns current graphic variables as array.
+        * @return array of graphic variables
+        * @protected
+        * @since 4.2.010 (2008-11-14)
+        */
+       protected function getGraphicVars() {
+               $grapvars = array(
+                       'FontFamily' => $this->FontFamily,
+                       'FontStyle' => $this->FontStyle,
+                       'FontSizePt' => $this->FontSizePt,
+                       'rMargin' => $this->rMargin,
+                       'lMargin' => $this->lMargin,
+                       'cell_padding' => $this->cell_padding,
+                       'cell_margin' => $this->cell_margin,
+                       'LineWidth' => $this->LineWidth,
+                       'linestyleWidth' => $this->linestyleWidth,
+                       'linestyleCap' => $this->linestyleCap,
+                       'linestyleJoin' => $this->linestyleJoin,
+                       'linestyleDash' => $this->linestyleDash,
+                       'textrendermode' => $this->textrendermode,
+                       'textstrokewidth' => $this->textstrokewidth,
+                       'DrawColor' => $this->DrawColor,
+                       'FillColor' => $this->FillColor,
+                       'TextColor' => $this->TextColor,
+                       'ColorFlag' => $this->ColorFlag,
+                       'bgcolor' => $this->bgcolor,
+                       'fgcolor' => $this->fgcolor,
+                       'htmlvspace' => $this->htmlvspace,
+                       'listindent' => $this->listindent,
+                       'listindentlevel' => $this->listindentlevel,
+                       'listnum' => $this->listnum,
+                       'listordered' => $this->listordered,
+                       'listcount' => $this->listcount,
+                       'lispacer' => $this->lispacer,
+                       'cell_height_ratio' => $this->cell_height_ratio,
+                       'font_stretching' => $this->font_stretching,
+                       'font_spacing' => $this->font_spacing,
+                       'alpha' => $this->alpha,
+                       // extended
+                       'lasth' => $this->lasth,
+                       'tMargin' => $this->tMargin,
+                       'bMargin' => $this->bMargin,
+                       'AutoPageBreak' => $this->AutoPageBreak,
+                       'PageBreakTrigger' => $this->PageBreakTrigger,
+                       'x' => $this->x,
+                       'y' => $this->y,
+                       'w' => $this->w,
+                       'h' => $this->h,
+                       'wPt' => $this->wPt,
+                       'hPt' => $this->hPt,
+                       'fwPt' => $this->fwPt,
+                       'fhPt' => $this->fhPt,
+                       'page' => $this->page,
+                       'current_column' => $this->current_column,
+                       'num_columns' => $this->num_columns
+                       );
+               return $grapvars;
+       }
+
+       /**
+        * Set graphic variables.
+        * @param $gvars (array) array of graphic variablesto restore
+        * @param $extended (boolean) if true restore extended graphic variables
+        * @protected
+        * @since 4.2.010 (2008-11-14)
+        */
+       protected function setGraphicVars($gvars, $extended=false) {
+               if ($this->state != 2) {
+                        return;
+               }
+               $this->FontFamily = $gvars['FontFamily'];
+               $this->FontStyle = $gvars['FontStyle'];
+               $this->FontSizePt = $gvars['FontSizePt'];
+               $this->rMargin = $gvars['rMargin'];
+               $this->lMargin = $gvars['lMargin'];
+               $this->cell_padding = $gvars['cell_padding'];
+               $this->cell_margin = $gvars['cell_margin'];
+               $this->LineWidth = $gvars['LineWidth'];
+               $this->linestyleWidth = $gvars['linestyleWidth'];
+               $this->linestyleCap = $gvars['linestyleCap'];
+               $this->linestyleJoin = $gvars['linestyleJoin'];
+               $this->linestyleDash = $gvars['linestyleDash'];
+               $this->textrendermode = $gvars['textrendermode'];
+               $this->textstrokewidth = $gvars['textstrokewidth'];
+               $this->DrawColor = $gvars['DrawColor'];
+               $this->FillColor = $gvars['FillColor'];
+               $this->TextColor = $gvars['TextColor'];
+               $this->ColorFlag = $gvars['ColorFlag'];
+               $this->bgcolor = $gvars['bgcolor'];
+               $this->fgcolor = $gvars['fgcolor'];
+               $this->htmlvspace = $gvars['htmlvspace'];
+               $this->listindent = $gvars['listindent'];
+               $this->listindentlevel = $gvars['listindentlevel'];
+               $this->listnum = $gvars['listnum'];
+               $this->listordered = $gvars['listordered'];
+               $this->listcount = $gvars['listcount'];
+               $this->lispacer = $gvars['lispacer'];
+               $this->cell_height_ratio = $gvars['cell_height_ratio'];
+               $this->font_stretching = $gvars['font_stretching'];
+               $this->font_spacing = $gvars['font_spacing'];
+               $this->alpha = $gvars['alpha'];
+               if ($extended) {
+                       // restore extended values
+                       $this->lasth = $gvars['lasth'];
+                       $this->tMargin = $gvars['tMargin'];
+                       $this->bMargin = $gvars['bMargin'];
+                       $this->AutoPageBreak = $gvars['AutoPageBreak'];
+                       $this->PageBreakTrigger = $gvars['PageBreakTrigger'];
+                       $this->x = $gvars['x'];
+                       $this->y = $gvars['y'];
+                       $this->w = $gvars['w'];
+                       $this->h = $gvars['h'];
+                       $this->wPt = $gvars['wPt'];
+                       $this->hPt = $gvars['hPt'];
+                       $this->fwPt = $gvars['fwPt'];
+                       $this->fhPt = $gvars['fhPt'];
+                       $this->page = $gvars['page'];
+                       $this->current_column = $gvars['current_column'];
+                       $this->num_columns = $gvars['num_columns'];
+               }
+               $this->_out(''.$this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor.' '.$this->FillColor.'');
+               if (!TCPDF_STATIC::empty_string($this->FontFamily)) {
+                       $this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt);
+               }
+       }
+
+       /**
+        * Outputs the "save graphics state" operator 'q'
+        * @protected
+        */
+       protected function _outSaveGraphicsState() {
+               $this->_out('q');
+       }
+
+       /**
+        * Outputs the "restore graphics state" operator 'Q'
+        * @protected
+        */
+       protected function _outRestoreGraphicsState() {
+               $this->_out('Q');
+       }
+
+       /**
+        * Writes data to a temporary file on filesystem.
+        * @param $filename (string) file name
+        * @param $data (mixed) data to write on file
+        * @param $append (boolean) if true append data, false replace.
+        * @param $serialize (boolean) if true serialize data.
+        * @since 4.5.000 (2008-12-31)
+        * @protected
+        */
+       protected function writeDiskCache($filename, $data, $append=false, $serialize=false) {
+               if ($append) {
+                       $fmode = 'ab+';
+               } else {
+                       $fmode = 'wb+';
+               }
+               $f = @fopen($filename, $fmode);
+               if (!$f) {
+                       $this->Error('Unable to write cache file: '.$filename);
+               }
+               if ($serialize) {
+                       $data = $this->file_id.serialize($data);
+               }
+               fwrite($f, $data);
+               fclose($f);
+               // update file length (needed for transactions)
+               if (!isset($this->cache_file_length['_'.$filename])) {
+                       $this->cache_file_length['_'.$filename] = strlen($data);
+               } else {
+                       $this->cache_file_length['_'.$filename] += strlen($data);
+               }
+       }
+
+       /**
+        * Read data from a temporary file on filesystem.
+        * @param $filename (string) file name
+        * @param $unserialize (boolean) if true unserialize data.
+        * @return mixed retrieved data
+        * @since 4.5.000 (2008-12-31)
+        * @protected
+        */
+       protected function readDiskCache($filename, $unserialize=false) {
+               $data = file_get_contents($filename);
+               if ($data === FALSE) {
+                       $this->Error('Unable to read the file: '.$filename);
+               }
+               if ($unserialize) {
+                       if (substr($data, 0, 32) != $this->file_id) {
+                               $this->Error('Invalid cache file: '.$filename);
+                       }
+                       $data = unserialize(substr($data, 32));
+               }
+               return $data;
+       }
+
+       /**
+        * Set buffer content (always append data).
+        * @param $data (string) data
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected function setBuffer($data) {
+               $this->bufferlen += strlen($data);
+               if ($this->diskcache) {
+                       if (!isset($this->buffer) OR TCPDF_STATIC::empty_string($this->buffer)) {
+                               $this->buffer = TCPDF_STATIC::getObjFilename('buf');
+                       }
+                       $this->writeDiskCache($this->buffer, $data, true, false);
+               } else {
+                       $this->buffer .= $data;
+               }
+       }
+
+       /**
+        * Replace the buffer content
+        * @param $data (string) data
+        * @protected
+        * @since 5.5.000 (2010-06-22)
+        */
+       protected function replaceBuffer($data) {
+               $this->bufferlen = strlen($data);
+               if ($this->diskcache) {
+                       if (!isset($this->buffer) OR TCPDF_STATIC::empty_string($this->buffer)) {
+                               $this->buffer = TCPDF_STATIC::getObjFilename('buf');
+                       }
+                       $this->writeDiskCache($this->buffer, $data, false, false);
+               } else {
+                       $this->buffer = $data;
+               }
+       }
+
+       /**
+        * Get buffer content.
+        * @return string buffer content
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected function getBuffer() {
+               if ($this->diskcache) {
+                       return $this->readDiskCache($this->buffer, false);
+               } else {
+                       return $this->buffer;
+               }
+       }
+
+       /**
+        * Set page buffer content.
+        * @param $page (int) page number
+        * @param $data (string) page data
+        * @param $append (boolean) if true append data, false replace.
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected function setPageBuffer($page, $data, $append=false) {
+               if ($this->diskcache) {
+                       if (!isset($this->pages[$page])) {
+                               $this->pages[$page] = TCPDF_STATIC::getObjFilename('page');
+                       }
+                       $this->writeDiskCache($this->pages[$page], $data, $append, false);
+               } else {
+                       if ($append) {
+                               $this->pages[$page] .= $data;
+                       } else {
+                               $this->pages[$page] = $data;
+                       }
+               }
+               if ($append AND isset($this->pagelen[$page])) {
+                       $this->pagelen[$page] += strlen($data);
+               } else {
+                       $this->pagelen[$page] = strlen($data);
+               }
+       }
+
+       /**
+        * Get page buffer content.
+        * @param $page (int) page number
+        * @return string page buffer content or false in case of error
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected function getPageBuffer($page) {
+               if ($this->diskcache) {
+                       return $this->readDiskCache($this->pages[$page], false);
+               } elseif (isset($this->pages[$page])) {
+                       return $this->pages[$page];
+               }
+               return false;
+       }
+
+       /**
+        * Set image buffer content.
+        * @param $image (string) image key
+        * @param $data (array) image data
+        * @return int image index number
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected function setImageBuffer($image, $data) {
+               if (($data['i'] = array_search($image, $this->imagekeys)) === FALSE) {
+                       $this->imagekeys[$this->numimages] = $image;
+                       $data['i'] = $this->numimages;
+                       ++$this->numimages;
+               }
+               if ($this->diskcache) {
+                       if (!isset($this->images[$image])) {
+                               $this->images[$image] = TCPDF_STATIC::getObjFilename('img');
+                       }
+                       $this->writeDiskCache($this->images[$image], $data, false, true);
+               } else {
+                       $this->images[$image] = $data;
+               }
+               return $data['i'];
+       }
+
+       /**
+        * Set image buffer content for a specified sub-key.
+        * @param $image (string) image key
+        * @param $key (string) image sub-key
+        * @param $data (array) image data
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected function setImageSubBuffer($image, $key, $data) {
+               if (!isset($this->images[$image])) {
+                       $this->setImageBuffer($image, array());
+               }
+               if ($this->diskcache) {
+                       $tmpimg = $this->getImageBuffer($image);
+                       $tmpimg[$key] = $data;
+                       $this->writeDiskCache($this->images[$image], $tmpimg, false, true);
+               } else {
+                       $this->images[$image][$key] = $data;
+               }
+       }
+
+       /**
+        * Get image buffer content.
+        * @param $image (string) image key
+        * @return string image buffer content or false in case of error
+        * @protected
+        * @since 4.5.000 (2008-12-31)
+        */
+       protected function getImageBuffer($image) {
+               if ($this->diskcache AND isset($this->images[$image])) {
+                       return $this->readDiskCache($this->images[$image], true);
+               } elseif (isset($this->images[$image])) {
+                       return $this->images[$image];
+               }
+               return false;
+       }
+
+       /**
+        * Set font buffer content.
+        * @param $font (string) font key
+        * @param $data (array) font data
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected function setFontBuffer($font, $data) {
+               if ($this->diskcache) {
+                       if (!isset($this->fonts[$font])) {
+                               $this->fonts[$font] = TCPDF_STATIC::getObjFilename('font');
+                       }
+                       $this->writeDiskCache($this->fonts[$font], $data, false, true);
+               } else {
+                       $this->fonts[$font] = $data;
+               }
+               if (!in_array($font, $this->fontkeys)) {
+                       $this->fontkeys[] = $font;
+                       // store object ID for current font
+                       ++$this->n;
+                       $this->font_obj_ids[$font] = $this->n;
+                       $this->setFontSubBuffer($font, 'n', $this->n);
+               }
+       }
+
+       /**
+        * Set font buffer content.
+        * @param $font (string) font key
+        * @param $key (string) font sub-key
+        * @param $data (array) font data
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected function setFontSubBuffer($font, $key, $data) {
+               if (!isset($this->fonts[$font])) {
+                       $this->setFontBuffer($font, array());
+               }
+               if ($this->diskcache) {
+                       $tmpfont = $this->getFontBuffer($font);
+                       $tmpfont[$key] = $data;
+                       $this->writeDiskCache($this->fonts[$font], $tmpfont, false, true);
+               } else {
+                       $this->fonts[$font][$key] = $data;
+               }
+       }
+
+       /**
+        * Get font buffer content.
+        * @param $font (string) font key
+        * @return string font buffer content or false in case of error
+        * @protected
+        * @since 4.5.000 (2009-01-02)
+        */
+       protected function getFontBuffer($font) {
+               if ($this->diskcache AND isset($this->fonts[$font])) {
+                       return $this->readDiskCache($this->fonts[$font], true);
+               } elseif (isset($this->fonts[$font])) {
+                       return $this->fonts[$font];
+               }
+               return false;
+       }
+
+       /**
+        * Move a page to a previous position.
+        * @param $frompage (int) number of the source page
+        * @param $topage (int) number of the destination page (must be less than $frompage)
+        * @return true in case of success, false in case of error.
+        * @public
+        * @since 4.5.000 (2009-01-02)
+        */
+       public function movePage($frompage, $topage) {
+               if (($frompage > $this->numpages) OR ($frompage <= $topage)) {
+                       return false;
+               }
+               if ($frompage == $this->page) {
+                       // close the page before moving it
+                       $this->endPage();
+               }
+               // move all page-related states
+               $tmppage = $this->getPageBuffer($frompage);
+               $tmppagedim = $this->pagedim[$frompage];
+               $tmppagelen = $this->pagelen[$frompage];
+               $tmpintmrk = $this->intmrk[$frompage];
+               $tmpbordermrk = $this->bordermrk[$frompage];
+               $tmpcntmrk = $this->cntmrk[$frompage];
+               $tmppageobjects = $this->pageobjects[$frompage];
+               if (isset($this->footerpos[$frompage])) {
+                       $tmpfooterpos = $this->footerpos[$frompage];
+               }
+               if (isset($this->footerlen[$frompage])) {
+                       $tmpfooterlen = $this->footerlen[$frompage];
+               }
+               if (isset($this->transfmrk[$frompage])) {
+                       $tmptransfmrk = $this->transfmrk[$frompage];
+               }
+               if (isset($this->PageAnnots[$frompage])) {
+                       $tmpannots = $this->PageAnnots[$frompage];
+               }
+               if (isset($this->newpagegroup) AND !empty($this->newpagegroup)) {
+                       for ($i = $frompage; $i > $topage; --$i) {
+                               if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $frompage)) {
+                                       --$this->pagegroups[$this->newpagegroup[$i]];
+                                       break;
+                               }
+                       }
+                       for ($i = $topage; $i > 0; --$i) {
+                               if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $topage)) {
+                                       ++$this->pagegroups[$this->newpagegroup[$i]];
+                                       break;
+                               }
+                       }
+               }
+               for ($i = $frompage; $i > $topage; --$i) {
+                       $j = $i - 1;
+                       // shift pages down
+                       $this->setPageBuffer($i, $this->getPageBuffer($j));
+                       $this->pagedim[$i] = $this->pagedim[$j];
+                       $this->pagelen[$i] = $this->pagelen[$j];
+                       $this->intmrk[$i] = $this->intmrk[$j];
+                       $this->bordermrk[$i] = $this->bordermrk[$j];
+                       $this->cntmrk[$i] = $this->cntmrk[$j];
+                       $this->pageobjects[$i] = $this->pageobjects[$j];
+                       if (isset($this->footerpos[$j])) {
+                               $this->footerpos[$i] = $this->footerpos[$j];
+                       } elseif (isset($this->footerpos[$i])) {
+                               unset($this->footerpos[$i]);
+                       }
+                       if (isset($this->footerlen[$j])) {
+                               $this->footerlen[$i] = $this->footerlen[$j];
+                       } elseif (isset($this->footerlen[$i])) {
+                               unset($this->footerlen[$i]);
+                       }
+                       if (isset($this->transfmrk[$j])) {
+                               $this->transfmrk[$i] = $this->transfmrk[$j];
+                       } elseif (isset($this->transfmrk[$i])) {
+                               unset($this->transfmrk[$i]);
+                       }
+                       if (isset($this->PageAnnots[$j])) {
+                               $this->PageAnnots[$i] = $this->PageAnnots[$j];
+                       } elseif (isset($this->PageAnnots[$i])) {
+                               unset($this->PageAnnots[$i]);
+                       }
+                       if (isset($this->newpagegroup[$j])) {
+                               $this->newpagegroup[$i] = $this->newpagegroup[$j];
+                               unset($this->newpagegroup[$j]);
+                       }
+                       if ($this->currpagegroup == $j) {
+                               $this->currpagegroup = $i;
+                       }
+               }
+               $this->setPageBuffer($topage, $tmppage);
+               $this->pagedim[$topage] = $tmppagedim;
+               $this->pagelen[$topage] = $tmppagelen;
+               $this->intmrk[$topage] = $tmpintmrk;
+               $this->bordermrk[$topage] = $tmpbordermrk;
+               $this->cntmrk[$topage] = $tmpcntmrk;
+               $this->pageobjects[$topage] = $tmppageobjects;
+               if (isset($tmpfooterpos)) {
+                       $this->footerpos[$topage] = $tmpfooterpos;
+               } elseif (isset($this->footerpos[$topage])) {
+                       unset($this->footerpos[$topage]);
+               }
+               if (isset($tmpfooterlen)) {
+                       $this->footerlen[$topage] = $tmpfooterlen;
+               } elseif (isset($this->footerlen[$topage])) {
+                       unset($this->footerlen[$topage]);
+               }
+               if (isset($tmptransfmrk)) {
+                       $this->transfmrk[$topage] = $tmptransfmrk;
+               } elseif (isset($this->transfmrk[$topage])) {
+                       unset($this->transfmrk[$topage]);
+               }
+               if (isset($tmpannots)) {
+                       $this->PageAnnots[$topage] = $tmpannots;
+               } elseif (isset($this->PageAnnots[$topage])) {
+                       unset($this->PageAnnots[$topage]);
+               }
+               // adjust outlines
+               $tmpoutlines = $this->outlines;
+               foreach ($tmpoutlines as $key => $outline) {
+                       if (!$outline['f']) {
+                               if (($outline['p'] >= $topage) AND ($outline['p'] < $frompage)) {
+                                       $this->outlines[$key]['p'] = ($outline['p'] + 1);
+                               } elseif ($outline['p'] == $frompage) {
+                                       $this->outlines[$key]['p'] = $topage;
+                               }
+                       }
+               }
+               // adjust dests
+               $tmpdests = $this->dests;
+               foreach ($tmpdests as $key => $dest) {
+                       if (!$dest['f']) {
+                               if (($dest['p'] >= $topage) AND ($dest['p'] < $frompage)) {
+                                       $this->dests[$key]['p'] = ($dest['p'] + 1);
+                               } elseif ($dest['p'] == $frompage) {
+                                       $this->dests[$key]['p'] = $topage;
+                               }
+                       }
+               }
+               // adjust links
+               $tmplinks = $this->links;
+               foreach ($tmplinks as $key => $link) {
+                       if (!$link['f']) {
+                               if (($link['p'] >= $topage) AND ($link['p'] < $frompage)) {
+                                       $this->links[$key]['p'] = ($link['p'] + 1);
+                               } elseif ($link['p'] == $frompage) {
+                                       $this->links[$key]['p'] = $topage;
+                               }
+                       }
+               }
+               // adjust javascript
+               $jfrompage = $frompage;
+               $jtopage = $topage;
+               if (preg_match_all('/this\.addField\(\'([^\']*)\',\'([^\']*)\',([0-9]+)/', $this->javascript, $pamatch) > 0) {
+                       foreach($pamatch[0] as $pk => $pmatch) {
+                               $pagenum = intval($pamatch[3][$pk]) + 1;
+                               if (($pagenum >= $jtopage) AND ($pagenum < $jfrompage)) {
+                                       $newpage = ($pagenum + 1);
+                               } elseif ($pagenum == $jfrompage) {
+                                       $newpage = $jtopage;
+                               } else {
+                                       $newpage = $pagenum;
+                               }
+                               --$newpage;
+                               $newjs = "this.addField(\'".$pamatch[1][$pk]."\',\'".$pamatch[2][$pk]."\',".$newpage;
+                               $this->javascript = str_replace($pmatch, $newjs, $this->javascript);
+                       }
+                       unset($pamatch);
+               }
+               // return to last page
+               $this->lastPage(true);
+               return true;
+       }
+
+       /**
+        * Remove the specified page.
+        * @param $page (int) page to remove
+        * @return true in case of success, false in case of error.
+        * @public
+        * @since 4.6.004 (2009-04-23)
+        */
+       public function deletePage($page) {
+               if (($page < 1) OR ($page > $this->numpages)) {
+                       return false;
+               }
+               // delete current page
+               unset($this->pages[$page]);
+               unset($this->pagedim[$page]);
+               unset($this->pagelen[$page]);
+               unset($this->intmrk[$page]);
+               unset($this->bordermrk[$page]);
+               unset($this->cntmrk[$page]);
+               foreach ($this->pageobjects[$page] as $oid) {
+                       if (isset($this->offsets[$oid])){
+                               unset($this->offsets[$oid]);
+                       }
+               }
+               unset($this->pageobjects[$page]);
+               if (isset($this->footerpos[$page])) {
+                       unset($this->footerpos[$page]);
+               }
+               if (isset($this->footerlen[$page])) {
+                       unset($this->footerlen[$page]);
+               }
+               if (isset($this->transfmrk[$page])) {
+                       unset($this->transfmrk[$page]);
+               }
+               if (isset($this->PageAnnots[$page])) {
+                       unset($this->PageAnnots[$page]);
+               }
+               if (isset($this->newpagegroup) AND !empty($this->newpagegroup)) {
+                       for ($i = $page; $i > 0; --$i) {
+                               if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $page)) {
+                                       --$this->pagegroups[$this->newpagegroup[$i]];
+                                       break;
+                               }
+                       }
+               }
+               if (isset($this->pageopen[$page])) {
+                       unset($this->pageopen[$page]);
+               }
+               if ($page < $this->numpages) {
+                       // update remaining pages
+                       for ($i = $page; $i < $this->numpages; ++$i) {
+                               $j = $i + 1;
+                               // shift pages
+                               $this->setPageBuffer($i, $this->getPageBuffer($j));
+                               $this->pagedim[$i] = $this->pagedim[$j];
+                               $this->pagelen[$i] = $this->pagelen[$j];
+                               $this->intmrk[$i] = $this->intmrk[$j];
+                               $this->bordermrk[$i] = $this->bordermrk[$j];
+                               $this->cntmrk[$i] = $this->cntmrk[$j];
+                               $this->pageobjects[$i] = $this->pageobjects[$j];
+                               if (isset($this->footerpos[$j])) {
+                                       $this->footerpos[$i] = $this->footerpos[$j];
+                               } elseif (isset($this->footerpos[$i])) {
+                                       unset($this->footerpos[$i]);
+                               }
+                               if (isset($this->footerlen[$j])) {
+                                       $this->footerlen[$i] = $this->footerlen[$j];
+                               } elseif (isset($this->footerlen[$i])) {
+                                       unset($this->footerlen[$i]);
+                               }
+                               if (isset($this->transfmrk[$j])) {
+                                       $this->transfmrk[$i] = $this->transfmrk[$j];
+                               } elseif (isset($this->transfmrk[$i])) {
+                                       unset($this->transfmrk[$i]);
+                               }
+                               if (isset($this->PageAnnots[$j])) {
+                                       $this->PageAnnots[$i] = $this->PageAnnots[$j];
+                               } elseif (isset($this->PageAnnots[$i])) {
+                                       unset($this->PageAnnots[$i]);
+                               }
+                               if (isset($this->newpagegroup[$j])) {
+                                       $this->newpagegroup[$i] = $this->newpagegroup[$j];
+                                       unset($this->newpagegroup[$j]);
+                               }
+                               if ($this->currpagegroup == $j) {
+                                       $this->currpagegroup = $i;
+                               }
+                               if (isset($this->pageopen[$j])) {
+                                       $this->pageopen[$i] = $this->pageopen[$j];
+                               } elseif (isset($this->pageopen[$i])) {
+                                       unset($this->pageopen[$i]);
+                               }
+                       }
+                       // remove last page
+                       unset($this->pages[$this->numpages]);
+                       unset($this->pagedim[$this->numpages]);
+                       unset($this->pagelen[$this->numpages]);
+                       unset($this->intmrk[$this->numpages]);
+                       unset($this->bordermrk[$this->numpages]);
+                       unset($this->cntmrk[$this->numpages]);
+                       foreach ($this->pageobjects[$this->numpages] as $oid) {
+                               if (isset($this->offsets[$oid])){
+                                       unset($this->offsets[$oid]);
+                               }
+                       }
+                       unset($this->pageobjects[$this->numpages]);
+                       if (isset($this->footerpos[$this->numpages])) {
+                               unset($this->footerpos[$this->numpages]);
+                       }
+                       if (isset($this->footerlen[$this->numpages])) {
+                               unset($this->footerlen[$this->numpages]);
+                       }
+                       if (isset($this->transfmrk[$this->numpages])) {
+                               unset($this->transfmrk[$this->numpages]);
+                       }
+                       if (isset($this->PageAnnots[$this->numpages])) {
+                               unset($this->PageAnnots[$this->numpages]);
+                       }
+                       if (isset($this->newpagegroup[$this->numpages])) {
+                               unset($this->newpagegroup[$this->numpages]);
+                       }
+                       if ($this->currpagegroup == $this->numpages) {
+                               $this->currpagegroup = ($this->numpages - 1);
+                       }
+                       if (isset($this->pagegroups[$this->numpages])) {
+                               unset($this->pagegroups[$this->numpages]);
+                       }
+                       if (isset($this->pageopen[$this->numpages])) {
+                               unset($this->pageopen[$this->numpages]);
+                       }
+               }
+               --$this->numpages;
+               $this->page = $this->numpages;
+               // adjust outlines
+               $tmpoutlines = $this->outlines;
+               foreach ($tmpoutlines as $key => $outline) {
+                       if (!$outline['f']) {
+                               if ($outline['p'] > $page) {
+                                       $this->outlines[$key]['p'] = $outline['p'] - 1;
+                               } elseif ($outline['p'] == $page) {
+                                       unset($this->outlines[$key]);
+                               }
+                       }
+               }
+               // adjust dests
+               $tmpdests = $this->dests;
+               foreach ($tmpdests as $key => $dest) {
+                       if (!$dest['f']) {
+                               if ($dest['p'] > $page) {
+                                       $this->dests[$key]['p'] = $dest['p'] - 1;
+                               } elseif ($dest['p'] == $page) {
+                                       unset($this->dests[$key]);
+                               }
+                       }
+               }
+               // adjust links
+               $tmplinks = $this->links;
+               foreach ($tmplinks as $key => $link) {
+                       if (!$link['f']) {
+                               if ($link['p'] > $page) {
+                                       $this->links[$key]['p'] = $link['p'] - 1;
+                               } elseif ($link['p'] == $page) {
+                                       unset($this->links[$key]);
+                               }
+                       }
+               }
+               // adjust javascript
+               $jpage = $page;
+               if (preg_match_all('/this\.addField\(\'([^\']*)\',\'([^\']*)\',([0-9]+)/', $this->javascript, $pamatch) > 0) {
+                       foreach($pamatch[0] as $pk => $pmatch) {
+                               $pagenum = intval($pamatch[3][$pk]) + 1;
+                               if ($pagenum >= $jpage) {
+                                       $newpage = ($pagenum - 1);
+                               } elseif ($pagenum == $jpage) {
+                                       $newpage = 1;
+                               } else {
+                                       $newpage = $pagenum;
+                               }
+                               --$newpage;
+                               $newjs = "this.addField(\'".$pamatch[1][$pk]."\',\'".$pamatch[2][$pk]."\',".$newpage;
+                               $this->javascript = str_replace($pmatch, $newjs, $this->javascript);
+                       }
+                       unset($pamatch);
+               }
+               // return to last page
+               if ($this->numpages > 0) {
+                       $this->lastPage(true);
+               }
+               return true;
+       }
+
+       /**
+        * Clone the specified page to a new page.
+        * @param $page (int) number of page to copy (0 = current page)
+        * @return true in case of success, false in case of error.
+        * @public
+        * @since 4.9.015 (2010-04-20)
+        */
+       public function copyPage($page=0) {
+               if ($page == 0) {
+                       // default value
+                       $page = $this->page;
+               }
+               if (($page < 1) OR ($page > $this->numpages)) {
+                       return false;
+               }
+               // close the last page
+               $this->endPage();
+               // copy all page-related states
+               ++$this->numpages;
+               $this->page = $this->numpages;
+               $this->setPageBuffer($this->page, $this->getPageBuffer($page));
+               $this->pagedim[$this->page] = $this->pagedim[$page];
+               $this->pagelen[$this->page] = $this->pagelen[$page];
+               $this->intmrk[$this->page] = $this->intmrk[$page];
+               $this->bordermrk[$this->page] = $this->bordermrk[$page];
+               $this->cntmrk[$this->page] = $this->cntmrk[$page];
+               $this->pageobjects[$this->page] = $this->pageobjects[$page];
+               $this->pageopen[$this->page] = false;
+               if (isset($this->footerpos[$page])) {
+                       $this->footerpos[$this->page] = $this->footerpos[$page];
+               }
+               if (isset($this->footerlen[$page])) {
+                       $this->footerlen[$this->page] = $this->footerlen[$page];
+               }
+               if (isset($this->transfmrk[$page])) {
+                       $this->transfmrk[$this->page] = $this->transfmrk[$page];
+               }
+               if (isset($this->PageAnnots[$page])) {
+                       $this->PageAnnots[$this->page] = $this->PageAnnots[$page];
+               }
+               if (isset($this->newpagegroup[$page])) {
+                       // start a new group
+                       $this->newpagegroup[$this->page] = sizeof($this->newpagegroup) + 1;
+                       $this->currpagegroup = $this->newpagegroup[$this->page];
+                       $this->pagegroups[$this->currpagegroup] = 1;
+               } elseif (isset($this->currpagegroup) AND ($this->currpagegroup > 0)) {
+                       ++$this->pagegroups[$this->currpagegroup];
+               }
+               // copy outlines
+               $tmpoutlines = $this->outlines;
+               foreach ($tmpoutlines as $key => $outline) {
+                       if ($outline['p'] == $page) {
+                               $this->outlines[] = array('t' => $outline['t'], 'l' => $outline['l'], 'x' => $outline['x'], 'y' => $outline['y'], 'p' => $this->page, 'f' => $outline['f'], 's' => $outline['s'], 'c' => $outline['c']);
+                       }
+               }
+               // copy links
+               $tmplinks = $this->links;
+               foreach ($tmplinks as $key => $link) {
+                       if ($link['p'] == $page) {
+                               $this->links[] = array('p' => $this->page, 'y' => $link['y'], 'f' => $link['f']);
+                       }
+               }
+               // return to last page
+               $this->lastPage(true);
+               return true;
+       }
+
+       /**
+        * Output a Table of Content Index (TOC).
+        * This method must be called after all Bookmarks were set.
+        * Before calling this method you have to open the page using the addTOCPage() method.
+        * After calling this method you have to call endTOCPage() to close the TOC page.
+        * You can override this method to achieve different styles.
+        * @param $page (int) page number where this TOC should be inserted (leave empty for current page).
+        * @param $numbersfont (string) set the font for page numbers (please use monospaced font for better alignment).
+        * @param $filler (string) string used to fill the space between text and page number.
+        * @param $toc_name (string) name to use for TOC bookmark.
+        * @param $style (string) Font style for title: B = Bold, I = Italic, BI = Bold + Italic.
+        * @param $color (array) RGB color array for bookmark title (values from 0 to 255).
+        * @public
+        * @author Nicola Asuni
+        * @since 4.5.000 (2009-01-02)
+        * @see addTOCPage(), endTOCPage(), addHTMLTOC()
+        */
+       public function addTOC($page='', $numbersfont='', $filler='.', $toc_name='TOC', $style='', $color=array(0,0,0)) {
+               $fontsize = $this->FontSizePt;
+               $fontfamily = $this->FontFamily;
+               $fontstyle = $this->FontStyle;
+               $w = $this->w - $this->lMargin - $this->rMargin;
+               $spacer = $this->GetStringWidth(chr(32)) * 4;
+               $lmargin = $this->lMargin;
+               $rmargin = $this->rMargin;
+               $x_start = $this->GetX();
+               $page_first = $this->page;
+               $current_page = $this->page;
+               $page_fill_start = false;
+               $page_fill_end = false;
+               $current_column = $this->current_column;
+               if (TCPDF_STATIC::empty_string($numbersfont)) {
+                       $numbersfont = $this->default_monospaced_font;
+               }
+               if (TCPDF_STATIC::empty_string($filler)) {
+                       $filler = ' ';
+               }
+               if (TCPDF_STATIC::empty_string($page)) {
+                       $gap = ' ';
+               } else {
+                       $gap = '';
+                       if ($page < 1) {
+                               $page = 1;
+                       }
+               }
+               $this->SetFont($numbersfont, $fontstyle, $fontsize);
+               $numwidth = $this->GetStringWidth('00000');
+               $maxpage = 0; //used for pages on attached documents
+               foreach ($this->outlines as $key => $outline) {
+                       // check for extra pages (used for attachments)
+                       if (($this->page > $page_first) AND ($outline['p'] >= $this->numpages)) {
+                               $outline['p'] += ($this->page - $page_first);
+                       }
+                       if ($this->rtl) {
+                               $aligntext = 'R';
+                               $alignnum = 'L';
+                       } else {
+                               $aligntext = 'L';
+                               $alignnum = 'R';
+                       }
+                       if ($outline['l'] == 0) {
+                               $this->SetFont($fontfamily, $outline['s'].'B', $fontsize);
+                       } else {
+                               $this->SetFont($fontfamily, $outline['s'], $fontsize - $outline['l']);
+                       }
+                       $this->SetTextColorArray($outline['c']);
+                       // check for page break
+                       $this->checkPageBreak(2 * $this->getCellHeight($this->FontSize));
+                       // set margins and X position
+                       if (($this->page == $current_page) AND ($this->current_column == $current_column)) {
+                               $this->lMargin = $lmargin;
+                               $this->rMargin = $rmargin;
+                       } else {
+                               if ($this->current_column != $current_column) {
+                                       if ($this->rtl) {
+                                               $x_start = $this->w - $this->columns[$this->current_column]['x'];
+                                       } else {
+                                               $x_start = $this->columns[$this->current_column]['x'];
+                                       }
+                               }
+                               $lmargin = $this->lMargin;
+                               $rmargin = $this->rMargin;
+                               $current_page = $this->page;
+                               $current_column = $this->current_column;
+                       }
+                       $this->SetX($x_start);
+                       $indent = ($spacer * $outline['l']);
+                       if ($this->rtl) {
+                               $this->x -= $indent;
+                               $this->rMargin = $this->w - $this->x;
+                       } else {
+                               $this->x += $indent;
+                               $this->lMargin = $this->x;
+                       }
+                       $link = $this->AddLink();
+                       $this->SetLink($link, $outline['y'], $outline['p']);
+                       // write the text
+                       if ($this->rtl) {
+                               $txt = ' '.$outline['t'];
+                       } else {
+                               $txt = $outline['t'].' ';
+                       }
+                       $this->Write(0, $txt, $link, false, $aligntext, false, 0, false, false, 0, $numwidth, '');
+                       if ($this->rtl) {
+                               $tw = $this->x - $this->lMargin;
+                       } else {
+                               $tw = $this->w - $this->rMargin - $this->x;
+                       }
+                       $this->SetFont($numbersfont, $fontstyle, $fontsize);
+                       if (TCPDF_STATIC::empty_string($page)) {
+                               $pagenum = $outline['p'];
+                       } else {
+                               // placemark to be replaced with the correct number
+                               $pagenum = '{#'.($outline['p']).'}';
+                               if ($this->isUnicodeFont()) {
+                                       $pagenum = '{'.$pagenum.'}';
+                               }
+                               $maxpage = max($maxpage, $outline['p']);
+                       }
+                       $fw = ($tw - $this->GetStringWidth($pagenum.$filler));
+                       $wfiller = $this->GetStringWidth($filler);
+                       if ($wfiller > 0) {
+                               $numfills = floor($fw / $wfiller);
+                       } else {
+                               $numfills = 0;
+                       }
+                       if ($numfills > 0) {
+                               $rowfill = str_repeat($filler, $numfills);
+                       } else {
+                               $rowfill = '';
+                       }
+                       if ($this->rtl) {
+                               $pagenum = $pagenum.$gap.$rowfill;
+                       } else {
+                               $pagenum = $rowfill.$gap.$pagenum;
+                       }
+                       // write the number
+                       $this->Cell($tw, 0, $pagenum, 0, 1, $alignnum, 0, $link, 0);
+               }
+               $page_last = $this->getPage();
+               $numpages = ($page_last - $page_first + 1);
+               // account for booklet mode
+               if ($this->booklet) {
+                       // check if a blank page is required before TOC
+                       $page_fill_start = ((($page_first % 2) == 0) XOR (($page % 2) == 0));
+                       $page_fill_end = (!((($numpages % 2) == 0) XOR ($page_fill_start)));
+                       if ($page_fill_start) {
+                               // add a page at the end (to be moved before TOC)
+                               $this->addPage();
+                               ++$page_last;
+                               ++$numpages;
+                       }
+                       if ($page_fill_end) {
+                               // add a page at the end
+                               $this->addPage();
+                               ++$page_last;
+                               ++$numpages;
+                       }
+               }
+               $maxpage = max($maxpage, $page_last);
+               if (!TCPDF_STATIC::empty_string($page)) {
+                       for ($p = $page_first; $p <= $page_last; ++$p) {
+                               // get page data
+                               $temppage = $this->getPageBuffer($p);
+                               for ($n = 1; $n <= $maxpage; ++$n) {
+                                       // update page numbers
+                                       $a = '{#'.$n.'}';
+                                       // get page number aliases
+                                       $pnalias = $this->getInternalPageNumberAliases($a);
+                                       // calculate replacement number
+                                       if (($n >= $page) AND ($n <= $this->numpages)) {
+                                               $np = $n + $numpages;
+                                       } else {
+                                               $np = $n;
+                                       }
+                                       $na = TCPDF_STATIC::formatTOCPageNumber(($this->starting_page_number + $np - 1));
+                                       $nu = TCPDF_FONTS::UTF8ToUTF16BE($na, false, $this->isunicode, $this->CurrentFont);
+                                       // replace aliases with numbers
+                                       foreach ($pnalias['u'] as $u) {
+                                               $sfill = str_repeat($filler, max(0, (strlen($u) - strlen($nu.' '))));
+                                               if ($this->rtl) {
+                                                       $nr = $nu.TCPDF_FONTS::UTF8ToUTF16BE(' '.$sfill, false, $this->isunicode, $this->CurrentFont);
+                                               } else {
+                                                       $nr = TCPDF_FONTS::UTF8ToUTF16BE($sfill.' ', false, $this->isunicode, $this->CurrentFont).$nu;
+                                               }
+                                               $temppage = str_replace($u, $nr, $temppage);
+                                       }
+                                       foreach ($pnalias['a'] as $a) {
+                                               $sfill = str_repeat($filler, max(0, (strlen($a) - strlen($na.' '))));
+                                               if ($this->rtl) {
+                                                       $nr = $na.' '.$sfill;
+                                               } else {
+                                                       $nr = $sfill.' '.$na;
+                                               }
+                                               $temppage = str_replace($a, $nr, $temppage);
+                                       }
+                               }
+                               // save changes
+                               $this->setPageBuffer($p, $temppage);
+                       }
+                       // move pages
+                       $this->Bookmark($toc_name, 0, 0, $page_first, $style, $color);
+                       if ($page_fill_start) {
+                               $this->movePage($page_last, $page_first);
+                       }
+                       for ($i = 0; $i < $numpages; ++$i) {
+                               $this->movePage($page_last, $page);
+                       }
+               }
+       }
+
+       /**
+        * Output a Table Of Content Index (TOC) using HTML templates.
+        * This method must be called after all Bookmarks were set.
+        * Before calling this method you have to open the page using the addTOCPage() method.
+        * After calling this method you have to call endTOCPage() to close the TOC page.
+        * @param $page (int) page number where this TOC should be inserted (leave empty for current page).
+        * @param $toc_name (string) name to use for TOC bookmark.
+        * @param $templates (array) array of html templates. Use: "#TOC_DESCRIPTION#" for bookmark title, "#TOC_PAGE_NUMBER#" for page number.
+        * @param $correct_align (boolean) if true correct the number alignment (numbers must be in monospaced font like courier and right aligned on LTR, or left aligned on RTL)
+        * @param $style (string) Font style for title: B = Bold, I = Italic, BI = Bold + Italic.
+        * @param $color (array) RGB color array for title (values from 0 to 255).
+        * @public
+        * @author Nicola Asuni
+        * @since 5.0.001 (2010-05-06)
+        * @see addTOCPage(), endTOCPage(), addTOC()
+        */
+       public function addHTMLTOC($page='', $toc_name='TOC', $templates=array(), $correct_align=true, $style='', $color=array(0,0,0)) {
+               $filler = ' ';
+               $prev_htmlLinkColorArray = $this->htmlLinkColorArray;
+               $prev_htmlLinkFontStyle = $this->htmlLinkFontStyle;
+               // set new style for link
+               $this->htmlLinkColorArray = array();
+               $this->htmlLinkFontStyle = '';
+               $page_first = $this->getPage();
+               $page_fill_start = false;
+               $page_fill_end = false;
+               // get the font type used for numbers in each template
+               $current_font = $this->FontFamily;
+               foreach ($templates as $level => $html) {
+                       $dom = $this->getHtmlDomArray($html);
+                       foreach ($dom as $key => $value) {
+                               if ($value['value'] == '#TOC_PAGE_NUMBER#') {
+                                       $this->SetFont($dom[($key - 1)]['fontname']);
+                                       $templates['F'.$level] = $this->isUnicodeFont();
+                               }
+                       }
+               }
+               $this->SetFont($current_font);
+               $maxpage = 0; //used for pages on attached documents
+               foreach ($this->outlines as $key => $outline) {
+                       // get HTML template
+                       $row = $templates[$outline['l']];
+                       if (TCPDF_STATIC::empty_string($page)) {
+                               $pagenum = $outline['p'];
+                       } else {
+                               // placemark to be replaced with the correct number
+                               $pagenum = '{#'.($outline['p']).'}';
+                               if ($templates['F'.$outline['l']]) {
+                                       $pagenum = '{'.$pagenum.'}';
+                               }
+                               $maxpage = max($maxpage, $outline['p']);
+                       }
+                       // replace templates with current values
+                       $row = str_replace('#TOC_DESCRIPTION#', $outline['t'], $row);
+                       $row = str_replace('#TOC_PAGE_NUMBER#', $pagenum, $row);
+                       // add link to page
+                       $row = '<a href="#'.$outline['p'].','.$outline['y'].'">'.$row.'</a>';
+                       // write bookmark entry
+                       $this->writeHTML($row, false, false, true, false, '');
+               }
+               // restore link styles
+               $this->htmlLinkColorArray = $prev_htmlLinkColorArray;
+               $this->htmlLinkFontStyle = $prev_htmlLinkFontStyle;
+               // move TOC page and replace numbers
+               $page_last = $this->getPage();
+               $numpages = ($page_last - $page_first + 1);
+               // account for booklet mode
+               if ($this->booklet) {
+                       // check if a blank page is required before TOC
+                       $page_fill_start = ((($page_first % 2) == 0) XOR (($page % 2) == 0));
+                       $page_fill_end = (!((($numpages % 2) == 0) XOR ($page_fill_start)));
+                       if ($page_fill_start) {
+                               // add a page at the end (to be moved before TOC)
+                               $this->addPage();
+                               ++$page_last;
+                               ++$numpages;
+                       }
+                       if ($page_fill_end) {
+                               // add a page at the end
+                               $this->addPage();
+                               ++$page_last;
+                               ++$numpages;
+                       }
+               }
+               $maxpage = max($maxpage, $page_last);
+               if (!TCPDF_STATIC::empty_string($page)) {
+                       for ($p = $page_first; $p <= $page_last; ++$p) {
+                               // get page data
+                               $temppage = $this->getPageBuffer($p);
+                               for ($n = 1; $n <= $maxpage; ++$n) {
+                                       // update page numbers
+                                       $a = '{#'.$n.'}';
+                                       // get page number aliases
+                                       $pnalias = $this->getInternalPageNumberAliases($a);
+                                       // calculate replacement number
+                                       if ($n >= $page) {
+                                               $np = $n + $numpages;
+                                       } else {
+                                               $np = $n;
+                                       }
+                                       $na = TCPDF_STATIC::formatTOCPageNumber(($this->starting_page_number + $np - 1));
+                                       $nu = TCPDF_FONTS::UTF8ToUTF16BE($na, false, $this->isunicode, $this->CurrentFont);
+                                       // replace aliases with numbers
+                                       foreach ($pnalias['u'] as $u) {
+                                               if ($correct_align) {
+                                                       $sfill = str_repeat($filler, (strlen($u) - strlen($nu.' ')));
+                                                       if ($this->rtl) {
+                                                               $nr = $nu.TCPDF_FONTS::UTF8ToUTF16BE(' '.$sfill, false, $this->isunicode, $this->CurrentFont);
+                                                       } else {
+                                                               $nr = TCPDF_FONTS::UTF8ToUTF16BE($sfill.' ', false, $this->isunicode, $this->CurrentFont).$nu;
+                                                       }
+                                               } else {
+                                                       $nr = $nu;
+                                               }
+                                               $temppage = str_replace($u, $nr, $temppage);
+                                       }
+                                       foreach ($pnalias['a'] as $a) {
+                                               if ($correct_align) {
+                                                       $sfill = str_repeat($filler, (strlen($a) - strlen($na.' ')));
+                                                       if ($this->rtl) {
+                                                               $nr = $na.' '.$sfill;
+                                                       } else {
+                                                               $nr = $sfill.' '.$na;
+                                                       }
+                                               } else {
+                                                       $nr = $na;
+                                               }
+                                               $temppage = str_replace($a, $nr, $temppage);
+                                       }
+                               }
+                               // save changes
+                               $this->setPageBuffer($p, $temppage);
+                       }
+                       // move pages
+                       $this->Bookmark($toc_name, 0, 0, $page_first, $style, $color);
+                       if ($page_fill_start) {
+                               $this->movePage($page_last, $page_first);
+                       }
+                       for ($i = 0; $i < $numpages; ++$i) {
+                               $this->movePage($page_last, $page);
+                       }
+               }
+       }
+
+       /**
+        * Stores a copy of the current TCPDF object used for undo operation.
+        * @public
+        * @since 4.5.029 (2009-03-19)
+        */
+       public function startTransaction() {
+               if (isset($this->objcopy)) {
+                       // remove previous copy
+                       $this->commitTransaction();
+               }
+               // record current page number and Y position
+               $this->start_transaction_page = $this->page;
+               $this->start_transaction_y = $this->y;
+               // clone current object
+               $this->objcopy = TCPDF_STATIC::objclone($this);
+       }
+
+       /**
+        * Delete the copy of the current TCPDF object used for undo operation.
+        * @public
+        * @since 4.5.029 (2009-03-19)
+        */
+       public function commitTransaction() {
+               if (isset($this->objcopy)) {
+                       $this->objcopy->_destroy(true, true);
+                       unset($this->objcopy);
+               }
+       }
+
+       /**
+        * This method allows to undo the latest transaction by returning the latest saved TCPDF object with startTransaction().
+        * @param $self (boolean) if true restores current class object to previous state without the need of reassignment via the returned value.
+        * @return TCPDF object.
+        * @public
+        * @since 4.5.029 (2009-03-19)
+        */
+       public function rollbackTransaction($self=false) {
+               if (isset($this->objcopy)) {
+                       if (isset($this->objcopy->diskcache) AND $this->objcopy->diskcache) {
+                               // truncate files to previous values
+                               foreach ($this->objcopy->cache_file_length as $file => $length) {
+                                       $file = substr($file, 1);
+                                       $handle = fopen($file, 'r+');
+                                       ftruncate($handle, $length);
+                               }
+                       }
+                       $this->_destroy(true, true);
+                       if ($self) {
+                               $objvars = get_object_vars($this->objcopy);
+                               foreach ($objvars as $key => $value) {
+                                       $this->$key = $value;
+                               }
+                       }
+                       return $this->objcopy;
+               }
+               return $this;
+       }
+
+       // --- MULTI COLUMNS METHODS -----------------------
+
+       /**
+        * Set multiple columns of the same size
+        * @param $numcols (int) number of columns (set to zero to disable columns mode)
+        * @param $width (int) column width
+        * @param $y (int) column starting Y position (leave empty for current Y position)
+        * @public
+        * @since 4.9.001 (2010-03-28)
+        */
+       public function setEqualColumns($numcols=0, $width=0, $y='') {
+               $this->columns = array();
+               if ($numcols < 2) {
+                       $numcols = 0;
+                       $this->columns = array();
+               } else {
+                       // maximum column width
+                       $maxwidth = ($this->w - $this->original_lMargin - $this->original_rMargin) / $numcols;
+                       if (($width == 0) OR ($width > $maxwidth)) {
+                               $width = $maxwidth;
+                       }
+                       if (TCPDF_STATIC::empty_string($y)) {
+                               $y = $this->y;
+                       }
+                       // space between columns
+                       $space = (($this->w - $this->original_lMargin - $this->original_rMargin - ($numcols * $width)) / ($numcols - 1));
+                       // fill the columns array (with, space, starting Y position)
+                       for ($i = 0; $i < $numcols; ++$i) {
+                               $this->columns[$i] = array('w' => $width, 's' => $space, 'y' => $y);
+                       }
+               }
+               $this->num_columns = $numcols;
+               $this->current_column = 0;
+               $this->column_start_page = $this->page;
+               $this->selectColumn(0);
+       }
+
+       /**
+        * Remove columns and reset page margins.
+        * @public
+        * @since 5.9.072 (2011-04-26)
+        */
+       public function resetColumns() {
+               $this->lMargin = $this->original_lMargin;
+               $this->rMargin = $this->original_rMargin;
+               $this->setEqualColumns();
+       }
+
+       /**
+        * Set columns array.
+        * Each column is represented by an array of arrays with the following keys: (w = width, s = space between columns, y = column top position).
+        * @param $columns (array)
+        * @public
+        * @since 4.9.001 (2010-03-28)
+        */
+       public function setColumnsArray($columns) {
+               $this->columns = $columns;
+               $this->num_columns = count($columns);
+               $this->current_column = 0;
+               $this->column_start_page = $this->page;
+               $this->selectColumn(0);
+       }
+
+       /**
+        * Set position at a given column
+        * @param $col (int) column number (from 0 to getNumberOfColumns()-1); empty string = current column.
+        * @public
+        * @since 4.9.001 (2010-03-28)
+        */
+       public function selectColumn($col='') {
+               if (is_string($col)) {
+                       $col = $this->current_column;
+               } elseif ($col >= $this->num_columns) {
+                       $col = 0;
+               }
+               $xshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0));
+               $enable_thead = false;
+               if ($this->num_columns > 1) {
+                       if ($col != $this->current_column) {
+                               // move Y pointer at the top of the column
+                               if ($this->column_start_page == $this->page) {
+                                       $this->y = $this->columns[$col]['y'];
+                               } else {
+                                       $this->y = $this->tMargin;
+                               }
+                               // Avoid to write table headers more than once
+                               if (($this->page > $this->maxselcol['page']) OR (($this->page == $this->maxselcol['page']) AND ($col > $this->maxselcol['column']))) {
+                                       $enable_thead = true;
+                                       $this->maxselcol['page'] = $this->page;
+                                       $this->maxselcol['column'] = $col;
+                               }
+                       }
+                       $xshift = $this->colxshift;
+                       // set X position of the current column by case
+                       $listindent = ($this->listindentlevel * $this->listindent);
+                       // calculate column X position
+                       $colpos = 0;
+                       for ($i = 0; $i < $col; ++$i) {
+                               $colpos += ($this->columns[$i]['w'] + $this->columns[$i]['s']);
+                       }
+                       if ($this->rtl) {
+                               $x = $this->w - $this->original_rMargin - $colpos;
+                               $this->rMargin = ($this->w - $x + $listindent);
+                               $this->lMargin = ($x - $this->columns[$col]['w']);
+                               $this->x = $x - $listindent;
+                       } else {
+                               $x = $this->original_lMargin + $colpos;
+                               $this->lMargin = ($x + $listindent);
+                               $this->rMargin = ($this->w - $x - $this->columns[$col]['w']);
+                               $this->x = $x + $listindent;
+                       }
+                       $this->columns[$col]['x'] = $x;
+               }
+               $this->current_column = $col;
+               // fix for HTML mode
+               $this->newline = true;
+               // print HTML table header (if any)
+               if ((!TCPDF_STATIC::empty_string($this->thead)) AND (!$this->inthead)) {
+                       if ($enable_thead) {
+                               // print table header
+                               $this->writeHTML($this->thead, false, false, false, false, '');
+                               $this->y += $xshift['s']['V'];
+                               // store end of header position
+                               if (!isset($this->columns[$col]['th'])) {
+                                       $this->columns[$col]['th'] = array();
+                               }
+                               $this->columns[$col]['th']['\''.$this->page.'\''] = $this->y;
+                               $this->lasth = 0;
+                       } elseif (isset($this->columns[$col]['th']['\''.$this->page.'\''])) {
+                               $this->y = $this->columns[$col]['th']['\''.$this->page.'\''];
+                       }
+               }
+               // account for an html table cell over multiple columns
+               if ($this->rtl) {
+                       $this->rMargin += $xshift['x'];
+                       $this->x -= ($xshift['x'] + $xshift['p']['R']);
+               } else {
+                       $this->lMargin += $xshift['x'];
+                       $this->x += $xshift['x'] + $xshift['p']['L'];
+               }
+       }
+
+       /**
+        * Return the current column number
+        * @return int current column number
+        * @public
+        * @since 5.5.011 (2010-07-08)
+        */
+       public function getColumn() {
+               return $this->current_column;
+       }
+
+       /**
+        * Return the current number of columns.
+        * @return int number of columns
+        * @public
+        * @since 5.8.018 (2010-08-25)
+        */
+       public function getNumberOfColumns() {
+               return $this->num_columns;
+       }
+
+       /**
+        * Set Text rendering mode.
+        * @param $stroke (int) outline size in user units (0 = disable).
+        * @param $fill (boolean) if true fills the text (default).
+        * @param $clip (boolean) if true activate clipping mode
+        * @public
+        * @since 4.9.008 (2009-04-02)
+        */
+       public function setTextRenderingMode($stroke=0, $fill=true, $clip=false) {
+               // Ref.: PDF 32000-1:2008 - 9.3.6 Text Rendering Mode
+               // convert text rendering parameters
+               if ($stroke < 0) {
+                       $stroke = 0;
+               }
+               if ($fill === true) {
+                       if ($stroke > 0) {
+                               if ($clip === true) {
+                                       // Fill, then stroke text and add to path for clipping
+                                       $textrendermode = 6;
+                               } else {
+                                       // Fill, then stroke text
+                                       $textrendermode = 2;
+                               }
+                               $textstrokewidth = $stroke;
+                       } else {
+                               if ($clip === true) {
+                                       // Fill text and add to path for clipping
+                                       $textrendermode = 4;
+                               } else {
+                                       // Fill text
+                                       $textrendermode = 0;
+                               }
+                       }
+               } else {
+                       if ($stroke > 0) {
+                               if ($clip === true) {
+                                       // Stroke text and add to path for clipping
+                                       $textrendermode = 5;
+                               } else {
+                                       // Stroke text
+                                       $textrendermode = 1;
+                               }
+                               $textstrokewidth = $stroke;
+                       } else {
+                               if ($clip === true) {
+                                       // Add text to path for clipping
+                                       $textrendermode = 7;
+                               } else {
+                                       // Neither fill nor stroke text (invisible)
+                                       $textrendermode = 3;
+                               }
+                       }
+               }
+               $this->textrendermode = $textrendermode;
+               $this->textstrokewidth = $stroke;
+       }
+
+       /**
+        * Set parameters for drop shadow effect for text.
+        * @param $params (array) Array of parameters: enabled (boolean) set to true to enable shadow; depth_w (float) shadow width in user units; depth_h (float) shadow height in user units; color (array) shadow color or false to use the stroke color; opacity (float) Alpha value: real value from 0 (transparent) to 1 (opaque); blend_mode (string) blend mode, one of the following: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity.
+        * @since 5.9.174 (2012-07-25)
+        * @public
+       */
+       public function setTextShadow($params=array('enabled'=>false, 'depth_w'=>0, 'depth_h'=>0, 'color'=>false, 'opacity'=>1, 'blend_mode'=>'Normal')) {
+               if (isset($params['enabled'])) {
+                       $this->txtshadow['enabled'] = $params['enabled']?true:false;
+               } else {
+                       $this->txtshadow['enabled'] = false;
+               }
+               if (isset($params['depth_w'])) {
+                       $this->txtshadow['depth_w'] = floatval($params['depth_w']);
+               } else {
+                       $this->txtshadow['depth_w'] = 0;
+               }
+               if (isset($params['depth_h'])) {
+                       $this->txtshadow['depth_h'] = floatval($params['depth_h']);
+               } else {
+                       $this->txtshadow['depth_h'] = 0;
+               }
+               if (isset($params['color']) AND ($params['color'] !== false) AND is_array($params['color'])) {
+                       $this->txtshadow['color'] = $params['color'];
+               } else {
+                       $this->txtshadow['color'] = $this->strokecolor;
+               }
+               if (isset($params['opacity'])) {
+                       $this->txtshadow['opacity'] = min(1, max(0, floatval($params['opacity'])));
+               } else {
+                       $this->txtshadow['opacity'] = 1;
+               }
+               if (isset($params['blend_mode']) AND in_array($params['blend_mode'], array('Normal', 'Multiply', 'Screen', 'Overlay', 'Darken', 'Lighten', 'ColorDodge', 'ColorBurn', 'HardLight', 'SoftLight', 'Difference', 'Exclusion', 'Hue', 'Saturation', 'Color', 'Luminosity'))) {
+                       $this->txtshadow['blend_mode'] = $params['blend_mode'];
+               } else {
+                       $this->txtshadow['blend_mode'] = 'Normal';
+               }
+               if ((($this->txtshadow['depth_w'] == 0) AND ($this->txtshadow['depth_h'] == 0)) OR ($this->txtshadow['opacity'] == 0)) {
+                       $this->txtshadow['enabled'] = false;
+               }
+       }
+
+       /**
+        * Return the text shadow parameters array.
+        * @return Array of parameters.
+        * @since 5.9.174 (2012-07-25)
+        * @public
+        */
+       public function getTextShadow() {
+               return $this->txtshadow;
+       }
+
+       /**
+        * Returns an array of chars containing soft hyphens.
+        * @param $word (array) array of chars
+        * @param $patterns (array) Array of hypenation patterns.
+        * @param $dictionary (array) Array of words to be returned without applying the hyphenation algoritm.
+        * @param $leftmin (int) Minimum number of character to leave on the left of the word without applying the hyphens.
+        * @param $rightmin (int) Minimum number of character to leave on the right of the word without applying the hyphens.
+        * @param $charmin (int) Minimum word length to apply the hyphenation algoritm.
+        * @param $charmax (int) Maximum length of broken piece of word.
+        * @return array text with soft hyphens
+        * @author Nicola Asuni
+        * @since 4.9.012 (2010-04-12)
+        * @protected
+        */
+       protected function hyphenateWord($word, $patterns, $dictionary=array(), $leftmin=1, $rightmin=2, $charmin=1, $charmax=8) {
+               $hyphenword = array(); // hyphens positions
+               $numchars = count($word);
+               if ($numchars <= $charmin) {
+                       return $word;
+               }
+               $word_string = TCPDF_FONTS::UTF8ArrSubString($word, '', '', $this->isunicode);
+               // some words will be returned as-is
+               $pattern = '/^([a-zA-Z0-9_\.\-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/';
+               if (preg_match($pattern, $word_string) > 0) {
+                       // email
+                       return $word;
+               }
+               $pattern = '/(([a-zA-Z0-9\-]+\.)?)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/';
+               if (preg_match($pattern, $word_string) > 0) {
+                       // URL
+                       return $word;
+               }
+               if (isset($dictionary[$word_string])) {
+                       return TCPDF_FONTS::UTF8StringToArray($dictionary[$word_string], $this->isunicode, $this->CurrentFont);
+               }
+               // surround word with '_' characters
+               $tmpword = array_merge(array(46), $word, array(46));
+               $tmpnumchars = $numchars + 2;
+               $maxpos = $tmpnumchars - $charmin;
+               for ($pos = 0; $pos < $maxpos; ++$pos) {
+                       $imax = min(($tmpnumchars - $pos), $charmax);
+                       for ($i = $charmin; $i <= $imax; ++$i) {
+                               $subword = strtolower(TCPDF_FONTS::UTF8ArrSubString($tmpword, $pos, ($pos + $i), $this->isunicode));
+                               if (isset($patterns[$subword])) {
+                                       $pattern = TCPDF_FONTS::UTF8StringToArray($patterns[$subword], $this->isunicode, $this->CurrentFont);
+                                       $pattern_length = count($pattern);
+                                       $digits = 1;
+                                       for ($j = 0; $j < $pattern_length; ++$j) {
+                                               // check if $pattern[$j] is a number = hyphenation level (only numbers from 1 to 5 are valid)
+                                               if (($pattern[$j] >= 48) AND ($pattern[$j] <= 57)) {
+                                                       if ($j == 0) {
+                                                               $zero = $pos - 1;
+                                                       } else {
+                                                               $zero = $pos + $j - $digits;
+                                                       }
+                                                       // get hyphenation level
+                                                       $level = ($pattern[$j] - 48);
+                                                       // if two levels from two different patterns match at the same point, the higher one is selected.
+                                                       if (!isset($hyphenword[$zero]) OR ($hyphenword[$zero] < $level)) {
+                                                               $hyphenword[$zero] = $level;
+                                                       }
+                                                       ++$digits;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               $inserted = 0;
+               $maxpos = $numchars - $rightmin;
+               for ($i = $leftmin; $i <= $maxpos; ++$i) {
+                       // only odd levels indicate allowed hyphenation points
+                       if (isset($hyphenword[$i]) AND (($hyphenword[$i] % 2) != 0)) {
+                               // 173 = soft hyphen character
+                               array_splice($word, $i + $inserted, 0, 173);
+                               ++$inserted;
+                       }
+               }
+               return $word;
+       }
+
+       /**
+        * Returns text with soft hyphens.
+        * @param $text (string) text to process
+        * @param $patterns (mixed) Array of hypenation patterns or a TEX file containing hypenation patterns. TEX patterns can be downloaded from http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/
+        * @param $dictionary (array) Array of words to be returned without applying the hyphenation algoritm.
+        * @param $leftmin (int) Minimum number of character to leave on the left of the word without applying the hyphens.
+        * @param $rightmin (int) Minimum number of character to leave on the right of the word without applying the hyphens.
+        * @param $charmin (int) Minimum word length to apply the hyphenation algoritm.
+        * @param $charmax (int) Maximum length of broken piece of word.
+        * @return array text with soft hyphens
+        * @author Nicola Asuni
+        * @since 4.9.012 (2010-04-12)
+        * @public
+        */
+       public function hyphenateText($text, $patterns, $dictionary=array(), $leftmin=1, $rightmin=2, $charmin=1, $charmax=8) {
+               $text = $this->unhtmlentities($text);
+               $word = array(); // last word
+               $txtarr = array(); // text to be returned
+               $intag = false; // true if we are inside an HTML tag
+               $skip = false; // true to skip hyphenation
+               if (!is_array($patterns)) {
+                       $patterns = TCPDF_STATIC::getHyphenPatternsFromTEX($patterns);
+               }
+               // get array of characters
+               $unichars = TCPDF_FONTS::UTF8StringToArray($text, $this->isunicode, $this->CurrentFont);
+               // for each char
+               foreach ($unichars as $char) {
+                       if ((!$intag) AND (!$skip) AND TCPDF_FONT_DATA::$uni_type[$char] == 'L') {
+                               // letter character
+                               $word[] = $char;
+                       } else {
+                               // other type of character
+                               if (!TCPDF_STATIC::empty_string($word)) {
+                                       // hypenate the word
+                                       $txtarr = array_merge($txtarr, $this->hyphenateWord($word, $patterns, $dictionary, $leftmin, $rightmin, $charmin, $charmax));
+                                       $word = array();
+                               }
+                               $txtarr[] = $char;
+                               if (chr($char) == '<') {
+                                       // we are inside an HTML tag
+                                       $intag = true;
+                               } elseif ($intag AND (chr($char) == '>')) {
+                                       // end of HTML tag
+                                       $intag = false;
+                                       // check for style tag
+                                       $expected = array(115, 116, 121, 108, 101); // = 'style'
+                                       $current = array_slice($txtarr, -6, 5); // last 5 chars
+                                       $compare = array_diff($expected, $current);
+                                       if (empty($compare)) {
+                                               // check if it is a closing tag
+                                               $expected = array(47); // = '/'
+                                               $current = array_slice($txtarr, -7, 1);
+                                               $compare = array_diff($expected, $current);
+                                               if (empty($compare)) {
+                                                       // closing style tag
+                                                       $skip = false;
+                                               } else {
+                                                       // opening style tag
+                                                       $skip = true;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               if (!TCPDF_STATIC::empty_string($word)) {
+                       // hypenate the word
+                       $txtarr = array_merge($txtarr, $this->hyphenateWord($word, $patterns, $dictionary, $leftmin, $rightmin, $charmin, $charmax));
+               }
+               // convert char array to string and return
+               return TCPDF_FONTS::UTF8ArrSubString($txtarr, '', '', $this->isunicode);
+       }
+
+       /**
+        * Enable/disable rasterization of vector images using ImageMagick library.
+        * @param $mode (boolean) if true enable rasterization, false otherwise.
+        * @public
+        * @since 5.0.000 (2010-04-27)
+        */
+       public function setRasterizeVectorImages($mode) {
+               $this->rasterize_vector_images = $mode;
+       }
+
+       /**
+        * Enable or disable default option for font subsetting.
+        * @param $enable (boolean) if true enable font subsetting by default.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.3.002 (2010-06-07)
+        */
+       public function setFontSubsetting($enable=true) {
+               if ($this->pdfa_mode) {
+                       $this->font_subsetting = false;
+               } else {
+                       $this->font_subsetting = $enable ? true : false;
+               }
+       }
+
+       /**
+        * Return the default option for font subsetting.
+        * @return boolean default font subsetting state.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.3.002 (2010-06-07)
+        */
+       public function getFontSubsetting() {
+               return $this->font_subsetting;
+       }
+
+       /**
+        * Left trim the input string
+        * @param $str (string) string to trim
+        * @param $replace (string) string that replace spaces.
+        * @return left trimmed string
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.000 (2010-08-11)
+        */
+       public function stringLeftTrim($str, $replace='') {
+               return preg_replace('/^'.$this->re_space['p'].'+/'.$this->re_space['m'], $replace, $str);
+       }
+
+       /**
+        * Right trim the input string
+        * @param $str (string) string to trim
+        * @param $replace (string) string that replace spaces.
+        * @return right trimmed string
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.000 (2010-08-11)
+        */
+       public function stringRightTrim($str, $replace='') {
+               return preg_replace('/'.$this->re_space['p'].'+$/'.$this->re_space['m'], $replace, $str);
+       }
+
+       /**
+        * Trim the input string
+        * @param $str (string) string to trim
+        * @param $replace (string) string that replace spaces.
+        * @return trimmed string
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.000 (2010-08-11)
+        */
+       public function stringTrim($str, $replace='') {
+               $str = $this->stringLeftTrim($str, $replace);
+               $str = $this->stringRightTrim($str, $replace);
+               return $str;
+       }
+
+       /**
+        * Return true if the current font is unicode type.
+        * @return true for unicode font, false otherwise.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.002 (2010-08-14)
+        */
+       public function isUnicodeFont() {
+               return (($this->CurrentFont['type'] == 'TrueTypeUnicode') OR ($this->CurrentFont['type'] == 'cidfont0'));
+       }
+
+       /**
+        * Return normalized font name
+        * @param $fontfamily (string) property string containing font family names
+        * @return string normalized font name
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.004 (2010-08-17)
+        */
+       public function getFontFamilyName($fontfamily) {
+               // remove spaces and symbols
+               $fontfamily = preg_replace('/[^a-z0-9_\,]/', '', strtolower($fontfamily));
+               // extract all font names
+               $fontslist = preg_split('/[,]/', $fontfamily);
+               // find first valid font name
+               foreach ($fontslist as $font) {
+                       // replace font variations
+                       $font = preg_replace('/regular$/', '', $font);
+                       $font = preg_replace('/italic$/', 'I', $font);
+                       $font = preg_replace('/oblique$/', 'I', $font);
+                       $font = preg_replace('/bold([I]?)$/', 'B\\1', $font);
+                       // replace common family names and core fonts
+                       $pattern = array();
+                       $replacement = array();
+                       $pattern[] = '/^serif|^cursive|^fantasy|^timesnewroman/';
+                       $replacement[] = 'times';
+                       $pattern[] = '/^sansserif/';
+                       $replacement[] = 'helvetica';
+                       $pattern[] = '/^monospace/';
+                       $replacement[] = 'courier';
+                       $font = preg_replace($pattern, $replacement, $font);
+                       if (in_array(strtolower($font), $this->fontlist) OR in_array($font, $this->fontkeys)) {
+                               return $font;
+                       }
+               }
+               // return current font as default
+               return $this->CurrentFont['fontkey'];
+       }
+
+       /**
+        * Start a new XObject Template.
+        * An XObject Template is a PDF block that is a self-contained description of any sequence of graphics objects (including path objects, text objects, and sampled images).
+        * An XObject Template may be painted multiple times, either on several pages or at several locations on the same page and produces the same results each time, subject only to the graphics state at the time it is invoked.
+        * Note: X,Y coordinates will be reset to 0,0.
+        * @param $w (int) Template width in user units (empty string or zero = page width less margins).
+        * @param $h (int) Template height in user units (empty string or zero = page height less margins).
+        * @param $group (mixed) Set transparency group. Can be a boolean value or an array specifying optional parameters: 'CS' (solour space name), 'I' (boolean flag to indicate isolated group) and 'K' (boolean flag to indicate knockout group).
+        * @return int the XObject Template ID in case of success or false in case of error.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.017 (2010-08-24)
+        * @see endTemplate(), printTemplate()
+        */
+       public function startTemplate($w=0, $h=0, $group=false) {
+               if ($this->inxobj) {
+                       // we are already inside an XObject template
+                       return false;
+               }
+               $this->inxobj = true;
+               ++$this->n;
+               // XObject ID
+               $this->xobjid = 'XT'.$this->n;
+               // object ID
+               $this->xobjects[$this->xobjid] = array('n' => $this->n);
+               // store current graphic state
+               $this->xobjects[$this->xobjid]['gvars'] = $this->getGraphicVars();
+               // initialize data
+               $this->xobjects[$this->xobjid]['intmrk'] = 0;
+               $this->xobjects[$this->xobjid]['transfmrk'] = array();
+               $this->xobjects[$this->xobjid]['outdata'] = '';
+               $this->xobjects[$this->xobjid]['xobjects'] = array();
+               $this->xobjects[$this->xobjid]['images'] = array();
+               $this->xobjects[$this->xobjid]['fonts'] = array();
+               $this->xobjects[$this->xobjid]['annotations'] = array();
+               $this->xobjects[$this->xobjid]['extgstates'] = array();
+               $this->xobjects[$this->xobjid]['gradients'] = array();
+               $this->xobjects[$this->xobjid]['spot_colors'] = array();
+               // set new environment
+               $this->num_columns = 1;
+               $this->current_column = 0;
+               $this->SetAutoPageBreak(false);
+               if (($w === '') OR ($w <= 0)) {
+                       $w = $this->w - $this->lMargin - $this->rMargin;
+               }
+               if (($h === '') OR ($h <= 0)) {
+                       $h = $this->h - $this->tMargin - $this->bMargin;
+               }
+               $this->xobjects[$this->xobjid]['x'] = 0;
+               $this->xobjects[$this->xobjid]['y'] = 0;
+               $this->xobjects[$this->xobjid]['w'] = $w;
+               $this->xobjects[$this->xobjid]['h'] = $h;
+               $this->w = $w;
+               $this->h = $h;
+               $this->wPt = $this->w * $this->k;
+               $this->hPt = $this->h * $this->k;
+               $this->fwPt = $this->wPt;
+               $this->fhPt = $this->hPt;
+               $this->x = 0;
+               $this->y = 0;
+               $this->lMargin = 0;
+               $this->rMargin = 0;
+               $this->tMargin = 0;
+               $this->bMargin = 0;
+               // set group mode
+               $this->xobjects[$this->xobjid]['group'] = $group;
+               return $this->xobjid;
+       }
+
+       /**
+        * End the current XObject Template started with startTemplate() and restore the previous graphic state.
+        * An XObject Template is a PDF block that is a self-contained description of any sequence of graphics objects (including path objects, text objects, and sampled images).
+        * An XObject Template may be painted multiple times, either on several pages or at several locations on the same page and produces the same results each time, subject only to the graphics state at the time it is invoked.
+        * @return int the XObject Template ID in case of success or false in case of error.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.017 (2010-08-24)
+        * @see startTemplate(), printTemplate()
+        */
+       public function endTemplate() {
+               if (!$this->inxobj) {
+                       // we are not inside a template
+                       return false;
+               }
+               $this->inxobj = false;
+               // restore previous graphic state
+               $this->setGraphicVars($this->xobjects[$this->xobjid]['gvars'], true);
+               return $this->xobjid;
+       }
+
+       /**
+        * Print an XObject Template.
+        * You can print an XObject Template inside the currently opened Template.
+        * An XObject Template is a PDF block that is a self-contained description of any sequence of graphics objects (including path objects, text objects, and sampled images).
+        * An XObject Template may be painted multiple times, either on several pages or at several locations on the same page and produces the same results each time, subject only to the graphics state at the time it is invoked.
+        * @param $id (string) The ID of XObject Template to print.
+        * @param $x (int) X position in user units (empty string = current x position)
+        * @param $y (int) Y position in user units (empty string = current y position)
+        * @param $w (int) Width in user units (zero = remaining page width)
+        * @param $h (int) Height in user units (zero = remaining page height)
+        * @param $align (string) Indicates the alignment of the pointer next to template insertion relative to template height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul>
+        * @param $palign (string) Allows to center or align the template on the current line. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @param $fitonpage (boolean) If true the template is resized to not exceed page dimensions.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.8.017 (2010-08-24)
+        * @see startTemplate(), endTemplate()
+        */
+       public function printTemplate($id, $x='', $y='', $w=0, $h=0, $align='', $palign='', $fitonpage=false) {
+               if ($this->state != 2) {
+                        return;
+               }
+               if (!isset($this->xobjects[$id])) {
+                       $this->Error('The XObject Template \''.$id.'\' doesn\'t exist!');
+               }
+               if ($this->inxobj) {
+                       if ($id == $this->xobjid) {
+                               // close current template
+                               $this->endTemplate();
+                       } else {
+                               // use the template as resource for the template currently opened
+                               $this->xobjects[$this->xobjid]['xobjects'][$id] = $this->xobjects[$id];
+                       }
+               }
+               // set default values
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               $ow = $this->xobjects[$id]['w'];
+               if ($ow <= 0) {
+                       $ow = 1;
+               }
+               $oh = $this->xobjects[$id]['h'];
+               if ($oh <= 0) {
+                       $oh = 1;
+               }
+               // calculate template width and height on document
+               if (($w <= 0) AND ($h <= 0)) {
+                       $w = $ow;
+                       $h = $oh;
+               } elseif ($w <= 0) {
+                       $w = $h * $ow / $oh;
+               } elseif ($h <= 0) {
+                       $h = $w * $oh / $ow;
+               }
+               // fit the template on available space
+               list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage);
+               // set page alignment
+               $rb_y = $y + $h;
+               // set alignment
+               if ($this->rtl) {
+                       if ($palign == 'L') {
+                               $xt = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $xt = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $xt = $this->w - $this->rMargin - $w;
+                       } else {
+                               $xt = $x - $w;
+                       }
+                       $rb_x = $xt;
+               } else {
+                       if ($palign == 'L') {
+                               $xt = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $xt = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $xt = $this->w - $this->rMargin - $w;
+                       } else {
+                               $xt = $x;
+                       }
+                       $rb_x = $xt + $w;
+               }
+               // print XObject Template + Transformation matrix
+               $this->StartTransform();
+               // translate and scale
+               $sx = ($w / $ow);
+               $sy = ($h / $oh);
+               $tm = array();
+               $tm[0] = $sx;
+               $tm[1] = 0;
+               $tm[2] = 0;
+               $tm[3] = $sy;
+               $tm[4] = $xt * $this->k;
+               $tm[5] = ($this->h - $h - $y) * $this->k;
+               $this->Transform($tm);
+               // set object
+               $this->_out('/'.$id.' Do');
+               $this->StopTransform();
+               // add annotations
+               if (!empty($this->xobjects[$id]['annotations'])) {
+                       foreach ($this->xobjects[$id]['annotations'] as $annot) {
+                               // transform original coordinates
+                               $coordlt = TCPDF_STATIC::getTransformationMatrixProduct($tm, array(1, 0, 0, 1, ($annot['x'] * $this->k), (-$annot['y'] * $this->k)));
+                               $ax = ($coordlt[4] / $this->k);
+                               $ay = ($this->h - $h - ($coordlt[5] / $this->k));
+                               $coordrb = TCPDF_STATIC::getTransformationMatrixProduct($tm, array(1, 0, 0, 1, (($annot['x'] + $annot['w']) * $this->k), ((-$annot['y'] - $annot['h']) * $this->k)));
+                               $aw = ($coordrb[4] / $this->k) - $ax;
+                               $ah = ($this->h - $h - ($coordrb[5] / $this->k)) - $ay;
+                               $this->Annotation($ax, $ay, $aw, $ah, $annot['text'], $annot['opt'], $annot['spaces']);
+                       }
+               }
+               // set pointer to align the next text/objects
+               switch($align) {
+                       case 'T': {
+                               $this->y = $y;
+                               $this->x = $rb_x;
+                               break;
+                       }
+                       case 'M': {
+                               $this->y = $y + round($h/2);
+                               $this->x = $rb_x;
+                               break;
+                       }
+                       case 'B': {
+                               $this->y = $rb_y;
+                               $this->x = $rb_x;
+                               break;
+                       }
+                       case 'N': {
+                               $this->SetY($rb_y);
+                               break;
+                       }
+                       default:{
+                               break;
+                       }
+               }
+       }
+
+       /**
+        * Set the percentage of character stretching.
+        * @param $perc (int) percentage of stretching (100 = no stretching)
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.000 (2010-09-29)
+        */
+       public function setFontStretching($perc=100) {
+               $this->font_stretching = $perc;
+       }
+
+       /**
+        * Get the percentage of character stretching.
+        * @return float stretching value
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.000 (2010-09-29)
+        */
+       public function getFontStretching() {
+               return $this->font_stretching;
+       }
+
+       /**
+        * Set the amount to increase or decrease the space between characters in a text.
+        * @param $spacing (float) amount to increase or decrease the space between characters in a text (0 = default spacing)
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.000 (2010-09-29)
+        */
+       public function setFontSpacing($spacing=0) {
+               $this->font_spacing = $spacing;
+       }
+
+       /**
+        * Get the amount to increase or decrease the space between characters in a text.
+        * @return int font spacing (tracking) value
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.000 (2010-09-29)
+        */
+       public function getFontSpacing() {
+               return $this->font_spacing;
+       }
+
+       /**
+        * Return an array of no-write page regions
+        * @return array of no-write page regions
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.003 (2010-10-13)
+        * @see setPageRegions(), addPageRegion()
+        */
+       public function getPageRegions() {
+               return $this->page_regions;
+       }
+
+       /**
+        * Set no-write regions on page.
+        * A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code.
+        * A region is always aligned on the left or right side of the page ad is defined using a vertical segment.
+        * You can set multiple regions for the same page.
+        * @param $regions (array) array of no-write regions. For each region you can define an array as follow: ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right). Omit this parameter to remove all regions.
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.003 (2010-10-13)
+        * @see addPageRegion(), getPageRegions()
+        */
+       public function setPageRegions($regions=array()) {
+               // empty current regions array
+               $this->page_regions = array();
+               // add regions
+               foreach ($regions as $data) {
+                       $this->addPageRegion($data);
+               }
+       }
+
+       /**
+        * Add a single no-write region on selected page.
+        * A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code.
+        * A region is always aligned on the left or right side of the page ad is defined using a vertical segment.
+        * You can set multiple regions for the same page.
+        * @param $region (array) array of a single no-write region array: ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right).
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.003 (2010-10-13)
+        * @see setPageRegions(), getPageRegions()
+        */
+       public function addPageRegion($region) {
+               if (!isset($region['page']) OR empty($region['page'])) {
+                       $region['page'] = $this->page;
+               }
+               if (isset($region['xt']) AND isset($region['xb']) AND ($region['xt'] > 0) AND ($region['xb'] > 0)
+                       AND isset($region['yt'])  AND isset($region['yb']) AND ($region['yt'] >= 0) AND ($region['yt'] < $region['yb'])
+                       AND isset($region['side']) AND (($region['side'] == 'L') OR ($region['side'] == 'R'))) {
+                       $this->page_regions[] = $region;
+               }
+       }
+
+       /**
+        * Remove a single no-write region.
+        * @param $key (int) region key
+        * @author Nicola Asuni
+        * @public
+        * @since 5.9.003 (2010-10-13)
+        * @see setPageRegions(), getPageRegions()
+        */
+       public function removePageRegion($key) {
+               if (isset($this->page_regions[$key])) {
+                       unset($this->page_regions[$key]);
+               }
+       }
+
+       /**
+        * Check page for no-write regions and adapt current coordinates and page margins if necessary.
+        * A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code.
+        * A region is always aligned on the left or right side of the page ad is defined using a vertical segment.
+        * @param $h (float) height of the text/image/object to print in user units
+        * @param $x (float) current X coordinate in user units
+        * @param $y (float) current Y coordinate in user units
+        * @return array($x, $y)
+        * @author Nicola Asuni
+        * @protected
+        * @since 5.9.003 (2010-10-13)
+        */
+       protected function checkPageRegions($h, $x, $y) {
+               // set default values
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               if (!$this->check_page_regions OR empty($this->page_regions)) {
+                       // no page regions defined
+                       return array($x, $y);
+               }
+               if (empty($h)) {
+                       $h = $this->getCellHeight($this->FontSize);
+               }
+               // check for page break
+               if ($this->checkPageBreak($h, $y)) {
+                       // the content will be printed on a new page
+                       $x = $this->x;
+                       $y = $this->y;
+               }
+               if ($this->num_columns > 1) {
+                       if ($this->rtl) {
+                               $this->lMargin = ($this->columns[$this->current_column]['x'] - $this->columns[$this->current_column]['w']);
+                       } else {
+                               $this->rMargin = ($this->w - $this->columns[$this->current_column]['x'] - $this->columns[$this->current_column]['w']);
+                       }
+               } else {
+                       if ($this->rtl) {
+                               $this->lMargin = max($this->clMargin, $this->original_lMargin);
+                       } else {
+                               $this->rMargin = max($this->crMargin, $this->original_rMargin);
+                       }
+               }
+               // adjust coordinates and page margins
+               foreach ($this->page_regions as $regid => $regdata) {
+                       if ($regdata['page'] == $this->page) {
+                               // check region boundaries
+                               if (($y > ($regdata['yt'] - $h)) AND ($y <= $regdata['yb'])) {
+                                       // Y is inside the region
+                                       $minv = ($regdata['xb'] - $regdata['xt']) / ($regdata['yb'] - $regdata['yt']); // inverse of angular coefficient
+                                       $yt = max($y, $regdata['yt']);
+                                       $yb = min(($yt + $h), $regdata['yb']);
+                                       $xt = (($yt - $regdata['yt']) * $minv) + $regdata['xt'];
+                                       $xb = (($yb - $regdata['yt']) * $minv) + $regdata['xt'];
+                                       if ($regdata['side'] == 'L') { // left side
+                                               $new_margin = max($xt, $xb);
+                                               if ($this->lMargin < $new_margin) {
+                                                       if ($this->rtl) {
+                                                               // adjust left page margin
+                                                               $this->lMargin = max(0, $new_margin);
+                                                       }
+                                                       if ($x < $new_margin) {
+                                                               // adjust x position
+                                                               $x = $new_margin;
+                                                               if ($new_margin > ($this->w - $this->rMargin)) {
+                                                                       // adjust y position
+                                                                       $y = $regdata['yb'] - $h;
+                                                               }
+                                                       }
+                                               }
+                                       } elseif ($regdata['side'] == 'R') { // right side
+                                               $new_margin = min($xt, $xb);
+                                               if (($this->w - $this->rMargin) > $new_margin) {
+                                                       if (!$this->rtl) {
+                                                               // adjust right page margin
+                                                               $this->rMargin = max(0, ($this->w - $new_margin));
+                                                       }
+                                                       if ($x > $new_margin) {
+                                                               // adjust x position
+                                                               $x = $new_margin;
+                                                               if ($new_margin > $this->lMargin) {
+                                                                       // adjust y position
+                                                                       $y = $regdata['yb'] - $h;
+                                                               }
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               return array($x, $y);
+       }
+
+       // --- SVG METHODS ---------------------------------------------------------
+
+       /**
+        * Embedd a Scalable Vector Graphics (SVG) image.
+        * NOTE: SVG standard is not yet fully implemented, use the setRasterizeVectorImages() method to enable/disable rasterization of vector images using ImageMagick library.
+        * @param $file (string) Name of the SVG file or a '@' character followed by the SVG data string.
+        * @param $x (float) Abscissa of the upper-left corner.
+        * @param $y (float) Ordinate of the upper-left corner.
+        * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated.
+        * @param $link (mixed) URL or identifier returned by AddLink().
+        * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:<ul><li>T: top-right for LTR or top-left for RTL</li><li>M: middle-right for LTR or middle-left for RTL</li><li>B: bottom-right for LTR or bottom-left for RTL</li><li>N: next line</li></ul> If the alignment is an empty string, then the pointer will be restored on the starting SVG position.
+        * @param $palign (string) Allows to center or align the image on the current line. Possible values are:<ul><li>L : left align</li><li>C : center</li><li>R : right align</li><li>'' : empty string : left for LTR or right for RTL</li></ul>
+        * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul> or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0)))
+        * @param $fitonpage (boolean) if true the image is resized to not exceed page dimensions.
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @public
+        */
+       public function ImageSVG($file, $x='', $y='', $w=0, $h=0, $link='', $align='', $palign='', $border=0, $fitonpage=false) {
+               if ($this->state != 2) {
+                        return;
+               }
+               // reseet SVG vars
+               $this->svggradients = array();
+               $this->svggradientid = 0;
+               $this->svgdefsmode = false;
+               $this->svgdefs = array();
+               $this->svgclipmode = false;
+               $this->svgclippaths = array();
+               $this->svgcliptm = array();
+               $this->svgclipid = 0;
+               $this->svgtext = '';
+               $this->svgtextmode = array();
+               if ($this->rasterize_vector_images AND ($w > 0) AND ($h > 0)) {
+                       // convert SVG to raster image using GD or ImageMagick libraries
+                       return $this->Image($file, $x, $y, $w, $h, 'SVG', $link, $align, true, 300, $palign, false, false, $border, false, false, false);
+               }
+               if ($file[0] === '@') { // image from string
+                       $this->svgdir = '';
+                       $svgdata = substr($file, 1);
+               } else { // SVG file
+                       $this->svgdir = dirname($file);
+                       $svgdata = TCPDF_STATIC::fileGetContents($file);
+               }
+               if ($svgdata === FALSE) {
+                       $this->Error('SVG file not found: '.$file);
+               }
+               if ($x === '') {
+                       $x = $this->x;
+               }
+               if ($y === '') {
+                       $y = $this->y;
+               }
+               // check page for no-write regions and adapt page margins if necessary
+               list($x, $y) = $this->checkPageRegions($h, $x, $y);
+               $k = $this->k;
+               $ox = 0;
+               $oy = 0;
+               $ow = $w;
+               $oh = $h;
+               $aspect_ratio_align = 'xMidYMid';
+               $aspect_ratio_ms = 'meet';
+               $regs = array();
+               // get original image width and height
+               preg_match('/<svg([^\>]*)>/si', $svgdata, $regs);
+               if (isset($regs[1]) AND !empty($regs[1])) {
+                       $tmp = array();
+                       if (preg_match('/[\s]+x[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) {
+                               $ox = $this->getHTMLUnitToUnits($tmp[1], 0, $this->svgunit, false);
+                       }
+                       $tmp = array();
+                       if (preg_match('/[\s]+y[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) {
+                               $oy = $this->getHTMLUnitToUnits($tmp[1], 0, $this->svgunit, false);
+                       }
+                       $tmp = array();
+                       if (preg_match('/[\s]+width[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) {
+                               $ow = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false);
+                       }
+                       $tmp = array();
+                       if (preg_match('/[\s]+height[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) {
+                               $oh = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false);
+                       }
+                       $tmp = array();
+                       $view_box = array();
+                       if (preg_match('/[\s]+viewBox[\s]*=[\s]*"[\s]*([0-9\.\-]+)[\s]+([0-9\.\-]+)[\s]+([0-9\.]+)[\s]+([0-9\.]+)[\s]*"/si', $regs[1], $tmp)) {
+                               if (count($tmp) == 5) {
+                                       array_shift($tmp);
+                                       foreach ($tmp as $key => $val) {
+                                               $view_box[$key] = $this->getHTMLUnitToUnits($val, 0, $this->svgunit, false);
+                                       }
+                                       $ox = $view_box[0];
+                                       $oy = $view_box[1];
+                               }
+                               // get aspect ratio
+                               $tmp = array();
+                               if (preg_match('/[\s]+preserveAspectRatio[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) {
+                                       $aspect_ratio = preg_split('/[\s]+/si', $tmp[1]);
+                                       switch (count($aspect_ratio)) {
+                                               case 3: {
+                                                       $aspect_ratio_align = $aspect_ratio[1];
+                                                       $aspect_ratio_ms = $aspect_ratio[2];
+                                                       break;
+                                               }
+                                               case 2: {
+                                                       $aspect_ratio_align = $aspect_ratio[0];
+                                                       $aspect_ratio_ms = $aspect_ratio[1];
+                                                       break;
+                                               }
+                                               case 1: {
+                                                       $aspect_ratio_align = $aspect_ratio[0];
+                                                       $aspect_ratio_ms = 'meet';
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               if ($ow <= 0) {
+                       $ow = 1;
+               }
+               if ($oh <= 0) {
+                       $oh = 1;
+               }
+               // calculate image width and height on document
+               if (($w <= 0) AND ($h <= 0)) {
+                       // convert image size to document unit
+                       $w = $ow;
+                       $h = $oh;
+               } elseif ($w <= 0) {
+                       $w = $h * $ow / $oh;
+               } elseif ($h <= 0) {
+                       $h = $w * $oh / $ow;
+               }
+               // fit the image on available space
+               list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage);
+               if ($this->rasterize_vector_images) {
+                       // convert SVG to raster image using GD or ImageMagick libraries
+                       return $this->Image($file, $x, $y, $w, $h, 'SVG', $link, $align, true, 300, $palign, false, false, $border, false, false, false);
+               }
+               // set alignment
+               $this->img_rb_y = $y + $h;
+               // set alignment
+               if ($this->rtl) {
+                       if ($palign == 'L') {
+                               $ximg = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $ximg = $this->w - $this->rMargin - $w;
+                       } else {
+                               $ximg = $x - $w;
+                       }
+                       $this->img_rb_x = $ximg;
+               } else {
+                       if ($palign == 'L') {
+                               $ximg = $this->lMargin;
+                       } elseif ($palign == 'C') {
+                               $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2;
+                       } elseif ($palign == 'R') {
+                               $ximg = $this->w - $this->rMargin - $w;
+                       } else {
+                               $ximg = $x;
+                       }
+                       $this->img_rb_x = $ximg + $w;
+               }
+               // store current graphic vars
+               $gvars = $this->getGraphicVars();
+               // store SVG position and scale factors
+               $svgoffset_x = ($ximg - $ox) * $this->k;
+               $svgoffset_y = -($y - $oy) * $this->k;
+               if (isset($view_box[2]) AND ($view_box[2] > 0) AND ($view_box[3] > 0)) {
+                       $ow = $view_box[2];
+                       $oh = $view_box[3];
+               } else {
+                       if ($ow <= 0) {
+                               $ow = $w;
+                       }
+                       if ($oh <= 0) {
+                               $oh = $h;
+                       }
+               }
+               $svgscale_x = $w / $ow;
+               $svgscale_y = $h / $oh;
+               // scaling and alignment
+               if ($aspect_ratio_align != 'none') {
+                       // store current scaling values
+                       $svgscale_old_x = $svgscale_x;
+                       $svgscale_old_y = $svgscale_y;
+                       // force uniform scaling
+                       if ($aspect_ratio_ms == 'slice') {
+                               // the entire viewport is covered by the viewBox
+                               if ($svgscale_x > $svgscale_y) {
+                                       $svgscale_y = $svgscale_x;
+                               } elseif ($svgscale_x < $svgscale_y) {
+                                       $svgscale_x = $svgscale_y;
+                               }
+                       } else { // meet
+                               // the entire viewBox is visible within the viewport
+                               if ($svgscale_x < $svgscale_y) {
+                                       $svgscale_y = $svgscale_x;
+                               } elseif ($svgscale_x > $svgscale_y) {
+                                       $svgscale_x = $svgscale_y;
+                               }
+                       }
+                       // correct X alignment
+                       switch (substr($aspect_ratio_align, 1, 3)) {
+                               case 'Min': {
+                                       // do nothing
+                                       break;
+                               }
+                               case 'Max': {
+                                       $svgoffset_x += (($w * $this->k) - ($ow * $this->k * $svgscale_x));
+                                       break;
+                               }
+                               default:
+                               case 'Mid': {
+                                       $svgoffset_x += ((($w * $this->k) - ($ow * $this->k * $svgscale_x)) / 2);
+                                       break;
+                               }
+                       }
+                       // correct Y alignment
+                       switch (substr($aspect_ratio_align, 5)) {
+                               case 'Min': {
+                                       // do nothing
+                                       break;
+                               }
+                               case 'Max': {
+                                       $svgoffset_y -= (($h * $this->k) - ($oh * $this->k * $svgscale_y));
+                                       break;
+                               }
+                               default:
+                               case 'Mid': {
+                                       $svgoffset_y -= ((($h * $this->k) - ($oh * $this->k * $svgscale_y)) / 2);
+                                       break;
+                               }
+                       }
+               }
+               // store current page break mode
+               $page_break_mode = $this->AutoPageBreak;
+               $page_break_margin = $this->getBreakMargin();
+               $cell_padding = $this->cell_padding;
+               $this->SetCellPadding(0);
+               $this->SetAutoPageBreak(false);
+               // save the current graphic state
+               $this->_out('q'.$this->epsmarker);
+               // set initial clipping mask
+               $this->Rect($ximg, $y, $w, $h, 'CNZ', array(), array());
+               // scale and translate
+               $e = $ox * $this->k * (1 - $svgscale_x);
+               $f = ($this->h - $oy) * $this->k * (1 - $svgscale_y);
+               $this->_out(sprintf('%F %F %F %F %F %F cm', $svgscale_x, 0, 0, $svgscale_y, ($e + $svgoffset_x), ($f + $svgoffset_y)));
+               // creates a new XML parser to be used by the other XML functions
+               $this->parser = xml_parser_create('UTF-8');
+               // the following function allows to use parser inside object
+               xml_set_object($this->parser, $this);
+               // disable case-folding for this XML parser
+               xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
+               // sets the element handler functions for the XML parser
+               xml_set_element_handler($this->parser, 'startSVGElementHandler', 'endSVGElementHandler');
+               // sets the character data handler function for the XML parser
+               xml_set_character_data_handler($this->parser, 'segSVGContentHandler');
+               // start parsing an XML document
+               if (!xml_parse($this->parser, $svgdata)) {
+                       $error_message = sprintf('SVG Error: %s at line %d', xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser));
+                       $this->Error($error_message);
+               }
+               // free this XML parser
+               xml_parser_free($this->parser);
+               // restore previous graphic state
+               $this->_out($this->epsmarker.'Q');
+               // restore graphic vars
+               $this->setGraphicVars($gvars);
+               $this->lasth = $gvars['lasth'];
+               if (!empty($border)) {
+                       $bx = $this->x;
+                       $by = $this->y;
+                       $this->x = $ximg;
+                       if ($this->rtl) {
+                               $this->x += $w;
+                       }
+                       $this->y = $y;
+                       $this->Cell($w, $h, '', $border, 0, '', 0, '', 0, true);
+                       $this->x = $bx;
+                       $this->y = $by;
+               }
+               if ($link) {
+                       $this->Link($ximg, $y, $w, $h, $link, 0);
+               }
+               // set pointer to align the next text/objects
+               switch($align) {
+                       case 'T':{
+                               $this->y = $y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'M':{
+                               $this->y = $y + round($h/2);
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'B':{
+                               $this->y = $this->img_rb_y;
+                               $this->x = $this->img_rb_x;
+                               break;
+                       }
+                       case 'N':{
+                               $this->SetY($this->img_rb_y);
+                               break;
+                       }
+                       default:{
+                               // restore pointer to starting position
+                               $this->x = $gvars['x'];
+                               $this->y = $gvars['y'];
+                               $this->page = $gvars['page'];
+                               $this->current_column = $gvars['current_column'];
+                               $this->tMargin = $gvars['tMargin'];
+                               $this->bMargin = $gvars['bMargin'];
+                               $this->w = $gvars['w'];
+                               $this->h = $gvars['h'];
+                               $this->wPt = $gvars['wPt'];
+                               $this->hPt = $gvars['hPt'];
+                               $this->fwPt = $gvars['fwPt'];
+                               $this->fhPt = $gvars['fhPt'];
+                               break;
+                       }
+               }
+               $this->endlinex = $this->img_rb_x;
+               // restore page break
+               $this->SetAutoPageBreak($page_break_mode, $page_break_margin);
+               $this->cell_padding = $cell_padding;
+       }
+
+       /**
+        * Convert SVG transformation matrix to PDF.
+        * @param $tm (array) original SVG transformation matrix
+        * @return array transformation matrix
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected function convertSVGtMatrix($tm) {
+               $a = $tm[0];
+               $b = -$tm[1];
+               $c = -$tm[2];
+               $d = $tm[3];
+               $e = $this->getHTMLUnitToUnits($tm[4], 1, $this->svgunit, false) * $this->k;
+               $f = -$this->getHTMLUnitToUnits($tm[5], 1, $this->svgunit, false) * $this->k;
+               $x = 0;
+               $y = $this->h * $this->k;
+               $e = ($x * (1 - $a)) - ($y * $c) + $e;
+               $f = ($y * (1 - $d)) - ($x * $b) + $f;
+               return array($a, $b, $c, $d, $e, $f);
+       }
+
+       /**
+        * Apply SVG graphic transformation matrix.
+        * @param $tm (array) original SVG transformation matrix
+        * @protected
+        * @since 5.0.000 (2010-05-02)
+        */
+       protected function SVGTransform($tm) {
+               $this->Transform($this->convertSVGtMatrix($tm));
+       }
+
+       /**
+        * Apply the requested SVG styles (*** TO BE COMPLETED ***)
+        * @param $svgstyle (array) array of SVG styles to apply
+        * @param $prevsvgstyle (array) array of previous SVG style
+        * @param $x (int) X origin of the bounding box
+        * @param $y (int) Y origin of the bounding box
+        * @param $w (int) width of the bounding box
+        * @param $h (int) height of the bounding box
+        * @param $clip_function (string) clip function
+        * @param $clip_params (array) array of parameters for clipping function
+        * @return object style
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @protected
+        */
+       protected function setSVGStyles($svgstyle, $prevsvgstyle, $x=0, $y=0, $w=1, $h=1, $clip_function='', $clip_params=array()) {
+               if ($this->state != 2) {
+                        return;
+               }
+               $objstyle = '';
+               $minlen = (0.01 / $this->k); // minimum acceptable length
+               if (!isset($svgstyle['opacity'])) {
+                       return $objstyle;
+               }
+               // clip-path
+               $regs = array();
+               if (preg_match('/url\([\s]*\#([^\)]*)\)/si', $svgstyle['clip-path'], $regs)) {
+                       $clip_path = $this->svgclippaths[$regs[1]];
+                       foreach ($clip_path as $cp) {
+                               $this->startSVGElementHandler('clip-path', $cp['name'], $cp['attribs'], $cp['tm']);
+                       }
+               }
+               // opacity
+               if ($svgstyle['opacity'] != 1) {
+                       $this->setAlpha($svgstyle['opacity'], 'Normal', $svgstyle['opacity'], false);
+               }
+               // color
+               $fill_color = TCPDF_COLORS::convertHTMLColorToDec($svgstyle['color'], $this->spot_colors);
+               $this->SetFillColorArray($fill_color);
+               // text color
+               $text_color = TCPDF_COLORS::convertHTMLColorToDec($svgstyle['text-color'], $this->spot_colors);
+               $this->SetTextColorArray($text_color);
+               // clip
+               if (preg_match('/rect\(([a-z0-9\-\.]*)[\s]*([a-z0-9\-\.]*)[\s]*([a-z0-9\-\.]*)[\s]*([a-z0-9\-\.]*)\)/si', $svgstyle['clip'], $regs)) {
+                       $top = (isset($regs[1])?$this->getHTMLUnitToUnits($regs[1], 0, $this->svgunit, false):0);
+                       $right = (isset($regs[2])?$this->getHTMLUnitToUnits($regs[2], 0, $this->svgunit, false):0);
+                       $bottom = (isset($regs[3])?$this->getHTMLUnitToUnits($regs[3], 0, $this->svgunit, false):0);
+                       $left = (isset($regs[4])?$this->getHTMLUnitToUnits($regs[4], 0, $this->svgunit, false):0);
+                       $cx = $x + $left;
+                       $cy = $y + $top;
+                       $cw = $w - $left - $right;
+                       $ch = $h - $top - $bottom;
+                       if ($svgstyle['clip-rule'] == 'evenodd') {
+                               $clip_rule = 'CNZ';
+                       } else {
+                               $clip_rule = 'CEO';
+                       }
+                       $this->Rect($cx, $cy, $cw, $ch, $clip_rule, array(), array());
+               }
+               // fill
+               $regs = array();
+               if (preg_match('/url\([\s]*\#([^\)]*)\)/si', $svgstyle['fill'], $regs)) {
+                       // gradient
+                       $gradient = $this->svggradients[$regs[1]];
+                       if (isset($gradient['xref'])) {
+                               // reference to another gradient definition
+                               $newgradient = $this->svggradients[$gradient['xref']];
+                               $newgradient['coords'] = $gradient['coords'];
+                               $newgradient['mode'] = $gradient['mode'];
+                               $newgradient['type'] = $gradient['type'];
+                               $newgradient['gradientUnits'] = $gradient['gradientUnits'];
+                               if (isset($gradient['gradientTransform'])) {
+                                       $newgradient['gradientTransform'] = $gradient['gradientTransform'];
+                               }
+                               $gradient = $newgradient;
+                       }
+                       //save current Graphic State
+                       $this->_outSaveGraphicsState();
+                       //set clipping area
+                       if (!empty($clip_function) AND method_exists($this, $clip_function)) {
+                               $bbox = call_user_func_array(array($this, $clip_function), $clip_params);
+                               if ((!isset($gradient['type']) OR ($gradient['type'] != 3)) AND is_array($bbox) AND (count($bbox) == 4)) {
+                                       list($x, $y, $w, $h) = $bbox;
+                               }
+                       }
+                       if ($gradient['mode'] == 'measure') {
+                               if (!isset($gradient['coords'][4])) {
+                                       $gradient['coords'][4] = 0.5;
+                               }
+                               if (isset($gradient['gradientTransform']) AND !empty($gradient['gradientTransform'])) {
+                                       $gtm = $gradient['gradientTransform'];
+                                       // apply transformation matrix
+                                       $xa = ($gtm[0] * $gradient['coords'][0]) + ($gtm[2] * $gradient['coords'][1]) + $gtm[4];
+                                       $ya = ($gtm[1] * $gradient['coords'][0]) + ($gtm[3] * $gradient['coords'][1]) + $gtm[5];
+                                       $xb = ($gtm[0] * $gradient['coords'][2]) + ($gtm[2] * $gradient['coords'][3]) + $gtm[4];
+                                       $yb = ($gtm[1] * $gradient['coords'][2]) + ($gtm[3] * $gradient['coords'][3]) + $gtm[5];
+                                       $r = sqrt(pow(($gtm[0] * $gradient['coords'][4]), 2) + pow(($gtm[1] * $gradient['coords'][4]), 2));
+                                       $gradient['coords'][0] = $xa;
+                                       $gradient['coords'][1] = $ya;
+                                       $gradient['coords'][2] = $xb;
+                                       $gradient['coords'][3] = $yb;
+                                       $gradient['coords'][4] = $r;
+                               }
+                               // convert SVG coordinates to user units
+                               $gradient['coords'][0] = $this->getHTMLUnitToUnits($gradient['coords'][0], 0, $this->svgunit, false);
+                               $gradient['coords'][1] = $this->getHTMLUnitToUnits($gradient['coords'][1], 0, $this->svgunit, false);
+                               $gradient['coords'][2] = $this->getHTMLUnitToUnits($gradient['coords'][2], 0, $this->svgunit, false);
+                               $gradient['coords'][3] = $this->getHTMLUnitToUnits($gradient['coords'][3], 0, $this->svgunit, false);
+                               $gradient['coords'][4] = $this->getHTMLUnitToUnits($gradient['coords'][4], 0, $this->svgunit, false);
+                               if ($w <= $minlen) {
+                                       $w = $minlen;
+                               }
+                               if ($h <= $minlen) {
+                                       $h = $minlen;
+                               }
+                               // shift units
+                               if ($gradient['gradientUnits'] == 'objectBoundingBox') {
+                                       // convert to SVG coordinate system
+                                       $gradient['coords'][0] += $x;
+                                       $gradient['coords'][1] += $y;
+                                       $gradient['coords'][2] += $x;
+                                       $gradient['coords'][3] += $y;
+                               }
+                               // calculate percentages
+                               $gradient['coords'][0] = (($gradient['coords'][0] - $x) / $w);
+                               $gradient['coords'][1] = (($gradient['coords'][1] - $y) / $h);
+                               $gradient['coords'][2] = (($gradient['coords'][2] - $x) / $w);
+                               $gradient['coords'][3] = (($gradient['coords'][3] - $y) / $h);
+                               $gradient['coords'][4] /= $w;
+                       } elseif ($gradient['mode'] == 'percentage') {
+                               foreach($gradient['coords'] as $key => $val) {
+                                       $gradient['coords'][$key] = (intval($val) / 100);
+                                       if ($val < 0) {
+                                               $gradient['coords'][$key] = 0;
+                                       } elseif ($val > 1) {
+                                               $gradient['coords'][$key] = 1;
+                                       }
+                               }
+                       }
+                       if (($gradient['type'] == 2) AND ($gradient['coords'][0] == $gradient['coords'][2]) AND ($gradient['coords'][1] == $gradient['coords'][3])) {
+                               // single color (no shading)
+                               $gradient['coords'][0] = 1;
+                               $gradient['coords'][1] = 0;
+                               $gradient['coords'][2] = 0.999;
+                               $gradient['coords'][3] = 0;
+                       }
+                       // swap Y coordinates
+                       $tmp = $gradient['coords'][1];
+                       $gradient['coords'][1] = $gradient['coords'][3];
+                       $gradient['coords'][3] = $tmp;
+                       // set transformation map for gradient
+                       $cy = ($this->h - $y);
+                       if ($gradient['type'] == 3) {
+                               // circular gradient
+                               $cy -= ($gradient['coords'][1] * ($w + $h));
+                       } else {
+                               $cy -= $h;
+                       }
+                       $this->_out(sprintf('%F 0 0 %F %F %F cm', ($w * $this->k), ($h * $this->k), ($x * $this->k), ($cy * $this->k)));
+                       if (count($gradient['stops']) > 1) {
+                               $this->Gradient($gradient['type'], $gradient['coords'], $gradient['stops'], array(), false);
+                       }
+               } elseif ($svgstyle['fill'] != 'none') {
+                       $fill_color = TCPDF_COLORS::convertHTMLColorToDec($svgstyle['fill'], $this->spot_colors);
+                       if ($svgstyle['fill-opacity'] != 1) {
+                               $this->setAlpha($this->alpha['CA'], 'Normal', $svgstyle['fill-opacity'], false);
+                       }
+                       $this->SetFillColorArray($fill_color);
+                       if ($svgstyle['fill-rule'] == 'evenodd') {
+                               $objstyle .= 'F*';
+                       } else {
+                               $objstyle .= 'F';
+                       }
+               }
+               // stroke
+               if ($svgstyle['stroke'] != 'none') {
+                       if ($svgstyle['stroke-opacity'] != 1) {
+                               $this->setAlpha($svgstyle['stroke-opacity'], 'Normal', $this->alpha['ca'], false);
+                       } elseif (preg_match('/rgba\(\d+%?,\s*\d+%?,\s*\d+%?,\s*(\d+(?:\.\d+)?)\)/i', $svgstyle['stroke'], $rgba_matches)) {
+                               $this->setAlpha($rgba_matches[1], 'Normal', $this->alpha['ca'], false);
+                       }
+                       $stroke_style = array(
+                               'color' => TCPDF_COLORS::convertHTMLColorToDec($svgstyle['stroke'], $this->spot_colors),
+                               'width' => $this->getHTMLUnitToUnits($svgstyle['stroke-width'], 0, $this->svgunit, false),
+                               'cap' => $svgstyle['stroke-linecap'],
+                               'join' => $svgstyle['stroke-linejoin']
+                               );
+                       if (isset($svgstyle['stroke-dasharray']) AND !empty($svgstyle['stroke-dasharray']) AND ($svgstyle['stroke-dasharray'] != 'none')) {
+                               $stroke_style['dash'] = $svgstyle['stroke-dasharray'];
+                       }
+                       $this->SetLineStyle($stroke_style);
+                       $objstyle .= 'D';
+               }
+               // font
+               $regs = array();
+               if (!empty($svgstyle['font'])) {
+                       if (preg_match('/font-family[\s]*:[\s]*([^\;\"]*)/si', $svgstyle['font'], $regs)) {
+                               $font_family = $this->getFontFamilyName($regs[1]);
+                       } else {
+                               $font_family = $svgstyle['font-family'];
+                       }
+                       if (preg_match('/font-size[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) {
+                               $font_size = trim($regs[1]);
+                       } else {
+                               $font_size = $svgstyle['font-size'];
+                       }
+                       if (preg_match('/font-style[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) {
+                               $font_style = trim($regs[1]);
+                       } else {
+                               $font_style = $svgstyle['font-style'];
+                       }
+                       if (preg_match('/font-weight[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) {
+                               $font_weight = trim($regs[1]);
+                       } else {
+                               $font_weight = $svgstyle['font-weight'];
+                       }
+                       if (preg_match('/font-stretch[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) {
+                               $font_stretch = trim($regs[1]);
+                       } else {
+                               $font_stretch = $svgstyle['font-stretch'];
+                       }
+                       if (preg_match('/letter-spacing[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) {
+                               $font_spacing = trim($regs[1]);
+                       } else {
+                               $font_spacing = $svgstyle['letter-spacing'];
+                       }
+               } else {
+                       $font_family = $this->getFontFamilyName($svgstyle['font-family']);
+                       $font_size = $svgstyle['font-size'];
+                       $font_style = $svgstyle['font-style'];
+                       $font_weight = $svgstyle['font-weight'];
+                       $font_stretch = $svgstyle['font-stretch'];
+                       $font_spacing = $svgstyle['letter-spacing'];
+               }
+               $font_size = $this->getHTMLFontUnits($font_size, $this->svgstyles[0]['font-size'], $prevsvgstyle['font-size'], $this->svgunit);
+               $font_stretch = $this->getCSSFontStretching($font_stretch, $svgstyle['font-stretch']);
+               $font_spacing = $this->getCSSFontSpacing($font_spacing, $svgstyle['letter-spacing']);
+               switch ($font_style) {
+                       case 'italic': {
+                               $font_style = 'I';
+                               break;
+                       }
+                       case 'oblique': {
+                               $font_style = 'I';
+                               break;
+                       }
+                       default:
+                       case 'normal': {
+                               $font_style = '';
+                               break;
+                       }
+               }
+               switch ($font_weight) {
+                       case 'bold':
+                       case 'bolder': {
+                               $font_style .= 'B';
+                               break;
+                       }
+               }
+               switch ($svgstyle['text-decoration']) {
+                       case 'underline': {
+                               $font_style .= 'U';
+                               break;
+                       }
+                       case 'overline': {
+                               $font_style .= 'O';
+                               break;
+                       }
+                       case 'line-through': {
+                               $font_style .= 'D';
+                               break;
+                       }
+                       default:
+                       case 'none': {
+                               break;
+                       }
+               }
+               $this->SetFont($font_family, $font_style, $font_size);
+               $this->setFontStretching($font_stretch);
+               $this->setFontSpacing($font_spacing);
+               return $objstyle;
+       }
+
+       /**
+        * Draws an SVG path
+        * @param $d (string) attribute d of the path SVG element
+        * @param $style (string) Style of rendering. Possible values are:
+        * <ul>
+        *       <li>D or empty string: Draw (default).</li>
+        *       <li>F: Fill.</li>
+        *       <li>F*: Fill using the even-odd rule to determine which regions lie inside the clipping path.</li>
+        *       <li>DF or FD: Draw and fill.</li>
+        *       <li>DF* or FD*: Draw and fill using the even-odd rule to determine which regions lie inside the clipping path.</li>
+        *       <li>CNZ: Clipping mode (using the even-odd rule to determine which regions lie inside the clipping path).</li>
+        *       <li>CEO: Clipping mode (using the nonzero winding number rule to determine which regions lie inside the clipping path).</li>
+        * </ul>
+        * @return array of container box measures (x, y, w, h)
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @protected
+        */
+       protected function SVGPath($d, $style='') {
+               if ($this->state != 2) {
+                        return;
+               }
+               // set fill/stroke style
+               $op = TCPDF_STATIC::getPathPaintOperator($style, '');
+               if (empty($op)) {
+                       return;
+               }
+               $paths = array();
+               $d = preg_replace('/([0-9ACHLMQSTVZ])([\-\+])/si', '\\1 \\2', $d);
+               preg_match_all('/([ACHLMQSTVZ])[\s]*([^ACHLMQSTVZ\"]*)/si', $d, $paths, PREG_SET_ORDER);
+               $x = 0;
+               $y = 0;
+               $x1 = 0;
+               $y1 = 0;
+               $x2 = 0;
+               $y2 = 0;
+               $xmin = 2147483647;
+               $xmax = 0;
+               $ymin = 2147483647;
+               $ymax = 0;
+               $relcoord = false;
+               $minlen = (0.01 / $this->k); // minimum acceptable length (3 point)
+               $firstcmd = true; // used to print first point
+               // draw curve pieces
+               foreach ($paths as $key => $val) {
+                       // get curve type
+                       $cmd = trim($val[1]);
+                       if (strtolower($cmd) == $cmd) {
+                               // use relative coordinated instead of absolute
+                               $relcoord = true;
+                               $xoffset = $x;
+                               $yoffset = $y;
+                       } else {
+                               $relcoord = false;
+                               $xoffset = 0;
+                               $yoffset = 0;
+                       }
+                       $params = array();
+                       if (isset($val[2])) {
+                               // get curve parameters
+                               $rawparams = preg_split('/([\,\s]+)/si', trim($val[2]));
+                               $params = array();
+                               foreach ($rawparams as $ck => $cp) {
+                                       $params[$ck] = $this->getHTMLUnitToUnits($cp, 0, $this->svgunit, false);
+                                       if (abs($params[$ck]) < $minlen) {
+                                               // aproximate little values to zero
+                                               $params[$ck] = 0;
+                                       }
+                               }
+                       }
+                       // store current origin point
+                       $x0 = $x;
+                       $y0 = $y;
+                       switch (strtoupper($cmd)) {
+                               case 'M': { // moveto
+                                       foreach ($params as $ck => $cp) {
+                                               if (($ck % 2) == 0) {
+                                                       $x = $cp + $xoffset;
+                                               } else {
+                                                       $y = $cp + $yoffset;
+                                                       if ($firstcmd OR (abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) {
+                                                               if ($ck == 1) {
+                                                                       $this->_outPoint($x, $y);
+                                                                       $firstcmd = false;
+                                                               } else {
+                                                                       $this->_outLine($x, $y);
+                                                               }
+                                                               $x0 = $x;
+                                                               $y0 = $y;
+                                                       }
+                                                       $xmin = min($xmin, $x);
+                                                       $ymin = min($ymin, $y);
+                                                       $xmax = max($xmax, $x);
+                                                       $ymax = max($ymax, $y);
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'L': { // lineto
+                                       foreach ($params as $ck => $cp) {
+                                               if (($ck % 2) == 0) {
+                                                       $x = $cp + $xoffset;
+                                               } else {
+                                                       $y = $cp + $yoffset;
+                                                       if ((abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) {
+                                                               $this->_outLine($x, $y);
+                                                               $x0 = $x;
+                                                               $y0 = $y;
+                                                       }
+                                                       $xmin = min($xmin, $x);
+                                                       $ymin = min($ymin, $y);
+                                                       $xmax = max($xmax, $x);
+                                                       $ymax = max($ymax, $y);
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'H': { // horizontal lineto
+                                       foreach ($params as $ck => $cp) {
+                                               $x = $cp + $xoffset;
+                                               if ((abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) {
+                                                       $this->_outLine($x, $y);
+                                                       $x0 = $x;
+                                                       $y0 = $y;
+                                               }
+                                               $xmin = min($xmin, $x);
+                                               $xmax = max($xmax, $x);
+                                               if ($relcoord) {
+                                                       $xoffset = $x;
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'V': { // vertical lineto
+                                       foreach ($params as $ck => $cp) {
+                                               $y = $cp + $yoffset;
+                                               if ((abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) {
+                                                       $this->_outLine($x, $y);
+                                                       $x0 = $x;
+                                                       $y0 = $y;
+                                               }
+                                               $ymin = min($ymin, $y);
+                                               $ymax = max($ymax, $y);
+                                               if ($relcoord) {
+                                                       $yoffset = $y;
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'C': { // curveto
+                                       foreach ($params as $ck => $cp) {
+                                               $params[$ck] = $cp;
+                                               if ((($ck + 1) % 6) == 0) {
+                                                       $x1 = $params[($ck - 5)] + $xoffset;
+                                                       $y1 = $params[($ck - 4)] + $yoffset;
+                                                       $x2 = $params[($ck - 3)] + $xoffset;
+                                                       $y2 = $params[($ck - 2)] + $yoffset;
+                                                       $x = $params[($ck - 1)] + $xoffset;
+                                                       $y = $params[($ck)] + $yoffset;
+                                                       $this->_outCurve($x1, $y1, $x2, $y2, $x, $y);
+                                                       $xmin = min($xmin, $x, $x1, $x2);
+                                                       $ymin = min($ymin, $y, $y1, $y2);
+                                                       $xmax = max($xmax, $x, $x1, $x2);
+                                                       $ymax = max($ymax, $y, $y1, $y2);
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'S': { // shorthand/smooth curveto
+                                       foreach ($params as $ck => $cp) {
+                                               $params[$ck] = $cp;
+                                               if ((($ck + 1) % 4) == 0) {
+                                                       if (($key > 0) AND ((strtoupper($paths[($key - 1)][1]) == 'C') OR (strtoupper($paths[($key - 1)][1]) == 'S'))) {
+                                                               $x1 = (2 * $x) - $x2;
+                                                               $y1 = (2 * $y) - $y2;
+                                                       } else {
+                                                               $x1 = $x;
+                                                               $y1 = $y;
+                                                       }
+                                                       $x2 = $params[($ck - 3)] + $xoffset;
+                                                       $y2 = $params[($ck - 2)] + $yoffset;
+                                                       $x = $params[($ck - 1)] + $xoffset;
+                                                       $y = $params[($ck)] + $yoffset;
+                                                       $this->_outCurve($x1, $y1, $x2, $y2, $x, $y);
+                                                       $xmin = min($xmin, $x, $x1, $x2);
+                                                       $ymin = min($ymin, $y, $y1, $y2);
+                                                       $xmax = max($xmax, $x, $x1, $x2);
+                                                       $ymax = max($ymax, $y, $y1, $y2);
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'Q': { // quadratic Bezier curveto
+                                       foreach ($params as $ck => $cp) {
+                                               $params[$ck] = $cp;
+                                               if ((($ck + 1) % 4) == 0) {
+                                                       // convert quadratic points to cubic points
+                                                       $x1 = $params[($ck - 3)] + $xoffset;
+                                                       $y1 = $params[($ck - 2)] + $yoffset;
+                                                       $xa = ($x + (2 * $x1)) / 3;
+                                                       $ya = ($y + (2 * $y1)) / 3;
+                                                       $x = $params[($ck - 1)] + $xoffset;
+                                                       $y = $params[($ck)] + $yoffset;
+                                                       $xb = ($x + (2 * $x1)) / 3;
+                                                       $yb = ($y + (2 * $y1)) / 3;
+                                                       $this->_outCurve($xa, $ya, $xb, $yb, $x, $y);
+                                                       $xmin = min($xmin, $x, $xa, $xb);
+                                                       $ymin = min($ymin, $y, $ya, $yb);
+                                                       $xmax = max($xmax, $x, $xa, $xb);
+                                                       $ymax = max($ymax, $y, $ya, $yb);
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'T': { // shorthand/smooth quadratic Bezier curveto
+                                       foreach ($params as $ck => $cp) {
+                                               $params[$ck] = $cp;
+                                               if (($ck % 2) != 0) {
+                                                       if (($key > 0) AND ((strtoupper($paths[($key - 1)][1]) == 'Q') OR (strtoupper($paths[($key - 1)][1]) == 'T'))) {
+                                                               $x1 = (2 * $x) - $x1;
+                                                               $y1 = (2 * $y) - $y1;
+                                                       } else {
+                                                               $x1 = $x;
+                                                               $y1 = $y;
+                                                       }
+                                                       // convert quadratic points to cubic points
+                                                       $xa = ($x + (2 * $x1)) / 3;
+                                                       $ya = ($y + (2 * $y1)) / 3;
+                                                       $x = $params[($ck - 1)] + $xoffset;
+                                                       $y = $params[($ck)] + $yoffset;
+                                                       $xb = ($x + (2 * $x1)) / 3;
+                                                       $yb = ($y + (2 * $y1)) / 3;
+                                                       $this->_outCurve($xa, $ya, $xb, $yb, $x, $y);
+                                                       $xmin = min($xmin, $x, $xa, $xb);
+                                                       $ymin = min($ymin, $y, $ya, $yb);
+                                                       $xmax = max($xmax, $x, $xa, $xb);
+                                                       $ymax = max($ymax, $y, $ya, $yb);
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'A': { // elliptical arc
+                                       foreach ($params as $ck => $cp) {
+                                               $params[$ck] = $cp;
+                                               if ((($ck + 1) % 7) == 0) {
+                                                       $x0 = $x;
+                                                       $y0 = $y;
+                                                       $rx = abs($params[($ck - 6)]);
+                                                       $ry = abs($params[($ck - 5)]);
+                                                       $ang = -$rawparams[($ck - 4)];
+                                                       $angle = deg2rad($ang);
+                                                       $fa = $rawparams[($ck - 3)]; // large-arc-flag
+                                                       $fs = $rawparams[($ck - 2)]; // sweep-flag
+                                                       $x = $params[($ck - 1)] + $xoffset;
+                                                       $y = $params[$ck] + $yoffset;
+                                                       if ((abs($x0 - $x) < $minlen) AND (abs($y0 - $y) < $minlen)) {
+                                                               // endpoints are almost identical
+                                                               $xmin = min($xmin, $x);
+                                                               $ymin = min($ymin, $y);
+                                                               $xmax = max($xmax, $x);
+                                                               $ymax = max($ymax, $y);
+                                                       } else {
+                                                               $cos_ang = cos($angle);
+                                                               $sin_ang = sin($angle);
+                                                               $a = (($x0 - $x) / 2);
+                                                               $b = (($y0 - $y) / 2);
+                                                               $xa = ($a * $cos_ang) - ($b * $sin_ang);
+                                                               $ya = ($a * $sin_ang) + ($b * $cos_ang);
+                                                               $rx2 = $rx * $rx;
+                                                               $ry2 = $ry * $ry;
+                                                               $xa2 = $xa * $xa;
+                                                               $ya2 = $ya * $ya;
+                                                               $delta = ($xa2 / $rx2) + ($ya2 / $ry2);
+                                                               if ($delta > 1) {
+                                                                       $rx *= sqrt($delta);
+                                                                       $ry *= sqrt($delta);
+                                                                       $rx2 = $rx * $rx;
+                                                                       $ry2 = $ry * $ry;
+                                                               }
+                                                               $numerator = (($rx2 * $ry2) - ($rx2 * $ya2) - ($ry2 * $xa2));
+                                                               if ($numerator < 0) {
+                                                                       $root = 0;
+                                                               } else {
+                                                                       $root = sqrt($numerator / (($rx2 * $ya2) + ($ry2 * $xa2)));
+                                                               }
+                                                               if ($fa == $fs){
+                                                                       $root *= -1;
+                                                               }
+                                                               $cax = $root * (($rx * $ya) / $ry);
+                                                               $cay = -$root * (($ry * $xa) / $rx);
+                                                               // coordinates of ellipse center
+                                                               $cx = ($cax * $cos_ang) - ($cay * $sin_ang) + (($x0 + $x) / 2);
+                                                               $cy = ($cax * $sin_ang) + ($cay * $cos_ang) + (($y0 + $y) / 2);
+                                                               // get angles
+                                                               $angs = TCPDF_STATIC::getVectorsAngle(1, 0, (($xa - $cax) / $rx), (($cay - $ya) / $ry));
+                                                               $dang = TCPDF_STATIC::getVectorsAngle((($xa - $cax) / $rx), (($ya - $cay) / $ry), ((-$xa - $cax) / $rx), ((-$ya - $cay) / $ry));
+                                                               if (($fs == 0) AND ($dang > 0)) {
+                                                                       $dang -= (2 * M_PI);
+                                                               } elseif (($fs == 1) AND ($dang < 0)) {
+                                                                       $dang += (2 * M_PI);
+                                                               }
+                                                               $angf = $angs - $dang;
+                                                               if ((($fs == 0) AND ($angs > $angf)) OR (($fs == 1) AND ($angs < $angf))) {
+                                                                       // reverse angles
+                                                                       $tmp = $angs;
+                                                                       $angs = $angf;
+                                                                       $angf = $tmp;
+                                                               }
+                                                               $angs = round(rad2deg($angs), 6);
+                                                               $angf = round(rad2deg($angf), 6);
+                                                               // covent angles to positive values
+                                                               if (($angs < 0) AND ($angf < 0)) {
+                                                                       $angs += 360;
+                                                                       $angf += 360;
+                                                               }
+                                                               $pie = false;
+                                                               if (($key == 0) AND (isset($paths[($key + 1)][1])) AND (trim($paths[($key + 1)][1]) == 'z')) {
+                                                                       $pie = true;
+                                                               }
+                                                               list($axmin, $aymin, $axmax, $aymax) = $this->_outellipticalarc($cx, $cy, $rx, $ry, $ang, $angs, $angf, $pie, 2, false, ($fs == 0), true);
+                                                               $xmin = min($xmin, $x, $axmin);
+                                                               $ymin = min($ymin, $y, $aymin);
+                                                               $xmax = max($xmax, $x, $axmax);
+                                                               $ymax = max($ymax, $y, $aymax);
+                                                       }
+                                                       if ($relcoord) {
+                                                               $xoffset = $x;
+                                                               $yoffset = $y;
+                                                       }
+                                               }
+                                       }
+                                       break;
+                               }
+                               case 'Z': {
+                                       $this->_out('h');
+                                       break;
+                               }
+                       }
+                       $firstcmd = false;
+               } // end foreach
+               if (!empty($op)) {
+                       $this->_out($op);
+               }
+               return array($xmin, $ymin, ($xmax - $xmin), ($ymax - $ymin));
+       }
+
+       /**
+        * Sets the opening SVG element handler function for the XML parser. (*** TO BE COMPLETED ***)
+        * @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler.
+        * @param $name (string) The second parameter, name, contains the name of the element for which this handler is called. If case-folding is in effect for this parser, the element name will be in uppercase letters.
+        * @param $attribs (array) The third parameter, attribs, contains an associative array with the element's attributes (if any). The keys of this array are the attribute names, the values are the attribute values. Attribute names are case-folded on the same criteria as element names. Attribute values are not case-folded. The original order of the attributes can be retrieved by walking through attribs the normal way, using each(). The first key in the array was the first attribute, and so on.
+        * @param $ctm (array) tranformation matrix for clipping mode (starting transformation matrix).
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @protected
+        */
+       protected function startSVGElementHandler($parser, $name, $attribs, $ctm=array()) {
+               // check if we are in clip mode
+               if ($this->svgclipmode) {
+                       $this->svgclippaths[$this->svgclipid][] = array('name' => $name, 'attribs' => $attribs, 'tm' => $this->svgcliptm[$this->svgclipid]);
+                       return;
+               }
+               if ($this->svgdefsmode AND !in_array($name, array('clipPath', 'linearGradient', 'radialGradient', 'stop'))) {
+                       if (isset($attribs['id'])) {
+                               $attribs['child_elements'] = array();
+                               $this->svgdefs[$attribs['id']] = array('name' => $name, 'attribs' => $attribs);
+                               return;
+                       }
+                       if (end($this->svgdefs) !== FALSE) {
+                               $last_svgdefs_id = key($this->svgdefs);
+                               if (isset($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'])) {
+                                       $attribs['id'] = 'DF_'.(count($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements']) + 1);
+                                       $this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'][$attribs['id']] = array('name' => $name, 'attribs' => $attribs);
+                                       return;
+                               }
+                       }
+                       return;
+               }
+               $clipping = false;
+               if ($parser == 'clip-path') {
+                       // set clipping mode
+                       $clipping = true;
+               }
+               // get styling properties
+               $prev_svgstyle = $this->svgstyles[max(0,(count($this->svgstyles) - 1))]; // previous style
+               $svgstyle = $this->svgstyles[0]; // set default style
+               if ($clipping AND !isset($attribs['fill']) AND (!isset($attribs['style']) OR (!preg_match('/[;\"\s]{1}fill[\s]*:[\s]*([^;\"]*)/si', $attribs['style'], $attrval)))) {
+                       // default fill attribute for clipping
+                       $attribs['fill'] = 'none';
+               }
+               if (isset($attribs['style']) AND !TCPDF_STATIC::empty_string($attribs['style']) AND ($attribs['style'][0] != ';')) {
+                       // fix style for regular expression
+                       $attribs['style'] = ';'.$attribs['style'];
+               }
+               foreach ($prev_svgstyle as $key => $val) {
+                       if (in_array($key, TCPDF_IMAGES::$svginheritprop)) {
+                               // inherit previous value
+                               $svgstyle[$key] = $val;
+                       }
+                       if (isset($attribs[$key]) AND !TCPDF_STATIC::empty_string($attribs[$key])) {
+                               // specific attribute settings
+                               if ($attribs[$key] == 'inherit') {
+                                       $svgstyle[$key] = $val;
+                               } else {
+                                       $svgstyle[$key] = $attribs[$key];
+                               }
+                       } elseif (isset($attribs['style']) AND !TCPDF_STATIC::empty_string($attribs['style'])) {
+                               // CSS style syntax
+                               $attrval = array();
+                               if (preg_match('/[;\"\s]{1}'.$key.'[\s]*:[\s]*([^;\"]*)/si', $attribs['style'], $attrval) AND isset($attrval[1])) {
+                                       if ($attrval[1] == 'inherit') {
+                                               $svgstyle[$key] = $val;
+                                       } else {
+                                               $svgstyle[$key] = $attrval[1];
+                                       }
+                               }
+                       }
+               }
+               // transformation matrix
+               if (!empty($ctm)) {
+                       $tm = $ctm;
+               } else {
+                       $tm = array(1,0,0,1,0,0);
+               }
+               if (isset($attribs['transform']) AND !empty($attribs['transform'])) {
+                       $tm = TCPDF_STATIC::getTransformationMatrixProduct($tm, TCPDF_STATIC::getSVGTransformMatrix($attribs['transform']));
+               }
+               $svgstyle['transfmatrix'] = $tm;
+               $invisible = false;
+               if (($svgstyle['visibility'] == 'hidden') OR ($svgstyle['visibility'] == 'collapse') OR ($svgstyle['display'] == 'none')) {
+                       // the current graphics element is invisible (nothing is painted)
+                       $invisible = true;
+               }
+               // process tag
+               switch($name) {
+                       case 'defs': {
+                               $this->svgdefsmode = true;
+                               break;
+                       }
+                       // clipPath
+                       case 'clipPath': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               $this->svgclipmode = true;
+                               if (!isset($attribs['id'])) {
+                                       $attribs['id'] = 'CP_'.(count($this->svgcliptm) + 1);
+                               }
+                               $this->svgclipid = $attribs['id'];
+                               $this->svgclippaths[$this->svgclipid] = array();
+                               $this->svgcliptm[$this->svgclipid] = $tm;
+                               break;
+                       }
+                       case 'svg': {
+                               // start of SVG object
+                               break;
+                       }
+                       case 'g': {
+                               // group together related graphics elements
+                               array_push($this->svgstyles, $svgstyle);
+                               $this->StartTransform();
+                               $x = (isset($attribs['x'])?$attribs['x']:0);
+                               $y = (isset($attribs['y'])?$attribs['y']:0);
+                               $w = 1;//(isset($attribs['width'])?$attribs['width']:1);
+                               $h = 1;//(isset($attribs['height'])?$attribs['height']:1);
+                               $tm = TCPDF_STATIC::getTransformationMatrixProduct($tm, array($w, 0, 0, $h, $x, $y));
+                               $this->SVGTransform($tm);
+                               $this->setSVGStyles($svgstyle, $prev_svgstyle);
+                               break;
+                       }
+                       case 'linearGradient': {
+                               if ($this->pdfa_mode) {
+                                       break;
+                               }
+                               if (!isset($attribs['id'])) {
+                                       $attribs['id'] = 'GR_'.(count($this->svggradients) + 1);
+                               }
+                               $this->svggradientid = $attribs['id'];
+                               $this->svggradients[$this->svggradientid] = array();
+                               $this->svggradients[$this->svggradientid]['type'] = 2;
+                               $this->svggradients[$this->svggradientid]['stops'] = array();
+                               if (isset($attribs['gradientUnits'])) {
+                                       $this->svggradients[$this->svggradientid]['gradientUnits'] = $attribs['gradientUnits'];
+                               } else {
+                                       $this->svggradients[$this->svggradientid]['gradientUnits'] = 'objectBoundingBox';
+                               }
+                               //$attribs['spreadMethod']
+                               if (((!isset($attribs['x1'])) AND (!isset($attribs['y1'])) AND (!isset($attribs['x2'])) AND (!isset($attribs['y2'])))
+                                       OR ((isset($attribs['x1']) AND (substr($attribs['x1'], -1) == '%'))
+                                               OR (isset($attribs['y1']) AND (substr($attribs['y1'], -1) == '%'))
+                                               OR (isset($attribs['x2']) AND (substr($attribs['x2'], -1) == '%'))
+                                               OR (isset($attribs['y2']) AND (substr($attribs['y2'], -1) == '%')))) {
+                                       $this->svggradients[$this->svggradientid]['mode'] = 'percentage';
+                               } else {
+                                       $this->svggradients[$this->svggradientid]['mode'] = 'measure';
+                               }
+                               $x1 = (isset($attribs['x1'])?$attribs['x1']:'0');
+                               $y1 = (isset($attribs['y1'])?$attribs['y1']:'0');
+                               $x2 = (isset($attribs['x2'])?$attribs['x2']:'100');
+                               $y2 = (isset($attribs['y2'])?$attribs['y2']:'0');
+                               if (isset($attribs['gradientTransform'])) {
+                                       $this->svggradients[$this->svggradientid]['gradientTransform'] = TCPDF_STATIC::getSVGTransformMatrix($attribs['gradientTransform']);
+                               }
+                               $this->svggradients[$this->svggradientid]['coords'] = array($x1, $y1, $x2, $y2);
+                               if (isset($attribs['xlink:href']) AND !empty($attribs['xlink:href'])) {
+                                       // gradient is defined on another place
+                                       $this->svggradients[$this->svggradientid]['xref'] = substr($attribs['xlink:href'], 1);
+                               }
+                               break;
+                       }
+                       case 'radialGradient': {
+                               if ($this->pdfa_mode) {
+                                       break;
+                               }
+                               if (!isset($attribs['id'])) {
+                                       $attribs['id'] = 'GR_'.(count($this->svggradients) + 1);
+                               }
+                               $this->svggradientid = $attribs['id'];
+                               $this->svggradients[$this->svggradientid] = array();
+                               $this->svggradients[$this->svggradientid]['type'] = 3;
+                               $this->svggradients[$this->svggradientid]['stops'] = array();
+                               if (isset($attribs['gradientUnits'])) {
+                                       $this->svggradients[$this->svggradientid]['gradientUnits'] = $attribs['gradientUnits'];
+                               } else {
+                                       $this->svggradients[$this->svggradientid]['gradientUnits'] = 'objectBoundingBox';
+                               }
+                               //$attribs['spreadMethod']
+                               if (((!isset($attribs['cx'])) AND (!isset($attribs['cy'])))
+                                       OR ((isset($attribs['cx']) AND (substr($attribs['cx'], -1) == '%'))
+                                       OR (isset($attribs['cy']) AND (substr($attribs['cy'], -1) == '%')))) {
+                                       $this->svggradients[$this->svggradientid]['mode'] = 'percentage';
+                               } elseif (isset($attribs['r']) AND is_numeric($attribs['r']) AND ($attribs['r']) <= 1) {
+                                       $this->svggradients[$this->svggradientid]['mode'] = 'ratio';
+                               } else {
+                                       $this->svggradients[$this->svggradientid]['mode'] = 'measure';
+                               }
+                               $cx = (isset($attribs['cx']) ? $attribs['cx'] : 0.5);
+                               $cy = (isset($attribs['cy']) ? $attribs['cy'] : 0.5);
+                               $fx = (isset($attribs['fx']) ? $attribs['fx'] : $cx);
+                               $fy = (isset($attribs['fy']) ? $attribs['fy'] : $cy);
+                               $r = (isset($attribs['r']) ? $attribs['r'] : 0.5);
+                               if (isset($attribs['gradientTransform'])) {
+                                       $this->svggradients[$this->svggradientid]['gradientTransform'] = TCPDF_STATIC::getSVGTransformMatrix($attribs['gradientTransform']);
+                               }
+                               $this->svggradients[$this->svggradientid]['coords'] = array($cx, $cy, $fx, $fy, $r);
+                               if (isset($attribs['xlink:href']) AND !empty($attribs['xlink:href'])) {
+                                       // gradient is defined on another place
+                                       $this->svggradients[$this->svggradientid]['xref'] = substr($attribs['xlink:href'], 1);
+                               }
+                               break;
+                       }
+                       case 'stop': {
+                               // gradient stops
+                               if (substr($attribs['offset'], -1) == '%') {
+                                       $offset = floatval(substr($attribs['offset'], -1)) / 100;
+                               } else {
+                                       $offset = floatval($attribs['offset']);
+                                       if ($offset > 1) {
+                                               $offset /= 100;
+                                       }
+                               }
+                               $stop_color = isset($svgstyle['stop-color'])?TCPDF_COLORS::convertHTMLColorToDec($svgstyle['stop-color'], $this->spot_colors):'black';
+                               $opacity = isset($svgstyle['stop-opacity'])?$svgstyle['stop-opacity']:1;
+                               $this->svggradients[$this->svggradientid]['stops'][] = array('offset' => $offset, 'color' => $stop_color, 'opacity' => $opacity);
+                               break;
+                       }
+                       // paths
+                       case 'path': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               if (isset($attribs['d'])) {
+                                       $d = trim($attribs['d']);
+                                       if (!empty($d)) {
+                                               $x = (isset($attribs['x'])?$attribs['x']:0);
+                                               $y = (isset($attribs['y'])?$attribs['y']:0);
+                                               $w = (isset($attribs['width'])?$attribs['width']:1);
+                                               $h = (isset($attribs['height'])?$attribs['height']:1);
+                                               $tm = TCPDF_STATIC::getTransformationMatrixProduct($tm, array($w, 0, 0, $h, $x, $y));
+                                               if ($clipping) {
+                                                       $this->SVGTransform($tm);
+                                                       $this->SVGPath($d, 'CNZ');
+                                               } else {
+                                                       $this->StartTransform();
+                                                       $this->SVGTransform($tm);
+                                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'SVGPath', array($d, 'CNZ'));
+                                                       if (!empty($obstyle)) {
+                                                               $this->SVGPath($d, $obstyle);
+                                                       }
+                                                       $this->StopTransform();
+                                               }
+                                       }
+                               }
+                               break;
+                       }
+                       // shapes
+                       case 'rect': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               $x = (isset($attribs['x'])?$this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false):0);
+                               $y = (isset($attribs['y'])?$this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false):0);
+                               $w = (isset($attribs['width'])?$this->getHTMLUnitToUnits($attribs['width'], 0, $this->svgunit, false):0);
+                               $h = (isset($attribs['height'])?$this->getHTMLUnitToUnits($attribs['height'], 0, $this->svgunit, false):0);
+                               $rx = (isset($attribs['rx'])?$this->getHTMLUnitToUnits($attribs['rx'], 0, $this->svgunit, false):0);
+                               $ry = (isset($attribs['ry'])?$this->getHTMLUnitToUnits($attribs['ry'], 0, $this->svgunit, false):$rx);
+                               if ($clipping) {
+                                       $this->SVGTransform($tm);
+                                       $this->RoundedRectXY($x, $y, $w, $h, $rx, $ry, '1111', 'CNZ', array(), array());
+                               } else {
+                                       $this->StartTransform();
+                                       $this->SVGTransform($tm);
+                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'RoundedRectXY', array($x, $y, $w, $h, $rx, $ry, '1111', 'CNZ'));
+                                       if (!empty($obstyle)) {
+                                               $this->RoundedRectXY($x, $y, $w, $h, $rx, $ry, '1111', $obstyle, array(), array());
+                                       }
+                                       $this->StopTransform();
+                               }
+                               break;
+                       }
+                       case 'circle': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               $r = (isset($attribs['r']) ? $this->getHTMLUnitToUnits($attribs['r'], 0, $this->svgunit, false) : 0);
+                               $cx = (isset($attribs['cx']) ? $this->getHTMLUnitToUnits($attribs['cx'], 0, $this->svgunit, false) : (isset($attribs['x']) ? $this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false) : 0));
+                               $cy = (isset($attribs['cy']) ? $this->getHTMLUnitToUnits($attribs['cy'], 0, $this->svgunit, false) : (isset($attribs['y']) ? $this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false) : 0));
+                               $x = ($cx - $r);
+                               $y = ($cy - $r);
+                               $w = (2 * $r);
+                               $h = $w;
+                               if ($clipping) {
+                                       $this->SVGTransform($tm);
+                                       $this->Circle($cx, $cy, $r, 0, 360, 'CNZ', array(), array(), 8);
+                               } else {
+                                       $this->StartTransform();
+                                       $this->SVGTransform($tm);
+                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Circle', array($cx, $cy, $r, 0, 360, 'CNZ'));
+                                       if (!empty($obstyle)) {
+                                               $this->Circle($cx, $cy, $r, 0, 360, $obstyle, array(), array(), 8);
+                                       }
+                                       $this->StopTransform();
+                               }
+                               break;
+                       }
+                       case 'ellipse': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               $rx = (isset($attribs['rx']) ? $this->getHTMLUnitToUnits($attribs['rx'], 0, $this->svgunit, false) : 0);
+                               $ry = (isset($attribs['ry']) ? $this->getHTMLUnitToUnits($attribs['ry'], 0, $this->svgunit, false) : 0);
+                               $cx = (isset($attribs['cx']) ? $this->getHTMLUnitToUnits($attribs['cx'], 0, $this->svgunit, false) : (isset($attribs['x']) ? $this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false) : 0));
+                               $cy = (isset($attribs['cy']) ? $this->getHTMLUnitToUnits($attribs['cy'], 0, $this->svgunit, false) : (isset($attribs['y']) ? $this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false) : 0));
+                               $x = ($cx - $rx);
+                               $y = ($cy - $ry);
+                               $w = (2 * $rx);
+                               $h = (2 * $ry);
+                               if ($clipping) {
+                                       $this->SVGTransform($tm);
+                                       $this->Ellipse($cx, $cy, $rx, $ry, 0, 0, 360, 'CNZ', array(), array(), 8);
+                               } else {
+                                       $this->StartTransform();
+                                       $this->SVGTransform($tm);
+                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Ellipse', array($cx, $cy, $rx, $ry, 0, 0, 360, 'CNZ'));
+                                       if (!empty($obstyle)) {
+                                               $this->Ellipse($cx, $cy, $rx, $ry, 0, 0, 360, $obstyle, array(), array(), 8);
+                                       }
+                                       $this->StopTransform();
+                               }
+                               break;
+                       }
+                       case 'line': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               $x1 = (isset($attribs['x1'])?$this->getHTMLUnitToUnits($attribs['x1'], 0, $this->svgunit, false):0);
+                               $y1 = (isset($attribs['y1'])?$this->getHTMLUnitToUnits($attribs['y1'], 0, $this->svgunit, false):0);
+                               $x2 = (isset($attribs['x2'])?$this->getHTMLUnitToUnits($attribs['x2'], 0, $this->svgunit, false):0);
+                               $y2 = (isset($attribs['y2'])?$this->getHTMLUnitToUnits($attribs['y2'], 0, $this->svgunit, false):0);
+                               $x = $x1;
+                               $y = $y1;
+                               $w = abs($x2 - $x1);
+                               $h = abs($y2 - $y1);
+                               if (!$clipping) {
+                                       $this->StartTransform();
+                                       $this->SVGTransform($tm);
+                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Line', array($x1, $y1, $x2, $y2));
+                                       $this->Line($x1, $y1, $x2, $y2);
+                                       $this->StopTransform();
+                               }
+                               break;
+                       }
+                       case 'polyline':
+                       case 'polygon': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               $points = (isset($attribs['points'])?$attribs['points']:'0 0');
+                               $points = trim($points);
+                               // note that point may use a complex syntax not covered here
+                               $points = preg_split('/[\,\s]+/si', $points);
+                               if (count($points) < 4) {
+                                       break;
+                               }
+                               $p = array();
+                               $xmin = 2147483647;
+                               $xmax = 0;
+                               $ymin = 2147483647;
+                               $ymax = 0;
+                               foreach ($points as $key => $val) {
+                                       $p[$key] = $this->getHTMLUnitToUnits($val, 0, $this->svgunit, false);
+                                       if (($key % 2) == 0) {
+                                               // X coordinate
+                                               $xmin = min($xmin, $p[$key]);
+                                               $xmax = max($xmax, $p[$key]);
+                                       } else {
+                                               // Y coordinate
+                                               $ymin = min($ymin, $p[$key]);
+                                               $ymax = max($ymax, $p[$key]);
+                                       }
+                               }
+                               $x = $xmin;
+                               $y = $ymin;
+                               $w = ($xmax - $xmin);
+                               $h = ($ymax - $ymin);
+                               if ($name == 'polyline') {
+                                       $this->StartTransform();
+                                       $this->SVGTransform($tm);
+                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'PolyLine', array($p, 'CNZ'));
+                                       if (!empty($obstyle)) {
+                                               $this->PolyLine($p, $obstyle, array(), array());
+                                       }
+                                       $this->StopTransform();
+                               } else { // polygon
+                                       if ($clipping) {
+                                               $this->SVGTransform($tm);
+                                               $this->Polygon($p, 'CNZ', array(), array(), true);
+                                       } else {
+                                               $this->StartTransform();
+                                               $this->SVGTransform($tm);
+                                               $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Polygon', array($p, 'CNZ'));
+                                               if (!empty($obstyle)) {
+                                                       $this->Polygon($p, $obstyle, array(), array(), true);
+                                               }
+                                               $this->StopTransform();
+                                       }
+                               }
+                               break;
+                       }
+                       // image
+                       case 'image': {
+                               if ($invisible) {
+                                       break;
+                               }
+                               if (!isset($attribs['xlink:href']) OR empty($attribs['xlink:href'])) {
+                                       break;
+                               }
+                               $x = (isset($attribs['x'])?$this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false):0);
+                               $y = (isset($attribs['y'])?$this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false):0);
+                               $w = (isset($attribs['width'])?$this->getHTMLUnitToUnits($attribs['width'], 0, $this->svgunit, false):0);
+                               $h = (isset($attribs['height'])?$this->getHTMLUnitToUnits($attribs['height'], 0, $this->svgunit, false):0);
+                               $img = $attribs['xlink:href'];
+                               if (!$clipping) {
+                                       $this->StartTransform();
+                                       $this->SVGTransform($tm);
+                                       $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h);
+                                       if (preg_match('/^data:image\/[^;]+;base64,/', $img, $m) > 0) {
+                                               // embedded image encoded as base64
+                                               $img = '@'.base64_decode(substr($img, strlen($m[0])));
+                                       } else {
+                                               // fix image path
+                                               if (!TCPDF_STATIC::empty_string($this->svgdir) AND (($img[0] == '.') OR (basename($img) == $img))) {
+                                                       // replace relative path with full server path
+                                                       $img = $this->svgdir.'/'.$img;
+                                               }
+                                               if (($img[0] == '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) {
+                                                       $findroot = strpos($img, $_SERVER['DOCUMENT_ROOT']);
+                                                       if (($findroot === false) OR ($findroot > 1)) {
+                                                               if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') {
+                                                                       $img = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$img;
+                                                               } else {
+                                                                       $img = $_SERVER['DOCUMENT_ROOT'].$img;
+                                                               }
+                                                       }
+                                               }
+                                               $img = urldecode($img);
+                                               $testscrtype = @parse_url($img);
+                                               if (!isset($testscrtype['query']) OR empty($testscrtype['query'])) {
+                                                       // convert URL to server path
+                                                       $img = str_replace(K_PATH_URL, K_PATH_MAIN, $img);
+                                               }
+                                       }
+                                       // get image type
+                                       $imgtype = TCPDF_IMAGES::getImageFileType($img);
+                                       if (($imgtype == 'eps') OR ($imgtype == 'ai')) {
+                                               $this->ImageEps($img, $x, $y, $w, $h);
+                                       } elseif ($imgtype == 'svg') {
+                                               $this->ImageSVG($img, $x, $y, $w, $h);
+                                       } else {
+                                               $this->Image($img, $x, $y, $w, $h);
+                                       }
+                                       $this->StopTransform();
+                               }
+                               break;
+                       }
+                       // text
+                       case 'text':
+                       case 'tspan': {
+                               // only basic support - advanced features must be implemented
+                               $this->svgtextmode['invisible'] = $invisible;
+                               if ($invisible) {
+                                       break;
+                               }
+                               array_push($this->svgstyles, $svgstyle);
+                               if (isset($attribs['x'])) {
+                                       $x = $this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false);
+                               } elseif ($name == 'tspan') {
+                                       $x = $this->x;
+                               } else {
+                                       $x = 0;
+                               }
+                               if (isset($attribs['dx'])) {
+                                       $x += $this->getHTMLUnitToUnits($attribs['dx'], 0, $this->svgunit, false);
+                               }
+                               if (isset($attribs['y'])) {
+                                       $y = $this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false);
+                               } elseif ($name == 'tspan') {
+                                       $y = $this->y;
+                               } else {
+                                       $y = 0;
+                               }
+                               if (isset($attribs['dy'])) {
+                                       $y += $this->getHTMLUnitToUnits($attribs['dy'], 0, $this->svgunit, false);
+                               }
+                               $svgstyle['text-color'] = $svgstyle['fill'];
+                               $this->svgtext = '';
+                               if (isset($svgstyle['text-anchor'])) {
+                                       $this->svgtextmode['text-anchor'] = $svgstyle['text-anchor'];
+                               } else {
+                                       $this->svgtextmode['text-anchor'] = 'start';
+                               }
+                               if (isset($svgstyle['direction'])) {
+                                       if ($svgstyle['direction'] == 'rtl') {
+                                               $this->svgtextmode['rtl'] = true;
+                                       } else {
+                                               $this->svgtextmode['rtl'] = false;
+                                       }
+                               } else {
+                                       $this->svgtextmode['rtl'] = false;
+                               }
+                               if (isset($svgstyle['stroke']) AND ($svgstyle['stroke'] != 'none') AND isset($svgstyle['stroke-width']) AND ($svgstyle['stroke-width'] > 0)) {
+                                       $this->svgtextmode['stroke'] = $this->getHTMLUnitToUnits($svgstyle['stroke-width'], 0, $this->svgunit, false);
+                               } else {
+                                       $this->svgtextmode['stroke'] = false;
+                               }
+                               $this->StartTransform();
+                               $this->SVGTransform($tm);
+                               $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, 1, 1);
+                               $this->x = $x;
+                               $this->y = $y;
+                               break;
+                       }
+                       // use
+                       case 'use': {
+                               if (isset($attribs['xlink:href']) AND !empty($attribs['xlink:href'])) {
+                                       $svgdefid = substr($attribs['xlink:href'], 1);
+                                       if (isset($this->svgdefs[$svgdefid])) {
+                                               $use = $this->svgdefs[$svgdefid];
+                                               if (isset($attribs['xlink:href'])) {
+                                                       unset($attribs['xlink:href']);
+                                               }
+                                               if (isset($attribs['id'])) {
+                                                       unset($attribs['id']);
+                                               }
+                                               if (isset($use['attribs']['x']) AND isset($attribs['x'])) {
+                                                       $attribs['x'] += $use['attribs']['x'];
+                                               }
+                                               if (isset($use['attribs']['y']) AND isset($attribs['y'])) {
+                                                       $attribs['y'] += $use['attribs']['y'];
+                                               }
+                                               if (empty($attribs['style'])) {
+                                                       $attribs['style'] = '';
+                                               }
+                                               if (!empty($use['attribs']['style'])) {
+                                                       // merge styles
+                                                       $attribs['style'] = str_replace(';;',';',';'.$use['attribs']['style'].$attribs['style']);
+                                               }
+                                               $attribs = array_merge($use['attribs'], $attribs);
+                                               $this->startSVGElementHandler($parser, $use['name'], $attribs);
+                                               return;
+                                       }
+                               }
+                               break;
+                       }
+                       default: {
+                               break;
+                       }
+               } // end of switch
+               // process child elements
+               if (!empty($attribs['child_elements'])) {
+                       $child_elements = $attribs['child_elements'];
+                       unset($attribs['child_elements']);
+                       foreach($child_elements as $child_element) {
+                               if (empty($child_element['attribs']['closing_tag'])) {
+                                       $this->startSVGElementHandler('child-tag', $child_element['name'], $child_element['attribs']);
+                               } else {
+                                       if (isset($child_element['attribs']['content'])) {
+                                               $this->svgtext = $child_element['attribs']['content'];
+                                       }
+                                       $this->endSVGElementHandler('child-tag', $child_element['name']);
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Sets the closing SVG element handler function for the XML parser.
+        * @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler.
+        * @param $name (string) The second parameter, name, contains the name of the element for which this handler is called. If case-folding is in effect for this parser, the element name will be in uppercase letters.
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @protected
+        */
+       protected function endSVGElementHandler($parser, $name) {
+               if ($this->svgdefsmode AND !in_array($name, array('defs', 'clipPath', 'linearGradient', 'radialGradient', 'stop'))) {;
+                       if (end($this->svgdefs) !== FALSE) {
+                               $last_svgdefs_id = key($this->svgdefs);
+                               if (isset($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'])) {
+                                       foreach($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'] as $child_element) {
+                                               if (isset($child_element['attribs']['id']) AND ($child_element['name'] == $name)) {
+                                                       $this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'][$child_element['attribs']['id'].'_CLOSE'] = array('name' => $name, 'attribs' => array('closing_tag' => TRUE, 'content' => $this->svgtext));
+                                                       return;
+                                               }
+                                       }
+                                       if ($this->svgdefs[$last_svgdefs_id]['name'] == $name) {
+                                               $this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'][$last_svgdefs_id.'_CLOSE'] = array('name' => $name, 'attribs' => array('closing_tag' => TRUE, 'content' => $this->svgtext));
+                                               return;
+                                       }
+                               }
+                       }
+                       return;
+               }
+               switch($name) {
+                       case 'defs': {
+                               $this->svgdefsmode = false;
+                               break;
+                       }
+                       // clipPath
+                       case 'clipPath': {
+                               $this->svgclipmode = false;
+                               break;
+                       }
+                       case 'g': {
+                               // ungroup: remove last style from array
+                               array_pop($this->svgstyles);
+                               $this->StopTransform();
+                               break;
+                       }
+                       case 'text':
+                       case 'tspan': {
+                               if ($this->svgtextmode['invisible']) {
+                                       // This implementation must be fixed to following the rule:
+                                       // If the 'visibility' property is set to hidden on a 'tspan', 'tref' or 'altGlyph' element, then the text is invisible but still takes up space in text layout calculations.
+                                       break;
+                               }
+                               // print text
+                               $text = $this->svgtext;
+                               //$text = $this->stringTrim($text);
+                               $textlen = $this->GetStringWidth($text);
+                               if ($this->svgtextmode['text-anchor'] != 'start') {
+                                       // check if string is RTL text
+                                       if ($this->svgtextmode['text-anchor'] == 'end') {
+                                               if ($this->svgtextmode['rtl']) {
+                                                       $this->x += $textlen;
+                                               } else {
+                                                       $this->x -= $textlen;
+                                               }
+                                       } elseif ($this->svgtextmode['text-anchor'] == 'middle') {
+                                               if ($this->svgtextmode['rtl']) {
+                                                       $this->x += ($textlen / 2);
+                                               } else {
+                                                       $this->x -= ($textlen / 2);
+                                               }
+                                       }
+                               }
+                               $textrendermode = $this->textrendermode;
+                               $textstrokewidth = $this->textstrokewidth;
+                               $this->setTextRenderingMode($this->svgtextmode['stroke'], true, false);
+                               if ($name == 'text') {
+                                       // store current coordinates
+                                       $tmpx = $this->x;
+                                       $tmpy = $this->y;
+                               }
+                               $this->Cell($textlen, 0, $text, 0, 0, '', false, '', 0, false, 'L', 'T');
+                               if ($name == 'text') {
+                                       // restore coordinates
+                                       $this->x = $tmpx;
+                                       $this->y = $tmpy;
+                               }
+                               // restore previous rendering mode
+                               $this->textrendermode = $textrendermode;
+                               $this->textstrokewidth = $textstrokewidth;
+                               $this->svgtext = '';
+                               $this->StopTransform();
+                               if (!$this->svgdefsmode) {
+                                       array_pop($this->svgstyles);
+                               }
+                               break;
+                       }
+                       default: {
+                               break;
+                       }
+               }
+       }
+
+       /**
+        * Sets the character data handler function for the XML parser.
+        * @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler.
+        * @param $data (string) The second parameter, data, contains the character data as a string.
+        * @author Nicola Asuni
+        * @since 5.0.000 (2010-05-02)
+        * @protected
+        */
+       protected function segSVGContentHandler($parser, $data) {
+               $this->svgtext .= $data;
+       }
+
+       // --- END SVG METHODS -----------------------------------------------------
+
+} // END OF TCPDF CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_autoconfig.php b/inc/3rdparty/libraries/tcpdf/tcpdf_autoconfig.php
new file mode 100644 (file)
index 0000000..951c0b0
--- /dev/null
@@ -0,0 +1,242 @@
+<?php
+//============================================================+
+// File name   : tcpdf_autoconfig.php
+// Version     : 1.0.000
+// Begin       : 2013-05-16
+// Last Update : 2014-09-02
+// Authors     : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2011-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : Try to automatically configure some TCPDF
+//               constants if not defined.
+//
+//============================================================+
+
+/**
+ * @file
+ * Try to automatically configure some TCPDF constants if not defined.
+ * @package com.tecnick.tcpdf
+ * @version 1.0.000
+ */
+
+// DOCUMENT_ROOT fix for IIS Webserver
+if ((!isset($_SERVER['DOCUMENT_ROOT'])) OR (empty($_SERVER['DOCUMENT_ROOT']))) {
+       if(isset($_SERVER['SCRIPT_FILENAME'])) {
+               $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF'])));
+       } elseif(isset($_SERVER['PATH_TRANSLATED'])) {
+               $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF'])));
+       } else {
+               // define here your DOCUMENT_ROOT path if the previous fails (e.g. '/var/www')
+               $_SERVER['DOCUMENT_ROOT'] = '/';
+       }
+}
+$_SERVER['DOCUMENT_ROOT'] = str_replace('//', '/', $_SERVER['DOCUMENT_ROOT']);
+if (substr($_SERVER['DOCUMENT_ROOT'], -1) != '/') {
+       $_SERVER['DOCUMENT_ROOT'] .= '/';
+}
+
+// Load main configuration file only if the K_TCPDF_EXTERNAL_CONFIG constant is set to false.
+if (!defined('K_TCPDF_EXTERNAL_CONFIG') OR !K_TCPDF_EXTERNAL_CONFIG) {
+       // define a list of default config files in order of priority
+       $tcpdf_config_files = array(dirname(__FILE__).'/config/tcpdf_config.php', '/etc/php-tcpdf/tcpdf_config.php', '/etc/tcpdf/tcpdf_config.php', '/etc/tcpdf_config.php');
+       foreach ($tcpdf_config_files as $tcpdf_config) {
+               if (@file_exists($tcpdf_config) AND is_readable($tcpdf_config)) {
+                       require_once($tcpdf_config);
+                       break;
+               }
+       }
+}
+
+if (!defined('K_PATH_MAIN')) {
+       define ('K_PATH_MAIN', dirname(__FILE__).'/');
+}
+
+if (!defined('K_PATH_FONTS')) {
+       define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/');
+}
+
+if (!defined('K_PATH_URL')) {
+       $k_path_url = K_PATH_MAIN; // default value for console mode
+       if (isset($_SERVER['HTTP_HOST']) AND (!empty($_SERVER['HTTP_HOST']))) {
+               if(isset($_SERVER['HTTPS']) AND (!empty($_SERVER['HTTPS'])) AND (strtolower($_SERVER['HTTPS']) != 'off')) {
+                       $k_path_url = 'https://';
+               } else {
+                       $k_path_url = 'http://';
+               }
+               $k_path_url .= $_SERVER['HTTP_HOST'];
+               $k_path_url .= str_replace( '\\', '/', substr(K_PATH_MAIN, (strlen($_SERVER['DOCUMENT_ROOT']) - 1)));
+       }
+       define ('K_PATH_URL', $k_path_url);
+}
+
+if (!defined('K_PATH_IMAGES')) {
+       $tcpdf_images_dirs = array(K_PATH_MAIN.'examples/images/', K_PATH_MAIN.'images/', '/usr/share/doc/php-tcpdf/examples/images/', '/usr/share/doc/tcpdf/examples/images/', '/usr/share/doc/php/tcpdf/examples/images/', '/var/www/tcpdf/images/', '/var/www/html/tcpdf/images/', '/usr/local/apache2/htdocs/tcpdf/images/', K_PATH_MAIN);
+       foreach ($tcpdf_images_dirs as $tcpdf_images_path) {
+               if (@file_exists($tcpdf_images_path)) {
+                       break;
+               }
+       }
+       define ('K_PATH_IMAGES', $tcpdf_images_path);
+}
+
+if (!defined('PDF_HEADER_LOGO')) {
+       $tcpdf_header_logo = '';
+       if (@file_exists(K_PATH_IMAGES.'tcpdf_logo.jpg')) {
+               $tcpdf_header_logo = 'tcpdf_logo.jpg';
+       }
+       define ('PDF_HEADER_LOGO', $tcpdf_header_logo);
+}
+
+if (!defined('PDF_HEADER_LOGO_WIDTH')) {
+       if (!empty($tcpdf_header_logo)) {
+               define ('PDF_HEADER_LOGO_WIDTH', 30);
+       } else {
+               define ('PDF_HEADER_LOGO_WIDTH', 0);
+       }
+}
+
+if (!defined('K_PATH_CACHE')) {
+       $K_PATH_CACHE = ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir();
+       if (substr($K_PATH_CACHE, -1) != '/') {
+               $K_PATH_CACHE .= '/';
+       }
+       define ('K_PATH_CACHE', $K_PATH_CACHE);
+}
+
+if (!defined('K_BLANK_IMAGE')) {
+       define ('K_BLANK_IMAGE', '_blank.png');
+}
+
+if (!defined('PDF_PAGE_FORMAT')) {
+       define ('PDF_PAGE_FORMAT', 'A4');
+}
+
+if (!defined('PDF_PAGE_ORIENTATION')) {
+       define ('PDF_PAGE_ORIENTATION', 'P');
+}
+
+if (!defined('PDF_CREATOR')) {
+       define ('PDF_CREATOR', 'TCPDF');
+}
+
+if (!defined('PDF_AUTHOR')) {
+       define ('PDF_AUTHOR', 'TCPDF');
+}
+
+if (!defined('PDF_HEADER_TITLE')) {
+       define ('PDF_HEADER_TITLE', 'TCPDF Example');
+}
+
+if (!defined('PDF_HEADER_STRING')) {
+       define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org");
+}
+
+if (!defined('PDF_UNIT')) {
+       define ('PDF_UNIT', 'mm');
+}
+
+if (!defined('PDF_MARGIN_HEADER')) {
+       define ('PDF_MARGIN_HEADER', 5);
+}
+
+if (!defined('PDF_MARGIN_FOOTER')) {
+       define ('PDF_MARGIN_FOOTER', 10);
+}
+
+if (!defined('PDF_MARGIN_TOP')) {
+       define ('PDF_MARGIN_TOP', 27);
+}
+
+if (!defined('PDF_MARGIN_BOTTOM')) {
+       define ('PDF_MARGIN_BOTTOM', 25);
+}
+
+if (!defined('PDF_MARGIN_LEFT')) {
+       define ('PDF_MARGIN_LEFT', 15);
+}
+
+if (!defined('PDF_MARGIN_RIGHT')) {
+       define ('PDF_MARGIN_RIGHT', 15);
+}
+
+if (!defined('PDF_FONT_NAME_MAIN')) {
+       define ('PDF_FONT_NAME_MAIN', 'helvetica');
+}
+
+if (!defined('PDF_FONT_SIZE_MAIN')) {
+       define ('PDF_FONT_SIZE_MAIN', 10);
+}
+
+if (!defined('PDF_FONT_NAME_DATA')) {
+       define ('PDF_FONT_NAME_DATA', 'helvetica');
+}
+
+if (!defined('PDF_FONT_SIZE_DATA')) {
+       define ('PDF_FONT_SIZE_DATA', 8);
+}
+
+if (!defined('PDF_FONT_MONOSPACED')) {
+       define ('PDF_FONT_MONOSPACED', 'courier');
+}
+
+if (!defined('PDF_IMAGE_SCALE_RATIO')) {
+       define ('PDF_IMAGE_SCALE_RATIO', 1.25);
+}
+
+if (!defined('HEAD_MAGNIFICATION')) {
+       define('HEAD_MAGNIFICATION', 1.1);
+}
+
+if (!defined('K_CELL_HEIGHT_RATIO')) {
+       define('K_CELL_HEIGHT_RATIO', 1.25);
+}
+
+if (!defined('K_TITLE_MAGNIFICATION')) {
+       define('K_TITLE_MAGNIFICATION', 1.3);
+}
+
+if (!defined('K_SMALL_RATIO')) {
+       define('K_SMALL_RATIO', 2/3);
+}
+
+if (!defined('K_THAI_TOPCHARS')) {
+       define('K_THAI_TOPCHARS', true);
+}
+
+if (!defined('K_TCPDF_CALLS_IN_HTML')) {
+       define('K_TCPDF_CALLS_IN_HTML', true);
+}
+
+if (!defined('K_TCPDF_THROW_EXCEPTION_ERROR')) {
+       define('K_TCPDF_THROW_EXCEPTION_ERROR', false);
+}
+
+if (!defined('K_TIMEZONE')) {
+       define('K_TIMEZONE', @date_default_timezone_get());
+}
+date_default_timezone_set(K_TIMEZONE);
+
+//============================================================+
+// END OF FILE
+//============================================================+
similarity index 53%
rename from inc/3rdparty/libraries/mpdf/classes/barcode.php
rename to inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_1d.php
index 9a230f0e183d745f755e7c7636bdffb4c69ba1db..09dfaf4d1601d2a8d2273165b79e9571daf17c96 100644 (file)
 <?php
-
-// Adapted for mPDF from TCPDF barcode. Original Details left below.
-
 //============================================================+
-// File name   : barcodes.php
+// File name   : tcpdf_barcodes_1d.php
+// Version     : 1.0.026
 // Begin       : 2008-06-09
-// Last Update : 2009-04-15
-// Version     : 1.0.008
-// License     : GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
-//     ----------------------------------------------------------------------------
-//  Copyright (C) 2008-2009 Nicola Asuni - Tecnick.com S.r.l.
-//     
-//     This program is free software: you can redistribute it and/or modify
-//     it under the terms of the GNU Lesser General Public License as published by
-//     the Free Software Foundation, either version 2.1 of the License, or
-//     (at your option) any later version.
-//     
-//     This program is distributed in the hope that it will be useful,
-//     but WITHOUT ANY WARRANTY; without even the implied warranty of
-//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-//     GNU Lesser General Public License for more details.
-//     
-//     You should have received a copy of the GNU Lesser General Public License
-//     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-//     
-//     See LICENSE.TXT file for more information.
-//  ----------------------------------------------------------------------------
+// Last Update : 2014-05-20
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2008-2014 Nicola Asuni - Tecnick.com LTD
 //
-// Description : PHP class to creates array representations for 
-//               common 1D barcodes to be used with TCPDF.
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
 //
-// Author: Nicola Asuni
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : PHP class to creates array representations for
+//               common 1D barcodes to be used with TCPDF.
 //
-// (c) Copyright:
-//               Nicola Asuni
-//               Tecnick.com S.r.l.
-//               Via della Pace, 11
-//               09044 Quartucciu (CA)
-//               ITALY
-//               www.tecnick.com
-//               info@tecnick.com
 //============================================================+
 
-class PDFBarcode {
-       
-       protected $barcode_array;
-       protected $gapwidth;
-       protected $print_ratio;
-       protected $daft;
+/**
+ * @file
+ * PHP class to creates array representations for common 1D barcodes to be used with TCPDF.
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.026
+ */
 
-       public function __construct() {
+/**
+ * @class TCPDFBarcode
+ * PHP class to creates array representations for common 1D barcodes to be used with TCPDF (http://www.tcpdf.org).<br>
+ * @package com.tecnick.tcpdf
+ * @version 1.0.026
+ * @author Nicola Asuni
+ */
+class TCPDFBarcode {
 
+       /**
+        * Array representation of barcode.
+        * @protected
+        */
+       protected $barcode_array;
+
+       /**
+        * This is the class constructor.
+        * Return an array representations for common 1D barcodes:<ul>
+        * <li>$arrcode['code'] code to be printed on text label</li>
+        * <li>$arrcode['maxh'] max barcode height</li>
+        * <li>$arrcode['maxw'] max barcode width</li>
+        * <li>$arrcode['bcode'][$k] single bar or space in $k position</li>
+        * <li>$arrcode['bcode'][$k]['t'] bar type: true = bar, false = space.</li>
+        * <li>$arrcode['bcode'][$k]['w'] bar width in units.</li>
+        * <li>$arrcode['bcode'][$k]['h'] bar height in units.</li>
+        * <li>$arrcode['bcode'][$k]['p'] bar top position (0 = top, 1 = middle)</li></ul>
+        * @param $code (string) code to print
+        * @param $type (string) type of barcode: <ul><li>C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.</li><li>C39+ : CODE 39 with checksum</li><li>C39E : CODE 39 EXTENDED</li><li>C39E+ : CODE 39 EXTENDED + CHECKSUM</li><li>C93 : CODE 93 - USS-93</li><li>S25 : Standard 2 of 5</li><li>S25+ : Standard 2 of 5 + CHECKSUM</li><li>I25 : Interleaved 2 of 5</li><li>I25+ : Interleaved 2 of 5 + CHECKSUM</li><li>C128 : CODE 128</li><li>C128A : CODE 128 A</li><li>C128B : CODE 128 B</li><li>C128C : CODE 128 C</li><li>EAN2 : 2-Digits UPC-Based Extention</li><li>EAN5 : 5-Digits UPC-Based Extention</li><li>EAN8 : EAN 8</li><li>EAN13 : EAN 13</li><li>UPCA : UPC-A</li><li>UPCE : UPC-E</li><li>MSI : MSI (Variation of Plessey code)</li><li>MSI+ : MSI + CHECKSUM (modulo 11)</li><li>POSTNET : POSTNET</li><li>PLANET : PLANET</li><li>RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)</li><li>KIX : KIX (Klant index - Customer index)</li><li>IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200</li><li>CODABAR : CODABAR</li><li>CODE11 : CODE 11</li><li>PHARMA : PHARMACODE</li><li>PHARMA2T : PHARMACODE TWO-TRACKS</li></ul>
+        * @public
+        */
+       public function __construct($code, $type) {
+               $this->setBarcode($code, $type);
        }
-       
-       public function getBarcodeArray($code, $type, $pr='') {
-               $this->setBarcode($code, $type, $pr);
+
+       /**
+        * Return an array representations of barcode.
+        * @return array
+        * @public
+        */
+       public function getBarcodeArray() {
                return $this->barcode_array;
        }
-       public function getChecksum($code, $type) {
-               $this->setBarcode($code, $type);
-               if (!$this->barcode_array) { return ''; }
-               else { return $this->barcode_array['checkdigit']; }
+
+       /**
+        * Send barcode as SVG image object to the standard output.
+        * @param $w (int) Minimum width of a single bar in user units.
+        * @param $h (int) Height of barcode in user units.
+        * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent).
+        * @public
+        */
+       public function getBarcodeSVG($w=2, $h=30, $color='black') {
+               // send headers
+               $code = $this->getBarcodeSVGcode($w, $h, $color);
+               header('Content-Type: application/svg+xml');
+               header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+               header('Pragma: public');
+               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+               header('Content-Disposition: inline; filename="'.md5($code).'.svg";');
+               //header('Content-Length: '.strlen($code));
+               echo $code;
        }
 
-       public function setBarcode($code, $type, $pr='') {
-               $this->print_ratio = 1;
+       /**
+        * Return a SVG string representation of barcode.
+        * @param $w (int) Minimum width of a single bar in user units.
+        * @param $h (int) Height of barcode in user units.
+        * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent).
+        * @return string SVG code.
+        * @public
+        */
+       public function getBarcodeSVGcode($w=2, $h=30, $color='black') {
+               // replace table for special characters
+               $repstr = array("\0" => '', '&' => '&amp;', '<' => '&lt;', '>' => '&gt;');
+               $svg = '<'.'?'.'xml version="1.0" standalone="no"'.'?'.'>'."\n";
+               $svg .= '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'."\n";
+               $svg .= '<svg width="'.round(($this->barcode_array['maxw'] * $w), 3).'" height="'.$h.'" version="1.1" xmlns="http://www.w3.org/2000/svg">'."\n";
+               $svg .= "\t".'<desc>'.strtr($this->barcode_array['code'], $repstr).'</desc>'."\n";
+               $svg .= "\t".'<g id="bars" fill="'.$color.'" stroke="none">'."\n";
+               // print bars
+               $x = 0;
+               foreach ($this->barcode_array['bcode'] as $k => $v) {
+                       $bw = round(($v['w'] * $w), 3);
+                       $bh = round(($v['h'] * $h / $this->barcode_array['maxh']), 3);
+                       if ($v['t']) {
+                               $y = round(($v['p'] * $h / $this->barcode_array['maxh']), 3);
+                               // draw a vertical bar
+                               $svg .= "\t\t".'<rect x="'.$x.'" y="'.$y.'" width="'.$bw.'" height="'.$bh.'" />'."\n";
+                       }
+                       $x += $bw;
+               }
+               $svg .= "\t".'</g>'."\n";
+               $svg .= '</svg>'."\n";
+               return $svg;
+       }
+
+       /**
+        * Return an HTML representation of barcode.
+        * @param $w (int) Width of a single bar element in pixels.
+        * @param $h (int) Height of a single bar element in pixels.
+        * @param $color (string) Foreground color for bar elements (background is transparent).
+        * @return string HTML code.
+        * @public
+        */
+       public function getBarcodeHTML($w=2, $h=30, $color='black') {
+               $html = '<div style="font-size:0;position:relative;width:'.($this->barcode_array['maxw'] * $w).'px;height:'.($h).'px;">'."\n";
+               // print bars
+               $x = 0;
+               foreach ($this->barcode_array['bcode'] as $k => $v) {
+                       $bw = round(($v['w'] * $w), 3);
+                       $bh = round(($v['h'] * $h / $this->barcode_array['maxh']), 3);
+                       if ($v['t']) {
+                               $y = round(($v['p'] * $h / $this->barcode_array['maxh']), 3);
+                               // draw a vertical bar
+                               $html .= '<div style="background-color:'.$color.';width:'.$bw.'px;height:'.$bh.'px;position:absolute;left:'.$x.'px;top:'.$y.'px;">&nbsp;</div>'."\n";
+                       }
+                       $x += $bw;
+               }
+               $html .= '</div>'."\n";
+               return $html;
+       }
+
+       /**
+        * Send a PNG image representation of barcode (requires GD or Imagick library).
+        * @param $w (int) Width of a single bar element in pixels.
+        * @param $h (int) Height of a single bar element in pixels.
+        * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent).
+        * @public
+        */
+       public function getBarcodePNG($w=2, $h=30, $color=array(0,0,0)) {
+               $data = $this->getBarcodePngData($w, $h, $color);
+               // send headers
+               header('Content-Type: image/png');
+               header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+               header('Pragma: public');
+               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+               //header('Content-Length: '.strlen($data));
+               echo $data;
+       }
+
+       /**
+        * Return a PNG image representation of barcode (requires GD or Imagick library).
+        * @param $w (int) Width of a single bar element in pixels.
+        * @param $h (int) Height of a single bar element in pixels.
+        * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent).
+        * @return image or false in case of error.
+        * @public
+        */
+       public function getBarcodePngData($w=2, $h=30, $color=array(0,0,0)) {
+               // calculate image size
+               $width = ($this->barcode_array['maxw'] * $w);
+               $height = $h;
+               if (function_exists('imagecreate')) {
+                       // GD library
+                       $imagick = false;
+                       $png = imagecreate($width, $height);
+                       $bgcol = imagecolorallocate($png, 255, 255, 255);
+                       imagecolortransparent($png, $bgcol);
+                       $fgcol = imagecolorallocate($png, $color[0], $color[1], $color[2]);
+               } elseif (extension_loaded('imagick')) {
+                       $imagick = true;
+                       $bgcol = new imagickpixel('rgb(255,255,255');
+                       $fgcol = new imagickpixel('rgb('.$color[0].','.$color[1].','.$color[2].')');
+                       $png = new Imagick();
+                       $png->newImage($width, $height, 'none', 'png');
+                       $bar = new imagickdraw();
+                       $bar->setfillcolor($fgcol);
+               } else {
+                       return false;
+               }
+               // print bars
+               $x = 0;
+               foreach ($this->barcode_array['bcode'] as $k => $v) {
+                       $bw = round(($v['w'] * $w), 3);
+                       $bh = round(($v['h'] * $h / $this->barcode_array['maxh']), 3);
+                       if ($v['t']) {
+                               $y = round(($v['p'] * $h / $this->barcode_array['maxh']), 3);
+                               // draw a vertical bar
+                               if ($imagick) {
+                                       $bar->rectangle($x, $y, ($x + $bw - 1), ($y + $bh - 1));
+                               } else {
+                                       imagefilledrectangle($png, $x, $y, ($x + $bw - 1), ($y + $bh - 1), $fgcol);
+                               }
+                       }
+                       $x += $bw;
+               }
+               if ($imagick) {
+                       $png->drawimage($bar);
+                       return $png;
+               } else {
+                       ob_start();
+                       imagepng($png);
+                       $imagedata = ob_get_clean();
+                       imagedestroy($png);
+                       return $imagedata;
+               }
+       }
+
+       /**
+        * Set the barcode.
+        * @param $code (string) code to print
+        * @param $type (string) type of barcode: <ul><li>C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.</li><li>C39+ : CODE 39 with checksum</li><li>C39E : CODE 39 EXTENDED</li><li>C39E+ : CODE 39 EXTENDED + CHECKSUM</li><li>C93 : CODE 93 - USS-93</li><li>S25 : Standard 2 of 5</li><li>S25+ : Standard 2 of 5 + CHECKSUM</li><li>I25 : Interleaved 2 of 5</li><li>I25+ : Interleaved 2 of 5 + CHECKSUM</li><li>C128 : CODE 128</li><li>C128A : CODE 128 A</li><li>C128B : CODE 128 B</li><li>C128C : CODE 128 C</li><li>EAN2 : 2-Digits UPC-Based Extention</li><li>EAN5 : 5-Digits UPC-Based Extention</li><li>EAN8 : EAN 8</li><li>EAN13 : EAN 13</li><li>UPCA : UPC-A</li><li>UPCE : UPC-E</li><li>MSI : MSI (Variation of Plessey code)</li><li>MSI+ : MSI + CHECKSUM (modulo 11)</li><li>POSTNET : POSTNET</li><li>PLANET : PLANET</li><li>RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)</li><li>KIX : KIX (Klant index - Customer index)</li><li>IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200</li><li>CODABAR : CODABAR</li><li>CODE11 : CODE 11</li><li>PHARMA : PHARMACODE</li><li>PHARMA2T : PHARMACODE TWO-TRACKS</li></ul>
+        * @return array barcode array
+        * @public
+        */
+       public function setBarcode($code, $type) {
                switch (strtoupper($type)) {
-                       case 'ISBN':
-                       case 'ISSN':
-                       case 'EAN13': { // EAN 13
-                               $arrcode = $this->barcode_eanupc($code, 13);
-                               $arrcode['lightmL'] = 11;       // LEFT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
-                               $arrcode['nom-H'] = 25.93;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                       case 'C39': { // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
+                               $arrcode = $this->barcode_code39($code, false, false);
                                break;
                        }
-                       case 'UPCA': { // UPC-A
-                               $arrcode = $this->barcode_eanupc($code, 12);
-                               $arrcode['lightmL'] = 9;        // LEFT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['lightmR'] = 9;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
-                               $arrcode['nom-H'] = 25.91;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                       case 'C39+': { // CODE 39 with checksum
+                               $arrcode = $this->barcode_code39($code, false, true);
                                break;
                        }
-                       case 'UPCE': { // UPC-E
-                               $arrcode = $this->barcode_eanupc($code, 6);
-                               $arrcode['lightmL'] = 9;        // LEFT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
-                               $arrcode['nom-H'] = 25.93;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                       case 'C39E': { // CODE 39 EXTENDED
+                               $arrcode = $this->barcode_code39($code, true, false);
                                break;
                        }
-                       case 'EAN8': { // EAN 8
-                               $arrcode = $this->barcode_eanupc($code, 8);
-                               $arrcode['lightmL'] = 7;        // LEFT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
-                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
-                               $arrcode['nom-H'] = 21.64;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                       case 'C39E+': { // CODE 39 EXTENDED + CHECKSUM
+                               $arrcode = $this->barcode_code39($code, true, true);
+                               break;
+                       }
+                       case 'C93': { // CODE 93 - USS-93
+                               $arrcode = $this->barcode_code93($code);
+                               break;
+                       }
+                       case 'S25': { // Standard 2 of 5
+                               $arrcode = $this->barcode_s25($code, false);
+                               break;
+                       }
+                       case 'S25+': { // Standard 2 of 5 + CHECKSUM
+                               $arrcode = $this->barcode_s25($code, true);
+                               break;
+                       }
+                       case 'I25': { // Interleaved 2 of 5
+                               $arrcode = $this->barcode_i25($code, false);
+                               break;
+                       }
+                       case 'I25+': { // Interleaved 2 of 5 + CHECKSUM
+                               $arrcode = $this->barcode_i25($code, true);
+                               break;
+                       }
+                       case 'C128': { // CODE 128
+                               $arrcode = $this->barcode_c128($code, '');
+                               break;
+                       }
+                       case 'C128A': { // CODE 128 A
+                               $arrcode = $this->barcode_c128($code, 'A');
+                               break;
+                       }
+                       case 'C128B': { // CODE 128 B
+                               $arrcode = $this->barcode_c128($code, 'B');
+                               break;
+                       }
+                       case 'C128C': { // CODE 128 C
+                               $arrcode = $this->barcode_c128($code, 'C');
                                break;
                        }
                        case 'EAN2': { // 2-Digits UPC-Based Extention
                                $arrcode = $this->barcode_eanext($code, 2);
-                               $arrcode['lightmL'] = 7;        // LEFT light margin =  x X-dim (estimated)
-                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (estimated)
-                               $arrcode['sepM'] = 9;           // SEPARATION margin =  x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm)
-                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
-                               $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined
                                break;
                        }
                        case 'EAN5': { // 5-Digits UPC-Based Extention
                                $arrcode = $this->barcode_eanext($code, 5);
-                               $arrcode['lightmL'] = 7;        // LEFT light margin =  x X-dim (estimated)
-                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (estimated)
-                               $arrcode['sepM'] = 9;           // SEPARATION margin =  x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm)
-                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
-                               $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined
                                break;
                        }
-
-                       case 'IMB': { // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
-                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
-                               $bpi = 22;                              // Bars per inch
-                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
-                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
-                               $this->daft = array('D'=>2, 'A'=>2, 'F'=>3, 'T'=>1);    // Descender; Ascender; Full; Tracker bar heights
-                               $arrcode = $this->barcode_imb($code);
-                               $arrcode['nom-X'] = $xdim ;
-                               $arrcode['nom-H'] = 3.68;       // Nominal value for Height of Full bar in mm (spec.) 
-                                                                       // USPS-B-3200 Revision C = 4.623
-                                                                       // USPS-B-3200 Revision E = 3.68
-                               $arrcode['quietL'] = 3.175;     // LEFT Quiet margin =  mm (spec.)
-                               $arrcode['quietR'] = 3.175;     // RIGHT Quiet margin =  mm (spec.)
-                               $arrcode['quietTB'] = 0.711;    // TOP/BOTTOM Quiet margin =  mm (spec.)
+                       case 'EAN8': { // EAN 8
+                               $arrcode = $this->barcode_eanupc($code, 8);
                                break;
                        }
-                       case 'RM4SCC': { // RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
-                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
-                               $bpi = 22;                              // Bars per inch
-                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
-                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
-                               $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2);    // Descender; Ascender; Full; Tracker bar heights
-                               $arrcode = $this->barcode_rm4scc($code, false);
-                               $arrcode['nom-X'] = $xdim ;
-                               $arrcode['nom-H'] = 5.0;        // Nominal value for Height of Full bar in mm (spec.)
-                               $arrcode['quietL'] = 2;         // LEFT Quiet margin =  mm (spec.)
-                               $arrcode['quietR'] = 2;         // RIGHT Quiet margin =  mm (spec.)
-                               $arrcode['quietTB'] = 2;        // TOP/BOTTOM Quiet margin =  mm (spec?)
+                       case 'EAN13': { // EAN 13
+                               $arrcode = $this->barcode_eanupc($code, 13);
                                break;
                        }
-                       case 'KIX': { // KIX (Klant index - Customer index)
-                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
-                               $bpi = 22;                              // Bars per inch
-                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
-                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
-                               $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2);    // Descender; Ascender; Full; Tracker bar heights
-                               $arrcode = $this->barcode_rm4scc($code, true);
-                               $arrcode['nom-X'] = $xdim ;
-                               $arrcode['nom-H'] = 5.0;        // Nominal value for Height of Full bar in mm (? spec.)
-                               $arrcode['quietL'] = 2;         // LEFT Quiet margin =  mm (spec.)
-                               $arrcode['quietR'] = 2;         // RIGHT Quiet margin =  mm (spec.)
-                               $arrcode['quietTB'] = 2;        // TOP/BOTTOM Quiet margin =  mm (spec.)
+                       case 'UPCA': { // UPC-A
+                               $arrcode = $this->barcode_eanupc($code, 12);
                                break;
                        }
-                       case 'POSTNET': { // POSTNET
-                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
-                               $bpi = 22;                              // Bars per inch
-                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
-                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
-                               $arrcode = $this->barcode_postnet($code, false);
-                               $arrcode['nom-X'] = $xdim ;
-                               $arrcode['nom-H'] = 3.175;      // Nominal value for Height of Full bar in mm (spec.)
-                               $arrcode['quietL'] = 3.175;     // LEFT Quiet margin =  mm (?spec.)
-                               $arrcode['quietR'] = 3.175;     // RIGHT Quiet margin =  mm (?spec.)
-                               $arrcode['quietTB'] = 1.016;    // TOP/BOTTOM Quiet margin =  mm (?spec.)
+                       case 'UPCE': { // UPC-E
+                               $arrcode = $this->barcode_eanupc($code, 6);
                                break;
                        }
-                       case 'PLANET': { // PLANET
-                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
-                               $bpi = 22;                              // Bars per inch
-                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
-                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
-                               $arrcode = $this->barcode_postnet($code, true);
-                               $arrcode['nom-X'] = $xdim ;
-                               $arrcode['nom-H'] = 3.175;      // Nominal value for Height of Full bar in mm (spec.)
-                               $arrcode['quietL'] = 3.175;     // LEFT Quiet margin =  mm (?spec.)
-                               $arrcode['quietR'] = 3.175;     // RIGHT Quiet margin =  mm (?spec.)
-                               $arrcode['quietTB'] = 1.016;    // TOP/BOTTOM Quiet margin =  mm (?spec.)
+                       case 'MSI': { // MSI (Variation of Plessey code)
+                               $arrcode = $this->barcode_msi($code, false);
                                break;
                        }
-
-                       case 'C93':     {       // CODE 93 - USS-93
-                               $arrcode = $this->barcode_code93($code);
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'MSI+': { // MSI + CHECKSUM (modulo 11)
+                               $arrcode = $this->barcode_msi($code, true);
                                break;
                        }
-                       case 'CODE11': {        // CODE 11
-                               if ($pr > 0) { $this->print_ratio = $pr; }
-                               else { $this->print_ratio = 3; }                // spec: Pr= 1:2.24 - 1:3.5
-                               $arrcode = $this->barcode_code11($code);
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'POSTNET': { // POSTNET
+                               $arrcode = $this->barcode_postnet($code, false);
                                break;
                        }
-                       case 'MSI':             // MSI (Variation of Plessey code)
-                       case 'MSI+': {  // MSI + CHECKSUM (modulo 11)
-                               if (strtoupper($type)=='MSI') { $arrcode = $this->barcode_msi($code, false); }
-                               if (strtoupper($type)=='MSI+') { $arrcode = $this->barcode_msi($code, true); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 12;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 12;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'PLANET': { // PLANET
+                               $arrcode = $this->barcode_postnet($code, true);
                                break;
                        }
-                       case 'CODABAR': {       // CODABAR
-                               if ($pr > 0) { $this->print_ratio = $pr; }
-                               else { $this->print_ratio = 2.5; }              // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
-                               if (strtoupper($type)=='CODABAR') { $arrcode = $this->barcode_codabar($code); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'RMS4CC': { // RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
+                               $arrcode = $this->barcode_rms4cc($code, false);
                                break;
                        }
-                       case 'C128A':   // CODE 128 A
-                       case 'C128B':   // CODE 128 B
-                       case 'C128C':   // CODE 128 C
-                       case 'EAN128A':         // EAN 128 A
-                       case 'EAN128B':         // EAN 128 B
-                       case 'EAN128C': {       // EAN 128 C
-                               if (strtoupper($type)=='C128A') { $arrcode = $this->barcode_c128($code, 'A'); }
-                               if (strtoupper($type)=='C128B') { $arrcode = $this->barcode_c128($code, 'B'); }
-                               if (strtoupper($type)=='C128C') { $arrcode = $this->barcode_c128($code, 'C'); }
-                               if (strtoupper($type)=='EAN128A') { $arrcode = $this->barcode_c128($code, 'A', true); }
-                               if (strtoupper($type)=='EAN128B') { $arrcode = $this->barcode_c128($code, 'B', true); }
-                               if (strtoupper($type)=='EAN128C') { $arrcode = $this->barcode_c128($code, 'C', true); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'KIX': { // KIX (Klant index - Customer index)
+                               $arrcode = $this->barcode_rms4cc($code, true);
                                break;
                        }
-                       case 'C39':             // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
-                       case 'C39+':    // CODE 39 with checksum
-                       case 'C39E':    // CODE 39 EXTENDED
-                       case 'C39E+': { // CODE 39 EXTENDED + CHECKSUM
-                               if ($pr > 0) { $this->print_ratio = $pr; }
-                               else { $this->print_ratio = 2.5; }      // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
-                               $code = str_replace(chr(194).chr(160), ' ', $code);     // mPDF 5.3.95  (for utf-8 encoded)
-                               $code = str_replace(chr(160), ' ', $code);      // mPDF 5.3.95  (for win-1252)
-                               if (strtoupper($type)=='C39') { $arrcode = $this->barcode_code39($code, false, false); }
-                               if (strtoupper($type)=='C39+') { $arrcode = $this->barcode_code39($code, false, true); }
-                               if (strtoupper($type)=='C39E') { $arrcode = $this->barcode_code39($code, true, false); }
-                               if (strtoupper($type)=='C39E+') { $arrcode = $this->barcode_code39($code, true, true); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'IMB': { // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
+                               $arrcode = $this->barcode_imb($code);
                                break;
                        }
-                       case 'S25':             // Standard 2 of 5
-                       case 'S25+': {  // Standard 2 of 5 + CHECKSUM
-                               if ($pr > 0) { $this->print_ratio = $pr; }
-                               else { $this->print_ratio = 3; }                // spec: Pr=1:3/1:4.5
-                               if (strtoupper($type)=='S25') { $arrcode = $this->barcode_s25($code, false); }
-                               if (strtoupper($type)=='S25+') { $arrcode = $this->barcode_s25($code, true); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'CODABAR': { // CODABAR
+                               $arrcode = $this->barcode_codabar($code);
                                break;
                        }
-                       case 'I25':  // Interleaved 2 of 5
-                       case 'I25+': { // Interleaved 2 of 5 + CHECKSUM
-                               if ($pr > 0) { $this->print_ratio = $pr; }
-                               else { $this->print_ratio = 2.5; }      // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
-                               if (strtoupper($type)=='I25') { $arrcode = $this->barcode_i25($code, false); }
-                               if (strtoupper($type)=='I25+') { $arrcode = $this->barcode_i25($code, true); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                       case 'CODE11': { // CODE 11
+                               $arrcode = $this->barcode_code11($code);
+                               break;
+                       }
+                       case 'PHARMA': { // PHARMACODE
+                               $arrcode = $this->barcode_pharmacode($code);
                                break;
                        }
-                       case 'I25B':  // Interleaved 2 of 5 + Bearer bars
-                       case 'I25B+': { // Interleaved 2 of 5 + CHECKSUM + Bearer bars
-                               if ($pr > 0) { $this->print_ratio = $pr; }
-                               else { $this->print_ratio = 2.5; }      // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
-                               if (strtoupper($type)=='I25B') { $arrcode = $this->barcode_i25($code, false); }
-                               if (strtoupper($type)=='I25B+') { $arrcode = $this->barcode_i25($code, true); }
-                               if ($arrcode == false) { break; }
-                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
-                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
-                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
-                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
-                               $arrcode['lightTB'] = 2;        // TOP/BOTTOM light margin =  x X-dim (non-spec.) - used for bearer bars
+                       case 'PHARMA2T': { // PHARMACODE TWO-TRACKS
+                               $arrcode = $this->barcode_pharmacode2t($code);
                                break;
                        }
                        default: {
                                $this->barcode_array = false;
+                               $arrcode = false;
+                               break;
                        }
                }
                $this->barcode_array = $arrcode;
        }
-       
+
        /**
         * CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
+        * General-purpose code in very wide use world-wide
+        * @param $code (string) code to represent.
+        * @param $extended (boolean) if true uses the extended mode.
+        * @param $checksum (boolean) if true add a checksum to the code.
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_code39($code, $extended=false, $checksum=false) {
-               $chr['0'] = '111221211';
-               $chr['1'] = '211211112';
-               $chr['2'] = '112211112';
-               $chr['3'] = '212211111';
-               $chr['4'] = '111221112';
-               $chr['5'] = '211221111';
-               $chr['6'] = '112221111';
-               $chr['7'] = '111211212';
-               $chr['8'] = '211211211';
-               $chr['9'] = '112211211';
-               $chr['A'] = '211112112';
-               $chr['B'] = '112112112';
-               $chr['C'] = '212112111';
-               $chr['D'] = '111122112';
-               $chr['E'] = '211122111';
-               $chr['F'] = '112122111';
-               $chr['G'] = '111112212';
-               $chr['H'] = '211112211';
-               $chr['I'] = '112112211';
-               $chr['J'] = '111122211';
-               $chr['K'] = '211111122';
-               $chr['L'] = '112111122';
-               $chr['M'] = '212111121';
-               $chr['N'] = '111121122';
-               $chr['O'] = '211121121';
-               $chr['P'] = '112121121';
-               $chr['Q'] = '111111222';
-               $chr['R'] = '211111221';
-               $chr['S'] = '112111221';
-               $chr['T'] = '111121221';
-               $chr['U'] = '221111112';
-               $chr['V'] = '122111112';
-               $chr['W'] = '222111111';
-               $chr['X'] = '121121112';
-               $chr['Y'] = '221121111';
-               $chr['Z'] = '122121111';
-               $chr['-'] = '121111212';
-               $chr['.'] = '221111211';
-               $chr[' '] = '122111211';
-               $chr['$'] = '121212111';
-               $chr['/'] = '121211121';
-               $chr['+'] = '121112121';
-               $chr['%'] = '111212121';
-               $chr['*'] = '121121211';
-               
+               $chr['0'] = '111331311';
+               $chr['1'] = '311311113';
+               $chr['2'] = '113311113';
+               $chr['3'] = '313311111';
+               $chr['4'] = '111331113';
+               $chr['5'] = '311331111';
+               $chr['6'] = '113331111';
+               $chr['7'] = '111311313';
+               $chr['8'] = '311311311';
+               $chr['9'] = '113311311';
+               $chr['A'] = '311113113';
+               $chr['B'] = '113113113';
+               $chr['C'] = '313113111';
+               $chr['D'] = '111133113';
+               $chr['E'] = '311133111';
+               $chr['F'] = '113133111';
+               $chr['G'] = '111113313';
+               $chr['H'] = '311113311';
+               $chr['I'] = '113113311';
+               $chr['J'] = '111133311';
+               $chr['K'] = '311111133';
+               $chr['L'] = '113111133';
+               $chr['M'] = '313111131';
+               $chr['N'] = '111131133';
+               $chr['O'] = '311131131';
+               $chr['P'] = '113131131';
+               $chr['Q'] = '111111333';
+               $chr['R'] = '311111331';
+               $chr['S'] = '113111331';
+               $chr['T'] = '111131331';
+               $chr['U'] = '331111113';
+               $chr['V'] = '133111113';
+               $chr['W'] = '333111111';
+               $chr['X'] = '131131113';
+               $chr['Y'] = '331131111';
+               $chr['Z'] = '133131111';
+               $chr['-'] = '131111313';
+               $chr['.'] = '331111311';
+               $chr[' '] = '133111311';
+               $chr['$'] = '131313111';
+               $chr['/'] = '131311131';
+               $chr['+'] = '131113131';
+               $chr['%'] = '111313131';
+               $chr['*'] = '131131311';
                $code = strtoupper($code);
                if ($extended) {
                        // extended mode
@@ -384,17 +441,15 @@ class PDFBarcode {
                }
                if ($checksum) {
                        // checksum
-                       $checkdigit = $this->checksum_code39($code);
-                       $code .= $checkdigit ;
+                       $code .= $this->checksum_code39($code);
                }
                // add start and stop codes
                $code = '*'.$code.'*';
-               
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
                $k = 0;
                $clen = strlen($code);
                for ($i = 0; $i < $clen; ++$i) {
-                       $char = $code[$i];
+                       $char = $code{$i};
                        if(!isset($chr[$char])) {
                                // invalid character
                                return false;
@@ -405,24 +460,24 @@ class PDFBarcode {
                                } else {
                                        $t = false; // space
                                }
-                               $x = $chr[$char][$j];
-                               if ($x == 2) { $w = $this->print_ratio; }
-                               else { $w = 1; }
-
+                               $w = $chr[$char]{$j};
                                $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
                                $bararray['maxw'] += $w;
                                ++$k;
                        }
+                       // intercharacter gap
                        $bararray['bcode'][$k] = array('t' => false, 'w' => 1, 'h' => 1, 'p' => 0);
                        $bararray['maxw'] += 1;
                        ++$k;
                }
-               $bararray['checkdigit'] = $checkdigit;
                return $bararray;
        }
-       
+
        /**
         * Encode a string to be used for CODE 39 Extended mode.
+        * @param $code (string) code to represent.
+        * @return encoded string.
+        * @protected
         */
        protected function encode_code39_ext($code) {
                $encode = array(
@@ -461,16 +516,19 @@ class PDFBarcode {
                $code_ext = '';
                $clen = strlen($code);
                for ($i = 0 ; $i < $clen; ++$i) {
-                       if (ord($code[$i]) > 127) {
+                       if (ord($code{$i}) > 127) {
                                return false;
                        }
-                       $code_ext .= $encode[$code[$i]];
+                       $code_ext .= $encode[$code{$i}];
                }
                return $code_ext;
        }
-       
+
        /**
         * Calculate CODE 39 checksum (modulo 43).
+        * @param $code (string) code to represent.
+        * @return char checksum.
+        * @protected
         */
        protected function checksum_code39($code) {
                $chars = array(
@@ -481,66 +539,69 @@ class PDFBarcode {
                $sum = 0;
                $clen = strlen($code);
                for ($i = 0 ; $i < $clen; ++$i) {
-                       $k = array_keys($chars, $code[$i]);
+                       $k = array_keys($chars, $code{$i});
                        $sum += $k[0];
                }
                $j = ($sum % 43);
                return $chars[$j];
        }
-       
+
        /**
         * CODE 93 - USS-93
         * Compact code similar to Code 39
+        * @param $code (string) code to represent.
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_code93($code) {
-               $chr['0'] = '131112';
-               $chr['1'] = '111213';
-               $chr['2'] = '111312';
-               $chr['3'] = '111411';
-               $chr['4'] = '121113';
-               $chr['5'] = '121212';
-               $chr['6'] = '121311';
-               $chr['7'] = '111114';
-               $chr['8'] = '131211';
-               $chr['9'] = '141111';
-               $chr['A'] = '211113';
-               $chr['B'] = '211212';
-               $chr['C'] = '211311';
-               $chr['D'] = '221112';
-               $chr['E'] = '221211';
-               $chr['F'] = '231111';
-               $chr['G'] = '112113';
-               $chr['H'] = '112212';
-               $chr['I'] = '112311';
-               $chr['J'] = '122112';
-               $chr['K'] = '132111';
-               $chr['L'] = '111123';
-               $chr['M'] = '111222';
-               $chr['N'] = '111321';
-               $chr['O'] = '121122';
-               $chr['P'] = '131121';
-               $chr['Q'] = '212112';
-               $chr['R'] = '212211';
-               $chr['S'] = '211122';
-               $chr['T'] = '211221';
-               $chr['U'] = '221121';
-               $chr['V'] = '222111';
-               $chr['W'] = '112122';
-               $chr['X'] = '112221';
-               $chr['Y'] = '122121';
-               $chr['Z'] = '123111';
-               $chr['-'] = '121131';
-               $chr['.'] = '311112';
-               $chr[' '] = '311211';
-               $chr['$'] = '321111';
-               $chr['/'] = '112131';
-               $chr['+'] = '113121';
-               $chr['%'] = '211131';
+               $chr[48] = '131112'; // 0
+               $chr[49] = '111213'; // 1
+               $chr[50] = '111312'; // 2
+               $chr[51] = '111411'; // 3
+               $chr[52] = '121113'; // 4
+               $chr[53] = '121212'; // 5
+               $chr[54] = '121311'; // 6
+               $chr[55] = '111114'; // 7
+               $chr[56] = '131211'; // 8
+               $chr[57] = '141111'; // 9
+               $chr[65] = '211113'; // A
+               $chr[66] = '211212'; // B
+               $chr[67] = '211311'; // C
+               $chr[68] = '221112'; // D
+               $chr[69] = '221211'; // E
+               $chr[70] = '231111'; // F
+               $chr[71] = '112113'; // G
+               $chr[72] = '112212'; // H
+               $chr[73] = '112311'; // I
+               $chr[74] = '122112'; // J
+               $chr[75] = '132111'; // K
+               $chr[76] = '111123'; // L
+               $chr[77] = '111222'; // M
+               $chr[78] = '111321'; // N
+               $chr[79] = '121122'; // O
+               $chr[80] = '131121'; // P
+               $chr[81] = '212112'; // Q
+               $chr[82] = '212211'; // R
+               $chr[83] = '211122'; // S
+               $chr[84] = '211221'; // T
+               $chr[85] = '221121'; // U
+               $chr[86] = '222111'; // V
+               $chr[87] = '112122'; // W
+               $chr[88] = '112221'; // X
+               $chr[89] = '122121'; // Y
+               $chr[90] = '123111'; // Z
+               $chr[45] = '121131'; // -
+               $chr[46] = '311112'; // .
+               $chr[32] = '311211'; //
+               $chr[36] = '321111'; // $
+               $chr[47] = '112131'; // /
+               $chr[43] = '113121'; // +
+               $chr[37] = '211131'; // %
                $chr[128] = '121221'; // ($)
                $chr[129] = '311121'; // (/)
                $chr[130] = '122211'; // (+)
                $chr[131] = '312111'; // (%)
-               $chr['*'] = '111141';
+               $chr[42] = '111141'; // start-stop
                $code = strtoupper($code);
                $encode = array(
                        chr(0) => chr(131).'U', chr(1) => chr(128).'A', chr(2) => chr(128).'B', chr(3) => chr(128).'C',
@@ -578,21 +639,20 @@ class PDFBarcode {
                $code_ext = '';
                $clen = strlen($code);
                for ($i = 0 ; $i < $clen; ++$i) {
-                       if (ord($code[$i]) > 127) {
+                       if (ord($code{$i}) > 127) {
                                return false;
                        }
-                       $code_ext .= $encode[$code[$i]];
+                       $code_ext .= $encode[$code{$i}];
                }
                // checksum
-               $checkdigit = $this->checksum_code93($code);
-               $code .= $checkdigit ;
+               $code_ext .= $this->checksum_code93($code_ext);
                // add start and stop codes
-               $code = '*'.$code.'*';
+               $code = '*'.$code_ext.'*';
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
                $k = 0;
                $clen = strlen($code);
                for ($i = 0; $i < $clen; ++$i) {
-                       $char = $code[$i];
+                       $char = ord($code{$i});
                        if(!isset($chr[$char])) {
                                // invalid character
                                return false;
@@ -603,7 +663,7 @@ class PDFBarcode {
                                } else {
                                        $t = false; // space
                                }
-                               $w = $chr[$char][$j];
+                               $w = $chr[$char]{$j};
                                $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
                                $bararray['maxw'] += $w;
                                ++$k;
@@ -611,28 +671,31 @@ class PDFBarcode {
                }
                $bararray['bcode'][$k] = array('t' => true, 'w' => 1, 'h' => 1, 'p' => 0);
                $bararray['maxw'] += 1;
-               ++$k;           
-               $bararray['checkdigit'] = $checkdigit;
+               ++$k;
                return $bararray;
        }
-       
+
        /**
         * Calculate CODE 93 checksum (modulo 47).
+        * @param $code (string) code to represent.
+        * @return string checksum code.
+        * @protected
         */
        protected function checksum_code93($code) {
                $chars = array(
                        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                        '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', '-', '.', ' ', '$', '/', '+', '%');
+                       'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%',
+                       '<', '=', '>', '?');
                // translate special characters
-               $code = strtr($code, chr(128).chr(129).chr(130).chr(131), '$/+%');      
+               $code = strtr($code, chr(128).chr(131).chr(129).chr(130), '<=>?');
                $len = strlen($code);
                // calculate check digit C
                $p = 1;
                $check = 0;
                for ($i = ($len - 1); $i >= 0; --$i) {
-                       $k = array_keys($chars, $code[$i]);
+                       $k = array_keys($chars, $code{$i});
                        $check += ($k[0] * $p);
                        ++$p;
                        if ($p > 20) {
@@ -646,7 +709,7 @@ class PDFBarcode {
                $p = 1;
                $check = 0;
                for ($i = $len; $i >= 0; --$i) {
-                       $k = array_keys($chars, $code[$i]);
+                       $k = array_keys($chars, $code{$i});
                        $check += ($k[0] * $p);
                        ++$p;
                        if ($p > 15) {
@@ -655,21 +718,27 @@ class PDFBarcode {
                }
                $check %= 47;
                $k = $chars[$check];
-               return $c.$k;
+               $checksum = $c.$k;
+               // resto respecial characters
+               $checksum = strtr($checksum, '<=>?', chr(128).chr(131).chr(129).chr(130));
+               return $checksum;
        }
-       
+
        /**
         * Checksum for standard 2 of 5 barcodes.
+        * @param $code (string) code to process.
+        * @return int checksum.
+        * @protected
         */
        protected function checksum_s25($code) {
                $len = strlen($code);
                $sum = 0;
                for ($i = 0; $i < $len; $i+=2) {
-                       $sum += $code[$i];
+                       $sum += $code{$i};
                }
                $sum *= 3;
                for ($i = 1; $i < $len; $i+=2) {
-                       $sum += ($code[$i]);
+                       $sum += ($code{$i});
                }
                $r = $sum % 10;
                if($r > 0) {
@@ -677,11 +746,15 @@ class PDFBarcode {
                }
                return $r;
        }
-       
+
        /**
         * MSI.
-        * Variation of Plessey code, with similar applications 
+        * Variation of Plessey code, with similar applications
         * Contains digits (0 to 9) and encodes the data only in the width of bars.
+        * @param $code (string) code to represent.
+        * @param $checksum (boolean) if true add a checksum to the code (modulo 11)
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_msi($code, $checksum=false) {
                $chr['0'] = '100100100100';
@@ -706,7 +779,7 @@ class PDFBarcode {
                        $p = 2;
                        $check = 0;
                        for ($i = ($clen - 1); $i >= 0; --$i) {
-                               $check += (hexdec($code[$i]) * $p);
+                               $check += (hexdec($code{$i}) * $p);
                                ++$p;
                                if ($p > 7) {
                                        $p = 2;
@@ -717,28 +790,30 @@ class PDFBarcode {
                                $check = 11 - $check;
                        }
                        $code .= $check;
-                       $checkdigit = $check;
                }
                $seq = '110'; // left guard
                $clen = strlen($code);
                for ($i = 0; $i < $clen; ++$i) {
-                       $digit = $code[$i];
+                       $digit = $code{$i};
                        if (!isset($chr[$digit])) {
                                // invalid character
                                return false;
                        }
                        $seq .= $chr[$digit];
-               }               
+               }
                $seq .= '1001'; // right guard
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
-               $bararray['checkdigit'] = $checkdigit;
                return $this->binseq_to_array($seq, $bararray);
        }
-       
+
        /**
         * Standard 2 of 5 barcodes.
         * Used in airline ticket marking, photofinishing
         * Contains digits (0 to 9) and encodes the data only in the width of bars.
+        * @param $code (string) code to represent.
+        * @param $checksum (boolean) if true add a checksum to the code
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_s25($code, $checksum=false) {
                $chr['0'] = '10101110111010';
@@ -753,8 +828,7 @@ class PDFBarcode {
                $chr['9'] = '10111010111010';
                if ($checksum) {
                        // add checksum
-                       $checkdigit = $this->checksum_s25($code);
-                       $code .= $checkdigit ;
+                       $code .= $this->checksum_s25($code);
                }
                if((strlen($code) % 2) != 0) {
                        // add leading zero if code-length is odd
@@ -763,21 +837,25 @@ class PDFBarcode {
                $seq = '11011010';
                $clen = strlen($code);
                for ($i = 0; $i < $clen; ++$i) {
-                       $digit = $code[$i];
+                       $digit = $code{$i};
                        if (!isset($chr[$digit])) {
                                // invalid character
                                return false;
                        }
                        $seq .= $chr[$digit];
-               }               
+               }
                $seq .= '1101011';
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
-               $bararray['checkdigit'] = $checkdigit;
                return $this->binseq_to_array($seq, $bararray);
        }
-       
+
        /**
-        * Convert binary barcode sequence to barcode array
+        * Convert binary barcode sequence to TCPDF barcode array.
+        * @param $seq (string) barcode as binary sequence.
+        * @param $bararray (array) barcode array.
+        * òparam array $bararray TCPDF barcode array to fill up
+        * @return array barcode representation.
+        * @protected
         */
        protected function binseq_to_array($seq, $bararray) {
                $len = strlen($seq);
@@ -785,8 +863,8 @@ class PDFBarcode {
                $k = 0;
                for ($i = 0; $i < $len; ++$i) {
                        $w += 1;
-                       if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
-                               if ($seq[$i] == '1') {
+                       if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq{$i} != $seq{($i+1)}))) {
+                               if ($seq{$i} == '1') {
                                        $t = true; // bar
                                } else {
                                        $t = false; // space
@@ -799,11 +877,15 @@ class PDFBarcode {
                }
                return $bararray;
        }
-       
+
        /**
         * Interleaved 2 of 5 barcodes.
         * Compact numeric code, widely used in industry, air cargo
         * Contains digits (0 to 9) and encodes the data in the width of both bars and spaces.
+        * @param $code (string) code to represent.
+        * @param $checksum (boolean) if true add a checksum to the code
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_i25($code, $checksum=false) {
                $chr['0'] = '11221';
@@ -820,8 +902,7 @@ class PDFBarcode {
                $chr['Z'] = '21';
                if ($checksum) {
                        // add checksum
-                       $checkdigit = $this->checksum_s25($code);
-                       $code .= $checkdigit ;
+                       $code .= $this->checksum_s25($code);
                }
                if((strlen($code) % 2) != 0) {
                        // add leading zero if code-length is odd
@@ -829,13 +910,13 @@ class PDFBarcode {
                }
                // add start and stop codes
                $code = 'AA'.strtolower($code).'ZA';
-                       
+
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
                $k = 0;
                $clen = strlen($code);
                for ($i = 0; $i < $clen; $i = ($i + 2)) {
-                       $char_bar = $code[$i];
-                       $char_space = $code[$i+1];
+                       $char_bar = $code{$i};
+                       $char_space = $code{$i+1};
                        if((!isset($chr[$char_bar])) OR (!isset($chr[$char_space]))) {
                                // invalid character
                                return false;
@@ -844,7 +925,7 @@ class PDFBarcode {
                        $seq = '';
                        $chrlen = strlen($chr[$char_bar]);
                        for ($s = 0; $s < $chrlen; $s++){
-                               $seq .= $chr[$char_bar][$s] . $chr[$char_space][$s];
+                               $seq .= $chr[$char_bar]{$s} . $chr[$char_space]{$s};
                        }
                        $seqlen = strlen($seq);
                        for ($j = 0; $j < $seqlen; ++$j) {
@@ -853,25 +934,24 @@ class PDFBarcode {
                                } else {
                                        $t = false; // space
                                }
-                               $x = $seq[$j];
-                               if ($x == 2) { $w = $this->print_ratio; }
-                               else { $w = 1; }
-
+                               $w = $seq{$j};
                                $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
                                $bararray['maxw'] += $w;
                                ++$k;
                        }
                }
-               $bararray['checkdigit'] = $checkdigit;
                return $bararray;
        }
-       
+
        /**
-        * C128 barcodes. 
+        * C128 barcodes.
         * Very capable code, excellent density, high reliability; in very wide use world-wide
+        * @param $code (string) code to represent.
+        * @param $type (string) barcode type: A, B, C or empty for automatic switch (AUTO mode)
+        * @return array barcode representation.
+        * @protected
         */
-       protected function barcode_c128($code, $type='B', $ean=false) {
-               $code = strcode2utf($code);     // mPDF 5.7.1   Allows e.g. <barcode code="5432&#013;1068" type="C128A" />
+       protected function barcode_c128($code, $type='') {
                $chr = array(
                        '212222', /* 00 */
                        '222122', /* 01 */
@@ -977,100 +1057,271 @@ class PDFBarcode {
                        '311141', /* 101 */
                        '411131', /* 102 */
                        '211412', /* 103 START A */
-                       '211214', /* 104 START B  */
-                       '211232', /* 105 START C  */
+                       '211214', /* 104 START B */
+                       '211232', /* 105 START C */
                        '233111', /* STOP */
                        '200000'  /* END */
                );
-               $keys = '';
+               // ASCII characters for code A (ASCII 00 - 95)
+               $keys_a = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';
+               $keys_a .= chr(0).chr(1).chr(2).chr(3).chr(4).chr(5).chr(6).chr(7).chr(8).chr(9);
+               $keys_a .= chr(10).chr(11).chr(12).chr(13).chr(14).chr(15).chr(16).chr(17).chr(18).chr(19);
+               $keys_a .= chr(20).chr(21).chr(22).chr(23).chr(24).chr(25).chr(26).chr(27).chr(28).chr(29);
+               $keys_a .= chr(30).chr(31);
+               // ASCII characters for code B (ASCII 32 - 127)
+               $keys_b = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127);
+               // special codes
+               $fnc_a = array(241 => 102, 242 => 97, 243 => 96, 244 => 101);
+               $fnc_b = array(241 => 102, 242 => 97, 243 => 96, 244 => 100);
+               // array of symbols
+               $code_data = array();
+               // lenght of the code
+               $len = strlen($code);
                switch(strtoupper($type)) {
-                       case 'A': {
+                       case 'A': { // MODE A
                                $startid = 103;
-                               $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';
-                               for ($i = 0; $i < 32; ++$i) {
-                                       $keys .= chr($i);
+                               for ($i = 0; $i < $len; ++$i) {
+                                       $char = $code{$i};
+                                       $char_id = ord($char);
+                                       if (($char_id >= 241) AND ($char_id <= 244)) {
+                                               $code_data[] = $fnc_a[$char_id];
+                                       } elseif (($char_id >= 0) AND ($char_id <= 95)) {
+                                               $code_data[] = strpos($keys_a, $char);
+                                       } else {
+                                               return false;
+                                       }
                                }
                                break;
                        }
-                       case 'B': {
+                       case 'B': { // MODE B
                                $startid = 104;
-                               $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127);
+                               for ($i = 0; $i < $len; ++$i) {
+                                       $char = $code{$i};
+                                       $char_id = ord($char);
+                                       if (($char_id >= 241) AND ($char_id <= 244)) {
+                                               $code_data[] = $fnc_b[$char_id];
+                                       } elseif (($char_id >= 32) AND ($char_id <= 127)) {
+                                               $code_data[] = strpos($keys_b, $char);
+                                       } else {
+                                               return false;
+                                       }
+                               }
                                break;
                        }
-                       case 'C': {
+                       case 'C': { // MODE C
                                $startid = 105;
-                               $keys = '';
-                               if ((strlen($code) % 2) != 0) {
-                                       // The length of barcode value must be even ($code). You must pad the number with zeros
-                                       return false;
+                               if (ord($code[0]) == 241) {
+                                       $code_data[] = 102;
+                                       $code = substr($code, 1);
+                                       --$len;
                                }
-                               for ($i = 0; $i <= 99; ++$i) {
-                                       $keys .= chr($i);
+                               if (($len % 2) != 0) {
+                                       // the length must be even
+                                       return false;
                                }
-                               $new_code = '';
-                               $hclen = (strlen($code) / 2);
-                               for ($i = 0; $i < $hclen; ++$i) {
-                                       $new_code .= chr(intval($code{(2 * $i)}.$code{(2 * $i + 1)}));
+                               for ($i = 0; $i < $len; $i+=2) {
+                                       $chrnum = $code{$i}.$code{$i+1};
+                                       if (preg_match('/([0-9]{2})/', $chrnum) > 0) {
+                                               $code_data[] = intval($chrnum);
+                                       } else {
+                                               return false;
+                                       }
                                }
-                               $code = $new_code;
                                break;
                        }
-                       default: {
-                               return false;
+                       default: { // MODE AUTO
+                               // split code into sequences
+                               $sequence = array();
+                               // get numeric sequences (if any)
+                               $numseq = array();
+                               preg_match_all('/([0-9]{4,})/', $code, $numseq, PREG_OFFSET_CAPTURE);
+                               if (isset($numseq[1]) AND !empty($numseq[1])) {
+                                       $end_offset = 0;
+                                       foreach ($numseq[1] as $val) {
+                                               $offset = $val[1];
+                                               if ($offset > $end_offset) {
+                                                       // non numeric sequence
+                                                       $sequence = array_merge($sequence, $this->get128ABsequence(substr($code, $end_offset, ($offset - $end_offset))));
+                                               }
+                                               // numeric sequence
+                                               $slen = strlen($val[0]);
+                                               if (($slen % 2) != 0) {
+                                                       // the length must be even
+                                                       --$slen;
+                                               }
+                                               $sequence[] = array('C', substr($code, $offset, $slen), $slen);
+                                               $end_offset = $offset + $slen;
+                                       }
+                                       if ($end_offset < $len) {
+                                               $sequence = array_merge($sequence, $this->get128ABsequence(substr($code, $end_offset)));
+                                       }
+                               } else {
+                                       // text code (non C mode)
+                                       $sequence = array_merge($sequence, $this->get128ABsequence($code));
+                               }
+                               // process the sequence
+                               foreach ($sequence as $key => $seq) {
+                                       switch($seq[0]) {
+                                               case 'A': {
+                                                       if ($key == 0) {
+                                                               $startid = 103;
+                                                       } elseif ($sequence[($key - 1)][0] != 'A') {
+                                                               if (($seq[2] == 1) AND ($key > 0) AND ($sequence[($key - 1)][0] == 'B') AND (!isset($sequence[($key - 1)][3]))) {
+                                                                       // single character shift
+                                                                       $code_data[] = 98;
+                                                                       // mark shift
+                                                                       $sequence[$key][3] = true;
+                                                               } elseif (!isset($sequence[($key - 1)][3])) {
+                                                                       $code_data[] = 101;
+                                                               }
+                                                       }
+                                                       for ($i = 0; $i < $seq[2]; ++$i) {
+                                                               $char = $seq[1]{$i};
+                                                               $char_id = ord($char);
+                                                               if (($char_id >= 241) AND ($char_id <= 244)) {
+                                                                       $code_data[] = $fnc_a[$char_id];
+                                                               } else {
+                                                                       $code_data[] = strpos($keys_a, $char);
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 'B': {
+                                                       if ($key == 0) {
+                                                               $tmpchr = ord($seq[1][0]);
+                                                               if (($seq[2] == 1) AND ($tmpchr >= 241) AND ($tmpchr <= 244) AND isset($sequence[($key + 1)]) AND ($sequence[($key + 1)][0] != 'B')) {
+                                                                       switch ($sequence[($key + 1)][0]) {
+                                                                               case 'A': {
+                                                                                       $startid = 103;
+                                                                                       $sequence[$key][0] = 'A';
+                                                                                       $code_data[] = $fnc_a[$tmpchr];
+                                                                                       break;
+                                                                               }
+                                                                               case 'C': {
+                                                                                       $startid = 105;
+                                                                                       $sequence[$key][0] = 'C';
+                                                                                       $code_data[] = $fnc_a[$tmpchr];
+                                                                                       break;
+                                                                               }
+                                                                       }
+                                                                       break;
+                                                               } else {
+                                                                       $startid = 104;
+                                                               }
+                                                       } elseif ($sequence[($key - 1)][0] != 'B') {
+                                                               if (($seq[2] == 1) AND ($key > 0) AND ($sequence[($key - 1)][0] == 'A') AND (!isset($sequence[($key - 1)][3]))) {
+                                                                       // single character shift
+                                                                       $code_data[] = 98;
+                                                                       // mark shift
+                                                                       $sequence[$key][3] = true;
+                                                               } elseif (!isset($sequence[($key - 1)][3])) {
+                                                                       $code_data[] = 100;
+                                                               }
+                                                       }
+                                                       for ($i = 0; $i < $seq[2]; ++$i) {
+                                                               $char = $seq[1]{$i};
+                                                               $char_id = ord($char);
+                                                               if (($char_id >= 241) AND ($char_id <= 244)) {
+                                                                       $code_data[] = $fnc_b[$char_id];
+                                                               } else {
+                                                                       $code_data[] = strpos($keys_b, $char);
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               case 'C': {
+                                                       if ($key == 0) {
+                                                               $startid = 105;
+                                                       } elseif ($sequence[($key - 1)][0] != 'C') {
+                                                               $code_data[] = 99;
+                                                       }
+                                                       for ($i = 0; $i < $seq[2]; $i+=2) {
+                                                               $chrnum = $seq[1]{$i}.$seq[1]{$i+1};
+                                                               $code_data[] = intval($chrnum);
+                                                       }
+                                                       break;
+                                               }
+                                       }
+                               }
                        }
                }
-
                // calculate check character
                $sum = $startid;
-               if ($ean) { $code = chr(102) . $code; } // Add FNC 1 - which identifies it as EAN-128
-               $clen = strlen($code);
-               for ($i = 0; $i < $clen; ++$i) {
-                       if ($ean && $i==0) { $sum += 102; }
-                       else { $sum +=  (strpos($keys, $code[$i]) * ($i+1)); }
+               foreach ($code_data as $key => $val) {
+                       $sum += ($val * ($key + 1));
                }
-               $check = ($sum % 103);
-               $checkdigit = $check ;
-               // add start, check and stop codes
-               $code = chr($startid).$code.chr($check).chr(106).chr(107);
+               // add check character
+               $code_data[] = ($sum % 103);
+               // add stop sequence
+               $code_data[] = 106;
+               $code_data[] = 107;
+               // add start code at the beginning
+               array_unshift($code_data, $startid);
+               // build barcode array
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
-               $k = 0;
-               $len = strlen($code);
-               for ($i = 0; $i < $len; ++$i) {
-                       $ck = strpos($keys, $code[$i]);
-                       if (($i == 0) || ($ean && $i==1) | ($i > ($len-4))) {
-                               $char_num = ord($code[$i]);
-                               $seq = $chr[$char_num];
-                       } elseif(($ck >= 0) AND isset($chr[$ck])) {
-                                       $seq = $chr[$ck];
-                       } else {
-                               // invalid character
-                               return false;
-                       }
+               foreach ($code_data as $val) {
+                       $seq = $chr[$val];
                        for ($j = 0; $j < 6; ++$j) {
                                if (($j % 2) == 0) {
                                        $t = true; // bar
                                } else {
                                        $t = false; // space
                                }
-                               $w = $seq[$j];
-                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $w = $seq{$j};
+                               $bararray['bcode'][] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
                                $bararray['maxw'] += $w;
-                               ++$k;
                        }
                }
-               $bararray['checkdigit'] = $checkdigit;
-               return $bararray;               
+               return $bararray;
+       }
+
+       /**
+        * Split text code in A/B sequence for 128 code
+        * @param $code (string) code to split.
+        * @return array sequence
+        * @protected
+        */
+       protected function get128ABsequence($code) {
+               $len = strlen($code);
+               $sequence = array();
+               // get A sequences (if any)
+               $numseq = array();
+               preg_match_all('/([\0-\31])/', $code, $numseq, PREG_OFFSET_CAPTURE);
+               if (isset($numseq[1]) AND !empty($numseq[1])) {
+                       $end_offset = 0;
+                       foreach ($numseq[1] as $val) {
+                               $offset = $val[1];
+                               if ($offset > $end_offset) {
+                                       // B sequence
+                                       $sequence[] = array('B', substr($code, $end_offset, ($offset - $end_offset)), ($offset - $end_offset));
+                               }
+                               // A sequence
+                               $slen = strlen($val[0]);
+                               $sequence[] = array('A', substr($code, $offset, $slen), $slen);
+                               $end_offset = $offset + $slen;
+                       }
+                       if ($end_offset < $len) {
+                               $sequence[] = array('B', substr($code, $end_offset), ($len - $end_offset));
+                       }
+               } else {
+                       // only B sequence
+                       $sequence[] = array('B', $code, $len);
+               }
+               return $sequence;
        }
-       
+
        /**
         * EAN13 and UPC-A barcodes.
         * EAN13: European Article Numbering international retail product code
         * UPC-A: Universal product code seen on almost all retail products in the USA and Canada
         * UPC-E: Short version of UPC symbol
+        * @param $code (string) code to represent.
+        * @param $len (string) barcode type: 6 = UPC-E, 8 = EAN8, 13 = EAN13, 12 = UPC-A
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_eanupc($code, $len=13) {
                $upce = false;
-               $checkdigit = false;
                if ($len == 6) {
                        $len = 12; // UPC-A
                        $upce = true; // UPC-E mode
@@ -1082,14 +1333,14 @@ class PDFBarcode {
                // calculate check digit
                $sum_a = 0;
                for ($i = 1; $i < $data_len; $i+=2) {
-                       $sum_a += $code[$i];
+                       $sum_a += $code{$i};
                }
                if ($len > 12) {
                        $sum_a *= 3;
                }
                $sum_b = 0;
                for ($i = 0; $i < $data_len; $i+=2) {
-                       $sum_b += ($code[$i]);
+                       $sum_b += ($code{$i});
                }
                if ($len < 13) {
                        $sum_b *= 3;
@@ -1101,8 +1352,7 @@ class PDFBarcode {
                if ($code_len == $data_len) {
                        // add check digit
                        $code .= $r;
-                       $checkdigit = $r;
-               } elseif ($r !== intval($code[$data_len])) {
+               } elseif ($r !== intval($code{$data_len})) {
                        // wrong checkdigit
                        return false;
                }
@@ -1114,32 +1364,25 @@ class PDFBarcode {
                if ($upce) {
                        // convert UPC-A to UPC-E
                        $tmp = substr($code, 4, 3);
-                       $prod_code = intval(substr($code,7,5)); // product code
-                       $invalid_upce = false;
                        if (($tmp == '000') OR ($tmp == '100') OR ($tmp == '200')) {
                                // manufacturer code ends in 000, 100, or 200
                                $upce_code = substr($code, 2, 2).substr($code, 9, 3).substr($code, 4, 1);
-                               if ($prod_code > 999) { $invalid_upce = true; }
                        } else {
                                $tmp = substr($code, 5, 2);
                                if ($tmp == '00') {
                                        // manufacturer code ends in 00
                                        $upce_code = substr($code, 2, 3).substr($code, 10, 2).'3';
-                                       if ($prod_code > 99) { $invalid_upce = true; }
                                } else {
                                        $tmp = substr($code, 6, 1);
                                        if ($tmp == '0') {
                                                // manufacturer code ends in 0
                                                $upce_code = substr($code, 2, 4).substr($code, 11, 1).'4';
-                                               if ($prod_code > 9) { $invalid_upce = true; }
                                        } else {
                                                // manufacturer code does not end in zero
                                                $upce_code = substr($code, 2, 5).substr($code, 11, 1);
-                                               if ($prod_code > 9) { $invalid_upce = true; }
                                        }
                                }
                        }
-                       if ($invalid_upce) { die("Error - UPC-A cannot produce a valid UPC-E barcode"); }       // Error generating a UPCE code
                }
                //Convert digits to bars
                $codes = array(
@@ -1218,27 +1461,27 @@ class PDFBarcode {
                $seq = '101'; // left guard bar
                if ($upce) {
                        $bararray = array('code' => $upce_code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
-                       $p = $upce_parities[$code{1}][$r];
+                       $p = $upce_parities[$code[1]][$r];
                        for ($i = 0; $i < 6; ++$i) {
-                               $seq .= $codes[$p[$i]][$upce_code[$i]];
+                               $seq .= $codes[$p[$i]][$upce_code{$i}];
                        }
                        $seq .= '010101'; // right guard bar
                } else {
                        $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
-                       $half_len = ceil($len / 2);
+                       $half_len = intval(ceil($len / 2));
                        if ($len == 8) {
                                for ($i = 0; $i < $half_len; ++$i) {
-                                       $seq .= $codes['A'][$code[$i]];
+                                       $seq .= $codes['A'][$code{$i}];
                                }
                        } else {
-                               $p = $parities[$code{0}];
+                               $p = $parities[$code[0]];
                                for ($i = 1; $i < $half_len; ++$i) {
-                                       $seq .= $codes[$p[$i-1]][$code[$i]];
+                                       $seq .= $codes[$p[$i-1]][$code{$i}];
                                }
                        }
                        $seq .= '01010'; // center guard bar
                        for ($i = $half_len; $i < $len; ++$i) {
-                               $seq .= $codes['C'][$code[$i]];
+                               $seq .= $codes['C'][$code{$i}];
                        }
                        $seq .= '101'; // right guard bar
                }
@@ -1246,8 +1489,8 @@ class PDFBarcode {
                $w = 0;
                for ($i = 0; $i < $clen; ++$i) {
                        $w += 1;
-                       if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
-                               if ($seq[$i] == '1') {
+                       if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq{$i} != $seq{($i+1)}))) {
+                               if ($seq{$i} == '1') {
                                        $t = true; // bar
                                } else {
                                        $t = false; // space
@@ -1258,14 +1501,17 @@ class PDFBarcode {
                                $w = 0;
                        }
                }
-               $bararray['checkdigit'] = $checkdigit;
                return $bararray;
        }
-       
+
        /**
         * UPC-Based Extentions
         * 2-Digit Ext.: Used to indicate magazines and newspaper issue numbers
         * 5-Digit Ext.: Used to mark suggested retail price of books
+        * @param $code (string) code to represent.
+        * @param $len (string) barcode type: 2 = 2-Digit, 5 = 5-Digit
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_eanext($code, $len=5) {
                //Padding
@@ -1274,7 +1520,7 @@ class PDFBarcode {
                if ($len == 2) {
                        $r = $code % 4;
                } elseif ($len == 5) {
-                       $r = (3 * ($code{0} + $code{2} + $code{4})) + (9 * ($code{1} + $code{3}));
+                       $r = (3 * ($code[0] + $code[2] + $code[4])) + (9 * ($code[1] + $code[3]));
                        $r %= 10;
                } else {
                        return false;
@@ -1322,21 +1568,25 @@ class PDFBarcode {
                        '7'=>array('A','B','A','B','A'),
                        '8'=>array('A','B','A','A','B'),
                        '9'=>array('A','A','B','A','B')
-               );      
+               );
                $p = $parities[$len][$r];
                $seq = '1011'; // left guard bar
-               $seq .= $codes[$p[0]][$code{0}];
+               $seq .= $codes[$p[0]][$code[0]];
                for ($i = 1; $i < $len; ++$i) {
                        $seq .= '01'; // separator
-                       $seq .= $codes[$p[$i]][$code[$i]];
+                       $seq .= $codes[$p[$i]][$code{$i}];
                }
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
                return $this->binseq_to_array($seq, $bararray);
        }
-       
+
        /**
         * POSTNET and PLANET barcodes.
         * Used by U.S. Postal Service for automated mail sorting
+        * @param $code (string) zip code to represent. Must be a string containing a zip code of the form DDDDD or DDDDD-DDDD.
+        * @param $planet (boolean) if true print the PLANET barcode, otherwise print POSTNET
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_postnet($code, $planet=false) {
                // bar lenght
@@ -1367,7 +1617,7 @@ class PDFBarcode {
                                9 => Array(2,1,2,1,1)
                        );
                }
-               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 5, 'bcode' => array());
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 2, 'bcode' => array());
                $k = 0;
                $code = str_replace('-', '', $code);
                $code = str_replace(' ', '', $code);
@@ -1375,48 +1625,43 @@ class PDFBarcode {
                // calculate checksum
                $sum = 0;
                for ($i = 0; $i < $len; ++$i) {
-                       $sum += intval($code[$i]);
+                       $sum += intval($code{$i});
                }
                $chkd = ($sum % 10);
                if($chkd > 0) {
                        $chkd = (10 - $chkd);
                }
                $code .= $chkd;
-               $checkdigit = $chkd;
                $len = strlen($code);
                // start bar
-               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0);
-               $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 5, 'p' => 0);
-               $bararray['maxw'] += (1 + $this->gapwidth );
+               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0);
+               $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
+               $bararray['maxw'] += 2;
                for ($i = 0; $i < $len; ++$i) {
                        for ($j = 0; $j < 5; ++$j) {
-                               $bh = $barlen[$code[$i]][$j];
-                               if ($bh == 2) {
-                                       $h = 5; 
-                                       $p = 0;
-                               }
-                               else {
-                                       $h = 2; 
-                                       $p = 3;
-                               }
+                               $h = $barlen[$code{$i}][$j];
+                               $p = floor(1 / $h);
                                $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
-                               $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 2, 'p' => 0);
-                               $bararray['maxw'] += (1 + $this->gapwidth );
+                               $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
+                               $bararray['maxw'] += 2;
                        }
                }
                // end bar
-               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0);
+               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0);
                $bararray['maxw'] += 1;
-               $bararray['checkdigit'] = $checkdigit;
                return $bararray;
        }
-       
+
        /**
-        * RM4SCC - CBC - KIX
-        * RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - KIX (Klant index - Customer index)
+        * RMS4CC - CBC - KIX
+        * RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - KIX (Klant index - Customer index)
         * RM4SCC is the name of the barcode symbology used by the Royal Mail for its Cleanmail service.
+        * @param $code (string) code to print
+        * @param $kix (boolean) if true prints the KIX variation (doesn't use the start and end symbols, and the checksum) - in this case the house number must be sufficed with an X and placed at the end of the code.
+        * @return array barcode representation.
+        * @protected
         */
-       protected function barcode_rm4scc($code, $kix=false) {
+       protected function barcode_rms4cc($code, $kix=false) {
                $notkix = !$kix;
                // bar mode
                // 1 = pos 1, length 2
@@ -1459,11 +1704,11 @@ class PDFBarcode {
                        'W' => array(1,2,4,3),
                        'X' => array(2,1,3,4),
                        'Y' => array(2,1,4,3),
-                       'Z' => array(2,2,3,3)           
+                       'Z' => array(2,2,3,3)
                );
                $code = strtoupper($code);
                $len = strlen($code);
-               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array());
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 3, 'bcode' => array());
                if ($notkix) {
                        // table for checksum calculation (row,col)
                        $checktable = array(
@@ -1507,68 +1752,65 @@ class PDFBarcode {
                        $row = 0;
                        $col = 0;
                        for ($i = 0; $i < $len; ++$i) {
-                               $row += $checktable[$code[$i]][0];
-                               $col += $checktable[$code[$i]][1];
+                               $row += $checktable[$code{$i}][0];
+                               $col += $checktable[$code{$i}][1];
                        }
                        $row %= 6;
                        $col %= 6;
                        $chk = array_keys($checktable, array($row,$col));
                        $code .= $chk[0];
-                       $bararray['checkdigit'] = $chk[0];
                        ++$len;
                }
                $k = 0;
                if ($notkix) {
                        // start bar
-                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['A'] , 'p' => 0);
-                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => $this->daft['A'] , 'p' => 0);
-                       $bararray['maxw'] += (1 + $this->gapwidth) ;
+                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0);
+                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
+                       $bararray['maxw'] += 2;
                }
                for ($i = 0; $i < $len; ++$i) {
                        for ($j = 0; $j < 4; ++$j) {
-                               switch ($barmode[$code[$i]][$j]) {
+                               switch ($barmode[$code{$i}][$j]) {
                                        case 1: {
-                                               // ascender (A)
                                                $p = 0;
-                                               $h = $this->daft['A'];
+                                               $h = 2;
                                                break;
                                        }
                                        case 2: {
-                                               // full bar (F)
                                                $p = 0;
-                                               $h = $this->daft['F'];
+                                               $h = 3;
                                                break;
                                        }
                                        case 3: {
-                                               // tracker (T)
-                                               $p = ($this->daft['F'] - $this->daft['T'])/2;
-                                               $h = $this->daft['T'];
+                                               $p = 1;
+                                               $h = 1;
                                                break;
                                        }
                                        case 4: {
-                                               // descender (D)
-                                               $p = $this->daft['F'] - $this->daft['D'];
-                                               $h = $this->daft['D'];
+                                               $p = 1;
+                                               $h = 2;
                                                break;
                                        }
                                }
-
                                $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
-                               $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth, 'h' => 2, 'p' => 0);
-                               $bararray['maxw'] += (1 + $this->gapwidth) ;
+                               $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
+                               $bararray['maxw'] += 2;
                        }
                }
                if ($notkix) {
                        // stop bar
-                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['F'], 'p' => 0);
+                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 3, 'p' => 0);
                        $bararray['maxw'] += 1;
                }
                return $bararray;
        }
-       
+
        /**
         * CODABAR barcodes.
         * Older code often used in library systems, sometimes in blood banks
+        * @param $code (string) code to represent.
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_codabar($code) {
                $chr = array(
@@ -1597,22 +1839,20 @@ class PDFBarcode {
                $k = 0;
                $w = 0;
                $seq = '';
-               $code = strtoupper($code);
+               $code = 'A'.strtoupper($code).'A';
                $len = strlen($code);
                for ($i = 0; $i < $len; ++$i) {
-                       if (!isset($chr[$code[$i]])) {
+                       if (!isset($chr[$code{$i}])) {
                                return false;
                        }
-                       $seq = $chr[$code[$i]];
+                       $seq = $chr[$code{$i}];
                        for ($j = 0; $j < 8; ++$j) {
                                if (($j % 2) == 0) {
                                        $t = true; // bar
                                } else {
                                        $t = false; // space
                                }
-                               $x = $seq[$j];
-                               if ($x == 2) { $w = $this->print_ratio; }
-                               else { $w = 1; }
+                               $w = $seq{$j};
                                $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
                                $bararray['maxw'] += $w;
                                ++$k;
@@ -1620,10 +1860,13 @@ class PDFBarcode {
                }
                return $bararray;
        }
-       
+
        /**
         * CODE11 barcodes.
         * Used primarily for labeling telecommunications equipment
+        * @param $code (string) code to represent.
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_code11($code) {
                $chr = array(
@@ -1640,7 +1883,6 @@ class PDFBarcode {
                        '-' => '112111',
                        'S' => '112211'
                );
-               
                $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
                $k = 0;
                $w = 0;
@@ -1650,7 +1892,7 @@ class PDFBarcode {
                $p = 1;
                $check = 0;
                for ($i = ($len - 1); $i >= 0; --$i) {
-                       $digit = $code[$i];
+                       $digit = $code{$i};
                        if ($digit == '-') {
                                $dval = 10;
                        } else {
@@ -1665,15 +1907,14 @@ class PDFBarcode {
                $check %= 11;
                if ($check == 10) {
                        $check = '-';
-               } 
+               }
                $code .= $check;
-               $checkdigit = $check;
                if ($len > 10) {
                        // calculate check digit K
                        $p = 1;
                        $check = 0;
                        for ($i = $len; $i >= 0; --$i) {
-                               $digit = $code[$i];
+                               $digit = $code{$i};
                                if ($digit == '-') {
                                        $dval = 10;
                                } else {
@@ -1687,40 +1928,125 @@ class PDFBarcode {
                        }
                        $check %= 11;
                        $code .= $check;
-                       $checkdigit .= $check;
                        ++$len;
                }
                $code = 'S'.$code.'S';
                $len += 3;
                for ($i = 0; $i < $len; ++$i) {
-                       if (!isset($chr[$code[$i]])) {
+                       if (!isset($chr[$code{$i}])) {
                                return false;
                        }
-                       $seq = $chr[$code[$i]];
+                       $seq = $chr[$code{$i}];
                        for ($j = 0; $j < 6; ++$j) {
                                if (($j % 2) == 0) {
                                        $t = true; // bar
                                } else {
                                        $t = false; // space
                                }
-                               $x = $seq[$j];
-                               if ($x == 2) { $w = $this->print_ratio; }
-                               else { $w = 1; }
+                               $w = $seq{$j};
                                $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
                                $bararray['maxw'] += $w;
                                ++$k;
                        }
                }
-               $bararray['checkdigit'] = $checkdigit;
                return $bararray;
        }
-       
-       
+
+       /**
+        * Pharmacode
+        * Contains digits (0 to 9)
+        * @param $code (string) code to represent.
+        * @return array barcode representation.
+        * @protected
+        */
+       protected function barcode_pharmacode($code) {
+               $seq = '';
+               $code = intval($code);
+               while ($code > 0) {
+                       if (($code % 2) == 0) {
+                               $seq .= '11100';
+                               $code -= 2;
+                       } else {
+                               $seq .= '100';
+                               $code -= 1;
+                       }
+                       $code /= 2;
+               }
+               $seq = substr($seq, 0, -2);
+               $seq = strrev($seq);
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               return $this->binseq_to_array($seq, $bararray);
+       }
+
+       /**
+        * Pharmacode two-track
+        * Contains digits (0 to 9)
+        * @param $code (string) code to represent.
+        * @return array barcode representation.
+        * @protected
+        */
+       protected function barcode_pharmacode2t($code) {
+               $seq = '';
+               $code = intval($code);
+               do {
+                       switch ($code % 3) {
+                               case 0: {
+                                       $seq .= '3';
+                                       $code = ($code - 3) / 3;
+                                       break;
+                               }
+                               case 1: {
+                                       $seq .= '1';
+                                       $code = ($code - 1) / 3;
+                                       break;
+                               }
+                               case 2: {
+                                       $seq .= '2';
+                                       $code = ($code - 2) / 3;
+                                       break;
+                               }
+                       }
+               } while($code != 0);
+               $seq = strrev($seq);
+               $k = 0;
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 2, 'bcode' => array());
+               $len = strlen($seq);
+               for ($i = 0; $i < $len; ++$i) {
+                       switch ($seq{$i}) {
+                               case '1': {
+                                       $p = 1;
+                                       $h = 1;
+                                       break;
+                               }
+                               case '2': {
+                                       $p = 0;
+                                       $h = 1;
+                                       break;
+                               }
+                               case '3': {
+                                       $p = 0;
+                                       $h = 2;
+                                       break;
+                               }
+                       }
+                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
+                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
+                       $bararray['maxw'] += 2;
+               }
+               unset($bararray['bcode'][($k - 1)]);
+               --$bararray['maxw'];
+               return $bararray;
+       }
+
+
        /**
         * IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
-        * (requires PHP bcmath extension) 
+        * (requires PHP bcmath extension)
         * Intelligent Mail barcode is a 65-bar code for use on mail in the United States.
-        * The fields are described as follows:<ul><li>The Barcode Identifier shall be assigned by USPS to encode the presort identification that is currently printed in human readable form on the optional endorsement line (OEL) as well as for future USPS use. This shall be two digits, with the second digit in the range of 0-4. The allowable encoding ranges shall be 00-04, 10-14, 20-24, 30-34, 40-44, 50-54, 60-64, 70-74, 80-84, and 90-94.</li><li>The Service Type Identifier shall be assigned by USPS for any combination of services requested on the mailpiece. The allowable encoding range shall be 000-999. Each 3-digit value shall correspond to a particular mail class with a particular combination of service(s). Each service program, such as OneCode Confirm and OneCode ACS, shall provide the list of Service Type Identifier values.</li><li>The Mailer or Customer Identifier shall be assigned by USPS as a unique, 6 or 9 digit number that identifies a business entity. The allowable encoding range for the 6 digit Mailer ID shall be 000000- 899999, while the allowable encoding range for the 9 digit Mailer ID shall be 900000000-999999999.</li><li>The Serial or Sequence Number shall be assigned by the mailer for uniquely identifying and tracking mailpieces. The allowable encoding range shall be 000000000-999999999 when used with a 6 digit Mailer ID and 000000-999999 when used with a 9 digit Mailer ID. e. The Delivery Point ZIP Code shall be assigned by the mailer for routing the mailpiece. This shall replace POSTNET for routing the mailpiece to its final delivery point. The length may be 0, 5, 9, or 11 digits. The allowable encoding ranges shall be no ZIP Code, 00000-99999,  000000000-999999999, and 00000000000-99999999999.</li></ul>
+        * The fields are described as follows:<ul><li>The Barcode Identifier shall be assigned by USPS to encode the presort identification that is currently printed in human readable form on the optional endorsement line (OEL) as well as for future USPS use. This shall be two digits, with the second digit in the range of 0–4. The allowable encoding ranges shall be 00–04, 10–14, 20–24, 30–34, 40–44, 50–54, 60–64, 70–74, 80–84, and 90–94.</li><li>The Service Type Identifier shall be assigned by USPS for any combination of services requested on the mailpiece. The allowable encoding range shall be 000http://it2.php.net/manual/en/function.dechex.php–999. Each 3-digit value shall correspond to a particular mail class with a particular combination of service(s). Each service program, such as OneCode Confirm and OneCode ACS, shall provide the list of Service Type Identifier values.</li><li>The Mailer or Customer Identifier shall be assigned by USPS as a unique, 6 or 9 digit number that identifies a business entity. The allowable encoding range for the 6 digit Mailer ID shall be 000000- 899999, while the allowable encoding range for the 9 digit Mailer ID shall be 900000000-999999999.</li><li>The Serial or Sequence Number shall be assigned by the mailer for uniquely identifying and tracking mailpieces. The allowable encoding range shall be 000000000–999999999 when used with a 6 digit Mailer ID and 000000-999999 when used with a 9 digit Mailer ID. e. The Delivery Point ZIP Code shall be assigned by the mailer for routing the mailpiece. This shall replace POSTNET for routing the mailpiece to its final delivery point. The length may be 0, 5, 9, or 11 digits. The allowable encoding ranges shall be no ZIP Code, 00000–99999,  000000000–999999999, and 00000000000–99999999999.</li></ul>
+        * @param $code (string) code to print, separate the ZIP (routing code) from the rest using a minus char '-' (BarcodeID_ServiceTypeID_MailerID_SerialNumber-RoutingCode)
+        * @return array barcode representation.
+        * @protected
         */
        protected function barcode_imb($code) {
                $asc_chr = array(4,0,2,6,3,5,1,9,8,7,1,2,0,6,4,8,2,9,5,3,0,1,3,7,4,6,8,9,2,0,5,1,9,4,3,8,6,7,1,2,4,3,9,5,7,8,3,0,2,1,4,0,9,1,7,0,2,4,6,3,7,1,9,5,8);
@@ -1758,9 +2084,9 @@ class PDFBarcode {
                        }
                }
                $binary_code = bcmul($binary_code, 10);
-               $binary_code = bcadd($binary_code, $tracking_number{0});
+               $binary_code = bcadd($binary_code, $tracking_number[0]);
                $binary_code = bcmul($binary_code, 5);
-               $binary_code = bcadd($binary_code, $tracking_number{1});
+               $binary_code = bcadd($binary_code, $tracking_number[1]);
                $binary_code .= substr($tracking_number, 2, 18);
                // convert to hexadecimal
                $binary_code = $this->dec_to_hex($binary_code);
@@ -1810,40 +2136,41 @@ class PDFBarcode {
                $characters = array_reverse($characters);
                // build bars
                $k = 0;
-               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array());
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 3, 'bcode' => array());
                for ($i = 0; $i < 65; ++$i) {
                        $asc = (($characters[$asc_chr[$i]] & pow(2, $asc_pos[$i])) > 0);
                        $dsc = (($characters[$dsc_chr[$i]] & pow(2, $dsc_pos[$i])) > 0);
                        if ($asc AND $dsc) {
                                // full bar (F)
                                $p = 0;
-                               $h = $this->daft['F'];
+                               $h = 3;
                        } elseif ($asc) {
                                // ascender (A)
                                $p = 0;
-                               $h = $this->daft['A'];
+                               $h = 2;
                        } elseif ($dsc) {
                                // descender (D)
-                               $p = $this->daft['F'] - $this->daft['D'];
-                               $h = $this->daft['D'];
+                               $p = 1;
+                               $h = 2;
                        } else {
                                // tracker (T)
-                               $p = ($this->daft['F'] - $this->daft['T'])/2;
-                               $h = $this->daft['T'];
+                               $p = 1;
+                               $h = 1;
                        }
                        $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
-                       // Gap
-                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 1, 'p' => 0);
-                       $bararray['maxw'] += (1 + $this->gapwidth );
+                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0);
+                       $bararray['maxw'] += 2;
                }
                unset($bararray['bcode'][($k - 1)]);
-               $bararray['maxw'] -= $this->gapwidth ;
+               --$bararray['maxw'];
                return $bararray;
        }
-       
+
        /**
         * Convert large integer number to hexadecimal representation.
-        * (requires PHP bcmath extension) 
+        * (requires PHP bcmath extension)
+        * @param $number (string) number to convert specified as a string
+        * @return string hexadecimal representation
         */
        public function dec_to_hex($number) {
                $i = 0;
@@ -1862,24 +2189,29 @@ class PDFBarcode {
                $hex = array_reverse($hex);
                return implode($hex);
        }
-       
+
        /**
         * Convert large hexadecimal number to decimal representation (string).
-        * (requires PHP bcmath extension) 
+        * (requires PHP bcmath extension)
+        * @param $hex (string) hexadecimal number to convert specified as a string
+        * @return string hexadecimal representation
         */
        public function hex_to_dec($hex) {
                $dec = 0;
                $bitval = 1;
                $len = strlen($hex);
                for($pos = ($len - 1); $pos >= 0; --$pos) {
-                       $dec = bcadd($dec, bcmul(hexdec($hex[$pos]), $bitval));
+                       $dec = bcadd($dec, bcmul(hexdec($hex{$pos}), $bitval));
                        $bitval = bcmul($bitval, 16);
                }
                return $dec;
-       }       
-       
+       }
+
        /**
         * Intelligent Mail Barcode calculation of Frame Check Sequence
+        * @param $code_arr (string) array of hexadecimal values (13 bytes holding 102 bits right justified).
+        * @return int 11 bit Frame Check Sequence as integer (decimal base)
+        * @protected
         */
        protected function imb_crc11fcs($code_arr) {
                $genpoly = 0x0F35; // generator polynomial
@@ -1908,11 +2240,14 @@ class PDFBarcode {
                                $data <<= 1;
                        }
                }
-               return $fcs;            
+               return $fcs;
        }
-       
+
        /**
         * Reverse unsigned short value
+        * @param $num (int) value to reversr
+        * @return int reversed value
+        * @protected
         */
        protected function imb_reverse_us($num) {
                $rev = 0;
@@ -1923,9 +2258,13 @@ class PDFBarcode {
                }
                return $rev;
        }
-       
+
        /**
         * generate Nof13 tables used for Intelligent Mail Barcode
+        * @param $n (int) is the type of table: 2 for 2of13 table, 5 for 5of13table
+        * @param $size (int) size of table (78 for n=2 and 1287 for n=5)
+        * @return array requested table
+        * @protected
         */
        protected function imb_tables($n, $size) {
                $table = array();
@@ -1957,10 +2296,8 @@ class PDFBarcode {
                }
                return $table;
        }
-       
-} // end of class
 
+} // end of class
 //============================================================+
-// END OF FILE                                                 
+// END OF FILE
 //============================================================+
-?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_2d.php b/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_2d.php
new file mode 100644 (file)
index 0000000..13e2365
--- /dev/null
@@ -0,0 +1,349 @@
+<?php
+//============================================================+
+// File name   : tcpdf_barcodes_2d.php
+// Version     : 1.0.015
+// Begin       : 2009-04-07
+// Last Update : 2014-05-20
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2009-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with TCPDF.  If not, see <http://www.gnu.org/licenses/>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : PHP class to creates array representations for
+//               2D barcodes to be used with TCPDF.
+//
+//============================================================+
+
+/**
+ * @file
+ * PHP class to creates array representations for 2D barcodes to be used with TCPDF.
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.015
+ */
+
+/**
+ * @class TCPDF2DBarcode
+ * PHP class to creates array representations for 2D barcodes to be used with TCPDF (http://www.tcpdf.org).
+ * @package com.tecnick.tcpdf
+ * @version 1.0.015
+ * @author Nicola Asuni
+ */
+class TCPDF2DBarcode {
+
+       /**
+        * Array representation of barcode.
+        * @protected
+        */
+       protected $barcode_array = false;
+
+       /**
+        * This is the class constructor.
+        * Return an array representations for 2D barcodes:<ul>
+        * <li>$arrcode['code'] code to be printed on text label</li>
+        * <li>$arrcode['num_rows'] required number of rows</li>
+        * <li>$arrcode['num_cols'] required number of columns</li>
+        * <li>$arrcode['bcode'][$r][$c] value of the cell is $r row and $c column (0 = transparent, 1 = black)</li></ul>
+        * @param $code (string) code to print
+        * @param $type (string) type of barcode: <ul><li>DATAMATRIX : Datamatrix (ISO/IEC 16022)</li><li>PDF417 : PDF417 (ISO/IEC 15438:2006)</li><li>PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6 : PDF417 with parameters: a = aspect ratio (width/height); e = error correction level (0-8); t = total number of macro segments; s = macro segment index (0-99998); f = file ID; o0 = File Name (text); o1 = Segment Count (numeric); o2 = Time Stamp (numeric); o3 = Sender (text); o4 = Addressee (text); o5 = File Size (numeric); o6 = Checksum (numeric). NOTES: Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. To use a comma character ',' on text options, replace it with the character 255: "\xff".</li><li>QRCODE : QRcode Low error correction</li><li>QRCODE,L : QRcode Low error correction</li><li>QRCODE,M : QRcode Medium error correction</li><li>QRCODE,Q : QRcode Better error correction</li><li>QRCODE,H : QR-CODE Best error correction</li><li>RAW: raw mode - comma-separad list of array rows</li><li>RAW2: raw mode - array rows are surrounded by square parenthesis.</li><li>TEST : Test matrix</li></ul>
+        */
+       public function __construct($code, $type) {
+               $this->setBarcode($code, $type);
+       }
+
+       /**
+        * Return an array representations of barcode.
+        * @return array
+        */
+       public function getBarcodeArray() {
+               return $this->barcode_array;
+       }
+
+       /**
+        * Send barcode as SVG image object to the standard output.
+        * @param $w (int) Width of a single rectangle element in user units.
+        * @param $h (int) Height of a single rectangle element in user units.
+        * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent).
+        * @public
+        */
+       public function getBarcodeSVG($w=3, $h=3, $color='black') {
+               // send headers
+               $code = $this->getBarcodeSVGcode($w, $h, $color);
+               header('Content-Type: application/svg+xml');
+               header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+               header('Pragma: public');
+               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+               header('Content-Disposition: inline; filename="'.md5($code).'.svg";');
+               //header('Content-Length: '.strlen($code));
+               echo $code;
+       }
+
+       /**
+        * Return a SVG string representation of barcode.
+        * @param $w (int) Width of a single rectangle element in user units.
+        * @param $h (int) Height of a single rectangle element in user units.
+        * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent).
+        * @return string SVG code.
+        * @public
+        */
+       public function getBarcodeSVGcode($w=3, $h=3, $color='black') {
+               // replace table for special characters
+               $repstr = array("\0" => '', '&' => '&amp;', '<' => '&lt;', '>' => '&gt;');
+               $svg = '<'.'?'.'xml version="1.0" standalone="no"'.'?'.'>'."\n";
+               $svg .= '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'."\n";
+               $svg .= '<svg width="'.round(($this->barcode_array['num_cols'] * $w), 3).'" height="'.round(($this->barcode_array['num_rows'] * $h), 3).'" version="1.1" xmlns="http://www.w3.org/2000/svg">'."\n";
+               $svg .= "\t".'<desc>'.strtr($this->barcode_array['code'], $repstr).'</desc>'."\n";
+               $svg .= "\t".'<g id="elements" fill="'.$color.'" stroke="none">'."\n";
+               // print barcode elements
+               $y = 0;
+               // for each row
+               for ($r = 0; $r < $this->barcode_array['num_rows']; ++$r) {
+                       $x = 0;
+                       // for each column
+                       for ($c = 0; $c < $this->barcode_array['num_cols']; ++$c) {
+                               if ($this->barcode_array['bcode'][$r][$c] == 1) {
+                                       // draw a single barcode cell
+                                       $svg .= "\t\t".'<rect x="'.$x.'" y="'.$y.'" width="'.$w.'" height="'.$h.'" />'."\n";
+                               }
+                               $x += $w;
+                       }
+                       $y += $h;
+               }
+               $svg .= "\t".'</g>'."\n";
+               $svg .= '</svg>'."\n";
+               return $svg;
+       }
+
+       /**
+        * Return an HTML representation of barcode.
+        * @param $w (int) Width of a single rectangle element in pixels.
+        * @param $h (int) Height of a single rectangle element in pixels.
+        * @param $color (string) Foreground color for bar elements (background is transparent).
+        * @return string HTML code.
+        * @public
+        */
+       public function getBarcodeHTML($w=10, $h=10, $color='black') {
+               $html = '<div style="font-size:0;position:relative;width:'.($w * $this->barcode_array['num_cols']).'px;height:'.($h * $this->barcode_array['num_rows']).'px;">'."\n";
+               // print barcode elements
+               $y = 0;
+               // for each row
+               for ($r = 0; $r < $this->barcode_array['num_rows']; ++$r) {
+                       $x = 0;
+                       // for each column
+                       for ($c = 0; $c < $this->barcode_array['num_cols']; ++$c) {
+                               if ($this->barcode_array['bcode'][$r][$c] == 1) {
+                                       // draw a single barcode cell
+                                       $html .= '<div style="background-color:'.$color.';width:'.$w.'px;height:'.$h.'px;position:absolute;left:'.$x.'px;top:'.$y.'px;">&nbsp;</div>'."\n";
+                               }
+                               $x += $w;
+                       }
+                       $y += $h;
+               }
+               $html .= '</div>'."\n";
+               return $html;
+       }
+
+       /**
+        * Send a PNG image representation of barcode (requires GD or Imagick library).
+        * @param $w (int) Width of a single rectangle element in pixels.
+        * @param $h (int) Height of a single rectangle element in pixels.
+        * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent).
+        * @public
+        */
+       public function getBarcodePNG($w=3, $h=3, $color=array(0,0,0)) {
+               $data = $this->getBarcodePngData($w, $h, $color);
+               // send headers
+               header('Content-Type: image/png');
+               header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
+               header('Pragma: public');
+               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
+               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+               //header('Content-Length: '.strlen($data));
+               echo $data;
+
+       }
+
+       /**
+        * Return a PNG image representation of barcode (requires GD or Imagick library).
+        * @param $w (int) Width of a single rectangle element in pixels.
+        * @param $h (int) Height of a single rectangle element in pixels.
+        * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent).
+        * @return image or false in case of error.
+        * @public
+        */
+       public function getBarcodePngData($w=3, $h=3, $color=array(0,0,0)) {
+               // calculate image size
+               $width = ($this->barcode_array['num_cols'] * $w);
+               $height = ($this->barcode_array['num_rows'] * $h);
+               if (function_exists('imagecreate')) {
+                       // GD library
+                       $imagick = false;
+                       $png = imagecreate($width, $height);
+                       $bgcol = imagecolorallocate($png, 255, 255, 255);
+                       imagecolortransparent($png, $bgcol);
+                       $fgcol = imagecolorallocate($png, $color[0], $color[1], $color[2]);
+               } elseif (extension_loaded('imagick')) {
+                       $imagick = true;
+                       $bgcol = new imagickpixel('rgb(255,255,255');
+                       $fgcol = new imagickpixel('rgb('.$color[0].','.$color[1].','.$color[2].')');
+                       $png = new Imagick();
+                       $png->newImage($width, $height, 'none', 'png');
+                       $bar = new imagickdraw();
+                       $bar->setfillcolor($fgcol);
+               } else {
+                       return false;
+               }
+               // print barcode elements
+               $y = 0;
+               // for each row
+               for ($r = 0; $r < $this->barcode_array['num_rows']; ++$r) {
+                       $x = 0;
+                       // for each column
+                       for ($c = 0; $c < $this->barcode_array['num_cols']; ++$c) {
+                               if ($this->barcode_array['bcode'][$r][$c] == 1) {
+                                       // draw a single barcode cell
+                                       if ($imagick) {
+                                               $bar->rectangle($x, $y, ($x + $w - 1), ($y + $h - 1));
+                                       } else {
+                                               imagefilledrectangle($png, $x, $y, ($x + $w - 1), ($y + $h - 1), $fgcol);
+                                       }
+                               }
+                               $x += $w;
+                       }
+                       $y += $h;
+               }
+               if ($imagick) {
+                       $png->drawimage($bar);
+                       return $png;
+               } else {
+                       ob_start();
+                       imagepng($png);
+                       $imagedata = ob_get_clean();
+                       imagedestroy($png);
+                       return $imagedata;
+               }
+       }
+
+       /**
+        * Set the barcode.
+        * @param $code (string) code to print
+        * @param $type (string) type of barcode: <ul><li>DATAMATRIX : Datamatrix (ISO/IEC 16022)</li><li>PDF417 : PDF417 (ISO/IEC 15438:2006)</li><li>PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6 : PDF417 with parameters: a = aspect ratio (width/height); e = error correction level (0-8); t = total number of macro segments; s = macro segment index (0-99998); f = file ID; o0 = File Name (text); o1 = Segment Count (numeric); o2 = Time Stamp (numeric); o3 = Sender (text); o4 = Addressee (text); o5 = File Size (numeric); o6 = Checksum (numeric). NOTES: Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. To use a comma character ',' on text options, replace it with the character 255: "\xff".</li><li>QRCODE : QRcode Low error correction</li><li>QRCODE,L : QRcode Low error correction</li><li>QRCODE,M : QRcode Medium error correction</li><li>QRCODE,Q : QRcode Better error correction</li><li>QRCODE,H : QR-CODE Best error correction</li><li>RAW: raw mode - comma-separad list of array rows</li><li>RAW2: raw mode - array rows are surrounded by square parenthesis.</li><li>TEST : Test matrix</li></ul>
+        * @return array
+        */
+       public function setBarcode($code, $type) {
+               $mode = explode(',', $type);
+               $qrtype = strtoupper($mode[0]);
+               switch ($qrtype) {
+                       case 'DATAMATRIX': { // DATAMATRIX (ISO/IEC 16022)
+                               require_once(dirname(__FILE__).'/include/barcodes/datamatrix.php');
+                               $qrcode = new Datamatrix($code);
+                               $this->barcode_array = $qrcode->getBarcodeArray();
+                               $this->barcode_array['code'] = $code;
+                               break;
+                       }
+                       case 'PDF417': { // PDF417 (ISO/IEC 15438:2006)
+                               require_once(dirname(__FILE__).'/include/barcodes/pdf417.php');
+                               if (!isset($mode[1]) OR ($mode[1] === '')) {
+                                       $aspectratio = 2; // default aspect ratio (width / height)
+                               } else {
+                                       $aspectratio = floatval($mode[1]);
+                               }
+                               if (!isset($mode[2]) OR ($mode[2] === '')) {
+                                       $ecl = -1; // default error correction level (auto)
+                               } else {
+                                       $ecl = intval($mode[2]);
+                               }
+                               // set macro block
+                               $macro = array();
+                               if (isset($mode[3]) AND ($mode[3] !== '') AND isset($mode[4]) AND ($mode[4] !== '') AND isset($mode[5]) AND ($mode[5] !== '')) {
+                                       $macro['segment_total'] = intval($mode[3]);
+                                       $macro['segment_index'] = intval($mode[4]);
+                                       $macro['file_id'] = strtr($mode[5], "\xff", ',');
+                                       for ($i = 0; $i < 7; ++$i) {
+                                               $o = $i + 6;
+                                               if (isset($mode[$o]) AND ($mode[$o] !== '')) {
+                                                       // add option
+                                                       $macro['option_'.$i] = strtr($mode[$o], "\xff", ',');
+                                               }
+                                       }
+                               }
+                               $qrcode = new PDF417($code, $ecl, $aspectratio, $macro);
+                               $this->barcode_array = $qrcode->getBarcodeArray();
+                               $this->barcode_array['code'] = $code;
+                               break;
+                       }
+                       case 'QRCODE': { // QR-CODE
+                               require_once(dirname(__FILE__).'/include/barcodes/qrcode.php');
+                               if (!isset($mode[1]) OR (!in_array($mode[1],array('L','M','Q','H')))) {
+                                       $mode[1] = 'L'; // Ddefault: Low error correction
+                               }
+                               $qrcode = new QRcode($code, strtoupper($mode[1]));
+                               $this->barcode_array = $qrcode->getBarcodeArray();
+                               $this->barcode_array['code'] = $code;
+                               break;
+                       }
+                       case 'RAW':
+                       case 'RAW2': { // RAW MODE
+                               // remove spaces
+                               $code = preg_replace('/[\s]*/si', '', $code);
+                               if (strlen($code) < 3) {
+                                       break;
+                               }
+                               if ($qrtype == 'RAW') {
+                                       // comma-separated rows
+                                       $rows = explode(',', $code);
+                               } else { // RAW2
+                                       // rows enclosed in square parentheses
+                                       $code = substr($code, 1, -1);
+                                       $rows = explode('][', $code);
+                               }
+                               $this->barcode_array['num_rows'] = count($rows);
+                               $this->barcode_array['num_cols'] = strlen($rows[0]);
+                               $this->barcode_array['bcode'] = array();
+                               foreach ($rows as $r) {
+                                       $this->barcode_array['bcode'][] = str_split($r, 1);
+                               }
+                               $this->barcode_array['code'] = $code;
+                               break;
+                       }
+                       case 'TEST': { // TEST MODE
+                               $this->barcode_array['num_rows'] = 5;
+                               $this->barcode_array['num_cols'] = 15;
+                               $this->barcode_array['bcode'] = array(
+                                       array(1,1,1,0,1,1,1,0,1,1,1,0,1,1,1),
+                                       array(0,1,0,0,1,0,0,0,1,0,0,0,0,1,0),
+                                       array(0,1,0,0,1,1,0,0,1,1,1,0,0,1,0),
+                                       array(0,1,0,0,1,0,0,0,0,0,1,0,0,1,0),
+                                       array(0,1,0,0,1,1,1,0,1,1,1,0,0,1,0));
+                               $this->barcode_array['code'] = $code;
+                               break;
+                       }
+                       default: {
+                               $this->barcode_array = false;
+                       }
+               }
+       }
+} // end of class
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_import.php b/inc/3rdparty/libraries/tcpdf/tcpdf_import.php
new file mode 100644 (file)
index 0000000..09d726b
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+//============================================================+
+// File name   : tcpdf_import.php
+// Version     : 1.0.001
+// Begin       : 2011-05-23
+// Last Update : 2013-09-17
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2011-2013 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : This is a PHP class extension of the TCPDF library to
+//               import existing PDF documents.
+//
+//============================================================+
+
+/**
+ * @file
+ * !!! THIS CLASS IS UNDER DEVELOPMENT !!!
+ * This is a PHP class extension of the TCPDF (http://www.tcpdf.org) library to import existing PDF documents.<br>
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.001
+ */
+
+// include the TCPDF class
+require_once(dirname(__FILE__).'/tcpdf.php');
+// include PDF parser class
+require_once(dirname(__FILE__).'/tcpdf_parser.php');
+
+/**
+ * @class TCPDF_IMPORT
+ * !!! THIS CLASS IS UNDER DEVELOPMENT !!!
+ * PHP class extension of the TCPDF (http://www.tcpdf.org) library to import existing PDF documents.<br>
+ * @package com.tecnick.tcpdf
+ * @brief PHP class extension of the TCPDF library to import existing PDF documents.
+ * @version 1.0.001
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_IMPORT extends TCPDF {
+
+       /**
+        * Import an existing PDF document
+        * @param $filename (string) Filename of the PDF document to import.
+        * @return true in case of success, false otherwise
+        * @public
+        * @since 1.0.000 (2011-05-24)
+        */
+       public function importPDF($filename) {
+               // load document
+               $rawdata = file_get_contents($filename);
+               if ($rawdata === false) {
+                       $this->Error('Unable to get the content of the file: '.$filename);
+               }
+               // configuration parameters for parser
+               $cfg = array(
+                       'die_for_errors' => false,
+                       'ignore_filter_decoding_errors' => true,
+                       'ignore_missing_filter_decoders' => true,
+               );
+               try {
+                       // parse PDF data
+                       $pdf = new TCPDF_PARSER($rawdata, $cfg);
+               } catch (Exception $e) {
+                       die($e->getMessage());
+               }
+               // get the parsed data
+               $data = $pdf->getParsedData();
+               // release some memory
+               unset($rawdata);
+
+               // ...
+
+
+               print_r($data); // DEBUG
+
+
+               unset($pdf);
+       }
+
+} // END OF CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_parser.php b/inc/3rdparty/libraries/tcpdf/tcpdf_parser.php
new file mode 100644 (file)
index 0000000..0b2a7e1
--- /dev/null
@@ -0,0 +1,811 @@
+<?php
+//============================================================+
+// File name   : tcpdf_parser.php
+// Version     : 1.0.014
+// Begin       : 2011-05-23
+// Last Update : 2014-02-18
+// Author      : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+// License     : http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT GNU-LGPLv3
+// -------------------------------------------------------------------
+// Copyright (C) 2011-2014 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : This is a PHP class for parsing PDF documents.
+//
+//============================================================+
+
+/**
+ * @file
+ * This is a PHP class for parsing PDF documents.<br>
+ * @package com.tecnick.tcpdf
+ * @author Nicola Asuni
+ * @version 1.0.014
+ */
+
+// include class for decoding filters
+require_once(dirname(__FILE__).'/include/tcpdf_filters.php');
+
+/**
+ * @class TCPDF_PARSER
+ * This is a PHP class for parsing PDF documents.<br>
+ * @package com.tecnick.tcpdf
+ * @brief This is a PHP class for parsing PDF documents..
+ * @version 1.0.010
+ * @author Nicola Asuni - info@tecnick.com
+ */
+class TCPDF_PARSER {
+
+       /**
+        * Raw content of the PDF document.
+        * @private
+        */
+       private $pdfdata = '';
+
+       /**
+        * XREF data.
+        * @protected
+        */
+       protected $xref = array();
+
+       /**
+        * Array of PDF objects.
+        * @protected
+        */
+       protected $objects = array();
+
+       /**
+        * Class object for decoding filters.
+        * @private
+        */
+       private $FilterDecoders;
+
+       /**
+        * Array of configuration parameters.
+        * @private
+        */
+       private $cfg = array(
+               'die_for_errors' => false,
+               'ignore_filter_decoding_errors' => true,
+               'ignore_missing_filter_decoders' => true,
+       );
+
+// -----------------------------------------------------------------------------
+
+       /**
+        * Parse a PDF document an return an array of objects.
+        * @param $data (string) PDF data to parse.
+        * @param $cfg (array) Array of configuration parameters:
+        *                      'die_for_errors' : if true termitate the program execution in case of error, otherwise thows an exception;
+        *                      'ignore_filter_decoding_errors' : if true ignore filter decoding errors;
+        *                      'ignore_missing_filter_decoders' : if true ignore missing filter decoding errors.
+        * @public
+        * @since 1.0.000 (2011-05-24)
+        */
+       public function __construct($data, $cfg=array()) {
+               if (empty($data)) {
+                       $this->Error('Empty PDF data.');
+               }
+               // find the pdf header starting position
+               if (($trimpos = strpos($data, '%PDF-')) === FALSE) {
+                       $this->Error('Invalid PDF data: missing %PDF header.');
+               }
+               // get PDF content string
+               $this->pdfdata = substr($data, $trimpos);
+               // get length
+               $pdflen = strlen($this->pdfdata);
+               // set configuration parameters
+               $this->setConfig($cfg);
+               // get xref and trailer data
+               $this->xref = $this->getXrefData();
+               // parse all document objects
+               $this->objects = array();
+               foreach ($this->xref['xref'] as $obj => $offset) {
+                       if (!isset($this->objects[$obj]) AND ($offset > 0)) {
+                               // decode objects with positive offset
+                               $this->objects[$obj] = $this->getIndirectObject($obj, $offset, true);
+                       }
+               }
+               // release some memory
+               unset($this->pdfdata);
+               $this->pdfdata = '';
+       }
+
+       /**
+        * Set the configuration parameters.
+        * @param $cfg (array) Array of configuration parameters:
+        *                      'die_for_errors' : if true termitate the program execution in case of error, otherwise thows an exception;
+        *                      'ignore_filter_decoding_errors' : if true ignore filter decoding errors;
+        *                      'ignore_missing_filter_decoders' : if true ignore missing filter decoding errors.
+        * @public
+        */
+       protected function setConfig($cfg) {
+               if (isset($cfg['die_for_errors'])) {
+                       $this->cfg['die_for_errors'] = !!$cfg['die_for_errors'];
+               }
+               if (isset($cfg['ignore_filter_decoding_errors'])) {
+                       $this->cfg['ignore_filter_decoding_errors'] = !!$cfg['ignore_filter_decoding_errors'];
+               }
+               if (isset($cfg['ignore_missing_filter_decoders'])) {
+                       $this->cfg['ignore_missing_filter_decoders'] = !!$cfg['ignore_missing_filter_decoders'];
+               }
+       }
+
+       /**
+        * Return an array of parsed PDF document objects.
+        * @return (array) Array of parsed PDF document objects.
+        * @public
+        * @since 1.0.000 (2011-06-26)
+        */
+       public function getParsedData() {
+               return array($this->xref, $this->objects);
+       }
+
+       /**
+        * Get Cross-Reference (xref) table and trailer data from PDF document data.
+        * @param $offset (int) xref offset (if know).
+        * @param $xref (array) previous xref array (if any).
+        * @return Array containing xref and trailer data.
+        * @protected
+        * @since 1.0.000 (2011-05-24)
+        */
+       protected function getXrefData($offset=0, $xref=array()) {
+               if ($offset == 0) {
+                       // find last startxref
+                       if (preg_match_all('/[\r\n]startxref[\s]*[\r\n]+([0-9]+)[\s]*[\r\n]+%%EOF/i', $this->pdfdata, $matches, PREG_SET_ORDER, $offset) == 0) {
+                               $this->Error('Unable to find startxref');
+                       }
+                       $matches = array_pop($matches);
+                       $startxref = $matches[1];
+               } elseif (strpos($this->pdfdata, 'xref', $offset) == $offset) {
+                       // Already pointing at the xref table
+                       $startxref = $offset;
+               } elseif (preg_match('/([0-9]+[\s][0-9]+[\s]obj)/i', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset)) {
+                       // Cross-Reference Stream object
+                       $startxref = $offset;
+               } elseif (preg_match('/[\r\n]startxref[\s]*[\r\n]+([0-9]+)[\s]*[\r\n]+%%EOF/i', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset)) {
+                       // startxref found
+                       $startxref = $matches[1][0];
+               } else {
+                       $this->Error('Unable to find startxref');
+               }
+               // check xref position
+               if (strpos($this->pdfdata, 'xref', $startxref) == $startxref) {
+                       // Cross-Reference
+                       $xref = $this->decodeXref($startxref, $xref);
+               } else {
+                       // Cross-Reference Stream
+                       $xref = $this->decodeXrefStream($startxref, $xref);
+               }
+               if (empty($xref)) {
+                       $this->Error('Unable to find xref');
+               }
+               return $xref;
+       }
+
+       /**
+        * Decode the Cross-Reference section
+        * @param $startxref (int) Offset at which the xref section starts (position of the 'xref' keyword).
+        * @param $xref (array) Previous xref array (if any).
+        * @return Array containing xref and trailer data.
+        * @protected
+        * @since 1.0.000 (2011-06-20)
+        */
+       protected function decodeXref($startxref, $xref=array()) {
+               $startxref += 4; // 4 is the lenght of the word 'xref'
+               // skip initial white space chars: \x00 null (NUL), \x09 horizontal tab (HT), \x0A line feed (LF), \x0C form feed (FF), \x0D carriage return (CR), \x20 space (SP)
+               $offset = $startxref + strspn($this->pdfdata, "\x00\x09\x0a\x0c\x0d\x20", $startxref);
+               // initialize object number
+               $obj_num = 0;
+               // search for cross-reference entries or subsection
+               while (preg_match('/([0-9]+)[\x20]([0-9]+)[\x20]?([nf]?)(\r\n|[\x20]?[\r\n])/', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {
+                       if ($matches[0][1] != $offset) {
+                               // we are on another section
+                               break;
+                       }
+                       $offset += strlen($matches[0][0]);
+                       if ($matches[3][0] == 'n') {
+                               // create unique object index: [object number]_[generation number]
+                               $index = $obj_num.'_'.intval($matches[2][0]);
+                               // check if object already exist
+                               if (!isset($xref['xref'][$index])) {
+                                       // store object offset position
+                                       $xref['xref'][$index] = intval($matches[1][0]);
+                               }
+                               ++$obj_num;
+                       } elseif ($matches[3][0] == 'f') {
+                               ++$obj_num;
+                       } else {
+                               // object number (index)
+                               $obj_num = intval($matches[1][0]);
+                       }
+               }
+               // get trailer data
+               if (preg_match('/trailer[\s]*<<(.*)>>/isU', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {
+                       $trailer_data = $matches[1][0];
+                       if (!isset($xref['trailer']) OR empty($xref['trailer'])) {
+                               // get only the last updated version
+                               $xref['trailer'] = array();
+                               // parse trailer_data
+                               if (preg_match('/Size[\s]+([0-9]+)/i', $trailer_data, $matches) > 0) {
+                                       $xref['trailer']['size'] = intval($matches[1]);
+                               }
+                               if (preg_match('/Root[\s]+([0-9]+)[\s]+([0-9]+)[\s]+R/i', $trailer_data, $matches) > 0) {
+                                       $xref['trailer']['root'] = intval($matches[1]).'_'.intval($matches[2]);
+                               }
+                               if (preg_match('/Encrypt[\s]+([0-9]+)[\s]+([0-9]+)[\s]+R/i', $trailer_data, $matches) > 0) {
+                                       $xref['trailer']['encrypt'] = intval($matches[1]).'_'.intval($matches[2]);
+                               }
+                               if (preg_match('/Info[\s]+([0-9]+)[\s]+([0-9]+)[\s]+R/i', $trailer_data, $matches) > 0) {
+                                       $xref['trailer']['info'] = intval($matches[1]).'_'.intval($matches[2]);
+                               }
+                               if (preg_match('/ID[\s]*[\[][\s]*[<]([^>]*)[>][\s]*[<]([^>]*)[>]/i', $trailer_data, $matches) > 0) {
+                                       $xref['trailer']['id'] = array();
+                                       $xref['trailer']['id'][0] = $matches[1];
+                                       $xref['trailer']['id'][1] = $matches[2];
+                               }
+                       }
+                       if (preg_match('/Prev[\s]+([0-9]+)/i', $trailer_data, $matches) > 0) {
+                               // get previous xref
+                               $xref = $this->getXrefData(intval($matches[1]), $xref);
+                       }
+               } else {
+                       $this->Error('Unable to find trailer');
+               }
+               return $xref;
+       }
+
+       /**
+        * Decode the Cross-Reference Stream section
+        * @param $startxref (int) Offset at which the xref section starts.
+        * @param $xref (array) Previous xref array (if any).
+        * @return Array containing xref and trailer data.
+        * @protected
+        * @since 1.0.003 (2013-03-16)
+        */
+       protected function decodeXrefStream($startxref, $xref=array()) {
+               // try to read Cross-Reference Stream
+               $xrefobj = $this->getRawObject($startxref);
+               $xrefcrs = $this->getIndirectObject($xrefobj[1], $startxref, true);
+               if (!isset($xref['trailer']) OR empty($xref['trailer'])) {
+                       // get only the last updated version
+                       $xref['trailer'] = array();
+                       $filltrailer = true;
+               } else {
+                       $filltrailer = false;
+               }
+               if (!isset($xref['xref'])) {
+                       $xref['xref'] = array();
+               }
+               $valid_crs = false;
+               $columns = 0;
+               $sarr = $xrefcrs[0][1];
+               foreach ($sarr as $k => $v) {
+                       if (($v[0] == '/') AND ($v[1] == 'Type') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == '/') AND ($sarr[($k +1)][1] == 'XRef'))) {
+                               $valid_crs = true;
+                       } elseif (($v[0] == '/') AND ($v[1] == 'Index') AND (isset($sarr[($k +1)]))) {
+                               // first object number in the subsection
+                               $index_first = intval($sarr[($k +1)][1][0][1]);
+                               // number of entries in the subsection
+                               $index_entries = intval($sarr[($k +1)][1][1][1]);
+                       } elseif (($v[0] == '/') AND ($v[1] == 'Prev') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'numeric'))) {
+                               // get previous xref offset
+                               $prevxref = intval($sarr[($k +1)][1]);
+                       } elseif (($v[0] == '/') AND ($v[1] == 'W') AND (isset($sarr[($k +1)]))) {
+                               // number of bytes (in the decoded stream) of the corresponding field
+                               $wb = array();
+                               $wb[0] = intval($sarr[($k +1)][1][0][1]);
+                               $wb[1] = intval($sarr[($k +1)][1][1][1]);
+                               $wb[2] = intval($sarr[($k +1)][1][2][1]);
+                       } elseif (($v[0] == '/') AND ($v[1] == 'DecodeParms') AND (isset($sarr[($k +1)][1]))) {
+                               $decpar = $sarr[($k +1)][1];
+                               foreach ($decpar as $kdc => $vdc) {
+                                       if (($vdc[0] == '/') AND ($vdc[1] == 'Columns') AND (isset($decpar[($kdc +1)]) AND ($decpar[($kdc +1)][0] == 'numeric'))) {
+                                               $columns = intval($decpar[($kdc +1)][1]);
+                                       } elseif (($vdc[0] == '/') AND ($vdc[1] == 'Predictor') AND (isset($decpar[($kdc +1)]) AND ($decpar[($kdc +1)][0] == 'numeric'))) {
+                                               $predictor = intval($decpar[($kdc +1)][1]);
+                                       }
+                               }
+                       } elseif ($filltrailer) {
+                               if (($v[0] == '/') AND ($v[1] == 'Size') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'numeric'))) {
+                                       $xref['trailer']['size'] = $sarr[($k +1)][1];
+                               } elseif (($v[0] == '/') AND ($v[1] == 'Root') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'objref'))) {
+                                       $xref['trailer']['root'] = $sarr[($k +1)][1];
+                               } elseif (($v[0] == '/') AND ($v[1] == 'Info') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'objref'))) {
+                                       $xref['trailer']['info'] = $sarr[($k +1)][1];
+                               } elseif (($v[0] == '/') AND ($v[1] == 'Encrypt') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'objref'))) {
+                                       $xref['trailer']['encrypt'] = $sarr[($k +1)][1];
+                               } elseif (($v[0] == '/') AND ($v[1] == 'ID') AND (isset($sarr[($k +1)]))) {
+                                       $xref['trailer']['id'] = array();
+                                       $xref['trailer']['id'][0] = $sarr[($k +1)][1][0][1];
+                                       $xref['trailer']['id'][1] = $sarr[($k +1)][1][1][1];
+                               }
+                       }
+               }
+               // decode data
+               if ($valid_crs AND isset($xrefcrs[1][3][0])) {
+                       // number of bytes in a row
+                       $rowlen = ($columns + 1);
+                       // convert the stream into an array of integers
+                       $sdata = unpack('C*', $xrefcrs[1][3][0]);
+                       // split the rows
+                       $sdata = array_chunk($sdata, $rowlen);
+                       // initialize decoded array
+                       $ddata = array();
+                       // initialize first row with zeros
+                       $prev_row = array_fill (0, $rowlen, 0);
+                       // for each row apply PNG unpredictor
+                       foreach ($sdata as $k => $row) {
+                               // initialize new row
+                               $ddata[$k] = array();
+                               // get PNG predictor value
+                               $predictor = (10 + $row[0]);
+                               // for each byte on the row
+                               for ($i=1; $i<=$columns; ++$i) {
+                                       // new index
+                                       $j = ($i - 1);
+                                       $row_up = $prev_row[$j];
+                                       if ($i == 1) {
+                                               $row_left = 0;
+                                               $row_upleft = 0;
+                                       } else {
+                                               $row_left = $row[($i - 1)];
+                                               $row_upleft = $prev_row[($j - 1)];
+                                       }
+                                       switch ($predictor) {
+                                               case 10: { // PNG prediction (on encoding, PNG None on all rows)
+                                                       $ddata[$k][$j] = $row[$i];
+                                                       break;
+                                               }
+                                               case 11: { // PNG prediction (on encoding, PNG Sub on all rows)
+                                                       $ddata[$k][$j] = (($row[$i] + $row_left) & 0xff);
+                                                       break;
+                                               }
+                                               case 12: { // PNG prediction (on encoding, PNG Up on all rows)
+                                                       $ddata[$k][$j] = (($row[$i] + $row_up) & 0xff);
+                                                       break;
+                                               }
+                                               case 13: { // PNG prediction (on encoding, PNG Average on all rows)
+                                                       $ddata[$k][$j] = (($row[$i] + (($row_left + $row_up) / 2)) & 0xff);
+                                                       break;
+                                               }
+                                               case 14: { // PNG prediction (on encoding, PNG Paeth on all rows)
+                                                       // initial estimate
+                                                       $p = ($row_left + $row_up - $row_upleft);
+                                                       // distances
+                                                       $pa = abs($p - $row_left);
+                                                       $pb = abs($p - $row_up);
+                                                       $pc = abs($p - $row_upleft);
+                                                       $pmin = min($pa, $pb, $pc);
+                                                       // return minumum distance
+                                                       switch ($pmin) {
+                                                               case $pa: {
+                                                                       $ddata[$k][$j] = (($row[$i] + $row_left) & 0xff);
+                                                                       break;
+                                                               }
+                                                               case $pb: {
+                                                                       $ddata[$k][$j] = (($row[$i] + $row_up) & 0xff);
+                                                                       break;
+                                                               }
+                                                               case $pc: {
+                                                                       $ddata[$k][$j] = (($row[$i] + $row_upleft) & 0xff);
+                                                                       break;
+                                                               }
+                                                       }
+                                                       break;
+                                               }
+                                               default: { // PNG prediction (on encoding, PNG optimum)
+                                                       $this->Error('Unknown PNG predictor');
+                                                       break;
+                                               }
+                                       }
+                               }
+                               $prev_row = $ddata[$k];
+                       } // end for each row
+                       // complete decoding
+                       $sdata = array();
+                       // for every row
+                       foreach ($ddata as $k => $row) {
+                               // initialize new row
+                               $sdata[$k] = array(0, 0, 0);
+                               if ($wb[0] == 0) {
+                                       // default type field
+                                       $sdata[$k][0] = 1;
+                               }
+                               $i = 0; // count bytes in the row
+                               // for every column
+                               for ($c = 0; $c < 3; ++$c) {
+                                       // for every byte on the column
+                                       for ($b = 0; $b < $wb[$c]; ++$b) {
+                                               if (isset($row[$i])) {
+                                                       $sdata[$k][$c] += ($row[$i] << (($wb[$c] - 1 - $b) * 8));
+                                               }
+                                               ++$i;
+                                       }
+                               }
+                       }
+                       $ddata = array();
+                       // fill xref
+                       if (isset($index_first)) {
+                               $obj_num = $index_first;
+                       } else {
+                               $obj_num = 0;
+                       }
+                       foreach ($sdata as $k => $row) {
+                               switch ($row[0]) {
+                                       case 0: { // (f) linked list of free objects
+                                               break;
+                                       }
+                                       case 1: { // (n) objects that are in use but are not compressed
+                                               // create unique object index: [object number]_[generation number]
+                                               $index = $obj_num.'_'.$row[2];
+                                               // check if object already exist
+                                               if (!isset($xref['xref'][$index])) {
+                                                       // store object offset position
+                                                       $xref['xref'][$index] = $row[1];
+                                               }
+                                               break;
+                                       }
+                                       case 2: { // compressed objects
+                                               // $row[1] = object number of the object stream in which this object is stored
+                                               // $row[2] = index of this object within the object stream
+                                               $index = $row[1].'_0_'.$row[2];
+                                               $xref['xref'][$index] = -1;
+                                               break;
+                                       }
+                                       default: { // null objects
+                                               break;
+                                       }
+                               }
+                               ++$obj_num;
+                       }
+               } // end decoding data
+               if (isset($prevxref)) {
+                       // get previous xref
+                       $xref = $this->getXrefData($prevxref, $xref);
+               }
+               return $xref;
+       }
+
+       /**
+        * Get object type, raw value and offset to next object
+        * @param $offset (int) Object offset.
+        * @return array containing object type, raw value and offset to next object
+        * @protected
+        * @since 1.0.000 (2011-06-20)
+        */
+       protected function getRawObject($offset=0) {
+               $objtype = ''; // object type to be returned
+               $objval = ''; // object value to be returned
+               // skip initial white space chars: \x00 null (NUL), \x09 horizontal tab (HT), \x0A line feed (LF), \x0C form feed (FF), \x0D carriage return (CR), \x20 space (SP)
+               $offset += strspn($this->pdfdata, "\x00\x09\x0a\x0c\x0d\x20", $offset);
+               // get first char
+               $char = $this->pdfdata[$offset];
+               // get object type
+               switch ($char) {
+                       case '%': { // \x25 PERCENT SIGN
+                               // skip comment and search for next token
+                               $next = strcspn($this->pdfdata, "\r\n", $offset);
+                               if ($next > 0) {
+                                       $offset += $next;
+                                       return $this->getRawObject($offset);
+                               }
+                               break;
+                       }
+                       case '/': { // \x2F SOLIDUS
+                               // name object
+                               $objtype = $char;
+                               ++$offset;
+                               if (preg_match('/^([^\x00\x09\x0a\x0c\x0d\x20\s\x28\x29\x3c\x3e\x5b\x5d\x7b\x7d\x2f\x25]+)/', substr($this->pdfdata, $offset, 256), $matches) == 1) {
+                                       $objval = $matches[1]; // unescaped value
+                                       $offset += strlen($objval);
+                               }
+                               break;
+                       }
+                       case '(':   // \x28 LEFT PARENTHESIS
+                       case ')': { // \x29 RIGHT PARENTHESIS
+                               // literal string object
+                               $objtype = $char;
+                               ++$offset;
+                               $strpos = $offset;
+                               if ($char == '(') {
+                                       $open_bracket = 1;
+                                       while ($open_bracket > 0) {
+                                               if (!isset($this->pdfdata{$strpos})) {
+                                                       break;
+                                               }
+                                               $ch = $this->pdfdata{$strpos};
+                                               switch ($ch) {
+                                                       case '\\': { // REVERSE SOLIDUS (5Ch) (Backslash)
+                                                               // skip next character
+                                                               ++$strpos;
+                                                               break;
+                                                       }
+                                                       case '(': { // LEFT PARENHESIS (28h)
+                                                               ++$open_bracket;
+                                                               break;
+                                                       }
+                                                       case ')': { // RIGHT PARENTHESIS (29h)
+                                                               --$open_bracket;
+                                                               break;
+                                                       }
+                                               }
+                                               ++$strpos;
+                                       }
+                                       $objval = substr($this->pdfdata, $offset, ($strpos - $offset - 1));
+                                       $offset = $strpos;
+                               }
+                               break;
+                       }
+                       case '[':   // \x5B LEFT SQUARE BRACKET
+                       case ']': { // \x5D RIGHT SQUARE BRACKET
+                               // array object
+                               $objtype = $char;
+                               ++$offset;
+                               if ($char == '[') {
+                                       // get array content
+                                       $objval = array();
+                                       do {
+                                               // get element
+                                               $element = $this->getRawObject($offset);
+                                               $offset = $element[2];
+                                               $objval[] = $element;
+                                       } while ($element[0] != ']');
+                                       // remove closing delimiter
+                                       array_pop($objval);
+                               }
+                               break;
+                       }
+                       case '<':   // \x3C LESS-THAN SIGN
+                       case '>': { // \x3E GREATER-THAN SIGN
+                               if (isset($this->pdfdata{($offset + 1)}) AND ($this->pdfdata{($offset + 1)} == $char)) {
+                                       // dictionary object
+                                       $objtype = $char.$char;
+                                       $offset += 2;
+                                       if ($char == '<') {
+                                               // get array content
+                                               $objval = array();
+                                               do {
+                                                       // get element
+                                                       $element = $this->getRawObject($offset);
+                                                       $offset = $element[2];
+                                                       $objval[] = $element;
+                                               } while ($element[0] != '>>');
+                                               // remove closing delimiter
+                                               array_pop($objval);
+                                       }
+                               } else {
+                                       // hexadecimal string object
+                                       $objtype = $char;
+                                       ++$offset;
+                                       if (($char == '<') AND (preg_match('/^([0-9A-Fa-f\x09\x0a\x0c\x0d\x20]+)>/iU', substr($this->pdfdata, $offset), $matches) == 1)) {
+                                               // remove white space characters
+                                               $objval = strtr($matches[1], "\x09\x0a\x0c\x0d\x20", '');
+                                               $offset += strlen($matches[0]);
+                                       } elseif (($endpos = strpos($this->pdfdata, '>', $offset)) !== FALSE) {
+                                               $offset = $endpos + 1;
+                    }
+                               }
+                               break;
+                       }
+                       default: {
+                               if (substr($this->pdfdata, $offset, 6) == 'endobj') {
+                                       // indirect object
+                                       $objtype = 'endobj';
+                                       $offset += 6;
+                               } elseif (substr($this->pdfdata, $offset, 4) == 'null') {
+                                       // null object
+                                       $objtype = 'null';
+                                       $offset += 4;
+                                       $objval = 'null';
+                               } elseif (substr($this->pdfdata, $offset, 4) == 'true') {
+                                       // boolean true object
+                                       $objtype = 'boolean';
+                                       $offset += 4;
+                                       $objval = 'true';
+                               } elseif (substr($this->pdfdata, $offset, 5) == 'false') {
+                                       // boolean false object
+                                       $objtype = 'boolean';
+                                       $offset += 5;
+                                       $objval = 'false';
+                               } elseif (substr($this->pdfdata, $offset, 6) == 'stream') {
+                                       // start stream object
+                                       $objtype = 'stream';
+                                       $offset += 6;
+                                       if (preg_match('/^([\r]?[\n])/isU', substr($this->pdfdata, $offset), $matches) == 1) {
+                                               $offset += strlen($matches[0]);
+                                               if (preg_match('/(endstream)[\x09\x0a\x0c\x0d\x20]/isU', substr($this->pdfdata, $offset), $matches, PREG_OFFSET_CAPTURE) == 1) {
+                                                       $objval = substr($this->pdfdata, $offset, $matches[0][1]);
+                                                       $offset += $matches[1][1];
+                                               }
+                                       }
+                               } elseif (substr($this->pdfdata, $offset, 9) == 'endstream') {
+                                       // end stream object
+                                       $objtype = 'endstream';
+                                       $offset += 9;
+                               } elseif (preg_match('/^([0-9]+)[\s]+([0-9]+)[\s]+R/iU', substr($this->pdfdata, $offset, 33), $matches) == 1) {
+                                       // indirect object reference
+                                       $objtype = 'objref';
+                                       $offset += strlen($matches[0]);
+                                       $objval = intval($matches[1]).'_'.intval($matches[2]);
+                               } elseif (preg_match('/^([0-9]+)[\s]+([0-9]+)[\s]+obj/iU', substr($this->pdfdata, $offset, 33), $matches) == 1) {
+                                       // object start
+                                       $objtype = 'obj';
+                                       $objval = intval($matches[1]).'_'.intval($matches[2]);
+                                       $offset += strlen ($matches[0]);
+                               } elseif (($numlen = strspn($this->pdfdata, '+-.0123456789', $offset)) > 0) {
+                                       // numeric object
+                                       $objtype = 'numeric';
+                                       $objval = substr($this->pdfdata, $offset, $numlen);
+                                       $offset += $numlen;
+                               }
+                               break;
+                       }
+               }
+               return array($objtype, $objval, $offset);
+       }
+
+       /**
+        * Get content of indirect object.
+        * @param $obj_ref (string) Object number and generation number separated by underscore character.
+        * @param $offset (int) Object offset.
+        * @param $decoding (boolean) If true decode streams.
+        * @return array containing object data.
+        * @protected
+        * @since 1.0.000 (2011-05-24)
+        */
+       protected function getIndirectObject($obj_ref, $offset=0, $decoding=true) {
+               $obj = explode('_', $obj_ref);
+               if (($obj === false) OR (count($obj) != 2)) {
+                       $this->Error('Invalid object reference: '.$obj);
+                       return;
+               }
+               $objref = $obj[0].' '.$obj[1].' obj';
+               // ignore leading zeros
+               $offset += strspn($this->pdfdata, '0', $offset);
+               if (strpos($this->pdfdata, $objref, $offset) != $offset) {
+                       // an indirect reference to an undefined object shall be considered a reference to the null object
+                       return array('null', 'null', $offset);
+               }
+               // starting position of object content
+               $offset += strlen($objref);
+               // get array of object content
+               $objdata = array();
+               $i = 0; // object main index
+               do {
+                       // get element
+                       $element = $this->getRawObject($offset);
+                       $offset = $element[2];
+                       // decode stream using stream's dictionary information
+                       if ($decoding AND ($element[0] == 'stream') AND (isset($objdata[($i - 1)][0])) AND ($objdata[($i - 1)][0] == '<<')) {
+                               $element[3] = $this->decodeStream($objdata[($i - 1)][1], $element[1]);
+                       }
+                       $objdata[$i] = $element;
+                       ++$i;
+               } while ($element[0] != 'endobj');
+               // remove closing delimiter
+               array_pop($objdata);
+               // return raw object content
+               return $objdata;
+       }
+
+       /**
+        * Get the content of object, resolving indect object reference if necessary.
+        * @param $obj (string) Object value.
+        * @return array containing object data.
+        * @protected
+        * @since 1.0.000 (2011-06-26)
+        */
+       protected function getObjectVal($obj) {
+               if ($obj[0] == 'objref') {
+                       // reference to indirect object
+                       if (isset($this->objects[$obj[1]])) {
+                               // this object has been already parsed
+                               return $this->objects[$obj[1]];
+                       } elseif (isset($this->xref[$obj[1]])) {
+                               // parse new object
+                               $this->objects[$obj[1]] = $this->getIndirectObject($obj[1], $this->xref[$obj[1]], false);
+                               return $this->objects[$obj[1]];
+                       }
+               }
+               return $obj;
+       }
+
+       /**
+        * Decode the specified stream.
+        * @param $sdic (array) Stream's dictionary array.
+        * @param $stream (string) Stream to decode.
+        * @return array containing decoded stream data and remaining filters.
+        * @protected
+        * @since 1.0.000 (2011-06-22)
+        */
+       protected function decodeStream($sdic, $stream) {
+               // get stream lenght and filters
+               $slength = strlen($stream);
+               if ($slength <= 0) {
+                       return array('', array());
+               }
+               $filters = array();
+               foreach ($sdic as $k => $v) {
+                       if ($v[0] == '/') {
+                               if (($v[1] == 'Length') AND (isset($sdic[($k + 1)])) AND ($sdic[($k + 1)][0] == 'numeric')) {
+                                       // get declared stream lenght
+                                       $declength = intval($sdic[($k + 1)][1]);
+                                       if ($declength < $slength) {
+                                               $stream = substr($stream, 0, $declength);
+                                               $slength = $declength;
+                                       }
+                               } elseif (($v[1] == 'Filter') AND (isset($sdic[($k + 1)]))) {
+                                       // resolve indirect object
+                                       $objval = $this->getObjectVal($sdic[($k + 1)]);
+                                       if ($objval[0] == '/') {
+                                               // single filter
+                                               $filters[] = $objval[1];
+                                       } elseif ($objval[0] == '[') {
+                                               // array of filters
+                                               foreach ($objval[1] as $flt) {
+                                                       if ($flt[0] == '/') {
+                                                               $filters[] = $flt[1];
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               // decode the stream
+               $remaining_filters = array();
+               foreach ($filters as $filter) {
+                       if (in_array($filter, TCPDF_FILTERS::getAvailableFilters())) {
+                               try {
+                                       $stream = TCPDF_FILTERS::decodeFilter($filter, $stream);
+                               } catch (Exception $e) {
+                                       $emsg = $e->getMessage();
+                                       if ((($emsg[0] == '~') AND !$this->cfg['ignore_missing_filter_decoders'])
+                                               OR (($emsg[0] != '~') AND !$this->cfg['ignore_filter_decoding_errors'])) {
+                                               $this->Error($e->getMessage());
+                                       }
+                               }
+                       } else {
+                               // add missing filter to array
+                               $remaining_filters[] = $filter;
+                       }
+               }
+               return array($stream, $remaining_filters);
+       }
+
+       /**
+        * Throw an exception or print an error message and die if the K_TCPDF_PARSER_THROW_EXCEPTION_ERROR constant is set to true.
+        * @param $msg (string) The error message
+        * @public
+        * @since 1.0.000 (2011-05-23)
+        */
+       public function Error($msg) {
+               if ($this->cfg['die_for_errors']) {
+                       die('<strong>TCPDF_PARSER ERROR: </strong>'.$msg);
+               } else {
+                       throw new Exception('TCPDF_PARSER ERROR: '.$msg);
+               }
+       }
+
+} // END OF TCPDF_PARSER CLASS
+
+//============================================================+
+// END OF FILE
+//============================================================+
diff --git a/inc/3rdparty/libraries/tcpdf/tools/.htaccess b/inc/3rdparty/libraries/tcpdf/tools/.htaccess
new file mode 100644 (file)
index 0000000..8d2f256
--- /dev/null
@@ -0,0 +1 @@
+deny from all
diff --git a/inc/3rdparty/libraries/tcpdf/tools/convert_fonts_examples.txt b/inc/3rdparty/libraries/tcpdf/tools/convert_fonts_examples.txt
new file mode 100644 (file)
index 0000000..d5f8a4e
--- /dev/null
@@ -0,0 +1,28 @@
+./tcpdf_addfont.php -b -t Type1 -f 4 -e symbol -i pdfasymbol.pfb
+./tcpdf_addfont.php -b -t Type1 -f 4 -i pdfazapfdingbats.pfb
+./tcpdf_addfont.php -b -t Type1 -f 32 -e cp1252 -i pdfatimes.pfb,pdfatimesb.pfb,pdfahelvetica.pfb,pdfahelveticab.pfb
+./tcpdf_addfont.php -b -t Type1 -f 33 -e cp1252 -i pdfacourier.pfb,pdfacourierb.pfb
+./tcpdf_addfont.php -b -t Type1 -f 96 -e cp1252 -i pdfahelveticabi.pfb,pdfahelveticai.pfb,pdfatimesi.pfb,pdfatimesbi.pfb
+./tcpdf_addfont.php -b -t Type1 -f 97 -e cp1252 -i pdfacourieri.pfb,pdfacourierbi.pfb
+
+
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 32 -i DejaVuSans.ttf,DejaVuSans-Bold.ttf,DejaVuSansCondensed.ttf,DejaVuSansCondensed-Bold.ttf,DejaVuSans-ExtraLight.ttf,DejaVuSerif.ttf,DejaVuSerif-Bold.ttf,DejaVuSerifCondensed.ttf,DejaVuSerifCondensed-Bold.ttf
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 33 -i DejaVuSansMono.ttf,DejaVuSansMono-Bold.ttf
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 96 -i DejaVuSans-BoldOblique.ttf,DejaVuSansCondensed-BoldOblique.ttf,DejaVuSansCondensed-Oblique.ttf,DejaVuSerifCondensed-BoldItalic.ttf,DejaVuSerifCondensed-Italic.ttf,DejaVuSerif-Italic.ttf,DejaVuSerif-BoldItalic.ttf,DejaVuSans-Oblique.ttf
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 97 -i DejaVuSansMono-BoldOblique.ttf,DejaVuSansMono-Oblique.ttf
+
+
+
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 32 -i FreeSans.ttf,FreeSansBold.ttf,FreeSerif.ttf,FreeSerifBold.ttf
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 33 -i FreeMono.ttf,FreeMonoBold.ttf
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 96 -i FreeSansBoldOblique.ttf,FreeSansOblique.ttf,FreeSerifBoldItalic.ttf,FreeSerifItalic.ttf
+./tcpdf_addfont.php -b -t TrueTypeUnicode -f 97 -i FreeMonoBoldOblique.ttf,FreeMonoOblique.ttf
+
+
+./tcpdf_addfont.php -b -t TrueTypeUnicode -i aeAlArabiya.ttf,aeFurat.ttf
+
+
+./tcpdf_addfont.php -b -t CID0JP -f 32 -i cid0jp.ttf
+./tcpdf_addfont.php -b -t CID0KR -f 32 -i cid0kr.ttf
+./tcpdf_addfont.php -b -t CID0CS -f 32 -i cid0cs.ttf
+./tcpdf_addfont.php -b -t CID0CT -f 32 -i cid0ct.ttf
diff --git a/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php b/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php
new file mode 100755 (executable)
index 0000000..c0b258e
--- /dev/null
@@ -0,0 +1,269 @@
+#!/usr/bin/php -q
+<?php
+//============================================================+
+// File name   : tcpdf_addfont.php
+// Version     : 1.0.002
+// Begin       : 2013-05-13
+// Last Update : 2013-08-05
+// Authors     : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com
+//               Remi Collet
+// License     : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
+// -------------------------------------------------------------------
+// Copyright (C) 2011-2013 Nicola Asuni - Tecnick.com LTD
+//
+// This file is part of TCPDF software library.
+//
+// TCPDF is free software: you can redistribute it and/or modify it
+// under the terms of the GNU Lesser General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// TCPDF is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the License
+// along with TCPDF. If not, see
+// <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
+//
+// See LICENSE.TXT file for more information.
+// -------------------------------------------------------------------
+//
+// Description : This is a command line script to generate TCPDF fonts.
+//
+//============================================================+
+
+/**
+ * @file
+ * This is a command line script to generate TCPDF fonts.<br>
+ * @package com.tecnick.tcpdf
+ * @version 1.0.000
+ */
+
+if (php_sapi_name() != 'cli') {
+  echo 'You need to run this command from console.';
+  exit(1);
+}
+
+$tcpdf_include_dirs = array(realpath(dirname(__FILE__).'/../tcpdf.php'), '/usr/share/php/tcpdf/tcpdf.php', '/usr/share/tcpdf/tcpdf.php', '/usr/share/php-tcpdf/tcpdf.php', '/var/www/tcpdf/tcpdf.php', '/var/www/html/tcpdf/tcpdf.php', '/usr/local/apache2/htdocs/tcpdf/tcpdf.php');
+foreach ($tcpdf_include_dirs as $tcpdf_include_path) {
+       if (@file_exists($tcpdf_include_path)) {
+               require_once($tcpdf_include_path);
+               break;
+       }
+}
+
+/**
+ * Display help guide for this command.
+ */
+function showHelp() {
+       $help = <<<EOD
+tcpdf_addfont - command line tool to convert fonts for the TCPDF library.
+
+Usage: tcpdf_addfont.php [ options ] -i fontfile[,fontfile]...
+
+Options:
+
+       -t
+       --type      Font type. Leave empty for autodetect mode.
+                   Valid values are:
+                                       TrueTypeUnicode
+                                       TrueType
+                                       Type1
+                                       CID0JP = CID-0 Japanese
+                                       CID0KR = CID-0 Korean
+                                       CID0CS = CID-0 Chinese Simplified
+                                       CID0CT = CID-0 Chinese Traditional
+
+       -e
+       --enc       Name of the encoding table to use. Leave empty for
+                   default mode. Omit this parameter for TrueType Unicode
+                   and symbolic fonts like Symbol or ZapfDingBats.
+
+       -f
+       --flags     Unsigned 32-bit integer containing flags specifying
+                   various characteristics of the font (PDF32000:2008 -
+                   9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for
+                   symbol or +32 for non-symbol; +64 for italic. Fixed and
+                   Italic mode are generally autodetected so you have to
+                   set it to 32 = non-symbolic font (default) or 4 =
+                   symbolic font.
+
+       -o
+       --outpath   Output path for generated font files (must be writeable
+                   by the web server). Leave empty for default font folder.
+
+       -p
+       --platid    Platform ID for CMAP table to extract (when building a
+                   Unicode font for Windows this value should be 3, for
+                   Macintosh should be 1).
+
+       -n
+       --encid     Encoding ID for CMAP table to extract (when building a
+                   Unicode font for Windows this value should be 1, for
+                   Macintosh should be 0). When Platform ID is 3, legal
+                   values for Encoding ID are: 0=Symbol, 1=Unicode,
+                   2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab,
+                   7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4.
+
+       -b
+       --addcbbox  Includes the character bounding box information on the
+                   php font file.
+
+       -l
+       --link      Link to system font instead of copying the font data #
+                   (not transportable) - Note: do not work with Type1 fonts.
+
+       -i
+       --fonts     Comma-separated list of input font files.
+
+       -h
+       --help      Display this help and exit.
+EOD;
+       echo $help."\n\n";
+       exit(0);
+}
+
+// remove the name of the executing script
+array_shift($argv);
+
+// no options chosen
+if (!is_array($argv)) {
+  showHelp();
+}
+
+// initialize the array of options
+$options = array('type'=>'', 'enc'=>'', 'flags'=>32, 'outpath'=>K_PATH_FONTS, 'platid'=>3, 'encid'=>1, 'addcbbox'=>false, 'link'=>false);
+
+// short input options
+$sopt = '';
+$sopt .= 't:';
+$sopt .= 'e:';
+$sopt .= 'f:';
+$sopt .= 'o:';
+$sopt .= 'p:';
+$sopt .= 'n:';
+$sopt .= 'b';
+$sopt .= 'l';
+$sopt .= 'i:';
+$sopt .= 'h';
+
+// long input options
+$lopt = array();
+$lopt[] = 'type:';
+$lopt[] = 'enc:';
+$lopt[] = 'flags:';
+$lopt[] = 'outpath:';
+$lopt[] = 'platid:';
+$lopt[] = 'encid:';
+$lopt[] = 'addcbbox';
+$lopt[] = 'link';
+$lopt[] = 'fonts:';
+$lopt[] = 'help';
+
+// parse input options
+$inopt = getopt($sopt, $lopt);
+
+// import options (with some sanitization)
+foreach ($inopt as $opt => $val) {
+       switch ($opt) {
+               case 't':
+               case 'type': {
+                       if (in_array($val, array('TrueTypeUnicode', 'TrueType', 'Type1', 'CID0JP', 'CID0KR', 'CID0CS', 'CID0CT'))) {
+                               $options['type'] = $val;
+                       }
+                       break;
+               }
+               case 'e':
+               case 'enc': {
+                       $options['enc'] = $val;
+                       break;
+               }
+               case 'f':
+               case 'flags': {
+                       $options['flags'] = intval($val);
+                       break;
+               }
+               case 'o':
+               case 'outpath': {
+                       $options['outpath'] = realpath($val);
+                       if (substr($options['outpath'], -1) != '/') {
+                               $options['outpath'] .= '/';
+                       }
+                       break;
+               }
+               case 'p':
+               case 'platid': {
+                       $options['platid'] = min(max(1, intval($val)), 3);
+                       break;
+               }
+               case 'n':
+               case 'encid': {
+                       $options['encid'] = min(max(0, intval($val)), 10);
+                       break;
+               }
+               case 'b':
+               case 'addcbbox': {
+                       $options['addcbbox'] = true;
+                       break;
+               }
+               case 'l':
+               case 'link': {
+                       $options['link'] = true;
+                       break;
+               }
+               case 'i':
+               case 'fonts': {
+                       $options['fonts'] = explode(',', $val);
+                       break;
+               }
+               case 'h':
+               case 'help':
+               default: {
+                       showHelp();
+                       break;
+               }
+       } // end of switch
+} // end of while loop
+
+if (empty($options['fonts'])) {
+       echo "ERROR: missing input fonts (try --help for usage)\n\n";
+       exit(2);
+}
+
+// check the output path
+if (!is_dir($options['outpath']) OR !is_writable($options['outpath'])) {
+       echo "ERROR: Can't write to ".$options['outpath']."\n\n";
+       exit(3);
+}
+
+echo "\n>>> Converting fonts for TCPDF:\n";
+
+echo '*** Output dir set to '.$options['outpath']."\n";
+
+// check if there are conversion errors
+$errors = false;
+
+foreach ($options['fonts'] as $font) {
+       $fontfile = realpath($font);
+       $fontname = TCPDF_FONTS::addTTFfont($fontfile, $options['type'], $options['enc'], $options['flags'], $options['outpath'], $options['platid'], $options['encid'], $options['addcbbox'], $options['link']);
+       if ($fontname === false) {
+               $errors = true;
+               echo "--- ERROR: can't add ".$font."\n";
+       } else {
+               echo "+++ OK   : ".$fontfile.' added as '.$fontname."\n";
+       }
+}
+
+if ($errors) {
+       echo "--- Process completed with ERRORS!\n\n";
+       exit(4);
+}
+
+echo ">>> Process successfully completed!\n\n";
+exit(0);
+
+//============================================================+
+// END OF FILE
+//============================================================+
index 80aa7e43c4a40db95dbfab8d22007c4107edf0cb..d77fe0d81c7cad105023ad57e4280044dafb26c3 100644 (file)
@@ -262,53 +262,45 @@ class WallabagPDF extends WallabagEbooks
 {
        public function producePDF()
        {
-               $mpdf = new mPDF('c'); 
 
         Tools::logm('Starting to produce PDF file');
 
-        Tools::logm('Filling metadata for PDF...');
-
-        # headers
-        $mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|Produced with wallabag');
-        $mpdf->SetFooter('{PAGENO}');
+        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 
-        # intro
-        $html = '<h1>' . $this->bookTitle . '<bookmark content="Cover" /></h1><div style="text-align:center;" >
-        <p>' . _('Produced by wallabag with mPDF') . '</p>
+        Tools::logm('Filling metadata for PDF...');
+        $pdf->SetCreator(PDF_CREATOR);
+        $pdf->SetAuthor('');
+        $pdf->SetTitle($this->bookTitle);
+        $pdf->SetSubject('TCPDF Tutorial');
+        $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
+               
+        Tools::logm('Adding introduction...');
+        $pdf->AddPage();
+        $intro = '<h1>' . $this->bookTitle . '</h1><div style="text-align:center;" >
+        <p>' . _('Produced by wallabag with tcpdf') . '</p>
         <p>'. _('Please open <a href="https://github.com/wallabag/wallabag/issues" >an issue</a> if you have trouble with the display of this E-Book on your device.') . '</p>
         <img src="themes/baggy/img/apple-touch-icon-152.png" /></div>';
-        $html .= '<pagebreak type="next-odd" />';
-        $i = 1;
 
+
+        $pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true);
+
+        $i = 1;
         Tools::logm('Adding actual content...');
         foreach ($this->entries as $item) {
-            $html .= '<h1>' . $item['title'] . '<bookmark content="' . $item['title'] . '" /></h1>';
-            $html .= '<indexentry content="'. $item['title'] .'" />';
+            $pdf->AddPage();
+            $html = '<h1>' . $item['title'] . '</h1>';
             $html .= $item['content'];
-            $html .= '<pagebreak type="next-odd" />';
+            $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
             $i = $i+1;
         }
-               
-        $mpdf->WriteHTML($html);
 
-        # remove characters that make mpdf bug
-        $char_in = array('/', '.', ',', ':', '|');
-        $pdfExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.pdf')); # maybe someone can make a proper regex of this ?
+        // set image scale factor
+        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
 
-        # index
-        $html = '<h2>Index<bookmark content="Index" /></h2>
-        <indexinsert cols="2" offset="5" usedivletters="on" div-font-size="15" gap="5" font="Trebuchet" div-font="sans-serif" links="on" />
-        ';
+        
+        
 
-        $mpdf->WriteHTML($html);
-               
-        $mpdf->Output('cache/' . $pdfExportName);
-               
-        header('Content-Disposition: attachment; filename="' . $pdfExportName . '"');
+        $pdf->Output($this->bookFileName, 'I');
 
-        header('Content-Transfer-Encoding: base64');
-        header('Content-Type: application/pdf');
-        echo file_get_contents('cache/' . $pdfExportName);
-        Tools::logm('PDF file produced');
        }
 }
\ No newline at end of file
index 182f721dec12eef2c0baddea1c88772142d12053..728528f81237d2fbe8bf643afeb6f5815d779075 100755 (executable)
@@ -45,7 +45,8 @@ require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPubChapterSplitter.php';
 require_once INCLUDES . '/3rdparty/libraries/MOBIClass/MOBI.php';
 
 # pdf library
-require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php';
+#require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php';
+require_once  INCLUDES . '/3rdparty/libraries/tcpdf/tcpdf.php';
 
 # system configuration; database credentials et caetera
 require_once INCLUDES . '/poche/config.inc.php';